/**
 * SyntaxHighlighter
 * http://alexgorbatchev.com/
 *
 * @version
 * 2.0.278 (February 03 2009)
 *
 * @author
 * Alex Gorbatchev
 * 
 * @copyright
 * Copyright (C) 2004-2009 Alex Gorbatchev.
 *
 * Licensed under a GNU Lesser General Public License.
 * http://creativecommons.org/licenses/LGPL/2.1/
 *
 * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute 
 * the source code in accordance with LGPL 2.1 license, however if you want to use 
 * SyntaxHighlighter on your site or include it in your product, you must donate.
 * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
 */
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('f(!1h.2I){l 2I=h(){l p={61:{"1b-1d":"","7f-2R":1,"1W-1P":u,"1B":u,"85-6L":U,"1H-1P":4,"5p":M,"5z":U,"1u":U,"5E":M,"7R-6e":U,"6n":M},R:{59:u,4x:16,4P:16,8h:M,7I:"4p",1n:{4t:"98 1c",4o:"99 1c",67:"97 96 7C",6y:"93 I 94 2a 95 7C 9a",38:"38",6B:"?",1q:"2I\\n\\n",6t:"9b\'t 9h 7J C: ",6b:"9i 9g\'t 9f C 2c-2q 9c: ",77:"<!9d 2c 9e \\"-//92//7d 91 1.0 8P//8Q\\" \\"2j://8e.8f.8c/8R/7e/7d/7e-8O.8N\\"><2c 8K=\\"2j://8e.8f.8c/8L/8M\\"><84><8S 2j-8T=\\"8Z-90\\" 5u=\\"2g/2c; 8Y=8X-8\\" /><4O>8U 2I</4O></84><2E 1g=\\"1W-6l:8V,\\"6g 8W 9j\\",6g,5Y;9k-4H:#9J;4H:#9K;1W-1P:9I;2g-6r:6p;\\"><z 1g=\\"2g-6r:6p;5v-4S:9H;\\"><z 1g=\\"1W-6l:9E,9F,8J,9L-5Y;1W-1P:9M-9S;\\">2I</z><z 1g=\\"1W-1P:.9T;5v-9R:9Q;\\"><z>5T 2.0.9N (9O 9P 6C)</z><z><a 2e=\\"2j://74.58\\" 9D=\\"55\\" 1g=\\"4H:#9C;2g-9q:9r;\\">2j://74.58</a></z></z><z>9s I 9p 9o.</z><z>9l 9m-6C 9n 9t.</z></z></2E></2c>"},7F:M},1t:{5j:u,3w:u,3f:u,5F:{}},2T:{},7b:{9u:/\\/\\*[\\s\\S]*?\\*\\//4G,9A:/\\/\\/.*$/4G,9B:/#.*$/4G,9y:/"(?:\\.|(\\\\\\")|[^\\""\\n])*"/g,9v:/\'(?:\\.|(\\\\\\\')|[^\\\'\'\\n])*\'/g,9w:/"(?:\\.|(\\\\\\")|[^\\""])*"/g,9x:/\'(?:\\.|(\\\\\\\')|[^\\\'\'])*\'/g,3L:/\\w+:\\/\\/[\\w-.\\/?%&=]*/g,9U:{D:/(&1I;|<)\\?=?/g,19:/\\?(&2x;|>)/g},8r:{D:/(&1I;|<)%=?/g,19:/%(&2x;|>)/g},8s:{D:/(&1I;|<)\\s*2q.*?(&2x;|>)/4l,19:/(&1I;|<)\\/\\s*2q\\s*(&2x;|>)/4l}},1u:{18:h(3G){l 3E=J.1w("39"),4F=p.1u.7V;3E.Z="1u";C(l 2J 2a 4F){l 6J=4F[2J],4D=Q 6J(3G),1V=4D.18();3G.5o[2J]=4D;f(1V==u){1O}f(8I(1V)=="8H"){1V=p.1u.6T(1V,3G.1j,2J)}1V.Z+="8z "+2J;3E.1K(1V)}q 3E},6T:h(4M,6Y,4N){l a=J.1w("a"),4L=a.1g,4J=p.R,4K=4J.4x,4C=4J.4P;a.2e="#"+4N;a.4O=4M;a.4Q=6Y;a.6q=4N;a.1x=4M;f(5r(4K)==M){4L.1M=4K+"5q"}f(5r(4C)==M){4L.2i=4C+"5q"}a.8p=h(e){8k{p.1u.6W(c,e||1h.68,c.4Q,c.6q)}8l(e){p.B.1q(e.6M)}q M};q a},6W:h(7Z,89,81,86,7W){l 4B=p.1t.5F[81],4s;f(4B==u||(4s=4B.5o[86])==u){q u}q 4s.2f(7Z,89,7W)},7V:{4t:h(4r){c.18=h(){f(4r.T("5E")!=U){q}q p.R.1n.4t};c.2f=h(4q,8C,8w){l z=4r.z;4q.7x.4j(4q);z.Z=z.Z.E("5D","")}},4o:h(7N){c.18=h(){q p.R.1n.4o};c.2f=h(8o,8E,8x){l 3C=p.B.3y(7N.5B).E(/</g,"&1I;"),2d=p.B.4R("","55",8F,8v,"70=0, 8n=1, 8u=0, 75=1");3C=p.B.2z(3C);2d.J.35("<4p>"+3C+"</4p>");2d.J.54()}},67:h(5c){l 3c,9G,5a=5c.1j;c.18=h(){l 2K=p.R;f(1h.70.a8=="b8:"||2K.59==u){q u}h 1y(4u){l 4A="";C(l 4v 2a 4u){4A+="<b7 1d=\'"+4v+"\' 1N=\'"+4u[4v]+"\'/>"}q 4A};h 2k(4z){l 4w="";C(l 4y 2a 4z){4w+=" "+4y+"=\'"+4z[4y]+"\'"}q 4w};l 56={1M:2K.4x,2i:2K.4P,1j:5a+"b6",6w:"b4/x-6c-6o"},57={b5:"b9",ba:"bf",be:"4Q="+5a,bd:"M"},5b=2K.59,3a;f(/bc/i.1X(80.83)){3a="<5R"+2k({b3:"b2:aU-aT-aS-aQ-aR",aW:"2j://b0.aZ.58/aX/6c/bh/6o/bg.bm#5T=9,0,0,0"})+2k(56)+">"+1y(57)+1y({bD:5b})+"</5R>"}F{3a="<bB"+2k(56)+2k(57)+2k({bC:5b})+"/>"}3c=J.1w("z");3c.1x=3a;q 3c};c.2f=h(bE,bF,5g){l 71=5g.by;6V(71){2H"5Q":l 5h=p.B.2z(p.B.3y(5c.5B).E(/&1I;/g,"<").E(/&2x;/g,">").E(/&bw;/g,"&"));f(1h.6P){1h.6P.bx("2g",5h)}F{q p.B.2z(5h)}2H"bl":p.B.1q(p.R.1n.6y);30;2H"bk":p.B.1q(5g.6M);30}}},bi:h(5f){c.18=h(){q p.R.1n.38};c.2f=h(bj,bo,9V){l 1U=J.1w("bv"),1J=u;f(p.1t.3f!=u){J.2E.4j(p.1t.3f)}p.1t.3f=1U;1U.1g.bu="bt:bq;1M:6H;2i:6H;D:-6G;4S:-6G;";J.2E.1K(1U);1J=1U.5d.J;6F(1J,1h.J);1J.35("<z 1b=\\""+5f.z.Z.E("5D","")+" bs\\">"+5f.z.1x+"</z>");1J.54();1U.5d.52();1U.5d.38();h 6F(6x,6E){l 2L=6E.7v("5e");C(l i=0;i<2L.v;i++){f(2L[i].6v.aP()=="6z"&&/ac\\.12$/.1X(2L[i].2e)){6x.35("<5e 6w=\\"2g/12\\" 6v=\\"6z\\" 2e=\\""+2L[i].2e+"\\"></5e>")}}}}},af:h(ag){c.18=h(){q p.R.1n.6B};c.2f=h(al,ak){l 2d=p.B.4R("","55",ah,ai,"75=0"),1J=2d.J;1J.35(p.R.1n.77);1J.54();2d.52()}}}},B:{5w:h(6Z){q 6Z+3I.a0(3I.9Y()*9W).2t()},5H:h(4V,4U){l 3g={},20;C(20 2a 4V){3g[20]=4V[20]}C(20 2a 4U){3g[20]=4U[20]}q 3g},5V:h(4T){6V(4T){2H"U":q U;2H"M":q M}q 4T},4R:h(3L,63,4W,4n,2G){l x=(79.1M-4W)/2,y=(79.2i-4n)/2;2G+=", D="+x+", 4S="+y+", 1M="+4W+", 2i="+4n;2G=2G.E(/^,/,"");l 51=1h.a2(3L,63,2G);51.52();q 51},7D:h(1L,23,1Z){f(1L.5X){1L["e"+23+1Z]=1Z;1L[23+1Z]=h(){1L["e"+23+1Z](1h.68)};1L.5X("a6"+23,1L[23+1Z])}F{1L.a3(23,1Z,M)}},1q:h(A){1q(p.R.1n.1q+A)},41:h(4Z,65){l 2y=p.1t.5j,3l=u;f(2y==u){2y={};C(l 4Y 2a p.2T){l 3k=p.2T[4Y].am;f(3k==u){1O}C(l i=0;i<3k.v;i++){2y[3k[i]]=4Y}}p.1t.5j=2y}3l=p.2T[2y[4Z]];f(3l==u&&65!=M){p.B.1q(p.R.1n.6t+4Z)}q 3l},4a:h(A,6m){l 2C=A.27("\\n");C(l i=0;i<2C.v;i++){2C[i]=6m(2C[i])}q 2C.5n("\\n")},7q:h(){l z=J.1w("z"),3m=J.1w("z"),6s=10,i=1;1S(i<=aE){f(i%6s===0){z.1x+=i;i+=(i+"").v}F{z.1x+="&aC;";i++}}3m.Z="5p 2R";3m.1K(z);q 3m},6D:h(A){q A.E(/^[ ]*[\\n]+|[\\n]*[ ]*$/g,"")},7H:h(A){l 3i,3V={},5i=Q O("^\\\\[(?<4f>(.*?))\\\\]$"),6k=Q O("(?<1d>[\\\\w-]+)"+"\\\\s*:\\\\s*"+"(?<1N>"+"[\\\\w-%]+|"+"\\\\[.*?\\\\]|"+"\\".*?\\"|"+"\'.*?\'"+")\\\\s*;?","g");1S((3i=6k.N(A))!=u){l 2u=3i.1N.E(/^[\'"]|[\'"]$/g,"");f(2u!=u&&5i.1X(2u)){l m=5i.N(2u);2u=m.4f.v>0?m.4f.27(/\\s*,\\s*/):[]}3V[3i.1d]=2u}q 3V},6a:h(A,12){f(A==u||A.v==0||A=="\\n"){q A}A=A.E(/</g,"&1I;");A=A.E(/ {2,}/g,h(m){l 3U="";C(l i=0;i<m.v-1;i++){3U+="&1R;"}q 3U+" "});f(12!=u){A=p.B.4a(A,h(2s){f(2s.v==0){q""}l 3r="";2s=2s.E(/^(&1R;| )+/,h(s){3r=s;q""});f(2s.v==0){q 3r}q 3r+"<I 1b=\\""+12+"\\">"+2s+"</I>"})}q A},7P:h(6f,7a){l 2D=6f.2t();1S(2D.v<7a){2D="0"+2D}q 2D},5G:h(){l 36=J.1w("z"),3h,37=0,4i=J.2E,1j=p.B.5w("5G"),2F="<z 1b=\\"",2M="</z>",4h="</1Q>";36.1x=2F+"6u\\">"+2F+"28\\">"+2F+"2R\\">"+2F+"5u"+"\\"><1Q 1b=\\"7Q\\"><1Q 1j=\\""+1j+"\\">&1R;"+4h+4h+2M+2M+2M+2M;4i.1K(36);3h=J.aJ(1j);f(/aK/i.1X(80.83)){l 87=1h.aB(3h,u);37=7i(87.aA("1M"))}F{37=3h.as}4i.4j(36);q 37},72:h(7U,7T){l 1H="";C(l i=0;i<7T;i++){1H+=" "}q 7U.E(/\\t/g,1H)},6A:h(2N,4c){l ar=2N.27("\\n"),1H="\\t",47="";C(l i=0;i<50;i++){47+="                    "}h 8j(3e,17,88){q 3e.22(0,17)+47.22(0,88)+3e.22(17+1,3e.v)};2N=p.B.4a(2N,h(24){f(24.1e(1H)==-1){q 24}l 17=0;1S((17=24.1e(1H))!=-1){l 8g=4c-17%4c;24=8j(24,17,8g)}q 24});q 2N},3y:h(A){q(p.R.8h==U)?A.E(/<br\\s*\\/?>|&1I;br\\s*\\/?&2x;/4l,"\\n"):A},3O:h(A){q A.E(/\\s*$/g,"").E(/^\\s*/,"")},2z:h(A){l 29=p.B.3y(A).27("\\n"),az=Q 5A(),7X=/^\\s*/,25=ay;C(l i=0;i<29.v&&25>0;i++){l 43=29[i];f(p.B.3O(43).v==0){1O}l 44=7X.N(43);f(44==u){q A}25=3I.25(44[0].v,25)}f(25>0){C(l i=0;i<29.v;i++){29[i]=29[i].22(25)}}q 29.5n("\\n")},7K:h(2U,2V){f(2U.H<2V.H){q-1}F{f(2U.H>2V.H){q 1}F{f(2U.v<2V.v){q-1}F{f(2U.v>2V.v){q 1}}}}q 0},2Q:h(7l,2Y){h 7r(3X,7s){q[Q p.4m(3X[0],3X.H,7s.12)]};l av=0,4e=u,3M=[],7k=2Y.3R?2Y.3R:7r;1S((4e=2Y.3D.N(7l))!=u){3M=3M.2P(7k(4e,2Y))}q 3M},6d:h(7c){q 7c.E(p.7b.3L,h(m){q"<a 2e=\\""+m+"\\">"+m+"</a>"})}},1B:h(7G,46){h 7u(4g){l 49=[];C(l i=0;i<4g.v;i++){49.K(4g[i])}q 49};l 3J=46?[46]:7u(J.7v(p.R.7I)),7M="1x",2l=u;f(3J.v===0){q}C(l i=0;i<3J.v;i++){l 2B=3J[i],2b=p.B.7H(2B.Z),2W;2b=p.B.5H(7G,2b);2W=2b["7J"];f(2W==u){1O}f(2b["2c-2q"]=="U"){2l=Q p.4X(2W)}F{l 48=p.B.41(2W);f(48){2l=Q 48()}F{1O}}2l.1B(2B[7M],2b);l 2h=2l.z;f(p.R.7F){2h=J.1w("an");2h.1N=2l.z.1x;2h.1g.1M="a4";2h.1g.2i="a7"}2B.7x.a1(2h,2B)}},9Z:h(7B){p.B.7D(1h,"ae",h(){p.1B(7B)})}};p.4m=h(45,6i,12){c.1N=45;c.H=6i;c.v=45.v;c.12=12};p.4m.Y.2t=h(){q c.1N};p.4X=h(3S){l 1C=p.B.41(3S),3Q=Q p.2T.aO(),bn=u;f(1C==u){q}1C=Q 1C();c.5O=3Q;f(1C.3z==u){p.B.1q(p.R.1n.6b+3S);q}3Q.5s.K({3D:1C.3z.I,3R:66});h 3F(42,5Z){C(l j=0;j<42.v;j++){42[j].H+=5Z}};h 66(13,bA){l 6X=13.I,1D=[],3Y=1C.5s,6Q=13.H+13.D.v,2S=1C.3z,1o;C(l i=0;i<3Y.v;i++){1o=p.B.2Q(6X,3Y[i]);3F(1o,6Q);1D=1D.2P(1o)}f(2S.D!=u&&13.D!=u){1o=p.B.2Q(13.D,2S.D);3F(1o,13.H);1D=1D.2P(1o)}f(2S.19!=u&&13.19!=u){1o=p.B.2Q(13.19,2S.19);3F(1o,13.H+13[0].aV(13.19));1D=1D.2P(1o)}q 1D}};p.4X.Y.1B=h(6O,6R){c.5O.1B(6O,6R);c.z=c.5O.z};p.6U=h(){};p.6U.Y={T:h(64,69){l 5M=c.1y[64];q p.B.5V(5M==u?69:5M)},18:h(7j){q J.1w(7j)},7h:h(5N){C(l i=0;i<c.26.v;i++){l 2O=c.26[i];f(2O===u){1O}f((5N.H>2O.H)&&(5N.H<2O.H+2O.v)){q U}}q M},7y:h(3A,7L){l 2v=[];f(3A!=u){C(l i=0;i<3A.v;i++){2v=2v.2P(p.B.2Q(7L,3A[i]))}}2v=2v.aF(p.B.7K);q 2v},7w:h(){C(l i=0;i<c.26.v;i++){f(c.7h(c.26[i])){c.26[i]=u}}},7A:h(2X){l 3N=2X.27(/\\n/g),3x=7i(c.T("7f-2R")),7o=(3x+3N.v).2t().v,7O=c.T("1B",[]);2X="";C(l i=0;i<3N.v;i++){l 1v=3N[i],2r=/^(&1R;|\\s)+/.N(1v),5t="2R aw"+(i%2==0?1:2),8i=p.B.7P(3x+i,7o),8d=7O.1e((3x+i).2t())!=-1,1A=u;f(2r!=u){1A=2r[0].2t();1v=1v.22(1A.v);1A=1A.E(/&1R;/g," ");2r=p.1t.3w*1A.v}F{2r=0}1v=p.B.3O(1v);f(1v.v==0){1v="&1R;"}f(8d){5t+=" au"}2X+="<z 1b=\\""+5t+"\\">"+"<I 1b=\\"ap\\">"+8i+".</I>"+"<1Q 1b=\\"5u\\">"+(1A!=u?"<I 1b=\\"ao\\">"+1A.E(/\\s/g,"&1R;")+"</I>":"")+"<1Q 1b=\\"7Q\\" 1g=\\"5v-D: "+2r+"5q;\\">"+1v+"</1Q>"+"</1Q>"+"</z>"}q 2X},7z:h(5k,5l){l 17=0,3o="",3j=p.B.6a;C(l i=0;i<5l.v;i++){l 1z=5l[i];f(1z===u||1z.v===0){1O}3o+=3j(5k.22(17,1z.H-17),"6j")+3j(1z.1N,1z.12);17=1z.H+1z.v}3o+=3j(5k.22(17),"6j");q 3o},1B:h(1a,62){l aG=p.R,3v=p.1t,z,3d;c.1y={};c.z=u;c.28=u;c.I=u;c.2n=u;c.5o={};c.1j=p.B.5w("a5");3v.5F[c.1j]=c;f(1a===u){1a=""}f(3v.3w===u){3v.3w=p.B.5G()}c.1y=p.B.5H(p.61,62||{});f(c.T("6n")==U){c.1y.1u=c.1y.5z=M}c.z=z=c.18("39");c.28=c.18("39");c.28.Z="28";z.Z="6u";z.1j=c.1j;f(c.T("5E")){z.Z+=" 5D"}f(c.T("5z")==M){z.Z+=" a9"}z.Z+=" "+c.T("1b-1d");z.1g.aj=c.T("1W-1P","");c.5B=1a;c.I=p.B.6D(1a).E(/\\r/g," ");3d=c.T("1H-1P");c.I=c.T("85-6L")==U?p.B.6A(c.I,3d):p.B.72(c.I,3d);c.I=p.B.2z(c.I);f(c.T("1u")){c.2n=c.18("39");c.2n.Z="2n";c.2n.1K(p.1u.18(c));z.1K(c.2n)}f(c.T("5p")){z.1K(p.B.7q())}z.1K(c.28);c.26=c.7y(c.5s,c.I);c.7w();1a=c.7z(c.I,c.26);1a=c.7A(p.B.3O(1a));f(c.T("7R-6e")){1a=p.B.6d(1a)}c.28.1x=1a},8t:h(A){A=A.E(/^\\s+|\\s+$/g,"").E(/\\s+/g,"\\\\b|\\\\b");q"\\\\b"+A+"\\\\b"},8q:h(2A){c.3z={D:{3D:2A.D,12:"2q"},19:{3D:2A.19,12:"2q"},I:Q O("(?<D>"+2A.D.1c+")"+"(?<I>.*?)"+"(?<19>"+2A.19.1c+")","8y")}}};q p}()}f(!5A.1e){5A.Y.1e=h(73,3H){3H=3I.8D(3H||0,0);C(l i=3H;i<c.v;i++){f(c[i]==73){q i}}q-1}}f(!1h.O){(h(){l 2o={N:W.Y.N,6N:5C.Y.6N,E:5C.Y.E,27:5C.Y.27},1E={X:/(?:[^\\\\([#\\s.]+|\\\\(?!k<[\\w$]+>|[5U]{[^}]+})[\\S\\s]?|\\((?=\\?(?!#|<[\\w$]+>)))+|(\\()(?:\\?(?:(#)[^)]*\\)|<([$\\w]+)>))?|\\\\(?:k<([\\w$]+)>|[5U]{([^}]+)})|(\\[\\^?)|([\\S\\s])/g,9z:/(?:[^$]+|\\$(?![1-9$&`\']|{[$\\w]+}))+|\\$(?:([1-9]\\d*|[$&`\'])|{([$\\w]+)})/g,3b:/^(?:\\s+|#.*)+/,5I:/^(?:[?*+]|{\\d+(?:,\\d*)?})/,6S:/&&\\[\\^?/g,6K:/]/g},5W=h(5x,5P,60){C(l i=60||0;i<5x.v;i++){f(5x[i]===5P){q i}}q-1},7t=/()??/.N("")[1]!==33,3t={};O=h(1f,21){f(1f 4k W){f(21!==33){32 7n("4d\'t 4b 8B 82 8m 7p W 8G 8A")}q 1f.3B()}l 21=21||"",78=21.1e("s")>-1,76=21.1e("x")>-1,5m=M,3n=[],15=[],X=1E.X,G,34,3s,3P,3q;X.L=0;1S(G=2o.N.2p(X,1f)){f(G[2]){f(!1E.5I.1X(1f.14(X.L))){15.K("(?:)")}}F{f(G[1]){3n.K(G[3]||u);f(G[3]){5m=U}15.K("(")}F{f(G[4]){3P=5W(3n,G[4]);15.K(3P>-1?"\\\\"+(3P+1)+(5r(1f.5y(X.L))?"":"(?:)"):G[0])}F{f(G[5]){15.K(3t.7g?3t.7g.5Q(G[5],G[0].5y(1)==="P"):G[0])}F{f(G[6]){f(1f.5y(X.L)==="]"){15.K(G[6]==="["?"(?!)":"[\\\\S\\\\s]");X.L++}F{34=O.7Y("&&"+1f.14(G.H),1E.6S,1E.6K,"",{8a:"\\\\"})[0];15.K(G[6]+34+"]");X.L+=34.v+1}}F{f(G[7]){f(78&&G[7]==="."){15.K("[\\\\S\\\\s]")}F{f(76&&1E.3b.1X(G[7])){3s=2o.N.2p(1E.3b,1f.14(X.L-1))[0].v;f(!1E.5I.1X(1f.14(X.L-1+3s))){15.K("(?:)")}X.L+=3s-1}F{15.K(G[7])}}}F{15.K(G[0])}}}}}}}3q=W(15.5n(""),2o.E.2p(21,/[aD]+/g,""));3q.1r={1c:1f,2m:5m?3n:u};q 3q};O.aH=h(1d,o){3t[1d]=o};W.Y.N=h(A){l 1i=2o.N.2p(c,A),1d,i,5K;f(1i){f(7t&&1i.v>1){5K=Q W("^"+c.1c+"$(?!\\\\s)",c.5J());2o.E.2p(1i[0],5K,h(){C(i=1;i<7S.v-2;i++){f(7S[i]===33){1i[i]=33}}})}f(c.1r&&c.1r.2m){C(i=1;i<1i.v;i++){1d=c.1r.2m[i-1];f(1d){1i[1d]=1i[i]}}}f(c.3K&&c.L>(1i.H+1i[0].v)){c.L--}}q 1i}})()}W.Y.5J=h(){q(c.3K?"g":"")+(c.aq?"i":"")+(c.6h?"m":"")+(c.3b?"x":"")+(c.aI?"y":"")};W.Y.3B=h(7E){l 5L=Q O(c.1c,(7E||"")+c.5J());f(c.1r){5L.1r={1c:c.1r.1c,2m:c.1r.2m?c.1r.2m.14(0):u}}q 5L};W.Y.2p=h(bG,A){q c.N(A)};W.Y.bH=h(bp,6I){q c.N(6I[0])};O.3W=h(3Z,3T){l 40="/"+3Z+"/"+(3T||"");q O.3W[40]||(O.3W[40]=Q O(3Z,3T))};O.3u=h(A){q A.E(/[-[\\]{}()*+?.\\\\^$|,#\\s]/g,"\\\\$&")};O.7Y=h(A,D,V,1k,31){l 31=31||{},2Z=31.8a,11=31.9X,1k=1k||"",4I=1k.1e("g")>-1,5S=1k.1e("i")>-1,7m=1k.1e("m")>-1,4E=1k.1e("y")>-1,1k=1k.E(/y/g,""),D=D 4k W?(D.3K?D:D.3B("g")):Q O(D,"g"+1k),V=V 4k W?(V.3K?V:V.3B("g")):Q O(V,"g"+1k),1F=[],2w=0,1l=0,1m=0,1p=0,1T,1Y,1s,1G,3p,53;f(2Z){f(2Z.v>1){32 at("4d\'t 4b ad ax 7p 3u 8b")}f(7m){32 7n("4d\'t 4b 3u 8b 82 aL aM 6h aN")}3p=O.3u(2Z);53=Q W("^(?:"+3p+"[\\\\S\\\\s]|(?:(?!"+D.1c+"|"+V.1c+")[^"+3p+"])+)+",5S?"i":"")}1S(U){D.L=V.L=1m+(2Z?(53.N(A.14(1m))||[""])[0].v:0);1s=D.N(A);1G=V.N(A);f(1s&&1G){f(1s.H<=1G.H){1G=u}F{1s=u}}f(1s||1G){1l=(1s||1G).H;1m=(1s?D:V).L}F{f(!2w){30}}f(4E&&!2w&&1l>1p){30}f(1s){f(!2w++){1T=1l;1Y=1m}}F{f(1G&&2w){f(!--2w){f(11){f(11[0]&&1T>1p){1F.K([11[0],A.14(1p,1T),1p,1T])}f(11[1]){1F.K([11[1],A.14(1T,1Y),1T,1Y])}f(11[2]){1F.K([11[2],A.14(1Y,1l),1Y,1l])}f(11[3]){1F.K([11[3],A.14(1l,1m),1l,1m])}}F{1F.K(A.14(1Y,1l))}1p=1m;f(!4I){30}}}F{D.L=V.L=0;32 ab("aa aY bz b1 bb")}}f(1l===1m){1m++}}f(4I&&!4E&&11&&11[0]&&A.v>1p){1F.K([11[0],A.14(1p),1p,A.v])}D.L=V.L=0;q 1F};',62,726,'||||||||||||this|||if||function||||var||||sh|return||||null|length||||div|str|utils|for|left|replace|else|_109|index|code|document|push|lastIndex|false|exec|XRegExp||new|config||getParam|true|_121|RegExp|part|prototype|className||vN|css|_c3|slice|_107||pos|create|right|_ed|class|source|name|indexOf|_101|style|window|_111|id|_122|_12c|_12d|strings|_ca|_12e|alert|_x|_131|vars|toolbar|_e0|createElement|innerHTML|params|_ec|_e5|highlight|_bd|_c6|lib|_12a|_132|tab|lt|doc|appendChild|obj|width|value|continue|size|span|nbsp|while|_12f|_3c|_8|font|test|_130|_57|_4b|_102|substr|_56|_91|min|matches|split|lines|_97|in|_b4|html|wnd|href|execute|text|_b7|height|http|attributes|_b1|captureNames|bar|_f8|call|script|_e1|_75|toString|_6e|_d7|_12b|gt|_5b|unindent|_f4|_b3|_62|_7a|body|_80|_51|case|SyntaxHighlighter|_5|_28|_40|_81|_88|_d4|concat|getMatches|line|_c9|brushes|m1|m2|_b5|_da|_a1|_124|break|_123|throw|undefined|cc|write|_7b|_7d|print|DIV|_32|extended|_25|_f2|_8e|printFrame|_4a|_7c|_6a|_ea|_5e|_5c|_65|_106|_e9|_133|_10d|_76|len|_100|escape|_f0|spaceWidth|_dc|fixForBlogger|htmlScript|_d5|addFlags|_22|regex|_3|offsetMatches|_2|_f6|Math|_af|global|url|_a6|_db|trim|_10c|_be|func|_bc|_11c|_73|_6b|cache|_a2|_c7|_11b|key|findBrush|_c0|_9c|_9d|_b9|_ab|_8c|_b6|_ad|eachLine|supply|_89|can|_a5|values|_ac|_82|_7e|removeChild|instanceof|gi|Match|_50|viewSource|pre|_1a|_19|_18|expandSource|_29|_2b|_2d|toolbarItemWidth|_2e|_2c|_2a|_17|_10|_7|_129|_4|gm|color|_126|_e|_f|_d|_9|_b|title|toolbarItemHeight|highlighterId|popup|top|_4c|_49|_48|_4f|HtmlScript|_5d|_59||win|focus|esc|close|_blank|_2f|_30|com|clipboardSwf|_27|swf|_24|contentWindow|link|_38|_35|_37|_6c|discoveredBrushes|_e6|_e7|_105|join|toolbarCommands|ruler|px|isNaN|regexList|_e2|content|margin|guid|_fb|charAt|gutter|Array|originalCode|String|collapsed|collapse|highlighters|measureSpace|merge|quantifier|getNativeFlags|r2|_116|_d0|_d2|xmlBrush|_fc|get|object|_127|version|pP|toBoolean|_fa|attachEvent|serif|_c1|_fd|defaults|_ee|_4e|_ce|_5a|process|copyToClipboard|event|_cf|decorate|brushNotHtmlScript|shockwave|processUrls|links|_78|Times|multiline|_ba|plain|_6d|family|_61|light|flash|center|commandName|align|_66|noBrush|syntaxhighlighter|rel|type|_3e|copyToClipboardConfirmation|stylesheet|processSmartTabs|help|2009|trimFirstAndLastLines|_3f|copyStyles|500px|0px|args|_6|classRight|tabs|message|match|_cc|clipboardData|_c8|_cd|classLeft|createButton|Highlighter|switch|executeCommand|_c5|_a|_47|location|_36|processTabs|_f5|alexgorbatchev|scrollbars|_104|aboutDialog|_103|screen|_79|regexLib|_a8|DTD|xhtml1|first|unicode|isMatchNested|parseInt|_d1|_a7|_a0|_128|TypeError|_dd|one|createRuler|defaultAdd|_a3|_ff|toArray|getElementsByTagName|removeNestedMatches|parentNode|findMatches|processMatches|createDisplayLines|_b8|clipboard|addEvent|_115|debug|_aa|parseParams|tagName|brush|matchesSortCallback|_d6|_b0|_1e|_de|padNumber|block|auto|arguments|_85|_84|items|_16|_99|matchRecursive|_12|navigator|_14|when|userAgent|head|smart|_15|_83|_90|_13|escapeChar|character|org|_e4|www|w3|_93|bloggerMode|_e3|insertSpaces|try|catch|constructing|resizable|_1f|onclick|forHtmlScript|aspScriptTags|scriptScriptTags|getKeywords|menubar|400|_1c|_21|sgi|item|another|flags|_1b|max|_20|750|from|string|typeof|Helvetica|xmlns|1999|xhtml|dtd|transitional|Transitional|EN|TR|meta|equiv|About|Georgia|New|utf|charset|Content|Type|XHTML|W3C|The|is|your|to|copy|expand|view|now|Can|option|DOCTYPE|PUBLIC|configured|wasn|find|Brush|Roman|background|Copyright|2004|Alex|highlighter|syntax|decoration|none|JavaScript|Gorbatchev|multiLineCComments|singleQuotedString|multiLineDoubleQuotedString|multiLineSingleQuotedString|doubleQuotedString|replaceVar|singleLineCComments|singleLinePerlComments|0099FF|target|Geneva|Arial|_26|3em|1em|fff|000|sans|xx|278|February|03|4em|bottom|large|75em|phpScriptTags|_3b|1000000|valueNames|random|all|round|replaceChild|open|addEventListener|70em|highlighter_|on|30em|protocol|nogutter|subject|Error|shCore|more|load|about|_42|500|250|fontSize|_44|_43|aliases|textarea|spaces|number|ignoreCase|_8a|offsetWidth|SyntaxError|highlighted|_a4|alt|than|1000|_98|getPropertyValue|getComputedStyle|middot|sx|150|sort|_ef|addPlugin|sticky|getElementById|opera|using|the|flag|Xml|toLowerCase|96b8|444553540000|11cf|ae6d|d27cdb6e|lastIndexOf|codebase|pub|data|macromedia|download|unbalanced|clsid|classid|application|allowScriptAccess|_clipboard|param|file|always|wmode|delimiters|msie|menu|flashVars|transparent|swflash|cabs|printSource|_39|error|ok|cab|_bf|_3a|_119|absolute||printing|position|cssText|IFRAME|amp|setData|command|contains|_c4|embed|src|movie|_33|_34|_117|apply'.split('|'),0,{}))


