diff --git a/pyshexc/ShExC.py b/pyshexc/ShExC.py index 18c42d0..2ebe7f2 100644 --- a/pyshexc/ShExC.py +++ b/pyshexc/ShExC.py @@ -116,7 +116,7 @@ def shapeDecl(self, shapeDecl: ShExJ.ShapeDecl) -> list[str]: rval .append(self.shapeExprLabel(shapeDecl.id)) if shapeDecl.restricts: for lbl in shapeDecl.restricts: - rval += ['RESTRICTS ' + self.shapeExprLabel(lbl)] + rval += ["RESTRICTS @" + self.shapeExprLabel(lbl)] rval += self.shapeExpr(shapeDecl.shapeExpr) return rval @@ -155,7 +155,7 @@ def shape(self, shape: ShExJ.Shape) -> list[str]: rval = [self.shapeExprLabel(shape.id)] if shape.extends is not None: for lbl in shape.extends: - rval += ['EXTENDS ' + self.shapeExprLabel(lbl)] + rval += ["EXTENDS @" + self.shapeExprLabel(lbl)] if shape.extra is not None: rval += ['EXTRA'] + [self.iriref(e) for e in shape.extra] if shape.closed: diff --git a/pyshexc/parser/ShExDoc.interp b/pyshexc/parser/ShExDoc.interp index a924a87..5325ea7 100644 --- a/pyshexc/parser/ShExDoc.interp +++ b/pyshexc/parser/ShExDoc.interp @@ -229,4 +229,4 @@ restrictions atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 74, 710, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 3, 2, 7, 2, 158, 10, 2, 12, 2, 14, 2, 161, 11, 2, 3, 2, 3, 2, 5, 2, 165, 10, 2, 3, 2, 7, 2, 168, 10, 2, 12, 2, 14, 2, 171, 11, 2, 5, 2, 173, 10, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 5, 3, 180, 10, 3, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 5, 7, 194, 10, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 6, 9, 201, 10, 9, 13, 9, 14, 9, 202, 3, 10, 3, 10, 5, 10, 207, 10, 10, 3, 11, 5, 11, 210, 10, 11, 3, 11, 3, 11, 7, 11, 214, 10, 11, 12, 11, 14, 11, 217, 11, 11, 3, 11, 3, 11, 5, 11, 221, 10, 11, 3, 12, 3, 12, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 7, 14, 230, 10, 14, 12, 14, 14, 14, 233, 11, 14, 3, 15, 3, 15, 3, 15, 7, 15, 238, 10, 15, 12, 15, 14, 15, 241, 11, 15, 3, 16, 3, 16, 3, 16, 7, 16, 246, 10, 16, 12, 16, 14, 16, 249, 11, 16, 3, 17, 3, 17, 3, 17, 7, 17, 254, 10, 17, 12, 17, 14, 17, 257, 11, 17, 3, 18, 5, 18, 260, 10, 18, 3, 18, 3, 18, 3, 19, 5, 19, 265, 10, 19, 3, 19, 3, 19, 3, 20, 3, 20, 5, 20, 271, 10, 20, 3, 20, 3, 20, 3, 20, 5, 20, 276, 10, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 5, 20, 283, 10, 20, 3, 21, 3, 21, 5, 21, 287, 10, 21, 3, 21, 3, 21, 3, 21, 5, 21, 292, 10, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 5, 21, 299, 10, 21, 3, 22, 3, 22, 5, 22, 303, 10, 22, 3, 23, 3, 23, 5, 23, 307, 10, 23, 3, 24, 3, 24, 3, 24, 3, 24, 5, 24, 313, 10, 24, 3, 25, 3, 25, 7, 25, 317, 10, 25, 12, 25, 14, 25, 320, 11, 25, 3, 25, 3, 25, 7, 25, 324, 10, 25, 12, 25, 14, 25, 327, 11, 25, 3, 25, 3, 25, 7, 25, 331, 10, 25, 12, 25, 14, 25, 334, 11, 25, 3, 25, 3, 25, 7, 25, 338, 10, 25, 12, 25, 14, 25, 341, 11, 25, 3, 25, 6, 25, 344, 10, 25, 13, 25, 14, 25, 345, 5, 25, 348, 10, 25, 3, 26, 3, 26, 7, 26, 352, 10, 26, 12, 26, 14, 26, 355, 11, 26, 3, 26, 7, 26, 358, 10, 26, 12, 26, 14, 26, 361, 11, 26, 3, 27, 3, 27, 7, 27, 365, 10, 27, 12, 27, 14, 27, 368, 11, 27, 3, 27, 6, 27, 371, 10, 27, 13, 27, 14, 27, 372, 5, 27, 375, 10, 27, 3, 28, 3, 28, 7, 28, 379, 10, 28, 12, 28, 14, 28, 382, 11, 28, 3, 28, 7, 28, 385, 10, 28, 12, 28, 14, 28, 388, 11, 28, 3, 29, 3, 29, 3, 30, 3, 30, 5, 30, 394, 10, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 5, 31, 401, 10, 31, 5, 31, 403, 10, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 5, 33, 413, 10, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 37, 3, 37, 7, 37, 423, 10, 37, 12, 37, 14, 37, 426, 11, 37, 3, 37, 7, 37, 429, 10, 37, 12, 37, 14, 37, 432, 11, 37, 3, 38, 7, 38, 435, 10, 38, 12, 38, 14, 38, 438, 11, 38, 3, 38, 3, 38, 5, 38, 442, 10, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 5, 39, 449, 10, 39, 3, 40, 3, 40, 6, 40, 453, 10, 40, 13, 40, 14, 40, 454, 3, 41, 3, 41, 3, 42, 3, 42, 5, 42, 461, 10, 42, 3, 43, 3, 43, 3, 43, 6, 43, 466, 10, 43, 13, 43, 14, 43, 467, 3, 44, 3, 44, 5, 44, 472, 10, 44, 3, 45, 3, 45, 5, 45, 476, 10, 45, 3, 46, 3, 46, 3, 46, 6, 46, 481, 10, 46, 13, 46, 14, 46, 482, 3, 46, 5, 46, 486, 10, 46, 3, 47, 3, 47, 5, 47, 490, 10, 47, 3, 47, 3, 47, 5, 47, 494, 10, 47, 3, 47, 5, 47, 497, 10, 47, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, 503, 10, 48, 3, 48, 7, 48, 506, 10, 48, 12, 48, 14, 48, 509, 11, 48, 3, 48, 7, 48, 512, 10, 48, 12, 48, 14, 48, 515, 11, 48, 3, 49, 5, 49, 518, 10, 49, 3, 49, 3, 49, 3, 49, 5, 49, 523, 10, 49, 3, 49, 7, 49, 526, 10, 49, 12, 49, 14, 49, 529, 11, 49, 3, 49, 7, 49, 532, 10, 49, 12, 49, 14, 49, 535, 11, 49, 3, 50, 3, 50, 3, 50, 3, 50, 5, 50, 541, 10, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 550, 10, 51, 3, 51, 5, 51, 553, 10, 51, 3, 52, 3, 52, 3, 53, 3, 53, 7, 53, 559, 10, 53, 12, 53, 14, 53, 562, 11, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 6, 54, 571, 10, 54, 13, 54, 14, 54, 572, 3, 54, 6, 54, 576, 10, 54, 13, 54, 14, 54, 577, 3, 54, 6, 54, 581, 10, 54, 13, 54, 14, 54, 582, 5, 54, 585, 10, 54, 5, 54, 587, 10, 54, 3, 55, 3, 55, 3, 55, 7, 55, 592, 10, 55, 12, 55, 14, 55, 595, 11, 55, 5, 55, 597, 10, 55, 3, 56, 3, 56, 3, 56, 5, 56, 602, 10, 56, 3, 57, 3, 57, 3, 57, 7, 57, 607, 10, 57, 12, 57, 14, 57, 610, 11, 57, 5, 57, 612, 10, 57, 3, 58, 3, 58, 3, 58, 5, 58, 617, 10, 58, 3, 59, 3, 59, 3, 59, 7, 59, 622, 10, 59, 12, 59, 14, 59, 625, 11, 59, 5, 59, 627, 10, 59, 3, 59, 3, 59, 3, 59, 7, 59, 632, 10, 59, 12, 59, 14, 59, 635, 11, 59, 5, 59, 637, 10, 59, 3, 60, 3, 60, 3, 60, 5, 60, 642, 10, 60, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 5, 62, 651, 10, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 5, 64, 660, 10, 64, 3, 65, 3, 65, 5, 65, 664, 10, 65, 3, 66, 3, 66, 3, 67, 3, 67, 3, 68, 3, 68, 5, 68, 672, 10, 68, 3, 69, 3, 69, 5, 69, 676, 10, 69, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 5, 71, 684, 10, 71, 3, 72, 3, 72, 3, 73, 3, 73, 3, 74, 3, 74, 5, 74, 692, 10, 74, 3, 75, 3, 75, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 77, 5, 77, 702, 10, 77, 3, 78, 3, 78, 3, 78, 3, 78, 5, 78, 708, 10, 78, 3, 78, 2, 2, 79, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 2, 12, 3, 2, 36, 38, 3, 2, 45, 47, 3, 2, 41, 44, 3, 2, 48, 49, 3, 2, 66, 68, 4, 2, 66, 66, 70, 70, 4, 2, 22, 22, 55, 55, 3, 2, 51, 52, 3, 2, 71, 74, 3, 2, 58, 59, 2, 745, 2, 159, 3, 2, 2, 2, 4, 179, 3, 2, 2, 2, 6, 181, 3, 2, 2, 2, 8, 184, 3, 2, 2, 2, 10, 188, 3, 2, 2, 2, 12, 193, 3, 2, 2, 2, 14, 195, 3, 2, 2, 2, 16, 200, 3, 2, 2, 2, 18, 206, 3, 2, 2, 2, 20, 209, 3, 2, 2, 2, 22, 222, 3, 2, 2, 2, 24, 224, 3, 2, 2, 2, 26, 226, 3, 2, 2, 2, 28, 234, 3, 2, 2, 2, 30, 242, 3, 2, 2, 2, 32, 250, 3, 2, 2, 2, 34, 259, 3, 2, 2, 2, 36, 264, 3, 2, 2, 2, 38, 282, 3, 2, 2, 2, 40, 298, 3, 2, 2, 2, 42, 302, 3, 2, 2, 2, 44, 306, 3, 2, 2, 2, 46, 312, 3, 2, 2, 2, 48, 347, 3, 2, 2, 2, 50, 349, 3, 2, 2, 2, 52, 374, 3, 2, 2, 2, 54, 376, 3, 2, 2, 2, 56, 389, 3, 2, 2, 2, 58, 393, 3, 2, 2, 2, 60, 402, 3, 2, 2, 2, 62, 404, 3, 2, 2, 2, 64, 412, 3, 2, 2, 2, 66, 414, 3, 2, 2, 2, 68, 416, 3, 2, 2, 2, 70, 418, 3, 2, 2, 2, 72, 420, 3, 2, 2, 2, 74, 436, 3, 2, 2, 2, 76, 448, 3, 2, 2, 2, 78, 450, 3, 2, 2, 2, 80, 456, 3, 2, 2, 2, 82, 460, 3, 2, 2, 2, 84, 462, 3, 2, 2, 2, 86, 471, 3, 2, 2, 2, 88, 473, 3, 2, 2, 2, 90, 477, 3, 2, 2, 2, 92, 496, 3, 2, 2, 2, 94, 498, 3, 2, 2, 2, 96, 517, 3, 2, 2, 2, 98, 540, 3, 2, 2, 2, 100, 552, 3, 2, 2, 2, 102, 554, 3, 2, 2, 2, 104, 556, 3, 2, 2, 2, 106, 586, 3, 2, 2, 2, 108, 588, 3, 2, 2, 2, 110, 598, 3, 2, 2, 2, 112, 603, 3, 2, 2, 2, 114, 613, 3, 2, 2, 2, 116, 636, 3, 2, 2, 2, 118, 638, 3, 2, 2, 2, 120, 643, 3, 2, 2, 2, 122, 646, 3, 2, 2, 2, 124, 652, 3, 2, 2, 2, 126, 659, 3, 2, 2, 2, 128, 663, 3, 2, 2, 2, 130, 665, 3, 2, 2, 2, 132, 667, 3, 2, 2, 2, 134, 671, 3, 2, 2, 2, 136, 675, 3, 2, 2, 2, 138, 677, 3, 2, 2, 2, 140, 679, 3, 2, 2, 2, 142, 685, 3, 2, 2, 2, 144, 687, 3, 2, 2, 2, 146, 691, 3, 2, 2, 2, 148, 693, 3, 2, 2, 2, 150, 695, 3, 2, 2, 2, 152, 701, 3, 2, 2, 2, 154, 707, 3, 2, 2, 2, 156, 158, 5, 4, 3, 2, 157, 156, 3, 2, 2, 2, 158, 161, 3, 2, 2, 2, 159, 157, 3, 2, 2, 2, 159, 160, 3, 2, 2, 2, 160, 172, 3, 2, 2, 2, 161, 159, 3, 2, 2, 2, 162, 165, 5, 12, 7, 2, 163, 165, 5, 16, 9, 2, 164, 162, 3, 2, 2, 2, 164, 163, 3, 2, 2, 2, 165, 169, 3, 2, 2, 2, 166, 168, 5, 18, 10, 2, 167, 166, 3, 2, 2, 2, 168, 171, 3, 2, 2, 2, 169, 167, 3, 2, 2, 2, 169, 170, 3, 2, 2, 2, 170, 173, 3, 2, 2, 2, 171, 169, 3, 2, 2, 2, 172, 164, 3, 2, 2, 2, 172, 173, 3, 2, 2, 2, 173, 174, 3, 2, 2, 2, 174, 175, 7, 2, 2, 3, 175, 3, 3, 2, 2, 2, 176, 180, 5, 6, 4, 2, 177, 180, 5, 8, 5, 2, 178, 180, 5, 10, 6, 2, 179, 176, 3, 2, 2, 2, 179, 177, 3, 2, 2, 2, 179, 178, 3, 2, 2, 2, 180, 5, 3, 2, 2, 2, 181, 182, 7, 25, 2, 2, 182, 183, 7, 57, 2, 2, 183, 7, 3, 2, 2, 2, 184, 185, 7, 30, 2, 2, 185, 186, 7, 58, 2, 2, 186, 187, 7, 57, 2, 2, 187, 9, 3, 2, 2, 2, 188, 189, 7, 27, 2, 2, 189, 190, 7, 57, 2, 2, 190, 11, 3, 2, 2, 2, 191, 194, 5, 14, 8, 2, 192, 194, 5, 20, 11, 2, 193, 191, 3, 2, 2, 2, 193, 192, 3, 2, 2, 2, 194, 13, 3, 2, 2, 2, 195, 196, 7, 31, 2, 2, 196, 197, 7, 3, 2, 2, 197, 198, 5, 22, 12, 2, 198, 15, 3, 2, 2, 2, 199, 201, 5, 124, 63, 2, 200, 199, 3, 2, 2, 2, 201, 202, 3, 2, 2, 2, 202, 200, 3, 2, 2, 2, 202, 203, 3, 2, 2, 2, 203, 17, 3, 2, 2, 2, 204, 207, 5, 4, 3, 2, 205, 207, 5, 12, 7, 2, 206, 204, 3, 2, 2, 2, 206, 205, 3, 2, 2, 2, 207, 19, 3, 2, 2, 2, 208, 210, 7, 24, 2, 2, 209, 208, 3, 2, 2, 2, 209, 210, 3, 2, 2, 2, 210, 211, 3, 2, 2, 2, 211, 215, 5, 134, 68, 2, 212, 214, 5, 154, 78, 2, 213, 212, 3, 2, 2, 2, 214, 217, 3, 2, 2, 2, 215, 213, 3, 2, 2, 2, 215, 216, 3, 2, 2, 2, 216, 220, 3, 2, 2, 2, 217, 215, 3, 2, 2, 2, 218, 221, 5, 22, 12, 2, 219, 221, 7, 29, 2, 2, 220, 218, 3, 2, 2, 2, 220, 219, 3, 2, 2, 2, 221, 21, 3, 2, 2, 2, 222, 223, 5, 26, 14, 2, 223, 23, 3, 2, 2, 2, 224, 225, 5, 28, 15, 2, 225, 25, 3, 2, 2, 2, 226, 231, 5, 30, 16, 2, 227, 228, 7, 40, 2, 2, 228, 230, 5, 30, 16, 2, 229, 227, 3, 2, 2, 2, 230, 233, 3, 2, 2, 2, 231, 229, 3, 2, 2, 2, 231, 232, 3, 2, 2, 2, 232, 27, 3, 2, 2, 2, 233, 231, 3, 2, 2, 2, 234, 239, 5, 32, 17, 2, 235, 236, 7, 40, 2, 2, 236, 238, 5, 32, 17, 2, 237, 235, 3, 2, 2, 2, 238, 241, 3, 2, 2, 2, 239, 237, 3, 2, 2, 2, 239, 240, 3, 2, 2, 2, 240, 29, 3, 2, 2, 2, 241, 239, 3, 2, 2, 2, 242, 247, 5, 34, 18, 2, 243, 244, 7, 39, 2, 2, 244, 246, 5, 34, 18, 2, 245, 243, 3, 2, 2, 2, 246, 249, 3, 2, 2, 2, 247, 245, 3, 2, 2, 2, 247, 248, 3, 2, 2, 2, 248, 31, 3, 2, 2, 2, 249, 247, 3, 2, 2, 2, 250, 255, 5, 36, 19, 2, 251, 252, 7, 39, 2, 2, 252, 254, 5, 36, 19, 2, 253, 251, 3, 2, 2, 2, 254, 257, 3, 2, 2, 2, 255, 253, 3, 2, 2, 2, 255, 256, 3, 2, 2, 2, 256, 33, 3, 2, 2, 2, 257, 255, 3, 2, 2, 2, 258, 260, 7, 50, 2, 2, 259, 258, 3, 2, 2, 2, 259, 260, 3, 2, 2, 2, 260, 261, 3, 2, 2, 2, 261, 262, 5, 38, 20, 2, 262, 35, 3, 2, 2, 2, 263, 265, 7, 50, 2, 2, 264, 263, 3, 2, 2, 2, 264, 265, 3, 2, 2, 2, 265, 266, 3, 2, 2, 2, 266, 267, 5, 40, 21, 2, 267, 37, 3, 2, 2, 2, 268, 270, 5, 54, 28, 2, 269, 271, 5, 42, 22, 2, 270, 269, 3, 2, 2, 2, 270, 271, 3, 2, 2, 2, 271, 283, 3, 2, 2, 2, 272, 283, 5, 50, 26, 2, 273, 275, 5, 42, 22, 2, 274, 276, 5, 54, 28, 2, 275, 274, 3, 2, 2, 2, 275, 276, 3, 2, 2, 2, 276, 283, 3, 2, 2, 2, 277, 278, 7, 4, 2, 2, 278, 279, 5, 22, 12, 2, 279, 280, 7, 5, 2, 2, 280, 283, 3, 2, 2, 2, 281, 283, 7, 6, 2, 2, 282, 268, 3, 2, 2, 2, 282, 272, 3, 2, 2, 2, 282, 273, 3, 2, 2, 2, 282, 277, 3, 2, 2, 2, 282, 281, 3, 2, 2, 2, 283, 39, 3, 2, 2, 2, 284, 286, 5, 52, 27, 2, 285, 287, 5, 44, 23, 2, 286, 285, 3, 2, 2, 2, 286, 287, 3, 2, 2, 2, 287, 299, 3, 2, 2, 2, 288, 299, 5, 48, 25, 2, 289, 291, 5, 44, 23, 2, 290, 292, 5, 52, 27, 2, 291, 290, 3, 2, 2, 2, 291, 292, 3, 2, 2, 2, 292, 299, 3, 2, 2, 2, 293, 294, 7, 4, 2, 2, 294, 295, 5, 22, 12, 2, 295, 296, 7, 5, 2, 2, 296, 299, 3, 2, 2, 2, 297, 299, 7, 6, 2, 2, 298, 284, 3, 2, 2, 2, 298, 288, 3, 2, 2, 2, 298, 289, 3, 2, 2, 2, 298, 293, 3, 2, 2, 2, 298, 297, 3, 2, 2, 2, 299, 41, 3, 2, 2, 2, 300, 303, 5, 72, 37, 2, 301, 303, 5, 46, 24, 2, 302, 300, 3, 2, 2, 2, 302, 301, 3, 2, 2, 2, 303, 43, 3, 2, 2, 2, 304, 307, 5, 74, 38, 2, 305, 307, 5, 46, 24, 2, 306, 304, 3, 2, 2, 2, 306, 305, 3, 2, 2, 2, 307, 45, 3, 2, 2, 2, 308, 313, 7, 61, 2, 2, 309, 313, 7, 60, 2, 2, 310, 311, 7, 7, 2, 2, 311, 313, 5, 134, 68, 2, 312, 308, 3, 2, 2, 2, 312, 309, 3, 2, 2, 2, 312, 310, 3, 2, 2, 2, 313, 47, 3, 2, 2, 2, 314, 318, 7, 35, 2, 2, 315, 317, 5, 58, 30, 2, 316, 315, 3, 2, 2, 2, 317, 320, 3, 2, 2, 2, 318, 316, 3, 2, 2, 2, 318, 319, 3, 2, 2, 2, 319, 348, 3, 2, 2, 2, 320, 318, 3, 2, 2, 2, 321, 325, 5, 56, 29, 2, 322, 324, 5, 60, 31, 2, 323, 322, 3, 2, 2, 2, 324, 327, 3, 2, 2, 2, 325, 323, 3, 2, 2, 2, 325, 326, 3, 2, 2, 2, 326, 348, 3, 2, 2, 2, 327, 325, 3, 2, 2, 2, 328, 332, 5, 132, 67, 2, 329, 331, 5, 58, 30, 2, 330, 329, 3, 2, 2, 2, 331, 334, 3, 2, 2, 2, 332, 330, 3, 2, 2, 2, 332, 333, 3, 2, 2, 2, 333, 348, 3, 2, 2, 2, 334, 332, 3, 2, 2, 2, 335, 339, 5, 104, 53, 2, 336, 338, 5, 58, 30, 2, 337, 336, 3, 2, 2, 2, 338, 341, 3, 2, 2, 2, 339, 337, 3, 2, 2, 2, 339, 340, 3, 2, 2, 2, 340, 348, 3, 2, 2, 2, 341, 339, 3, 2, 2, 2, 342, 344, 5, 64, 33, 2, 343, 342, 3, 2, 2, 2, 344, 345, 3, 2, 2, 2, 345, 343, 3, 2, 2, 2, 345, 346, 3, 2, 2, 2, 346, 348, 3, 2, 2, 2, 347, 314, 3, 2, 2, 2, 347, 321, 3, 2, 2, 2, 347, 328, 3, 2, 2, 2, 347, 335, 3, 2, 2, 2, 347, 343, 3, 2, 2, 2, 348, 49, 3, 2, 2, 2, 349, 353, 5, 48, 25, 2, 350, 352, 5, 122, 62, 2, 351, 350, 3, 2, 2, 2, 352, 355, 3, 2, 2, 2, 353, 351, 3, 2, 2, 2, 353, 354, 3, 2, 2, 2, 354, 359, 3, 2, 2, 2, 355, 353, 3, 2, 2, 2, 356, 358, 5, 124, 63, 2, 357, 356, 3, 2, 2, 2, 358, 361, 3, 2, 2, 2, 359, 357, 3, 2, 2, 2, 359, 360, 3, 2, 2, 2, 360, 51, 3, 2, 2, 2, 361, 359, 3, 2, 2, 2, 362, 366, 5, 56, 29, 2, 363, 365, 5, 60, 31, 2, 364, 363, 3, 2, 2, 2, 365, 368, 3, 2, 2, 2, 366, 364, 3, 2, 2, 2, 366, 367, 3, 2, 2, 2, 367, 375, 3, 2, 2, 2, 368, 366, 3, 2, 2, 2, 369, 371, 5, 60, 31, 2, 370, 369, 3, 2, 2, 2, 371, 372, 3, 2, 2, 2, 372, 370, 3, 2, 2, 2, 372, 373, 3, 2, 2, 2, 373, 375, 3, 2, 2, 2, 374, 362, 3, 2, 2, 2, 374, 370, 3, 2, 2, 2, 375, 53, 3, 2, 2, 2, 376, 380, 5, 52, 27, 2, 377, 379, 5, 122, 62, 2, 378, 377, 3, 2, 2, 2, 379, 382, 3, 2, 2, 2, 380, 378, 3, 2, 2, 2, 380, 381, 3, 2, 2, 2, 381, 386, 3, 2, 2, 2, 382, 380, 3, 2, 2, 2, 383, 385, 5, 124, 63, 2, 384, 383, 3, 2, 2, 2, 385, 388, 3, 2, 2, 2, 386, 384, 3, 2, 2, 2, 386, 387, 3, 2, 2, 2, 387, 55, 3, 2, 2, 2, 388, 386, 3, 2, 2, 2, 389, 390, 9, 2, 2, 2, 390, 57, 3, 2, 2, 2, 391, 394, 5, 60, 31, 2, 392, 394, 5, 64, 33, 2, 393, 391, 3, 2, 2, 2, 393, 392, 3, 2, 2, 2, 394, 59, 3, 2, 2, 2, 395, 396, 5, 62, 32, 2, 396, 397, 7, 66, 2, 2, 397, 403, 3, 2, 2, 2, 398, 400, 7, 62, 2, 2, 399, 401, 7, 63, 2, 2, 400, 399, 3, 2, 2, 2, 400, 401, 3, 2, 2, 2, 401, 403, 3, 2, 2, 2, 402, 395, 3, 2, 2, 2, 402, 398, 3, 2, 2, 2, 403, 61, 3, 2, 2, 2, 404, 405, 9, 3, 2, 2, 405, 63, 3, 2, 2, 2, 406, 407, 5, 66, 34, 2, 407, 408, 5, 70, 36, 2, 408, 413, 3, 2, 2, 2, 409, 410, 5, 68, 35, 2, 410, 411, 7, 66, 2, 2, 411, 413, 3, 2, 2, 2, 412, 406, 3, 2, 2, 2, 412, 409, 3, 2, 2, 2, 413, 65, 3, 2, 2, 2, 414, 415, 9, 4, 2, 2, 415, 67, 3, 2, 2, 2, 416, 417, 9, 5, 2, 2, 417, 69, 3, 2, 2, 2, 418, 419, 9, 6, 2, 2, 419, 71, 3, 2, 2, 2, 420, 424, 5, 74, 38, 2, 421, 423, 5, 122, 62, 2, 422, 421, 3, 2, 2, 2, 423, 426, 3, 2, 2, 2, 424, 422, 3, 2, 2, 2, 424, 425, 3, 2, 2, 2, 425, 430, 3, 2, 2, 2, 426, 424, 3, 2, 2, 2, 427, 429, 5, 124, 63, 2, 428, 427, 3, 2, 2, 2, 429, 432, 3, 2, 2, 2, 430, 428, 3, 2, 2, 2, 430, 431, 3, 2, 2, 2, 431, 73, 3, 2, 2, 2, 432, 430, 3, 2, 2, 2, 433, 435, 5, 76, 39, 2, 434, 433, 3, 2, 2, 2, 435, 438, 3, 2, 2, 2, 436, 434, 3, 2, 2, 2, 436, 437, 3, 2, 2, 2, 437, 439, 3, 2, 2, 2, 438, 436, 3, 2, 2, 2, 439, 441, 7, 8, 2, 2, 440, 442, 5, 80, 41, 2, 441, 440, 3, 2, 2, 2, 441, 442, 3, 2, 2, 2, 442, 443, 3, 2, 2, 2, 443, 444, 7, 9, 2, 2, 444, 75, 3, 2, 2, 2, 445, 449, 5, 152, 77, 2, 446, 449, 5, 78, 40, 2, 447, 449, 7, 33, 2, 2, 448, 445, 3, 2, 2, 2, 448, 446, 3, 2, 2, 2, 448, 447, 3, 2, 2, 2, 449, 77, 3, 2, 2, 2, 450, 452, 7, 34, 2, 2, 451, 453, 5, 128, 65, 2, 452, 451, 3, 2, 2, 2, 453, 454, 3, 2, 2, 2, 454, 452, 3, 2, 2, 2, 454, 455, 3, 2, 2, 2, 455, 79, 3, 2, 2, 2, 456, 457, 5, 82, 42, 2, 457, 81, 3, 2, 2, 2, 458, 461, 5, 86, 44, 2, 459, 461, 5, 84, 43, 2, 460, 458, 3, 2, 2, 2, 460, 459, 3, 2, 2, 2, 461, 83, 3, 2, 2, 2, 462, 465, 5, 86, 44, 2, 463, 464, 7, 10, 2, 2, 464, 466, 5, 86, 44, 2, 465, 463, 3, 2, 2, 2, 466, 467, 3, 2, 2, 2, 467, 465, 3, 2, 2, 2, 467, 468, 3, 2, 2, 2, 468, 85, 3, 2, 2, 2, 469, 472, 5, 88, 45, 2, 470, 472, 5, 90, 46, 2, 471, 469, 3, 2, 2, 2, 471, 470, 3, 2, 2, 2, 472, 87, 3, 2, 2, 2, 473, 475, 5, 92, 47, 2, 474, 476, 7, 11, 2, 2, 475, 474, 3, 2, 2, 2, 475, 476, 3, 2, 2, 2, 476, 89, 3, 2, 2, 2, 477, 480, 5, 92, 47, 2, 478, 479, 7, 11, 2, 2, 479, 481, 5, 92, 47, 2, 480, 478, 3, 2, 2, 2, 481, 482, 3, 2, 2, 2, 482, 480, 3, 2, 2, 2, 482, 483, 3, 2, 2, 2, 483, 485, 3, 2, 2, 2, 484, 486, 7, 11, 2, 2, 485, 484, 3, 2, 2, 2, 485, 486, 3, 2, 2, 2, 486, 91, 3, 2, 2, 2, 487, 488, 7, 12, 2, 2, 488, 490, 5, 136, 69, 2, 489, 487, 3, 2, 2, 2, 489, 490, 3, 2, 2, 2, 490, 493, 3, 2, 2, 2, 491, 494, 5, 96, 49, 2, 492, 494, 5, 94, 48, 2, 493, 491, 3, 2, 2, 2, 493, 492, 3, 2, 2, 2, 494, 497, 3, 2, 2, 2, 495, 497, 5, 120, 61, 2, 496, 489, 3, 2, 2, 2, 496, 495, 3, 2, 2, 2, 497, 93, 3, 2, 2, 2, 498, 499, 7, 4, 2, 2, 499, 500, 5, 80, 41, 2, 500, 502, 7, 5, 2, 2, 501, 503, 5, 98, 50, 2, 502, 501, 3, 2, 2, 2, 502, 503, 3, 2, 2, 2, 503, 507, 3, 2, 2, 2, 504, 506, 5, 122, 62, 2, 505, 504, 3, 2, 2, 2, 506, 509, 3, 2, 2, 2, 507, 505, 3, 2, 2, 2, 507, 508, 3, 2, 2, 2, 508, 513, 3, 2, 2, 2, 509, 507, 3, 2, 2, 2, 510, 512, 5, 124, 63, 2, 511, 510, 3, 2, 2, 2, 512, 515, 3, 2, 2, 2, 513, 511, 3, 2, 2, 2, 513, 514, 3, 2, 2, 2, 514, 95, 3, 2, 2, 2, 515, 513, 3, 2, 2, 2, 516, 518, 5, 102, 52, 2, 517, 516, 3, 2, 2, 2, 517, 518, 3, 2, 2, 2, 518, 519, 3, 2, 2, 2, 519, 520, 5, 128, 65, 2, 520, 522, 5, 24, 13, 2, 521, 523, 5, 98, 50, 2, 522, 521, 3, 2, 2, 2, 522, 523, 3, 2, 2, 2, 523, 527, 3, 2, 2, 2, 524, 526, 5, 122, 62, 2, 525, 524, 3, 2, 2, 2, 526, 529, 3, 2, 2, 2, 527, 525, 3, 2, 2, 2, 527, 528, 3, 2, 2, 2, 528, 533, 3, 2, 2, 2, 529, 527, 3, 2, 2, 2, 530, 532, 5, 124, 63, 2, 531, 530, 3, 2, 2, 2, 532, 535, 3, 2, 2, 2, 533, 531, 3, 2, 2, 2, 533, 534, 3, 2, 2, 2, 534, 97, 3, 2, 2, 2, 535, 533, 3, 2, 2, 2, 536, 541, 7, 70, 2, 2, 537, 541, 7, 13, 2, 2, 538, 541, 7, 14, 2, 2, 539, 541, 5, 100, 51, 2, 540, 536, 3, 2, 2, 2, 540, 537, 3, 2, 2, 2, 540, 538, 3, 2, 2, 2, 540, 539, 3, 2, 2, 2, 541, 99, 3, 2, 2, 2, 542, 543, 7, 8, 2, 2, 543, 544, 7, 66, 2, 2, 544, 553, 7, 9, 2, 2, 545, 546, 7, 8, 2, 2, 546, 547, 7, 66, 2, 2, 547, 549, 7, 15, 2, 2, 548, 550, 9, 7, 2, 2, 549, 548, 3, 2, 2, 2, 549, 550, 3, 2, 2, 2, 550, 551, 3, 2, 2, 2, 551, 553, 7, 9, 2, 2, 552, 542, 3, 2, 2, 2, 552, 545, 3, 2, 2, 2, 553, 101, 3, 2, 2, 2, 554, 555, 7, 16, 2, 2, 555, 103, 3, 2, 2, 2, 556, 560, 7, 17, 2, 2, 557, 559, 5, 106, 54, 2, 558, 557, 3, 2, 2, 2, 559, 562, 3, 2, 2, 2, 560, 558, 3, 2, 2, 2, 560, 561, 3, 2, 2, 2, 561, 563, 3, 2, 2, 2, 562, 560, 3, 2, 2, 2, 563, 564, 7, 18, 2, 2, 564, 105, 3, 2, 2, 2, 565, 587, 5, 108, 55, 2, 566, 587, 5, 112, 57, 2, 567, 587, 5, 116, 59, 2, 568, 584, 7, 6, 2, 2, 569, 571, 5, 110, 56, 2, 570, 569, 3, 2, 2, 2, 571, 572, 3, 2, 2, 2, 572, 570, 3, 2, 2, 2, 572, 573, 3, 2, 2, 2, 573, 585, 3, 2, 2, 2, 574, 576, 5, 114, 58, 2, 575, 574, 3, 2, 2, 2, 576, 577, 3, 2, 2, 2, 577, 575, 3, 2, 2, 2, 577, 578, 3, 2, 2, 2, 578, 585, 3, 2, 2, 2, 579, 581, 5, 118, 60, 2, 580, 579, 3, 2, 2, 2, 581, 582, 3, 2, 2, 2, 582, 580, 3, 2, 2, 2, 582, 583, 3, 2, 2, 2, 583, 585, 3, 2, 2, 2, 584, 570, 3, 2, 2, 2, 584, 575, 3, 2, 2, 2, 584, 580, 3, 2, 2, 2, 585, 587, 3, 2, 2, 2, 586, 565, 3, 2, 2, 2, 586, 566, 3, 2, 2, 2, 586, 567, 3, 2, 2, 2, 586, 568, 3, 2, 2, 2, 587, 107, 3, 2, 2, 2, 588, 596, 5, 146, 74, 2, 589, 593, 7, 69, 2, 2, 590, 592, 5, 110, 56, 2, 591, 590, 3, 2, 2, 2, 592, 595, 3, 2, 2, 2, 593, 591, 3, 2, 2, 2, 593, 594, 3, 2, 2, 2, 594, 597, 3, 2, 2, 2, 595, 593, 3, 2, 2, 2, 596, 589, 3, 2, 2, 2, 596, 597, 3, 2, 2, 2, 597, 109, 3, 2, 2, 2, 598, 599, 7, 19, 2, 2, 599, 601, 5, 146, 74, 2, 600, 602, 7, 69, 2, 2, 601, 600, 3, 2, 2, 2, 601, 602, 3, 2, 2, 2, 602, 111, 3, 2, 2, 2, 603, 611, 5, 126, 64, 2, 604, 608, 7, 69, 2, 2, 605, 607, 5, 114, 58, 2, 606, 605, 3, 2, 2, 2, 607, 610, 3, 2, 2, 2, 608, 606, 3, 2, 2, 2, 608, 609, 3, 2, 2, 2, 609, 612, 3, 2, 2, 2, 610, 608, 3, 2, 2, 2, 611, 604, 3, 2, 2, 2, 611, 612, 3, 2, 2, 2, 612, 113, 3, 2, 2, 2, 613, 614, 7, 19, 2, 2, 614, 616, 5, 126, 64, 2, 615, 617, 7, 69, 2, 2, 616, 615, 3, 2, 2, 2, 616, 617, 3, 2, 2, 2, 617, 115, 3, 2, 2, 2, 618, 626, 7, 65, 2, 2, 619, 623, 7, 69, 2, 2, 620, 622, 5, 118, 60, 2, 621, 620, 3, 2, 2, 2, 622, 625, 3, 2, 2, 2, 623, 621, 3, 2, 2, 2, 623, 624, 3, 2, 2, 2, 624, 627, 3, 2, 2, 2, 625, 623, 3, 2, 2, 2, 626, 619, 3, 2, 2, 2, 626, 627, 3, 2, 2, 2, 627, 637, 3, 2, 2, 2, 628, 629, 7, 7, 2, 2, 629, 633, 7, 69, 2, 2, 630, 632, 5, 118, 60, 2, 631, 630, 3, 2, 2, 2, 632, 635, 3, 2, 2, 2, 633, 631, 3, 2, 2, 2, 633, 634, 3, 2, 2, 2, 634, 637, 3, 2, 2, 2, 635, 633, 3, 2, 2, 2, 636, 618, 3, 2, 2, 2, 636, 628, 3, 2, 2, 2, 637, 117, 3, 2, 2, 2, 638, 639, 7, 19, 2, 2, 639, 641, 7, 65, 2, 2, 640, 642, 7, 69, 2, 2, 641, 640, 3, 2, 2, 2, 641, 642, 3, 2, 2, 2, 642, 119, 3, 2, 2, 2, 643, 644, 7, 20, 2, 2, 644, 645, 5, 136, 69, 2, 645, 121, 3, 2, 2, 2, 646, 647, 7, 21, 2, 2, 647, 650, 5, 128, 65, 2, 648, 651, 5, 146, 74, 2, 649, 651, 5, 126, 64, 2, 650, 648, 3, 2, 2, 2, 650, 649, 3, 2, 2, 2, 651, 123, 3, 2, 2, 2, 652, 653, 7, 22, 2, 2, 653, 654, 5, 146, 74, 2, 654, 655, 9, 8, 2, 2, 655, 125, 3, 2, 2, 2, 656, 660, 5, 140, 71, 2, 657, 660, 5, 138, 70, 2, 658, 660, 5, 142, 72, 2, 659, 656, 3, 2, 2, 2, 659, 657, 3, 2, 2, 2, 659, 658, 3, 2, 2, 2, 660, 127, 3, 2, 2, 2, 661, 664, 5, 146, 74, 2, 662, 664, 5, 130, 66, 2, 663, 661, 3, 2, 2, 2, 663, 662, 3, 2, 2, 2, 664, 129, 3, 2, 2, 2, 665, 666, 7, 56, 2, 2, 666, 131, 3, 2, 2, 2, 667, 668, 5, 146, 74, 2, 668, 133, 3, 2, 2, 2, 669, 672, 5, 146, 74, 2, 670, 672, 5, 150, 76, 2, 671, 669, 3, 2, 2, 2, 671, 670, 3, 2, 2, 2, 672, 135, 3, 2, 2, 2, 673, 676, 5, 146, 74, 2, 674, 676, 5, 150, 76, 2, 675, 673, 3, 2, 2, 2, 675, 674, 3, 2, 2, 2, 676, 137, 3, 2, 2, 2, 677, 678, 9, 6, 2, 2, 678, 139, 3, 2, 2, 2, 679, 683, 5, 144, 73, 2, 680, 684, 7, 65, 2, 2, 681, 682, 7, 23, 2, 2, 682, 684, 5, 132, 67, 2, 683, 680, 3, 2, 2, 2, 683, 681, 3, 2, 2, 2, 683, 684, 3, 2, 2, 2, 684, 141, 3, 2, 2, 2, 685, 686, 9, 9, 2, 2, 686, 143, 3, 2, 2, 2, 687, 688, 9, 10, 2, 2, 688, 145, 3, 2, 2, 2, 689, 692, 7, 57, 2, 2, 690, 692, 5, 148, 75, 2, 691, 689, 3, 2, 2, 2, 691, 690, 3, 2, 2, 2, 692, 147, 3, 2, 2, 2, 693, 694, 9, 11, 2, 2, 694, 149, 3, 2, 2, 2, 695, 696, 7, 64, 2, 2, 696, 151, 3, 2, 2, 2, 697, 698, 7, 26, 2, 2, 698, 702, 5, 134, 68, 2, 699, 700, 7, 20, 2, 2, 700, 702, 5, 134, 68, 2, 701, 697, 3, 2, 2, 2, 701, 699, 3, 2, 2, 2, 702, 153, 3, 2, 2, 2, 703, 704, 7, 28, 2, 2, 704, 708, 5, 134, 68, 2, 705, 706, 7, 19, 2, 2, 706, 708, 5, 134, 68, 2, 707, 703, 3, 2, 2, 2, 707, 705, 3, 2, 2, 2, 708, 155, 3, 2, 2, 2, 96, 159, 164, 169, 172, 179, 193, 202, 206, 209, 215, 220, 231, 239, 247, 255, 259, 264, 270, 275, 282, 286, 291, 298, 302, 306, 312, 318, 325, 332, 339, 345, 347, 353, 359, 366, 372, 374, 380, 386, 393, 400, 402, 412, 424, 430, 436, 441, 448, 454, 460, 467, 471, 475, 482, 485, 489, 493, 496, 502, 507, 513, 517, 522, 527, 533, 540, 549, 552, 560, 572, 577, 582, 584, 586, 593, 596, 601, 608, 611, 616, 623, 626, 633, 636, 641, 650, 659, 663, 671, 675, 683, 691, 701, 707] \ No newline at end of file +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 74, 710, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 3, 2, 7, 2, 158, 10, 2, 12, 2, 14, 2, 161, 11, 2, 3, 2, 3, 2, 5, 2, 165, 10, 2, 3, 2, 7, 2, 168, 10, 2, 12, 2, 14, 2, 171, 11, 2, 5, 2, 173, 10, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 5, 3, 180, 10, 3, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 5, 7, 194, 10, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 6, 9, 201, 10, 9, 13, 9, 14, 9, 202, 3, 10, 3, 10, 5, 10, 207, 10, 10, 3, 11, 5, 11, 210, 10, 11, 3, 11, 3, 11, 7, 11, 214, 10, 11, 12, 11, 14, 11, 217, 11, 11, 3, 11, 3, 11, 5, 11, 221, 10, 11, 3, 12, 3, 12, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 7, 14, 230, 10, 14, 12, 14, 14, 14, 233, 11, 14, 3, 15, 3, 15, 3, 15, 7, 15, 238, 10, 15, 12, 15, 14, 15, 241, 11, 15, 3, 16, 3, 16, 3, 16, 7, 16, 246, 10, 16, 12, 16, 14, 16, 249, 11, 16, 3, 17, 3, 17, 3, 17, 7, 17, 254, 10, 17, 12, 17, 14, 17, 257, 11, 17, 3, 18, 5, 18, 260, 10, 18, 3, 18, 3, 18, 3, 19, 5, 19, 265, 10, 19, 3, 19, 3, 19, 3, 20, 3, 20, 5, 20, 271, 10, 20, 3, 20, 3, 20, 3, 20, 5, 20, 276, 10, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 5, 20, 283, 10, 20, 3, 21, 3, 21, 5, 21, 287, 10, 21, 3, 21, 3, 21, 3, 21, 5, 21, 292, 10, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 5, 21, 299, 10, 21, 3, 22, 3, 22, 5, 22, 303, 10, 22, 3, 23, 3, 23, 5, 23, 307, 10, 23, 3, 24, 3, 24, 3, 24, 3, 24, 5, 24, 313, 10, 24, 3, 25, 3, 25, 7, 25, 317, 10, 25, 12, 25, 14, 25, 320, 11, 25, 3, 25, 3, 25, 7, 25, 324, 10, 25, 12, 25, 14, 25, 327, 11, 25, 3, 25, 3, 25, 7, 25, 331, 10, 25, 12, 25, 14, 25, 334, 11, 25, 3, 25, 3, 25, 7, 25, 338, 10, 25, 12, 25, 14, 25, 341, 11, 25, 3, 25, 6, 25, 344, 10, 25, 13, 25, 14, 25, 345, 5, 25, 348, 10, 25, 3, 26, 3, 26, 7, 26, 352, 10, 26, 12, 26, 14, 26, 355, 11, 26, 3, 26, 7, 26, 358, 10, 26, 12, 26, 14, 26, 361, 11, 26, 3, 27, 3, 27, 7, 27, 365, 10, 27, 12, 27, 14, 27, 368, 11, 27, 3, 27, 6, 27, 371, 10, 27, 13, 27, 14, 27, 372, 5, 27, 375, 10, 27, 3, 28, 3, 28, 7, 28, 379, 10, 28, 12, 28, 14, 28, 382, 11, 28, 3, 28, 7, 28, 385, 10, 28, 12, 28, 14, 28, 388, 11, 28, 3, 29, 3, 29, 3, 30, 3, 30, 5, 30, 394, 10, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 5, 31, 401, 10, 31, 5, 31, 403, 10, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 5, 33, 413, 10, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 37, 3, 37, 7, 37, 423, 10, 37, 12, 37, 14, 37, 426, 11, 37, 3, 37, 7, 37, 429, 10, 37, 12, 37, 14, 37, 432, 11, 37, 3, 38, 7, 38, 435, 10, 38, 12, 38, 14, 38, 438, 11, 38, 3, 38, 3, 38, 5, 38, 442, 10, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 5, 39, 449, 10, 39, 3, 40, 3, 40, 6, 40, 453, 10, 40, 13, 40, 14, 40, 454, 3, 41, 3, 41, 3, 42, 3, 42, 5, 42, 461, 10, 42, 3, 43, 3, 43, 3, 43, 6, 43, 466, 10, 43, 13, 43, 14, 43, 467, 3, 44, 3, 44, 5, 44, 472, 10, 44, 3, 45, 3, 45, 5, 45, 476, 10, 45, 3, 46, 3, 46, 3, 46, 6, 46, 481, 10, 46, 13, 46, 14, 46, 482, 3, 46, 5, 46, 486, 10, 46, 3, 47, 3, 47, 5, 47, 490, 10, 47, 3, 47, 3, 47, 5, 47, 494, 10, 47, 3, 47, 5, 47, 497, 10, 47, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, 503, 10, 48, 3, 48, 7, 48, 506, 10, 48, 12, 48, 14, 48, 509, 11, 48, 3, 48, 7, 48, 512, 10, 48, 12, 48, 14, 48, 515, 11, 48, 3, 49, 5, 49, 518, 10, 49, 3, 49, 3, 49, 3, 49, 5, 49, 523, 10, 49, 3, 49, 7, 49, 526, 10, 49, 12, 49, 14, 49, 529, 11, 49, 3, 49, 7, 49, 532, 10, 49, 12, 49, 14, 49, 535, 11, 49, 3, 50, 3, 50, 3, 50, 3, 50, 5, 50, 541, 10, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 550, 10, 51, 3, 51, 5, 51, 553, 10, 51, 3, 52, 3, 52, 3, 53, 3, 53, 7, 53, 559, 10, 53, 12, 53, 14, 53, 562, 11, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 6, 54, 571, 10, 54, 13, 54, 14, 54, 572, 3, 54, 6, 54, 576, 10, 54, 13, 54, 14, 54, 577, 3, 54, 6, 54, 581, 10, 54, 13, 54, 14, 54, 582, 5, 54, 585, 10, 54, 5, 54, 587, 10, 54, 3, 55, 3, 55, 3, 55, 7, 55, 592, 10, 55, 12, 55, 14, 55, 595, 11, 55, 5, 55, 597, 10, 55, 3, 56, 3, 56, 3, 56, 5, 56, 602, 10, 56, 3, 57, 3, 57, 3, 57, 7, 57, 607, 10, 57, 12, 57, 14, 57, 610, 11, 57, 5, 57, 612, 10, 57, 3, 58, 3, 58, 3, 58, 5, 58, 617, 10, 58, 3, 59, 3, 59, 3, 59, 7, 59, 622, 10, 59, 12, 59, 14, 59, 625, 11, 59, 5, 59, 627, 10, 59, 3, 59, 3, 59, 3, 59, 7, 59, 632, 10, 59, 12, 59, 14, 59, 635, 11, 59, 5, 59, 637, 10, 59, 3, 60, 3, 60, 3, 60, 5, 60, 642, 10, 60, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 5, 62, 651, 10, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 5, 64, 660, 10, 64, 3, 65, 3, 65, 5, 65, 664, 10, 65, 3, 66, 3, 66, 3, 67, 3, 67, 3, 68, 3, 68, 5, 68, 672, 10, 68, 3, 69, 3, 69, 5, 69, 676, 10, 69, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 5, 71, 684, 10, 71, 3, 72, 3, 72, 3, 73, 3, 73, 3, 74, 3, 74, 5, 74, 692, 10, 74, 3, 75, 3, 75, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 77, 5, 77, 702, 10, 77, 3, 78, 3, 78, 3, 78, 3, 78, 5, 78, 708, 10, 78, 3, 78, 2, 2, 79, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 2, 12, 3, 2, 36, 38, 3, 2, 45, 47, 3, 2, 41, 44, 3, 2, 48, 49, 3, 2, 66, 68, 4, 2, 66, 66, 70, 70, 4, 2, 22, 22, 55, 55, 3, 2, 51, 52, 3, 2, 71, 74, 3, 2, 58, 59, 2, 745, 2, 159, 3, 2, 2, 2, 4, 179, 3, 2, 2, 2, 6, 181, 3, 2, 2, 2, 8, 184, 3, 2, 2, 2, 10, 188, 3, 2, 2, 2, 12, 193, 3, 2, 2, 2, 14, 195, 3, 2, 2, 2, 16, 200, 3, 2, 2, 2, 18, 206, 3, 2, 2, 2, 20, 209, 3, 2, 2, 2, 22, 222, 3, 2, 2, 2, 24, 224, 3, 2, 2, 2, 26, 226, 3, 2, 2, 2, 28, 234, 3, 2, 2, 2, 30, 242, 3, 2, 2, 2, 32, 250, 3, 2, 2, 2, 34, 259, 3, 2, 2, 2, 36, 264, 3, 2, 2, 2, 38, 282, 3, 2, 2, 2, 40, 298, 3, 2, 2, 2, 42, 302, 3, 2, 2, 2, 44, 306, 3, 2, 2, 2, 46, 312, 3, 2, 2, 2, 48, 347, 3, 2, 2, 2, 50, 349, 3, 2, 2, 2, 52, 374, 3, 2, 2, 2, 54, 376, 3, 2, 2, 2, 56, 389, 3, 2, 2, 2, 58, 393, 3, 2, 2, 2, 60, 402, 3, 2, 2, 2, 62, 404, 3, 2, 2, 2, 64, 412, 3, 2, 2, 2, 66, 414, 3, 2, 2, 2, 68, 416, 3, 2, 2, 2, 70, 418, 3, 2, 2, 2, 72, 420, 3, 2, 2, 2, 74, 436, 3, 2, 2, 2, 76, 448, 3, 2, 2, 2, 78, 450, 3, 2, 2, 2, 80, 456, 3, 2, 2, 2, 82, 460, 3, 2, 2, 2, 84, 462, 3, 2, 2, 2, 86, 471, 3, 2, 2, 2, 88, 473, 3, 2, 2, 2, 90, 477, 3, 2, 2, 2, 92, 496, 3, 2, 2, 2, 94, 498, 3, 2, 2, 2, 96, 517, 3, 2, 2, 2, 98, 540, 3, 2, 2, 2, 100, 552, 3, 2, 2, 2, 102, 554, 3, 2, 2, 2, 104, 556, 3, 2, 2, 2, 106, 586, 3, 2, 2, 2, 108, 588, 3, 2, 2, 2, 110, 598, 3, 2, 2, 2, 112, 603, 3, 2, 2, 2, 114, 613, 3, 2, 2, 2, 116, 636, 3, 2, 2, 2, 118, 638, 3, 2, 2, 2, 120, 643, 3, 2, 2, 2, 122, 646, 3, 2, 2, 2, 124, 652, 3, 2, 2, 2, 126, 659, 3, 2, 2, 2, 128, 663, 3, 2, 2, 2, 130, 665, 3, 2, 2, 2, 132, 667, 3, 2, 2, 2, 134, 671, 3, 2, 2, 2, 136, 675, 3, 2, 2, 2, 138, 677, 3, 2, 2, 2, 140, 679, 3, 2, 2, 2, 142, 685, 3, 2, 2, 2, 144, 687, 3, 2, 2, 2, 146, 691, 3, 2, 2, 2, 148, 693, 3, 2, 2, 2, 150, 695, 3, 2, 2, 2, 152, 701, 3, 2, 2, 2, 154, 707, 3, 2, 2, 2, 156, 158, 5, 4, 3, 2, 157, 156, 3, 2, 2, 2, 158, 161, 3, 2, 2, 2, 159, 157, 3, 2, 2, 2, 159, 160, 3, 2, 2, 2, 160, 172, 3, 2, 2, 2, 161, 159, 3, 2, 2, 2, 162, 165, 5, 12, 7, 2, 163, 165, 5, 16, 9, 2, 164, 162, 3, 2, 2, 2, 164, 163, 3, 2, 2, 2, 165, 169, 3, 2, 2, 2, 166, 168, 5, 18, 10, 2, 167, 166, 3, 2, 2, 2, 168, 171, 3, 2, 2, 2, 169, 167, 3, 2, 2, 2, 169, 170, 3, 2, 2, 2, 170, 173, 3, 2, 2, 2, 171, 169, 3, 2, 2, 2, 172, 164, 3, 2, 2, 2, 172, 173, 3, 2, 2, 2, 173, 174, 3, 2, 2, 2, 174, 175, 7, 2, 2, 3, 175, 3, 3, 2, 2, 2, 176, 180, 5, 6, 4, 2, 177, 180, 5, 8, 5, 2, 178, 180, 5, 10, 6, 2, 179, 176, 3, 2, 2, 2, 179, 177, 3, 2, 2, 2, 179, 178, 3, 2, 2, 2, 180, 5, 3, 2, 2, 2, 181, 182, 7, 25, 2, 2, 182, 183, 7, 57, 2, 2, 183, 7, 3, 2, 2, 2, 184, 185, 7, 30, 2, 2, 185, 186, 7, 58, 2, 2, 186, 187, 7, 57, 2, 2, 187, 9, 3, 2, 2, 2, 188, 189, 7, 27, 2, 2, 189, 190, 7, 57, 2, 2, 190, 11, 3, 2, 2, 2, 191, 194, 5, 14, 8, 2, 192, 194, 5, 20, 11, 2, 193, 191, 3, 2, 2, 2, 193, 192, 3, 2, 2, 2, 194, 13, 3, 2, 2, 2, 195, 196, 7, 31, 2, 2, 196, 197, 7, 3, 2, 2, 197, 198, 5, 22, 12, 2, 198, 15, 3, 2, 2, 2, 199, 201, 5, 124, 63, 2, 200, 199, 3, 2, 2, 2, 201, 202, 3, 2, 2, 2, 202, 200, 3, 2, 2, 2, 202, 203, 3, 2, 2, 2, 203, 17, 3, 2, 2, 2, 204, 207, 5, 4, 3, 2, 205, 207, 5, 12, 7, 2, 206, 204, 3, 2, 2, 2, 206, 205, 3, 2, 2, 2, 207, 19, 3, 2, 2, 2, 208, 210, 7, 24, 2, 2, 209, 208, 3, 2, 2, 2, 209, 210, 3, 2, 2, 2, 210, 211, 3, 2, 2, 2, 211, 215, 5, 134, 68, 2, 212, 214, 5, 154, 78, 2, 213, 212, 3, 2, 2, 2, 214, 217, 3, 2, 2, 2, 215, 213, 3, 2, 2, 2, 215, 216, 3, 2, 2, 2, 216, 220, 3, 2, 2, 2, 217, 215, 3, 2, 2, 2, 218, 221, 5, 22, 12, 2, 219, 221, 7, 29, 2, 2, 220, 218, 3, 2, 2, 2, 220, 219, 3, 2, 2, 2, 221, 21, 3, 2, 2, 2, 222, 223, 5, 26, 14, 2, 223, 23, 3, 2, 2, 2, 224, 225, 5, 28, 15, 2, 225, 25, 3, 2, 2, 2, 226, 231, 5, 30, 16, 2, 227, 228, 7, 40, 2, 2, 228, 230, 5, 30, 16, 2, 229, 227, 3, 2, 2, 2, 230, 233, 3, 2, 2, 2, 231, 229, 3, 2, 2, 2, 231, 232, 3, 2, 2, 2, 232, 27, 3, 2, 2, 2, 233, 231, 3, 2, 2, 2, 234, 239, 5, 32, 17, 2, 235, 236, 7, 40, 2, 2, 236, 238, 5, 32, 17, 2, 237, 235, 3, 2, 2, 2, 238, 241, 3, 2, 2, 2, 239, 237, 3, 2, 2, 2, 239, 240, 3, 2, 2, 2, 240, 29, 3, 2, 2, 2, 241, 239, 3, 2, 2, 2, 242, 247, 5, 34, 18, 2, 243, 244, 7, 39, 2, 2, 244, 246, 5, 34, 18, 2, 245, 243, 3, 2, 2, 2, 246, 249, 3, 2, 2, 2, 247, 245, 3, 2, 2, 2, 247, 248, 3, 2, 2, 2, 248, 31, 3, 2, 2, 2, 249, 247, 3, 2, 2, 2, 250, 255, 5, 36, 19, 2, 251, 252, 7, 39, 2, 2, 252, 254, 5, 36, 19, 2, 253, 251, 3, 2, 2, 2, 254, 257, 3, 2, 2, 2, 255, 253, 3, 2, 2, 2, 255, 256, 3, 2, 2, 2, 256, 33, 3, 2, 2, 2, 257, 255, 3, 2, 2, 2, 258, 260, 7, 50, 2, 2, 259, 258, 3, 2, 2, 2, 259, 260, 3, 2, 2, 2, 260, 261, 3, 2, 2, 2, 261, 262, 5, 38, 20, 2, 262, 35, 3, 2, 2, 2, 263, 265, 7, 50, 2, 2, 264, 263, 3, 2, 2, 2, 264, 265, 3, 2, 2, 2, 265, 266, 3, 2, 2, 2, 266, 267, 5, 40, 21, 2, 267, 37, 3, 2, 2, 2, 268, 270, 5, 54, 28, 2, 269, 271, 5, 42, 22, 2, 270, 269, 3, 2, 2, 2, 270, 271, 3, 2, 2, 2, 271, 283, 3, 2, 2, 2, 272, 283, 5, 50, 26, 2, 273, 275, 5, 42, 22, 2, 274, 276, 5, 54, 28, 2, 275, 274, 3, 2, 2, 2, 275, 276, 3, 2, 2, 2, 276, 283, 3, 2, 2, 2, 277, 278, 7, 4, 2, 2, 278, 279, 5, 22, 12, 2, 279, 280, 7, 5, 2, 2, 280, 283, 3, 2, 2, 2, 281, 283, 7, 6, 2, 2, 282, 268, 3, 2, 2, 2, 282, 272, 3, 2, 2, 2, 282, 273, 3, 2, 2, 2, 282, 277, 3, 2, 2, 2, 282, 281, 3, 2, 2, 2, 283, 39, 3, 2, 2, 2, 284, 286, 5, 52, 27, 2, 285, 287, 5, 44, 23, 2, 286, 285, 3, 2, 2, 2, 286, 287, 3, 2, 2, 2, 287, 299, 3, 2, 2, 2, 288, 299, 5, 48, 25, 2, 289, 291, 5, 44, 23, 2, 290, 292, 5, 52, 27, 2, 291, 290, 3, 2, 2, 2, 291, 292, 3, 2, 2, 2, 292, 299, 3, 2, 2, 2, 293, 294, 7, 4, 2, 2, 294, 295, 5, 22, 12, 2, 295, 296, 7, 5, 2, 2, 296, 299, 3, 2, 2, 2, 297, 299, 7, 6, 2, 2, 298, 284, 3, 2, 2, 2, 298, 288, 3, 2, 2, 2, 298, 289, 3, 2, 2, 2, 298, 293, 3, 2, 2, 2, 298, 297, 3, 2, 2, 2, 299, 41, 3, 2, 2, 2, 300, 303, 5, 72, 37, 2, 301, 303, 5, 46, 24, 2, 302, 300, 3, 2, 2, 2, 302, 301, 3, 2, 2, 2, 303, 43, 3, 2, 2, 2, 304, 307, 5, 74, 38, 2, 305, 307, 5, 46, 24, 2, 306, 304, 3, 2, 2, 2, 306, 305, 3, 2, 2, 2, 307, 45, 3, 2, 2, 2, 308, 313, 7, 61, 2, 2, 309, 313, 7, 60, 2, 2, 310, 311, 7, 7, 2, 2, 311, 313, 5, 134, 68, 2, 312, 308, 3, 2, 2, 2, 312, 309, 3, 2, 2, 2, 312, 310, 3, 2, 2, 2, 313, 47, 3, 2, 2, 2, 314, 318, 7, 35, 2, 2, 315, 317, 5, 58, 30, 2, 316, 315, 3, 2, 2, 2, 317, 320, 3, 2, 2, 2, 318, 316, 3, 2, 2, 2, 318, 319, 3, 2, 2, 2, 319, 348, 3, 2, 2, 2, 320, 318, 3, 2, 2, 2, 321, 325, 5, 56, 29, 2, 322, 324, 5, 60, 31, 2, 323, 322, 3, 2, 2, 2, 324, 327, 3, 2, 2, 2, 325, 323, 3, 2, 2, 2, 325, 326, 3, 2, 2, 2, 326, 348, 3, 2, 2, 2, 327, 325, 3, 2, 2, 2, 328, 332, 5, 132, 67, 2, 329, 331, 5, 58, 30, 2, 330, 329, 3, 2, 2, 2, 331, 334, 3, 2, 2, 2, 332, 330, 3, 2, 2, 2, 332, 333, 3, 2, 2, 2, 333, 348, 3, 2, 2, 2, 334, 332, 3, 2, 2, 2, 335, 339, 5, 104, 53, 2, 336, 338, 5, 58, 30, 2, 337, 336, 3, 2, 2, 2, 338, 341, 3, 2, 2, 2, 339, 337, 3, 2, 2, 2, 339, 340, 3, 2, 2, 2, 340, 348, 3, 2, 2, 2, 341, 339, 3, 2, 2, 2, 342, 344, 5, 64, 33, 2, 343, 342, 3, 2, 2, 2, 344, 345, 3, 2, 2, 2, 345, 343, 3, 2, 2, 2, 345, 346, 3, 2, 2, 2, 346, 348, 3, 2, 2, 2, 347, 314, 3, 2, 2, 2, 347, 321, 3, 2, 2, 2, 347, 328, 3, 2, 2, 2, 347, 335, 3, 2, 2, 2, 347, 343, 3, 2, 2, 2, 348, 49, 3, 2, 2, 2, 349, 353, 5, 48, 25, 2, 350, 352, 5, 122, 62, 2, 351, 350, 3, 2, 2, 2, 352, 355, 3, 2, 2, 2, 353, 351, 3, 2, 2, 2, 353, 354, 3, 2, 2, 2, 354, 359, 3, 2, 2, 2, 355, 353, 3, 2, 2, 2, 356, 358, 5, 124, 63, 2, 357, 356, 3, 2, 2, 2, 358, 361, 3, 2, 2, 2, 359, 357, 3, 2, 2, 2, 359, 360, 3, 2, 2, 2, 360, 51, 3, 2, 2, 2, 361, 359, 3, 2, 2, 2, 362, 366, 5, 56, 29, 2, 363, 365, 5, 60, 31, 2, 364, 363, 3, 2, 2, 2, 365, 368, 3, 2, 2, 2, 366, 364, 3, 2, 2, 2, 366, 367, 3, 2, 2, 2, 367, 375, 3, 2, 2, 2, 368, 366, 3, 2, 2, 2, 369, 371, 5, 60, 31, 2, 370, 369, 3, 2, 2, 2, 371, 372, 3, 2, 2, 2, 372, 370, 3, 2, 2, 2, 372, 373, 3, 2, 2, 2, 373, 375, 3, 2, 2, 2, 374, 362, 3, 2, 2, 2, 374, 370, 3, 2, 2, 2, 375, 53, 3, 2, 2, 2, 376, 380, 5, 52, 27, 2, 377, 379, 5, 122, 62, 2, 378, 377, 3, 2, 2, 2, 379, 382, 3, 2, 2, 2, 380, 378, 3, 2, 2, 2, 380, 381, 3, 2, 2, 2, 381, 386, 3, 2, 2, 2, 382, 380, 3, 2, 2, 2, 383, 385, 5, 124, 63, 2, 384, 383, 3, 2, 2, 2, 385, 388, 3, 2, 2, 2, 386, 384, 3, 2, 2, 2, 386, 387, 3, 2, 2, 2, 387, 55, 3, 2, 2, 2, 388, 386, 3, 2, 2, 2, 389, 390, 9, 2, 2, 2, 390, 57, 3, 2, 2, 2, 391, 394, 5, 60, 31, 2, 392, 394, 5, 64, 33, 2, 393, 391, 3, 2, 2, 2, 393, 392, 3, 2, 2, 2, 394, 59, 3, 2, 2, 2, 395, 396, 5, 62, 32, 2, 396, 397, 7, 66, 2, 2, 397, 403, 3, 2, 2, 2, 398, 400, 7, 62, 2, 2, 399, 401, 7, 63, 2, 2, 400, 399, 3, 2, 2, 2, 400, 401, 3, 2, 2, 2, 401, 403, 3, 2, 2, 2, 402, 395, 3, 2, 2, 2, 402, 398, 3, 2, 2, 2, 403, 61, 3, 2, 2, 2, 404, 405, 9, 3, 2, 2, 405, 63, 3, 2, 2, 2, 406, 407, 5, 66, 34, 2, 407, 408, 5, 70, 36, 2, 408, 413, 3, 2, 2, 2, 409, 410, 5, 68, 35, 2, 410, 411, 7, 66, 2, 2, 411, 413, 3, 2, 2, 2, 412, 406, 3, 2, 2, 2, 412, 409, 3, 2, 2, 2, 413, 65, 3, 2, 2, 2, 414, 415, 9, 4, 2, 2, 415, 67, 3, 2, 2, 2, 416, 417, 9, 5, 2, 2, 417, 69, 3, 2, 2, 2, 418, 419, 9, 6, 2, 2, 419, 71, 3, 2, 2, 2, 420, 424, 5, 74, 38, 2, 421, 423, 5, 122, 62, 2, 422, 421, 3, 2, 2, 2, 423, 426, 3, 2, 2, 2, 424, 422, 3, 2, 2, 2, 424, 425, 3, 2, 2, 2, 425, 430, 3, 2, 2, 2, 426, 424, 3, 2, 2, 2, 427, 429, 5, 124, 63, 2, 428, 427, 3, 2, 2, 2, 429, 432, 3, 2, 2, 2, 430, 428, 3, 2, 2, 2, 430, 431, 3, 2, 2, 2, 431, 73, 3, 2, 2, 2, 432, 430, 3, 2, 2, 2, 433, 435, 5, 76, 39, 2, 434, 433, 3, 2, 2, 2, 435, 438, 3, 2, 2, 2, 436, 434, 3, 2, 2, 2, 436, 437, 3, 2, 2, 2, 437, 439, 3, 2, 2, 2, 438, 436, 3, 2, 2, 2, 439, 441, 7, 8, 2, 2, 440, 442, 5, 80, 41, 2, 441, 440, 3, 2, 2, 2, 441, 442, 3, 2, 2, 2, 442, 443, 3, 2, 2, 2, 443, 444, 7, 9, 2, 2, 444, 75, 3, 2, 2, 2, 445, 449, 5, 152, 77, 2, 446, 449, 5, 78, 40, 2, 447, 449, 7, 33, 2, 2, 448, 445, 3, 2, 2, 2, 448, 446, 3, 2, 2, 2, 448, 447, 3, 2, 2, 2, 449, 77, 3, 2, 2, 2, 450, 452, 7, 34, 2, 2, 451, 453, 5, 128, 65, 2, 452, 451, 3, 2, 2, 2, 453, 454, 3, 2, 2, 2, 454, 452, 3, 2, 2, 2, 454, 455, 3, 2, 2, 2, 455, 79, 3, 2, 2, 2, 456, 457, 5, 82, 42, 2, 457, 81, 3, 2, 2, 2, 458, 461, 5, 86, 44, 2, 459, 461, 5, 84, 43, 2, 460, 458, 3, 2, 2, 2, 460, 459, 3, 2, 2, 2, 461, 83, 3, 2, 2, 2, 462, 465, 5, 86, 44, 2, 463, 464, 7, 10, 2, 2, 464, 466, 5, 86, 44, 2, 465, 463, 3, 2, 2, 2, 466, 467, 3, 2, 2, 2, 467, 465, 3, 2, 2, 2, 467, 468, 3, 2, 2, 2, 468, 85, 3, 2, 2, 2, 469, 472, 5, 88, 45, 2, 470, 472, 5, 90, 46, 2, 471, 469, 3, 2, 2, 2, 471, 470, 3, 2, 2, 2, 472, 87, 3, 2, 2, 2, 473, 475, 5, 92, 47, 2, 474, 476, 7, 11, 2, 2, 475, 474, 3, 2, 2, 2, 475, 476, 3, 2, 2, 2, 476, 89, 3, 2, 2, 2, 477, 480, 5, 92, 47, 2, 478, 479, 7, 11, 2, 2, 479, 481, 5, 92, 47, 2, 480, 478, 3, 2, 2, 2, 481, 482, 3, 2, 2, 2, 482, 480, 3, 2, 2, 2, 482, 483, 3, 2, 2, 2, 483, 485, 3, 2, 2, 2, 484, 486, 7, 11, 2, 2, 485, 484, 3, 2, 2, 2, 485, 486, 3, 2, 2, 2, 486, 91, 3, 2, 2, 2, 487, 488, 7, 12, 2, 2, 488, 490, 5, 136, 69, 2, 489, 487, 3, 2, 2, 2, 489, 490, 3, 2, 2, 2, 490, 493, 3, 2, 2, 2, 491, 494, 5, 96, 49, 2, 492, 494, 5, 94, 48, 2, 493, 491, 3, 2, 2, 2, 493, 492, 3, 2, 2, 2, 494, 497, 3, 2, 2, 2, 495, 497, 5, 120, 61, 2, 496, 489, 3, 2, 2, 2, 496, 495, 3, 2, 2, 2, 497, 93, 3, 2, 2, 2, 498, 499, 7, 4, 2, 2, 499, 500, 5, 80, 41, 2, 500, 502, 7, 5, 2, 2, 501, 503, 5, 98, 50, 2, 502, 501, 3, 2, 2, 2, 502, 503, 3, 2, 2, 2, 503, 507, 3, 2, 2, 2, 504, 506, 5, 122, 62, 2, 505, 504, 3, 2, 2, 2, 506, 509, 3, 2, 2, 2, 507, 505, 3, 2, 2, 2, 507, 508, 3, 2, 2, 2, 508, 513, 3, 2, 2, 2, 509, 507, 3, 2, 2, 2, 510, 512, 5, 124, 63, 2, 511, 510, 3, 2, 2, 2, 512, 515, 3, 2, 2, 2, 513, 511, 3, 2, 2, 2, 513, 514, 3, 2, 2, 2, 514, 95, 3, 2, 2, 2, 515, 513, 3, 2, 2, 2, 516, 518, 5, 102, 52, 2, 517, 516, 3, 2, 2, 2, 517, 518, 3, 2, 2, 2, 518, 519, 3, 2, 2, 2, 519, 520, 5, 128, 65, 2, 520, 522, 5, 24, 13, 2, 521, 523, 5, 98, 50, 2, 522, 521, 3, 2, 2, 2, 522, 523, 3, 2, 2, 2, 523, 527, 3, 2, 2, 2, 524, 526, 5, 122, 62, 2, 525, 524, 3, 2, 2, 2, 526, 529, 3, 2, 2, 2, 527, 525, 3, 2, 2, 2, 527, 528, 3, 2, 2, 2, 528, 533, 3, 2, 2, 2, 529, 527, 3, 2, 2, 2, 530, 532, 5, 124, 63, 2, 531, 530, 3, 2, 2, 2, 532, 535, 3, 2, 2, 2, 533, 531, 3, 2, 2, 2, 533, 534, 3, 2, 2, 2, 534, 97, 3, 2, 2, 2, 535, 533, 3, 2, 2, 2, 536, 541, 7, 70, 2, 2, 537, 541, 7, 13, 2, 2, 538, 541, 7, 14, 2, 2, 539, 541, 5, 100, 51, 2, 540, 536, 3, 2, 2, 2, 540, 537, 3, 2, 2, 2, 540, 538, 3, 2, 2, 2, 540, 539, 3, 2, 2, 2, 541, 99, 3, 2, 2, 2, 542, 543, 7, 8, 2, 2, 543, 544, 7, 66, 2, 2, 544, 553, 7, 9, 2, 2, 545, 546, 7, 8, 2, 2, 546, 547, 7, 66, 2, 2, 547, 549, 7, 15, 2, 2, 548, 550, 9, 7, 2, 2, 549, 548, 3, 2, 2, 2, 549, 550, 3, 2, 2, 2, 550, 551, 3, 2, 2, 2, 551, 553, 7, 9, 2, 2, 552, 542, 3, 2, 2, 2, 552, 545, 3, 2, 2, 2, 553, 101, 3, 2, 2, 2, 554, 555, 7, 16, 2, 2, 555, 103, 3, 2, 2, 2, 556, 560, 7, 17, 2, 2, 557, 559, 5, 106, 54, 2, 558, 557, 3, 2, 2, 2, 559, 562, 3, 2, 2, 2, 560, 558, 3, 2, 2, 2, 560, 561, 3, 2, 2, 2, 561, 563, 3, 2, 2, 2, 562, 560, 3, 2, 2, 2, 563, 564, 7, 18, 2, 2, 564, 105, 3, 2, 2, 2, 565, 587, 5, 108, 55, 2, 566, 587, 5, 112, 57, 2, 567, 587, 5, 116, 59, 2, 568, 584, 7, 6, 2, 2, 569, 571, 5, 110, 56, 2, 570, 569, 3, 2, 2, 2, 571, 572, 3, 2, 2, 2, 572, 570, 3, 2, 2, 2, 572, 573, 3, 2, 2, 2, 573, 585, 3, 2, 2, 2, 574, 576, 5, 114, 58, 2, 575, 574, 3, 2, 2, 2, 576, 577, 3, 2, 2, 2, 577, 575, 3, 2, 2, 2, 577, 578, 3, 2, 2, 2, 578, 585, 3, 2, 2, 2, 579, 581, 5, 118, 60, 2, 580, 579, 3, 2, 2, 2, 581, 582, 3, 2, 2, 2, 582, 580, 3, 2, 2, 2, 582, 583, 3, 2, 2, 2, 583, 585, 3, 2, 2, 2, 584, 570, 3, 2, 2, 2, 584, 575, 3, 2, 2, 2, 584, 580, 3, 2, 2, 2, 585, 587, 3, 2, 2, 2, 586, 565, 3, 2, 2, 2, 586, 566, 3, 2, 2, 2, 586, 567, 3, 2, 2, 2, 586, 568, 3, 2, 2, 2, 587, 107, 3, 2, 2, 2, 588, 596, 5, 146, 74, 2, 589, 593, 7, 69, 2, 2, 590, 592, 5, 110, 56, 2, 591, 590, 3, 2, 2, 2, 592, 595, 3, 2, 2, 2, 593, 591, 3, 2, 2, 2, 593, 594, 3, 2, 2, 2, 594, 597, 3, 2, 2, 2, 595, 593, 3, 2, 2, 2, 596, 589, 3, 2, 2, 2, 596, 597, 3, 2, 2, 2, 597, 109, 3, 2, 2, 2, 598, 599, 7, 19, 2, 2, 599, 601, 5, 146, 74, 2, 600, 602, 7, 69, 2, 2, 601, 600, 3, 2, 2, 2, 601, 602, 3, 2, 2, 2, 602, 111, 3, 2, 2, 2, 603, 611, 5, 126, 64, 2, 604, 608, 7, 69, 2, 2, 605, 607, 5, 114, 58, 2, 606, 605, 3, 2, 2, 2, 607, 610, 3, 2, 2, 2, 608, 606, 3, 2, 2, 2, 608, 609, 3, 2, 2, 2, 609, 612, 3, 2, 2, 2, 610, 608, 3, 2, 2, 2, 611, 604, 3, 2, 2, 2, 611, 612, 3, 2, 2, 2, 612, 113, 3, 2, 2, 2, 613, 614, 7, 19, 2, 2, 614, 616, 5, 126, 64, 2, 615, 617, 7, 69, 2, 2, 616, 615, 3, 2, 2, 2, 616, 617, 3, 2, 2, 2, 617, 115, 3, 2, 2, 2, 618, 626, 7, 65, 2, 2, 619, 623, 7, 69, 2, 2, 620, 622, 5, 118, 60, 2, 621, 620, 3, 2, 2, 2, 622, 625, 3, 2, 2, 2, 623, 621, 3, 2, 2, 2, 623, 624, 3, 2, 2, 2, 624, 627, 3, 2, 2, 2, 625, 623, 3, 2, 2, 2, 626, 619, 3, 2, 2, 2, 626, 627, 3, 2, 2, 2, 627, 637, 3, 2, 2, 2, 628, 629, 7, 7, 2, 2, 629, 633, 7, 69, 2, 2, 630, 632, 5, 118, 60, 2, 631, 630, 3, 2, 2, 2, 632, 635, 3, 2, 2, 2, 633, 631, 3, 2, 2, 2, 633, 634, 3, 2, 2, 2, 634, 637, 3, 2, 2, 2, 635, 633, 3, 2, 2, 2, 636, 618, 3, 2, 2, 2, 636, 628, 3, 2, 2, 2, 637, 117, 3, 2, 2, 2, 638, 639, 7, 19, 2, 2, 639, 641, 7, 65, 2, 2, 640, 642, 7, 69, 2, 2, 641, 640, 3, 2, 2, 2, 641, 642, 3, 2, 2, 2, 642, 119, 3, 2, 2, 2, 643, 644, 7, 20, 2, 2, 644, 645, 5, 136, 69, 2, 645, 121, 3, 2, 2, 2, 646, 647, 7, 21, 2, 2, 647, 650, 5, 128, 65, 2, 648, 651, 5, 146, 74, 2, 649, 651, 5, 126, 64, 2, 650, 648, 3, 2, 2, 2, 650, 649, 3, 2, 2, 2, 651, 123, 3, 2, 2, 2, 652, 653, 7, 22, 2, 2, 653, 654, 5, 146, 74, 2, 654, 655, 9, 8, 2, 2, 655, 125, 3, 2, 2, 2, 656, 660, 5, 140, 71, 2, 657, 660, 5, 138, 70, 2, 658, 660, 5, 142, 72, 2, 659, 656, 3, 2, 2, 2, 659, 657, 3, 2, 2, 2, 659, 658, 3, 2, 2, 2, 660, 127, 3, 2, 2, 2, 661, 664, 5, 146, 74, 2, 662, 664, 5, 130, 66, 2, 663, 661, 3, 2, 2, 2, 663, 662, 3, 2, 2, 2, 664, 129, 3, 2, 2, 2, 665, 666, 7, 56, 2, 2, 666, 131, 3, 2, 2, 2, 667, 668, 5, 146, 74, 2, 668, 133, 3, 2, 2, 2, 669, 672, 5, 146, 74, 2, 670, 672, 5, 150, 76, 2, 671, 669, 3, 2, 2, 2, 671, 670, 3, 2, 2, 2, 672, 135, 3, 2, 2, 2, 673, 676, 5, 146, 74, 2, 674, 676, 5, 150, 76, 2, 675, 673, 3, 2, 2, 2, 675, 674, 3, 2, 2, 2, 676, 137, 3, 2, 2, 2, 677, 678, 9, 6, 2, 2, 678, 139, 3, 2, 2, 2, 679, 683, 5, 144, 73, 2, 680, 684, 7, 65, 2, 2, 681, 682, 7, 23, 2, 2, 682, 684, 5, 132, 67, 2, 683, 680, 3, 2, 2, 2, 683, 681, 3, 2, 2, 2, 683, 684, 3, 2, 2, 2, 684, 141, 3, 2, 2, 2, 685, 686, 9, 9, 2, 2, 686, 143, 3, 2, 2, 2, 687, 688, 9, 10, 2, 2, 688, 145, 3, 2, 2, 2, 689, 692, 7, 57, 2, 2, 690, 692, 5, 148, 75, 2, 691, 689, 3, 2, 2, 2, 691, 690, 3, 2, 2, 2, 692, 147, 3, 2, 2, 2, 693, 694, 9, 11, 2, 2, 694, 149, 3, 2, 2, 2, 695, 696, 7, 64, 2, 2, 696, 151, 3, 2, 2, 2, 697, 698, 7, 26, 2, 2, 698, 702, 5, 46, 24, 2, 699, 700, 7, 20, 2, 2, 700, 702, 5, 46, 24, 2, 701, 697, 3, 2, 2, 2, 701, 699, 3, 2, 2, 2, 702, 153, 3, 2, 2, 2, 703, 704, 7, 28, 2, 2, 704, 708, 5, 46, 24, 2, 705, 706, 7, 19, 2, 2, 706, 708, 5, 46, 24, 2, 707, 703, 3, 2, 2, 2, 707, 705, 3, 2, 2, 2, 708, 155, 3, 2, 2, 2, 96, 159, 164, 169, 172, 179, 193, 202, 206, 209, 215, 220, 231, 239, 247, 255, 259, 264, 270, 275, 282, 286, 291, 298, 302, 306, 312, 318, 325, 332, 339, 345, 347, 353, 359, 366, 372, 374, 380, 386, 393, 400, 402, 412, 424, 430, 436, 441, 448, 454, 460, 467, 471, 475, 482, 485, 489, 493, 496, 502, 507, 513, 517, 522, 527, 533, 540, 549, 552, 560, 572, 577, 582, 584, 586, 593, 596, 601, 608, 611, 616, 623, 626, 633, 636, 641, 650, 659, 663, 671, 675, 683, 691, 701, 707] \ No newline at end of file diff --git a/pyshexc/parser/ShExDocLexer.py b/pyshexc/parser/ShExDocLexer.py index 1edef1d..8d47256 100644 --- a/pyshexc/parser/ShExDocLexer.py +++ b/pyshexc/parser/ShExDocLexer.py @@ -1,8 +1,11 @@ -# Generated from ShExDoc.g4 by ANTLR 4.9 +# Generated from ShExDoc.g4 by ANTLR 4.9.3 from antlr4 import * from io import StringIO -from typing import TextIO import sys +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO @@ -572,7 +575,7 @@ class ShExDocLexer(Lexer): def __init__(self, input=None, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.9") + self.checkVersion("4.9.3") self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) self._actions = None self._predicates = None diff --git a/pyshexc/parser/ShExDocParser.py b/pyshexc/parser/ShExDocParser.py index 9f45cdc..1bc8ba9 100644 --- a/pyshexc/parser/ShExDocParser.py +++ b/pyshexc/parser/ShExDocParser.py @@ -1,4 +1,4 @@ -# Generated from ShExDoc.g4 by ANTLR 4.9 +# Generated from ShExDoc.g4 by ANTLR 4.9.3 # encoding: utf-8 from antlr4 import * from io import StringIO @@ -343,11 +343,11 @@ def serializedATN(): buf.write("\u02b2\u02b4\5\u0094K\2\u02b3\u02b1\3\2\2\2\u02b3\u02b2") buf.write("\3\2\2\2\u02b4\u0093\3\2\2\2\u02b5\u02b6\t\13\2\2\u02b6") buf.write("\u0095\3\2\2\2\u02b7\u02b8\7@\2\2\u02b8\u0097\3\2\2\2") - buf.write("\u02b9\u02ba\7\32\2\2\u02ba\u02be\5\u0086D\2\u02bb\u02bc") - buf.write("\7\24\2\2\u02bc\u02be\5\u0086D\2\u02bd\u02b9\3\2\2\2\u02bd") + buf.write("\u02b9\u02ba\7\32\2\2\u02ba\u02be\5.\30\2\u02bb\u02bc") + buf.write("\7\24\2\2\u02bc\u02be\5.\30\2\u02bd\u02b9\3\2\2\2\u02bd") buf.write("\u02bb\3\2\2\2\u02be\u0099\3\2\2\2\u02bf\u02c0\7\34\2") - buf.write("\2\u02c0\u02c4\5\u0086D\2\u02c1\u02c2\7\23\2\2\u02c2\u02c4") - buf.write("\5\u0086D\2\u02c3\u02bf\3\2\2\2\u02c3\u02c1\3\2\2\2\u02c4") + buf.write("\2\u02c0\u02c4\5.\30\2\u02c1\u02c2\7\23\2\2\u02c2\u02c4") + buf.write("\5.\30\2\u02c3\u02bf\3\2\2\2\u02c3\u02c1\3\2\2\2\u02c4") buf.write("\u009b\3\2\2\2`\u009f\u00a4\u00a9\u00ac\u00b3\u00c1\u00ca") buf.write("\u00ce\u00d1\u00d7\u00dc\u00e7\u00ef\u00f7\u00ff\u0103") buf.write("\u0108\u010e\u0113\u011a\u011e\u0123\u012a\u012e\u0132") @@ -582,7 +582,7 @@ class ShExDocParser ( Parser ): def __init__(self, input:TokenStream, output:TextIO = sys.stdout): super().__init__(input, output) - self.checkVersion("4.9") + self.checkVersion("4.9.3") self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) self._predicates = None @@ -590,6 +590,7 @@ def __init__(self, input:TokenStream, output:TextIO = sys.stdout): class ShExDocContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -691,6 +692,7 @@ def shExDoc(self): class DirectiveContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -756,6 +758,7 @@ def directive(self): class BaseDeclContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -799,6 +802,7 @@ def baseDecl(self): class PrefixDeclContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -847,6 +851,7 @@ def prefixDecl(self): class ImportDeclContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -890,6 +895,7 @@ def importDecl(self): class NotStartActionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -946,6 +952,7 @@ def notStartAction(self): class StartContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -992,6 +999,7 @@ def start(self): class StartActionsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1045,6 +1053,7 @@ def startActions(self): class StatementContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1101,6 +1110,7 @@ def statement(self): class ShapeExprDeclContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1190,6 +1200,7 @@ def shapeExprDecl(self): class ShapeExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1229,6 +1240,7 @@ def shapeExpression(self): class InlineShapeExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1268,6 +1280,7 @@ def inlineShapeExpression(self): class ShapeOrContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1329,6 +1342,7 @@ def shapeOr(self): class InlineShapeOrContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1390,6 +1404,7 @@ def inlineShapeOr(self): class ShapeAndContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1451,6 +1466,7 @@ def shapeAnd(self): class InlineShapeAndContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1512,6 +1528,7 @@ def inlineShapeAnd(self): class ShapeNotContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1563,6 +1580,7 @@ def shapeNot(self): class InlineShapeNotContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1614,6 +1632,7 @@ def inlineShapeNot(self): class ShapeAtomContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1793,6 +1812,7 @@ def shapeAtom(self): class InlineShapeAtomContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -1972,6 +1992,7 @@ def inlineShapeAtom(self): class ShapeOrRefContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2028,6 +2049,7 @@ def shapeOrRef(self): class InlineShapeOrRefContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2084,6 +2106,7 @@ def inlineShapeOrRef(self): class ShapeRefContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2149,6 +2172,7 @@ def shapeRef(self): class InlineLitNodeConstraintContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2378,6 +2402,7 @@ def inlineLitNodeConstraint(self): class LitNodeConstraintContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2452,6 +2477,7 @@ def litNodeConstraint(self): class InlineNonLitNodeConstraintContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2565,6 +2591,7 @@ def inlineNonLitNodeConstraint(self): class NonLitNodeConstraintContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2639,6 +2666,7 @@ def nonLitNodeConstraint(self): class NonLiteralKindContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2689,6 +2717,7 @@ def nonLiteralKind(self): class XsFacetContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2745,6 +2774,7 @@ def xsFacet(self): class StringFacetContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2817,6 +2847,7 @@ def stringFacet(self): class StringLengthContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2867,6 +2898,7 @@ def stringLength(self): class NumericFacetContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2934,6 +2966,7 @@ def numericFacet(self): class NumericRangeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -2987,6 +3020,7 @@ def numericRange(self): class NumericLengthContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3034,6 +3068,7 @@ def numericLength(self): class RawNumericContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3084,6 +3119,7 @@ def rawNumeric(self): class ShapeDefinitionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3158,6 +3194,7 @@ def shapeDefinition(self): class InlineShapeDefinitionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3225,6 +3262,7 @@ def inlineShapeDefinition(self): class QualifierContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3289,6 +3327,7 @@ def qualifier(self): class ExtraPropertySetContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3347,6 +3386,7 @@ def extraPropertySet(self): class TripleExpressionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3386,6 +3426,7 @@ def tripleExpression(self): class OneOfTripleExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3442,6 +3483,7 @@ def oneOfTripleExpr(self): class MultiElementOneOfContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3499,6 +3541,7 @@ def multiElementOneOf(self): class GroupTripleExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3555,6 +3598,7 @@ def groupTripleExpr(self): class SingleElementGroupContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3603,6 +3647,7 @@ def singleElementGroup(self): class MultiElementGroupContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3670,6 +3715,7 @@ def multiElementGroup(self): class UnaryTripleExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3757,6 +3803,7 @@ def unaryTripleExpr(self): class BracketedTripleExprContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3847,6 +3894,7 @@ def bracketedTripleExpr(self): class TripleConstraintContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -3951,6 +3999,7 @@ def tripleConstraint(self): class CardinalityContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4073,6 +4122,7 @@ def cardinality(self): class RepeatRangeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4183,6 +4233,7 @@ def repeatRange(self): class SenseFlagsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4219,6 +4270,7 @@ def senseFlags(self): class ValueSetContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4274,6 +4326,7 @@ def valueSet(self): class ValueSetValueContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4415,6 +4468,7 @@ def valueSetValue(self): class IriRangeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4483,6 +4537,7 @@ def iriRange(self): class IriExclusionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4536,6 +4591,7 @@ def iriExclusion(self): class LiteralRangeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4604,6 +4660,7 @@ def literalRange(self): class LiteralExclusionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4657,6 +4714,7 @@ def literalExclusion(self): class LanguageRangeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4783,6 +4841,7 @@ def languageRange(self): class LanguageExclusionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4835,6 +4894,7 @@ def languageExclusion(self): class IncludeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4876,6 +4936,7 @@ def include(self): class AnnotationContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4939,6 +5000,7 @@ def annotation(self): class SemanticActionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -4991,6 +5053,7 @@ def semanticAction(self): class LiteralContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5056,6 +5119,7 @@ def literal(self): class PredicateContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5112,6 +5176,7 @@ def predicate(self): class RdfTypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5150,6 +5215,7 @@ def rdfType(self): class DatatypeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5189,6 +5255,7 @@ def datatype(self): class ShapeExprLabelContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5245,6 +5312,7 @@ def shapeExprLabel(self): class TripleExprLabelContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5301,6 +5369,7 @@ def tripleExprLabel(self): class NumericLiteralContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5351,6 +5420,7 @@ def numericLiteral(self): class RdfLiteralContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5411,6 +5481,7 @@ def rdfLiteral(self): class BooleanLiteralContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5458,6 +5529,7 @@ def booleanLiteral(self): class StringContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5511,6 +5583,7 @@ def string(self): class IriContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5566,6 +5639,7 @@ def iri(self): class PrefixedNameContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5613,6 +5687,7 @@ def prefixedName(self): class BlankNodeContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5651,6 +5726,7 @@ def blankNode(self): class ExtensionContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5659,8 +5735,8 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def KW_EXTENDS(self): return self.getToken(ShExDocParser.KW_EXTENDS, 0) - def shapeExprLabel(self): - return self.getTypedRuleContext(ShExDocParser.ShapeExprLabelContext,0) + def shapeRef(self): + return self.getTypedRuleContext(ShExDocParser.ShapeRefContext,0) def getRuleIndex(self): @@ -5688,14 +5764,14 @@ def extension(self): self.state = 695 self.match(ShExDocParser.KW_EXTENDS) self.state = 696 - self.shapeExprLabel() + self.shapeRef() pass elif token in [ShExDocParser.T__17]: self.enterOuterAlt(localctx, 2) self.state = 697 self.match(ShExDocParser.T__17) self.state = 698 - self.shapeExprLabel() + self.shapeRef() pass else: raise NoViableAltException(self) @@ -5710,6 +5786,7 @@ def extension(self): class RestrictionsContext(ParserRuleContext): + __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) @@ -5718,8 +5795,8 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def KW_RESTRICTS(self): return self.getToken(ShExDocParser.KW_RESTRICTS, 0) - def shapeExprLabel(self): - return self.getTypedRuleContext(ShExDocParser.ShapeExprLabelContext,0) + def shapeRef(self): + return self.getTypedRuleContext(ShExDocParser.ShapeRefContext,0) def getRuleIndex(self): @@ -5747,14 +5824,14 @@ def restrictions(self): self.state = 701 self.match(ShExDocParser.KW_RESTRICTS) self.state = 702 - self.shapeExprLabel() + self.shapeRef() pass elif token in [ShExDocParser.T__16]: self.enterOuterAlt(localctx, 2) self.state = 703 self.match(ShExDocParser.T__16) self.state = 704 - self.shapeExprLabel() + self.shapeRef() pass else: raise NoViableAltException(self) diff --git a/pyshexc/parser/ShExDocVisitor.py b/pyshexc/parser/ShExDocVisitor.py index fab77ae..10660a3 100644 --- a/pyshexc/parser/ShExDocVisitor.py +++ b/pyshexc/parser/ShExDocVisitor.py @@ -1,4 +1,4 @@ -# Generated from ShExDoc.g4 by ANTLR 4.9 +# Generated from ShExDoc.g4 by ANTLR 4.9.3 from antlr4 import * if __name__ is not None and "." in __name__: from .ShExDocParser import ShExDocParser diff --git a/pyshexc/parser_impl/generate_shexj.py b/pyshexc/parser_impl/generate_shexj.py index 9e76e4a..3331767 100644 --- a/pyshexc/parser_impl/generate_shexj.py +++ b/pyshexc/parser_impl/generate_shexj.py @@ -50,7 +50,8 @@ def load_shex_file(shexfilename: str) -> str: encoding = 'utf-8-sig' else: result = chardet.detect(data) - encoding = result['encoding'] if float(result['confidence']) > 0.9 else 'UTF-8' + # chardet can return {'encoding': None, ...}; never pass None to decode() + encoding = result['encoding'] if result['encoding'] is not None and float(result['confidence'] or 0) > 0.9 else 'UTF-8' return data.decode(encoding) diff --git a/pyshexc/parser_impl/parser_context.py b/pyshexc/parser_impl/parser_context.py index 2742eda..c817866 100644 --- a/pyshexc/parser_impl/parser_context.py +++ b/pyshexc/parser_impl/parser_context.py @@ -1,4 +1,5 @@ import re +from urllib.parse import urljoin from ShExJSG import ShExJ from pyjsg.jsglib import * from rdflib import RDF, XSD @@ -37,7 +38,9 @@ def _lookup_prefix(self, prefix: PREFIXstr) -> str: def iriref_to_str(self, ref: ShExDocParser.IRIREF) -> str: """ IRIREF: '<' (~[\u0000-\u0020=<>\"{}|^`\\] | UCHAR)* '>' """ rval = self._fix_unicode_escapes(ref.getText()[1:-1]) - return rval if ':' in rval or not self.base else self.base.val + rval + # relative IRIs resolve per RFC 3986 against the document base, not by + # concatenation (e.g. against .../validation/doc.shex is .../validation/S1) + return rval if ':' in rval or not self.base else urljoin(self.base.val, rval) def iriref_to_shexj_iriref(self, ref: ShExDocParser.IRIREF) -> ShExJ.IRIREF: """ IRIREF: '<' (~[\u0000-\u0020=<>\"{}|^`\\] | UCHAR)* '>' diff --git a/pyshexc/parser_impl/shex_doc_parser.py b/pyshexc/parser_impl/shex_doc_parser.py index 0554a33..c1ba5b9 100644 --- a/pyshexc/parser_impl/shex_doc_parser.py +++ b/pyshexc/parser_impl/shex_doc_parser.py @@ -59,7 +59,8 @@ def visitShapeExprDecl(self, ctx: ShExDocParser.ShapeExprDeclContext): if ctx.KW_ABSTRACT(): shape.abstract = True if ctx.restrictions(): - shape.restricts = [self.context.shapeexprlabel_to_IRI(r.shapeExprLabel()) for r in ctx.restrictions()] + shape.restricts = [self.context.shapeRef_to_iriref(r.shapeRef()) + for r in ctx.restrictions()] if label: shape.id = label diff --git a/pyshexc/parser_impl/shex_shape_definition_parser.py b/pyshexc/parser_impl/shex_shape_definition_parser.py index 35a1a21..3b64855 100644 --- a/pyshexc/parser_impl/shex_shape_definition_parser.py +++ b/pyshexc/parser_impl/shex_shape_definition_parser.py @@ -36,10 +36,10 @@ def visitInlineShapeDefinition(self, ctx: ShExDocParser.InlineShapeDefinitionCon def visitQualifier(self, ctx: ShExDocParser.QualifierContext): """ qualifier: extension | extraPropertySet | KW_CLOSED - extensions: KW_EXTENDS shapeExprLabel | '&' shapeExprLabel + extension: KW_EXTENDS shapeRef | '&' shapeRef """ if ctx.extension(): - ext = self.context.shapeexprlabel_to_IRI(ctx.extension().shapeExprLabel()) + ext = self.context.shapeRef_to_iriref(ctx.extension().shapeRef()) if self.shape.extends is None: self.shape.extends = [ext] else: diff --git a/tests/test_restricts_extends.py b/tests/test_restricts_extends.py index 3810b3d..0d205df 100644 --- a/tests/test_restricts_extends.py +++ b/tests/test_restricts_extends.py @@ -5,26 +5,26 @@ shexc = """abstract /sA..........$/ and {

