<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -9,7 +9,59 @@
 		&lt;/subrecipes&gt;
 	&lt;/recipe&gt;
 
-	&lt;recipe name=&quot;block.js.hidden&quot;&gt;
+	&lt;recipe name=&quot;object.object.js&quot;&gt;
+		&lt;start-selector&gt;object.key.js:has-child(label:capture(name)):capture(itemizer-firstused) + curly.brace.open.js&lt;/start-selector&gt;
+		&lt;end-selector&gt;curly.brace.close.js&lt;/end-selector&gt;
+		&lt;subrecipes&gt;
+			&lt;include-root-recipes/&gt;
+		&lt;/subrecipes&gt;
+	&lt;/recipe&gt;
+
+
+&lt;!--
+	&lt;recipe name=&quot;object.value.js&quot;&gt;
+		&lt;start-selector&gt;object.key.js:has-child(label:capture(name)):capture(itemizer-firstused) + :not(curly.open)&lt;/start-selector&gt;
+		&lt;end-selector&gt;*&lt;/end-selector&gt;
+		&lt;subrecipes&gt;
+			&lt;include-root-recipes/&gt;
+		&lt;/subrecipes&gt;
+	&lt;/recipe&gt;
+--&gt;
+
+	&lt;recipe name=&quot;variable.class.object.js&quot;&gt;
+		&lt;start-selector&gt;variable:capture(name) + assignment + class:capture(itemizer-firstused) + round + curly.brace.open.js&lt;/start-selector&gt;
+		&lt;end-selector&gt;curly.brace.close.js&lt;/end-selector&gt;
+		&lt;subrecipes&gt;
+			&lt;include-root-recipes/&gt;
+		&lt;/subrecipes&gt;
+	&lt;/recipe&gt;
+
+	&lt;recipe name=&quot;variable.class.object.js&quot;&gt;
+		&lt;start-selector&gt;variable:capture(name) assignment + class:capture(itemizer-firstused) + round + curly.brace.open.js&lt;/start-selector&gt;
+		&lt;end-selector&gt;curly.brace.close.js&lt;/end-selector&gt;
+		&lt;subrecipes&gt;
+			&lt;include-root-recipes/&gt;
+		&lt;/subrecipes&gt;
+	&lt;/recipe&gt;
+
+	&lt;recipe name=&quot;property.class.object.js&quot;&gt;
+		&lt;start-selector&gt;property:capture(name) + assignment + class:capture(itemizer-firstused) + round + curly.brace.open.js&lt;/start-selector&gt;
+		&lt;end-selector&gt;curly.brace.close.js&lt;/end-selector&gt;
+		&lt;subrecipes&gt;
+			&lt;include-root-recipes/&gt;
+		&lt;/subrecipes&gt;
+	&lt;/recipe&gt;
+
+	&lt;recipe name=&quot;class.object.js&quot;&gt;
+		&lt;start-selector&gt;class:has-child(name:capture(name)):capture(itemizer-firstused) + round + curly.brace.open.js&lt;/start-selector&gt;
+		&lt;end-selector&gt;curly.brace.close.js&lt;/end-selector&gt;
+		&lt;subrecipes&gt;
+			&lt;include-root-recipes/&gt;
+		&lt;/subrecipes&gt;
+	&lt;/recipe&gt;
+
+
+	&lt;recipe name=&quot;block.js&quot;&gt;
 		&lt;class&gt;ESCodeBlockItem&lt;/class&gt;
 		&lt;start-selector&gt;curly.brace.open.js&lt;/start-selector&gt;
 		&lt;end-selector&gt;curly.brace.close.js&lt;/end-selector&gt;
@@ -17,5 +69,6 @@
 			&lt;include-root-recipes/&gt;
 		&lt;/subrecipes&gt;
 	&lt;/recipe&gt;
+
 	
 &lt;/itemizer&gt;</diff>
      <filename>Sugars/JavaScript.sugar/Itemizers/JavaScript.xml</filename>
    </modified>
    <modified>
      <diff>@@ -8,6 +8,9 @@
 		&lt;name&gt;JavaScript&lt;/name&gt;
 		&lt;detectors&gt;
 			&lt;extension&gt;js&lt;/extension&gt;
+			&lt;extension&gt;jsx&lt;/extension&gt;
+			&lt;extension&gt;json&lt;/extension&gt;
+			&lt;extension&gt;jsonp&lt;/extension&gt;
 		&lt;/detectors&gt;
 		
 	&lt;/language&gt;</diff>
      <filename>Sugars/JavaScript.sugar/Languages.xml</filename>
    </modified>
    <modified>
      <diff>@@ -1,255 +1,499 @@
 &lt;?xml version=&quot;1.0&quot;?&gt;
 &lt;syntax name=&quot;sourcecode.js&quot;&gt;