/**
* PHP
*/
SyntaxHighlighter.brushes.Php = function()
{
	var funcs	=	'abs acos acosh addcslashes addslashes ' +
					'array_change_key_case array_chunk array_combine array_count_values array_diff '+
					'array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_fill '+
					'array_filter array_flip array_intersect array_intersect_assoc array_intersect_key '+
					'array_intersect_uassoc array_intersect_ukey array_key_exists array_keys array_map '+
					'array_merge array_merge_recursive array_multisort array_pad array_pop array_product '+
					'array_push array_rand array_reduce array_reverse array_search array_shift '+
					'array_slice array_splice array_sum array_udiff array_udiff_assoc '+
					'array_udiff_uassoc array_uintersect array_uintersect_assoc '+
					'array_uintersect_uassoc array_unique array_unshift array_values array_walk '+
					'array_walk_recursive atan atan2 atanh base64_decode base64_encode base_convert '+
					'basename bcadd bccomp bcdiv bcmod bcmul bindec bindtextdomain bzclose bzcompress '+
					'bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite ceil chdir '+
					'checkdate checkdnsrr chgrp chmod chop chown chr chroot chunk_split class_exists '+
					'closedir closelog copy cos cosh count count_chars date decbin dechex decoct '+
					'deg2rad delete ebcdic2ascii echo empty end ereg ereg_replace eregi eregi_replace error_log '+
					'error_reporting escapeshellarg escapeshellcmd eval exec exit exp explode extension_loaded '+
					'feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents '+
					'fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype '+
					'floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv fputs fread fscanf '+
					'fseek fsockopen fstat ftell ftok getallheaders getcwd getdate getenv gethostbyaddr gethostbyname '+
					'gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid getmyuid getopt '+
					'getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext '+
					'gettimeofday gettype glob gmdate gmmktime ini_alter ini_get ini_get_all ini_restore ini_set '+
					'interface_exists intval ip2long is_a is_array is_bool is_callable is_dir is_double '+
					'is_executable is_file is_finite is_float is_infinite is_int is_integer is_link is_long '+
					'is_nan is_null is_numeric is_object is_readable is_real is_resource is_scalar is_soap_fault '+
					'is_string is_subclass_of is_uploaded_file is_writable is_writeable mkdir mktime nl2br '+
					'parse_ini_file parse_str parse_url passthru pathinfo readlink realpath rewind rewinddir rmdir '+
					'round str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split '+
					'str_word_count strcasecmp strchr strcmp strcoll strcspn strftime strip_tags stripcslashes '+
					'stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpbrk '+
					'strpos strptime strrchr strrev strripos strrpos strspn strstr strtok strtolower strtotime '+
					'strtoupper strtr strval substr substr_compare';

	var keywords =	'and or xor array as break case ' +
					'cfunction class const continue declare default die do else ' +
					'elseif empty enddeclare endfor endforeach endif endswitch endwhile ' +
					'extends for foreach function include include_once global if ' +
					'new old_function return static switch use require require_once ' +
					'var while abstract interface public implements extends private protected throw';
	
	var constants	= '__FILE__ __LINE__ __METHOD__ __FUNCTION__ __CLASS__';

	this.regexList = [
		{ regex: SyntaxHighlighter.regexLib.singleLineCComments,	css: 'comments' },			// one line comments
		{ regex: SyntaxHighlighter.regexLib.multiLineCComments,		css: 'comments' },			// multiline comments
		{ regex: SyntaxHighlighter.regexLib.doubleQuotedString,		css: 'string' },			// double quoted strings
		{ regex: SyntaxHighlighter.regexLib.singleQuotedString,		css: 'string' },			// single quoted strings
		{ regex: /\$\w+/g,											css: 'variable' },			// variables
		{ regex: new RegExp(this.getKeywords(funcs), 'gmi'),		css: 'functions' },			// common functions
		{ regex: new RegExp(this.getKeywords(constants), 'gmi'),	css: 'constants' },			// constants
		{ regex: new RegExp(this.getKeywords(keywords), 'gm'),		css: 'keyword' }			// keyword
		];

	this.forHtmlScript(SyntaxHighlighter.regexLib.phpScriptTags);
};

