window.PR_SHOULD_USE_CONTINUATION = true;

(function () {
  var h = ["break,continue,do,else,for,if,return,while"];
  var u = [h, "auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];
  var p = [u, "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];
  var l = [p, "alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];
  var x = [p, "abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];
  var R = [x, "as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];
  var r = "all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";
  var w = [p, "debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];
  var s = "caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";
  var I = [h, "and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];
  var f = [h, "alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];
  var H = [h, "case,done,elif,esac,eval,fi,function,in,local,set,then,until"];
  var A = [l, R, w, s + I, f, H];
  var e = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;
  var C = "str";
  var z = "kwd";
  var j = "com";
  var O = "typ";
  var G = "lit";
  var L = "pun";
  var F = "pln";
  var m = "tag";
  var E = "dec";
  var J = "src";
  var P = "atn";
  var n = "atv";
  var N = "nocode";
  var M = "(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";

  function k(Z) {
    var ad = 0;
    var S = false;
    var ac = false;

    for (var V = 0, U = Z.length; V < U; ++V) {
      var ae = Z[V];

      if (ae.ignoreCase) {
        ac = true;
      } else {
        if (/[a-z]/i.test(ae.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ""))) {
          S = true;
          ac = false;
          break;
        }
      }
    }

    var Y = {
      b: 8,
      t: 9,
      n: 10,
      v: 11,
      f: 12,
      r: 13
    };

    function ab(ah) {
      var ag = ah.charCodeAt(0);

      if (ag !== 92) {
        return ag;
      }

      var af = ah.charAt(1);
      ag = Y[af];

      if (ag) {
        return ag;
      } else {
        if ("0" <= af && af <= "7") {
          return parseInt(ah.substring(1), 8);
        } else {
          if (af === "u" || af === "x") {
            return parseInt(ah.substring(2), 16);
          } else {
            return ah.charCodeAt(1);
          }
        }
      }
    }

    function T(af) {
      if (af < 32) {
        return (af < 16 ? "\\x0" : "\\x") + af.toString(16);
      }

      var ag = String.fromCharCode(af);

      if (ag === "\\" || ag === "-" || ag === "[" || ag === "]") {
        ag = "\\" + ag;
      }

      return ag;
    }

    function X(am) {
      var aq = am.substring(1, am.length - 1).match(new RegExp("\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]", "g"));
      var ak = [];
      var af = [];
      var ao = aq[0] === "^";

      for (var ar = ao ? 1 : 0, aj = aq.length; ar < aj; ++ar) {
        var ah = aq[ar];

        if (/\\[bdsw]/i.test(ah)) {
          ak.push(ah);
        } else {
          var ag = ab(ah);
          var al;

          if (ar + 2 < aj && "-" === aq[ar + 1]) {
            al = ab(aq[ar + 2]);
            ar += 2;
          } else {
            al = ag;
          }

          af.push([ag, al]);

          if (!(al < 65 || ag > 122)) {
            if (!(al < 65 || ag > 90)) {
              af.push([Math.max(65, ag) | 32, Math.min(al, 90) | 32]);
            }

            if (!(al < 97 || ag > 122)) {
              af.push([Math.max(97, ag) & ~32, Math.min(al, 122) & ~32]);
            }
          }
        }
      }

      af.sort(function (av, au) {
        return av[0] - au[0] || au[1] - av[1];
      });
      var ai = [];
      var ap = [NaN, NaN];

      for (var ar = 0; ar < af.length; ++ar) {
        var at = af[ar];

        if (at[0] <= ap[1] + 1) {
          ap[1] = Math.max(ap[1], at[1]);
        } else {
          ai.push(ap = at);
        }
      }

      var an = ["["];

      if (ao) {
        an.push("^");
      }

      an.push.apply(an, ak);

      for (var ar = 0; ar < ai.length; ++ar) {
        var at = ai[ar];
        an.push(T(at[0]));

        if (at[1] > at[0]) {
          if (at[1] + 1 > at[0]) {
            an.push("-");
          }

          an.push(T(at[1]));
        }
      }

      an.push("]");
      return an.join("");
    }

    function W(al) {
      var aj = al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)", "g"));
      var ah = aj.length;
      var an = [];

      for (var ak = 0, am = 0; ak < ah; ++ak) {
        var ag = aj[ak];

        if (ag === "(") {
          ++am;
        } else {
          if ("\\" === ag.charAt(0)) {
            var af = +ag.substring(1);

            if (af && af <= am) {
              an[af] = -1;
            }
          }
        }
      }

      for (var ak = 1; ak < an.length; ++ak) {
        if (-1 === an[ak]) {
          an[ak] = ++ad;
        }
      }

      for (var ak = 0, am = 0; ak < ah; ++ak) {
        var ag = aj[ak];

        if (ag === "(") {
          ++am;

          if (an[am] === undefined) {
            aj[ak] = "(?:";
          }
        } else {
          if ("\\" === ag.charAt(0)) {
            var af = +ag.substring(1);

            if (af && af <= am) {
              aj[ak] = "\\" + an[am];
            }
          }
        }
      }

      for (var ak = 0, am = 0; ak < ah; ++ak) {
        if ("^" === aj[ak] && "^" !== aj[ak + 1]) {
          aj[ak] = "";
        }
      }

      if (al.ignoreCase && S) {
        for (var ak = 0; ak < ah; ++ak) {
          var ag = aj[ak];
          var ai = ag.charAt(0);

          if (ag.length >= 2 && ai === "[") {
            aj[ak] = X(ag);
          } else {
            if (ai !== "\\") {
              aj[ak] = ag.replace(/[a-zA-Z]/g, function (ao) {
                var ap = ao.charCodeAt(0);
                return "[" + String.fromCharCode(ap & ~32, ap | 32) + "]";
              });
            }
          }
        }
      }

      return aj.join("");
    }

    var aa = [];

    for (var V = 0, U = Z.length; V < U; ++V) {
      var ae = Z[V];

      if (ae.global || ae.multiline) {
        throw new Error("" + ae);
      }

      aa.push("(?:" + W(ae) + ")");
    }

    return new RegExp(aa.join("|"), ac ? "gi" : "g");
  }

  function a(V) {
    var U = /(?:^|\s)nocode(?:\s|$)/;
    var X = [];
    var T = 0;
    var Z = [];
    var W = 0;
    var S;

    if (V.currentStyle) {
      S = V.currentStyle.whiteSpace;
    } else {
      if (window.getComputedStyle) {
        S = document.defaultView.getComputedStyle(V, null).getPropertyValue("white-space");
      }
    }

    var Y = S && "pre" === S.substring(0, 3);

    function aa(ab) {
      switch (ab.nodeType) {
        case 1:
          if (U.test(ab.className)) {
            return;
          }

          for (var ae = ab.firstChild; ae; ae = ae.nextSibling) {
            aa(ae);
          }

          var ad = ab.nodeName;

          if ("BR" === ad || "LI" === ad) {
            X[W] = "\n";
            Z[W << 1] = T++;
            Z[W++ << 1 | 1] = ab;
          }

          break;

        case 3:
        case 4:
          var ac = ab.nodeValue;

          if (ac.length) {
            if (!Y) {
              ac = ac.replace(/[ \t\r\n]+/g, " ");
            } else {
              ac = ac.replace(/\r\n?/g, "\n");
            }

            X[W] = ac;
            Z[W << 1] = T;
            T += ac.length;
            Z[W++ << 1 | 1] = ab;
          }

          break;
      }
    }

    aa(V);
    return {
      sourceCode: X.join("").replace(/\n$/, ""),
      spans: Z
    };
  }

  function B(S, U, W, T) {
    if (!U) {
      return;
    }

    var V = {
      sourceCode: U,
      basePos: S
    };
    W(V);
    T.push.apply(T, V.decorations);
  }

  var v = /\S/;

  function o(S) {
    var V = undefined;

    for (var U = S.firstChild; U; U = U.nextSibling) {
      var T = U.nodeType;
      V = T === 1 ? V ? S : U : T === 3 ? v.test(U.nodeValue) ? S : V : V;
    }

    return V === S ? undefined : V;
  }

  function g(U, T) {
    var S = {};
    var V;

    (function () {
      var ad = U.concat(T);
      var ah = [];
      var ag = {};

      for (var ab = 0, Z = ad.length; ab < Z; ++ab) {
        var Y = ad[ab];
        var ac = Y[3];

        if (ac) {
          for (var ae = ac.length; --ae >= 0;) {
            S[ac.charAt(ae)] = Y;
          }
        }

        var af = Y[1];
        var aa = "" + af;

        if (!ag.hasOwnProperty(aa)) {
          ah.push(af);
          ag[aa] = null;
        }
      }

      ah.push(/[\0-\uffff]/);
      V = k(ah);
    })();

    var X = T.length;

    var W = function W(ah) {
      var Z = ah.sourceCode,
          Y = ah.basePos;
      var ad = [Y, F];
      var af = 0;
      var an = Z.match(V) || [];
      var aj = {};

      for (var ae = 0, aq = an.length; ae < aq; ++ae) {
        var ag = an[ae];
        var ap = aj[ag];
        var ai = void 0;
        var am;

        if (typeof ap === "string") {
          am = false;
        } else {
          var aa = S[ag.charAt(0)];

          if (aa) {
            ai = ag.match(aa[1]);
            ap = aa[0];
          } else {
            for (var ao = 0; ao < X; ++ao) {
              aa = T[ao];
              ai = ag.match(aa[1]);

              if (ai) {
                ap = aa[0];
                break;
              }
            }

            if (!ai) {
              ap = F;
            }
          }

          am = ap.length >= 5 && "lang-" === ap.substring(0, 5);

          if (am && !(ai && typeof ai[1] === "string")) {
            am = false;
            ap = J;
          }

          if (!am) {
            aj[ag] = ap;
          }
        }

        var ab = af;
        af += ag.length;

        if (!am) {
          ad.push(Y + ab, ap);
        } else {
          var al = ai[1];
          var ak = ag.indexOf(al);
          var ac = ak + al.length;

          if (ai[2]) {
            ac = ag.length - ai[2].length;
            ak = ac - al.length;
          }

          var ar = ap.substring(5);
          B(Y + ab, ag.substring(0, ak), W, ad);
          B(Y + ab + ak, al, q(ar, al), ad);
          B(Y + ab + ac, ag.substring(ac), W, ad);
        }
      }

      ah.decorations = ad;
    };

    return W;
  }

  function i(T) {
    var W = [],
        S = [];

    if (T.tripleQuotedStrings) {
      W.push([C, /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/, null, "'\""]);
    } else {
      if (T.multiLineStrings) {
        W.push([C, /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/, null, "'\"`"]);
      } else {
        W.push([C, /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/, null, "\"'"]);
      }
    }

    if (T.verbatimStrings) {
      S.push([C, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
    }

    var Y = T.hashComments;

    if (Y) {
      if (T.cStyleComments) {
        if (Y > 1) {
          W.push([j, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, "#"]);
        } else {
          W.push([j, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/, null, "#"]);
        }

        S.push([C, /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/, null]);
      } else {
        W.push([j, /^#[^\r\n]*/, null, "#"]);
      }
    }

    if (T.cStyleComments) {
      S.push([j, /^\/\/[^\r\n]*/, null]);
      S.push([j, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
    }

    if (T.regexLiterals) {
      var X = "/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/";
      S.push(["lang-regex", new RegExp("^" + M + "(" + X + ")")]);
    }

    var V = T.types;

    if (V) {
      S.push([O, V]);
    }

    var U = ("" + T.keywords).replace(/^ | $/g, "");

    if (U.length) {
      S.push([z, new RegExp("^(?:" + U.replace(/[\s,]+/g, "|") + ")\\b"), null]);
    }

    W.push([F, /^\s+/, null, " \r\n\t\xA0"]);
    S.push([G, /^@[a-z_$][a-z_$@0-9]*/i, null], [O, /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null], [F, /^[a-z_$][a-z_$@0-9]*/i, null], [G, new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*", "i"), null, "0123456789"], [F, /^\\[\s\S]?/, null], [L, /^.[^\s\w\.$@\'\"\`\/\#\\]*/, null]);
    return g(W, S);
  }

  var K = i({
    keywords: A,
    hashComments: true,
    cStyleComments: true,
    multiLineStrings: true,
    regexLiterals: true
  });

  function Q(V, ag) {
    var U = /(?:^|\s)nocode(?:\s|$)/;
    var ab = /\r\n?|\n/;
    var ac = V.ownerDocument;
    var S;

    if (V.currentStyle) {
      S = V.currentStyle.whiteSpace;
    } else {
      if (window.getComputedStyle) {
        S = ac.defaultView.getComputedStyle(V, null).getPropertyValue("white-space");
      }
    }

    var Z = S && "pre" === S.substring(0, 3);
    var af = ac.createElement("LI");

    while (V.firstChild) {
      af.appendChild(V.firstChild);
    }

    var W = [af];

    function ae(al) {
      switch (al.nodeType) {
        case 1:
          if (U.test(al.className)) {
            break;
          }

          if ("BR" === al.nodeName) {
            ad(al);

            if (al.parentNode) {
              al.parentNode.removeChild(al);
            }
          } else {
            for (var an = al.firstChild; an; an = an.nextSibling) {
              ae(an);
            }
          }

          break;

        case 3:
        case 4:
          if (Z) {
            var am = al.nodeValue;
            var aj = am.match(ab);

            if (aj) {
              var ai = am.substring(0, aj.index);
              al.nodeValue = ai;
              var ah = am.substring(aj.index + aj[0].length);

              if (ah) {
                var ak = al.parentNode;
                ak.insertBefore(ac.createTextNode(ah), al.nextSibling);
              }

              ad(al);

              if (!ai) {
                al.parentNode.removeChild(al);
              }
            }
          }

          break;
      }
    }

    function ad(ak) {
      while (!ak.nextSibling) {
        ak = ak.parentNode;

        if (!ak) {
          return;
        }
      }

      function ai(al, ar) {
        var aq = ar ? al.cloneNode(false) : al;
        var ao = al.parentNode;

        if (ao) {
          var ap = ai(ao, 1);
          var an = al.nextSibling;
          ap.appendChild(aq);

          for (var am = an; am; am = an) {
            an = am.nextSibling;
            ap.appendChild(am);
          }
        }

        return aq;
      }

      var ah = ai(ak.nextSibling, 0);

      for (var aj; (aj = ah.parentNode) && aj.nodeType === 1;) {
        ah = aj;
      }

      W.push(ah);
    }

    for (var Y = 0; Y < W.length; ++Y) {
      ae(W[Y]);
    }

    if (ag === (ag | 0)) {
      W[0].setAttribute("value", ag);
    }

    var aa = ac.createElement("OL");
    aa.className = "linenums";
    var X = Math.max(0, ag - 1 | 0) || 0;

    for (var Y = 0, T = W.length; Y < T; ++Y) {
      af = W[Y];
      af.className = "L" + (Y + X) % 10;

      if (!af.firstChild) {
        af.appendChild(ac.createTextNode("\xA0"));
      }

      aa.appendChild(af);
    }

    V.appendChild(aa);
  }

  function D(ac) {
    var aj = /\bMSIE\b/.test(navigator.userAgent);
    var am = /\n/g;
    var al = ac.sourceCode;
    var an = al.length;
    var V = 0;
    var aa = ac.spans;
    var T = aa.length;
    var ah = 0;
    var X = ac.decorations;
    var Y = X.length;
    var Z = 0;
    X[Y] = an;
    var ar, aq;

    for (aq = ar = 0; aq < Y;) {
      if (X[aq] !== X[aq + 2]) {
        X[ar++] = X[aq++];
        X[ar++] = X[aq++];
      } else {
        aq += 2;
      }
    }

    Y = ar;

    for (aq = ar = 0; aq < Y;) {
      var at = X[aq];
      var ab = X[aq + 1];
      var W = aq + 2;

      while (W + 2 <= Y && X[W + 1] === ab) {
        W += 2;
      }

      X[ar++] = at;
      X[ar++] = ab;
      aq = W;
    }

    Y = X.length = ar;
    var ae = null;

    while (ah < T) {
      var af = aa[ah];
      var S = aa[ah + 2] || an;
      var ag = X[Z];
      var ap = X[Z + 2] || an;
      var W = Math.min(S, ap);
      var ak = aa[ah + 1];
      var U;

      if (ak.nodeType !== 1 && (U = al.substring(V, W))) {
        if (aj) {
          U = U.replace(am, "\r");
        }

        ak.nodeValue = U;
        var ai = ak.ownerDocument;
        var ao = ai.createElement("SPAN");
        ao.className = X[Z + 1];
        var ad = ak.parentNode;
        ad.replaceChild(ao, ak);
        ao.appendChild(ak);

        if (V < S) {
          aa[ah + 1] = ak = ai.createTextNode(al.substring(W, S));
          ad.insertBefore(ak, ao.nextSibling);
        }
      }

      V = W;

      if (V >= S) {
        ah += 2;
      }

      if (V >= ap) {
        Z += 2;
      }
    }
  }

  var t = {};

  function c(U, V) {
    for (var S = V.length; --S >= 0;) {
      var T = V[S];

      if (!t.hasOwnProperty(T)) {
        t[T] = U;
      } else {
        if (window.console) {
          console.warn("cannot override language handler %s", T);
        }
      }
    }
  }

  function q(T, S) {
    if (!(T && t.hasOwnProperty(T))) {
      T = /^\s*</.test(S) ? "default-markup" : "default-code";
    }

    return t[T];
  }

  c(K, ["default-code"]);
  c(g([], [[F, /^[^<?]+/], [E, /^<!\w[^>]*(?:>|$)/], [j, /^<\!--[\s\S]*?(?:-\->|$)/], ["lang-", /^<\?([\s\S]+?)(?:\?>|$)/], ["lang-", /^<%([\s\S]+?)(?:%>|$)/], [L, /^(?:<[%?]|[%?]>)/], ["lang-", /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i], ["lang-js", /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i], ["lang-css", /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i], ["lang-in.tag", /^(<\/?[a-z][^<>]*>)/i]]), ["default-markup", "htm", "html", "mxml", "xhtml", "xml", "xsl"]);
  c(g([[F, /^[\s]+/, null, " \t\r\n"], [n, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, "\"'"]], [[m, /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i], [P, /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i], ["lang-uq.val", /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/], [L, /^[=<>\/]+/], ["lang-js", /^on\w+\s*=\s*\"([^\"]+)\"/i], ["lang-js", /^on\w+\s*=\s*\'([^\']+)\'/i], ["lang-js", /^on\w+\s*=\s*([^\"\'>\s]+)/i], ["lang-css", /^style\s*=\s*\"([^\"]+)\"/i], ["lang-css", /^style\s*=\s*\'([^\']+)\'/i], ["lang-css", /^style\s*=\s*([^\"\'>\s]+)/i]]), ["in.tag"]);
  c(g([], [[n, /^[\s\S]+/]]), ["uq.val"]);
  c(i({
    keywords: l,
    hashComments: true,
    cStyleComments: true,
    types: e
  }), ["c", "cc", "cpp", "cxx", "cyc", "m"]);
  c(i({
    keywords: "null,true,false"
  }), ["json"]);
  c(i({
    keywords: R,
    hashComments: true,
    cStyleComments: true,
    verbatimStrings: true,
    types: e
  }), ["cs"]);
  c(i({
    keywords: x,
    cStyleComments: true
  }), ["java"]);
  c(i({
    keywords: H,
    hashComments: true,
    multiLineStrings: true
  }), ["bsh", "csh", "sh"]);
  c(i({
    keywords: I,
    hashComments: true,
    multiLineStrings: true,
    tripleQuotedStrings: true
  }), ["cv", "py"]);
  c(i({
    keywords: s,
    hashComments: true,
    multiLineStrings: true,
    regexLiterals: true
  }), ["perl", "pl", "pm"]);
  c(i({
    keywords: f,
    hashComments: true,
    multiLineStrings: true,
    regexLiterals: true
  }), ["rb"]);
  c(i({
    keywords: w,
    cStyleComments: true,
    regexLiterals: true
  }), ["js"]);
  c(i({
    keywords: r,
    hashComments: 3,
    cStyleComments: true,
    multilineStrings: true,
    tripleQuotedStrings: true,
    regexLiterals: true
  }), ["coffee"]);
  c(g([], [[C, /^[\s\S]+/]]), ["regex"]);

  function d(V) {
    var U = V.langExtension;

    try {
      var S = a(V.sourceNode);
      var T = S.sourceCode;
      V.sourceCode = T;
      V.spans = S.spans;
      V.basePos = 0;
      q(U, T)(V);
      D(V);
    } catch (W) {
      if ("console" in window) {
        console.log(W && W.stack ? W.stack : W);
      }
    }
  }

  function y(W, V, U) {
    var S = document.createElement("PRE");
    S.innerHTML = W;

    if (U) {
      Q(S, U);
    }

    var T = {
      langExtension: V,
      numberLines: U,
      sourceNode: S
    };
    d(T);
    return S.innerHTML;
  }

  function b(ad) {
    function Y(af) {
      return document.getElementsByTagName(af);
    }

    var ac = [Y("pre"), Y("code"), Y("xmp")];
    var T = [];

    for (var aa = 0; aa < ac.length; ++aa) {
      for (var Z = 0, V = ac[aa].length; Z < V; ++Z) {
        T.push(ac[aa][Z]);
      }
    }

    ac = null;
    var W = Date;

    if (!W.now) {
      W = {
        now: function now() {
          return +new Date();
        }
      };
    }

    var X = 0;
    var S;
    var ab = /\blang(?:uage)?-([\w.]+)(?!\S)/;
    var ae = /\bprettyprint\b/;

    function U() {
      var ag = window.PR_SHOULD_USE_CONTINUATION ? W.now() + 250 : Infinity;

      for (; X < T.length && W.now() < ag; X++) {
        var aj = T[X];
        var ai = aj.className;

        if (ai.indexOf("prettyprint") >= 0) {
          var ah = ai.match(ab);
          var am;

          if (!ah && (am = o(aj)) && "CODE" === am.tagName) {
            ah = am.className.match(ab);
          }

          if (ah) {
            ah = ah[1];
          }

          var al = false;

          for (var ak = aj.parentNode; ak; ak = ak.parentNode) {
            if ((ak.tagName === "pre" || ak.tagName === "code" || ak.tagName === "xmp") && ak.className && ak.className.indexOf("prettyprint") >= 0) {
              al = true;
              break;
            }
          }

          if (!al) {
            var af = aj.className.match(/\blinenums\b(?::(\d+))?/);
            af = af ? af[1] && af[1].length ? +af[1] : true : false;

            if (af) {
              Q(aj, af);
            }

            S = {
              langExtension: ah,
              sourceNode: aj,
              numberLines: af
            };
            d(S);
          }
        }
      }

      if (X < T.length) {
        setTimeout(U, 250);
      } else {
        if (ad) {
          ad();
        }
      }
    }

    U();
  }

  window.prettyPrintOne = y;
  window.prettyPrint = b;
  window.PR = {
    createSimpleLexer: g,
    registerLangHandler: c,
    sourceDecorator: i,
    PR_ATTRIB_NAME: P,
    PR_ATTRIB_VALUE: n,
    PR_COMMENT: j,
    PR_DECLARATION: E,
    PR_KEYWORD: z,
    PR_LITERAL: G,
    PR_NOCODE: N,
    PR_PLAIN: F,
    PR_PUNCTUATION: L,
    PR_SOURCE: J,
    PR_STRING: C,
    PR_TAG: m,
    PR_TYPE: O
  };
})();

PR.registerLangHandler(PR.createSimpleLexer([], [[PR.PR_DECLARATION, /^<!\w[^>]*(?:>|$)/], [PR.PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/], [PR.PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/], ["lang-", /^<\?([\s\S]+?)(?:\?>|$)/], ["lang-", /^<%([\s\S]+?)(?:%>|$)/], ["lang-", /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i], ["lang-handlebars", /^<script\b[^>]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i], ["lang-js", /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i], ["lang-css", /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i], ["lang-in.tag", /^(<\/?[a-z][^<>]*>)/i], [PR.PR_DECLARATION, /^{{[#^>/]?\s*[\w.][^}]*}}/], [PR.PR_DECLARATION, /^{{&?\s*[\w.][^}]*}}/], [PR.PR_DECLARATION, /^{{{>?\s*[\w.][^}]*}}}/], [PR.PR_COMMENT, /^{{![^}]*}}/]]), ["handlebars", "hbs"]);
PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN, /^[ \t\r\n\f]+/, null, " \t\r\n\f"]], [[PR.PR_STRING, /^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/, null], [PR.PR_STRING, /^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/, null], ["lang-css-str", /^url\(([^\)\"\']*)\)/i], [PR.PR_KEYWORD, /^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i, null], ["lang-css-kw", /^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i], [PR.PR_COMMENT, /^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//], [PR.PR_COMMENT, /^(?:<!--|-->)/], [PR.PR_LITERAL, /^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i], [PR.PR_LITERAL, /^#(?:[0-9a-f]{3}){1,2}/i], [PR.PR_PLAIN, /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i], [PR.PR_PUNCTUATION, /^[^\s\w\'\"]+/]]), ["css"]);
PR.registerLangHandler(PR.createSimpleLexer([], [[PR.PR_KEYWORD, /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]), ["css-kw"]);
PR.registerLangHandler(PR.createSimpleLexer([], [[PR.PR_STRING, /^[^\)\"\']+/]]), ["css-str"]);