-	&lt;zones&gt;
-	
-		&lt;!-- Something.prototype = ... --&gt;
-		&lt;zone name=&quot;meta.class.js&quot;&gt;
-			&lt;expression&gt;([a-zA-Z_?.$][\w?.$]*)\.(prototype)\s*=\s*&lt;/expression&gt;
-			&lt;capture number=&quot;1&quot; name=&quot;support.class.js&quot;/&gt;
-			&lt;capture number=&quot;2&quot; name=&quot;support.constant.js&quot;/&gt;
-		&lt;/zone&gt;
-		
-		&lt;!-- Something.prototype.doSomething = function(...) ... --&gt;
-		&lt;zone name=&quot;function.prototype.js&quot;&gt;
-			&lt;expression&gt;(([a-zA-Z_?.$][\w?.$]*)\.(prototype)\.)([a-zA-Z_?.$][\w?.$]*)\s*=\s*(function)?\s*(\()(.*?)(\))&lt;/expression&gt;
-			&lt;capture number=&quot;1&quot; name=&quot;context&quot;/&gt;
-			&lt;capture number=&quot;2&quot; name=&quot;support.class.js&quot;/&gt;
-			&lt;capture number=&quot;3&quot; name=&quot;support.constant.js&quot;/&gt;
-			&lt;capture number=&quot;4&quot; name=&quot;name&quot;/&gt;
-			&lt;capture number=&quot;5&quot; name=&quot;storage.type.function.js&quot;/&gt;
-			&lt;capture number=&quot;6&quot; name=&quot;punctuation.definition.parameters.begin&quot;/&gt;
-			&lt;capture number=&quot;7&quot; name=&quot;variable.parameter.function.js&quot;/&gt;
-			&lt;capture number=&quot;8&quot; name=&quot;punctuation.definition.parameters.end&quot;/&gt;
-		&lt;/zone&gt;
-		
-		&lt;!-- Something.prototype.doSomething = ... --&gt;
-		&lt;zone name=&quot;function.js&quot;&gt;
-			&lt;expression&gt;([a-zA-Z_?.$][\w?.$]*)\.(prototype)\.([a-zA-Z_?.$][\w?.$]*)\s*=\s*&lt;/expression&gt;
-			&lt;capture number=&quot;1&quot; name=&quot;support.class.js&quot;/&gt;
-			&lt;capture number=&quot;2&quot; name=&quot;support.constant.js&quot;/&gt;
-			&lt;capture number=&quot;3&quot; name=&quot;name&quot;/&gt;
-		&lt;/zone&gt;
-		
-		&lt;!-- Something.doSomething = function(...) ... --&gt;
-		&lt;zone name=&quot;function.js&quot;&gt;
-			&lt;expression&gt;([a-zA-Z_?.$][\w?.$]*)\.([a-zA-Z_?.$][\w?.$]*)\s*=\s*(function)\s*(\()(.*?)(\))&lt;/expression&gt;
-			&lt;capture number=&quot;1&quot; name=&quot;support.class.js&quot;/&gt;
-			&lt;capture number=&quot;2&quot; name=&quot;name&quot;/&gt;
-			&lt;capture number=&quot;3&quot; name=&quot;storage.type.function.js&quot;/&gt;
-			&lt;capture number=&quot;4&quot; name=&quot;punctuation.definition.parameters.begin&quot;/&gt;
-			&lt;capture number=&quot;5&quot; name=&quot;variable.parameter.function.js&quot;/&gt;
-			&lt;capture number=&quot;6&quot; name=&quot;punctuation.definition.parameters.end&quot;/&gt;
-		&lt;/zone&gt;
-		
-		&lt;!-- doSomething = function(...) ... --&gt;
-		&lt;zone name=&quot;function.js&quot;&gt;
-			&lt;expression&gt;([a-zA-Z_?$][\w?$]*)\s*=\s*(function)\s*(\()(.*?)(\))&lt;/expression&gt;
-			&lt;capture number=&quot;1&quot; name=&quot;name&quot;/&gt;
-			&lt;capture number=&quot;2&quot; name=&quot;storage.type.function.js&quot;/&gt;
-			&lt;capture number=&quot;3&quot; name=&quot;punctuation.definition.parameters.begin&quot;/&gt;
-			&lt;capture number=&quot;4&quot; name=&quot;variable.parameter.function.js&quot;/&gt;
-			&lt;capture number=&quot;5&quot; name=&quot;punctuation.definition.parameters.end&quot;/&gt;
-		&lt;/zone&gt;
-		
-		&lt;!-- function doSomething(...) ... --&gt;
-		&lt;zone name=&quot;function.js&quot;&gt;
-			&lt;expression&gt;\b(function)\s+([a-zA-Z_$]\w*)?\s*(\()(.*?)(\))&lt;/expression&gt;
-			&lt;capture number=&quot;1&quot; name=&quot;storage.type.function.js&quot;/&gt;
-			&lt;capture number=&quot;2&quot; name=&quot;name&quot;/&gt;
-			&lt;capture number=&quot;3&quot; name=&quot;punctuation.definition.parameters.begin&quot;/&gt;
-			&lt;capture number=&quot;4&quot; name=&quot;variable.parameter.function.js&quot;/&gt;
-			&lt;capture number=&quot;5&quot; name=&quot;punctuation.definition.parameters.end&quot;/&gt;
-		&lt;/zone&gt;
-		
-		&lt;!-- doSomething : function(...) ... --&gt;
-		&lt;zone name=&quot;function.json.js&quot;&gt;
-			&lt;expression&gt;\b([a-zA-Z_?.$][\w?.$]*)\s*:\s*\b(function)?\s*(\()(.*?)(\))&lt;/expression&gt;
-			&lt;capture number=&quot;1&quot; name=&quot;name&quot;/&gt;
-			&lt;capture number=&quot;2&quot; name=&quot;storage.type.function.js&quot;/&gt;
-			&lt;capture number=&quot;3&quot; name=&quot;punctuation.definition.parameters.begin&quot;/&gt;
-			&lt;capture number=&quot;4&quot; name=&quot;variable.parameter.function.js&quot;/&gt;
-			&lt;capture number=&quot;5&quot; name=&quot;punctuation.definition.parameters.end&quot;/&gt;
-		&lt;/zone&gt;
-		
-		&lt;!-- &quot;doSomething&quot; : function(...) ... --&gt;
-		&lt;zone name=&quot;function.json.js&quot;&gt;
-			&lt;expression&gt;(?:((')(.*?)('))|((&quot;)(.*?)(&quot;)))\s*:\s*\b(function)?\s*(\()(.*?)(\))&lt;/expression&gt;
-			&lt;capture number=&quot;1&quot; name=&quot;string.quoted.single.js&quot;/&gt;
-			&lt;capture number=&quot;2&quot; name=&quot;punctuation.definition.string.begin.js&quot;/&gt;
-			&lt;capture number=&quot;3&quot; name=&quot;name&quot;/&gt;
-			&lt;capture number=&quot;4&quot; name=&quot;punctuation.definition.string.end.js&quot;/&gt;
-			&lt;capture number=&quot;5&quot; name=&quot;string.quoted.double.js&quot;/&gt;
-			&lt;capture number=&quot;6&quot; name=&quot;punctuation.definition.string.begin.js&quot;/&gt;
-			&lt;capture number=&quot;7&quot; name=&quot;name&quot;/&gt;
-			&lt;capture number=&quot;8&quot; name=&quot;punctuation.definition.string.end.js&quot;/&gt;
-			&lt;capture number=&quot;9&quot; name=&quot;name&quot;/&gt;
-			&lt;capture number=&quot;10&quot; name=&quot;punctuation.definition.parameters.begin&quot;/&gt;
-			&lt;capture number=&quot;11&quot; name=&quot;variable.parameter.function.js&quot;/&gt;
-			&lt;capture number=&quot;12&quot; name=&quot;punctuation.definition.parameters.end&quot;/&gt;
-		&lt;/zone&gt;
-		
-		&lt;zone name=&quot;meta.class.instance.constructor&quot;&gt;
-			&lt;expression&gt;(new)\s+(\w+(?:\.\w*)?)&lt;/expression&gt;
-			&lt;capture number=&quot;1&quot; name=&quot;keyword.operator.new.js&quot;/&gt;
-			&lt;capture number=&quot;2&quot; name=&quot;entity.name.type.instance.js&quot;/&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;entity.name.type.object.js.firebug&quot;&gt;
-			&lt;expression&gt;\b(console)\b&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;support.function.js.firebug&quot;&gt;
-			&lt;expression&gt;\.(warn|info|log|error|time|timeEnd|assert)\b&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;constant.numeric.js&quot;&gt;
-			&lt;expression&gt;\b((0(x|X)[0-9a-fA-F]+)|([0-9]+(\.[0-9]+)?))\b&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;string.quoted.single.js&quot;&gt;
-			&lt;starts-with&gt;
-				&lt;expression&gt;'&lt;/expression&gt;
-				&lt;capture number=&quot;0&quot; name=&quot;punctuation.definition.string.begin.js&quot;/&gt;
-			&lt;/starts-with&gt;
-			&lt;ends-with&gt;
-				&lt;expression&gt;'&lt;/expression&gt;
-				&lt;capture number=&quot;0&quot; name=&quot;punctuation.definition.string.end.js&quot;/&gt;
-			&lt;/ends-with&gt;
-			&lt;subzones&gt;
-				&lt;zone name=&quot;constant.character.escape.js&quot;&gt;
-					&lt;expression&gt;\\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)&lt;/expression&gt;
-				&lt;/zone&gt;
-			&lt;/subzones&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;string.quoted.double.js&quot;&gt;
-			&lt;starts-with&gt;
-				&lt;expression&gt;&quot;&lt;/expression&gt;
-				&lt;capture number=&quot;0&quot; name=&quot;punctuation.definition.string.begin.js&quot;/&gt;
-			&lt;/starts-with&gt;
-			&lt;ends-with&gt;
-				&lt;expression&gt;&quot;&lt;/expression&gt;
-				&lt;capture number=&quot;0&quot; name=&quot;punctuation.definition.string.end.js&quot;/&gt;
-			&lt;/ends-with&gt;
-			&lt;subzones&gt;
-				&lt;zone name=&quot;constant.character.escape.js&quot;&gt;
-					&lt;expression&gt;\\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)&lt;/expression&gt;
-				&lt;/zone&gt;
-			&lt;/subzones&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;comment.block.documentation.js&quot;&gt;
-			&lt;starts-with&gt;
-				&lt;expression&gt;/\*\*&lt;/expression&gt;
-				&lt;capture number=&quot;0&quot; name=&quot;punctuation.definition.begin&quot;/&gt;
-			&lt;/starts-with&gt;
-			&lt;ends-with&gt;
-				&lt;expression&gt;\*/&lt;/expression&gt;
-				&lt;capture number=&quot;0&quot; name=&quot;punctuation.definition.end&quot;/&gt;
-			&lt;/ends-with&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;comment.block.js&quot;&gt;
-			&lt;starts-with&gt;
-				&lt;expression&gt;/\*&lt;/expression&gt;
-				&lt;capture number=&quot;0&quot; name=&quot;punctuation.definition.begin&quot;/&gt;
-			&lt;/starts-with&gt;
-			&lt;ends-with&gt;
-				&lt;expression&gt;\*/&lt;/expression&gt;
-				&lt;capture number=&quot;0&quot; name=&quot;punctuation.definition.end&quot;/&gt;
-			&lt;/ends-with&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;comment.line.double-slash.js&quot;&gt;
-			&lt;expression&gt;(//).*$\n?&lt;/expression&gt;
-			&lt;capture number=&quot;1&quot; name=&quot;punctuation.definition.begin&quot;/&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;comment.block.html.js&quot;&gt;
-			&lt;expression&gt;(&amp;lt;!--|--&gt;)&lt;/expression&gt;
-			&lt;capture number=&quot;0&quot; name=&quot;punctuation.definition.comment.html.js&quot;/&gt;
-			&lt;capture number=&quot;2&quot; name=&quot;punctuation.definition.comment.html.js&quot;/&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;storage.type.js&quot;&gt;
-			&lt;expression&gt;\b(boolean|byte|char|class|double|enum|float|function|int|interface|long|short|var|void)\b&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;storage.modifier.js&quot;&gt;
-			&lt;expression&gt;\b(const|export|extends|final|implements|native|private|protected|public|static|synchronized|throws|transient|volatile)\b&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;keyword.control.js&quot;&gt;
-			&lt;expression&gt;\b(break|case|catch|continue|default|do|else|finally|for|goto|if|import|package|return|switch|throw|try|while)\b&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;keyword.operator.js&quot;&gt;
-			&lt;expression&gt;\b(delete|in|instanceof|new|typeof|with)\b&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;constant.language.boolean.true.js&quot;&gt;
-			&lt;expression&gt;\btrue\b&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;constant.language.boolean.false.js&quot;&gt;
-			&lt;expression&gt;\bfalse\b&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;constant.language.null.js&quot;&gt;
-			&lt;expression&gt;\bnull\b&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;variable.language.js&quot;&gt;
-			&lt;expression&gt;\b(super|this)\b&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;keyword.other.js&quot;&gt;
-			&lt;expression&gt;\b(debugger)\b&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;support.class.js&quot;&gt;
-			&lt;expression&gt;\b(Anchor|Applet|Area|Array|Boolean|Button|Checkbox|Date|document|event|FileUpload|Form|Frame|Function|Hidden|History|Image|JavaArray|JavaClass|JavaObject|JavaPackage|java|Layer|Link|Location|Math|MimeType|Number|navigator|netscape|Object|Option|Packages|Password|Plugin|Radio|RegExp|Reset|Select|String|Style|Submit|screen|sun|Text|Textarea|window|XMLHttpRequest)\b&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;support.function.js&quot;&gt;
-			&lt;expression&gt;\b(s(h(ift|ow(Mod(elessDialog|alDialog)|Help))|croll(X|By(Pages|Lines)?|Y|To)?|t(op|rike)|i(n|zeToContent|debar|gnText)|ort|u(p|b(str(ing)?)?)|pli(ce|t)|e(nd|t(Re(sizable|questHeader)|M(i(nutes|lliseconds)|onth)|Seconds|Ho(tKeys|urs)|Year|Cursor|Time(out)?|Interval|ZOptions|Date|UTC(M(i(nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(ome|andleEvent)|navigate|c(har(CodeAt|At)|o(s|n(cat|textual|firm)|mpile)|eil|lear(Timeout|Interval)?|a(ptureEvents|ll)|reate(StyleSheet|Popup|EventObject))|t(o(GMTString|S(tring|ource)|U(TCString|pperCase)|Lo(caleString|werCase))|est|a(n|int(Enabled)?))|i(s(NaN|Finite)|ndexOf|talics)|d(isableExternalCapture|ump|etachEvent)|u(n(shift|taint|escape|watch)|pdateCommands)|j(oin|avaEnabled)|p(o(p|w)|ush|lugins.refresh|a(ddings|rse(Int|Float)?)|r(int|ompt|eference))|e(scape|nableExternalCapture|val|lementFromPoint|x(p|ec(Script|Command)?))|valueOf|UTC|queryCommand(State|Indeterm|Enabled|Value)|f(i(nd|le(ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(nt(size|color)|rward)|loor|romCharCode)|watch|l(ink|o(ad|g)|astIndexOf)|a(sin|nchor|cos|t(tachEvent|ob|an(2)?)|pply|lert|b(s|ort))|r(ou(nd|teEvents)|e(size(By|To)|calc|turnValue|place|verse|l(oad|ease(Capture|Events)))|andom)|g(o|et(ResponseHeader|M(i(nutes|lliseconds)|onth)|Se(conds|lection)|Hours|Year|Time(zoneOffset)?|Da(y|te)|UTC(M(i(nutes|lliseconds)|onth)|Seconds|Hours|Da(y|te)|FullYear)|FullYear|A(ttention|llResponseHeaders)))|m(in|ove(B(y|elow)|To(Absolute)?|Above)|ergeAttributes|a(tch|rgins|x))|b(toa|ig|o(ld|rderWidths)|link|ack))\b(?=\()&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;support.function.dom.js&quot;&gt;
-			&lt;expression&gt;\b(s(ub(stringData|mit)|plitText|e(t(NamedItem|Attribute(Node)?)|lect))|has(ChildNodes|Feature)|namedItem|c(l(ick|o(se|neNode))|reate(C(omment|DATASection|aption)|T(Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(ntityReference|lement)|Attribute))|tabIndex|i(nsert(Row|Before|Cell|Data)|tem)|open|delete(Row|C(ell|aption)|T(Head|Foot)|Data)|focus|write(ln)?|a(dd|ppend(Child|Data))|re(set|place(Child|Data)|move(NamedItem|Child|Attribute(Node)?)?)|get(NamedItem|Element(sBy(Name|TagName)|ById)|Attribute(Node)?)|blur)\b(?=\()&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;support.constant.js&quot;&gt;
-			&lt;expression&gt;(?&amp;lt;=\.)(s(ystemLanguage|cr(ipts|ollbars|een(X|Y|Top|Left))|t(yle(Sheets)?|atus(Text|bar)?)|ibling(Below|Above)|ource|uffixes|e(curity(Policy)?|l(ection|f)))|h(istory|ost(name)?|as(h|Focus))|y|X(MLDocument|SLDocument)|n(ext|ame(space(s|URI)|Prop))|M(IN_VALUE|AX_VALUE)|c(haracterSet|o(n(structor|trollers)|okieEnabled|lorDepth|mp(onents|lete))|urrent|puClass|l(i(p(boardData)?|entInformation)|osed|asses)|alle(e|r)|rypto)|t(o(olbar|p)|ext(Transform|Indent|Decoration|Align)|ags)|SQRT(1_2|2)|i(n(ner(Height|Width)|put)|ds|gnoreCase)|zIndex|o(scpu|n(readystatechange|Line)|uter(Height|Width)|p(sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(i(splay|alog(Height|Top|Width|Left|Arguments)|rectories)|e(scription|fault(Status|Ch(ecked|arset)|View)))|u(ser(Profile|Language|Agent)|n(iqueID|defined)|pdateInterval)|_content|p(ixelDepth|ort|ersonalbar|kcs11|l(ugins|atform)|a(thname|dding(Right|Bottom|Top|Left)|rent(Window|Layer)?|ge(X(Offset)?|Y(Offset)?))|r(o(to(col|type)|duct(Sub)?|mpter)|e(vious|fix)))|e(n(coding|abledPlugin)|x(ternal|pando)|mbeds)|v(isibility|endor(Sub)?|Linkcolor)|URLUnencoded|P(I|OSITIVE_INFINITY)|f(ilename|o(nt(Size|Family|Weight)|rmName)|rame(s|Element)|gColor)|E|whiteSpace|l(i(stStyleType|n(eHeight|kColor))|o(ca(tion(bar)?|lName)|wsrc)|e(ngth|ft(Context)?)|a(st(M(odified|atch)|Index|Paren)|yer(s|X)|nguage))|a(pp(MinorVersion|Name|Co(deName|re)|Version)|vail(Height|Top|Width|Left)|ll|r(ity|guments)|Linkcolor|bove)|r(ight(Context)?|e(sponse(XML|Text)|adyState))|global|x|m(imeTypes|ultiline|enubar|argin(Right|Bottom|Top|Left))|L(N(10|2)|OG(10E|2E))|b(o(ttom|rder(RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(Color|Image)))\b&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;support.constant.dom.js&quot;&gt;
-			&lt;expression&gt;(?&amp;lt;=\.)(s(hape|ystemId|c(heme|ope|rolling)|ta(ndby|rt)|ize|ummary|pecified|e(ctionRowIndex|lected(Index)?)|rc)|h(space|t(tpEquiv|mlFor)|e(ight|aders)|ref(lang)?)|n(o(Resize|tation(s|Name)|Shade|Href|de(Name|Type|Value)|Wrap)|extSibling|ame)|c(h(ildNodes|Off|ecked|arset)?|ite|o(ntent|o(kie|rds)|de(Base|Type)?|l(s|Span|or)|mpact)|ell(s|Spacing|Padding)|l(ear|assName)|aption)|t(ype|Bodies|itle|Head|ext|a(rget|gName)|Foot)|i(sMap|ndex|d|m(plementation|ages))|o(ptions|wnerDocument|bject)|d(i(sabled|r)|o(c(type|umentElement)|main)|e(clare|f(er|ault(Selected|Checked|Value)))|at(eTime|a))|useMap|p(ublicId|arentNode|r(o(file|mpt)|eviousSibling))|e(n(ctype|tities)|vent|lements)|v(space|ersion|alue(Type)?|Link|Align)|URL|f(irstChild|orm(s)?|ace|rame(Border)?)|width|l(ink(s)?|o(ngDesc|wSrc)|a(stChild|ng|bel))|a(nchors|c(ce(ssKey|pt(Charset)?)|tion)|ttributes|pplets|l(t|ign)|r(chive|eas)|xis|Link|bbr)|r(ow(s|Span|Index)|ules|e(v|ferrer|l|adOnly))|m(ultiple|e(thod|dia)|a(rgin(Height|Width)|xLength))|b(o(dy|rder)|ackground|gColor))\b&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;support.constant.dom.js&quot;&gt;
-			&lt;expression&gt;\b(ELEMENT_NODE|ATTRIBUTE_NODE|TEXT_NODE|CDATA_SECTION_NODE|ENTITY_REFERENCE_NODE|ENTITY_NODE|PROCESSING_INSTRUCTION_NODE|COMMENT_NODE|DOCUMENT_NODE|DOCUMENT_TYPE_NODE|DOCUMENT_FRAGMENT_NODE|NOTATION_NODE|INDEX_SIZE_ERR|DOMSTRING_SIZE_ERR|HIERARCHY_REQUEST_ERR|WRONG_DOCUMENT_ERR|INVALID_CHARACTER_ERR|NO_DATA_ALLOWED_ERR|NO_MODIFICATION_ALLOWED_ERR|NOT_FOUND_ERR|NOT_SUPPORTED_ERR|INUSE_ATTRIBUTE_ERR)\b&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;support.function.event-handler.js&quot;&gt;
-			&lt;expression&gt;\bon(R(ow(s(inserted|delete)|e(nter|xit))|e(s(ize(start|end)?|et)|adystatechange))|Mouse(o(ut|ver)|down|up|move)|B(efore(cut|deactivate|u(nload|pdate)|p(aste|rint)|editfocus|activate)|lur)|S(croll|top|ubmit|elect(start|ionchange)?)|H(over|elp)|C(hange|ont(extmenu|rolselect)|ut|ellchange|l(ick|ose))|D(eactivate|ata(setc(hanged|omplete)|available)|r(op|ag(start|over|drop|en(ter|d)|leave)?)|blclick)|Unload|P(aste|ropertychange)|Error(update)?|Key(down|up|press)|Focus|Load|A(ctivate|fter(update|print)|bort))\b&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;keyword.operator.js&quot;&gt;
-			&lt;expression&gt;!|\$|%|&amp;amp;|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|&amp;lt;=|&gt;=|&amp;lt;&amp;lt;=|&gt;&gt;=|&gt;&gt;&gt;=|&amp;lt;&gt;|&amp;lt;|&gt;|!|&amp;amp;&amp;amp;|\|\||\?\:|\*=|/=|%=|\+=|\-=|&amp;amp;=|\^=|\b(in|instanceof|new|delete|typeof|void)\b&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;constant.language.js&quot;&gt;
-			&lt;expression&gt;\b(Infinity|NaN|Undefined)\b&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;string.regexp.js&quot;&gt;
-			&lt;starts-with&gt;
-				&lt;expression&gt;(?&amp;lt;=[=(:]|^|return)\s*(/)(?![/*+{}?])&lt;/expression&gt;
-				&lt;capture number=&quot;1&quot; name=&quot;punctuation.definition.string.begin.js&quot;/&gt;
-			&lt;/starts-with&gt;
-			&lt;ends-with&gt;
-				&lt;expression&gt;(/)[igm]*&lt;/expression&gt;
-				&lt;capture number=&quot;1&quot; name=&quot;punctuation.definition.string.end.js&quot;/&gt;
-			&lt;/ends-with&gt;
-			&lt;subzones&gt;
-				&lt;zone name=&quot;constant.character.escape.js&quot;&gt;
-					&lt;expression&gt;\\.&lt;/expression&gt;
-				&lt;/zone&gt;
-			&lt;/subzones&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;punctuation.terminator.statement.js&quot;&gt;
-			&lt;expression&gt;\;&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;meta.delimiter.object.comma.js&quot;&gt;
-			&lt;expression&gt;,[ |\t]*&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;meta.delimiter.method.period.js&quot;&gt;
-			&lt;expression&gt;\.&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;meta.brace.curly.open.js&quot;&gt;
-			&lt;expression&gt;\{&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;meta.brace.curly.close.js&quot;&gt;
-			&lt;expression&gt;\}&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;meta.brace.round.js&quot;&gt;
-			&lt;expression&gt;\(|\)&lt;/expression&gt;
-		&lt;/zone&gt;
-		&lt;zone name=&quot;meta.brace.square.js&quot;&gt;
-			&lt;expression&gt;\[|\]&lt;/expression&gt;
-		&lt;/zone&gt;
-	&lt;/zones&gt;
+    &lt;zones&gt;
+        &lt;include collection=&quot;comments&quot;/&gt;
+        &lt;include collection=&quot;support&quot;/&gt;
+        &lt;include collection=&quot;core&quot;/&gt;
+        &lt;include collection=&quot;special&quot;/&gt;
+        &lt;include collection=&quot;sugar&quot;/&gt;
+    &lt;/zones&gt;
+    &lt;library&gt;
+        &lt;collection name=&quot;comments&quot;&gt;
+            &lt;include collection=&quot;special-comments-conditional-compilation&quot;/&gt;
+            &lt;zone name=&quot;comment.block.documentation.js&quot;&gt;
+                &lt;starts-with&gt;
+                    &lt;expression&gt;/\*\*&lt;/expression&gt;
+                    &lt;capture number=&quot;0&quot; name=&quot;punctuation.definition.comment.js&quot;/&gt;
+                &lt;/starts-with&gt;
+                &lt;ends-with&gt;
+                    &lt;expression&gt;\*/&lt;/expression&gt;
+                    &lt;capture number=&quot;0&quot; name=&quot;punctuation.definition.comment.js&quot;/&gt;
+                &lt;/ends-with&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;comment.block.js&quot;&gt;
+                &lt;starts-with&gt;
+                    &lt;expression&gt;/\*&lt;/expression&gt;
+                    &lt;capture number=&quot;0&quot; name=&quot;punctuation.definition.comment.js&quot;/&gt;
+                &lt;/starts-with&gt;
+                &lt;ends-with&gt;
+                    &lt;expression&gt;\*/&lt;/expression&gt;
+                    &lt;capture number=&quot;0&quot; name=&quot;punctuation.definition.comment.js&quot;/&gt;
+                &lt;/ends-with&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;comment.line.double-slash.js&quot;&gt;
+                &lt;expression&gt;(//).*$\n?&lt;/expression&gt;
+                &lt;capture number=&quot;1&quot; name=&quot;punctuation.definition.comment.js&quot;/&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;comment.block.html.js&quot;&gt;
+                &lt;expression&gt;(&amp;lt;!--|--&gt;)&lt;/expression&gt;
+                &lt;capture number=&quot;0&quot; name=&quot;punctuation.definition.comment.html.js&quot;/&gt;
+                &lt;capture number=&quot;2&quot; name=&quot;punctuation.definition.comment.html.js&quot;/&gt;
+            &lt;/zone&gt;
+        &lt;/collection&gt;
+        &lt;collection name=&quot;core&quot;&gt;
+            &lt;include collection=&quot;literal-number&quot;/&gt;
+            &lt;include collection=&quot;literal-string&quot;/&gt;
+            &lt;include collection=&quot;literal-regex&quot;/&gt;
+            &lt;include collection=&quot;literal-function-call&quot;/&gt;
+            &lt;include collection=&quot;literal-function-constructor&quot;/&gt;
+            &lt;include collection=&quot;literal-keywords&quot;/&gt;
+            &lt;include collection=&quot;literal-labels&quot;/&gt;
+            &lt;include collection=&quot;literal-variable&quot;/&gt;
+            &lt;include collection=&quot;literal-punctuation&quot;/&gt;
+        &lt;/collection&gt;
+        &lt;collection name=&quot;literal-function-call&quot;&gt;
+            &lt;zone name=&quot;meta.function-call.static.with-arguments.js&quot;&gt;
+                &lt;starts-with&gt;
+                    &lt;expression&gt;(?=[_$a-zA-Z][_$\w]*\s*\()&lt;/expression&gt;
+                &lt;/starts-with&gt;
+                &lt;ends-with&gt;
+                    &lt;expression&gt;(?=\()&lt;/expression&gt;
+                &lt;/ends-with&gt;
+                &lt;subzones&gt;
+                    &lt;zone name=&quot;entity.name.function.js&quot;&gt;
+                        &lt;expression&gt;[_$a-zA-Z][_$\w]*&lt;/expression&gt;
+                    &lt;/zone&gt;
+                &lt;/subzones&gt;
+            &lt;/zone&gt;
+        &lt;/collection&gt;
+        &lt;collection name=&quot;literal-function-constructor&quot;&gt;
+            &lt;zone name=&quot;meta.function.js&quot;&gt;
+                &lt;expression&gt;\b(function)(?:\s+([a-zA-Z_$]\w*))?\s*(\()(.*?)(\))&lt;/expression&gt;
+                &lt;capture number=&quot;1&quot; name=&quot;storage.type.function.js&quot;/&gt;
+                &lt;capture number=&quot;2&quot; name=&quot;entity.name.function.js&quot;/&gt;
+                &lt;capture number=&quot;3&quot; name=&quot;punctuation.definition.parameters.begin.js&quot;/&gt;
+                &lt;capture number=&quot;4&quot; name=&quot;variable.parameter.function.js&quot;/&gt;
+                &lt;capture number=&quot;5&quot; name=&quot;punctuation.definition.parameters.end.js&quot;/&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;meta.class.js&quot;&gt;
+                &lt;expression&gt;([a-zA-Z_?.$][\w?.$]*)\.(prototype)\s*=\s*&lt;/expression&gt;
+                &lt;capture number=&quot;1&quot; name=&quot;support.class.js&quot;/&gt;
+                &lt;capture number=&quot;2&quot; name=&quot;support.constant.js&quot;/&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;meta.function.prototype.js&quot;&gt;
+                &lt;expression&gt;([a-zA-Z_?.$][\w?.$]*)\.(prototype)\.([a-zA-Z_?.$][\w?.$]*)\s*=\s*(function)?\s*(\()(.*?)(\))&lt;/expression&gt;
+                &lt;capture number=&quot;1&quot; name=&quot;support.class.js&quot;/&gt;
+                &lt;capture number=&quot;2&quot; name=&quot;support.constant.js&quot;/&gt;
+                &lt;capture number=&quot;3&quot; name=&quot;entity.name.function.js&quot;/&gt;
+                &lt;capture number=&quot;4&quot; name=&quot;storage.type.function.js&quot;/&gt;
+                &lt;capture number=&quot;5&quot; name=&quot;punctuation.definition.parameters.begin.js&quot;/&gt;
+                &lt;capture number=&quot;6&quot; name=&quot;variable.parameter.function.js&quot;/&gt;
+                &lt;capture number=&quot;7&quot; name=&quot;punctuation.definition.parameters.end.js&quot;/&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;meta.function.js&quot;&gt;
+                &lt;expression&gt;([a-zA-Z_?.$][\w?.$]*)\.(prototype)\.([a-zA-Z_?.$][\w?.$]*)\s*=\s*&lt;/expression&gt;
+                &lt;capture number=&quot;1&quot; name=&quot;support.class.js&quot;/&gt;
+                &lt;capture number=&quot;2&quot; name=&quot;support.constant.js&quot;/&gt;
+                &lt;capture number=&quot;3&quot; name=&quot;entity.name.function.js&quot;/&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;meta.function.js&quot;&gt;
+                &lt;expression&gt;([a-zA-Z_?.$][\w?.$]*)\.([a-zA-Z_?.$][\w?.$]*)\s*=\s*(function)\s*(\()(.*?)(\))&lt;/expression&gt;
+                &lt;capture number=&quot;1&quot; name=&quot;support.class.js&quot;/&gt;
+                &lt;capture number=&quot;2&quot; name=&quot;entity.name.function.js&quot;/&gt;
+                &lt;capture number=&quot;3&quot; name=&quot;storage.type.function.js&quot;/&gt;
+                &lt;capture number=&quot;4&quot; name=&quot;punctuation.definition.parameters.begin.js&quot;/&gt;
+                &lt;capture number=&quot;5&quot; name=&quot;variable.parameter.function.js&quot;/&gt;
+                &lt;capture number=&quot;6&quot; name=&quot;punctuation.definition.parameters.end.js&quot;/&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;meta.function.json.js&quot;&gt;
+                &lt;expression&gt;\b([a-zA-Z_?.$][\w?.$]*)\s*(:)\s*\b(function)?\s*(\()(.*?)(\))&lt;/expression&gt;
+                &lt;capture number=&quot;1&quot; name=&quot;entity.name.function.js&quot;/&gt;
+                &lt;capture number=&quot;2&quot; name=&quot;punctuation.separator.key-value.js&quot;/&gt;
+                &lt;capture number=&quot;3&quot; name=&quot;storage.type.function.js&quot;/&gt;
+                &lt;capture number=&quot;4&quot; name=&quot;punctuation.definition.parameters.begin.js&quot;/&gt;
+                &lt;capture number=&quot;5&quot; name=&quot;variable.parameter.function.js&quot;/&gt;
+                &lt;capture number=&quot;6&quot; name=&quot;punctuation.definition.parameters.end.js&quot;/&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;meta.function.json.js&quot;&gt;
+                &lt;expression&gt;(?:((')(.*?)('))|((&quot;)(.*?)(&quot;)))\s*(:)\s*\b(function)?\s*(\()(.*?)(\))&lt;/expression&gt;
+                &lt;capture number=&quot;1&quot; name=&quot;string.quoted.single.js&quot;/&gt;
+                &lt;capture number=&quot;10&quot; name=&quot;storage.type.function.js&quot;/&gt;
+                &lt;capture number=&quot;11&quot; name=&quot;punctuation.definition.parameters.begin.js&quot;/&gt;
+                &lt;capture number=&quot;12&quot; name=&quot;variable.parameter.function.js&quot;/&gt;
+                &lt;capture number=&quot;13&quot; name=&quot;punctuation.definition.parameters.end.js&quot;/&gt;
+                &lt;capture number=&quot;2&quot; name=&quot;punctuation.definition.string.begin.js&quot;/&gt;
+                &lt;capture number=&quot;3&quot; name=&quot;entity.name.function.js&quot;/&gt;
+                &lt;capture number=&quot;4&quot; name=&quot;punctuation.definition.string.end.js&quot;/&gt;
+                &lt;capture number=&quot;5&quot; name=&quot;string.quoted.double.js&quot;/&gt;
+                &lt;capture number=&quot;6&quot; name=&quot;punctuation.definition.string.begin.js&quot;/&gt;
+                &lt;capture number=&quot;7&quot; name=&quot;entity.name.function.js&quot;/&gt;
+                &lt;capture number=&quot;8&quot; name=&quot;punctuation.definition.string.end.js&quot;/&gt;
+                &lt;capture number=&quot;9&quot; name=&quot;punctuation.separator.key-value.js&quot;/&gt;
+            &lt;/zone&gt;
+        &lt;/collection&gt;
+        &lt;collection name=&quot;literal-keywords&quot;&gt;
+            &lt;zone name=&quot;meta.class.instance.constructor&quot;&gt;
+                &lt;expression&gt;(new)\s+(\w+(?:\.\w*)?)&lt;/expression&gt;
+                &lt;capture number=&quot;1&quot; name=&quot;keyword.operator.new.js&quot;/&gt;
+                &lt;capture number=&quot;2&quot; name=&quot;entity.name.type.class.js&quot;/&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;storage.type.js&quot;&gt;
+                &lt;expression&gt;\b(boolean|byte|char|class|double|enum|float|function|int|interface|long|short|var|void)\b&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;storage.modifier.js&quot;&gt;
+                &lt;expression&gt;\b(const|export|extends|final|implements|native|private|protected|public|static|synchronized|throws|transient|volatile)\b&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;keyword.control.js&quot;&gt;
+                &lt;expression&gt;\b(break|case|catch|continue|default|do|else|finally|for|goto|if|import|package|return|switch|throw|try|while)\b&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;keyword.operator.js&quot;&gt;
+                &lt;expression&gt;\b(delete|in(stanceof)?|new|typeof|void|with)\b&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;constant.language.boolean.true.js&quot;&gt;
+                &lt;expression&gt;\btrue\b&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;constant.language.boolean.false.js&quot;&gt;
+                &lt;expression&gt;\bfalse\b&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;constant.language.null.js&quot;&gt;
+                &lt;expression&gt;\bnull\b&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;constant.language.null.js&quot;&gt;
+                &lt;expression&gt;\bundefined\b&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;constant.language.null.js&quot;&gt;
+                &lt;expression&gt;\bNaN\b&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;variable.language.js&quot;&gt;
+                &lt;expression&gt;(?&amp;lt;!\.)\b(super|this|arguments)\b&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;variable.language.js&quot;&gt;
+                &lt;expression&gt;(?&amp;lt;=\.)\b(prototype|constructor)\b&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;keyword.operator.logical.js&quot;&gt;
+                &lt;expression&gt;(?x)
+					!(?!=)| # logical-not     right-to-left   right
+					&amp;amp;&amp;amp;    | # logical-and     left-to-right   both
+					\|\|   # logical-or      left-to-right   both
+					&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;keyword.operator.assignment.augmented.js&quot;&gt;
+                &lt;expression&gt;(?x)
+					  %= | # assignment      right-to-left   both
+					  &amp;amp;= | # assignment      right-to-left   both
+					 \*= | # assignment      right-to-left   both
+					 \+= | # assignment      right-to-left   both
+					  -= | # assignment      right-to-left   both
+					  /= | # assignment      right-to-left   both
+					 \^= | # assignment      right-to-left   both
+					 \|= | # assignment      right-to-left   both
+					 &amp;lt;&amp;lt;= | # assignment      right-to-left   both
+					 &gt;&gt;= | # assignment      right-to-left   both
+					&gt;&gt;&gt;=   # assignment      right-to-left   both
+					&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;keyword.operator.bitwise.js&quot;&gt;
+                &lt;expression&gt;(?x)
+					~    | # bitwise-not     right-to-left   right
+					&amp;lt;&amp;lt;   | # bitwise-shift   left-to-right   both
+					&gt;&gt;&gt;  | # bitwise-shift   left-to-right   both
+					&gt;&gt;   | # bitwise-shift   left-to-right   both
+					&amp;amp;    | # bitwise-and     left-to-right   both
+					\^   | # bitwise-xor     left-to-right   both
+					\|     # bitwise-or      left-to-right   both
+					&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;keyword.operator.relational.js&quot;&gt;
+                &lt;expression&gt;(?x)
+					&amp;lt;    | # relational      left-to-right   both
+					&gt;    | # relational      left-to-right   both
+					&amp;lt;=   | # relational      left-to-right   both
+					&gt;=     # relational      left-to-right   both
+					&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;keyword.operator.comparison.js&quot;&gt;
+                &lt;expression&gt;(?x)
+					===  | # equality        left-to-right   both
+					!==  | # equality        left-to-right   both
+					 ==  | # equality        left-to-right   both
+					!=     # equality        left-to-right   both
+					&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;keyword.operator.assignment.js&quot;&gt;
+                &lt;expression&gt;(?x)
+					=     # assignment      right-to-left   both
+					&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;keyword.operator.arithmetic.js&quot;&gt;
+                &lt;expression&gt;(?x)
+					--   | # decrement       n/a             right-or-left
+					\+\+ | # increment       n/a             right-or-left
+					/    | # division        left-to-right   both
+					%    | # modulus         left-to-right   both
+					\*   | # multiplication  left-to-right   both
+					\+   | # addition        left-to-right   both
+					-      # subtraction     left-to-right   both
+					&lt;/expression&gt;
+            &lt;/zone&gt;
+        &lt;/collection&gt;
+        &lt;collection name=&quot;literal-labels&quot;&gt;
+            &lt;zone&gt;
+                &lt;expression&gt;(?&amp;lt;=['&quot;])(\s*)(:)&lt;/expression&gt;
+                &lt;capture number=&quot;2&quot; name=&quot;punctuation.separator.key-value.js&quot;/&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;constant.other.object.key.js&quot;&gt;
+                &lt;expression&gt;(?&amp;lt;!\?|\? |case )([_$a-zA-Z][_$\w]*)\s*(:)&lt;/expression&gt;
+                &lt;capture number=&quot;1&quot; name=&quot;string.unquoted.label.js&quot;/&gt;
+                &lt;capture number=&quot;2&quot; name=&quot;punctuation.separator.key-value.js&quot;/&gt;
+            &lt;/zone&gt;
+        &lt;/collection&gt;
+        &lt;collection name=&quot;literal-number&quot;&gt;
+            &lt;zone name=&quot;invalid.illegal.numeric.hex.js&quot;&gt;
+                &lt;expression&gt;(?i)(?:\B[-+]|\b)0x[0-9a-f]*\.(\B|\b[0-9]+)&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;invalid.illegal.numeric.octal.js&quot;&gt;
+                &lt;expression&gt;(?:\B[-+]|\b)0[0-9]+\.(\B|\b[0-9]+)&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;constant.numeric.js&quot;&gt;
+                &lt;expression&gt;(?xi)(?:\B[-+])?(?:
+					 \b0x[0-9a-f]* # HEX
+					|(          \B\.[0-9]+   # EG:    .999
+					  | \b[0-9]+ (\.[0-9]*)? # EG: 999.999 or 999. or 999 
+					 )(e[-+]?[0-9]+)?        # EG: e+123 or E-123
+					)&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;constant.language.js&quot;&gt;
+                &lt;expression&gt;(?:\B[-+]|\b)(Infinity)\b&lt;/expression&gt;
+            &lt;/zone&gt;
+        &lt;/collection&gt;
+        &lt;collection name=&quot;literal-punctuation&quot;&gt;
+            &lt;zone name=&quot;punctuation.terminator.statement.js&quot;&gt;
+                &lt;expression&gt;\;&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;meta.delimiter.object.comma.js&quot;&gt;
+                &lt;expression&gt;,&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;meta.delimiter.method.period.js&quot;&gt;
+                &lt;expression&gt;\.&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;meta.brace.curly.open.js&quot;&gt;
+                &lt;expression&gt;\{&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;meta.brace.curly.close.js&quot;&gt;
+                &lt;expression&gt;\}&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;meta.brace.round.js&quot;&gt;
+                &lt;expression&gt;\(|\)&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;meta.brace.square.js&quot;&gt;
+                &lt;expression&gt;\[|\]&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;meta.complete.method&quot;&gt;
+                &lt;expression&gt;(?&amp;lt;=\.)\s&lt;/expression&gt;
+            &lt;/zone&gt;
+        &lt;/collection&gt;
+        &lt;collection name=&quot;literal-regex&quot;&gt;
+            &lt;zone&gt;
+                &lt;starts-with&gt;
+                    &lt;expression&gt;(?x)
+						(?&amp;lt;= [\[,=(:] | ^ | &amp;amp;&amp;amp; | return )
+						\s*((/)) (?! [/*+{}?] | $ )&lt;/expression&gt;
+                    &lt;capture number=&quot;1&quot; name=&quot;string.regexp.js&quot;/&gt;
+                    &lt;capture number=&quot;2&quot; name=&quot;punctuation.definition.string.begin.js&quot;/&gt;
+                &lt;/starts-with&gt;
+                &lt;ends-with&gt;
+                    &lt;expression&gt;((/([igm]*)))|(?=&amp;lt;/\s*script\s*&gt;\s*\n)|(?&amp;lt;=[^\\]\n)&lt;/expression&gt;
+                    &lt;capture number=&quot;1&quot; name=&quot;string.regexp.js&quot;/&gt;
+                    &lt;capture number=&quot;2&quot; name=&quot;punctuation.definition.string.end.js&quot;/&gt;
+                    &lt;capture number=&quot;3&quot; name=&quot;keyword.other.js&quot;/&gt;
+                &lt;/ends-with&gt;
+                &lt;subzones name=&quot;string.regexp.js&quot;&gt;
+                    &lt;zone name=&quot;constant.character.escape.newline.js&quot;&gt;
+                        &lt;expression&gt;\\\n&lt;/expression&gt;
+                    &lt;/zone&gt;
+                    &lt;zone name=&quot;invalid.illegal.newline.js&quot;&gt;
+                        &lt;expression&gt;\n&lt;/expression&gt;
+                    &lt;/zone&gt;
+                    &lt;zone name=&quot;constant.character.escape.js&quot;&gt;
+                        &lt;expression&gt;\\.&lt;/expression&gt;
+                    &lt;/zone&gt;
+                &lt;/subzones&gt;
+            &lt;/zone&gt;
+        &lt;/collection&gt;
+        &lt;collection name=&quot;literal-string&quot;&gt;
+            &lt;zone name=&quot;string.quoted.single.js&quot;&gt;
+                &lt;starts-with&gt;
+                    &lt;expression&gt;'&lt;/expression&gt;
+                    &lt;capture number=&quot;0&quot; name=&quot;punctuation.definition.string.begin.js&quot;/&gt;
+                &lt;/starts-with&gt;
+                &lt;ends-with&gt;
+                    &lt;expression&gt;(?i)'|(?=&amp;lt;/\s*script\s*&gt;\s*\n)|(?&amp;lt;=[^\\]\n)&lt;/expression&gt;
+                    &lt;capture number=&quot;0&quot; name=&quot;punctuation.definition.string.end.js&quot;/&gt;
+                &lt;/ends-with&gt;
+                &lt;subzones&gt;
+                    &lt;include collection=&quot;string-single-innards&quot;/&gt;
+                &lt;/subzones&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;string.quoted.double.js&quot;&gt;
+                &lt;starts-with&gt;
+                    &lt;expression&gt;&quot;&lt;/expression&gt;
+                    &lt;capture number=&quot;0&quot; name=&quot;punctuation.definition.string.begin.js&quot;/&gt;
+                &lt;/starts-with&gt;
+                &lt;ends-with&gt;
+                    &lt;expression&gt;(?i)&quot;|(?=&amp;lt;/\s*script\s*&gt;\s*\n)|(?&amp;lt;=[^\\]\n)&lt;/expression&gt;
+                    &lt;capture number=&quot;0&quot; name=&quot;punctuation.definition.string.end.js&quot;/&gt;
+                &lt;/ends-with&gt;
+                &lt;subzones&gt;
+                    &lt;include collection=&quot;string-double-innards&quot;/&gt;
+                &lt;/subzones&gt;
+            &lt;/zone&gt;
+        &lt;/collection&gt;
+        &lt;collection name=&quot;literal-variable&quot;&gt;
+            &lt;zone name=&quot;variable.other.object.js&quot;&gt;
+                &lt;expression&gt;(?&amp;lt;!\.)[_$a-zA-Z][_$\w]*\s*(?=[\[\.])&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;meta.property.js&quot;&gt;
+                &lt;expression&gt;([_$a-zA-Z][_$\w]*)\s*(?=[\[\.])&lt;/expression&gt;
+                &lt;capture number=&quot;0&quot; name=&quot;meta.property-name.js&quot;/&gt;
+                &lt;capture number=&quot;1&quot; name=&quot;variable.other.object.js&quot;/&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;meta.property.js&quot;&gt;
+                &lt;expression&gt;(?&amp;lt;=[\.\]])\s*[_$a-zA-Z][_$\w]*&lt;/expression&gt;
+                &lt;capture number=&quot;0&quot; name=&quot;variable.other.property.js&quot;/&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;variable.other.readwrite.js&quot;&gt;
+                &lt;expression&gt;[_$a-zA-Z][_$\w]*&lt;/expression&gt;
+            &lt;/zone&gt;
+        &lt;/collection&gt;
+        &lt;collection name=&quot;special&quot;&gt;
+            &lt;zone name=&quot;entity.name.type.object.js.firebug&quot;&gt;
+                &lt;expression&gt;\b(console)\b&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;support.function.js.firebug&quot;&gt;
+                &lt;expression&gt;\.(warn|info|log|error|time|timeEnd|assert)\b&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;keyword.other.js&quot;&gt;
+                &lt;expression&gt;\b(debugger)\b&lt;/expression&gt;
+            &lt;/zone&gt;
+        &lt;/collection&gt;
+        &lt;collection name=&quot;special-comments-conditional-compilation&quot;&gt;
+            &lt;zone name=&quot;comment.block.conditional.js&quot;&gt;
+                &lt;starts-with&gt;
+                    &lt;expression&gt;/\*(?=@)&lt;/expression&gt;
+                    &lt;capture number=&quot;0&quot; name=&quot;punctuation.definition.comment.js&quot;/&gt;
+                &lt;/starts-with&gt;
+                &lt;ends-with&gt;
+                    &lt;expression&gt;\*/&lt;/expression&gt;
+                    &lt;capture number=&quot;1&quot; name=&quot;keyword.control.conditional.js&quot;/&gt;
+                    &lt;capture number=&quot;2&quot; name=&quot;punctuation.definition.keyword.js&quot;/&gt;
+                &lt;/ends-with&gt;
+                &lt;subzones&gt;
+                    &lt;include syntax=&quot;$base&quot;/&gt;
+                &lt;/subzones&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;keyword.control.conditional.js&quot;&gt;
+                &lt;expression&gt;(@)(if|elif|else|end)&lt;/expression&gt;
+                &lt;capture number=&quot;1&quot; name=&quot;punctuation.definition.keyword.js&quot;/&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;keyword.operator.conditional.js&quot;&gt;
+                &lt;expression&gt;(@)(cc_on|set)&lt;/expression&gt;
+                &lt;capture number=&quot;1&quot; name=&quot;punctuation.definition.keyword.js&quot;/&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;variable.other.conditional.js&quot;&gt;
+                &lt;expression&gt;(@)(_win32|_win16|_mac|_alpha|_x86|_mc680x0|_PowerPC|_jscript_build|_jscript_version|_jscript|_debug|_fast|[a-zA-Z]\w+)&lt;/expression&gt;
+                &lt;capture number=&quot;1&quot; name=&quot;punctuation.definition.variable.js&quot;/&gt;
+            &lt;/zone&gt;
+        &lt;/collection&gt;
+        &lt;collection name=&quot;string-double-innards&quot;&gt;
+            &lt;zone name=&quot;constant.character.escape.js&quot;&gt;
+                &lt;expression&gt;\\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;constant.character.escape.newline.js&quot;&gt;
+                &lt;expression&gt;\\\n&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;invalid.illegal.newline.js&quot;&gt;
+                &lt;expression&gt;\n&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;invalid.deprecated.inconsistent.js&quot;&gt;
+                &lt;expression&gt;(?i)&amp;lt;/\s*script\s*&gt;&lt;/expression&gt;
+            &lt;/zone&gt;
+        &lt;/collection&gt;
+        &lt;collection name=&quot;string-single-innards&quot;&gt;
+            &lt;zone name=&quot;constant.character.escape.js&quot;&gt;
+                &lt;expression&gt;\\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;constant.character.escape.newline.js&quot;&gt;
+                &lt;expression&gt;\\\n&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;invalid.illegal.newline.js&quot;&gt;
+                &lt;expression&gt;\n&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;invalid.deprecated.inconsistent.js&quot;&gt;
+                &lt;expression&gt;(?i)&amp;lt;/\s*script\s*&gt;&lt;/expression&gt;
+            &lt;/zone&gt;
+        &lt;/collection&gt;
+        &lt;collection name=&quot;sugar&quot;&gt;
+            &lt;zone name=&quot;meta.leading-tabs&quot;&gt;
+                &lt;starts-with&gt;
+                    &lt;expression&gt;^(?=(\t|  ))&lt;/expression&gt;
+                &lt;/starts-with&gt;
+                &lt;ends-with&gt;
+                    &lt;expression&gt;(?=[^\t\s])&lt;/expression&gt;
+                &lt;/ends-with&gt;
+                &lt;subzones&gt;
+                    &lt;zone&gt;
+                        &lt;expression&gt;(    )(    )?(    )?(    )?(    )?(    )?(    )?(    )?(    )?(    )?(    )?&lt;/expression&gt;
+                        &lt;capture number=&quot;1&quot; name=&quot;meta.odd-tab.group1.spaces&quot;/&gt;
+                        &lt;capture number=&quot;10&quot; name=&quot;meta.even-tab.group10.spaces&quot;/&gt;
+                        &lt;capture number=&quot;11&quot; name=&quot;meta.odd-tab.group11.spaces&quot;/&gt;
+                        &lt;capture number=&quot;2&quot; name=&quot;meta.even-tab.group2.spaces&quot;/&gt;
+                        &lt;capture number=&quot;3&quot; name=&quot;meta.odd-tab.group3.spaces&quot;/&gt;
+                        &lt;capture number=&quot;4&quot; name=&quot;meta.even-tab.group4.spaces&quot;/&gt;
+                        &lt;capture number=&quot;5&quot; name=&quot;meta.odd-tab.group5.spaces&quot;/&gt;
+                        &lt;capture number=&quot;6&quot; name=&quot;meta.even-tab.group6.spaces&quot;/&gt;
+                        &lt;capture number=&quot;7&quot; name=&quot;meta.odd-tab.group7.spaces&quot;/&gt;
+                        &lt;capture number=&quot;8&quot; name=&quot;meta.even-tab.group8.spaces&quot;/&gt;
+                        &lt;capture number=&quot;9&quot; name=&quot;meta.odd-tab.group9.spaces&quot;/&gt;
+                    &lt;/zone&gt;
+                    &lt;zone&gt;
+                        &lt;expression&gt;(\t)(\t)?(\t)?(\t)?(\t)?(\t)?(\t)?(\t)?(\t)?(\t)?(\t)?&lt;/expression&gt;
+                        &lt;capture number=&quot;1&quot; name=&quot;meta.odd-tab.group1.tab&quot;/&gt;
+                        &lt;capture number=&quot;10&quot; name=&quot;meta.even-tab.group10.tab&quot;/&gt;
+                        &lt;capture number=&quot;11&quot; name=&quot;meta.odd-tab.group11.tab&quot;/&gt;
+                        &lt;capture number=&quot;2&quot; name=&quot;meta.even-tab.group2.tab&quot;/&gt;
+                        &lt;capture number=&quot;3&quot; name=&quot;meta.odd-tab.group3.tab&quot;/&gt;
+                        &lt;capture number=&quot;4&quot; name=&quot;meta.even-tab.group4.tab&quot;/&gt;
+                        &lt;capture number=&quot;5&quot; name=&quot;meta.odd-tab.group5.tab&quot;/&gt;
+                        &lt;capture number=&quot;6&quot; name=&quot;meta.even-tab.group6.tab&quot;/&gt;
+                        &lt;capture number=&quot;7&quot; name=&quot;meta.odd-tab.group7.tab&quot;/&gt;
+                        &lt;capture number=&quot;8&quot; name=&quot;meta.even-tab.group8.tab&quot;/&gt;
+                        &lt;capture number=&quot;9&quot; name=&quot;meta.odd-tab.group9.tab&quot;/&gt;
+                    &lt;/zone&gt;
+                &lt;/subzones&gt;
+            &lt;/zone&gt;
+        &lt;/collection&gt;
+        &lt;collection name=&quot;support&quot;&gt;
+            &lt;zone name=&quot;support.class.js&quot;&gt;
+                &lt;expression&gt;\b(Anchor|Applet|Area|Array|Boolean|Button|Checkbox|Date|document|event|FileUpload|Form|Frame|Function|Hidden|History|Image|JavaArray|JavaClass|JavaObject|JavaPackage|java|Layer|Link|Location|Math|MimeType|Number|navigator|netscape|Object|Option|Packages|Password|Plugin|Radio|RegExp|Reset|Select|String|Style|Submit|screen|sun|Text|Textarea|window|XMLHttpRequest)\b&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;support.function.js&quot;&gt;
+                &lt;expression&gt;\b(s(h(ift|ow(Mod(elessDialog|alDialog)|Help))|croll(X|By(Pages|Lines)?|Y|To)?|t(op|rike)|i(n|zeToContent|debar|gnText)|ort|u(p|b(str(ing)?)?)|pli(ce|t)|e(nd|t(Re(sizable|questHeader)|M(i(nutes|lliseconds)|onth)|Seconds|Ho(tKeys|urs)|Year|Cursor|Time(out)?|Interval|ZOptions|Date|UTC(M(i(nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(ome|andleEvent)|navigate|c(har(CodeAt|At)|o(s|n(cat|textual|firm)|mpile)|eil|lear(Timeout|Interval)?|a(ptureEvents|ll)|reate(StyleSheet|Popup|EventObject))|t(o(GMTString|S(tring|ource)|U(TCString|pperCase)|Lo(caleString|werCase))|est|a(n|int(Enabled)?))|i(s(NaN|Finite)|ndexOf|talics)|d(isableExternalCapture|ump|etachEvent)|u(n(shift|taint|escape|watch)|pdateCommands)|j(oin|avaEnabled)|p(o(p|w)|ush|lugins.refresh|a(ddings|rse(Int|Float)?)|r(int|ompt|eference))|e(scape|nableExternalCapture|val|lementFromPoint|x(p|ec(Script|Command)?))|valueOf|UTC|queryCommand(State|Indeterm|Enabled|Value)|f(i(nd|le(ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(nt(size|color)|rward)|loor|romCharCode)|watch|l(ink|o(ad|g)|astIndexOf)|a(sin|nchor|cos|t(tachEvent|ob|an(2)?)|pply|lert|b(s|ort))|r(ou(nd|teEvents)|e(size(By|To)|calc|turnValue|place|verse|l(oad|ease(Capture|Events)))|andom)|g(o|et(ResponseHeader|M(i(nutes|lliseconds)|onth)|Se(conds|lection)|Hours|Year|Time(zoneOffset)?|Da(y|te)|UTC(M(i(nutes|lliseconds)|onth)|Seconds|Hours|Da(y|te)|FullYear)|FullYear|A(ttention|llResponseHeaders)))|m(in|ove(B(y|elow)|To(Absolute)?|Above)|ergeAttributes|a(tch|rgins|x))|b(toa|ig|o(ld|rderWidths)|link|ack))\b(?=\()&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;support.function.dom.js&quot;&gt;
+                &lt;expression&gt;\b(s(ub(stringData|mit)|plitText|e(t(NamedItem|Attribute(Node)?)|lect))|has(ChildNodes|Feature)|namedItem|c(l(ick|o(se|neNode))|reate(C(omment|DATASection|aption)|T(Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(ntityReference|lement)|Attribute))|tabIndex|i(nsert(Row|Before|Cell|Data)|tem)|open|delete(Row|C(ell|aption)|T(Head|Foot)|Data)|focus|write(ln)?|a(dd|ppend(Child|Data))|re(set|place(Child|Data)|move(NamedItem|Child|Attribute(Node)?)?)|get(NamedItem|Element(sBy(Name|TagName)|ById)|Attribute(Node)?)|blur)\b(?=\()&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;support.variable.property.js&quot;&gt;
+                &lt;expression&gt;(?&amp;lt;=\.)(s(ystemLanguage|cr(ipts|ollbars|een(X|Y|Top|Left))|t(yle(Sheets)?|atus(Text|bar)?)|ibling(Below|Above)|ource|uffixes|e(curity(Policy)?|l(ection|f)))|h(istory|ost(name)?|as(h|Focus))|y|n(ext|ame(space(s|URI)|Prop))|c(haracterSet|o(ntrollers|okieEnabled|lorDepth|mp(onents|lete))|urrent|puClass|l(i(p(boardData)?|entInformation)|osed|asses)|alle(e|r)|rypto)|X(MLDocument|SLDocument)|M(IN_VALUE|AX_VALUE)|t(o(olbar|p)|ext(Transform|Indent|Decoration|Align)|ags)|i(n(ner(Height|Width)|put)|ds|gnoreCase)|SQRT(1_2|2)|zIndex|o(scpu|n(readystatechange|Line)|uter(Height|Width)|p(sProfile|ener)|ffscreenBuffering)|d(i(splay|alog(Height|Top|Width|Left|Arguments)|rectories)|e(scription|fault(Status|Ch(ecked|arset)|View)))|NEGATIVE_INFINITY|u(ser(Profile|Language|Agent)|niqueID|pdateInterval)|_content|p(ixelDepth|ort|ersonalbar|kcs11|l(ugins|atform)|a(thname|dding(Right|Bottom|Top|Left)|rent(Window|Layer)?|ge(X(Offset)?|Y(Offset)?))|r(o(tocol|duct(Sub)?|mpter)|e(vious|fix)))|e(n(coding|abledPlugin)|x(ternal|pando)|mbeds)|v(isibility|endor(Sub)?|Linkcolor)|URLUnencoded|f(ilename|o(nt(Size|Family|Weight)|rmName)|rame(s|Element)|gColor)|P(I|OSITIVE_INFINITY)|E|whiteSpace|l(i(stStyleType|n(eHeight|kColor))|o(ca(tion(bar)?|lName)|wsrc)|e(ngth|ft(Context)?)|a(st(M(odified|atch)|Index|Paren)|yer(s|X)|nguage))|a(pp(MinorVersion|Name|Co(deName|re)|Version)|vail(Height|Top|Width|Left)|ll|rity|bove|Linkcolor)|r(ight(Context)?|e(sponse(XML|Text)|adyState))|global|x|m(imeTypes|ultiline|enubar|argin(Right|Bottom|Top|Left))|b(o(ttom|rder(RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(Color|Image))|L(N(10|2)|OG(10E|2E)))\b&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;support.constant.dom.js&quot;&gt;
+                &lt;expression&gt;(?&amp;lt;=\.)(s(hape|ystemId|c(heme|ope|rolling)|ta(ndby|rt)|ize|ummary|pecified|e(ctionRowIndex|lected(Index)?)|rc)|h(space|t(tpEquiv|mlFor)|e(ight|aders)|ref(lang)?)|n(o(Resize|tation(s|Name)|Shade|Href|de(Name|Type|Value)|Wrap)|extSibling|ame)|c(h(ildNodes|Off|ecked|arset)?|ite|o(ntent|o(kie|rds)|de(Base|Type)?|l(s|Span|or)|mpact)|ell(s|Spacing|Padding)|l(ear|assName)|aption)|t(ype|Bodies|itle|Head|ext|a(rget|gName)|Foot)|i(sMap|ndex|d|m(plementation|ages))|o(ptions|wnerDocument|bject)|d(i(sabled|r)|o(c(type|umentElement)|main)|e(clare|f(er|ault(Selected|Checked|Value)))|at(eTime|a))|useMap|p(ublicId|arentNode|r(o(file|mpt)|eviousSibling))|e(n(ctype|tities)|vent|lements)|v(space|ersion|alue(Type)?|Link|Align)|URL|f(irstChild|orm(s)?|ace|rame(Border)?)|width|l(ink(s)?|o(ngDesc|wSrc)|a(stChild|ng|bel))|a(nchors|c(ce(ssKey|pt(Charset)?)|tion)|ttributes|pplets|l(t|ign)|r(chive|eas)|xis|Link|bbr)|r(ow(s|Span|Index)|ules|e(v|ferrer|l|adOnly))|m(ultiple|e(thod|dia)|a(rgin(Height|Width)|xLength))|b(o(dy|rder)|ackground|gColor))\b&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;support.constant.dom.js&quot;&gt;
+                &lt;expression&gt;\b(ELEMENT_NODE|ATTRIBUTE_NODE|TEXT_NODE|CDATA_SECTION_NODE|ENTITY_REFERENCE_NODE|ENTITY_NODE|PROCESSING_INSTRUCTION_NODE|COMMENT_NODE|DOCUMENT_NODE|DOCUMENT_TYPE_NODE|DOCUMENT_FRAGMENT_NODE|NOTATION_NODE|INDEX_SIZE_ERR|DOMSTRING_SIZE_ERR|HIERARCHY_REQUEST_ERR|WRONG_DOCUMENT_ERR|INVALID_CHARACTER_ERR|NO_DATA_ALLOWED_ERR|NO_MODIFICATION_ALLOWED_ERR|NOT_FOUND_ERR|NOT_SUPPORTED_ERR|INUSE_ATTRIBUTE_ERR)\b&lt;/expression&gt;
+            &lt;/zone&gt;
+            &lt;zone name=&quot;support.function.event-handler.js&quot;&gt;
+                &lt;expression&gt;\bon(R(ow(s(inserted|delete)|e(nter|xit))|e(s(ize(start|end)?|et)|adystatechange))|Mouse(o(ut|ver)|down|up|move)|B(efore(cut|deactivate|u(nload|pdate)|p(aste|rint)|editfocus|activate)|lur)|S(croll|top|ubmit|elect(start|ionchange)?)|H(over|elp)|C(hange|ont(extmenu|rolselect)|ut|ellchange|l(ick|ose))|D(eactivate|ata(setc(hanged|omplete)|available)|r(op|ag(start|over|drop|en(ter|d)|leave)?)|blclick)|Unload|P(aste|ropertychange)|Error(update)?|Key(down|up|press)|Focus|Load|A(ctivate|fter(update|print)|bort))\b&lt;/expression&gt;
+            &lt;/zone&gt;
+        &lt;/collection&gt;
+    &lt;/library&gt;
 &lt;/syntax&gt;</diff>
      <filename>Sugars/JavaScript.sugar/Syntaxes/JavaScriptSyntax.xml</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>cd69a537cb35f4ef9b0d1944325dc3660b16c7e5</id>
    </parent>
  </parents>
  <author>
    <name>Thomas Aylott</name>
    <email>oblivious+git@subtlegradient.com</email>
  </author>
  <url>http://github.com/subtleGradient/espresso-sharedsupport/commit/c456fa7744853a452db77a88348c5f1ba372821b</url>
  <id>c456fa7744853a452db77a88348c5f1ba372821b</id>
  <committed-date>2009-06-25T17:41:50-07:00</committed-date>
  <authored-date>2009-06-25T17:41:50-07:00</authored-date>
  <message>JS Sugar Updates</message>
  <tree>307eb10e5bb78e476386bbc8b0cc6e8ba5a1fb64</tree>
  <committer>
    <name>Thomas Aylott</name>
    <email>oblivious+git@subtlegradient.com</email>
  </committer>
</commit>