SyntaxHighlighter.brushes.Php.prototype	= new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Php.aliases	= ['php'];


/**
* C++
*/
SyntaxHighlighter.brushes.Cpp = function()
{
	// Copyright 2006 Shin, YoungJin
	
	var datatypes =	'ATOM BOOL BOOLEAN BYTE CHAR COLORREF DWORD DWORDLONG DWORD_PTR ' +
					'DWORD32 DWORD64 FLOAT HACCEL HALF_PTR HANDLE HBITMAP HBRUSH ' +
					'HCOLORSPACE HCONV HCONVLIST HCURSOR HDC HDDEDATA HDESK HDROP HDWP ' +
					'HENHMETAFILE HFILE HFONT HGDIOBJ HGLOBAL HHOOK HICON HINSTANCE HKEY ' +
					'HKL HLOCAL HMENU HMETAFILE HMODULE HMONITOR HPALETTE HPEN HRESULT ' +
					'HRGN HRSRC HSZ HWINSTA HWND INT INT_PTR INT32 INT64 LANGID LCID LCTYPE ' +
					'LGRPID LONG LONGLONG LONG_PTR LONG32 LONG64 LPARAM LPBOOL LPBYTE LPCOLORREF ' +
					'LPCSTR LPCTSTR LPCVOID LPCWSTR LPDWORD LPHANDLE LPINT LPLONG LPSTR LPTSTR ' +
					'LPVOID LPWORD LPWSTR LRESULT PBOOL PBOOLEAN PBYTE PCHAR PCSTR PCTSTR PCWSTR ' +
					'PDWORDLONG PDWORD_PTR PDWORD32 PDWORD64 PFLOAT PHALF_PTR PHANDLE PHKEY PINT ' +
					'PINT_PTR PINT32 PINT64 PLCID PLONG PLONGLONG PLONG_PTR PLONG32 PLONG64 POINTER_32 ' +
					'POINTER_64 PSHORT PSIZE_T PSSIZE_T PSTR PTBYTE PTCHAR PTSTR PUCHAR PUHALF_PTR ' +
					'PUINT PUINT_PTR PUINT32 PUINT64 PULONG PULONGLONG PULONG_PTR PULONG32 PULONG64 ' +
					'PUSHORT PVOID PWCHAR PWORD PWSTR SC_HANDLE SC_LOCK SERVICE_STATUS_HANDLE SHORT ' +
					'SIZE_T SSIZE_T TBYTE TCHAR UCHAR UHALF_PTR UINT UINT_PTR UINT32 UINT64 ULONG ' +
					'ULONGLONG ULONG_PTR ULONG32 ULONG64 USHORT USN VOID WCHAR WORD WPARAM WPARAM WPARAM ' +
					'char bool short int __int32 __int64 __int8 __int16 long float double __wchar_t ' +
					'clock_t _complex _dev_t _diskfree_t div_t ldiv_t _exception _EXCEPTION_POINTERS ' +
					'FILE _finddata_t _finddatai64_t _wfinddata_t _wfinddatai64_t __finddata64_t ' +
					'__wfinddata64_t _FPIEEE_RECORD fpos_t _HEAPINFO _HFILE lconv intptr_t ' +
					'jmp_buf mbstate_t _off_t _onexit_t _PNH ptrdiff_t _purecall_handler ' +
					'sig_atomic_t size_t _stat __stat64 _stati64 terminate_function ' +
					'time_t __time64_t _timeb __timeb64 tm uintptr_t _utimbuf ' +
					'va_list wchar_t wctrans_t wctype_t wint_t signed';

	var keywords =	'break case catch class const __finally __exception __try ' +
					'const_cast continue private public protected __declspec ' +
					'default delete deprecated dllexport dllimport do dynamic_cast ' +
					'else enum explicit extern if for friend goto inline ' +
					'mutable naked namespace new noinline noreturn nothrow ' +
					'register reinterpret_cast return selectany ' +
					'sizeof static static_cast struct switch template this ' +
					'thread throw true false try typedef typeid typename union ' +
					'using uuid virtual void volatile whcar_t while';
					
	var functions =	'assert isalnum isalpha iscntrl isdigit isgraph islower isprint' +
					'ispunct isspace isupper isxdigit tolower toupper errno localeconv ' +
					'setlocale acos asin atan atan2 ceil cos cosh exp fabs floor fmod ' +
					'frexp ldexp log log10 modf pow sin sinh sqrt tan tanh jmp_buf ' +
					'longjmp setjmp raise signal sig_atomic_t va_arg va_end va_start ' +
					'clearerr fclose feof ferror fflush fgetc fgetpos fgets fopen ' +
					'fprintf fputc fputs fread freopen fscanf fseek fsetpos ftell ' +
					'fwrite getc getchar gets perror printf putc putchar puts remove ' +
					'rename rewind scanf setbuf setvbuf sprintf sscanf tmpfile tmpnam ' +
					'ungetc vfprintf vprintf vsprintf abort abs atexit atof atoi atol ' +
					'bsearch calloc div exit free getenv labs ldiv malloc mblen mbstowcs ' +
					'mbtowc qsort rand realloc srand strtod strtol strtoul system ' +
					'wcstombs wctomb memchr memcmp memcpy memmove memset strcat strchr ' +
					'strcmp strcoll strcpy strcspn strerror strlen strncat strncmp ' +
					'strncpy strpbrk strrchr strspn strstr strtok strxfrm asctime ' +
					'clock ctime difftime gmtime localtime mktime strftime time';

	this.regexList = [
		{ regex: SyntaxHighlighter.regexLib.singleLineCComments,	css: 'comments' },			// one line comments
		{ regex: SyntaxHighlighter.regexLib.multiLineCComments,		css: 'comments' },			// multiline comments
		{ regex: SyntaxHighlighter.regexLib.doubleQuotedString,		css: 'string' },			// strings
		{ regex: SyntaxHighlighter.regexLib.singleQuotedString,		css: 'string' },			// strings
		{ regex: /^ *#.*/gm,										css: 'preprocessor' },
		{ regex: new RegExp(this.getKeywords(datatypes), 'gm'),		css: 'color1 bold' },
		{ regex: new RegExp(this.getKeywords(functions), 'gm'),		css: 'functions bold' },
		{ regex: new RegExp(this.getKeywords(keywords), 'gm'),		css: 'keyword bold' }
		];
};

SyntaxHighlighter.brushes.Cpp.prototype	= new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Cpp.aliases	= ['cpp', 'c'];


/**
* CSS
*/
SyntaxHighlighter.brushes.CSS = function()
{
	function getKeywordsCSS(str)
	{
		return '\\b([a-z_]|)' + str.replace(/ /g, '(?=:)\\b|\\b([a-z_\\*]|\\*|)') + '(?=:)\\b';
	};
	
	function getValuesCSS(str)
	{
		return '\\b' + str.replace(/ /g, '(?!-)(?!:)\\b|\\b()') + '\:\\b';
	};

	var keywords =	'ascent azimuth background-attachment background-color background-image background-position ' +
					'background-repeat background baseline bbox border-collapse border-color border-spacing border-style border-top ' +
					'border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color ' +
					'border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width ' +
					'border-bottom-width border-left-width border-width border bottom cap-height caption-side centerline clear clip color ' +
					'content counter-increment counter-reset cue-after cue-before cue cursor definition-src descent direction display ' +
					'elevation empty-cells float font-size-adjust font-family font-size font-stretch font-style font-variant font-weight font ' +
					'height left letter-spacing line-height list-style-image list-style-position list-style-type list-style margin-top ' +
					'margin-right margin-bottom margin-left margin marker-offset marks mathline max-height max-width min-height min-width orphans ' +
					'outline-color outline-style outline-width outline overflow padding-top padding-right padding-bottom padding-left padding page ' +
					'page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position ' +
					'quotes right richness size slope src speak-header speak-numeral speak-punctuation speak speech-rate stemh stemv stress ' +
					'table-layout text-align top text-decoration text-indent text-shadow text-transform unicode-bidi unicode-range units-per-em ' +
					'vertical-align visibility voice-family volume white-space widows width widths word-spacing x-height z-index';

	var values =	'above absolute all always aqua armenian attr aural auto avoid baseline behind below bidi-override black blink block blue bold bolder '+
					'both bottom braille capitalize caption center center-left center-right circle close-quote code collapse compact condensed '+
					'continuous counter counters crop cross crosshair cursive dashed decimal decimal-leading-zero default digits disc dotted double '+
					'embed embossed e-resize expanded extra-condensed extra-expanded fantasy far-left far-right fast faster fixed format fuchsia '+
					'gray green groove handheld hebrew help hidden hide high higher icon inline-table inline inset inside invert italic '+
					'justify landscape large larger left-side left leftwards level lighter lime line-through list-item local loud lower-alpha '+
					'lowercase lower-greek lower-latin lower-roman lower low ltr marker maroon medium message-box middle mix move narrower '+
					'navy ne-resize no-close-quote none no-open-quote no-repeat normal nowrap n-resize nw-resize oblique olive once open-quote outset '+
					'outside overline pointer portrait pre print projection purple red relative repeat repeat-x repeat-y rgb ridge right right-side '+
					'rightwards rtl run-in screen scroll semi-condensed semi-expanded separate se-resize show silent silver slower slow '+
					'small small-caps small-caption smaller soft solid speech spell-out square s-resize static status-bar sub super sw-resize '+
					'table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group teal '+
					'text-bottom text-top thick thin top transparent tty tv ultra-condensed ultra-expanded underline upper-alpha uppercase upper-latin '+
					'upper-roman url visible wait white wider w-resize x-fast x-high x-large x-loud x-low x-slow x-small x-soft xx-large xx-small yellow';

	var fonts =		'[mM]onospace [tT]ahoma [vV]erdana [aA]rial [hH]elvetica [sS]ans-serif [sS]erif [cC]ourier mono sans serif';
	
	this.regexList = [
		{ regex: SyntaxHighlighter.regexLib.multiLineCComments,		css: 'comments' },	// multiline comments
		{ regex: SyntaxHighlighter.regexLib.doubleQuotedString,		css: 'string' },	// double quoted strings
		{ regex: SyntaxHighlighter.regexLib.singleQuotedString,		css: 'string' },	// single quoted strings
		{ regex: /\#[a-fA-F0-9]{3,6}/g,								css: 'value' },		// html colors
		{ regex: /(-?\d+)(\.\d+)?(px|em|pt|\:|\%|)/g,				css: 'value' },		// sizes
		{ regex: /!important/g,										css: 'color3' },	// !important
		{ regex: new RegExp(getKeywordsCSS(keywords), 'gm'),		css: 'keyword' },	// keywords
		{ regex: new RegExp(getValuesCSS(values), 'g'),				css: 'value' },		// values
		{ regex: new RegExp(this.getKeywords(fonts), 'g'),			css: 'color1' }		// fonts
		];

	this.forHtmlScript({ 
		left: /(&lt;|<)\s*style.*?(&gt;|>)/gi, 
		right: /(&lt;|<)\/\s*style\s*(&gt;|>)/gi 
		});
};

SyntaxHighlighter.brushes.CSS.prototype	= new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.CSS.aliases	= ['css'];


/**
* JavaScript
*/
SyntaxHighlighter.brushes.JScript = function()
{
	var keywords =	'abstract boolean break byte case catch char class const continue debugger ' +
					'default delete do double else enum export extends false final finally float ' +
					'for function goto if implements import in instanceof int interface long native ' +
					'new null package private protected public return short static super switch ' +
					'synchronized this throw throws transient true try typeof var void volatile while with';

	this.regexList = [
		{ regex: SyntaxHighlighter.regexLib.singleLineCComments,	css: 'comments' },			// one line comments
		{ regex: SyntaxHighlighter.regexLib.multiLineCComments,		css: 'comments' },			// multiline comments
		{ regex: SyntaxHighlighter.regexLib.doubleQuotedString,		css: 'string' },			// double quoted strings
		{ regex: SyntaxHighlighter.regexLib.singleQuotedString,		css: 'string' },			// single quoted strings
		{ regex: /\s*#.*/gm,										css: 'preprocessor' },		// preprocessor tags like #region and #endregion
		{ regex: new RegExp(this.getKeywords(keywords), 'gm'),		css: 'keyword' }			// keywords
		];
	
	this.forHtmlScript(SyntaxHighlighter.regexLib.scriptScriptTags);
};

SyntaxHighlighter.brushes.JScript.prototype	= new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.JScript.aliases	= ['js', 'jscript', 'javascript'];


/**
* SQL
*/
SyntaxHighlighter.brushes.Sql = function()
{
	var funcs	=	'abs avg case cast coalesce convert count current_timestamp ' +
					'current_user day isnull left lower month nullif replace right ' +
					'session_user space substring sum system_user upper user year';

	var keywords =	'absolute action add after alter as asc at authorization begin bigint ' +
					'binary bit by cascade char character check checkpoint close collate ' +
					'column commit committed connect connection constraint contains continue ' +
					'create cube current current_date current_time cursor database date ' +
					'deallocate dec decimal declare default delete desc distinct double drop ' +
					'dynamic else end end-exec escape except exec execute false fetch first ' +
					'float for force foreign forward free from full function global goto grant ' +
					'group grouping having hour ignore index inner insensitive insert instead ' +
					'int integer intersect into is isolation key last level load local max min ' +
					'minute modify move name national nchar next no numeric of off on only ' +
					'open option order out output partial password precision prepare primary ' +
					'prior privileges procedure public read real references relative repeatable ' +
					'restrict return returns revoke rollback rollup rows rule schema scroll ' +
					'second section select sequence serializable set size smallint static ' +
					'statistics table temp temporary then time timestamp to top transaction ' +
					'translation trigger true truncate uncommitted union unique update values ' +
					'varchar varying view when where with work';

	var operators =	'all and any between cross in join like not null or outer some';

	this.regexList = [
		{ regex: /--(.*)$/gm,												css: 'comments' },			// one line and multiline comments
		{ regex: SyntaxHighlighter.regexLib.multiLineDoubleQuotedString,	css: 'string' },			// double quoted strings
		{ regex: SyntaxHighlighter.regexLib.multiLineSingleQuotedString,	css: 'string' },			// single quoted strings
		{ regex: new RegExp(this.getKeywords(funcs), 'gmi'),				css: 'color2' },			// functions
		{ regex: new RegExp(this.getKeywords(operators), 'gmi'),			css: 'color1' },			// operators and such
		{ regex: new RegExp(this.getKeywords(keywords), 'gmi'),				css: 'keyword' }			// keyword
		];
};

SyntaxHighlighter.brushes.Sql.prototype	= new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Sql.aliases	= ['sql'];