prettify.js 27 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007
  1. /* eslint-disable */
  2. window.PR_SHOULD_USE_CONTINUATION = true;
  3. (function () {
  4. var h = ["break,continue,do,else,for,if,return,while"];
  5. var u = [
  6. h,
  7. "auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile",
  8. ];
  9. var p = [
  10. u,
  11. "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof",
  12. ];
  13. var l = [
  14. p,
  15. "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",
  16. ];
  17. var x = [
  18. p,
  19. "abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient",
  20. ];
  21. var R = [
  22. x,
  23. "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",
  24. ];
  25. var r =
  26. "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";
  27. var w = [
  28. p,
  29. "debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN",
  30. ];
  31. var s =
  32. "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";
  33. var I = [
  34. h,
  35. "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",
  36. ];
  37. var f = [
  38. h,
  39. "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",
  40. ];
  41. var H = [h, "case,done,elif,esac,eval,fi,function,in,local,set,then,until"];
  42. var A = [l, R, w, s + I, f, H];
  43. var e = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;
  44. var C = "str";
  45. var z = "kwd";
  46. var j = "com";
  47. var O = "typ";
  48. var G = "lit";
  49. var L = "pun";
  50. var F = "pln";
  51. var m = "tag";
  52. var E = "dec";
  53. var J = "src";
  54. var P = "atn";
  55. var n = "atv";
  56. var N = "nocode";
  57. var M =
  58. "(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";
  59. function k(Z) {
  60. var ad = 0;
  61. var S = false;
  62. var ac = false;
  63. for (var V = 0, U = Z.length; V < U; ++V) {
  64. var ae = Z[V];
  65. if (ae.ignoreCase) {
  66. ac = true;
  67. } else {
  68. if (
  69. /[a-z]/i.test(
  70. ae.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, "")
  71. )
  72. ) {
  73. S = true;
  74. ac = false;
  75. break;
  76. }
  77. }
  78. }
  79. var Y = { b: 8, t: 9, n: 10, v: 11, f: 12, r: 13 };
  80. function ab(ah) {
  81. var ag = ah.charCodeAt(0);
  82. if (ag !== 92) {
  83. return ag;
  84. }
  85. var af = ah.charAt(1);
  86. ag = Y[af];
  87. if (ag) {
  88. return ag;
  89. } else {
  90. if ("0" <= af && af <= "7") {
  91. return parseInt(ah.substring(1), 8);
  92. } else {
  93. if (af === "u" || af === "x") {
  94. return parseInt(ah.substring(2), 16);
  95. } else {
  96. return ah.charCodeAt(1);
  97. }
  98. }
  99. }
  100. }
  101. function T(af) {
  102. if (af < 32) {
  103. return (af < 16 ? "\\x0" : "\\x") + af.toString(16);
  104. }
  105. var ag = String.fromCharCode(af);
  106. if (ag === "\\" || ag === "-" || ag === "[" || ag === "]") {
  107. ag = "\\" + ag;
  108. }
  109. return ag;
  110. }
  111. function X(am) {
  112. var aq = am
  113. .substring(1, am.length - 1)
  114. .match(
  115. new RegExp(
  116. "\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]",
  117. "g"
  118. )
  119. );
  120. var ak = [];
  121. var af = [];
  122. var ao = aq[0] === "^";
  123. for (var ar = ao ? 1 : 0, aj = aq.length; ar < aj; ++ar) {
  124. var ah = aq[ar];
  125. if (/\\[bdsw]/i.test(ah)) {
  126. ak.push(ah);
  127. } else {
  128. var ag = ab(ah);
  129. var al;
  130. if (ar + 2 < aj && "-" === aq[ar + 1]) {
  131. al = ab(aq[ar + 2]);
  132. ar += 2;
  133. } else {
  134. al = ag;
  135. }
  136. af.push([ag, al]);
  137. if (!(al < 65 || ag > 122)) {
  138. if (!(al < 65 || ag > 90)) {
  139. af.push([Math.max(65, ag) | 32, Math.min(al, 90) | 32]);
  140. }
  141. if (!(al < 97 || ag > 122)) {
  142. af.push([Math.max(97, ag) & ~32, Math.min(al, 122) & ~32]);
  143. }
  144. }
  145. }
  146. }
  147. af.sort(function (av, au) {
  148. return av[0] - au[0] || au[1] - av[1];
  149. });
  150. var ai = [];
  151. var ap = [NaN, NaN];
  152. for (var ar = 0; ar < af.length; ++ar) {
  153. var at = af[ar];
  154. if (at[0] <= ap[1] + 1) {
  155. ap[1] = Math.max(ap[1], at[1]);
  156. } else {
  157. ai.push((ap = at));
  158. }
  159. }
  160. var an = ["["];
  161. if (ao) {
  162. an.push("^");
  163. }
  164. an.push.apply(an, ak);
  165. for (var ar = 0; ar < ai.length; ++ar) {
  166. var at = ai[ar];
  167. an.push(T(at[0]));
  168. if (at[1] > at[0]) {
  169. if (at[1] + 1 > at[0]) {
  170. an.push("-");
  171. }
  172. an.push(T(at[1]));
  173. }
  174. }
  175. an.push("]");
  176. return an.join("");
  177. }
  178. function W(al) {
  179. var aj = al.source.match(
  180. new RegExp(
  181. "(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)",
  182. "g"
  183. )
  184. );
  185. var ah = aj.length;
  186. var an = [];
  187. for (var ak = 0, am = 0; ak < ah; ++ak) {
  188. var ag = aj[ak];
  189. if (ag === "(") {
  190. ++am;
  191. } else {
  192. if ("\\" === ag.charAt(0)) {
  193. var af = +ag.substring(1);
  194. if (af && af <= am) {
  195. an[af] = -1;
  196. }
  197. }
  198. }
  199. }
  200. for (var ak = 1; ak < an.length; ++ak) {
  201. if (-1 === an[ak]) {
  202. an[ak] = ++ad;
  203. }
  204. }
  205. for (var ak = 0, am = 0; ak < ah; ++ak) {
  206. var ag = aj[ak];
  207. if (ag === "(") {
  208. ++am;
  209. if (an[am] === undefined) {
  210. aj[ak] = "(?:";
  211. }
  212. } else {
  213. if ("\\" === ag.charAt(0)) {
  214. var af = +ag.substring(1);
  215. if (af && af <= am) {
  216. aj[ak] = "\\" + an[am];
  217. }
  218. }
  219. }
  220. }
  221. for (var ak = 0, am = 0; ak < ah; ++ak) {
  222. if ("^" === aj[ak] && "^" !== aj[ak + 1]) {
  223. aj[ak] = "";
  224. }
  225. }
  226. if (al.ignoreCase && S) {
  227. for (var ak = 0; ak < ah; ++ak) {
  228. var ag = aj[ak];
  229. var ai = ag.charAt(0);
  230. if (ag.length >= 2 && ai === "[") {
  231. aj[ak] = X(ag);
  232. } else {
  233. if (ai !== "\\") {
  234. aj[ak] = ag.replace(/[a-zA-Z]/g, function (ao) {
  235. var ap = ao.charCodeAt(0);
  236. return "[" + String.fromCharCode(ap & ~32, ap | 32) + "]";
  237. });
  238. }
  239. }
  240. }
  241. }
  242. return aj.join("");
  243. }
  244. var aa = [];
  245. for (var V = 0, U = Z.length; V < U; ++V) {
  246. var ae = Z[V];
  247. if (ae.global || ae.multiline) {
  248. throw new Error("" + ae);
  249. }
  250. aa.push("(?:" + W(ae) + ")");
  251. }
  252. return new RegExp(aa.join("|"), ac ? "gi" : "g");
  253. }
  254. function a(V) {
  255. var U = /(?:^|\s)nocode(?:\s|$)/;
  256. var X = [];
  257. var T = 0;
  258. var Z = [];
  259. var W = 0;
  260. var S;
  261. if (V.currentStyle) {
  262. S = V.currentStyle.whiteSpace;
  263. } else {
  264. if (window.getComputedStyle) {
  265. S = document.defaultView
  266. .getComputedStyle(V, null)
  267. .getPropertyValue("white-space");
  268. }
  269. }
  270. var Y = S && "pre" === S.substring(0, 3);
  271. function aa(ab) {
  272. switch (ab.nodeType) {
  273. case 1:
  274. if (U.test(ab.className)) {
  275. return;
  276. }
  277. for (var ae = ab.firstChild; ae; ae = ae.nextSibling) {
  278. aa(ae);
  279. }
  280. var ad = ab.nodeName;
  281. if ("BR" === ad || "LI" === ad) {
  282. X[W] = "\n";
  283. Z[W << 1] = T++;
  284. Z[(W++ << 1) | 1] = ab;
  285. }
  286. break;
  287. case 3:
  288. case 4:
  289. var ac = ab.nodeValue;
  290. if (ac.length) {
  291. if (!Y) {
  292. ac = ac.replace(/[ \t\r\n]+/g, " ");
  293. } else {
  294. ac = ac.replace(/\r\n?/g, "\n");
  295. }
  296. X[W] = ac;
  297. Z[W << 1] = T;
  298. T += ac.length;
  299. Z[(W++ << 1) | 1] = ab;
  300. }
  301. break;
  302. }
  303. }
  304. aa(V);
  305. return { sourceCode: X.join("").replace(/\n$/, ""), spans: Z };
  306. }
  307. function B(S, U, W, T) {
  308. if (!U) {
  309. return;
  310. }
  311. var V = { sourceCode: U, basePos: S };
  312. W(V);
  313. T.push.apply(T, V.decorations);
  314. }
  315. var v = /\S/;
  316. function o(S) {
  317. var V = undefined;
  318. for (var U = S.firstChild; U; U = U.nextSibling) {
  319. var T = U.nodeType;
  320. V = T === 1 ? (V ? S : U) : T === 3 ? (v.test(U.nodeValue) ? S : V) : V;
  321. }
  322. return V === S ? undefined : V;
  323. }
  324. function g(U, T) {
  325. var S = {};
  326. var V;
  327. (function () {
  328. var ad = U.concat(T);
  329. var ah = [];
  330. var ag = {};
  331. for (var ab = 0, Z = ad.length; ab < Z; ++ab) {
  332. var Y = ad[ab];
  333. var ac = Y[3];
  334. if (ac) {
  335. for (var ae = ac.length; --ae >= 0; ) {
  336. S[ac.charAt(ae)] = Y;
  337. }
  338. }
  339. var af = Y[1];
  340. var aa = "" + af;
  341. if (!ag.hasOwnProperty(aa)) {
  342. ah.push(af);
  343. ag[aa] = null;
  344. }
  345. }
  346. ah.push(/[\0-\uffff]/);
  347. V = k(ah);
  348. })();
  349. var X = T.length;
  350. var W = function (ah) {
  351. var Z = ah.sourceCode,
  352. Y = ah.basePos;
  353. var ad = [Y, F];
  354. var af = 0;
  355. var an = Z.match(V) || [];
  356. var aj = {};
  357. for (var ae = 0, aq = an.length; ae < aq; ++ae) {
  358. var ag = an[ae];
  359. var ap = aj[ag];
  360. var ai = void 0;
  361. var am;
  362. if (typeof ap === "string") {
  363. am = false;
  364. } else {
  365. var aa = S[ag.charAt(0)];
  366. if (aa) {
  367. ai = ag.match(aa[1]);
  368. ap = aa[0];
  369. } else {
  370. for (var ao = 0; ao < X; ++ao) {
  371. aa = T[ao];
  372. ai = ag.match(aa[1]);
  373. if (ai) {
  374. ap = aa[0];
  375. break;
  376. }
  377. }
  378. if (!ai) {
  379. ap = F;
  380. }
  381. }
  382. am = ap.length >= 5 && "lang-" === ap.substring(0, 5);
  383. if (am && !(ai && typeof ai[1] === "string")) {
  384. am = false;
  385. ap = J;
  386. }
  387. if (!am) {
  388. aj[ag] = ap;
  389. }
  390. }
  391. var ab = af;
  392. af += ag.length;
  393. if (!am) {
  394. ad.push(Y + ab, ap);
  395. } else {
  396. var al = ai[1];
  397. var ak = ag.indexOf(al);
  398. var ac = ak + al.length;
  399. if (ai[2]) {
  400. ac = ag.length - ai[2].length;
  401. ak = ac - al.length;
  402. }
  403. var ar = ap.substring(5);
  404. B(Y + ab, ag.substring(0, ak), W, ad);
  405. B(Y + ab + ak, al, q(ar, al), ad);
  406. B(Y + ab + ac, ag.substring(ac), W, ad);
  407. }
  408. }
  409. ah.decorations = ad;
  410. };
  411. return W;
  412. }
  413. function i(T) {
  414. var W = [],
  415. S = [];
  416. if (T.tripleQuotedStrings) {
  417. W.push([
  418. C,
  419. /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
  420. null,
  421. "'\"",
  422. ]);
  423. } else {
  424. if (T.multiLineStrings) {
  425. W.push([
  426. C,
  427. /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
  428. null,
  429. "'\"`",
  430. ]);
  431. } else {
  432. W.push([
  433. C,
  434. /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
  435. null,
  436. "\"'",
  437. ]);
  438. }
  439. }
  440. if (T.verbatimStrings) {
  441. S.push([C, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
  442. }
  443. var Y = T.hashComments;
  444. if (Y) {
  445. if (T.cStyleComments) {
  446. if (Y > 1) {
  447. W.push([j, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, "#"]);
  448. } else {
  449. W.push([
  450. j,
  451. /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
  452. null,
  453. "#",
  454. ]);
  455. }
  456. S.push([
  457. C,
  458. /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
  459. null,
  460. ]);
  461. } else {
  462. W.push([j, /^#[^\r\n]*/, null, "#"]);
  463. }
  464. }
  465. if (T.cStyleComments) {
  466. S.push([j, /^\/\/[^\r\n]*/, null]);
  467. S.push([j, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
  468. }
  469. if (T.regexLiterals) {
  470. var X =
  471. "/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/";
  472. S.push(["lang-regex", new RegExp("^" + M + "(" + X + ")")]);
  473. }
  474. var V = T.types;
  475. if (V) {
  476. S.push([O, V]);
  477. }
  478. var U = ("" + T.keywords).replace(/^ | $/g, "");
  479. if (U.length) {
  480. S.push([
  481. z,
  482. new RegExp("^(?:" + U.replace(/[\s,]+/g, "|") + ")\\b"),
  483. null,
  484. ]);
  485. }
  486. W.push([F, /^\s+/, null, " \r\n\t\xA0"]);
  487. S.push(
  488. [G, /^@[a-z_$][a-z_$@0-9]*/i, null],
  489. [O, /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null],
  490. [F, /^[a-z_$][a-z_$@0-9]*/i, null],
  491. [
  492. G,
  493. new RegExp(
  494. "^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*",
  495. "i"
  496. ),
  497. null,
  498. "0123456789",
  499. ],
  500. [F, /^\\[\s\S]?/, null],
  501. [L, /^.[^\s\w\.$@\'\"\`\/\#\\]*/, null]
  502. );
  503. return g(W, S);
  504. }
  505. var K = i({
  506. keywords: A,
  507. hashComments: true,
  508. cStyleComments: true,
  509. multiLineStrings: true,
  510. regexLiterals: true,
  511. });
  512. function Q(V, ag) {
  513. var U = /(?:^|\s)nocode(?:\s|$)/;
  514. var ab = /\r\n?|\n/;
  515. var ac = V.ownerDocument;
  516. var S;
  517. if (V.currentStyle) {
  518. S = V.currentStyle.whiteSpace;
  519. } else {
  520. if (window.getComputedStyle) {
  521. S = ac.defaultView
  522. .getComputedStyle(V, null)
  523. .getPropertyValue("white-space");
  524. }
  525. }
  526. var Z = S && "pre" === S.substring(0, 3);
  527. var af = ac.createElement("LI");
  528. while (V.firstChild) {
  529. af.appendChild(V.firstChild);
  530. }
  531. var W = [af];
  532. function ae(al) {
  533. switch (al.nodeType) {
  534. case 1:
  535. if (U.test(al.className)) {
  536. break;
  537. }
  538. if ("BR" === al.nodeName) {
  539. ad(al);
  540. if (al.parentNode) {
  541. al.parentNode.removeChild(al);
  542. }
  543. } else {
  544. for (var an = al.firstChild; an; an = an.nextSibling) {
  545. ae(an);
  546. }
  547. }
  548. break;
  549. case 3:
  550. case 4:
  551. if (Z) {
  552. var am = al.nodeValue;
  553. var aj = am.match(ab);
  554. if (aj) {
  555. var ai = am.substring(0, aj.index);
  556. al.nodeValue = ai;
  557. var ah = am.substring(aj.index + aj[0].length);
  558. if (ah) {
  559. var ak = al.parentNode;
  560. ak.insertBefore(ac.createTextNode(ah), al.nextSibling);
  561. }
  562. ad(al);
  563. if (!ai) {
  564. al.parentNode.removeChild(al);
  565. }
  566. }
  567. }
  568. break;
  569. }
  570. }
  571. function ad(ak) {
  572. while (!ak.nextSibling) {
  573. ak = ak.parentNode;
  574. if (!ak) {
  575. return;
  576. }
  577. }
  578. function ai(al, ar) {
  579. var aq = ar ? al.cloneNode(false) : al;
  580. var ao = al.parentNode;
  581. if (ao) {
  582. var ap = ai(ao, 1);
  583. var an = al.nextSibling;
  584. ap.appendChild(aq);
  585. for (var am = an; am; am = an) {
  586. an = am.nextSibling;
  587. ap.appendChild(am);
  588. }
  589. }
  590. return aq;
  591. }
  592. var ah = ai(ak.nextSibling, 0);
  593. for (var aj; (aj = ah.parentNode) && aj.nodeType === 1; ) {
  594. ah = aj;
  595. }
  596. W.push(ah);
  597. }
  598. for (var Y = 0; Y < W.length; ++Y) {
  599. ae(W[Y]);
  600. }
  601. if (ag === (ag | 0)) {
  602. W[0].setAttribute("value", ag);
  603. }
  604. var aa = ac.createElement("OL");
  605. aa.className = "linenums";
  606. var X = Math.max(0, (ag - 1) | 0) || 0;
  607. for (var Y = 0, T = W.length; Y < T; ++Y) {
  608. af = W[Y];
  609. af.className = "L" + ((Y + X) % 10);
  610. if (!af.firstChild) {
  611. af.appendChild(ac.createTextNode("\xA0"));
  612. }
  613. aa.appendChild(af);
  614. }
  615. V.appendChild(aa);
  616. }
  617. function D(ac) {
  618. var aj = /\bMSIE\b/.test(navigator.userAgent);
  619. var am = /\n/g;
  620. var al = ac.sourceCode;
  621. var an = al.length;
  622. var V = 0;
  623. var aa = ac.spans;
  624. var T = aa.length;
  625. var ah = 0;
  626. var X = ac.decorations;
  627. var Y = X.length;
  628. var Z = 0;
  629. X[Y] = an;
  630. var ar, aq;
  631. for (aq = ar = 0; aq < Y; ) {
  632. if (X[aq] !== X[aq + 2]) {
  633. X[ar++] = X[aq++];
  634. X[ar++] = X[aq++];
  635. } else {
  636. aq += 2;
  637. }
  638. }
  639. Y = ar;
  640. for (aq = ar = 0; aq < Y; ) {
  641. var at = X[aq];
  642. var ab = X[aq + 1];
  643. var W = aq + 2;
  644. while (W + 2 <= Y && X[W + 1] === ab) {
  645. W += 2;
  646. }
  647. X[ar++] = at;
  648. X[ar++] = ab;
  649. aq = W;
  650. }
  651. Y = X.length = ar;
  652. var ae = null;
  653. while (ah < T) {
  654. var af = aa[ah];
  655. var S = aa[ah + 2] || an;
  656. var ag = X[Z];
  657. var ap = X[Z + 2] || an;
  658. var W = Math.min(S, ap);
  659. var ak = aa[ah + 1];
  660. var U;
  661. if (ak.nodeType !== 1 && (U = al.substring(V, W))) {
  662. if (aj) {
  663. U = U.replace(am, "\r");
  664. }
  665. ak.nodeValue = U;
  666. var ai = ak.ownerDocument;
  667. var ao = ai.createElement("SPAN");
  668. ao.className = X[Z + 1];
  669. var ad = ak.parentNode;
  670. ad.replaceChild(ao, ak);
  671. ao.appendChild(ak);
  672. if (V < S) {
  673. aa[ah + 1] = ak = ai.createTextNode(al.substring(W, S));
  674. ad.insertBefore(ak, ao.nextSibling);
  675. }
  676. }
  677. V = W;
  678. if (V >= S) {
  679. ah += 2;
  680. }
  681. if (V >= ap) {
  682. Z += 2;
  683. }
  684. }
  685. }
  686. var t = {};
  687. function c(U, V) {
  688. for (var S = V.length; --S >= 0; ) {
  689. var T = V[S];
  690. if (!t.hasOwnProperty(T)) {
  691. t[T] = U;
  692. } else {
  693. if (window.console) {
  694. console.warn("cannot override language handler %s", T);
  695. }
  696. }
  697. }
  698. }
  699. function q(T, S) {
  700. if (!(T && t.hasOwnProperty(T))) {
  701. T = /^\s*</.test(S) ? "default-markup" : "default-code";
  702. }
  703. return t[T];
  704. }
  705. c(K, ["default-code"]);
  706. c(
  707. g(
  708. [],
  709. [
  710. [F, /^[^<?]+/],
  711. [E, /^<!\w[^>]*(?:>|$)/],
  712. [j, /^<\!--[\s\S]*?(?:-\->|$)/],
  713. ["lang-", /^<\?([\s\S]+?)(?:\?>|$)/],
  714. ["lang-", /^<%([\s\S]+?)(?:%>|$)/],
  715. [L, /^(?:<[%?]|[%?]>)/],
  716. ["lang-", /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
  717. ["lang-js", /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
  718. ["lang-css", /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
  719. ["lang-in.tag", /^(<\/?[a-z][^<>]*>)/i],
  720. ]
  721. ),
  722. ["default-markup", "htm", "html", "mxml", "xhtml", "xml", "xsl"]
  723. );
  724. c(
  725. g(
  726. [
  727. [F, /^[\s]+/, null, " \t\r\n"],
  728. [n, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, "\"'"],
  729. ],
  730. [
  731. [m, /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
  732. [P, /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
  733. ["lang-uq.val", /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
  734. [L, /^[=<>\/]+/],
  735. ["lang-js", /^on\w+\s*=\s*\"([^\"]+)\"/i],
  736. ["lang-js", /^on\w+\s*=\s*\'([^\']+)\'/i],
  737. ["lang-js", /^on\w+\s*=\s*([^\"\'>\s]+)/i],
  738. ["lang-css", /^style\s*=\s*\"([^\"]+)\"/i],
  739. ["lang-css", /^style\s*=\s*\'([^\']+)\'/i],
  740. ["lang-css", /^style\s*=\s*([^\"\'>\s]+)/i],
  741. ]
  742. ),
  743. ["in.tag"]
  744. );
  745. c(g([], [[n, /^[\s\S]+/]]), ["uq.val"]);
  746. c(i({ keywords: l, hashComments: true, cStyleComments: true, types: e }), [
  747. "c",
  748. "cc",
  749. "cpp",
  750. "cxx",
  751. "cyc",
  752. "m",
  753. ]);
  754. c(i({ keywords: "null,true,false" }), ["json"]);
  755. c(
  756. i({
  757. keywords: R,
  758. hashComments: true,
  759. cStyleComments: true,
  760. verbatimStrings: true,
  761. types: e,
  762. }),
  763. ["cs"]
  764. );
  765. c(i({ keywords: x, cStyleComments: true }), ["java"]);
  766. c(i({ keywords: H, hashComments: true, multiLineStrings: true }), [
  767. "bsh",
  768. "csh",
  769. "sh",
  770. ]);
  771. c(
  772. i({
  773. keywords: I,
  774. hashComments: true,
  775. multiLineStrings: true,
  776. tripleQuotedStrings: true,
  777. }),
  778. ["cv", "py"]
  779. );
  780. c(
  781. i({
  782. keywords: s,
  783. hashComments: true,
  784. multiLineStrings: true,
  785. regexLiterals: true,
  786. }),
  787. ["perl", "pl", "pm"]
  788. );
  789. c(
  790. i({
  791. keywords: f,
  792. hashComments: true,
  793. multiLineStrings: true,
  794. regexLiterals: true,
  795. }),
  796. ["rb"]
  797. );
  798. c(i({ keywords: w, cStyleComments: true, regexLiterals: true }), ["js"]);
  799. c(
  800. i({
  801. keywords: r,
  802. hashComments: 3,
  803. cStyleComments: true,
  804. multilineStrings: true,
  805. tripleQuotedStrings: true,
  806. regexLiterals: true,
  807. }),
  808. ["coffee"]
  809. );
  810. c(g([], [[C, /^[\s\S]+/]]), ["regex"]);
  811. function d(V) {
  812. var U = V.langExtension;
  813. try {
  814. var S = a(V.sourceNode);
  815. var T = S.sourceCode;
  816. V.sourceCode = T;
  817. V.spans = S.spans;
  818. V.basePos = 0;
  819. q(U, T)(V);
  820. D(V);
  821. } catch (W) {
  822. if ("console" in window) {
  823. console.log(W && W.stack ? W.stack : W);
  824. }
  825. }
  826. }
  827. function y(W, V, U) {
  828. var S = document.createElement("PRE");
  829. S.innerHTML = W;
  830. if (U) {
  831. Q(S, U);
  832. }
  833. var T = { langExtension: V, numberLines: U, sourceNode: S };
  834. d(T);
  835. return S.innerHTML;
  836. }
  837. function b(ad) {
  838. function Y(af) {
  839. return document.getElementsByTagName(af);
  840. }
  841. var ac = [Y("pre"), Y("code"), Y("xmp")];
  842. var T = [];
  843. for (var aa = 0; aa < ac.length; ++aa) {
  844. for (var Z = 0, V = ac[aa].length; Z < V; ++Z) {
  845. T.push(ac[aa][Z]);
  846. }
  847. }
  848. ac = null;
  849. var W = Date;
  850. if (!W.now) {
  851. W = {
  852. now: function () {
  853. return +new Date();
  854. },
  855. };
  856. }
  857. var X = 0;
  858. var S;
  859. var ab = /\blang(?:uage)?-([\w.]+)(?!\S)/;
  860. var ae = /\bprettyprint\b/;
  861. function U() {
  862. var ag = window.PR_SHOULD_USE_CONTINUATION ? W.now() + 250 : Infinity;
  863. for (; X < T.length && W.now() < ag; X++) {
  864. var aj = T[X];
  865. var ai = aj.className;
  866. if (ai.indexOf("prettyprint") >= 0) {
  867. var ah = ai.match(ab);
  868. var am;
  869. if (!ah && (am = o(aj)) && "CODE" === am.tagName) {
  870. ah = am.className.match(ab);
  871. }
  872. if (ah) {
  873. ah = ah[1];
  874. }
  875. var al = false;
  876. for (var ak = aj.parentNode; ak; ak = ak.parentNode) {
  877. if (
  878. (ak.tagName === "pre" ||
  879. ak.tagName === "code" ||
  880. ak.tagName === "xmp") &&
  881. ak.className &&
  882. ak.className.indexOf("prettyprint") >= 0
  883. ) {
  884. al = true;
  885. break;
  886. }
  887. }
  888. if (!al) {
  889. var af = aj.className.match(/\blinenums\b(?::(\d+))?/);
  890. af = af ? (af[1] && af[1].length ? +af[1] : true) : false;
  891. if (af) {
  892. Q(aj, af);
  893. }
  894. S = { langExtension: ah, sourceNode: aj, numberLines: af };
  895. d(S);
  896. }
  897. }
  898. }
  899. if (X < T.length) {
  900. setTimeout(U, 250);
  901. } else {
  902. if (ad) {
  903. ad();
  904. }
  905. }
  906. }
  907. U();
  908. }
  909. window.prettyPrintOne = y;
  910. window.prettyPrint = b;
  911. window.PR = {
  912. createSimpleLexer: g,
  913. registerLangHandler: c,
  914. sourceDecorator: i,
  915. PR_ATTRIB_NAME: P,
  916. PR_ATTRIB_VALUE: n,
  917. PR_COMMENT: j,
  918. PR_DECLARATION: E,
  919. PR_KEYWORD: z,
  920. PR_LITERAL: G,
  921. PR_NOCODE: N,
  922. PR_PLAIN: F,
  923. PR_PUNCTUATION: L,
  924. PR_SOURCE: J,
  925. PR_STRING: C,
  926. PR_TAG: m,
  927. PR_TYPE: O,
  928. };
  929. })();
  930. PR.registerLangHandler(
  931. PR.createSimpleLexer(
  932. [],
  933. [
  934. [PR.PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
  935. [PR.PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/],
  936. [PR.PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
  937. ["lang-", /^<\?([\s\S]+?)(?:\?>|$)/],
  938. ["lang-", /^<%([\s\S]+?)(?:%>|$)/],
  939. ["lang-", /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
  940. [
  941. "lang-handlebars",
  942. /^<script\b[^>]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i,
  943. ],
  944. ["lang-js", /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
  945. ["lang-css", /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
  946. ["lang-in.tag", /^(<\/?[a-z][^<>]*>)/i],
  947. [PR.PR_DECLARATION, /^{{[#^>/]?\s*[\w.][^}]*}}/],
  948. [PR.PR_DECLARATION, /^{{&?\s*[\w.][^}]*}}/],
  949. [PR.PR_DECLARATION, /^{{{>?\s*[\w.][^}]*}}}/],
  950. [PR.PR_COMMENT, /^{{![^}]*}}/],
  951. ]
  952. ),
  953. ["handlebars", "hbs"]
  954. );
  955. PR.registerLangHandler(
  956. PR.createSimpleLexer(
  957. [[PR.PR_PLAIN, /^[ \t\r\n\f]+/, null, " \t\r\n\f"]],
  958. [
  959. [
  960. PR.PR_STRING,
  961. /^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,
  962. null,
  963. ],
  964. [
  965. PR.PR_STRING,
  966. /^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,
  967. null,
  968. ],
  969. ["lang-css-str", /^url\(([^\)\"\']*)\)/i],
  970. [
  971. PR.PR_KEYWORD,
  972. /^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,
  973. null,
  974. ],
  975. [
  976. "lang-css-kw",
  977. /^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i,
  978. ],
  979. [PR.PR_COMMENT, /^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],
  980. [PR.PR_COMMENT, /^(?:<!--|-->)/],
  981. [PR.PR_LITERAL, /^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],
  982. [PR.PR_LITERAL, /^#(?:[0-9a-f]{3}){1,2}/i],
  983. [
  984. PR.PR_PLAIN,
  985. /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i,
  986. ],
  987. [PR.PR_PUNCTUATION, /^[^\s\w\'\"]+/],
  988. ]
  989. ),
  990. ["css"]
  991. );
  992. PR.registerLangHandler(
  993. PR.createSimpleLexer(
  994. [],
  995. [
  996. [
  997. PR.PR_KEYWORD,
  998. /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i,
  999. ],
  1000. ]
  1001. ),
  1002. ["css-kw"]
  1003. );
  1004. PR.registerLangHandler(
  1005. PR.createSimpleLexer([], [[PR.PR_STRING, /^[^\)\"\']+/]]),
  1006. ["css-str"]
  1007. );