From 27959da173682251ee26974e6dd3ba5591f1162a Mon Sep 17 00:00:00 2001
From: lkerford
Date: Fri, 11 Oct 2024 10:38:59 -0700
Subject: [PATCH] Support parsing the Metadata field in html using the XML
parser
We want to be able to parse HTML using the XML parse, this change will enable us to parse the meta table tags
---
rewrite-xml/src/main/antlr/XMLLexer.g4 | 1 +
rewrite-xml/src/main/antlr/XMLLexer.tokens | 14 +-
rewrite-xml/src/main/antlr/XMLParser.g4 | 6 +-
.../xml/internal/grammar/XMLLexer.interp | 5 +-
.../xml/internal/grammar/XMLLexer.java | 490 +++++++--------
.../xml/internal/grammar/XMLLexer.tokens | 13 +-
.../xml/internal/grammar/XMLParser.interp | 5 +-
.../xml/internal/grammar/XMLParser.java | 575 ++++++++++--------
.../xml/internal/grammar/XMLParser.tokens | 13 +-
.../grammar/XMLParserBaseListener.java | 12 +
.../grammar/XMLParserBaseVisitor.java | 7 +
.../internal/grammar/XMLParserListener.java | 10 +
.../internal/grammar/XMLParserVisitor.java | 6 +
.../org/openrewrite/xml/XmlParserTest.java | 19 +
14 files changed, 665 insertions(+), 511 deletions(-)
diff --git a/rewrite-xml/src/main/antlr/XMLLexer.g4 b/rewrite-xml/src/main/antlr/XMLLexer.g4
index 85886cbdd4a..7db2097b35a 100755
--- a/rewrite-xml/src/main/antlr/XMLLexer.g4
+++ b/rewrite-xml/src/main/antlr/XMLLexer.g4
@@ -121,6 +121,7 @@ S : [ \t\r\n] -> skip ;
// JSP extension to the XML spec
DIRECTIVE_OPEN : '%@' ;
DIRECTIVE_CLOSE: '%';
+META options { caseInsensitive = true; } : 'meta' ;
SLASH : '/' ;
EQUALS : '=' ;
diff --git a/rewrite-xml/src/main/antlr/XMLLexer.tokens b/rewrite-xml/src/main/antlr/XMLLexer.tokens
index 0c687a418d2..68761a1fcb8 100755
--- a/rewrite-xml/src/main/antlr/XMLLexer.tokens
+++ b/rewrite-xml/src/main/antlr/XMLLexer.tokens
@@ -30,15 +30,15 @@ SLASH_CLOSE=29
S=30
DIRECTIVE_OPEN=31
DIRECTIVE_CLOSE=32
-SLASH=33
-EQUALS=34
-STRING=35
-Name=36
+META=33
+SLASH=34
+EQUALS=35
+STRING=36
+Name=37
'?'=8
'<'=10
-'DOCTYPE'=17
'/>'=29
'%@'=31
'%'=32
-'/'=33
-'='=34
+'/'=34
+'='=35
diff --git a/rewrite-xml/src/main/antlr/XMLParser.g4 b/rewrite-xml/src/main/antlr/XMLParser.g4
index d91c334a356..e76fb792a22 100755
--- a/rewrite-xml/src/main/antlr/XMLParser.g4
+++ b/rewrite-xml/src/main/antlr/XMLParser.g4
@@ -51,6 +51,10 @@ doctypedecl
: DTD_OPEN DOCTYPE Name externalid STRING* (DTD_SUBSET_OPEN intsubset DTD_SUBSET_CLOSE)? DTD_CLOSE
;
+metadata
+ : OPEN META attribute* CLOSE
+ ;
+
intsubset
: (markupdecl | declSep)* ;
@@ -73,7 +77,7 @@ processinginstruction
;
content
- : (element | reference | processinginstruction | CDATA | COMMENT | chardata) ;
+ : (metadata | element | reference | processinginstruction | CDATA | COMMENT | chardata ) ;
element
: OPEN Name attribute* CLOSE content* OPEN '/' Name CLOSE
diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.interp b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.interp
index 15146f8a520..7fa884ddd37 100644
--- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.interp
+++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.interp
@@ -32,6 +32,7 @@ null
null
'%@'
'%'
+null
'/'
'='
null
@@ -71,6 +72,7 @@ SLASH_CLOSE
S
DIRECTIVE_OPEN
DIRECTIVE_CLOSE
+META
SLASH
EQUALS
STRING
@@ -120,6 +122,7 @@ SLASH_CLOSE
S
DIRECTIVE_OPEN
DIRECTIVE_CLOSE
+META
SLASH
EQUALS
STRING
@@ -144,4 +147,4 @@ INSIDE_PI_TEXT
INSIDE
atn:
-[4, 0, 36, 393, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 117, 8, 0, 10, 0, 12, 0, 120, 9, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 137, 8, 1, 10, 1, 12, 1, 140, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 158, 8, 4, 11, 4, 12, 4, 159, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 169, 8, 4, 11, 4, 12, 4, 170, 1, 4, 1, 4, 3, 4, 175, 8, 4, 1, 5, 1, 5, 3, 5, 179, 8, 5, 1, 5, 4, 5, 182, 8, 5, 11, 5, 12, 5, 183, 1, 5, 1, 5, 1, 6, 1, 6, 3, 6, 190, 8, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 4, 12, 220, 8, 12, 11, 12, 12, 12, 221, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 4, 29, 293, 8, 29, 11, 29, 12, 29, 294, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 4, 35, 320, 8, 35, 11, 35, 12, 35, 321, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 5, 45, 358, 8, 45, 10, 45, 12, 45, 361, 9, 45, 1, 45, 1, 45, 1, 45, 5, 45, 366, 8, 45, 10, 45, 12, 45, 369, 9, 45, 1, 45, 3, 45, 372, 8, 45, 1, 46, 1, 46, 5, 46, 376, 8, 46, 10, 46, 12, 46, 379, 9, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 389, 8, 49, 1, 50, 3, 50, 392, 8, 50, 2, 118, 138, 0, 51, 8, 1, 10, 2, 12, 3, 14, 4, 16, 5, 18, 6, 20, 7, 22, 8, 24, 9, 26, 10, 28, 11, 30, 12, 32, 13, 34, 0, 36, 0, 38, 14, 40, 15, 42, 16, 44, 17, 46, 0, 48, 0, 50, 18, 52, 19, 54, 20, 56, 0, 58, 0, 60, 21, 62, 0, 64, 22, 66, 23, 68, 24, 70, 0, 72, 0, 74, 25, 76, 0, 78, 26, 80, 0, 82, 27, 84, 28, 86, 29, 88, 30, 90, 31, 92, 32, 94, 33, 96, 34, 98, 35, 100, 36, 102, 0, 104, 0, 106, 0, 108, 0, 8, 0, 1, 2, 3, 4, 5, 6, 7, 19, 2, 0, 9, 9, 32, 32, 2, 0, 38, 38, 60, 60, 2, 0, 68, 68, 100, 100, 2, 0, 79, 79, 111, 111, 2, 0, 67, 67, 99, 99, 2, 0, 84, 84, 116, 116, 2, 0, 89, 89, 121, 121, 2, 0, 80, 80, 112, 112, 2, 0, 69, 69, 101, 101, 2, 0, 62, 62, 91, 91, 1, 0, 63, 63, 3, 0, 9, 10, 13, 13, 32, 32, 2, 0, 34, 34, 60, 60, 2, 0, 39, 39, 60, 60, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 48, 57, 2, 0, 45, 46, 95, 95, 3, 0, 183, 183, 768, 879, 8255, 8256, 15, 0, 58, 58, 65, 90, 95, 95, 97, 122, 192, 214, 216, 246, 248, 767, 880, 893, 895, 8191, 8204, 8205, 8304, 8591, 12289, 55295, 63744, 64975, 65008, 65533, 65536, 983039, 398, 0, 8, 1, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 14, 1, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 18, 1, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 24, 1, 0, 0, 0, 0, 26, 1, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 30, 1, 0, 0, 0, 0, 32, 1, 0, 0, 0, 1, 38, 1, 0, 0, 0, 1, 40, 1, 0, 0, 0, 1, 42, 1, 0, 0, 0, 1, 44, 1, 0, 0, 0, 1, 46, 1, 0, 0, 0, 1, 48, 1, 0, 0, 0, 2, 50, 1, 0, 0, 0, 2, 52, 1, 0, 0, 0, 2, 54, 1, 0, 0, 0, 2, 56, 1, 0, 0, 0, 2, 58, 1, 0, 0, 0, 3, 60, 1, 0, 0, 0, 3, 62, 1, 0, 0, 0, 3, 64, 1, 0, 0, 0, 3, 66, 1, 0, 0, 0, 4, 68, 1, 0, 0, 0, 4, 70, 1, 0, 0, 0, 5, 72, 1, 0, 0, 0, 5, 74, 1, 0, 0, 0, 5, 76, 1, 0, 0, 0, 5, 78, 1, 0, 0, 0, 6, 80, 1, 0, 0, 0, 7, 82, 1, 0, 0, 0, 7, 84, 1, 0, 0, 0, 7, 86, 1, 0, 0, 0, 7, 88, 1, 0, 0, 0, 7, 90, 1, 0, 0, 0, 7, 92, 1, 0, 0, 0, 7, 94, 1, 0, 0, 0, 7, 96, 1, 0, 0, 0, 7, 98, 1, 0, 0, 0, 7, 100, 1, 0, 0, 0, 8, 110, 1, 0, 0, 0, 10, 125, 1, 0, 0, 0, 12, 145, 1, 0, 0, 0, 14, 149, 1, 0, 0, 0, 16, 174, 1, 0, 0, 0, 18, 181, 1, 0, 0, 0, 20, 189, 1, 0, 0, 0, 22, 193, 1, 0, 0, 0, 24, 195, 1, 0, 0, 0, 26, 203, 1, 0, 0, 0, 28, 207, 1, 0, 0, 0, 30, 213, 1, 0, 0, 0, 32, 219, 1, 0, 0, 0, 34, 223, 1, 0, 0, 0, 36, 227, 1, 0, 0, 0, 38, 229, 1, 0, 0, 0, 40, 233, 1, 0, 0, 0, 42, 237, 1, 0, 0, 0, 44, 241, 1, 0, 0, 0, 46, 249, 1, 0, 0, 0, 48, 253, 1, 0, 0, 0, 50, 257, 1, 0, 0, 0, 52, 261, 1, 0, 0, 0, 54, 266, 1, 0, 0, 0, 56, 270, 1, 0, 0, 0, 58, 274, 1, 0, 0, 0, 60, 278, 1, 0, 0, 0, 62, 282, 1, 0, 0, 0, 64, 287, 1, 0, 0, 0, 66, 292, 1, 0, 0, 0, 68, 296, 1, 0, 0, 0, 70, 300, 1, 0, 0, 0, 72, 304, 1, 0, 0, 0, 74, 309, 1, 0, 0, 0, 76, 313, 1, 0, 0, 0, 78, 319, 1, 0, 0, 0, 80, 323, 1, 0, 0, 0, 82, 328, 1, 0, 0, 0, 84, 332, 1, 0, 0, 0, 86, 337, 1, 0, 0, 0, 88, 342, 1, 0, 0, 0, 90, 346, 1, 0, 0, 0, 92, 349, 1, 0, 0, 0, 94, 351, 1, 0, 0, 0, 96, 353, 1, 0, 0, 0, 98, 371, 1, 0, 0, 0, 100, 373, 1, 0, 0, 0, 102, 380, 1, 0, 0, 0, 104, 382, 1, 0, 0, 0, 106, 388, 1, 0, 0, 0, 108, 391, 1, 0, 0, 0, 110, 111, 5, 60, 0, 0, 111, 112, 5, 33, 0, 0, 112, 113, 5, 45, 0, 0, 113, 114, 5, 45, 0, 0, 114, 118, 1, 0, 0, 0, 115, 117, 9, 0, 0, 0, 116, 115, 1, 0, 0, 0, 117, 120, 1, 0, 0, 0, 118, 119, 1, 0, 0, 0, 118, 116, 1, 0, 0, 0, 119, 121, 1, 0, 0, 0, 120, 118, 1, 0, 0, 0, 121, 122, 5, 45, 0, 0, 122, 123, 5, 45, 0, 0, 123, 124, 5, 62, 0, 0, 124, 9, 1, 0, 0, 0, 125, 126, 5, 60, 0, 0, 126, 127, 5, 33, 0, 0, 127, 128, 5, 91, 0, 0, 128, 129, 5, 67, 0, 0, 129, 130, 5, 68, 0, 0, 130, 131, 5, 65, 0, 0, 131, 132, 5, 84, 0, 0, 132, 133, 5, 65, 0, 0, 133, 134, 5, 91, 0, 0, 134, 138, 1, 0, 0, 0, 135, 137, 9, 0, 0, 0, 136, 135, 1, 0, 0, 0, 137, 140, 1, 0, 0, 0, 138, 139, 1, 0, 0, 0, 138, 136, 1, 0, 0, 0, 139, 141, 1, 0, 0, 0, 140, 138, 1, 0, 0, 0, 141, 142, 5, 93, 0, 0, 142, 143, 5, 93, 0, 0, 143, 144, 5, 62, 0, 0, 144, 11, 1, 0, 0, 0, 145, 146, 5, 37, 0, 0, 146, 147, 3, 100, 46, 0, 147, 148, 5, 59, 0, 0, 148, 13, 1, 0, 0, 0, 149, 150, 5, 38, 0, 0, 150, 151, 3, 100, 46, 0, 151, 152, 5, 59, 0, 0, 152, 15, 1, 0, 0, 0, 153, 154, 5, 38, 0, 0, 154, 155, 5, 35, 0, 0, 155, 157, 1, 0, 0, 0, 156, 158, 3, 104, 48, 0, 157, 156, 1, 0, 0, 0, 158, 159, 1, 0, 0, 0, 159, 157, 1, 0, 0, 0, 159, 160, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 162, 5, 59, 0, 0, 162, 175, 1, 0, 0, 0, 163, 164, 5, 38, 0, 0, 164, 165, 5, 35, 0, 0, 165, 166, 5, 120, 0, 0, 166, 168, 1, 0, 0, 0, 167, 169, 3, 102, 47, 0, 168, 167, 1, 0, 0, 0, 169, 170, 1, 0, 0, 0, 170, 168, 1, 0, 0, 0, 170, 171, 1, 0, 0, 0, 171, 172, 1, 0, 0, 0, 172, 173, 5, 59, 0, 0, 173, 175, 1, 0, 0, 0, 174, 153, 1, 0, 0, 0, 174, 163, 1, 0, 0, 0, 175, 17, 1, 0, 0, 0, 176, 182, 7, 0, 0, 0, 177, 179, 5, 13, 0, 0, 178, 177, 1, 0, 0, 0, 178, 179, 1, 0, 0, 0, 179, 180, 1, 0, 0, 0, 180, 182, 5, 10, 0, 0, 181, 176, 1, 0, 0, 0, 181, 178, 1, 0, 0, 0, 182, 183, 1, 0, 0, 0, 183, 181, 1, 0, 0, 0, 183, 184, 1, 0, 0, 0, 184, 185, 1, 0, 0, 0, 185, 186, 6, 5, 0, 0, 186, 19, 1, 0, 0, 0, 187, 190, 3, 34, 13, 0, 188, 190, 3, 36, 14, 0, 189, 187, 1, 0, 0, 0, 189, 188, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, 191, 192, 6, 6, 0, 0, 192, 21, 1, 0, 0, 0, 193, 194, 5, 63, 0, 0, 194, 23, 1, 0, 0, 0, 195, 196, 5, 60, 0, 0, 196, 197, 3, 22, 7, 0, 197, 198, 5, 120, 0, 0, 198, 199, 5, 109, 0, 0, 199, 200, 5, 108, 0, 0, 200, 201, 1, 0, 0, 0, 201, 202, 6, 8, 1, 0, 202, 25, 1, 0, 0, 0, 203, 204, 5, 60, 0, 0, 204, 205, 1, 0, 0, 0, 205, 206, 6, 9, 1, 0, 206, 27, 1, 0, 0, 0, 207, 208, 5, 60, 0, 0, 208, 209, 3, 22, 7, 0, 209, 210, 3, 100, 46, 0, 210, 211, 1, 0, 0, 0, 211, 212, 6, 10, 2, 0, 212, 29, 1, 0, 0, 0, 213, 214, 5, 60, 0, 0, 214, 215, 5, 33, 0, 0, 215, 216, 1, 0, 0, 0, 216, 217, 6, 11, 3, 0, 217, 31, 1, 0, 0, 0, 218, 220, 8, 1, 0, 0, 219, 218, 1, 0, 0, 0, 220, 221, 1, 0, 0, 0, 221, 219, 1, 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 33, 1, 0, 0, 0, 223, 224, 5, 239, 0, 0, 224, 225, 5, 187, 0, 0, 225, 226, 5, 191, 0, 0, 226, 35, 1, 0, 0, 0, 227, 228, 5, 65279, 0, 0, 228, 37, 1, 0, 0, 0, 229, 230, 5, 62, 0, 0, 230, 231, 1, 0, 0, 0, 231, 232, 6, 15, 4, 0, 232, 39, 1, 0, 0, 0, 233, 234, 5, 91, 0, 0, 234, 235, 1, 0, 0, 0, 235, 236, 6, 16, 5, 0, 236, 41, 1, 0, 0, 0, 237, 238, 3, 88, 40, 0, 238, 239, 1, 0, 0, 0, 239, 240, 6, 17, 0, 0, 240, 43, 1, 0, 0, 0, 241, 242, 7, 2, 0, 0, 242, 243, 7, 3, 0, 0, 243, 244, 7, 4, 0, 0, 244, 245, 7, 5, 0, 0, 245, 246, 7, 6, 0, 0, 246, 247, 7, 7, 0, 0, 247, 248, 7, 8, 0, 0, 248, 45, 1, 0, 0, 0, 249, 250, 3, 100, 46, 0, 250, 251, 1, 0, 0, 0, 251, 252, 6, 19, 6, 0, 252, 47, 1, 0, 0, 0, 253, 254, 3, 98, 45, 0, 254, 255, 1, 0, 0, 0, 255, 256, 6, 20, 7, 0, 256, 49, 1, 0, 0, 0, 257, 258, 5, 93, 0, 0, 258, 259, 1, 0, 0, 0, 259, 260, 6, 21, 4, 0, 260, 51, 1, 0, 0, 0, 261, 262, 5, 60, 0, 0, 262, 263, 5, 33, 0, 0, 263, 264, 1, 0, 0, 0, 264, 265, 6, 22, 8, 0, 265, 53, 1, 0, 0, 0, 266, 267, 3, 88, 40, 0, 267, 268, 1, 0, 0, 0, 268, 269, 6, 23, 0, 0, 269, 55, 1, 0, 0, 0, 270, 271, 3, 12, 2, 0, 271, 272, 1, 0, 0, 0, 272, 273, 6, 24, 9, 0, 273, 57, 1, 0, 0, 0, 274, 275, 3, 8, 0, 0, 275, 276, 1, 0, 0, 0, 276, 277, 6, 25, 10, 0, 277, 59, 1, 0, 0, 0, 278, 279, 5, 62, 0, 0, 279, 280, 1, 0, 0, 0, 280, 281, 6, 26, 4, 0, 281, 61, 1, 0, 0, 0, 282, 283, 5, 91, 0, 0, 283, 284, 1, 0, 0, 0, 284, 285, 6, 27, 11, 0, 285, 286, 6, 27, 12, 0, 286, 63, 1, 0, 0, 0, 287, 288, 3, 88, 40, 0, 288, 289, 1, 0, 0, 0, 289, 290, 6, 28, 0, 0, 290, 65, 1, 0, 0, 0, 291, 293, 8, 9, 0, 0, 292, 291, 1, 0, 0, 0, 293, 294, 1, 0, 0, 0, 294, 292, 1, 0, 0, 0, 294, 295, 1, 0, 0, 0, 295, 67, 1, 0, 0, 0, 296, 297, 5, 93, 0, 0, 297, 298, 1, 0, 0, 0, 298, 299, 6, 30, 4, 0, 299, 69, 1, 0, 0, 0, 300, 301, 9, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 303, 6, 31, 11, 0, 303, 71, 1, 0, 0, 0, 304, 305, 3, 84, 38, 0, 305, 306, 1, 0, 0, 0, 306, 307, 6, 32, 13, 0, 307, 308, 6, 32, 4, 0, 308, 73, 1, 0, 0, 0, 309, 310, 3, 88, 40, 0, 310, 311, 1, 0, 0, 0, 311, 312, 6, 33, 0, 0, 312, 75, 1, 0, 0, 0, 313, 314, 3, 22, 7, 0, 314, 315, 1, 0, 0, 0, 315, 316, 6, 34, 11, 0, 316, 317, 6, 34, 14, 0, 317, 77, 1, 0, 0, 0, 318, 320, 8, 10, 0, 0, 319, 318, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 79, 1, 0, 0, 0, 323, 324, 9, 0, 0, 0, 324, 325, 1, 0, 0, 0, 325, 326, 6, 36, 11, 0, 326, 327, 6, 36, 4, 0, 327, 81, 1, 0, 0, 0, 328, 329, 5, 62, 0, 0, 329, 330, 1, 0, 0, 0, 330, 331, 6, 37, 4, 0, 331, 83, 1, 0, 0, 0, 332, 333, 3, 22, 7, 0, 333, 334, 5, 62, 0, 0, 334, 335, 1, 0, 0, 0, 335, 336, 6, 38, 4, 0, 336, 85, 1, 0, 0, 0, 337, 338, 5, 47, 0, 0, 338, 339, 5, 62, 0, 0, 339, 340, 1, 0, 0, 0, 340, 341, 6, 39, 4, 0, 341, 87, 1, 0, 0, 0, 342, 343, 7, 11, 0, 0, 343, 344, 1, 0, 0, 0, 344, 345, 6, 40, 0, 0, 345, 89, 1, 0, 0, 0, 346, 347, 5, 37, 0, 0, 347, 348, 5, 64, 0, 0, 348, 91, 1, 0, 0, 0, 349, 350, 5, 37, 0, 0, 350, 93, 1, 0, 0, 0, 351, 352, 5, 47, 0, 0, 352, 95, 1, 0, 0, 0, 353, 354, 5, 61, 0, 0, 354, 97, 1, 0, 0, 0, 355, 359, 5, 34, 0, 0, 356, 358, 8, 12, 0, 0, 357, 356, 1, 0, 0, 0, 358, 361, 1, 0, 0, 0, 359, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 362, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 362, 372, 5, 34, 0, 0, 363, 367, 5, 39, 0, 0, 364, 366, 8, 13, 0, 0, 365, 364, 1, 0, 0, 0, 366, 369, 1, 0, 0, 0, 367, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 370, 1, 0, 0, 0, 369, 367, 1, 0, 0, 0, 370, 372, 5, 39, 0, 0, 371, 355, 1, 0, 0, 0, 371, 363, 1, 0, 0, 0, 372, 99, 1, 0, 0, 0, 373, 377, 3, 108, 50, 0, 374, 376, 3, 106, 49, 0, 375, 374, 1, 0, 0, 0, 376, 379, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 101, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 380, 381, 7, 14, 0, 0, 381, 103, 1, 0, 0, 0, 382, 383, 7, 15, 0, 0, 383, 105, 1, 0, 0, 0, 384, 389, 3, 108, 50, 0, 385, 389, 7, 16, 0, 0, 386, 389, 3, 104, 48, 0, 387, 389, 7, 17, 0, 0, 388, 384, 1, 0, 0, 0, 388, 385, 1, 0, 0, 0, 388, 386, 1, 0, 0, 0, 388, 387, 1, 0, 0, 0, 389, 107, 1, 0, 0, 0, 390, 392, 7, 18, 0, 0, 391, 390, 1, 0, 0, 0, 392, 109, 1, 0, 0, 0, 26, 0, 1, 2, 3, 4, 5, 6, 7, 118, 138, 159, 170, 174, 178, 181, 183, 189, 221, 294, 321, 359, 367, 371, 377, 388, 391, 15, 6, 0, 0, 5, 7, 0, 5, 5, 0, 5, 1, 0, 4, 0, 0, 5, 2, 0, 7, 36, 0, 7, 35, 0, 5, 3, 0, 7, 3, 0, 7, 1, 0, 3, 0, 0, 5, 4, 0, 7, 28, 0, 5, 6, 0]
\ No newline at end of file
+[4, 0, 37, 400, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 119, 8, 0, 10, 0, 12, 0, 122, 9, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 139, 8, 1, 10, 1, 12, 1, 142, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 160, 8, 4, 11, 4, 12, 4, 161, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 171, 8, 4, 11, 4, 12, 4, 172, 1, 4, 1, 4, 3, 4, 177, 8, 4, 1, 5, 1, 5, 3, 5, 181, 8, 5, 1, 5, 4, 5, 184, 8, 5, 11, 5, 12, 5, 185, 1, 5, 1, 5, 1, 6, 1, 6, 3, 6, 192, 8, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 4, 12, 222, 8, 12, 11, 12, 12, 12, 223, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 4, 29, 295, 8, 29, 11, 29, 12, 29, 296, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 4, 35, 322, 8, 35, 11, 35, 12, 35, 323, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 5, 46, 365, 8, 46, 10, 46, 12, 46, 368, 9, 46, 1, 46, 1, 46, 1, 46, 5, 46, 373, 8, 46, 10, 46, 12, 46, 376, 9, 46, 1, 46, 3, 46, 379, 8, 46, 1, 47, 1, 47, 5, 47, 383, 8, 47, 10, 47, 12, 47, 386, 9, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 396, 8, 50, 1, 51, 3, 51, 399, 8, 51, 2, 120, 140, 0, 52, 8, 1, 10, 2, 12, 3, 14, 4, 16, 5, 18, 6, 20, 7, 22, 8, 24, 9, 26, 10, 28, 11, 30, 12, 32, 13, 34, 0, 36, 0, 38, 14, 40, 15, 42, 16, 44, 17, 46, 0, 48, 0, 50, 18, 52, 19, 54, 20, 56, 0, 58, 0, 60, 21, 62, 0, 64, 22, 66, 23, 68, 24, 70, 0, 72, 0, 74, 25, 76, 0, 78, 26, 80, 0, 82, 27, 84, 28, 86, 29, 88, 30, 90, 31, 92, 32, 94, 33, 96, 34, 98, 35, 100, 36, 102, 37, 104, 0, 106, 0, 108, 0, 110, 0, 8, 0, 1, 2, 3, 4, 5, 6, 7, 21, 2, 0, 9, 9, 32, 32, 2, 0, 38, 38, 60, 60, 2, 0, 68, 68, 100, 100, 2, 0, 79, 79, 111, 111, 2, 0, 67, 67, 99, 99, 2, 0, 84, 84, 116, 116, 2, 0, 89, 89, 121, 121, 2, 0, 80, 80, 112, 112, 2, 0, 69, 69, 101, 101, 2, 0, 62, 62, 91, 91, 1, 0, 63, 63, 3, 0, 9, 10, 13, 13, 32, 32, 2, 0, 77, 77, 109, 109, 2, 0, 65, 65, 97, 97, 2, 0, 34, 34, 60, 60, 2, 0, 39, 39, 60, 60, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 48, 57, 2, 0, 45, 46, 95, 95, 3, 0, 183, 183, 768, 879, 8255, 8256, 15, 0, 58, 58, 65, 90, 95, 95, 97, 122, 192, 214, 216, 246, 248, 767, 880, 893, 895, 8191, 8204, 8205, 8304, 8591, 12289, 55295, 63744, 64975, 65008, 65533, 65536, 983039, 405, 0, 8, 1, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 14, 1, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 18, 1, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 24, 1, 0, 0, 0, 0, 26, 1, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 30, 1, 0, 0, 0, 0, 32, 1, 0, 0, 0, 1, 38, 1, 0, 0, 0, 1, 40, 1, 0, 0, 0, 1, 42, 1, 0, 0, 0, 1, 44, 1, 0, 0, 0, 1, 46, 1, 0, 0, 0, 1, 48, 1, 0, 0, 0, 2, 50, 1, 0, 0, 0, 2, 52, 1, 0, 0, 0, 2, 54, 1, 0, 0, 0, 2, 56, 1, 0, 0, 0, 2, 58, 1, 0, 0, 0, 3, 60, 1, 0, 0, 0, 3, 62, 1, 0, 0, 0, 3, 64, 1, 0, 0, 0, 3, 66, 1, 0, 0, 0, 4, 68, 1, 0, 0, 0, 4, 70, 1, 0, 0, 0, 5, 72, 1, 0, 0, 0, 5, 74, 1, 0, 0, 0, 5, 76, 1, 0, 0, 0, 5, 78, 1, 0, 0, 0, 6, 80, 1, 0, 0, 0, 7, 82, 1, 0, 0, 0, 7, 84, 1, 0, 0, 0, 7, 86, 1, 0, 0, 0, 7, 88, 1, 0, 0, 0, 7, 90, 1, 0, 0, 0, 7, 92, 1, 0, 0, 0, 7, 94, 1, 0, 0, 0, 7, 96, 1, 0, 0, 0, 7, 98, 1, 0, 0, 0, 7, 100, 1, 0, 0, 0, 7, 102, 1, 0, 0, 0, 8, 112, 1, 0, 0, 0, 10, 127, 1, 0, 0, 0, 12, 147, 1, 0, 0, 0, 14, 151, 1, 0, 0, 0, 16, 176, 1, 0, 0, 0, 18, 183, 1, 0, 0, 0, 20, 191, 1, 0, 0, 0, 22, 195, 1, 0, 0, 0, 24, 197, 1, 0, 0, 0, 26, 205, 1, 0, 0, 0, 28, 209, 1, 0, 0, 0, 30, 215, 1, 0, 0, 0, 32, 221, 1, 0, 0, 0, 34, 225, 1, 0, 0, 0, 36, 229, 1, 0, 0, 0, 38, 231, 1, 0, 0, 0, 40, 235, 1, 0, 0, 0, 42, 239, 1, 0, 0, 0, 44, 243, 1, 0, 0, 0, 46, 251, 1, 0, 0, 0, 48, 255, 1, 0, 0, 0, 50, 259, 1, 0, 0, 0, 52, 263, 1, 0, 0, 0, 54, 268, 1, 0, 0, 0, 56, 272, 1, 0, 0, 0, 58, 276, 1, 0, 0, 0, 60, 280, 1, 0, 0, 0, 62, 284, 1, 0, 0, 0, 64, 289, 1, 0, 0, 0, 66, 294, 1, 0, 0, 0, 68, 298, 1, 0, 0, 0, 70, 302, 1, 0, 0, 0, 72, 306, 1, 0, 0, 0, 74, 311, 1, 0, 0, 0, 76, 315, 1, 0, 0, 0, 78, 321, 1, 0, 0, 0, 80, 325, 1, 0, 0, 0, 82, 330, 1, 0, 0, 0, 84, 334, 1, 0, 0, 0, 86, 339, 1, 0, 0, 0, 88, 344, 1, 0, 0, 0, 90, 348, 1, 0, 0, 0, 92, 351, 1, 0, 0, 0, 94, 353, 1, 0, 0, 0, 96, 358, 1, 0, 0, 0, 98, 360, 1, 0, 0, 0, 100, 378, 1, 0, 0, 0, 102, 380, 1, 0, 0, 0, 104, 387, 1, 0, 0, 0, 106, 389, 1, 0, 0, 0, 108, 395, 1, 0, 0, 0, 110, 398, 1, 0, 0, 0, 112, 113, 5, 60, 0, 0, 113, 114, 5, 33, 0, 0, 114, 115, 5, 45, 0, 0, 115, 116, 5, 45, 0, 0, 116, 120, 1, 0, 0, 0, 117, 119, 9, 0, 0, 0, 118, 117, 1, 0, 0, 0, 119, 122, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 120, 118, 1, 0, 0, 0, 121, 123, 1, 0, 0, 0, 122, 120, 1, 0, 0, 0, 123, 124, 5, 45, 0, 0, 124, 125, 5, 45, 0, 0, 125, 126, 5, 62, 0, 0, 126, 9, 1, 0, 0, 0, 127, 128, 5, 60, 0, 0, 128, 129, 5, 33, 0, 0, 129, 130, 5, 91, 0, 0, 130, 131, 5, 67, 0, 0, 131, 132, 5, 68, 0, 0, 132, 133, 5, 65, 0, 0, 133, 134, 5, 84, 0, 0, 134, 135, 5, 65, 0, 0, 135, 136, 5, 91, 0, 0, 136, 140, 1, 0, 0, 0, 137, 139, 9, 0, 0, 0, 138, 137, 1, 0, 0, 0, 139, 142, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 140, 138, 1, 0, 0, 0, 141, 143, 1, 0, 0, 0, 142, 140, 1, 0, 0, 0, 143, 144, 5, 93, 0, 0, 144, 145, 5, 93, 0, 0, 145, 146, 5, 62, 0, 0, 146, 11, 1, 0, 0, 0, 147, 148, 5, 37, 0, 0, 148, 149, 3, 102, 47, 0, 149, 150, 5, 59, 0, 0, 150, 13, 1, 0, 0, 0, 151, 152, 5, 38, 0, 0, 152, 153, 3, 102, 47, 0, 153, 154, 5, 59, 0, 0, 154, 15, 1, 0, 0, 0, 155, 156, 5, 38, 0, 0, 156, 157, 5, 35, 0, 0, 157, 159, 1, 0, 0, 0, 158, 160, 3, 106, 49, 0, 159, 158, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 159, 1, 0, 0, 0, 161, 162, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 164, 5, 59, 0, 0, 164, 177, 1, 0, 0, 0, 165, 166, 5, 38, 0, 0, 166, 167, 5, 35, 0, 0, 167, 168, 5, 120, 0, 0, 168, 170, 1, 0, 0, 0, 169, 171, 3, 104, 48, 0, 170, 169, 1, 0, 0, 0, 171, 172, 1, 0, 0, 0, 172, 170, 1, 0, 0, 0, 172, 173, 1, 0, 0, 0, 173, 174, 1, 0, 0, 0, 174, 175, 5, 59, 0, 0, 175, 177, 1, 0, 0, 0, 176, 155, 1, 0, 0, 0, 176, 165, 1, 0, 0, 0, 177, 17, 1, 0, 0, 0, 178, 184, 7, 0, 0, 0, 179, 181, 5, 13, 0, 0, 180, 179, 1, 0, 0, 0, 180, 181, 1, 0, 0, 0, 181, 182, 1, 0, 0, 0, 182, 184, 5, 10, 0, 0, 183, 178, 1, 0, 0, 0, 183, 180, 1, 0, 0, 0, 184, 185, 1, 0, 0, 0, 185, 183, 1, 0, 0, 0, 185, 186, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 188, 6, 5, 0, 0, 188, 19, 1, 0, 0, 0, 189, 192, 3, 34, 13, 0, 190, 192, 3, 36, 14, 0, 191, 189, 1, 0, 0, 0, 191, 190, 1, 0, 0, 0, 192, 193, 1, 0, 0, 0, 193, 194, 6, 6, 0, 0, 194, 21, 1, 0, 0, 0, 195, 196, 5, 63, 0, 0, 196, 23, 1, 0, 0, 0, 197, 198, 5, 60, 0, 0, 198, 199, 3, 22, 7, 0, 199, 200, 5, 120, 0, 0, 200, 201, 5, 109, 0, 0, 201, 202, 5, 108, 0, 0, 202, 203, 1, 0, 0, 0, 203, 204, 6, 8, 1, 0, 204, 25, 1, 0, 0, 0, 205, 206, 5, 60, 0, 0, 206, 207, 1, 0, 0, 0, 207, 208, 6, 9, 1, 0, 208, 27, 1, 0, 0, 0, 209, 210, 5, 60, 0, 0, 210, 211, 3, 22, 7, 0, 211, 212, 3, 102, 47, 0, 212, 213, 1, 0, 0, 0, 213, 214, 6, 10, 2, 0, 214, 29, 1, 0, 0, 0, 215, 216, 5, 60, 0, 0, 216, 217, 5, 33, 0, 0, 217, 218, 1, 0, 0, 0, 218, 219, 6, 11, 3, 0, 219, 31, 1, 0, 0, 0, 220, 222, 8, 1, 0, 0, 221, 220, 1, 0, 0, 0, 222, 223, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 33, 1, 0, 0, 0, 225, 226, 5, 239, 0, 0, 226, 227, 5, 187, 0, 0, 227, 228, 5, 191, 0, 0, 228, 35, 1, 0, 0, 0, 229, 230, 5, 65279, 0, 0, 230, 37, 1, 0, 0, 0, 231, 232, 5, 62, 0, 0, 232, 233, 1, 0, 0, 0, 233, 234, 6, 15, 4, 0, 234, 39, 1, 0, 0, 0, 235, 236, 5, 91, 0, 0, 236, 237, 1, 0, 0, 0, 237, 238, 6, 16, 5, 0, 238, 41, 1, 0, 0, 0, 239, 240, 3, 88, 40, 0, 240, 241, 1, 0, 0, 0, 241, 242, 6, 17, 0, 0, 242, 43, 1, 0, 0, 0, 243, 244, 7, 2, 0, 0, 244, 245, 7, 3, 0, 0, 245, 246, 7, 4, 0, 0, 246, 247, 7, 5, 0, 0, 247, 248, 7, 6, 0, 0, 248, 249, 7, 7, 0, 0, 249, 250, 7, 8, 0, 0, 250, 45, 1, 0, 0, 0, 251, 252, 3, 102, 47, 0, 252, 253, 1, 0, 0, 0, 253, 254, 6, 19, 6, 0, 254, 47, 1, 0, 0, 0, 255, 256, 3, 100, 46, 0, 256, 257, 1, 0, 0, 0, 257, 258, 6, 20, 7, 0, 258, 49, 1, 0, 0, 0, 259, 260, 5, 93, 0, 0, 260, 261, 1, 0, 0, 0, 261, 262, 6, 21, 4, 0, 262, 51, 1, 0, 0, 0, 263, 264, 5, 60, 0, 0, 264, 265, 5, 33, 0, 0, 265, 266, 1, 0, 0, 0, 266, 267, 6, 22, 8, 0, 267, 53, 1, 0, 0, 0, 268, 269, 3, 88, 40, 0, 269, 270, 1, 0, 0, 0, 270, 271, 6, 23, 0, 0, 271, 55, 1, 0, 0, 0, 272, 273, 3, 12, 2, 0, 273, 274, 1, 0, 0, 0, 274, 275, 6, 24, 9, 0, 275, 57, 1, 0, 0, 0, 276, 277, 3, 8, 0, 0, 277, 278, 1, 0, 0, 0, 278, 279, 6, 25, 10, 0, 279, 59, 1, 0, 0, 0, 280, 281, 5, 62, 0, 0, 281, 282, 1, 0, 0, 0, 282, 283, 6, 26, 4, 0, 283, 61, 1, 0, 0, 0, 284, 285, 5, 91, 0, 0, 285, 286, 1, 0, 0, 0, 286, 287, 6, 27, 11, 0, 287, 288, 6, 27, 12, 0, 288, 63, 1, 0, 0, 0, 289, 290, 3, 88, 40, 0, 290, 291, 1, 0, 0, 0, 291, 292, 6, 28, 0, 0, 292, 65, 1, 0, 0, 0, 293, 295, 8, 9, 0, 0, 294, 293, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 294, 1, 0, 0, 0, 296, 297, 1, 0, 0, 0, 297, 67, 1, 0, 0, 0, 298, 299, 5, 93, 0, 0, 299, 300, 1, 0, 0, 0, 300, 301, 6, 30, 4, 0, 301, 69, 1, 0, 0, 0, 302, 303, 9, 0, 0, 0, 303, 304, 1, 0, 0, 0, 304, 305, 6, 31, 11, 0, 305, 71, 1, 0, 0, 0, 306, 307, 3, 84, 38, 0, 307, 308, 1, 0, 0, 0, 308, 309, 6, 32, 13, 0, 309, 310, 6, 32, 4, 0, 310, 73, 1, 0, 0, 0, 311, 312, 3, 88, 40, 0, 312, 313, 1, 0, 0, 0, 313, 314, 6, 33, 0, 0, 314, 75, 1, 0, 0, 0, 315, 316, 3, 22, 7, 0, 316, 317, 1, 0, 0, 0, 317, 318, 6, 34, 11, 0, 318, 319, 6, 34, 14, 0, 319, 77, 1, 0, 0, 0, 320, 322, 8, 10, 0, 0, 321, 320, 1, 0, 0, 0, 322, 323, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 324, 79, 1, 0, 0, 0, 325, 326, 9, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 328, 6, 36, 11, 0, 328, 329, 6, 36, 4, 0, 329, 81, 1, 0, 0, 0, 330, 331, 5, 62, 0, 0, 331, 332, 1, 0, 0, 0, 332, 333, 6, 37, 4, 0, 333, 83, 1, 0, 0, 0, 334, 335, 3, 22, 7, 0, 335, 336, 5, 62, 0, 0, 336, 337, 1, 0, 0, 0, 337, 338, 6, 38, 4, 0, 338, 85, 1, 0, 0, 0, 339, 340, 5, 47, 0, 0, 340, 341, 5, 62, 0, 0, 341, 342, 1, 0, 0, 0, 342, 343, 6, 39, 4, 0, 343, 87, 1, 0, 0, 0, 344, 345, 7, 11, 0, 0, 345, 346, 1, 0, 0, 0, 346, 347, 6, 40, 0, 0, 347, 89, 1, 0, 0, 0, 348, 349, 5, 37, 0, 0, 349, 350, 5, 64, 0, 0, 350, 91, 1, 0, 0, 0, 351, 352, 5, 37, 0, 0, 352, 93, 1, 0, 0, 0, 353, 354, 7, 12, 0, 0, 354, 355, 7, 8, 0, 0, 355, 356, 7, 5, 0, 0, 356, 357, 7, 13, 0, 0, 357, 95, 1, 0, 0, 0, 358, 359, 5, 47, 0, 0, 359, 97, 1, 0, 0, 0, 360, 361, 5, 61, 0, 0, 361, 99, 1, 0, 0, 0, 362, 366, 5, 34, 0, 0, 363, 365, 8, 14, 0, 0, 364, 363, 1, 0, 0, 0, 365, 368, 1, 0, 0, 0, 366, 364, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 369, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 369, 379, 5, 34, 0, 0, 370, 374, 5, 39, 0, 0, 371, 373, 8, 15, 0, 0, 372, 371, 1, 0, 0, 0, 373, 376, 1, 0, 0, 0, 374, 372, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 375, 377, 1, 0, 0, 0, 376, 374, 1, 0, 0, 0, 377, 379, 5, 39, 0, 0, 378, 362, 1, 0, 0, 0, 378, 370, 1, 0, 0, 0, 379, 101, 1, 0, 0, 0, 380, 384, 3, 110, 51, 0, 381, 383, 3, 108, 50, 0, 382, 381, 1, 0, 0, 0, 383, 386, 1, 0, 0, 0, 384, 382, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, 103, 1, 0, 0, 0, 386, 384, 1, 0, 0, 0, 387, 388, 7, 16, 0, 0, 388, 105, 1, 0, 0, 0, 389, 390, 7, 17, 0, 0, 390, 107, 1, 0, 0, 0, 391, 396, 3, 110, 51, 0, 392, 396, 7, 18, 0, 0, 393, 396, 3, 106, 49, 0, 394, 396, 7, 19, 0, 0, 395, 391, 1, 0, 0, 0, 395, 392, 1, 0, 0, 0, 395, 393, 1, 0, 0, 0, 395, 394, 1, 0, 0, 0, 396, 109, 1, 0, 0, 0, 397, 399, 7, 20, 0, 0, 398, 397, 1, 0, 0, 0, 399, 111, 1, 0, 0, 0, 26, 0, 1, 2, 3, 4, 5, 6, 7, 120, 140, 161, 172, 176, 180, 183, 185, 191, 223, 296, 323, 366, 374, 378, 384, 395, 398, 15, 6, 0, 0, 5, 7, 0, 5, 5, 0, 5, 1, 0, 4, 0, 0, 5, 2, 0, 7, 37, 0, 7, 36, 0, 5, 3, 0, 7, 3, 0, 7, 1, 0, 3, 0, 0, 5, 4, 0, 7, 28, 0, 5, 6, 0]
\ No newline at end of file
diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.java b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.java
index eacbbeea655..c698e61bc58 100644
--- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.java
+++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.java
@@ -34,11 +34,11 @@ public class XMLLexer extends Lexer {
public static final int
COMMENT=1, CDATA=2, ParamEntityRef=3, EntityRef=4, CharRef=5, SEA_WS=6,
UTF_ENCODING_BOM=7, QUESTION_MARK=8, SPECIAL_OPEN_XML=9, OPEN=10, SPECIAL_OPEN=11,
- DTD_OPEN=12, TEXT=13, DTD_CLOSE=14, DTD_SUBSET_OPEN=15, DTD_S=16, DOCTYPE=17,
+ DTD_OPEN=12, TEXT=13, DTD_CLOSE=14, DTD_SUBSET_OPEN=15, DTD_S=16, DOCTYPE=17,
DTD_SUBSET_CLOSE=18, MARKUP_OPEN=19, DTS_SUBSET_S=20, MARK_UP_CLOSE=21,
MARKUP_S=22, MARKUP_TEXT=23, MARKUP_SUBSET=24, PI_S=25, PI_TEXT=26, CLOSE=27,
SPECIAL_CLOSE=28, SLASH_CLOSE=29, S=30, DIRECTIVE_OPEN=31, DIRECTIVE_CLOSE=32,
- SLASH=33, EQUALS=34, STRING=35, Name=36;
+ META=33, SLASH=34, EQUALS=35, STRING=36, Name=37;
public static final int
INSIDE_DTD=1, INSIDE_DTD_SUBSET=2, INSIDE_MARKUP=3, INSIDE_MARKUP_SUBSET=4,
INSIDE_PROCESS_INSTRUCTION=5, INSIDE_PI_TEXT=6, INSIDE=7;
@@ -61,7 +61,7 @@ private static String[] makeRuleNames() {
"MARKUP_S", "MARKUP_TEXT", "MARKUP_SUBSET", "TXT", "PI_SPECIAL_CLOSE",
"PI_S", "PI_QUESTION_MARK", "PI_TEXT", "PI_TEXT_SPECIAL_CASE", "CLOSE",
"SPECIAL_CLOSE", "SLASH_CLOSE", "S", "DIRECTIVE_OPEN", "DIRECTIVE_CLOSE",
- "SLASH", "EQUALS", "STRING", "Name", "HEXDIGIT", "DIGIT", "NameChar",
+ "META", "SLASH", "EQUALS", "STRING", "Name", "HEXDIGIT", "DIGIT", "NameChar",
"NameStartChar"
};
}
@@ -71,7 +71,8 @@ private static String[] makeLiteralNames() {
return new String[] {
null, null, null, null, null, null, null, null, "'?'", null, "'<'", null,
null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, "'/>'", null, "'%@'", "'%'", "'/'", "'='"
+ null, null, null, null, null, "'/>'", null, "'%@'", "'%'", null, "'/'",
+ "'='"
};
}
private static final String[] _LITERAL_NAMES = makeLiteralNames();
@@ -82,8 +83,8 @@ private static String[] makeSymbolicNames() {
"DTD_OPEN", "TEXT", "DTD_CLOSE", "DTD_SUBSET_OPEN", "DTD_S", "DOCTYPE",
"DTD_SUBSET_CLOSE", "MARKUP_OPEN", "DTS_SUBSET_S", "MARK_UP_CLOSE", "MARKUP_S",
"MARKUP_TEXT", "MARKUP_SUBSET", "PI_S", "PI_TEXT", "CLOSE", "SPECIAL_CLOSE",
- "SLASH_CLOSE", "S", "DIRECTIVE_OPEN", "DIRECTIVE_CLOSE", "SLASH", "EQUALS",
- "STRING", "Name"
+ "SLASH_CLOSE", "S", "DIRECTIVE_OPEN", "DIRECTIVE_CLOSE", "META", "SLASH",
+ "EQUALS", "STRING", "Name"
};
}
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
@@ -145,7 +146,7 @@ public XMLLexer(CharStream input) {
public ATN getATN() { return _ATN; }
public static final String _serializedATN =
- "\u0004\u0000$\u0189\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff\uffff"+
+ "\u0004\u0000%\u0190\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff\uffff"+
"\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff\uffff"+
"\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+
"\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"+
@@ -161,245 +162,250 @@ public XMLLexer(CharStream input) {
"#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007\'\u0002"+
"(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007,\u0002"+
"-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u00071\u0002"+
- "2\u00072\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
- "\u0000\u0005\u0000u\b\u0000\n\u0000\f\u0000x\t\u0000\u0001\u0000\u0001"+
- "\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
+ "2\u00072\u00023\u00073\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000"+
+ "\u0001\u0000\u0001\u0000\u0005\u0000w\b\u0000\n\u0000\f\u0000z\t\u0000"+
+ "\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001"+
"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
- "\u0001\u0001\u0001\u0005\u0001\u0089\b\u0001\n\u0001\f\u0001\u008c\t\u0001"+
- "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002"+
- "\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
- "\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0004\u0004\u009e\b\u0004"+
- "\u000b\u0004\f\u0004\u009f\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004"+
- "\u0001\u0004\u0001\u0004\u0001\u0004\u0004\u0004\u00a9\b\u0004\u000b\u0004"+
- "\f\u0004\u00aa\u0001\u0004\u0001\u0004\u0003\u0004\u00af\b\u0004\u0001"+
- "\u0005\u0001\u0005\u0003\u0005\u00b3\b\u0005\u0001\u0005\u0004\u0005\u00b6"+
- "\b\u0005\u000b\u0005\f\u0005\u00b7\u0001\u0005\u0001\u0005\u0001\u0006"+
- "\u0001\u0006\u0003\u0006\u00be\b\u0006\u0001\u0006\u0001\u0006\u0001\u0007"+
- "\u0001\u0007\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001"+
- "\b\u0001\t\u0001\t\u0001\t\u0001\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+
- "\n\u0001\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+
- "\u0001\f\u0004\f\u00dc\b\f\u000b\f\f\f\u00dd\u0001\r\u0001\r\u0001\r\u0001"+
- "\r\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f"+
- "\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011"+
- "\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+
- "\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013"+
- "\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+
- "\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016"+
- "\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0017\u0001\u0017\u0001\u0017"+
- "\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0019"+
- "\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001a"+
- "\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b"+
- "\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001d\u0004\u001d"+
- "\u0125\b\u001d\u000b\u001d\f\u001d\u0126\u0001\u001e\u0001\u001e\u0001"+
- "\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001"+
- " \u0001 \u0001 \u0001 \u0001 \u0001!\u0001!\u0001!\u0001!\u0001\"\u0001"+
- "\"\u0001\"\u0001\"\u0001\"\u0001#\u0004#\u0140\b#\u000b#\f#\u0141\u0001"+
- "$\u0001$\u0001$\u0001$\u0001$\u0001%\u0001%\u0001%\u0001%\u0001&\u0001"+
- "&\u0001&\u0001&\u0001&\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001("+
- "\u0001(\u0001(\u0001(\u0001)\u0001)\u0001)\u0001*\u0001*\u0001+\u0001"+
- "+\u0001,\u0001,\u0001-\u0001-\u0005-\u0166\b-\n-\f-\u0169\t-\u0001-\u0001"+
- "-\u0001-\u0005-\u016e\b-\n-\f-\u0171\t-\u0001-\u0003-\u0174\b-\u0001."+
- "\u0001.\u0005.\u0178\b.\n.\f.\u017b\t.\u0001/\u0001/\u00010\u00010\u0001"+
- "1\u00011\u00011\u00011\u00031\u0185\b1\u00012\u00032\u0188\b2\u0002v\u008a"+
- "\u00003\b\u0001\n\u0002\f\u0003\u000e\u0004\u0010\u0005\u0012\u0006\u0014"+
- "\u0007\u0016\b\u0018\t\u001a\n\u001c\u000b\u001e\f \r\"\u0000$\u0000&"+
- "\u000e(\u000f*\u0010,\u0011.\u00000\u00002\u00124\u00136\u00148\u0000"+
+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0005\u0001\u008b\b\u0001\n\u0001"+
+ "\f\u0001\u008e\t\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
+ "\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003"+
+ "\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004"+
+ "\u0004\u0004\u00a0\b\u0004\u000b\u0004\f\u0004\u00a1\u0001\u0004\u0001"+
+ "\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0004"+
+ "\u0004\u00ab\b\u0004\u000b\u0004\f\u0004\u00ac\u0001\u0004\u0001\u0004"+
+ "\u0003\u0004\u00b1\b\u0004\u0001\u0005\u0001\u0005\u0003\u0005\u00b5\b"+
+ "\u0005\u0001\u0005\u0004\u0005\u00b8\b\u0005\u000b\u0005\f\u0005\u00b9"+
+ "\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006\u0003\u0006\u00c0\b\u0006"+
+ "\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001"+
+ "\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001"+
+ "\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\u000b\u0001\u000b"+
+ "\u0001\u000b\u0001\u000b\u0001\u000b\u0001\f\u0004\f\u00de\b\f\u000b\f"+
+ "\f\f\u00df\u0001\r\u0001\r\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001"+
+ "\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0001"+
+ "\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001"+
+ "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+
+ "\u0012\u0001\u0012\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001"+
+ "\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015\u0001\u0015\u0001"+
+ "\u0015\u0001\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+
+ "\u0016\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001"+
+ "\u0018\u0001\u0018\u0001\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001"+
+ "\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001b\u0001"+
+ "\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001c\u0001\u001c\u0001"+
+ "\u001c\u0001\u001c\u0001\u001d\u0004\u001d\u0127\b\u001d\u000b\u001d\f"+
+ "\u001d\u0128\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001f"+
+ "\u0001\u001f\u0001\u001f\u0001\u001f\u0001 \u0001 \u0001 \u0001 \u0001"+
+ " \u0001!\u0001!\u0001!\u0001!\u0001\"\u0001\"\u0001\"\u0001\"\u0001\""+
+ "\u0001#\u0004#\u0142\b#\u000b#\f#\u0143\u0001$\u0001$\u0001$\u0001$\u0001"+
+ "$\u0001%\u0001%\u0001%\u0001%\u0001&\u0001&\u0001&\u0001&\u0001&\u0001"+
+ "\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001(\u0001)"+
+ "\u0001)\u0001)\u0001*\u0001*\u0001+\u0001+\u0001+\u0001+\u0001+\u0001"+
+ ",\u0001,\u0001-\u0001-\u0001.\u0001.\u0005.\u016d\b.\n.\f.\u0170\t.\u0001"+
+ ".\u0001.\u0001.\u0005.\u0175\b.\n.\f.\u0178\t.\u0001.\u0003.\u017b\b."+
+ "\u0001/\u0001/\u0005/\u017f\b/\n/\f/\u0182\t/\u00010\u00010\u00011\u0001"+
+ "1\u00012\u00012\u00012\u00012\u00032\u018c\b2\u00013\u00033\u018f\b3\u0002"+
+ "x\u008c\u00004\b\u0001\n\u0002\f\u0003\u000e\u0004\u0010\u0005\u0012\u0006"+
+ "\u0014\u0007\u0016\b\u0018\t\u001a\n\u001c\u000b\u001e\f \r\"\u0000$\u0000"+
+ "&\u000e(\u000f*\u0010,\u0011.\u00000\u00002\u00124\u00136\u00148\u0000"+
":\u0000<\u0015>\u0000@\u0016B\u0017D\u0018F\u0000H\u0000J\u0019L\u0000"+
- "N\u001aP\u0000R\u001bT\u001cV\u001dX\u001eZ\u001f\\ ^!`\"b#d$f\u0000h"+
- "\u0000j\u0000l\u0000\b\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007"+
- "\u0013\u0002\u0000\t\t \u0002\u0000&&<<\u0002\u0000DDdd\u0002\u0000O"+
+ "N\u001aP\u0000R\u001bT\u001cV\u001dX\u001eZ\u001f\\ ^!`\"b#d$f%h\u0000"+
+ "j\u0000l\u0000n\u0000\b\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007"+
+ "\u0015\u0002\u0000\t\t \u0002\u0000&&<<\u0002\u0000DDdd\u0002\u0000O"+
"Ooo\u0002\u0000CCcc\u0002\u0000TTtt\u0002\u0000YYyy\u0002\u0000PPpp\u0002"+
"\u0000EEee\u0002\u0000>>[[\u0001\u0000??\u0003\u0000\t\n\r\r \u0002\u0000"+
- "\"\"<<\u0002\u0000\'\'<<\u0003\u000009AFaf\u0001\u000009\u0002\u0000-"+
- ".__\u0003\u0000\u00b7\u00b7\u0300\u036f\u203f\u2040\u000f\u0000::AZ__"+
- "az\u00c0\u00d6\u00d8\u00f6\u00f8\u02ff\u0370\u037d\u037f\u1fff\u200c\u200d"+
- "\u2070\u218f\u3001\u8000\ud7ff\u8000\uf900\u8000\ufdcf\u8000\ufdf0\u8000"+
- "\ufffd\u8001\u0000\u800e\uffff\u018e\u0000\b\u0001\u0000\u0000\u0000\u0000"+
- "\n\u0001\u0000\u0000\u0000\u0000\f\u0001\u0000\u0000\u0000\u0000\u000e"+
- "\u0001\u0000\u0000\u0000\u0000\u0010\u0001\u0000\u0000\u0000\u0000\u0012"+
- "\u0001\u0000\u0000\u0000\u0000\u0014\u0001\u0000\u0000\u0000\u0000\u0016"+
- "\u0001\u0000\u0000\u0000\u0000\u0018\u0001\u0000\u0000\u0000\u0000\u001a"+
- "\u0001\u0000\u0000\u0000\u0000\u001c\u0001\u0000\u0000\u0000\u0000\u001e"+
- "\u0001\u0000\u0000\u0000\u0000 \u0001\u0000\u0000\u0000\u0001&\u0001\u0000"+
- "\u0000\u0000\u0001(\u0001\u0000\u0000\u0000\u0001*\u0001\u0000\u0000\u0000"+
- "\u0001,\u0001\u0000\u0000\u0000\u0001.\u0001\u0000\u0000\u0000\u00010"+
- "\u0001\u0000\u0000\u0000\u00022\u0001\u0000\u0000\u0000\u00024\u0001\u0000"+
- "\u0000\u0000\u00026\u0001\u0000\u0000\u0000\u00028\u0001\u0000\u0000\u0000"+
- "\u0002:\u0001\u0000\u0000\u0000\u0003<\u0001\u0000\u0000\u0000\u0003>"+
- "\u0001\u0000\u0000\u0000\u0003@\u0001\u0000\u0000\u0000\u0003B\u0001\u0000"+
- "\u0000\u0000\u0004D\u0001\u0000\u0000\u0000\u0004F\u0001\u0000\u0000\u0000"+
- "\u0005H\u0001\u0000\u0000\u0000\u0005J\u0001\u0000\u0000\u0000\u0005L"+
- "\u0001\u0000\u0000\u0000\u0005N\u0001\u0000\u0000\u0000\u0006P\u0001\u0000"+
- "\u0000\u0000\u0007R\u0001\u0000\u0000\u0000\u0007T\u0001\u0000\u0000\u0000"+
- "\u0007V\u0001\u0000\u0000\u0000\u0007X\u0001\u0000\u0000\u0000\u0007Z"+
- "\u0001\u0000\u0000\u0000\u0007\\\u0001\u0000\u0000\u0000\u0007^\u0001"+
- "\u0000\u0000\u0000\u0007`\u0001\u0000\u0000\u0000\u0007b\u0001\u0000\u0000"+
- "\u0000\u0007d\u0001\u0000\u0000\u0000\bn\u0001\u0000\u0000\u0000\n}\u0001"+
- "\u0000\u0000\u0000\f\u0091\u0001\u0000\u0000\u0000\u000e\u0095\u0001\u0000"+
- "\u0000\u0000\u0010\u00ae\u0001\u0000\u0000\u0000\u0012\u00b5\u0001\u0000"+
- "\u0000\u0000\u0014\u00bd\u0001\u0000\u0000\u0000\u0016\u00c1\u0001\u0000"+
- "\u0000\u0000\u0018\u00c3\u0001\u0000\u0000\u0000\u001a\u00cb\u0001\u0000"+
- "\u0000\u0000\u001c\u00cf\u0001\u0000\u0000\u0000\u001e\u00d5\u0001\u0000"+
- "\u0000\u0000 \u00db\u0001\u0000\u0000\u0000\"\u00df\u0001\u0000\u0000"+
- "\u0000$\u00e3\u0001\u0000\u0000\u0000&\u00e5\u0001\u0000\u0000\u0000("+
- "\u00e9\u0001\u0000\u0000\u0000*\u00ed\u0001\u0000\u0000\u0000,\u00f1\u0001"+
- "\u0000\u0000\u0000.\u00f9\u0001\u0000\u0000\u00000\u00fd\u0001\u0000\u0000"+
- "\u00002\u0101\u0001\u0000\u0000\u00004\u0105\u0001\u0000\u0000\u00006"+
- "\u010a\u0001\u0000\u0000\u00008\u010e\u0001\u0000\u0000\u0000:\u0112\u0001"+
- "\u0000\u0000\u0000<\u0116\u0001\u0000\u0000\u0000>\u011a\u0001\u0000\u0000"+
- "\u0000@\u011f\u0001\u0000\u0000\u0000B\u0124\u0001\u0000\u0000\u0000D"+
- "\u0128\u0001\u0000\u0000\u0000F\u012c\u0001\u0000\u0000\u0000H\u0130\u0001"+
- "\u0000\u0000\u0000J\u0135\u0001\u0000\u0000\u0000L\u0139\u0001\u0000\u0000"+
- "\u0000N\u013f\u0001\u0000\u0000\u0000P\u0143\u0001\u0000\u0000\u0000R"+
- "\u0148\u0001\u0000\u0000\u0000T\u014c\u0001\u0000\u0000\u0000V\u0151\u0001"+
- "\u0000\u0000\u0000X\u0156\u0001\u0000\u0000\u0000Z\u015a\u0001\u0000\u0000"+
- "\u0000\\\u015d\u0001\u0000\u0000\u0000^\u015f\u0001\u0000\u0000\u0000"+
- "`\u0161\u0001\u0000\u0000\u0000b\u0173\u0001\u0000\u0000\u0000d\u0175"+
- "\u0001\u0000\u0000\u0000f\u017c\u0001\u0000\u0000\u0000h\u017e\u0001\u0000"+
- "\u0000\u0000j\u0184\u0001\u0000\u0000\u0000l\u0187\u0001\u0000\u0000\u0000"+
- "no\u0005<\u0000\u0000op\u0005!\u0000\u0000pq\u0005-\u0000\u0000qr\u0005"+
- "-\u0000\u0000rv\u0001\u0000\u0000\u0000su\t\u0000\u0000\u0000ts\u0001"+
- "\u0000\u0000\u0000ux\u0001\u0000\u0000\u0000vw\u0001\u0000\u0000\u0000"+
- "vt\u0001\u0000\u0000\u0000wy\u0001\u0000\u0000\u0000xv\u0001\u0000\u0000"+
- "\u0000yz\u0005-\u0000\u0000z{\u0005-\u0000\u0000{|\u0005>\u0000\u0000"+
- "|\t\u0001\u0000\u0000\u0000}~\u0005<\u0000\u0000~\u007f\u0005!\u0000\u0000"+
- "\u007f\u0080\u0005[\u0000\u0000\u0080\u0081\u0005C\u0000\u0000\u0081\u0082"+
- "\u0005D\u0000\u0000\u0082\u0083\u0005A\u0000\u0000\u0083\u0084\u0005T"+
- "\u0000\u0000\u0084\u0085\u0005A\u0000\u0000\u0085\u0086\u0005[\u0000\u0000"+
- "\u0086\u008a\u0001\u0000\u0000\u0000\u0087\u0089\t\u0000\u0000\u0000\u0088"+
- "\u0087\u0001\u0000\u0000\u0000\u0089\u008c\u0001\u0000\u0000\u0000\u008a"+
- "\u008b\u0001\u0000\u0000\u0000\u008a\u0088\u0001\u0000\u0000\u0000\u008b"+
- "\u008d\u0001\u0000\u0000\u0000\u008c\u008a\u0001\u0000\u0000\u0000\u008d"+
- "\u008e\u0005]\u0000\u0000\u008e\u008f\u0005]\u0000\u0000\u008f\u0090\u0005"+
- ">\u0000\u0000\u0090\u000b\u0001\u0000\u0000\u0000\u0091\u0092\u0005%\u0000"+
- "\u0000\u0092\u0093\u0003d.\u0000\u0093\u0094\u0005;\u0000\u0000\u0094"+
- "\r\u0001\u0000\u0000\u0000\u0095\u0096\u0005&\u0000\u0000\u0096\u0097"+
- "\u0003d.\u0000\u0097\u0098\u0005;\u0000\u0000\u0098\u000f\u0001\u0000"+
- "\u0000\u0000\u0099\u009a\u0005&\u0000\u0000\u009a\u009b\u0005#\u0000\u0000"+
- "\u009b\u009d\u0001\u0000\u0000\u0000\u009c\u009e\u0003h0\u0000\u009d\u009c"+
- "\u0001\u0000\u0000\u0000\u009e\u009f\u0001\u0000\u0000\u0000\u009f\u009d"+
- "\u0001\u0000\u0000\u0000\u009f\u00a0\u0001\u0000\u0000\u0000\u00a0\u00a1"+
- "\u0001\u0000\u0000\u0000\u00a1\u00a2\u0005;\u0000\u0000\u00a2\u00af\u0001"+
- "\u0000\u0000\u0000\u00a3\u00a4\u0005&\u0000\u0000\u00a4\u00a5\u0005#\u0000"+
- "\u0000\u00a5\u00a6\u0005x\u0000\u0000\u00a6\u00a8\u0001\u0000\u0000\u0000"+
- "\u00a7\u00a9\u0003f/\u0000\u00a8\u00a7\u0001\u0000\u0000\u0000\u00a9\u00aa"+
- "\u0001\u0000\u0000\u0000\u00aa\u00a8\u0001\u0000\u0000\u0000\u00aa\u00ab"+
- "\u0001\u0000\u0000\u0000\u00ab\u00ac\u0001\u0000\u0000\u0000\u00ac\u00ad"+
- "\u0005;\u0000\u0000\u00ad\u00af\u0001\u0000\u0000\u0000\u00ae\u0099\u0001"+
- "\u0000\u0000\u0000\u00ae\u00a3\u0001\u0000\u0000\u0000\u00af\u0011\u0001"+
- "\u0000\u0000\u0000\u00b0\u00b6\u0007\u0000\u0000\u0000\u00b1\u00b3\u0005"+
- "\r\u0000\u0000\u00b2\u00b1\u0001\u0000\u0000\u0000\u00b2\u00b3\u0001\u0000"+
- "\u0000\u0000\u00b3\u00b4\u0001\u0000\u0000\u0000\u00b4\u00b6\u0005\n\u0000"+
- "\u0000\u00b5\u00b0\u0001\u0000\u0000\u0000\u00b5\u00b2\u0001\u0000\u0000"+
- "\u0000\u00b6\u00b7\u0001\u0000\u0000\u0000\u00b7\u00b5\u0001\u0000\u0000"+
- "\u0000\u00b7\u00b8\u0001\u0000\u0000\u0000\u00b8\u00b9\u0001\u0000\u0000"+
- "\u0000\u00b9\u00ba\u0006\u0005\u0000\u0000\u00ba\u0013\u0001\u0000\u0000"+
- "\u0000\u00bb\u00be\u0003\"\r\u0000\u00bc\u00be\u0003$\u000e\u0000\u00bd"+
- "\u00bb\u0001\u0000\u0000\u0000\u00bd\u00bc\u0001\u0000\u0000\u0000\u00be"+
- "\u00bf\u0001\u0000\u0000\u0000\u00bf\u00c0\u0006\u0006\u0000\u0000\u00c0"+
- "\u0015\u0001\u0000\u0000\u0000\u00c1\u00c2\u0005?\u0000\u0000\u00c2\u0017"+
- "\u0001\u0000\u0000\u0000\u00c3\u00c4\u0005<\u0000\u0000\u00c4\u00c5\u0003"+
- "\u0016\u0007\u0000\u00c5\u00c6\u0005x\u0000\u0000\u00c6\u00c7\u0005m\u0000"+
- "\u0000\u00c7\u00c8\u0005l\u0000\u0000\u00c8\u00c9\u0001\u0000\u0000\u0000"+
- "\u00c9\u00ca\u0006\b\u0001\u0000\u00ca\u0019\u0001\u0000\u0000\u0000\u00cb"+
- "\u00cc\u0005<\u0000\u0000\u00cc\u00cd\u0001\u0000\u0000\u0000\u00cd\u00ce"+
- "\u0006\t\u0001\u0000\u00ce\u001b\u0001\u0000\u0000\u0000\u00cf\u00d0\u0005"+
- "<\u0000\u0000\u00d0\u00d1\u0003\u0016\u0007\u0000\u00d1\u00d2\u0003d."+
- "\u0000\u00d2\u00d3\u0001\u0000\u0000\u0000\u00d3\u00d4\u0006\n\u0002\u0000"+
- "\u00d4\u001d\u0001\u0000\u0000\u0000\u00d5\u00d6\u0005<\u0000\u0000\u00d6"+
- "\u00d7\u0005!\u0000\u0000\u00d7\u00d8\u0001\u0000\u0000\u0000\u00d8\u00d9"+
- "\u0006\u000b\u0003\u0000\u00d9\u001f\u0001\u0000\u0000\u0000\u00da\u00dc"+
- "\b\u0001\u0000\u0000\u00db\u00da\u0001\u0000\u0000\u0000\u00dc\u00dd\u0001"+
- "\u0000\u0000\u0000\u00dd\u00db\u0001\u0000\u0000\u0000\u00dd\u00de\u0001"+
- "\u0000\u0000\u0000\u00de!\u0001\u0000\u0000\u0000\u00df\u00e0\u0005\u00ef"+
- "\u0000\u0000\u00e0\u00e1\u0005\u00bb\u0000\u0000\u00e1\u00e2\u0005\u00bf"+
- "\u0000\u0000\u00e2#\u0001\u0000\u0000\u0000\u00e3\u00e4\u0005\u8000\ufeff"+
- "\u0000\u0000\u00e4%\u0001\u0000\u0000\u0000\u00e5\u00e6\u0005>\u0000\u0000"+
- "\u00e6\u00e7\u0001\u0000\u0000\u0000\u00e7\u00e8\u0006\u000f\u0004\u0000"+
- "\u00e8\'\u0001\u0000\u0000\u0000\u00e9\u00ea\u0005[\u0000\u0000\u00ea"+
- "\u00eb\u0001\u0000\u0000\u0000\u00eb\u00ec\u0006\u0010\u0005\u0000\u00ec"+
- ")\u0001\u0000\u0000\u0000\u00ed\u00ee\u0003X(\u0000\u00ee\u00ef\u0001"+
- "\u0000\u0000\u0000\u00ef\u00f0\u0006\u0011\u0000\u0000\u00f0+\u0001\u0000"+
- "\u0000\u0000\u00f1\u00f2\u0007\u0002\u0000\u0000\u00f2\u00f3\u0007\u0003"+
- "\u0000\u0000\u00f3\u00f4\u0007\u0004\u0000\u0000\u00f4\u00f5\u0007\u0005"+
- "\u0000\u0000\u00f5\u00f6\u0007\u0006\u0000\u0000\u00f6\u00f7\u0007\u0007"+
- "\u0000\u0000\u00f7\u00f8\u0007\b\u0000\u0000\u00f8-\u0001\u0000\u0000"+
- "\u0000\u00f9\u00fa\u0003d.\u0000\u00fa\u00fb\u0001\u0000\u0000\u0000\u00fb"+
- "\u00fc\u0006\u0013\u0006\u0000\u00fc/\u0001\u0000\u0000\u0000\u00fd\u00fe"+
- "\u0003b-\u0000\u00fe\u00ff\u0001\u0000\u0000\u0000\u00ff\u0100\u0006\u0014"+
- "\u0007\u0000\u01001\u0001\u0000\u0000\u0000\u0101\u0102\u0005]\u0000\u0000"+
- "\u0102\u0103\u0001\u0000\u0000\u0000\u0103\u0104\u0006\u0015\u0004\u0000"+
- "\u01043\u0001\u0000\u0000\u0000\u0105\u0106\u0005<\u0000\u0000\u0106\u0107"+
- "\u0005!\u0000\u0000\u0107\u0108\u0001\u0000\u0000\u0000\u0108\u0109\u0006"+
- "\u0016\b\u0000\u01095\u0001\u0000\u0000\u0000\u010a\u010b\u0003X(\u0000"+
- "\u010b\u010c\u0001\u0000\u0000\u0000\u010c\u010d\u0006\u0017\u0000\u0000"+
- "\u010d7\u0001\u0000\u0000\u0000\u010e\u010f\u0003\f\u0002\u0000\u010f"+
- "\u0110\u0001\u0000\u0000\u0000\u0110\u0111\u0006\u0018\t\u0000\u01119"+
- "\u0001\u0000\u0000\u0000\u0112\u0113\u0003\b\u0000\u0000\u0113\u0114\u0001"+
- "\u0000\u0000\u0000\u0114\u0115\u0006\u0019\n\u0000\u0115;\u0001\u0000"+
- "\u0000\u0000\u0116\u0117\u0005>\u0000\u0000\u0117\u0118\u0001\u0000\u0000"+
- "\u0000\u0118\u0119\u0006\u001a\u0004\u0000\u0119=\u0001\u0000\u0000\u0000"+
- "\u011a\u011b\u0005[\u0000\u0000\u011b\u011c\u0001\u0000\u0000\u0000\u011c"+
- "\u011d\u0006\u001b\u000b\u0000\u011d\u011e\u0006\u001b\f\u0000\u011e?"+
- "\u0001\u0000\u0000\u0000\u011f\u0120\u0003X(\u0000\u0120\u0121\u0001\u0000"+
- "\u0000\u0000\u0121\u0122\u0006\u001c\u0000\u0000\u0122A\u0001\u0000\u0000"+
- "\u0000\u0123\u0125\b\t\u0000\u0000\u0124\u0123\u0001\u0000\u0000\u0000"+
- "\u0125\u0126\u0001\u0000\u0000\u0000\u0126\u0124\u0001\u0000\u0000\u0000"+
- "\u0126\u0127\u0001\u0000\u0000\u0000\u0127C\u0001\u0000\u0000\u0000\u0128"+
- "\u0129\u0005]\u0000\u0000\u0129\u012a\u0001\u0000\u0000\u0000\u012a\u012b"+
- "\u0006\u001e\u0004\u0000\u012bE\u0001\u0000\u0000\u0000\u012c\u012d\t"+
- "\u0000\u0000\u0000\u012d\u012e\u0001\u0000\u0000\u0000\u012e\u012f\u0006"+
- "\u001f\u000b\u0000\u012fG\u0001\u0000\u0000\u0000\u0130\u0131\u0003T&"+
- "\u0000\u0131\u0132\u0001\u0000\u0000\u0000\u0132\u0133\u0006 \r\u0000"+
- "\u0133\u0134\u0006 \u0004\u0000\u0134I\u0001\u0000\u0000\u0000\u0135\u0136"+
- "\u0003X(\u0000\u0136\u0137\u0001\u0000\u0000\u0000\u0137\u0138\u0006!"+
- "\u0000\u0000\u0138K\u0001\u0000\u0000\u0000\u0139\u013a\u0003\u0016\u0007"+
- "\u0000\u013a\u013b\u0001\u0000\u0000\u0000\u013b\u013c\u0006\"\u000b\u0000"+
- "\u013c\u013d\u0006\"\u000e\u0000\u013dM\u0001\u0000\u0000\u0000\u013e"+
- "\u0140\b\n\u0000\u0000\u013f\u013e\u0001\u0000\u0000\u0000\u0140\u0141"+
- "\u0001\u0000\u0000\u0000\u0141\u013f\u0001\u0000\u0000\u0000\u0141\u0142"+
- "\u0001\u0000\u0000\u0000\u0142O\u0001\u0000\u0000\u0000\u0143\u0144\t"+
- "\u0000\u0000\u0000\u0144\u0145\u0001\u0000\u0000\u0000\u0145\u0146\u0006"+
- "$\u000b\u0000\u0146\u0147\u0006$\u0004\u0000\u0147Q\u0001\u0000\u0000"+
- "\u0000\u0148\u0149\u0005>\u0000\u0000\u0149\u014a\u0001\u0000\u0000\u0000"+
- "\u014a\u014b\u0006%\u0004\u0000\u014bS\u0001\u0000\u0000\u0000\u014c\u014d"+
- "\u0003\u0016\u0007\u0000\u014d\u014e\u0005>\u0000\u0000\u014e\u014f\u0001"+
- "\u0000\u0000\u0000\u014f\u0150\u0006&\u0004\u0000\u0150U\u0001\u0000\u0000"+
- "\u0000\u0151\u0152\u0005/\u0000\u0000\u0152\u0153\u0005>\u0000\u0000\u0153"+
- "\u0154\u0001\u0000\u0000\u0000\u0154\u0155\u0006\'\u0004\u0000\u0155W"+
- "\u0001\u0000\u0000\u0000\u0156\u0157\u0007\u000b\u0000\u0000\u0157\u0158"+
- "\u0001\u0000\u0000\u0000\u0158\u0159\u0006(\u0000\u0000\u0159Y\u0001\u0000"+
- "\u0000\u0000\u015a\u015b\u0005%\u0000\u0000\u015b\u015c\u0005@\u0000\u0000"+
- "\u015c[\u0001\u0000\u0000\u0000\u015d\u015e\u0005%\u0000\u0000\u015e]"+
- "\u0001\u0000\u0000\u0000\u015f\u0160\u0005/\u0000\u0000\u0160_\u0001\u0000"+
- "\u0000\u0000\u0161\u0162\u0005=\u0000\u0000\u0162a\u0001\u0000\u0000\u0000"+
- "\u0163\u0167\u0005\"\u0000\u0000\u0164\u0166\b\f\u0000\u0000\u0165\u0164"+
- "\u0001\u0000\u0000\u0000\u0166\u0169\u0001\u0000\u0000\u0000\u0167\u0165"+
- "\u0001\u0000\u0000\u0000\u0167\u0168\u0001\u0000\u0000\u0000\u0168\u016a"+
- "\u0001\u0000\u0000\u0000\u0169\u0167\u0001\u0000\u0000\u0000\u016a\u0174"+
- "\u0005\"\u0000\u0000\u016b\u016f\u0005\'\u0000\u0000\u016c\u016e\b\r\u0000"+
- "\u0000\u016d\u016c\u0001\u0000\u0000\u0000\u016e\u0171\u0001\u0000\u0000"+
- "\u0000\u016f\u016d\u0001\u0000\u0000\u0000\u016f\u0170\u0001\u0000\u0000"+
- "\u0000\u0170\u0172\u0001\u0000\u0000\u0000\u0171\u016f\u0001\u0000\u0000"+
- "\u0000\u0172\u0174\u0005\'\u0000\u0000\u0173\u0163\u0001\u0000\u0000\u0000"+
- "\u0173\u016b\u0001\u0000\u0000\u0000\u0174c\u0001\u0000\u0000\u0000\u0175"+
- "\u0179\u0003l2\u0000\u0176\u0178\u0003j1\u0000\u0177\u0176\u0001\u0000"+
- "\u0000\u0000\u0178\u017b\u0001\u0000\u0000\u0000\u0179\u0177\u0001\u0000"+
- "\u0000\u0000\u0179\u017a\u0001\u0000\u0000\u0000\u017ae\u0001\u0000\u0000"+
- "\u0000\u017b\u0179\u0001\u0000\u0000\u0000\u017c\u017d\u0007\u000e\u0000"+
- "\u0000\u017dg\u0001\u0000\u0000\u0000\u017e\u017f\u0007\u000f\u0000\u0000"+
- "\u017fi\u0001\u0000\u0000\u0000\u0180\u0185\u0003l2\u0000\u0181\u0185"+
- "\u0007\u0010\u0000\u0000\u0182\u0185\u0003h0\u0000\u0183\u0185\u0007\u0011"+
- "\u0000\u0000\u0184\u0180\u0001\u0000\u0000\u0000\u0184\u0181\u0001\u0000"+
- "\u0000\u0000\u0184\u0182\u0001\u0000\u0000\u0000\u0184\u0183\u0001\u0000"+
- "\u0000\u0000\u0185k\u0001\u0000\u0000\u0000\u0186\u0188\u0007\u0012\u0000"+
- "\u0000\u0187\u0186\u0001\u0000\u0000\u0000\u0188m\u0001\u0000\u0000\u0000"+
- "\u001a\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007v\u008a\u009f\u00aa"+
- "\u00ae\u00b2\u00b5\u00b7\u00bd\u00dd\u0126\u0141\u0167\u016f\u0173\u0179"+
- "\u0184\u0187\u000f\u0006\u0000\u0000\u0005\u0007\u0000\u0005\u0005\u0000"+
- "\u0005\u0001\u0000\u0004\u0000\u0000\u0005\u0002\u0000\u0007$\u0000\u0007"+
- "#\u0000\u0005\u0003\u0000\u0007\u0003\u0000\u0007\u0001\u0000\u0003\u0000"+
- "\u0000\u0005\u0004\u0000\u0007\u001c\u0000\u0005\u0006\u0000";
+ "MMmm\u0002\u0000AAaa\u0002\u0000\"\"<<\u0002\u0000\'\'<<\u0003\u00000"+
+ "9AFaf\u0001\u000009\u0002\u0000-.__\u0003\u0000\u00b7\u00b7\u0300\u036f"+
+ "\u203f\u2040\u000f\u0000::AZ__az\u00c0\u00d6\u00d8\u00f6\u00f8\u02ff\u0370"+
+ "\u037d\u037f\u1fff\u200c\u200d\u2070\u218f\u3001\u8000\ud7ff\u8000\uf900"+
+ "\u8000\ufdcf\u8000\ufdf0\u8000\ufffd\u8001\u0000\u800e\uffff\u0195\u0000"+
+ "\b\u0001\u0000\u0000\u0000\u0000\n\u0001\u0000\u0000\u0000\u0000\f\u0001"+
+ "\u0000\u0000\u0000\u0000\u000e\u0001\u0000\u0000\u0000\u0000\u0010\u0001"+
+ "\u0000\u0000\u0000\u0000\u0012\u0001\u0000\u0000\u0000\u0000\u0014\u0001"+
+ "\u0000\u0000\u0000\u0000\u0016\u0001\u0000\u0000\u0000\u0000\u0018\u0001"+
+ "\u0000\u0000\u0000\u0000\u001a\u0001\u0000\u0000\u0000\u0000\u001c\u0001"+
+ "\u0000\u0000\u0000\u0000\u001e\u0001\u0000\u0000\u0000\u0000 \u0001\u0000"+
+ "\u0000\u0000\u0001&\u0001\u0000\u0000\u0000\u0001(\u0001\u0000\u0000\u0000"+
+ "\u0001*\u0001\u0000\u0000\u0000\u0001,\u0001\u0000\u0000\u0000\u0001."+
+ "\u0001\u0000\u0000\u0000\u00010\u0001\u0000\u0000\u0000\u00022\u0001\u0000"+
+ "\u0000\u0000\u00024\u0001\u0000\u0000\u0000\u00026\u0001\u0000\u0000\u0000"+
+ "\u00028\u0001\u0000\u0000\u0000\u0002:\u0001\u0000\u0000\u0000\u0003<"+
+ "\u0001\u0000\u0000\u0000\u0003>\u0001\u0000\u0000\u0000\u0003@\u0001\u0000"+
+ "\u0000\u0000\u0003B\u0001\u0000\u0000\u0000\u0004D\u0001\u0000\u0000\u0000"+
+ "\u0004F\u0001\u0000\u0000\u0000\u0005H\u0001\u0000\u0000\u0000\u0005J"+
+ "\u0001\u0000\u0000\u0000\u0005L\u0001\u0000\u0000\u0000\u0005N\u0001\u0000"+
+ "\u0000\u0000\u0006P\u0001\u0000\u0000\u0000\u0007R\u0001\u0000\u0000\u0000"+
+ "\u0007T\u0001\u0000\u0000\u0000\u0007V\u0001\u0000\u0000\u0000\u0007X"+
+ "\u0001\u0000\u0000\u0000\u0007Z\u0001\u0000\u0000\u0000\u0007\\\u0001"+
+ "\u0000\u0000\u0000\u0007^\u0001\u0000\u0000\u0000\u0007`\u0001\u0000\u0000"+
+ "\u0000\u0007b\u0001\u0000\u0000\u0000\u0007d\u0001\u0000\u0000\u0000\u0007"+
+ "f\u0001\u0000\u0000\u0000\bp\u0001\u0000\u0000\u0000\n\u007f\u0001\u0000"+
+ "\u0000\u0000\f\u0093\u0001\u0000\u0000\u0000\u000e\u0097\u0001\u0000\u0000"+
+ "\u0000\u0010\u00b0\u0001\u0000\u0000\u0000\u0012\u00b7\u0001\u0000\u0000"+
+ "\u0000\u0014\u00bf\u0001\u0000\u0000\u0000\u0016\u00c3\u0001\u0000\u0000"+
+ "\u0000\u0018\u00c5\u0001\u0000\u0000\u0000\u001a\u00cd\u0001\u0000\u0000"+
+ "\u0000\u001c\u00d1\u0001\u0000\u0000\u0000\u001e\u00d7\u0001\u0000\u0000"+
+ "\u0000 \u00dd\u0001\u0000\u0000\u0000\"\u00e1\u0001\u0000\u0000\u0000"+
+ "$\u00e5\u0001\u0000\u0000\u0000&\u00e7\u0001\u0000\u0000\u0000(\u00eb"+
+ "\u0001\u0000\u0000\u0000*\u00ef\u0001\u0000\u0000\u0000,\u00f3\u0001\u0000"+
+ "\u0000\u0000.\u00fb\u0001\u0000\u0000\u00000\u00ff\u0001\u0000\u0000\u0000"+
+ "2\u0103\u0001\u0000\u0000\u00004\u0107\u0001\u0000\u0000\u00006\u010c"+
+ "\u0001\u0000\u0000\u00008\u0110\u0001\u0000\u0000\u0000:\u0114\u0001\u0000"+
+ "\u0000\u0000<\u0118\u0001\u0000\u0000\u0000>\u011c\u0001\u0000\u0000\u0000"+
+ "@\u0121\u0001\u0000\u0000\u0000B\u0126\u0001\u0000\u0000\u0000D\u012a"+
+ "\u0001\u0000\u0000\u0000F\u012e\u0001\u0000\u0000\u0000H\u0132\u0001\u0000"+
+ "\u0000\u0000J\u0137\u0001\u0000\u0000\u0000L\u013b\u0001\u0000\u0000\u0000"+
+ "N\u0141\u0001\u0000\u0000\u0000P\u0145\u0001\u0000\u0000\u0000R\u014a"+
+ "\u0001\u0000\u0000\u0000T\u014e\u0001\u0000\u0000\u0000V\u0153\u0001\u0000"+
+ "\u0000\u0000X\u0158\u0001\u0000\u0000\u0000Z\u015c\u0001\u0000\u0000\u0000"+
+ "\\\u015f\u0001\u0000\u0000\u0000^\u0161\u0001\u0000\u0000\u0000`\u0166"+
+ "\u0001\u0000\u0000\u0000b\u0168\u0001\u0000\u0000\u0000d\u017a\u0001\u0000"+
+ "\u0000\u0000f\u017c\u0001\u0000\u0000\u0000h\u0183\u0001\u0000\u0000\u0000"+
+ "j\u0185\u0001\u0000\u0000\u0000l\u018b\u0001\u0000\u0000\u0000n\u018e"+
+ "\u0001\u0000\u0000\u0000pq\u0005<\u0000\u0000qr\u0005!\u0000\u0000rs\u0005"+
+ "-\u0000\u0000st\u0005-\u0000\u0000tx\u0001\u0000\u0000\u0000uw\t\u0000"+
+ "\u0000\u0000vu\u0001\u0000\u0000\u0000wz\u0001\u0000\u0000\u0000xy\u0001"+
+ "\u0000\u0000\u0000xv\u0001\u0000\u0000\u0000y{\u0001\u0000\u0000\u0000"+
+ "zx\u0001\u0000\u0000\u0000{|\u0005-\u0000\u0000|}\u0005-\u0000\u0000}"+
+ "~\u0005>\u0000\u0000~\t\u0001\u0000\u0000\u0000\u007f\u0080\u0005<\u0000"+
+ "\u0000\u0080\u0081\u0005!\u0000\u0000\u0081\u0082\u0005[\u0000\u0000\u0082"+
+ "\u0083\u0005C\u0000\u0000\u0083\u0084\u0005D\u0000\u0000\u0084\u0085\u0005"+
+ "A\u0000\u0000\u0085\u0086\u0005T\u0000\u0000\u0086\u0087\u0005A\u0000"+
+ "\u0000\u0087\u0088\u0005[\u0000\u0000\u0088\u008c\u0001\u0000\u0000\u0000"+
+ "\u0089\u008b\t\u0000\u0000\u0000\u008a\u0089\u0001\u0000\u0000\u0000\u008b"+
+ "\u008e\u0001\u0000\u0000\u0000\u008c\u008d\u0001\u0000\u0000\u0000\u008c"+
+ "\u008a\u0001\u0000\u0000\u0000\u008d\u008f\u0001\u0000\u0000\u0000\u008e"+
+ "\u008c\u0001\u0000\u0000\u0000\u008f\u0090\u0005]\u0000\u0000\u0090\u0091"+
+ "\u0005]\u0000\u0000\u0091\u0092\u0005>\u0000\u0000\u0092\u000b\u0001\u0000"+
+ "\u0000\u0000\u0093\u0094\u0005%\u0000\u0000\u0094\u0095\u0003f/\u0000"+
+ "\u0095\u0096\u0005;\u0000\u0000\u0096\r\u0001\u0000\u0000\u0000\u0097"+
+ "\u0098\u0005&\u0000\u0000\u0098\u0099\u0003f/\u0000\u0099\u009a\u0005"+
+ ";\u0000\u0000\u009a\u000f\u0001\u0000\u0000\u0000\u009b\u009c\u0005&\u0000"+
+ "\u0000\u009c\u009d\u0005#\u0000\u0000\u009d\u009f\u0001\u0000\u0000\u0000"+
+ "\u009e\u00a0\u0003j1\u0000\u009f\u009e\u0001\u0000\u0000\u0000\u00a0\u00a1"+
+ "\u0001\u0000\u0000\u0000\u00a1\u009f\u0001\u0000\u0000\u0000\u00a1\u00a2"+
+ "\u0001\u0000\u0000\u0000\u00a2\u00a3\u0001\u0000\u0000\u0000\u00a3\u00a4"+
+ "\u0005;\u0000\u0000\u00a4\u00b1\u0001\u0000\u0000\u0000\u00a5\u00a6\u0005"+
+ "&\u0000\u0000\u00a6\u00a7\u0005#\u0000\u0000\u00a7\u00a8\u0005x\u0000"+
+ "\u0000\u00a8\u00aa\u0001\u0000\u0000\u0000\u00a9\u00ab\u0003h0\u0000\u00aa"+
+ "\u00a9\u0001\u0000\u0000\u0000\u00ab\u00ac\u0001\u0000\u0000\u0000\u00ac"+
+ "\u00aa\u0001\u0000\u0000\u0000\u00ac\u00ad\u0001\u0000\u0000\u0000\u00ad"+
+ "\u00ae\u0001\u0000\u0000\u0000\u00ae\u00af\u0005;\u0000\u0000\u00af\u00b1"+
+ "\u0001\u0000\u0000\u0000\u00b0\u009b\u0001\u0000\u0000\u0000\u00b0\u00a5"+
+ "\u0001\u0000\u0000\u0000\u00b1\u0011\u0001\u0000\u0000\u0000\u00b2\u00b8"+
+ "\u0007\u0000\u0000\u0000\u00b3\u00b5\u0005\r\u0000\u0000\u00b4\u00b3\u0001"+
+ "\u0000\u0000\u0000\u00b4\u00b5\u0001\u0000\u0000\u0000\u00b5\u00b6\u0001"+
+ "\u0000\u0000\u0000\u00b6\u00b8\u0005\n\u0000\u0000\u00b7\u00b2\u0001\u0000"+
+ "\u0000\u0000\u00b7\u00b4\u0001\u0000\u0000\u0000\u00b8\u00b9\u0001\u0000"+
+ "\u0000\u0000\u00b9\u00b7\u0001\u0000\u0000\u0000\u00b9\u00ba\u0001\u0000"+
+ "\u0000\u0000\u00ba\u00bb\u0001\u0000\u0000\u0000\u00bb\u00bc\u0006\u0005"+
+ "\u0000\u0000\u00bc\u0013\u0001\u0000\u0000\u0000\u00bd\u00c0\u0003\"\r"+
+ "\u0000\u00be\u00c0\u0003$\u000e\u0000\u00bf\u00bd\u0001\u0000\u0000\u0000"+
+ "\u00bf\u00be\u0001\u0000\u0000\u0000\u00c0\u00c1\u0001\u0000\u0000\u0000"+
+ "\u00c1\u00c2\u0006\u0006\u0000\u0000\u00c2\u0015\u0001\u0000\u0000\u0000"+
+ "\u00c3\u00c4\u0005?\u0000\u0000\u00c4\u0017\u0001\u0000\u0000\u0000\u00c5"+
+ "\u00c6\u0005<\u0000\u0000\u00c6\u00c7\u0003\u0016\u0007\u0000\u00c7\u00c8"+
+ "\u0005x\u0000\u0000\u00c8\u00c9\u0005m\u0000\u0000\u00c9\u00ca\u0005l"+
+ "\u0000\u0000\u00ca\u00cb\u0001\u0000\u0000\u0000\u00cb\u00cc\u0006\b\u0001"+
+ "\u0000\u00cc\u0019\u0001\u0000\u0000\u0000\u00cd\u00ce\u0005<\u0000\u0000"+
+ "\u00ce\u00cf\u0001\u0000\u0000\u0000\u00cf\u00d0\u0006\t\u0001\u0000\u00d0"+
+ "\u001b\u0001\u0000\u0000\u0000\u00d1\u00d2\u0005<\u0000\u0000\u00d2\u00d3"+
+ "\u0003\u0016\u0007\u0000\u00d3\u00d4\u0003f/\u0000\u00d4\u00d5\u0001\u0000"+
+ "\u0000\u0000\u00d5\u00d6\u0006\n\u0002\u0000\u00d6\u001d\u0001\u0000\u0000"+
+ "\u0000\u00d7\u00d8\u0005<\u0000\u0000\u00d8\u00d9\u0005!\u0000\u0000\u00d9"+
+ "\u00da\u0001\u0000\u0000\u0000\u00da\u00db\u0006\u000b\u0003\u0000\u00db"+
+ "\u001f\u0001\u0000\u0000\u0000\u00dc\u00de\b\u0001\u0000\u0000\u00dd\u00dc"+
+ "\u0001\u0000\u0000\u0000\u00de\u00df\u0001\u0000\u0000\u0000\u00df\u00dd"+
+ "\u0001\u0000\u0000\u0000\u00df\u00e0\u0001\u0000\u0000\u0000\u00e0!\u0001"+
+ "\u0000\u0000\u0000\u00e1\u00e2\u0005\u00ef\u0000\u0000\u00e2\u00e3\u0005"+
+ "\u00bb\u0000\u0000\u00e3\u00e4\u0005\u00bf\u0000\u0000\u00e4#\u0001\u0000"+
+ "\u0000\u0000\u00e5\u00e6\u0005\u8000\ufeff\u0000\u0000\u00e6%\u0001\u0000"+
+ "\u0000\u0000\u00e7\u00e8\u0005>\u0000\u0000\u00e8\u00e9\u0001\u0000\u0000"+
+ "\u0000\u00e9\u00ea\u0006\u000f\u0004\u0000\u00ea\'\u0001\u0000\u0000\u0000"+
+ "\u00eb\u00ec\u0005[\u0000\u0000\u00ec\u00ed\u0001\u0000\u0000\u0000\u00ed"+
+ "\u00ee\u0006\u0010\u0005\u0000\u00ee)\u0001\u0000\u0000\u0000\u00ef\u00f0"+
+ "\u0003X(\u0000\u00f0\u00f1\u0001\u0000\u0000\u0000\u00f1\u00f2\u0006\u0011"+
+ "\u0000\u0000\u00f2+\u0001\u0000\u0000\u0000\u00f3\u00f4\u0007\u0002\u0000"+
+ "\u0000\u00f4\u00f5\u0007\u0003\u0000\u0000\u00f5\u00f6\u0007\u0004\u0000"+
+ "\u0000\u00f6\u00f7\u0007\u0005\u0000\u0000\u00f7\u00f8\u0007\u0006\u0000"+
+ "\u0000\u00f8\u00f9\u0007\u0007\u0000\u0000\u00f9\u00fa\u0007\b\u0000\u0000"+
+ "\u00fa-\u0001\u0000\u0000\u0000\u00fb\u00fc\u0003f/\u0000\u00fc\u00fd"+
+ "\u0001\u0000\u0000\u0000\u00fd\u00fe\u0006\u0013\u0006\u0000\u00fe/\u0001"+
+ "\u0000\u0000\u0000\u00ff\u0100\u0003d.\u0000\u0100\u0101\u0001\u0000\u0000"+
+ "\u0000\u0101\u0102\u0006\u0014\u0007\u0000\u01021\u0001\u0000\u0000\u0000"+
+ "\u0103\u0104\u0005]\u0000\u0000\u0104\u0105\u0001\u0000\u0000\u0000\u0105"+
+ "\u0106\u0006\u0015\u0004\u0000\u01063\u0001\u0000\u0000\u0000\u0107\u0108"+
+ "\u0005<\u0000\u0000\u0108\u0109\u0005!\u0000\u0000\u0109\u010a\u0001\u0000"+
+ "\u0000\u0000\u010a\u010b\u0006\u0016\b\u0000\u010b5\u0001\u0000\u0000"+
+ "\u0000\u010c\u010d\u0003X(\u0000\u010d\u010e\u0001\u0000\u0000\u0000\u010e"+
+ "\u010f\u0006\u0017\u0000\u0000\u010f7\u0001\u0000\u0000\u0000\u0110\u0111"+
+ "\u0003\f\u0002\u0000\u0111\u0112\u0001\u0000\u0000\u0000\u0112\u0113\u0006"+
+ "\u0018\t\u0000\u01139\u0001\u0000\u0000\u0000\u0114\u0115\u0003\b\u0000"+
+ "\u0000\u0115\u0116\u0001\u0000\u0000\u0000\u0116\u0117\u0006\u0019\n\u0000"+
+ "\u0117;\u0001\u0000\u0000\u0000\u0118\u0119\u0005>\u0000\u0000\u0119\u011a"+
+ "\u0001\u0000\u0000\u0000\u011a\u011b\u0006\u001a\u0004\u0000\u011b=\u0001"+
+ "\u0000\u0000\u0000\u011c\u011d\u0005[\u0000\u0000\u011d\u011e\u0001\u0000"+
+ "\u0000\u0000\u011e\u011f\u0006\u001b\u000b\u0000\u011f\u0120\u0006\u001b"+
+ "\f\u0000\u0120?\u0001\u0000\u0000\u0000\u0121\u0122\u0003X(\u0000\u0122"+
+ "\u0123\u0001\u0000\u0000\u0000\u0123\u0124\u0006\u001c\u0000\u0000\u0124"+
+ "A\u0001\u0000\u0000\u0000\u0125\u0127\b\t\u0000\u0000\u0126\u0125\u0001"+
+ "\u0000\u0000\u0000\u0127\u0128\u0001\u0000\u0000\u0000\u0128\u0126\u0001"+
+ "\u0000\u0000\u0000\u0128\u0129\u0001\u0000\u0000\u0000\u0129C\u0001\u0000"+
+ "\u0000\u0000\u012a\u012b\u0005]\u0000\u0000\u012b\u012c\u0001\u0000\u0000"+
+ "\u0000\u012c\u012d\u0006\u001e\u0004\u0000\u012dE\u0001\u0000\u0000\u0000"+
+ "\u012e\u012f\t\u0000\u0000\u0000\u012f\u0130\u0001\u0000\u0000\u0000\u0130"+
+ "\u0131\u0006\u001f\u000b\u0000\u0131G\u0001\u0000\u0000\u0000\u0132\u0133"+
+ "\u0003T&\u0000\u0133\u0134\u0001\u0000\u0000\u0000\u0134\u0135\u0006 "+
+ "\r\u0000\u0135\u0136\u0006 \u0004\u0000\u0136I\u0001\u0000\u0000\u0000"+
+ "\u0137\u0138\u0003X(\u0000\u0138\u0139\u0001\u0000\u0000\u0000\u0139\u013a"+
+ "\u0006!\u0000\u0000\u013aK\u0001\u0000\u0000\u0000\u013b\u013c\u0003\u0016"+
+ "\u0007\u0000\u013c\u013d\u0001\u0000\u0000\u0000\u013d\u013e\u0006\"\u000b"+
+ "\u0000\u013e\u013f\u0006\"\u000e\u0000\u013fM\u0001\u0000\u0000\u0000"+
+ "\u0140\u0142\b\n\u0000\u0000\u0141\u0140\u0001\u0000\u0000\u0000\u0142"+
+ "\u0143\u0001\u0000\u0000\u0000\u0143\u0141\u0001\u0000\u0000\u0000\u0143"+
+ "\u0144\u0001\u0000\u0000\u0000\u0144O\u0001\u0000\u0000\u0000\u0145\u0146"+
+ "\t\u0000\u0000\u0000\u0146\u0147\u0001\u0000\u0000\u0000\u0147\u0148\u0006"+
+ "$\u000b\u0000\u0148\u0149\u0006$\u0004\u0000\u0149Q\u0001\u0000\u0000"+
+ "\u0000\u014a\u014b\u0005>\u0000\u0000\u014b\u014c\u0001\u0000\u0000\u0000"+
+ "\u014c\u014d\u0006%\u0004\u0000\u014dS\u0001\u0000\u0000\u0000\u014e\u014f"+
+ "\u0003\u0016\u0007\u0000\u014f\u0150\u0005>\u0000\u0000\u0150\u0151\u0001"+
+ "\u0000\u0000\u0000\u0151\u0152\u0006&\u0004\u0000\u0152U\u0001\u0000\u0000"+
+ "\u0000\u0153\u0154\u0005/\u0000\u0000\u0154\u0155\u0005>\u0000\u0000\u0155"+
+ "\u0156\u0001\u0000\u0000\u0000\u0156\u0157\u0006\'\u0004\u0000\u0157W"+
+ "\u0001\u0000\u0000\u0000\u0158\u0159\u0007\u000b\u0000\u0000\u0159\u015a"+
+ "\u0001\u0000\u0000\u0000\u015a\u015b\u0006(\u0000\u0000\u015bY\u0001\u0000"+
+ "\u0000\u0000\u015c\u015d\u0005%\u0000\u0000\u015d\u015e\u0005@\u0000\u0000"+
+ "\u015e[\u0001\u0000\u0000\u0000\u015f\u0160\u0005%\u0000\u0000\u0160]"+
+ "\u0001\u0000\u0000\u0000\u0161\u0162\u0007\f\u0000\u0000\u0162\u0163\u0007"+
+ "\b\u0000\u0000\u0163\u0164\u0007\u0005\u0000\u0000\u0164\u0165\u0007\r"+
+ "\u0000\u0000\u0165_\u0001\u0000\u0000\u0000\u0166\u0167\u0005/\u0000\u0000"+
+ "\u0167a\u0001\u0000\u0000\u0000\u0168\u0169\u0005=\u0000\u0000\u0169c"+
+ "\u0001\u0000\u0000\u0000\u016a\u016e\u0005\"\u0000\u0000\u016b\u016d\b"+
+ "\u000e\u0000\u0000\u016c\u016b\u0001\u0000\u0000\u0000\u016d\u0170\u0001"+
+ "\u0000\u0000\u0000\u016e\u016c\u0001\u0000\u0000\u0000\u016e\u016f\u0001"+
+ "\u0000\u0000\u0000\u016f\u0171\u0001\u0000\u0000\u0000\u0170\u016e\u0001"+
+ "\u0000\u0000\u0000\u0171\u017b\u0005\"\u0000\u0000\u0172\u0176\u0005\'"+
+ "\u0000\u0000\u0173\u0175\b\u000f\u0000\u0000\u0174\u0173\u0001\u0000\u0000"+
+ "\u0000\u0175\u0178\u0001\u0000\u0000\u0000\u0176\u0174\u0001\u0000\u0000"+
+ "\u0000\u0176\u0177\u0001\u0000\u0000\u0000\u0177\u0179\u0001\u0000\u0000"+
+ "\u0000\u0178\u0176\u0001\u0000\u0000\u0000\u0179\u017b\u0005\'\u0000\u0000"+
+ "\u017a\u016a\u0001\u0000\u0000\u0000\u017a\u0172\u0001\u0000\u0000\u0000"+
+ "\u017be\u0001\u0000\u0000\u0000\u017c\u0180\u0003n3\u0000\u017d\u017f"+
+ "\u0003l2\u0000\u017e\u017d\u0001\u0000\u0000\u0000\u017f\u0182\u0001\u0000"+
+ "\u0000\u0000\u0180\u017e\u0001\u0000\u0000\u0000\u0180\u0181\u0001\u0000"+
+ "\u0000\u0000\u0181g\u0001\u0000\u0000\u0000\u0182\u0180\u0001\u0000\u0000"+
+ "\u0000\u0183\u0184\u0007\u0010\u0000\u0000\u0184i\u0001\u0000\u0000\u0000"+
+ "\u0185\u0186\u0007\u0011\u0000\u0000\u0186k\u0001\u0000\u0000\u0000\u0187"+
+ "\u018c\u0003n3\u0000\u0188\u018c\u0007\u0012\u0000\u0000\u0189\u018c\u0003"+
+ "j1\u0000\u018a\u018c\u0007\u0013\u0000\u0000\u018b\u0187\u0001\u0000\u0000"+
+ "\u0000\u018b\u0188\u0001\u0000\u0000\u0000\u018b\u0189\u0001\u0000\u0000"+
+ "\u0000\u018b\u018a\u0001\u0000\u0000\u0000\u018cm\u0001\u0000\u0000\u0000"+
+ "\u018d\u018f\u0007\u0014\u0000\u0000\u018e\u018d\u0001\u0000\u0000\u0000"+
+ "\u018fo\u0001\u0000\u0000\u0000\u001a\u0000\u0001\u0002\u0003\u0004\u0005"+
+ "\u0006\u0007x\u008c\u00a1\u00ac\u00b0\u00b4\u00b7\u00b9\u00bf\u00df\u0128"+
+ "\u0143\u016e\u0176\u017a\u0180\u018b\u018e\u000f\u0006\u0000\u0000\u0005"+
+ "\u0007\u0000\u0005\u0005\u0000\u0005\u0001\u0000\u0004\u0000\u0000\u0005"+
+ "\u0002\u0000\u0007%\u0000\u0007$\u0000\u0005\u0003\u0000\u0007\u0003\u0000"+
+ "\u0007\u0001\u0000\u0003\u0000\u0000\u0005\u0004\u0000\u0007\u001c\u0000"+
+ "\u0005\u0006\u0000";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.tokens b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.tokens
index c0c0364234c..68761a1fcb8 100644
--- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.tokens
+++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLLexer.tokens
@@ -30,14 +30,15 @@ SLASH_CLOSE=29
S=30
DIRECTIVE_OPEN=31
DIRECTIVE_CLOSE=32
-SLASH=33
-EQUALS=34
-STRING=35
-Name=36
+META=33
+SLASH=34
+EQUALS=35
+STRING=36
+Name=37
'?'=8
'<'=10
'/>'=29
'%@'=31
'%'=32
-'/'=33
-'='=34
+'/'=34
+'='=35
diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.interp b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.interp
index ed42446867f..c1ccbdf02cc 100755
--- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.interp
+++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.interp
@@ -32,6 +32,7 @@ null
null
'%@'
'%'
+null
'/'
'='
null
@@ -71,6 +72,7 @@ SLASH_CLOSE
S
DIRECTIVE_OPEN
DIRECTIVE_CLOSE
+META
SLASH
EQUALS
STRING
@@ -82,6 +84,7 @@ prolog
xmldecl
misc
doctypedecl
+metadata
intsubset
markupdecl
declSep
@@ -96,4 +99,4 @@ chardata
atn:
-[4, 1, 36, 182, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 1, 0, 3, 0, 34, 8, 0, 1, 0, 1, 0, 1, 0, 1, 1, 3, 1, 40, 8, 1, 1, 1, 5, 1, 43, 8, 1, 10, 1, 12, 1, 46, 9, 1, 1, 1, 5, 1, 49, 8, 1, 10, 1, 12, 1, 52, 9, 1, 1, 2, 1, 2, 5, 2, 56, 8, 2, 10, 2, 12, 2, 59, 9, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 3, 3, 66, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 5, 4, 73, 8, 4, 10, 4, 12, 4, 76, 9, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 82, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 5, 5, 88, 8, 5, 10, 5, 12, 5, 91, 9, 5, 1, 6, 1, 6, 3, 6, 95, 8, 6, 1, 6, 5, 6, 98, 8, 6, 10, 6, 12, 6, 101, 9, 6, 1, 6, 3, 6, 104, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 109, 8, 6, 1, 7, 1, 7, 1, 8, 3, 8, 114, 8, 8, 1, 9, 1, 9, 4, 9, 118, 8, 9, 11, 9, 12, 9, 119, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 130, 8, 10, 1, 11, 1, 11, 1, 11, 5, 11, 135, 8, 11, 10, 11, 12, 11, 138, 9, 11, 1, 11, 1, 11, 5, 11, 142, 8, 11, 10, 11, 12, 11, 145, 9, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 154, 8, 11, 10, 11, 12, 11, 157, 9, 11, 1, 11, 3, 11, 160, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 166, 8, 12, 10, 12, 12, 12, 169, 9, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 0, 0, 16, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 0, 2, 1, 0, 4, 5, 3, 0, 6, 6, 8, 8, 13, 13, 193, 0, 33, 1, 0, 0, 0, 2, 39, 1, 0, 0, 0, 4, 53, 1, 0, 0, 0, 6, 65, 1, 0, 0, 0, 8, 67, 1, 0, 0, 0, 10, 89, 1, 0, 0, 0, 12, 108, 1, 0, 0, 0, 14, 110, 1, 0, 0, 0, 16, 113, 1, 0, 0, 0, 18, 115, 1, 0, 0, 0, 20, 129, 1, 0, 0, 0, 22, 159, 1, 0, 0, 0, 24, 161, 1, 0, 0, 0, 26, 173, 1, 0, 0, 0, 28, 175, 1, 0, 0, 0, 30, 179, 1, 0, 0, 0, 32, 34, 5, 7, 0, 0, 33, 32, 1, 0, 0, 0, 33, 34, 1, 0, 0, 0, 34, 35, 1, 0, 0, 0, 35, 36, 3, 2, 1, 0, 36, 37, 3, 22, 11, 0, 37, 1, 1, 0, 0, 0, 38, 40, 3, 4, 2, 0, 39, 38, 1, 0, 0, 0, 39, 40, 1, 0, 0, 0, 40, 44, 1, 0, 0, 0, 41, 43, 3, 6, 3, 0, 42, 41, 1, 0, 0, 0, 43, 46, 1, 0, 0, 0, 44, 42, 1, 0, 0, 0, 44, 45, 1, 0, 0, 0, 45, 50, 1, 0, 0, 0, 46, 44, 1, 0, 0, 0, 47, 49, 3, 24, 12, 0, 48, 47, 1, 0, 0, 0, 49, 52, 1, 0, 0, 0, 50, 48, 1, 0, 0, 0, 50, 51, 1, 0, 0, 0, 51, 3, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 53, 57, 5, 9, 0, 0, 54, 56, 3, 28, 14, 0, 55, 54, 1, 0, 0, 0, 56, 59, 1, 0, 0, 0, 57, 55, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 60, 1, 0, 0, 0, 59, 57, 1, 0, 0, 0, 60, 61, 5, 28, 0, 0, 61, 5, 1, 0, 0, 0, 62, 66, 5, 1, 0, 0, 63, 66, 3, 8, 4, 0, 64, 66, 3, 18, 9, 0, 65, 62, 1, 0, 0, 0, 65, 63, 1, 0, 0, 0, 65, 64, 1, 0, 0, 0, 66, 7, 1, 0, 0, 0, 67, 68, 5, 12, 0, 0, 68, 69, 5, 17, 0, 0, 69, 70, 5, 36, 0, 0, 70, 74, 3, 16, 8, 0, 71, 73, 5, 35, 0, 0, 72, 71, 1, 0, 0, 0, 73, 76, 1, 0, 0, 0, 74, 72, 1, 0, 0, 0, 74, 75, 1, 0, 0, 0, 75, 81, 1, 0, 0, 0, 76, 74, 1, 0, 0, 0, 77, 78, 5, 15, 0, 0, 78, 79, 3, 10, 5, 0, 79, 80, 5, 18, 0, 0, 80, 82, 1, 0, 0, 0, 81, 77, 1, 0, 0, 0, 81, 82, 1, 0, 0, 0, 82, 83, 1, 0, 0, 0, 83, 84, 5, 14, 0, 0, 84, 9, 1, 0, 0, 0, 85, 88, 3, 12, 6, 0, 86, 88, 3, 14, 7, 0, 87, 85, 1, 0, 0, 0, 87, 86, 1, 0, 0, 0, 88, 91, 1, 0, 0, 0, 89, 87, 1, 0, 0, 0, 89, 90, 1, 0, 0, 0, 90, 11, 1, 0, 0, 0, 91, 89, 1, 0, 0, 0, 92, 94, 5, 19, 0, 0, 93, 95, 5, 23, 0, 0, 94, 93, 1, 0, 0, 0, 94, 95, 1, 0, 0, 0, 95, 99, 1, 0, 0, 0, 96, 98, 5, 24, 0, 0, 97, 96, 1, 0, 0, 0, 98, 101, 1, 0, 0, 0, 99, 97, 1, 0, 0, 0, 99, 100, 1, 0, 0, 0, 100, 103, 1, 0, 0, 0, 101, 99, 1, 0, 0, 0, 102, 104, 5, 23, 0, 0, 103, 102, 1, 0, 0, 0, 103, 104, 1, 0, 0, 0, 104, 105, 1, 0, 0, 0, 105, 109, 5, 21, 0, 0, 106, 109, 3, 18, 9, 0, 107, 109, 5, 1, 0, 0, 108, 92, 1, 0, 0, 0, 108, 106, 1, 0, 0, 0, 108, 107, 1, 0, 0, 0, 109, 13, 1, 0, 0, 0, 110, 111, 5, 3, 0, 0, 111, 15, 1, 0, 0, 0, 112, 114, 5, 36, 0, 0, 113, 112, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 114, 17, 1, 0, 0, 0, 115, 117, 5, 11, 0, 0, 116, 118, 5, 26, 0, 0, 117, 116, 1, 0, 0, 0, 118, 119, 1, 0, 0, 0, 119, 117, 1, 0, 0, 0, 119, 120, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, 122, 5, 28, 0, 0, 122, 19, 1, 0, 0, 0, 123, 130, 3, 22, 11, 0, 124, 130, 3, 26, 13, 0, 125, 130, 3, 18, 9, 0, 126, 130, 5, 2, 0, 0, 127, 130, 5, 1, 0, 0, 128, 130, 3, 30, 15, 0, 129, 123, 1, 0, 0, 0, 129, 124, 1, 0, 0, 0, 129, 125, 1, 0, 0, 0, 129, 126, 1, 0, 0, 0, 129, 127, 1, 0, 0, 0, 129, 128, 1, 0, 0, 0, 130, 21, 1, 0, 0, 0, 131, 132, 5, 10, 0, 0, 132, 136, 5, 36, 0, 0, 133, 135, 3, 28, 14, 0, 134, 133, 1, 0, 0, 0, 135, 138, 1, 0, 0, 0, 136, 134, 1, 0, 0, 0, 136, 137, 1, 0, 0, 0, 137, 139, 1, 0, 0, 0, 138, 136, 1, 0, 0, 0, 139, 143, 5, 27, 0, 0, 140, 142, 3, 20, 10, 0, 141, 140, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 146, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 146, 147, 5, 10, 0, 0, 147, 148, 5, 33, 0, 0, 148, 149, 5, 36, 0, 0, 149, 160, 5, 27, 0, 0, 150, 151, 5, 10, 0, 0, 151, 155, 5, 36, 0, 0, 152, 154, 3, 28, 14, 0, 153, 152, 1, 0, 0, 0, 154, 157, 1, 0, 0, 0, 155, 153, 1, 0, 0, 0, 155, 156, 1, 0, 0, 0, 156, 158, 1, 0, 0, 0, 157, 155, 1, 0, 0, 0, 158, 160, 5, 29, 0, 0, 159, 131, 1, 0, 0, 0, 159, 150, 1, 0, 0, 0, 160, 23, 1, 0, 0, 0, 161, 162, 5, 10, 0, 0, 162, 163, 5, 31, 0, 0, 163, 167, 5, 36, 0, 0, 164, 166, 3, 28, 14, 0, 165, 164, 1, 0, 0, 0, 166, 169, 1, 0, 0, 0, 167, 165, 1, 0, 0, 0, 167, 168, 1, 0, 0, 0, 168, 170, 1, 0, 0, 0, 169, 167, 1, 0, 0, 0, 170, 171, 5, 32, 0, 0, 171, 172, 5, 27, 0, 0, 172, 25, 1, 0, 0, 0, 173, 174, 7, 0, 0, 0, 174, 27, 1, 0, 0, 0, 175, 176, 5, 36, 0, 0, 176, 177, 5, 34, 0, 0, 177, 178, 5, 35, 0, 0, 178, 29, 1, 0, 0, 0, 179, 180, 7, 1, 0, 0, 180, 31, 1, 0, 0, 0, 22, 33, 39, 44, 50, 57, 65, 74, 81, 87, 89, 94, 99, 103, 108, 113, 119, 129, 136, 143, 155, 159, 167]
\ No newline at end of file
+[4, 1, 37, 195, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 1, 0, 3, 0, 36, 8, 0, 1, 0, 1, 0, 1, 0, 1, 1, 3, 1, 42, 8, 1, 1, 1, 5, 1, 45, 8, 1, 10, 1, 12, 1, 48, 9, 1, 1, 1, 5, 1, 51, 8, 1, 10, 1, 12, 1, 54, 9, 1, 1, 2, 1, 2, 5, 2, 58, 8, 2, 10, 2, 12, 2, 61, 9, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 3, 3, 68, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 5, 4, 75, 8, 4, 10, 4, 12, 4, 78, 9, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 84, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 5, 5, 91, 8, 5, 10, 5, 12, 5, 94, 9, 5, 1, 5, 1, 5, 1, 6, 1, 6, 5, 6, 100, 8, 6, 10, 6, 12, 6, 103, 9, 6, 1, 7, 1, 7, 3, 7, 107, 8, 7, 1, 7, 5, 7, 110, 8, 7, 10, 7, 12, 7, 113, 9, 7, 1, 7, 3, 7, 116, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 121, 8, 7, 1, 8, 1, 8, 1, 9, 3, 9, 126, 8, 9, 1, 10, 1, 10, 4, 10, 130, 8, 10, 11, 10, 12, 10, 131, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 143, 8, 11, 1, 12, 1, 12, 1, 12, 5, 12, 148, 8, 12, 10, 12, 12, 12, 151, 9, 12, 1, 12, 1, 12, 5, 12, 155, 8, 12, 10, 12, 12, 12, 158, 9, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 167, 8, 12, 10, 12, 12, 12, 170, 9, 12, 1, 12, 3, 12, 173, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 179, 8, 13, 10, 13, 12, 13, 182, 9, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 0, 0, 17, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 0, 2, 1, 0, 4, 5, 3, 0, 6, 6, 8, 8, 13, 13, 207, 0, 35, 1, 0, 0, 0, 2, 41, 1, 0, 0, 0, 4, 55, 1, 0, 0, 0, 6, 67, 1, 0, 0, 0, 8, 69, 1, 0, 0, 0, 10, 87, 1, 0, 0, 0, 12, 101, 1, 0, 0, 0, 14, 120, 1, 0, 0, 0, 16, 122, 1, 0, 0, 0, 18, 125, 1, 0, 0, 0, 20, 127, 1, 0, 0, 0, 22, 142, 1, 0, 0, 0, 24, 172, 1, 0, 0, 0, 26, 174, 1, 0, 0, 0, 28, 186, 1, 0, 0, 0, 30, 188, 1, 0, 0, 0, 32, 192, 1, 0, 0, 0, 34, 36, 5, 7, 0, 0, 35, 34, 1, 0, 0, 0, 35, 36, 1, 0, 0, 0, 36, 37, 1, 0, 0, 0, 37, 38, 3, 2, 1, 0, 38, 39, 3, 24, 12, 0, 39, 1, 1, 0, 0, 0, 40, 42, 3, 4, 2, 0, 41, 40, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 46, 1, 0, 0, 0, 43, 45, 3, 6, 3, 0, 44, 43, 1, 0, 0, 0, 45, 48, 1, 0, 0, 0, 46, 44, 1, 0, 0, 0, 46, 47, 1, 0, 0, 0, 47, 52, 1, 0, 0, 0, 48, 46, 1, 0, 0, 0, 49, 51, 3, 26, 13, 0, 50, 49, 1, 0, 0, 0, 51, 54, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 52, 53, 1, 0, 0, 0, 53, 3, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 55, 59, 5, 9, 0, 0, 56, 58, 3, 30, 15, 0, 57, 56, 1, 0, 0, 0, 58, 61, 1, 0, 0, 0, 59, 57, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 62, 1, 0, 0, 0, 61, 59, 1, 0, 0, 0, 62, 63, 5, 28, 0, 0, 63, 5, 1, 0, 0, 0, 64, 68, 5, 1, 0, 0, 65, 68, 3, 8, 4, 0, 66, 68, 3, 20, 10, 0, 67, 64, 1, 0, 0, 0, 67, 65, 1, 0, 0, 0, 67, 66, 1, 0, 0, 0, 68, 7, 1, 0, 0, 0, 69, 70, 5, 12, 0, 0, 70, 71, 5, 17, 0, 0, 71, 72, 5, 37, 0, 0, 72, 76, 3, 18, 9, 0, 73, 75, 5, 36, 0, 0, 74, 73, 1, 0, 0, 0, 75, 78, 1, 0, 0, 0, 76, 74, 1, 0, 0, 0, 76, 77, 1, 0, 0, 0, 77, 83, 1, 0, 0, 0, 78, 76, 1, 0, 0, 0, 79, 80, 5, 15, 0, 0, 80, 81, 3, 12, 6, 0, 81, 82, 5, 18, 0, 0, 82, 84, 1, 0, 0, 0, 83, 79, 1, 0, 0, 0, 83, 84, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 86, 5, 14, 0, 0, 86, 9, 1, 0, 0, 0, 87, 88, 5, 10, 0, 0, 88, 92, 5, 33, 0, 0, 89, 91, 3, 30, 15, 0, 90, 89, 1, 0, 0, 0, 91, 94, 1, 0, 0, 0, 92, 90, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 93, 95, 1, 0, 0, 0, 94, 92, 1, 0, 0, 0, 95, 96, 5, 27, 0, 0, 96, 11, 1, 0, 0, 0, 97, 100, 3, 14, 7, 0, 98, 100, 3, 16, 8, 0, 99, 97, 1, 0, 0, 0, 99, 98, 1, 0, 0, 0, 100, 103, 1, 0, 0, 0, 101, 99, 1, 0, 0, 0, 101, 102, 1, 0, 0, 0, 102, 13, 1, 0, 0, 0, 103, 101, 1, 0, 0, 0, 104, 106, 5, 19, 0, 0, 105, 107, 5, 23, 0, 0, 106, 105, 1, 0, 0, 0, 106, 107, 1, 0, 0, 0, 107, 111, 1, 0, 0, 0, 108, 110, 5, 24, 0, 0, 109, 108, 1, 0, 0, 0, 110, 113, 1, 0, 0, 0, 111, 109, 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 115, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 114, 116, 5, 23, 0, 0, 115, 114, 1, 0, 0, 0, 115, 116, 1, 0, 0, 0, 116, 117, 1, 0, 0, 0, 117, 121, 5, 21, 0, 0, 118, 121, 3, 20, 10, 0, 119, 121, 5, 1, 0, 0, 120, 104, 1, 0, 0, 0, 120, 118, 1, 0, 0, 0, 120, 119, 1, 0, 0, 0, 121, 15, 1, 0, 0, 0, 122, 123, 5, 3, 0, 0, 123, 17, 1, 0, 0, 0, 124, 126, 5, 37, 0, 0, 125, 124, 1, 0, 0, 0, 125, 126, 1, 0, 0, 0, 126, 19, 1, 0, 0, 0, 127, 129, 5, 11, 0, 0, 128, 130, 5, 26, 0, 0, 129, 128, 1, 0, 0, 0, 130, 131, 1, 0, 0, 0, 131, 129, 1, 0, 0, 0, 131, 132, 1, 0, 0, 0, 132, 133, 1, 0, 0, 0, 133, 134, 5, 28, 0, 0, 134, 21, 1, 0, 0, 0, 135, 143, 3, 10, 5, 0, 136, 143, 3, 24, 12, 0, 137, 143, 3, 28, 14, 0, 138, 143, 3, 20, 10, 0, 139, 143, 5, 2, 0, 0, 140, 143, 5, 1, 0, 0, 141, 143, 3, 32, 16, 0, 142, 135, 1, 0, 0, 0, 142, 136, 1, 0, 0, 0, 142, 137, 1, 0, 0, 0, 142, 138, 1, 0, 0, 0, 142, 139, 1, 0, 0, 0, 142, 140, 1, 0, 0, 0, 142, 141, 1, 0, 0, 0, 143, 23, 1, 0, 0, 0, 144, 145, 5, 10, 0, 0, 145, 149, 5, 37, 0, 0, 146, 148, 3, 30, 15, 0, 147, 146, 1, 0, 0, 0, 148, 151, 1, 0, 0, 0, 149, 147, 1, 0, 0, 0, 149, 150, 1, 0, 0, 0, 150, 152, 1, 0, 0, 0, 151, 149, 1, 0, 0, 0, 152, 156, 5, 27, 0, 0, 153, 155, 3, 22, 11, 0, 154, 153, 1, 0, 0, 0, 155, 158, 1, 0, 0, 0, 156, 154, 1, 0, 0, 0, 156, 157, 1, 0, 0, 0, 157, 159, 1, 0, 0, 0, 158, 156, 1, 0, 0, 0, 159, 160, 5, 10, 0, 0, 160, 161, 5, 34, 0, 0, 161, 162, 5, 37, 0, 0, 162, 173, 5, 27, 0, 0, 163, 164, 5, 10, 0, 0, 164, 168, 5, 37, 0, 0, 165, 167, 3, 30, 15, 0, 166, 165, 1, 0, 0, 0, 167, 170, 1, 0, 0, 0, 168, 166, 1, 0, 0, 0, 168, 169, 1, 0, 0, 0, 169, 171, 1, 0, 0, 0, 170, 168, 1, 0, 0, 0, 171, 173, 5, 29, 0, 0, 172, 144, 1, 0, 0, 0, 172, 163, 1, 0, 0, 0, 173, 25, 1, 0, 0, 0, 174, 175, 5, 10, 0, 0, 175, 176, 5, 31, 0, 0, 176, 180, 5, 37, 0, 0, 177, 179, 3, 30, 15, 0, 178, 177, 1, 0, 0, 0, 179, 182, 1, 0, 0, 0, 180, 178, 1, 0, 0, 0, 180, 181, 1, 0, 0, 0, 181, 183, 1, 0, 0, 0, 182, 180, 1, 0, 0, 0, 183, 184, 5, 32, 0, 0, 184, 185, 5, 27, 0, 0, 185, 27, 1, 0, 0, 0, 186, 187, 7, 0, 0, 0, 187, 29, 1, 0, 0, 0, 188, 189, 5, 37, 0, 0, 189, 190, 5, 35, 0, 0, 190, 191, 5, 36, 0, 0, 191, 31, 1, 0, 0, 0, 192, 193, 7, 1, 0, 0, 193, 33, 1, 0, 0, 0, 23, 35, 41, 46, 52, 59, 67, 76, 83, 92, 99, 101, 106, 111, 115, 120, 125, 131, 142, 149, 156, 168, 172, 180]
\ No newline at end of file
diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.java b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.java
index e0f40773307..4752bc42853 100644
--- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.java
+++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.java
@@ -15,17 +15,14 @@
*/
// Generated from java-escape by ANTLR 4.11.1
package org.openrewrite.xml.internal.grammar;
-import org.antlr.v4.runtime.*;
-import org.antlr.v4.runtime.atn.ATN;
-import org.antlr.v4.runtime.atn.ATNDeserializer;
-import org.antlr.v4.runtime.atn.ParserATNSimulator;
-import org.antlr.v4.runtime.atn.PredictionContextCache;
+import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
-import org.antlr.v4.runtime.tree.ParseTreeListener;
-import org.antlr.v4.runtime.tree.ParseTreeVisitor;
-import org.antlr.v4.runtime.tree.TerminalNode;
-
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.misc.*;
+import org.antlr.v4.runtime.tree.*;
import java.util.List;
+import java.util.Iterator;
+import java.util.ArrayList;
@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"})
public class XMLParser extends Parser {
@@ -41,15 +38,16 @@ public class XMLParser extends Parser {
DTD_SUBSET_CLOSE=18, MARKUP_OPEN=19, DTS_SUBSET_S=20, MARK_UP_CLOSE=21,
MARKUP_S=22, MARKUP_TEXT=23, MARKUP_SUBSET=24, PI_S=25, PI_TEXT=26, CLOSE=27,
SPECIAL_CLOSE=28, SLASH_CLOSE=29, S=30, DIRECTIVE_OPEN=31, DIRECTIVE_CLOSE=32,
- SLASH=33, EQUALS=34, STRING=35, Name=36;
+ META=33, SLASH=34, EQUALS=35, STRING=36, Name=37;
public static final int
RULE_document = 0, RULE_prolog = 1, RULE_xmldecl = 2, RULE_misc = 3, RULE_doctypedecl = 4,
- RULE_intsubset = 5, RULE_markupdecl = 6, RULE_declSep = 7, RULE_externalid = 8,
- RULE_processinginstruction = 9, RULE_content = 10, RULE_element = 11,
- RULE_jspdirective = 12, RULE_reference = 13, RULE_attribute = 14, RULE_chardata = 15;
+ RULE_metadata = 5, RULE_intsubset = 6, RULE_markupdecl = 7, RULE_declSep = 8,
+ RULE_externalid = 9, RULE_processinginstruction = 10, RULE_content = 11,
+ RULE_element = 12, RULE_jspdirective = 13, RULE_reference = 14, RULE_attribute = 15,
+ RULE_chardata = 16;
private static String[] makeRuleNames() {
return new String[] {
- "document", "prolog", "xmldecl", "misc", "doctypedecl", "intsubset",
+ "document", "prolog", "xmldecl", "misc", "doctypedecl", "metadata", "intsubset",
"markupdecl", "declSep", "externalid", "processinginstruction", "content",
"element", "jspdirective", "reference", "attribute", "chardata"
};
@@ -60,7 +58,8 @@ private static String[] makeLiteralNames() {
return new String[] {
null, null, null, null, null, null, null, null, "'?'", null, "'<'", null,
null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, "'/>'", null, "'%@'", "'%'", "'/'", "'='"
+ null, null, null, null, null, "'/>'", null, "'%@'", "'%'", null, "'/'",
+ "'='"
};
}
private static final String[] _LITERAL_NAMES = makeLiteralNames();
@@ -71,8 +70,8 @@ private static String[] makeSymbolicNames() {
"DTD_OPEN", "TEXT", "DTD_CLOSE", "DTD_SUBSET_OPEN", "DTD_S", "DOCTYPE",
"DTD_SUBSET_CLOSE", "MARKUP_OPEN", "DTS_SUBSET_S", "MARK_UP_CLOSE", "MARKUP_S",
"MARKUP_TEXT", "MARKUP_SUBSET", "PI_S", "PI_TEXT", "CLOSE", "SPECIAL_CLOSE",
- "SLASH_CLOSE", "S", "DIRECTIVE_OPEN", "DIRECTIVE_CLOSE", "SLASH", "EQUALS",
- "STRING", "Name"
+ "SLASH_CLOSE", "S", "DIRECTIVE_OPEN", "DIRECTIVE_CLOSE", "META", "SLASH",
+ "EQUALS", "STRING", "Name"
};
}
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
@@ -161,19 +160,19 @@ public final DocumentContext document() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(33);
+ setState(35);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==UTF_ENCODING_BOM) {
{
- setState(32);
+ setState(34);
match(UTF_ENCODING_BOM);
}
}
- setState(35);
+ setState(37);
prolog();
- setState(36);
+ setState(38);
element();
}
}
@@ -232,43 +231,43 @@ public final PrologContext prolog() throws RecognitionException {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(39);
+ setState(41);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==SPECIAL_OPEN_XML) {
{
- setState(38);
+ setState(40);
xmldecl();
}
}
- setState(44);
+ setState(46);
_errHandler.sync(this);
_la = _input.LA(1);
while (((_la) & ~0x3f) == 0 && ((1L << _la) & 6146L) != 0) {
{
{
- setState(41);
+ setState(43);
misc();
}
}
- setState(46);
+ setState(48);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(50);
+ setState(52);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,3,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(47);
+ setState(49);
jspdirective();
}
}
}
- setState(52);
+ setState(54);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,3,_ctx);
}
@@ -321,23 +320,23 @@ public final XmldeclContext xmldecl() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(53);
+ setState(55);
match(SPECIAL_OPEN_XML);
- setState(57);
+ setState(59);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Name) {
{
{
- setState(54);
+ setState(56);
attribute();
}
}
- setState(59);
+ setState(61);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(60);
+ setState(62);
match(SPECIAL_CLOSE);
}
}
@@ -386,24 +385,24 @@ public final MiscContext misc() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(65);
+ setState(67);
_errHandler.sync(this);
switch (_input.LA(1)) {
case COMMENT:
{
- setState(62);
+ setState(64);
match(COMMENT);
}
break;
case DTD_OPEN:
{
- setState(63);
+ setState(65);
doctypedecl();
}
break;
case SPECIAL_OPEN:
{
- setState(64);
+ setState(66);
processinginstruction();
}
break;
@@ -467,43 +466,43 @@ public final DoctypedeclContext doctypedecl() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(67);
+ setState(69);
match(DTD_OPEN);
- setState(68);
+ setState(70);
match(DOCTYPE);
- setState(69);
+ setState(71);
match(Name);
- setState(70);
+ setState(72);
externalid();
- setState(74);
+ setState(76);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==STRING) {
{
{
- setState(71);
+ setState(73);
match(STRING);
}
}
- setState(76);
+ setState(78);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(81);
+ setState(83);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==DTD_SUBSET_OPEN) {
{
- setState(77);
+ setState(79);
match(DTD_SUBSET_OPEN);
- setState(78);
+ setState(80);
intsubset();
- setState(79);
+ setState(81);
match(DTD_SUBSET_CLOSE);
}
}
- setState(83);
+ setState(85);
match(DTD_CLOSE);
}
}
@@ -518,6 +517,76 @@ public final DoctypedeclContext doctypedecl() throws RecognitionException {
return _localctx;
}
+ @SuppressWarnings("CheckReturnValue")
+ public static class MetadataContext extends ParserRuleContext {
+ public TerminalNode OPEN() { return getToken(XMLParser.OPEN, 0); }
+ public TerminalNode META() { return getToken(XMLParser.META, 0); }
+ public TerminalNode CLOSE() { return getToken(XMLParser.CLOSE, 0); }
+ public List attribute() {
+ return getRuleContexts(AttributeContext.class);
+ }
+ public AttributeContext attribute(int i) {
+ return getRuleContext(AttributeContext.class,i);
+ }
+ public MetadataContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_metadata; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof XMLParserListener ) ((XMLParserListener)listener).enterMetadata(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof XMLParserListener ) ((XMLParserListener)listener).exitMetadata(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof XMLParserVisitor ) return ((XMLParserVisitor extends T>)visitor).visitMetadata(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final MetadataContext metadata() throws RecognitionException {
+ MetadataContext _localctx = new MetadataContext(_ctx, getState());
+ enterRule(_localctx, 10, RULE_metadata);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(87);
+ match(OPEN);
+ setState(88);
+ match(META);
+ setState(92);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==Name) {
+ {
+ {
+ setState(89);
+ attribute();
+ }
+ }
+ setState(94);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(95);
+ match(CLOSE);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
@SuppressWarnings("CheckReturnValue")
public static class IntsubsetContext extends ParserRuleContext {
public List markupdecl() {
@@ -553,30 +622,30 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final IntsubsetContext intsubset() throws RecognitionException {
IntsubsetContext _localctx = new IntsubsetContext(_ctx, getState());
- enterRule(_localctx, 10, RULE_intsubset);
+ enterRule(_localctx, 12, RULE_intsubset);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(89);
+ setState(101);
_errHandler.sync(this);
_la = _input.LA(1);
while (((_la) & ~0x3f) == 0 && ((1L << _la) & 526346L) != 0) {
{
- setState(87);
+ setState(99);
_errHandler.sync(this);
switch (_input.LA(1)) {
case COMMENT:
case SPECIAL_OPEN:
case MARKUP_OPEN:
{
- setState(85);
+ setState(97);
markupdecl();
}
break;
case ParamEntityRef:
{
- setState(86);
+ setState(98);
declSep();
}
break;
@@ -584,7 +653,7 @@ public final IntsubsetContext intsubset() throws RecognitionException {
throw new NoViableAltException(this);
}
}
- setState(91);
+ setState(103);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -638,53 +707,53 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final MarkupdeclContext markupdecl() throws RecognitionException {
MarkupdeclContext _localctx = new MarkupdeclContext(_ctx, getState());
- enterRule(_localctx, 12, RULE_markupdecl);
+ enterRule(_localctx, 14, RULE_markupdecl);
int _la;
try {
- setState(108);
+ setState(120);
_errHandler.sync(this);
switch (_input.LA(1)) {
case MARKUP_OPEN:
enterOuterAlt(_localctx, 1);
{
{
- setState(92);
+ setState(104);
match(MARKUP_OPEN);
- setState(94);
+ setState(106);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) {
case 1:
{
- setState(93);
+ setState(105);
match(MARKUP_TEXT);
}
break;
}
- setState(99);
+ setState(111);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==MARKUP_SUBSET) {
{
{
- setState(96);
+ setState(108);
match(MARKUP_SUBSET);
}
}
- setState(101);
+ setState(113);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(103);
+ setState(115);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==MARKUP_TEXT) {
{
- setState(102);
+ setState(114);
match(MARKUP_TEXT);
}
}
- setState(105);
+ setState(117);
match(MARK_UP_CLOSE);
}
}
@@ -692,14 +761,14 @@ public final MarkupdeclContext markupdecl() throws RecognitionException {
case SPECIAL_OPEN:
enterOuterAlt(_localctx, 2);
{
- setState(106);
+ setState(118);
processinginstruction();
}
break;
case COMMENT:
enterOuterAlt(_localctx, 3);
{
- setState(107);
+ setState(119);
match(COMMENT);
}
break;
@@ -742,11 +811,11 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final DeclSepContext declSep() throws RecognitionException {
DeclSepContext _localctx = new DeclSepContext(_ctx, getState());
- enterRule(_localctx, 14, RULE_declSep);
+ enterRule(_localctx, 16, RULE_declSep);
try {
enterOuterAlt(_localctx, 1);
{
- setState(110);
+ setState(122);
match(ParamEntityRef);
}
}
@@ -785,17 +854,17 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ExternalidContext externalid() throws RecognitionException {
ExternalidContext _localctx = new ExternalidContext(_ctx, getState());
- enterRule(_localctx, 16, RULE_externalid);
+ enterRule(_localctx, 18, RULE_externalid);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(113);
+ setState(125);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Name) {
{
- setState(112);
+ setState(124);
match(Name);
}
}
@@ -842,28 +911,28 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ProcessinginstructionContext processinginstruction() throws RecognitionException {
ProcessinginstructionContext _localctx = new ProcessinginstructionContext(_ctx, getState());
- enterRule(_localctx, 18, RULE_processinginstruction);
+ enterRule(_localctx, 20, RULE_processinginstruction);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(115);
+ setState(127);
match(SPECIAL_OPEN);
- setState(117);
+ setState(129);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
- setState(116);
+ setState(128);
match(PI_TEXT);
}
}
- setState(119);
+ setState(131);
_errHandler.sync(this);
_la = _input.LA(1);
} while ( _la==PI_TEXT );
- setState(121);
+ setState(133);
match(SPECIAL_CLOSE);
}
}
@@ -880,6 +949,9 @@ public final ProcessinginstructionContext processinginstruction() throws Recogni
@SuppressWarnings("CheckReturnValue")
public static class ContentContext extends ParserRuleContext {
+ public MetadataContext metadata() {
+ return getRuleContext(MetadataContext.class,0);
+ }
public ElementContext element() {
return getRuleContext(ElementContext.class,0);
}
@@ -915,54 +987,55 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ContentContext content() throws RecognitionException {
ContentContext _localctx = new ContentContext(_ctx, getState());
- enterRule(_localctx, 20, RULE_content);
+ enterRule(_localctx, 22, RULE_content);
try {
enterOuterAlt(_localctx, 1);
{
- setState(129);
+ setState(142);
_errHandler.sync(this);
- switch (_input.LA(1)) {
- case OPEN:
+ switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) {
+ case 1:
+ {
+ setState(135);
+ metadata();
+ }
+ break;
+ case 2:
{
- setState(123);
+ setState(136);
element();
}
break;
- case EntityRef:
- case CharRef:
+ case 3:
{
- setState(124);
+ setState(137);
reference();
}
break;
- case SPECIAL_OPEN:
+ case 4:
{
- setState(125);
+ setState(138);
processinginstruction();
}
break;
- case CDATA:
+ case 5:
{
- setState(126);
+ setState(139);
match(CDATA);
}
break;
- case COMMENT:
+ case 6:
{
- setState(127);
+ setState(140);
match(COMMENT);
}
break;
- case SEA_WS:
- case QUESTION_MARK:
- case TEXT:
+ case 7:
{
- setState(128);
+ setState(141);
chardata();
}
break;
- default:
- throw new NoViableAltException(this);
}
}
}
@@ -1026,84 +1099,84 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ElementContext element() throws RecognitionException {
ElementContext _localctx = new ElementContext(_ctx, getState());
- enterRule(_localctx, 22, RULE_element);
+ enterRule(_localctx, 24, RULE_element);
int _la;
try {
int _alt;
- setState(159);
+ setState(172);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(131);
+ setState(144);
match(OPEN);
- setState(132);
+ setState(145);
match(Name);
- setState(136);
+ setState(149);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Name) {
{
{
- setState(133);
+ setState(146);
attribute();
}
}
- setState(138);
+ setState(151);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(139);
+ setState(152);
match(CLOSE);
- setState(143);
+ setState(156);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,18,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,19,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(140);
+ setState(153);
content();
}
}
}
- setState(145);
+ setState(158);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,18,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,19,_ctx);
}
- setState(146);
+ setState(159);
match(OPEN);
- setState(147);
+ setState(160);
match(SLASH);
- setState(148);
+ setState(161);
match(Name);
- setState(149);
+ setState(162);
match(CLOSE);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(150);
+ setState(163);
match(OPEN);
- setState(151);
+ setState(164);
match(Name);
- setState(155);
+ setState(168);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Name) {
{
{
- setState(152);
+ setState(165);
attribute();
}
}
- setState(157);
+ setState(170);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(158);
+ setState(171);
match(SLASH_CLOSE);
}
break;
@@ -1154,34 +1227,34 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final JspdirectiveContext jspdirective() throws RecognitionException {
JspdirectiveContext _localctx = new JspdirectiveContext(_ctx, getState());
- enterRule(_localctx, 24, RULE_jspdirective);
+ enterRule(_localctx, 26, RULE_jspdirective);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(161);
+ setState(174);
match(OPEN);
- setState(162);
+ setState(175);
match(DIRECTIVE_OPEN);
- setState(163);
+ setState(176);
match(Name);
- setState(167);
+ setState(180);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==Name) {
{
{
- setState(164);
+ setState(177);
attribute();
}
}
- setState(169);
+ setState(182);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(170);
+ setState(183);
match(DIRECTIVE_CLOSE);
- setState(171);
+ setState(184);
match(CLOSE);
}
}
@@ -1221,12 +1294,12 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ReferenceContext reference() throws RecognitionException {
ReferenceContext _localctx = new ReferenceContext(_ctx, getState());
- enterRule(_localctx, 26, RULE_reference);
+ enterRule(_localctx, 28, RULE_reference);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(173);
+ setState(186);
_la = _input.LA(1);
if ( !(_la==EntityRef || _la==CharRef) ) {
_errHandler.recoverInline(this);
@@ -1275,15 +1348,15 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final AttributeContext attribute() throws RecognitionException {
AttributeContext _localctx = new AttributeContext(_ctx, getState());
- enterRule(_localctx, 28, RULE_attribute);
+ enterRule(_localctx, 30, RULE_attribute);
try {
enterOuterAlt(_localctx, 1);
{
- setState(175);
+ setState(188);
match(Name);
- setState(176);
+ setState(189);
match(EQUALS);
- setState(177);
+ setState(190);
match(STRING);
}
}
@@ -1324,12 +1397,12 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ChardataContext chardata() throws RecognitionException {
ChardataContext _localctx = new ChardataContext(_ctx, getState());
- enterRule(_localctx, 30, RULE_chardata);
+ enterRule(_localctx, 32, RULE_chardata);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(179);
+ setState(192);
_la = _input.LA(1);
if ( !(((_la) & ~0x3f) == 0 && ((1L << _la) & 8512L) != 0) ) {
_errHandler.recoverInline(this);
@@ -1353,116 +1426,124 @@ public final ChardataContext chardata() throws RecognitionException {
}
public static final String _serializedATN =
- "\u0004\u0001$\u00b6\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+
+ "\u0004\u0001%\u00c3\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+
"\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"+
"\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0002"+
"\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b\u0002"+
"\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007\u000f"+
- "\u0001\u0000\u0003\u0000\"\b\u0000\u0001\u0000\u0001\u0000\u0001\u0000"+
- "\u0001\u0001\u0003\u0001(\b\u0001\u0001\u0001\u0005\u0001+\b\u0001\n\u0001"+
- "\f\u0001.\t\u0001\u0001\u0001\u0005\u00011\b\u0001\n\u0001\f\u00014\t"+
- "\u0001\u0001\u0002\u0001\u0002\u0005\u00028\b\u0002\n\u0002\f\u0002;\t"+
- "\u0002\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0003"+
- "\u0003B\b\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001"+
- "\u0004\u0005\u0004I\b\u0004\n\u0004\f\u0004L\t\u0004\u0001\u0004\u0001"+
- "\u0004\u0001\u0004\u0001\u0004\u0003\u0004R\b\u0004\u0001\u0004\u0001"+
- "\u0004\u0001\u0005\u0001\u0005\u0005\u0005X\b\u0005\n\u0005\f\u0005[\t"+
- "\u0005\u0001\u0006\u0001\u0006\u0003\u0006_\b\u0006\u0001\u0006\u0005"+
- "\u0006b\b\u0006\n\u0006\f\u0006e\t\u0006\u0001\u0006\u0003\u0006h\b\u0006"+
- "\u0001\u0006\u0001\u0006\u0001\u0006\u0003\u0006m\b\u0006\u0001\u0007"+
- "\u0001\u0007\u0001\b\u0003\br\b\b\u0001\t\u0001\t\u0004\tv\b\t\u000b\t"+
- "\f\tw\u0001\t\u0001\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n"+
- "\u0003\n\u0082\b\n\u0001\u000b\u0001\u000b\u0001\u000b\u0005\u000b\u0087"+
- "\b\u000b\n\u000b\f\u000b\u008a\t\u000b\u0001\u000b\u0001\u000b\u0005\u000b"+
- "\u008e\b\u000b\n\u000b\f\u000b\u0091\t\u000b\u0001\u000b\u0001\u000b\u0001"+
- "\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0005\u000b\u009a"+
- "\b\u000b\n\u000b\f\u000b\u009d\t\u000b\u0001\u000b\u0003\u000b\u00a0\b"+
- "\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0005\f\u00a6\b\f\n\f\f\f\u00a9"+
- "\t\f\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001"+
- "\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0000\u0000\u0010"+
+ "\u0002\u0010\u0007\u0010\u0001\u0000\u0003\u0000$\b\u0000\u0001\u0000"+
+ "\u0001\u0000\u0001\u0000\u0001\u0001\u0003\u0001*\b\u0001\u0001\u0001"+
+ "\u0005\u0001-\b\u0001\n\u0001\f\u00010\t\u0001\u0001\u0001\u0005\u0001"+
+ "3\b\u0001\n\u0001\f\u00016\t\u0001\u0001\u0002\u0001\u0002\u0005\u0002"+
+ ":\b\u0002\n\u0002\f\u0002=\t\u0002\u0001\u0002\u0001\u0002\u0001\u0003"+
+ "\u0001\u0003\u0001\u0003\u0003\u0003D\b\u0003\u0001\u0004\u0001\u0004"+
+ "\u0001\u0004\u0001\u0004\u0001\u0004\u0005\u0004K\b\u0004\n\u0004\f\u0004"+
+ "N\t\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0003\u0004"+
+ "T\b\u0004\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0005"+
+ "\u0005\u0005[\b\u0005\n\u0005\f\u0005^\t\u0005\u0001\u0005\u0001\u0005"+
+ "\u0001\u0006\u0001\u0006\u0005\u0006d\b\u0006\n\u0006\f\u0006g\t\u0006"+
+ "\u0001\u0007\u0001\u0007\u0003\u0007k\b\u0007\u0001\u0007\u0005\u0007"+
+ "n\b\u0007\n\u0007\f\u0007q\t\u0007\u0001\u0007\u0003\u0007t\b\u0007\u0001"+
+ "\u0007\u0001\u0007\u0001\u0007\u0003\u0007y\b\u0007\u0001\b\u0001\b\u0001"+
+ "\t\u0003\t~\b\t\u0001\n\u0001\n\u0004\n\u0082\b\n\u000b\n\f\n\u0083\u0001"+
+ "\n\u0001\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+
+ "\u0001\u000b\u0001\u000b\u0003\u000b\u008f\b\u000b\u0001\f\u0001\f\u0001"+
+ "\f\u0005\f\u0094\b\f\n\f\f\f\u0097\t\f\u0001\f\u0001\f\u0005\f\u009b\b"+
+ "\f\n\f\f\f\u009e\t\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+
+ "\f\u0005\f\u00a7\b\f\n\f\f\f\u00aa\t\f\u0001\f\u0003\f\u00ad\b\f\u0001"+
+ "\r\u0001\r\u0001\r\u0001\r\u0005\r\u00b3\b\r\n\r\f\r\u00b6\t\r\u0001\r"+
+ "\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001"+
+ "\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0000\u0000\u0011"+
"\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a"+
- "\u001c\u001e\u0000\u0002\u0001\u0000\u0004\u0005\u0003\u0000\u0006\u0006"+
- "\b\b\r\r\u00c1\u0000!\u0001\u0000\u0000\u0000\u0002\'\u0001\u0000\u0000"+
- "\u0000\u00045\u0001\u0000\u0000\u0000\u0006A\u0001\u0000\u0000\u0000\b"+
- "C\u0001\u0000\u0000\u0000\nY\u0001\u0000\u0000\u0000\fl\u0001\u0000\u0000"+
- "\u0000\u000en\u0001\u0000\u0000\u0000\u0010q\u0001\u0000\u0000\u0000\u0012"+
- "s\u0001\u0000\u0000\u0000\u0014\u0081\u0001\u0000\u0000\u0000\u0016\u009f"+
- "\u0001\u0000\u0000\u0000\u0018\u00a1\u0001\u0000\u0000\u0000\u001a\u00ad"+
- "\u0001\u0000\u0000\u0000\u001c\u00af\u0001\u0000\u0000\u0000\u001e\u00b3"+
- "\u0001\u0000\u0000\u0000 \"\u0005\u0007\u0000\u0000! \u0001\u0000\u0000"+
- "\u0000!\"\u0001\u0000\u0000\u0000\"#\u0001\u0000\u0000\u0000#$\u0003\u0002"+
- "\u0001\u0000$%\u0003\u0016\u000b\u0000%\u0001\u0001\u0000\u0000\u0000"+
- "&(\u0003\u0004\u0002\u0000\'&\u0001\u0000\u0000\u0000\'(\u0001\u0000\u0000"+
- "\u0000(,\u0001\u0000\u0000\u0000)+\u0003\u0006\u0003\u0000*)\u0001\u0000"+
- "\u0000\u0000+.\u0001\u0000\u0000\u0000,*\u0001\u0000\u0000\u0000,-\u0001"+
- "\u0000\u0000\u0000-2\u0001\u0000\u0000\u0000.,\u0001\u0000\u0000\u0000"+
- "/1\u0003\u0018\f\u00000/\u0001\u0000\u0000\u000014\u0001\u0000\u0000\u0000"+
- "20\u0001\u0000\u0000\u000023\u0001\u0000\u0000\u00003\u0003\u0001\u0000"+
- "\u0000\u000042\u0001\u0000\u0000\u000059\u0005\t\u0000\u000068\u0003\u001c"+
- "\u000e\u000076\u0001\u0000\u0000\u00008;\u0001\u0000\u0000\u000097\u0001"+
- "\u0000\u0000\u00009:\u0001\u0000\u0000\u0000:<\u0001\u0000\u0000\u0000"+
- ";9\u0001\u0000\u0000\u0000<=\u0005\u001c\u0000\u0000=\u0005\u0001\u0000"+
- "\u0000\u0000>B\u0005\u0001\u0000\u0000?B\u0003\b\u0004\u0000@B\u0003\u0012"+
- "\t\u0000A>\u0001\u0000\u0000\u0000A?\u0001\u0000\u0000\u0000A@\u0001\u0000"+
- "\u0000\u0000B\u0007\u0001\u0000\u0000\u0000CD\u0005\f\u0000\u0000DE\u0005"+
- "\u0011\u0000\u0000EF\u0005$\u0000\u0000FJ\u0003\u0010\b\u0000GI\u0005"+
- "#\u0000\u0000HG\u0001\u0000\u0000\u0000IL\u0001\u0000\u0000\u0000JH\u0001"+
- "\u0000\u0000\u0000JK\u0001\u0000\u0000\u0000KQ\u0001\u0000\u0000\u0000"+
- "LJ\u0001\u0000\u0000\u0000MN\u0005\u000f\u0000\u0000NO\u0003\n\u0005\u0000"+
- "OP\u0005\u0012\u0000\u0000PR\u0001\u0000\u0000\u0000QM\u0001\u0000\u0000"+
- "\u0000QR\u0001\u0000\u0000\u0000RS\u0001\u0000\u0000\u0000ST\u0005\u000e"+
- "\u0000\u0000T\t\u0001\u0000\u0000\u0000UX\u0003\f\u0006\u0000VX\u0003"+
- "\u000e\u0007\u0000WU\u0001\u0000\u0000\u0000WV\u0001\u0000\u0000\u0000"+
- "X[\u0001\u0000\u0000\u0000YW\u0001\u0000\u0000\u0000YZ\u0001\u0000\u0000"+
- "\u0000Z\u000b\u0001\u0000\u0000\u0000[Y\u0001\u0000\u0000\u0000\\^\u0005"+
- "\u0013\u0000\u0000]_\u0005\u0017\u0000\u0000^]\u0001\u0000\u0000\u0000"+
- "^_\u0001\u0000\u0000\u0000_c\u0001\u0000\u0000\u0000`b\u0005\u0018\u0000"+
- "\u0000a`\u0001\u0000\u0000\u0000be\u0001\u0000\u0000\u0000ca\u0001\u0000"+
- "\u0000\u0000cd\u0001\u0000\u0000\u0000dg\u0001\u0000\u0000\u0000ec\u0001"+
- "\u0000\u0000\u0000fh\u0005\u0017\u0000\u0000gf\u0001\u0000\u0000\u0000"+
- "gh\u0001\u0000\u0000\u0000hi\u0001\u0000\u0000\u0000im\u0005\u0015\u0000"+
- "\u0000jm\u0003\u0012\t\u0000km\u0005\u0001\u0000\u0000l\\\u0001\u0000"+
- "\u0000\u0000lj\u0001\u0000\u0000\u0000lk\u0001\u0000\u0000\u0000m\r\u0001"+
- "\u0000\u0000\u0000no\u0005\u0003\u0000\u0000o\u000f\u0001\u0000\u0000"+
- "\u0000pr\u0005$\u0000\u0000qp\u0001\u0000\u0000\u0000qr\u0001\u0000\u0000"+
- "\u0000r\u0011\u0001\u0000\u0000\u0000su\u0005\u000b\u0000\u0000tv\u0005"+
- "\u001a\u0000\u0000ut\u0001\u0000\u0000\u0000vw\u0001\u0000\u0000\u0000"+
- "wu\u0001\u0000\u0000\u0000wx\u0001\u0000\u0000\u0000xy\u0001\u0000\u0000"+
- "\u0000yz\u0005\u001c\u0000\u0000z\u0013\u0001\u0000\u0000\u0000{\u0082"+
- "\u0003\u0016\u000b\u0000|\u0082\u0003\u001a\r\u0000}\u0082\u0003\u0012"+
- "\t\u0000~\u0082\u0005\u0002\u0000\u0000\u007f\u0082\u0005\u0001\u0000"+
- "\u0000\u0080\u0082\u0003\u001e\u000f\u0000\u0081{\u0001\u0000\u0000\u0000"+
- "\u0081|\u0001\u0000\u0000\u0000\u0081}\u0001\u0000\u0000\u0000\u0081~"+
- "\u0001\u0000\u0000\u0000\u0081\u007f\u0001\u0000\u0000\u0000\u0081\u0080"+
- "\u0001\u0000\u0000\u0000\u0082\u0015\u0001\u0000\u0000\u0000\u0083\u0084"+
- "\u0005\n\u0000\u0000\u0084\u0088\u0005$\u0000\u0000\u0085\u0087\u0003"+
- "\u001c\u000e\u0000\u0086\u0085\u0001\u0000\u0000\u0000\u0087\u008a\u0001"+
- "\u0000\u0000\u0000\u0088\u0086\u0001\u0000\u0000\u0000\u0088\u0089\u0001"+
- "\u0000\u0000\u0000\u0089\u008b\u0001\u0000\u0000\u0000\u008a\u0088\u0001"+
- "\u0000\u0000\u0000\u008b\u008f\u0005\u001b\u0000\u0000\u008c\u008e\u0003"+
- "\u0014\n\u0000\u008d\u008c\u0001\u0000\u0000\u0000\u008e\u0091\u0001\u0000"+
- "\u0000\u0000\u008f\u008d\u0001\u0000\u0000\u0000\u008f\u0090\u0001\u0000"+
- "\u0000\u0000\u0090\u0092\u0001\u0000\u0000\u0000\u0091\u008f\u0001\u0000"+
- "\u0000\u0000\u0092\u0093\u0005\n\u0000\u0000\u0093\u0094\u0005!\u0000"+
- "\u0000\u0094\u0095\u0005$\u0000\u0000\u0095\u00a0\u0005\u001b\u0000\u0000"+
- "\u0096\u0097\u0005\n\u0000\u0000\u0097\u009b\u0005$\u0000\u0000\u0098"+
- "\u009a\u0003\u001c\u000e\u0000\u0099\u0098\u0001\u0000\u0000\u0000\u009a"+
- "\u009d\u0001\u0000\u0000\u0000\u009b\u0099\u0001\u0000\u0000\u0000\u009b"+
- "\u009c\u0001\u0000\u0000\u0000\u009c\u009e\u0001\u0000\u0000\u0000\u009d"+
- "\u009b\u0001\u0000\u0000\u0000\u009e\u00a0\u0005\u001d\u0000\u0000\u009f"+
- "\u0083\u0001\u0000\u0000\u0000\u009f\u0096\u0001\u0000\u0000\u0000\u00a0"+
- "\u0017\u0001\u0000\u0000\u0000\u00a1\u00a2\u0005\n\u0000\u0000\u00a2\u00a3"+
- "\u0005\u001f\u0000\u0000\u00a3\u00a7\u0005$\u0000\u0000\u00a4\u00a6\u0003"+
- "\u001c\u000e\u0000\u00a5\u00a4\u0001\u0000\u0000\u0000\u00a6\u00a9\u0001"+
- "\u0000\u0000\u0000\u00a7\u00a5\u0001\u0000\u0000\u0000\u00a7\u00a8\u0001"+
- "\u0000\u0000\u0000\u00a8\u00aa\u0001\u0000\u0000\u0000\u00a9\u00a7\u0001"+
- "\u0000\u0000\u0000\u00aa\u00ab\u0005 \u0000\u0000\u00ab\u00ac\u0005\u001b"+
- "\u0000\u0000\u00ac\u0019\u0001\u0000\u0000\u0000\u00ad\u00ae\u0007\u0000"+
- "\u0000\u0000\u00ae\u001b\u0001\u0000\u0000\u0000\u00af\u00b0\u0005$\u0000"+
- "\u0000\u00b0\u00b1\u0005\"\u0000\u0000\u00b1\u00b2\u0005#\u0000\u0000"+
- "\u00b2\u001d\u0001\u0000\u0000\u0000\u00b3\u00b4\u0007\u0001\u0000\u0000"+
- "\u00b4\u001f\u0001\u0000\u0000\u0000\u0016!\',29AJQWY^cglqw\u0081\u0088"+
- "\u008f\u009b\u009f\u00a7";
+ "\u001c\u001e \u0000\u0002\u0001\u0000\u0004\u0005\u0003\u0000\u0006\u0006"+
+ "\b\b\r\r\u00cf\u0000#\u0001\u0000\u0000\u0000\u0002)\u0001\u0000\u0000"+
+ "\u0000\u00047\u0001\u0000\u0000\u0000\u0006C\u0001\u0000\u0000\u0000\b"+
+ "E\u0001\u0000\u0000\u0000\nW\u0001\u0000\u0000\u0000\fe\u0001\u0000\u0000"+
+ "\u0000\u000ex\u0001\u0000\u0000\u0000\u0010z\u0001\u0000\u0000\u0000\u0012"+
+ "}\u0001\u0000\u0000\u0000\u0014\u007f\u0001\u0000\u0000\u0000\u0016\u008e"+
+ "\u0001\u0000\u0000\u0000\u0018\u00ac\u0001\u0000\u0000\u0000\u001a\u00ae"+
+ "\u0001\u0000\u0000\u0000\u001c\u00ba\u0001\u0000\u0000\u0000\u001e\u00bc"+
+ "\u0001\u0000\u0000\u0000 \u00c0\u0001\u0000\u0000\u0000\"$\u0005\u0007"+
+ "\u0000\u0000#\"\u0001\u0000\u0000\u0000#$\u0001\u0000\u0000\u0000$%\u0001"+
+ "\u0000\u0000\u0000%&\u0003\u0002\u0001\u0000&\'\u0003\u0018\f\u0000\'"+
+ "\u0001\u0001\u0000\u0000\u0000(*\u0003\u0004\u0002\u0000)(\u0001\u0000"+
+ "\u0000\u0000)*\u0001\u0000\u0000\u0000*.\u0001\u0000\u0000\u0000+-\u0003"+
+ "\u0006\u0003\u0000,+\u0001\u0000\u0000\u0000-0\u0001\u0000\u0000\u0000"+
+ ".,\u0001\u0000\u0000\u0000./\u0001\u0000\u0000\u0000/4\u0001\u0000\u0000"+
+ "\u00000.\u0001\u0000\u0000\u000013\u0003\u001a\r\u000021\u0001\u0000\u0000"+
+ "\u000036\u0001\u0000\u0000\u000042\u0001\u0000\u0000\u000045\u0001\u0000"+
+ "\u0000\u00005\u0003\u0001\u0000\u0000\u000064\u0001\u0000\u0000\u0000"+
+ "7;\u0005\t\u0000\u00008:\u0003\u001e\u000f\u000098\u0001\u0000\u0000\u0000"+
+ ":=\u0001\u0000\u0000\u0000;9\u0001\u0000\u0000\u0000;<\u0001\u0000\u0000"+
+ "\u0000<>\u0001\u0000\u0000\u0000=;\u0001\u0000\u0000\u0000>?\u0005\u001c"+
+ "\u0000\u0000?\u0005\u0001\u0000\u0000\u0000@D\u0005\u0001\u0000\u0000"+
+ "AD\u0003\b\u0004\u0000BD\u0003\u0014\n\u0000C@\u0001\u0000\u0000\u0000"+
+ "CA\u0001\u0000\u0000\u0000CB\u0001\u0000\u0000\u0000D\u0007\u0001\u0000"+
+ "\u0000\u0000EF\u0005\f\u0000\u0000FG\u0005\u0011\u0000\u0000GH\u0005%"+
+ "\u0000\u0000HL\u0003\u0012\t\u0000IK\u0005$\u0000\u0000JI\u0001\u0000"+
+ "\u0000\u0000KN\u0001\u0000\u0000\u0000LJ\u0001\u0000\u0000\u0000LM\u0001"+
+ "\u0000\u0000\u0000MS\u0001\u0000\u0000\u0000NL\u0001\u0000\u0000\u0000"+
+ "OP\u0005\u000f\u0000\u0000PQ\u0003\f\u0006\u0000QR\u0005\u0012\u0000\u0000"+
+ "RT\u0001\u0000\u0000\u0000SO\u0001\u0000\u0000\u0000ST\u0001\u0000\u0000"+
+ "\u0000TU\u0001\u0000\u0000\u0000UV\u0005\u000e\u0000\u0000V\t\u0001\u0000"+
+ "\u0000\u0000WX\u0005\n\u0000\u0000X\\\u0005!\u0000\u0000Y[\u0003\u001e"+
+ "\u000f\u0000ZY\u0001\u0000\u0000\u0000[^\u0001\u0000\u0000\u0000\\Z\u0001"+
+ "\u0000\u0000\u0000\\]\u0001\u0000\u0000\u0000]_\u0001\u0000\u0000\u0000"+
+ "^\\\u0001\u0000\u0000\u0000_`\u0005\u001b\u0000\u0000`\u000b\u0001\u0000"+
+ "\u0000\u0000ad\u0003\u000e\u0007\u0000bd\u0003\u0010\b\u0000ca\u0001\u0000"+
+ "\u0000\u0000cb\u0001\u0000\u0000\u0000dg\u0001\u0000\u0000\u0000ec\u0001"+
+ "\u0000\u0000\u0000ef\u0001\u0000\u0000\u0000f\r\u0001\u0000\u0000\u0000"+
+ "ge\u0001\u0000\u0000\u0000hj\u0005\u0013\u0000\u0000ik\u0005\u0017\u0000"+
+ "\u0000ji\u0001\u0000\u0000\u0000jk\u0001\u0000\u0000\u0000ko\u0001\u0000"+
+ "\u0000\u0000ln\u0005\u0018\u0000\u0000ml\u0001\u0000\u0000\u0000nq\u0001"+
+ "\u0000\u0000\u0000om\u0001\u0000\u0000\u0000op\u0001\u0000\u0000\u0000"+
+ "ps\u0001\u0000\u0000\u0000qo\u0001\u0000\u0000\u0000rt\u0005\u0017\u0000"+
+ "\u0000sr\u0001\u0000\u0000\u0000st\u0001\u0000\u0000\u0000tu\u0001\u0000"+
+ "\u0000\u0000uy\u0005\u0015\u0000\u0000vy\u0003\u0014\n\u0000wy\u0005\u0001"+
+ "\u0000\u0000xh\u0001\u0000\u0000\u0000xv\u0001\u0000\u0000\u0000xw\u0001"+
+ "\u0000\u0000\u0000y\u000f\u0001\u0000\u0000\u0000z{\u0005\u0003\u0000"+
+ "\u0000{\u0011\u0001\u0000\u0000\u0000|~\u0005%\u0000\u0000}|\u0001\u0000"+
+ "\u0000\u0000}~\u0001\u0000\u0000\u0000~\u0013\u0001\u0000\u0000\u0000"+
+ "\u007f\u0081\u0005\u000b\u0000\u0000\u0080\u0082\u0005\u001a\u0000\u0000"+
+ "\u0081\u0080\u0001\u0000\u0000\u0000\u0082\u0083\u0001\u0000\u0000\u0000"+
+ "\u0083\u0081\u0001\u0000\u0000\u0000\u0083\u0084\u0001\u0000\u0000\u0000"+
+ "\u0084\u0085\u0001\u0000\u0000\u0000\u0085\u0086\u0005\u001c\u0000\u0000"+
+ "\u0086\u0015\u0001\u0000\u0000\u0000\u0087\u008f\u0003\n\u0005\u0000\u0088"+
+ "\u008f\u0003\u0018\f\u0000\u0089\u008f\u0003\u001c\u000e\u0000\u008a\u008f"+
+ "\u0003\u0014\n\u0000\u008b\u008f\u0005\u0002\u0000\u0000\u008c\u008f\u0005"+
+ "\u0001\u0000\u0000\u008d\u008f\u0003 \u0010\u0000\u008e\u0087\u0001\u0000"+
+ "\u0000\u0000\u008e\u0088\u0001\u0000\u0000\u0000\u008e\u0089\u0001\u0000"+
+ "\u0000\u0000\u008e\u008a\u0001\u0000\u0000\u0000\u008e\u008b\u0001\u0000"+
+ "\u0000\u0000\u008e\u008c\u0001\u0000\u0000\u0000\u008e\u008d\u0001\u0000"+
+ "\u0000\u0000\u008f\u0017\u0001\u0000\u0000\u0000\u0090\u0091\u0005\n\u0000"+
+ "\u0000\u0091\u0095\u0005%\u0000\u0000\u0092\u0094\u0003\u001e\u000f\u0000"+
+ "\u0093\u0092\u0001\u0000\u0000\u0000\u0094\u0097\u0001\u0000\u0000\u0000"+
+ "\u0095\u0093\u0001\u0000\u0000\u0000\u0095\u0096\u0001\u0000\u0000\u0000"+
+ "\u0096\u0098\u0001\u0000\u0000\u0000\u0097\u0095\u0001\u0000\u0000\u0000"+
+ "\u0098\u009c\u0005\u001b\u0000\u0000\u0099\u009b\u0003\u0016\u000b\u0000"+
+ "\u009a\u0099\u0001\u0000\u0000\u0000\u009b\u009e\u0001\u0000\u0000\u0000"+
+ "\u009c\u009a\u0001\u0000\u0000\u0000\u009c\u009d\u0001\u0000\u0000\u0000"+
+ "\u009d\u009f\u0001\u0000\u0000\u0000\u009e\u009c\u0001\u0000\u0000\u0000"+
+ "\u009f\u00a0\u0005\n\u0000\u0000\u00a0\u00a1\u0005\"\u0000\u0000\u00a1"+
+ "\u00a2\u0005%\u0000\u0000\u00a2\u00ad\u0005\u001b\u0000\u0000\u00a3\u00a4"+
+ "\u0005\n\u0000\u0000\u00a4\u00a8\u0005%\u0000\u0000\u00a5\u00a7\u0003"+
+ "\u001e\u000f\u0000\u00a6\u00a5\u0001\u0000\u0000\u0000\u00a7\u00aa\u0001"+
+ "\u0000\u0000\u0000\u00a8\u00a6\u0001\u0000\u0000\u0000\u00a8\u00a9\u0001"+
+ "\u0000\u0000\u0000\u00a9\u00ab\u0001\u0000\u0000\u0000\u00aa\u00a8\u0001"+
+ "\u0000\u0000\u0000\u00ab\u00ad\u0005\u001d\u0000\u0000\u00ac\u0090\u0001"+
+ "\u0000\u0000\u0000\u00ac\u00a3\u0001\u0000\u0000\u0000\u00ad\u0019\u0001"+
+ "\u0000\u0000\u0000\u00ae\u00af\u0005\n\u0000\u0000\u00af\u00b0\u0005\u001f"+
+ "\u0000\u0000\u00b0\u00b4\u0005%\u0000\u0000\u00b1\u00b3\u0003\u001e\u000f"+
+ "\u0000\u00b2\u00b1\u0001\u0000\u0000\u0000\u00b3\u00b6\u0001\u0000\u0000"+
+ "\u0000\u00b4\u00b2\u0001\u0000\u0000\u0000\u00b4\u00b5\u0001\u0000\u0000"+
+ "\u0000\u00b5\u00b7\u0001\u0000\u0000\u0000\u00b6\u00b4\u0001\u0000\u0000"+
+ "\u0000\u00b7\u00b8\u0005 \u0000\u0000\u00b8\u00b9\u0005\u001b\u0000\u0000"+
+ "\u00b9\u001b\u0001\u0000\u0000\u0000\u00ba\u00bb\u0007\u0000\u0000\u0000"+
+ "\u00bb\u001d\u0001\u0000\u0000\u0000\u00bc\u00bd\u0005%\u0000\u0000\u00bd"+
+ "\u00be\u0005#\u0000\u0000\u00be\u00bf\u0005$\u0000\u0000\u00bf\u001f\u0001"+
+ "\u0000\u0000\u0000\u00c0\u00c1\u0007\u0001\u0000\u0000\u00c1!\u0001\u0000"+
+ "\u0000\u0000\u0017#).4;CLS\\cejosx}\u0083\u008e\u0095\u009c\u00a8\u00ac"+
+ "\u00b4";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.tokens b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.tokens
index c0c0364234c..68761a1fcb8 100755
--- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.tokens
+++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParser.tokens
@@ -30,14 +30,15 @@ SLASH_CLOSE=29
S=30
DIRECTIVE_OPEN=31
DIRECTIVE_CLOSE=32
-SLASH=33
-EQUALS=34
-STRING=35
-Name=36
+META=33
+SLASH=34
+EQUALS=35
+STRING=36
+Name=37
'?'=8
'<'=10
'/>'=29
'%@'=31
'%'=32
-'/'=33
-'='=34
+'/'=34
+'='=35
diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserBaseListener.java b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserBaseListener.java
index a3f3352c6e3..d7725da1a58 100755
--- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserBaseListener.java
+++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserBaseListener.java
@@ -87,6 +87,18 @@ public class XMLParserBaseListener implements XMLParserListener {
* The default implementation does nothing.
*/
@Override public void exitDoctypedecl(XMLParser.DoctypedeclContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMetadata(XMLParser.MetadataContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMetadata(XMLParser.MetadataContext ctx) { }
/**
* {@inheritDoc}
*
diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserBaseVisitor.java b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserBaseVisitor.java
index 7e6cccb3cab..e2a91f018cb 100755
--- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserBaseVisitor.java
+++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserBaseVisitor.java
@@ -62,6 +62,13 @@ public class XMLParserBaseVisitor extends AbstractParseTreeVisitor impleme
* {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitDoctypedecl(XMLParser.DoctypedeclContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitMetadata(XMLParser.MetadataContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserListener.java b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserListener.java
index 1fd09914894..db5feea0a11 100755
--- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserListener.java
+++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserListener.java
@@ -72,6 +72,16 @@ public interface XMLParserListener extends ParseTreeListener {
* @param ctx the parse tree
*/
void exitDoctypedecl(XMLParser.DoctypedeclContext ctx);
+ /**
+ * Enter a parse tree produced by {@link XMLParser#metadata}.
+ * @param ctx the parse tree
+ */
+ void enterMetadata(XMLParser.MetadataContext ctx);
+ /**
+ * Exit a parse tree produced by {@link XMLParser#metadata}.
+ * @param ctx the parse tree
+ */
+ void exitMetadata(XMLParser.MetadataContext ctx);
/**
* Enter a parse tree produced by {@link XMLParser#intsubset}.
* @param ctx the parse tree
diff --git a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserVisitor.java b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserVisitor.java
index 921f15980e9..119ca53bbcd 100755
--- a/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserVisitor.java
+++ b/rewrite-xml/src/main/java/org/openrewrite/xml/internal/grammar/XMLParserVisitor.java
@@ -55,6 +55,12 @@ public interface XMLParserVisitor extends ParseTreeVisitor {
* @return the visitor result
*/
T visitDoctypedecl(XMLParser.DoctypedeclContext ctx);
+ /**
+ * Visit a parse tree produced by {@link XMLParser#metadata}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitMetadata(XMLParser.MetadataContext ctx);
/**
* Visit a parse tree produced by {@link XMLParser#intsubset}.
* @param ctx the parse tree
diff --git a/rewrite-xml/src/test/java/org/openrewrite/xml/XmlParserTest.java b/rewrite-xml/src/test/java/org/openrewrite/xml/XmlParserTest.java
index 1c7449d6639..aedb79af32d 100755
--- a/rewrite-xml/src/test/java/org/openrewrite/xml/XmlParserTest.java
+++ b/rewrite-xml/src/test/java/org/openrewrite/xml/XmlParserTest.java
@@ -93,6 +93,25 @@ void lowerCaseDocType() {
);
}
+ @Test
+ void htmlScriptsWithMetadatatField() {
+ rewriteRun(
+ xml(
+ //language=html
+ """
+
+
+
+
+
+ Hello World!
+
+
+ """
+ )
+ );
+ }
+
@Issue("https://github.com/openrewrite/rewrite/issues/2189")
@Test
void specialCharacters() {