[0 1 2 3 4 5 6 7 8 9]+} -abstract - /s.B.........$/ +abstract -@ /s.B.........$/ and {

[0 1 3 4 5 6 7 8 9]+} /s..C........$/ and {

[0 1 2 4 5 6 7 8 9]+} -abstract - - /s...D.......$/ +abstract -@ -@ /s...D.......$/ and {

[0 1 2 3 5 6 7 8 9]+} abstract /s....E......$/ - and & + and &@ {

[ 2 ] } /s.....F.....$/ and {

[ 3 ] } abstract /s......G....$/ - and & & + and &@ &@ {

[ 4 ] } -abstract - /s.......H...$/ +abstract -@ /s.......H...$/ and {

[0 1 2 3 4 5 8 9]*} /s........I..$/ and { [ 5 ] } - - /s.........J.$/ - and & + -@ /s.........J.$/ + and &@ { [ 6 ] } """ diff --git a/tests/test_shexc_basics.py b/tests/test_shexc_basics.py index 15fa898..b344159 100644 --- a/tests/test_shexc_basics.py +++ b/tests/test_shexc_basics.py @@ -5,7 +5,7 @@ shexc = """abstract /sA.........$/ and {

[0 1 2 3 4 5 6 7 8 9]+} - - /s.B........$/ + -@ /s.B........$/ and {

[0 1 3 4 5 6 7 8 9]+} """ diff --git a/uv.lock b/uv.lock index 96d8772..69ba183 100644 --- a/uv.lock +++ b/uv.lock @@ -288,51 +288,13 @@ name = "exceptiongroup" version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, + { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" }, ] -[[package]] -name = "grammar-python-antlr" -source = { editable = "." } -dependencies = [ - { name = "antlr4-python3-runtime" }, - { name = "chardet" }, - { name = "jsonasobj" }, - { name = "pyjsg" }, - { name = "rdflib-shim" }, - { name = "shexjsg" }, -] - -[package.dev-dependencies] -dev = [ - { name = "coverage" }, - { name = "pytest" }, - { name = "requests" }, - { name = "yadict-compare" }, -] - -[package.metadata] -requires-dist = [ - { name = "antlr4-python3-runtime", specifier = "~=4.9.3" }, - { name = "chardet", specifier = ">=7.4.1" }, - { name = "jsonasobj", specifier = ">=1.2.1" }, - { name = "pyjsg", specifier = ">=0.11.10" }, - { name = "rdflib-shim", specifier = ">=1.0.3" }, - { name = "shexjsg", specifier = ">=0.8.1" }, -] - -[package.metadata.requires-dev] -dev = [ - { name = "coverage", specifier = ">=7.13.5" }, - { name = "pytest", specifier = ">=9.0.3" }, - { name = "requests", specifier = ">=2.33.1" }, - { name = "yadict-compare", specifier = ">=1.2.0" }, -] - [[package]] name = "idna" version = "3.11" @@ -419,6 +381,44 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d", size = 122781, upload-time = "2026-01-21T03:57:55.912Z" }, ] +[[package]] +name = "pyshexc" +source = { editable = "." } +dependencies = [ + { name = "antlr4-python3-runtime" }, + { name = "chardet" }, + { name = "jsonasobj" }, + { name = "pyjsg" }, + { name = "rdflib-shim" }, + { name = "shexjsg" }, +] + +[package.dev-dependencies] +dev = [ + { name = "coverage" }, + { name = "pytest" }, + { name = "requests" }, + { name = "yadict-compare" }, +] + +[package.metadata] +requires-dist = [ + { name = "antlr4-python3-runtime", specifier = "~=4.9.3" }, + { name = "chardet", specifier = ">=7.4.1" }, + { name = "jsonasobj", specifier = ">=1.2.1" }, + { name = "pyjsg", specifier = ">=0.11.10" }, + { name = "rdflib-shim", specifier = ">=1.0.3" }, + { name = "shexjsg", specifier = ">=0.8.1" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "coverage", specifier = ">=7.13.5" }, + { name = "pytest", specifier = ">=9.0.3" }, + { name = "requests", specifier = ">=2.33.1" }, + { name = "yadict-compare", specifier = ">=1.2.0" }, +] + [[package]] name = "pytest" version = "9.0.3"